第一部分 面向对象软件工程简介 3
第1章 面向对象软件工程的范畴 3
1.1 历史方面 4
1.2 经济方面 6
1.3 维护方面 6
1.3.1 现代软件维护观点 8
1.3.2 交付后维护的重要性 9
1.4 需求、分析和设计方面 10
1.5 团队开发 11
1.6 没有计划阶段的原因 12
1.7 没有测试阶段的原因 12
1.8 没有文档阶段的原因 13
1.9 面向对象范型 13
1.10 术语 15
1.11 道德规范问题 17
本章回顾 18
延伸阅读材料 18
习题 19
参考文献 20
第2章 软件生命周期模型 23
2.1 理想软件开发 23
2.2 Winburg小型案例研究 23
2.3 Winburg小型案例研究经验 25
2.4 Teal Tractors公司小型案例研究 25
2.5 迭代与增量 26
2.6 Winburg小型案例研究再探 28
2.7 迭代和增量的风险及其他 29
2.8 管理迭代与增量 31
2.9 其他生命周期模型 31
2.9.1 边写边改生命周期模型 32
2.9.2 瀑布生命周期模型 32
2.9.3 快速原型生命周期模型 33
2.9.4 开源生命周期模型 34
2.9.5 敏捷过程 35
2.9.6 同步稳定生命周期模型 37
2.9.7 螺旋生命周期模型 38
2.10 生命周期模型的比较 40
本章回顾 41
延伸阅读材料 41
习题 42
参考文献 43
第3章 软件过程 46
3.1 统一过程 47
3.2 迭代与增量 48
3.3 需求工作流 49
3.4 分析工作流 50
3.5 设计工作流 51
3.6 实现工作流 52
3.7 测试工作流 52
3.7.1 需求制品 53
3.7.2 分析制品 53
3.7.3 设计制品 53
3.7.4 实现制品 53
3.8 交付后维护 54
3.9 退役 55
3.10 统一过程的阶段 55
3.10.1 初始阶段 56
3.10.2 细化阶段 57
3.10.3 构造阶段 58
3.10.4 移交阶段 58
3.11 一维与二维生命周期模型对比 59
3.12 改进软件过程 60
3.13 能力成熟度模型 60
3.14 软件过程改进的其他方面 62
3.15 软件过程改进的成本与收益 62
本章回顾 64
延伸阅读材料 64
习题 65
参考文献 65
第4章 软件团队 68
4.1 团队组织 68
4.2 民主团队方式 69
4.3 主程序员团队方式 70
4.3.1 《纽约时报》项目 71
4.3.2 主程序员团队方式的不切实际性 72
4.4 超越主程序员和民主团队 72
4.5 同步-稳定团队 73
4.6 敏捷过程团队 74
4.7 开源编程团队 74
4.8 人力资源能力成熟度模型 75
4.9 选择合适的团队组织 75
本章回顾 76
延伸阅读材料 76
习题 77
参考文献 77
第5章 软件工程工具 79
5.1 逐步求精 79
5.2 成本-效益分析法 82
5.3 软件度量 83
5.4 CASE 84
5.5 CASE的分类 85
5.6 CASE的范围 86
5.7 软件版本 88
5.7.1 修订版 89
5.7.2 变体 89
5.8 配置控制 89
5.8.1 交付后维护期间的配置控制 91
5.8.2 基线 91
5.8.3 产品开发过程中的配置控制 91
5.9 建造工具 92
5.10 使用CASE技术提高生产力 93
本章回顾 93
延伸阅读材料 93
习题 94
参考文献 95
第6章 测试 97
6.1 质量问题 97
6.1.1 软件质量保证 98
6.1.2 管理独立性 98
6.2 基于非执行的测试 99
6.2.1 走查 99
6.2.2 管理走查 100
6.2.3 审查 100
6.2.4 走查和审查的对比 102
6.2.5 评审的优缺点 102
6.2.6 审查的度量方法 102
6.3 基于执行的测试 103
6.4 应该测试什么 103
6.4.1 实用性 104
6.4.2 可靠性 104
6.4.3 健壮性 104
6.4.4 性能 105
6.4.5 正确性 105
6.5 测试与正确性证明 106
6.5.1 正确性证明的例子 106
6.5.2 正确性证明小型实例研究 108
6.5.3 正确性证明和软件工程 109
6.6 由谁来完成基于执行的测试 111
6.7 测试何时停止 112
本章回顾 112
延伸阅读材料 112
习题 113
参考文献 114
第7章 从模块到对象 117
7.1 什么是模块 117
7.2 内聚 119
7.2.1 偶然性内聚 119
7.2.2 逻辑性内聚 120
7.2.3 时间性内聚 120
7.2.4 过程性内聚 121
7.2.5 通信性内聚 121
7.2.6 功能性内聚 121
7.2.7 信息性内聚 121
7.2.8 内聚示例 122
7.3 耦合 122
7.3.1 内容耦合 122
7.3.2 公共耦合 123
7.3.3 控制耦合 124
7.3.4 印记耦合 125
7.3.5 数据耦合 125
7.3.6 耦合示例 126
7.3.7 耦合的重要性 126
7.4 数据封装 127
7.4.1 数据封装和开发 128
7.4.2 数据封装和维护 129
7.5 抽象数据类型 133
7.6 信息隐藏 134
7.7 对象 135
7.8 继承、多态和动态绑定 137
7.9 面向对象范型 139
本章回顾 140
延伸阅读材料 141
习题 141
参考文献 142
第8章 可复用性和可移植性 144
8.1 复用的概念 145
8.2 复用的障碍 146
8.3 复用案例研究 147
8.3.1 雷锡恩导弹系统部门 147
8.3.2 欧洲航天局 148
8.4 对象和复用 149
8.5 在设计和实现过程中的复用 149
8.5.1 设计复用 149
8.5.2 应用架构 150
8.5.3 设计模式 151
8.5.4 软件体系结构 152
8.5.5 基于组件的软件工程 153
8.6 关于设计模式的更多内容 153
8.6.1 FLIC小型案例研究 153
8.6.2 适配器设计模式 154
8.6.3 桥接设计模式 154
8.6.4 迭代器设计模式 155
8.6.5 抽象工厂设计模式 156
8.7 设计模式的范畴 159
8.8 设计模式的优点和缺点 159
8.9 复用和交付后的维护 160
8.10 可移植性 161
8.10.1 硬件的不兼容性 161
8.10.2 操作系统的不兼容性 162
8.10.3 数值计算软件的不兼容性 162
8.10.4 编译器的不兼容性 163
8.11 为什么需要可移植性 165
8.12 实现可移植性的技术 166
8.12.1 可移植的系统软件 166
8.12.2 可移植的应用软件 166
8.12.3 可移植数据 167
8.12.4 基于Web的应用程序 167
本章回顾 168
延伸阅读材料 168
习题 169
参考文献 170
第9章 计划与估算 174
9.1 计划活动与软件过程 174
9.2 估算项目周期和成本 175
9.2.1 产品规模的衡量标准 176
9.2.2 成本估算技术 178
9.2.3 中级COCOMO 180
9.2.4 COCOMOⅡ 182
9.2.5 跟踪周期和成本估算 183
9.3 估算探讨 183
9.4 软件项目管理计划的组成 184
9.5 软件项目管理计划框架 185
9.6 IEEE软件项目管理计划 186
9.7 对测试进行计划 188
9.8 培训需求 188
9.9 文档标准 189
9.10 计划和估算的CASE工具 189
9.11 测试软件项目管理计划 190
本章回顾 190
延伸阅读材料 190
习题 191
参考文献 192
第二部分 软件生命周期工作流 196
第10章 需求工作流 196
10.1 确定什么是客户所需 196
10.2 需求工作流概述 197
10.3 域的理解 197
10.4 业务模型 198
10.4.1 访谈 198
10.4.2 其他技术 198
10.4.3 用例 199
10.5 初始需求 200
10.6 对应用域的初始理解:MSG基金会实例研究 200
10.7 初始业务模型:MSG基金会实例研究 202
10.8 初始需求:MSG基金会实例研究 204
10.9 需求工作流继续:MSG基金会实例研究 205
10.10 修订需求:MSG基金会实例研究 206
10.11 测试工作流:MSG基金会实例研究 211
10.12 什么是面向对象的需求 217
10.13 快速原型 218
10.14 人为因素 218
10.15 复用快速原型 219
10.16 需求工作流的CASE工具 220
10.17 需求工作流的度量 220
10.18 需求工作流的挑战 220
本章回顾 221
延伸阅读材料 222
习题 222
参考文献 223
第11章 分析工作流 224
11.1 规格说明文档 224
11.2 非形式化规格说明 225
11.3 小型案例研究的正确性证明回顾 226
11.4 分析工作流 227
11.5 实体类的提取 228
11.6 电梯问题 228
11.7 功能建模:电梯问题案例研究 229
11.8 实体类建模:电梯问题案例研究 230
11.8.1 名词提取 230
11.8.2 CRC卡片 232
11.9 动态建模:电梯问题案例研究 233
11.10 测试工作流:电梯问题案例研究 235
11.11 提取边界类和控制类 237
11.12 初始功能建模:MSG基金会案例研究 238
11.13 初始类图:MSG基金会案例研究 239
11.14 初始动态建模:MSG基金会案例研究 240
11.15 修订实体类:MSG基金会案例研究 242
11.16 提取边界类:MSG基金会案例研究 243
11.17 提取控制类:MSG基金会案例研究 243
11.18 用例实现:MSG基金会案例研究 243
11.18.1 Estimate Funds Available for Week用例 244
11.18.2 Manage an Asset用例 248
11.18.3 Update Estimated Annual Operating Expenses用例 251
11.18.4 Produce a Report用例 252
11.19 类图增量:MSG基金会案例研究 256
11.20 软件项目管理计划:MSG基金会案例研究 257
11.21 测试工作流:MSG基金会案例研究 257
11.22 统一过程中的规格说明文档 257
11.23 更多关于参与者和用例的内容 258
11.24 支持分析工作流的CASE工具 259
11.25 分析工作流的挑战 259
本章回顾 259
延伸阅读材料 260
习题 260
参考文献 262
第12章 设计工作流 264
12.1 面向对象设计 264
12.2 面向对象设计:电梯问题案例研究 268
12.3 面向对象设计:MSG基金会案例研究 270
12.4 设计工作流 272
12.5 测试工作流:设计 273
12.6 测试工作流:MSG基金会案例 273
12.7 详细设计的形式化技术 273
12.8 实时设计技术 274
12.9 用于设计的CASE工具 274
12.10 设计的度量 275
12.11 设计工作流面临的挑战 276
本章回顾 277
延伸阅读材料 277
习题 277
参考文献 278
第13章 实现工作流 280
13.1 选择编程语言 280
13.2 良好的编程实践 282
13.2.1 使用一致和有意义的变量名 282
13.2.2 自文档化代码的问题 283
13.2.3 使用参数 284
13.2.4 为增加可读性的代码编排 284
13.2.5 嵌套的if语句 285
13.3 编码标准 286
13.4 代码复用 286
13.5 集成 286
13.5.1 自顶向下的集成 287
13.5.2 自底向上的集成 288
13.5.3 三明治集成 288
13.5.4 集成技术 289
13.5.5 集成管理 290
13.6 实现工作流 290
13.7 实现工作流:MSG基金会案例研究 290
13.8 测试工作流:实现 290
13.9 测试用例的选择 290
13.9.1 规格说明测试与代码测试 291
13.9.2 规格说明测试的可行性 291
13.9.3 代码测试的可行性 291
13.10 黑盒单元测试技术 293
13.10.1 等价测试和边界值分析 293
13.10.2 功能测试 294
13.11 黑盒测试用例:MSG基金会案例研究 294
13.12 玻璃盒单元测试技术 296
13.12.1 结构测试:语句、分支和路径覆盖 296
13.12.2 复杂性度量 297
13.13 代码走查和审查 298
13.14 单元测试技术的比较 298
13.15 净室 298
13.16 测试中的问题 299
13.17 单元测试的管理方面内容 301
13.18 何时重写而不是调试代码制品 301
13.19 集成测试 302
13.20 产品测试 303
13.21 验收测试 303
13.22 测试流:MSG基金会案例研究 304
13.23 用于实现的CASE工具 304
13.23.1 软件开发全过程的CASE工具 304
13.23.2 集成开发环境 304
13.23.3 商业应用环境 305
13.23.4 公共工具基础结构 305
13.23.5 环境的潜在问题 306
13.24 测试工作流的CASE工具 306
13.25 实现工作流的度量 306
13.26 实现工作流面临的挑战 307
本章回顾 307
延伸阅读材料 308
习题 309
参考文献 310
第14章 交付后维护 313
14.1 开发与维护 313
14.2 为什么交付后维护是必要的 314
14.3 交付后维护程序员要求具备什么 314
14.4 交付后维护小型案例研究 316
14.5 交付后维护的管理 317
14.5.1 缺陷报告 317
14.5.2 授权对产品的修改 318
14.5.3 确保可维护性 318
14.5.4 反复维护的问题 319
14.6 维护问题 319
14.7 交付后维护技能与开发技能 321
14.8 逆向工程 321
14.9 交付后维护期间的测试 322
14.10 交付后维护的CASE工具 323
14.11 交付后维护的度量 323
14.12 交付后维护:MSG基金会案例研究 323
14.13 交付后维护面临的挑战 323
本章回顾 323
延伸阅读材料 324
习题 324
参考文献 325
第15章 UML的进一步讨论 327
15.1 UML不是一种方法学 327
15.2 类图 327
15.2.1 聚合 328
15.2.2 多重性 329
15.2.3 组合 329
15.2.4 泛化 330
15.2.5 关联 330
15.3 注释 330
15.4 用例图 330
15.5 构造型 331
15.6 交互图 331
15.7 状态图 333
15.8 活动图 335
15.9 包 335
15.10 组件图 336
15.11 部署图 336
15.12 UML图回顾 336
15.13 UML和迭代 336
本章回顾 337
延伸阅读材料 337
习题 337
参考文献 337
附录 338
附录A 学期项目:Osric办公用品和装饰公司项目 338
附录B 软件工程资源 340
附录C 需求工作流:MSG基金会案例研究 341
附录D 分析工作流:MSG基金会案例研究 341
附录E 软件工程管理计划:MSG基金会案例研究 341
附录F 设计工作流:MSG基金会案例研究 345
附录G 实现工作流:MSG基金会案例研究(C++版) 349
附录H 实现工作流:MSG基金会案例研究(Java版) 349
附录I 测试工作流:MSG基金会案例研究 350
· · · · · · (
收起)
0 有用 Marlowe 2014-03-06 00:37:53
还行吧,因为暂时没看过别的……
0 有用 Marlowe 2014-03-06 00:37:53
还行吧,因为暂时没看过别的……