第一部分 软件工程与过程 2
第1章 概述 2
1.1软件工程的基本概念 2
1.1.1软件的角色和特性 2
1.1.2软件演化 3
1.1.3软件神化和危机 4
1.1.4软件危机的解决途径 4
1.2工程化思想 5
1.2.1工程化所涉及的范围 5
1.2.2工程化管理思想 5
1.3软件工程两大范型 5
1.4软件工程思想与基本原理 6
1.4.1软件工程基本原理 7
1.4.2软件工程思想 7
1.5软件工程活动 9
1.5.1软件开发活动 9
1.5.2软件项目管理活动 9
1.5.3软件过程改进活动 10
1.6小结 10
习题 10
第2章 软件过程 11
2.1软件过程概述 11
2.1.1过程方法与工具 11
2.1.2软件过程框架 12
2.1.3软件过程模型 12
2.2软件生命周期 12
2.3能力成熟度模型集成 13
2.4敏捷过程 16
2.4.1什么是敏捷过程 17
2.4.2极限编程 18
2.4.3自适应软件开发 20
2.4.4动态系统开发 21
2.4.5特征驱动开发 21
2.5软件工程实践 22
2.5.1概念 22
2.5.2沟通实践 23
2.5.3计划实践 23
2.6小结 24
习题 24
第3章 软件过程模型 25
3.1瀑布模型 25
3.2增量模型 26
3.2.1增量构造模型 27
3.2.2演化提交模型 27
3.3螺旋模型 27
3.4协同开发模型 28
3.5面向对象过程模型 29
3.5.1面向对象概念 29
3.5.2统一过程模型 30
3.5.3组件集成模型 33
3.6面向方面的软件开发 34
3.7小结 36
习题 36
第4章 案例研究 37
4.1案例研究中涵盖的内容 37
4.2案例1:出卷系统 37
4.3案例2:短信系统 37
4.4案例3:POS机系统 38
4.5案例4:ATM机系统 38
4.6案例5:图书馆系统 38
4.7小结 38
习题 38
第二部分 软件需求分析与建模 40
第5章 软件需求分析过程 40
5.1什么是软件需求 40
5.1.1功能需求 40
5.1.2非功能需求 40
5.1.3领域需求 41
5.2需求分析过程 43
5.2.1初步沟通 43
5.2.2导出需求 43
5.2.3分析和精化 44
5.2.4可行性研究 44
5.2.5协商与沟通 44
5.2.6规格说明 44
5.2.7需求验证 46
5.2.8需求变更管理 46
5.3启动分析过程 46
5.3.1确认利益相关者 46
5.3.2识别视点 47
5.3.3协同工作 47
5.3.4首次提问 47
5.4非形式化需求分析技术 47
5.4.1会谈 47
5.4.2调查表 49
5.4.3场景分析 49
5.5案例分析 49
5.5.1出卷系统 49
5.5.2 POS机系统 50
5.5.3图书馆系统 50
5.5.4短信系统 51
5.5.5 ATM机系统 51
5.6小结 51
习题 52
第6章 结构化分析建模 53
6.1分析模型概述 53
6.1.1分析模型元素 53
6.1.2分析模式 54
6.1.3目标与原理 54
6.2结构化需求分析 54
6.2.1结构化分析方法 55
6.2.2结构化分析模型 55
6.3面向数据的建模方法 56
6.3.1实体 56
6.3.2属性 56
6.3.3关系 57
6.3.4基数 57
6.3.5案例分析 57
6.4面向数据流的建模 58
6.4.1数据流图 58
6.4.2数据字典 60
6.4.3状态转换图 61
6.4.4加工逻辑的描述 61
6.5案例分析 64
6.5.1出卷系统 64
6.5.2图书馆系统 66
6.5.3 POS机系统 68
6.5.4短信系统 69
6.6小结 71
习题 71
第7章 面向对象分析 73
7.1面向对象建模 73
7.1.1面向对象模型 73
7.1.2统一建模语言(UML) 75
7.2用例建模 76
7.2.1编写用例 76
7.2.2开发活动图 81
7.2.3泳道图 82
7.3建立领域模型 82
7.3.1识别分析类 83
7.3.2用例实现分析 84
7.3.3关联与依赖 86
7.3.4识别属性和操作 86
7.4行为建模 87
7.4.1系统顺序图 87
7.4.2操作契约 88
7.4.3顺序图与协作图 89
7.4.4状态图 90
7.5案例分析 90
7.5.1 POS机系统 91
7.5.2 ATM机系统 92
7.5.3短信系统 96
7.6小结 98
习题 98
第三部分 软件设计与建模 100
第8章 软件设计 100
8.1软件设计概述 100
8.1.1软件设计过程和设计质量 100
8.1.2概要设计说明书 101
8.1.3详细设计说明书 102
8.2软件模块化设计 103
8.2.1软件模块化 103
8.2.2抽象 104
8.2.3体系结构 104
8.2.4信息隐蔽 104
8.2.5模块独立性 105
8.2.6逐步求精 106
8.2.7重构 106
8.3软件结构 106
8.3.1软件结构图 106
8.3.2模块化设计的优化 107
8.4软件系统结构模型 108
8.4.1系统构成模型 108
8.4.2系统控制模型 110
8.5体系结构模式 111
8.6小结 111
习题 111
第9章 结构化设计方法 113
9.1结构化设计方法概述 113
9.1.1概要设计 113
9.1.2详细设计 113
9.2数据流类型 114
9.2.1变换型数据流 114
9.2.2事务型数据流 114
9.2.3混合型数据流 114
9.3数据流设计方法 115
9.3.1数据流映射步骤 115
9.3.2变换流设计 115
9.3.3事务流设计 116
9.3.4综合分层的数据流设计 117
9.4面向数据的设计 118
9.4.1 Jackson图 118
9.4.2 JSD方法设计步骤 118
9.4.3 JSD举例分析 119
9.5结构化程序设计方法 121
9.5.1基本概念 121
9.5.2结构化程序设计工具 122
9.6案例分析 126
9.6.1出卷系统 126
9.6.2图书馆系统 129
9.7小结 131
习题 131
第10章 面向对象设计 134
10.1面向对象设计过程 134
10.1.1系统模型描述 134
10.1.2逻辑架构和包图 134
10.1.3对象识别 135
10.1.4设计模型 135
10.1.5对象接口描述 137
10.2构件级设计 137
10.2.1构件类 137
10.2.2构件级设计步骤 138
10.2.3基于类的构件设计原则 139
10.3设计模式 140
10.3.1设计模式概述 140
10.3.2基于职责的设计 140
10.4面向对象详细设计 144
10.4.1领域模型精化 144
10.4.2逻辑架构精化 147
10.4.3包设计 149
10.4.4精化的交互图 150
10.4.5精化的类图 152
10.4.6持久性设计 154
10.4.7部署图与构件图 156
10.5案例分析 157
10.5.1 POS机系统 157
10.5.2 短信系统 158
10.5.3 ATM机系统 159
10.6小结 163
习题 164
第11章 软件实现 165
11.1编码语言 165
11.1.1编码语言的分类 165
11.1.2编码语言特性 165
11.1.3面向对象语言的特点 166
11.1.4编码语言的选择 167
11.2编码风格 168
11.2.1编码的基本原则 168
11.2.2面向对象编码原则 169
11.3人机界面设计 171
11.3.1人机界面分析和设计 171
11.3.2人机界面设计步骤 173
11.3.3人机界面设计指南 174
11.4案例分析 175
11.4.1 POS机系统 175
11.4.2短信系统 177
11.4.3出卷系统 191
11.5小结 194
习题 194
第四部分 软件测试与维护 196
第12章 软件测试 196
12.1软件测试的任务 196
12.1.1验证与确认 196
12.1.2软件测试的组织形式 197
12.1.3软件测试的目的与原则 197
12.1.4完成标准 199
12.2软件测试过程模型 200
12.2.1 V模型 200
12.2.2 W模型 200
12.2.3 H模型 201
12.3软件测试策略 201
12.3.1单元测试 202
12.3.2集成测试 204
12.3.3确认测试 205
12.3.4系统测试 205
12.4测试用例设计 205
12.4.1 测试用例设计的目的 205
12.4.2测试用例设计的方法和描述 206
12.4.3测试用例设计的重要性和影响因素 206
12.4.4编写测试用例时的注意事项 206
12.5黑盒技术 207
12.5.1等价类划分法 207
12.5.2边界值分析法 208
12.5.3错误推测法 209
12.5.4因果图法 209
12.6白盒技术 211
12.6.1逻辑覆盖法 212
12.6.2基本路径测试法 214
12.6.3循环测试法 218
12.7集成测试技术 219
12.7.1集成策略 219
12.7.2接口测试 221
12.8自动测试工具 221
12.9调试 222
12.9.1调试过程 222
12.9.2调试策略 223
12.10案例分析 224
12.11小结 229
习题 230
第13章 软件维护 231
13.1软件维护概述 231
13.1.1软件维护的任务 231
13.1.2软件维护的特点 231
13.1.3软件可维护性 232
13.2软件维护类型 232
13.2.1纠错性维护 232
13.2.2完善性维护 233
13.2.3适应性维护 233
13.2.4预防性维护 233
13.3软件维护技术与过程 233
13.3.1面向维护的技术 234
13.3.2维护支援技术 234
13.3.3软件维护过程 234
13.4非结构化维护和结构化维护 236
13.5提高可维护性 236
13.6面向对象的软件维护 238
13.7小结 238
习题 238
第五部分 软件工程管理 240
第14章 软件项目管理 240
14.1项目管理概述 240
14.2软件项目管理范围 241
14.2.1人员 241
14.2.2项目和过程 242
14.2.3软件度量 243
14.2.4软件项目管理计划文档 244
14.3软件团队组织范式 246
14.3.1民主分权式 246
14.3.2控制集权式 247
14.3.3控制分权式 248
14.3.4敏捷团队 248
14.4项目组织原则 249
14.5软件过程管理 249
14.5.1软件过程度量 249
14.5.2软件过程改进 250
14.5.3项目度量 251
14.6风险管理 251
14.6.1风险识别 252
14.6.2风险预测 252
14.6.3风险管理 252
14.7软件配置管理 253
14.7.1 SCM基本概念 253
14.7.2 SCM过程 254
14.7.3 SCM中心存储库 255
14.8小结 256
习题 256
第15章 软件项目估算 257
15.1概述 257
15.1.1项目计划与范围 257
15.1.2项目资源 257
15.2软件规模度量 258
15.2.1面向规模的度量 258
15.2.2面向对象的度量 260
15.3软件成本估算的分解技术 260
15.3.1基于问题分解的估算 260
15.3.2基于过程分解的估算 262
15.4经验估算模型 263
15.4.1专家类比推断 263
15.4.2由底向上估算方法 263
15.4.3构造性成本模型 264
15.5成本估算管理 266
15.6案例分析 266
15.6.1短信系统 266
15.6.2 POS机系统 267
15.7小结 268
习题 269
第16章 软件项目计划与管理 270
16.1软件质量管理 270
16.1.1质量概念 270
16.1.2软件质量保证 271
16.1.3软件质量度量 272
16.1.4软件复审 275
16.1.5软件质量认证标准 276
16.2项目计划 278
16.2.1项目进度安排 278
16.2.2进度安排方法 279
16.2.3项目进度的跟踪管理 281
16.3软件项目管理工具 281
16.4小结 286
习题 287
参考文献 288