图书目录

第一篇  软件工程基础

第1章  软件发展史及软件工程 3

1.1  软件的发展历程 3

1.2  软件的定义和特点 5

1.3  软件危机 6

1.4  软件工程 7

1.5  软件开发方法 9

1.6  软件工程知识体系 12

1.7  小结 13

1.8  习题 13

第2章  软件生命周期 14

2.1  项目构想和立项 14

2.2  可行性分析 15

2.3  项目开发计划 17

2.3.1  制订项目开发计划 17

2.3.2  项目开发计划评审 19

2.4  需求分析 19

2.4.1  需求的定义和组成 20

2.4.2  需求管理 21

2.5  软件设计 24

2.5.1  软件设计的目标和任务 25

2.5.2  软件设计阶段 26

2.5.3  模块化与模块独立 26

2.5.4  经典软件体系结构 27

2.5.5  设计复审 34

2.6  软件实现 35

2.6.1  程序设计语言的选择 35

2.6.2  软件编码规范 37

2.6.3  软件效率 38

2.7  软件测试 41

2.7.1  软件测试的发展历程 42

2.7.2  软件测试技术 45

2.7.3  软件测试策略 50

2.7.4  软件测试步骤 55

2.7.5  软件测试的原则 56

2.7.6  软件调试 58

2.7.7  软件可靠性 61

2.8  软件维护 61

2.8.1  软件维护分类 62

2.8.2  软件维护实施 62

2.9  小结 67

2.10  习题 67

第二篇  结构化方法

第3章  结构化分析 71

3.1  结构化需求描述方法 71

3.2  结构化需求建模 73

3.2.1  数据流图 73

3.2.2  处理/加工逻辑说明 77

3.2.3  状态转换图 80

3.2.4  数据模型 82

3.3  小结 87

3.4  习题 88

第4章  结构化设计 89

4.1  结构化设计与结构化分析的关系 89

4.2  结构化模块及模块独立性 90

4.2.1  结构化的模块独立性 90

4.2.2  结构化设计启发式规则 97

4.3  系统结构设计 98

4.3.1  系统结构图 99

4.3.2  HIPO图 101

4.3.3  面向数据流的设计方法 101

4.4  数据设计 109

4.4.1  数据元素设计 110

4.4.2  数据结构设计 110

4.4.3  文件格式设计 111

4.4.4  数据库设计 113

4.5  过程设计 116

4.5.1  程序流程图 116

4.5.2  PDL 118

4.5.3  模块过程设计 121

4.6  设计优化 121

4.7  小结 122

4.8  习题 122

第5章  结构化实现 123

5.1  结构化实现与结构化设计的关系 123

5.2  结构化编码 124

5.2.1  结构化程序的源代码组成 124

5.2.2  结构化程序的编译过程 126

5.2.3  结构化程序多文件组织 127

5.2.4  结构化模块集成 129

5.3  结构化测试 132

5.3.1  结构化测试阶段 132

5.3.2  结构化白盒测试覆盖标准 134

5.3.3  结构化白盒测试用例设计 138

5.3.4  结构化黑盒测试用例设计 143

5.3.5  结构化测试实施 146

5.4  小结 147

5.5  习题 147

第三篇  面向对象方法

第6章  统一建模语言 151

6.1  统一建模语言的发展史 151

6.2  UML中的图 152

6.2.1  用例图 152

6.2.2  活动图 154

6.2.3  类图 155

6.2.4  对象图 158

6.2.5  顺序图 158

6.2.6  通信图 162

6.2.7  状态图 164

6.2.8  构件图 166

6.2.9  部署图 167

6.2.10  包图 169

6.3  小结 171

6.4  习题 171

第7章  面向对象分析 172

7.1  业务用例分析 172

7.2  业务用例描述 173

7.3  活动建模 174

7.4  分析模型 176

7.4.1  对象建模 176

7.4.2  交互建模 180

7.4.3  状态建模 182

7.4.4  划分内容主题 183

7.4.5  完善分析模型 184

7.5  面向对象分析评审 185

7.6  小结 186

7.7  习题 186

第8章  面向对象设计 187

8.1  分析模型到设计模型的转换 187

8.2  面向对象设计原则 188

8.2.1  面向对象的模块独立性 188

8.2.2  面向对象设计启发式规则 191

8.2.3  设计模式 198

8.3  面向对象架构设计 201

8.3.1  软件架构设计 202

8.3.2  类方法设计 207

8.3.3  类属性设计 211

8.4  软件构件设计 214

8.4.1  构件设计原则 214

8.4.2  软件构件的设计方法 215

8.5  部署设计 218

8.6  小结 222

8.7  习题 222

第9章  面向对象实现 223

9.1  面向对象编码 223

9.1.1  项目文件组织 223

9.1.2  面向对象业务实现 226

9.2  面向对象测试 228

9.2.1  面向对象测试阶段 228

9.2.2  面向对象测试策略 230

9.2.3  面向对象测试用例设计 231

9.3  小结 239

9.4  习题 240

第四篇  软件过程及管理

第10章  软件过程 243

10.1  瀑布模型 244

10.2  演化模型 246

10.3  快速原型法 247

10.4  增量模型 249

10.5  螺旋模型 251

10.6  喷泉模型 253

10.7  构件组装模型 254

10.8  统一过程 255

10.9  能力成熟度模型 257

10.10  净室软件工程 258

10.11  敏捷开发过程 260

 10.11.1  极限编程 261

 10.11.2  Scrum 262

10.12  小结 264

10.13  习题 264

第11章  软件项目管理 265

11.1  项目管理概述 265

11.2  项目管理框架 266

11.3  项目阶段管理 268

 11.3.1  项目准备与启动 268

 11.3.2  项目计划 270

 11.3.3  项目的执行与控制 277

 11.3.4  项目的收尾与总结 295

11.4  小结 297

11.5  习题 297

第五篇  现代软件开发

第12章  腾讯敏捷软件开发 301

12.1  腾讯敏捷研发理念 301

12.2  腾讯敏捷解决方案 303

12.3  敏捷的核心应用 304

 12.3.1  看板 304

 12.3.2  需求 305

 12.3.3  迭代 306

 12.3.4  测试 307

 12.3.5  缺陷 308

 12.3.6  DevOps 310

 12.3.7  报表 311

 12.3.8  文档 312

12.4  小结 312

12.5  习题 313

第13章  基于领域驱动的云原生软件开发 314

13.1  云原生概述 314

13.2  云原生架构及其设计原则 317

13.3  领域驱动设计 322

13.4  基于领域的敏捷需求分析 323

 13.4.1  领域分析及子领域识别 323

 13.4.2  业务需求分析 324

13.5  云原生软件架构设计 324

 13.5.1  界限上下文划分 325

 13.5.2  实体及值对象分析 326

 13.5.3  聚合分析与设计 327

 13.5.4  事件识别及服务分析 330

 13.5.5  存储库设计 331

 13.5.6  数据一致性 332

 13.5.7  软件前端设计 335

13.6  云原生软件系统实现及部署 336

 13.6.1  云原生软件实现 336

 13.6.2  容量估算及组件选型 341

 13.6.3  系统测试 341

 13.6.4  软件发布及部署 342

13.7  小结 343

13.8  习题 344

第14章  人机交互设计 345

14.1  人机交互 345

14.2  交互模型和框架 347

14.3  人机交互设计原则 350

14.4  人机交互界面的设计过程 354

14.5  小结 356

14.6  习题 356

参考文献 357

  

软件工程(微课视频版)

目  录