第1章 软件产品 1
1.1 软件的发展 2
1.1.1 软件产业 5
1.1.2 软件的竞争 6
1.2 软件危机与软件工程 6
1.2.1 软件特征 11
1.2.2 软件工程 12
1.2.3 软件应用 18
1.2.4 软件语言 20
1.2.5 软件文档 21
1.3 软件生存周期模型 23
1.3.1 瀑布模型 26
1.3.2 快速原型模型 30
1.3.3 螺旋模型 36
1.3.4 喷泉模型和其他模型 38
1.4 软件工程工具及环境 43
本章小结 47
习题 47
第2章 软件过程 48
2.1 软件过程规范 49
2.2 软件过程成熟度模型 52
2.2.1 初始级 58
2.2.2 可重复级 58
2.2.3 已定义级 60
2.2.4 已管理级 62
2.2.5 优化级 63
2.3 软件过程管理案例 65
本章小结 70
习题 70
第3章 项目管理和软件项目计划 71
3.1 对估算的观察 74
3.2 项目计划目标 78
3.3 软件范围 80
3.4 软件项目估算 81
3.5 项目管理实验 85
本章小结 102
习题 102
第4章 项目进度安排及跟踪 103
4.1 人员与工作量之间的关系 105
4.2 为软件项目定义任务集合 107
4.2.1 严格度 108
4.2.2 定义适应准则 108
4.2.3 计算任务集合选择因子的值 109
4.3 主要任务的求精 110
4.4 进度安排 113
4.5 软件项目计划案例 117
本章小结 120
习题 120
第5章 软件工程的需求工程 121
5.1 软件工程需求分析案例 125
5.2 需求分析的基本内容 129
5.2.1 需求分析的必要性 130
5.2.2 需求分析的原则 131
5.2.3 需求的类型 132
5.2.4 需求分析的方法 133
5.3 结构化分析的技巧 136
5.3.1 创建实体-关系图 137
5.3.2 创建数据流模型 139
5.3.3 加工规范化 141
5.3.4 数据字典 142
5.3.5 其他分析方法概述 144
本章小结 146
习题 146
第6章 软件设计 147
6.1 设计和软件质量 148
6.2 软件设计的演化 150
6.3 设计目标与任务 152
6.4 设计概念 155
6.4.1 抽象 155
6.4.2 求精 156
6.4.3 模块化 157
6.4.4 软件体系结构 158
6.4.5 控制层次 158
6.4.6 结构划分 159
6.4.7 数据结构 160
6.4.8 信息隐藏与局部化 160
6.5 有效的模块设计案例 161
6.5.1 模块独立性 161
6.5.2 内聚 162
6.5.3 耦合 164
本章小结 166
习题 166
第7章 面向对象的分析方法 167
7.1 面向对象分析概述 171
7.1.1 常用的OOA方法 173
7.1.2 OOA模型 176
7.2 领域分析 181
7.2.1 复用和领域分析 181
7.2.2 领域分析过程 182
7.2.3 面向对象分析模型的类属成分 183
7.3 OOA过程 184
7.3.1 用例 186
7.3.2 类-责任-协作者建模 189
7.3.3 定义结构和层次 192
7.3.4 定义主题和子系统 193
7.4 对象-关系模型 193
7.5 对象-行为模型 194
本章小结 195
习题 195
第8章 面向对象设计 196
8.1 面向对象系统的设计 197
8.1.1 OOD概述 198
8.1.2 统一的OOD方法 202
8.2 系统设计过程 203
8.2.1 划分分析模型 205
8.2.2 并发性和子系统分配 207
8.2.3 任务管理构件 207
8.2.4 人机界面构件 209
8.2.5 数据管理构件 211
8.2.6 资源管理构件 211
8.2.7 子系统间通信 212
8.3 对象设计过程 212
8.3.1 对象描述 213
8.3.2 设计算法和数据结构 215
8.3.3 程序构件与接口 216
8.4 设计模式 217
8.4.1 描述设计模式 218
8.4.2 在设计中使用设计模式 221
本章小结 224
习题 225
第9章 面向对象测试 226
9.1 OOA和OOD模型的正确性 227
9.2 OOA和OOD的测试 231
9.3 OO软件的测试案例设计的影响 232
9.3.1 OO概念的测试用例设计的含义 233
9.3.2 传统测试案例设计方法的可用性 233
9.3.3 基于故障的测试 234
9.4 在类级别可用的测试方法 235
9.4.1 对OO类的测试 235
9.4.2 系统测试 236
本章小结 238
习题 238
第10章 软件维护工程 239
10.1 软件维护案例介绍 239
10.2 软件维护概述 240
10.2.1 软件维护的类型 240
10.2.2 软件维护的困难 241
10.2.3 软件维护的费用 242
10.2.4 软件维护的方式 243
10.3 软件系统的维护 243
10.3.1 概述 243
10.3.2 软件维护的过程 243
10.3.3 软件维护技术 246
10.3.4 影响维护工作量的因素 246
10.3.5 软件维护的策略 247
10.3.6 维护成本 250
本章小结 251
习题 251
参考文献 252