第1章 现代软件工程概述 1
1.1 软件 1
1.1.1 软件的概念 1
1.1.2 软件的特点 1
1.1.3 软件的分类 2
1.2 软件危机 3
1.2.1 软件危机的出现 3
1.2.2 产生软件危机的原因 4
1.2.3 消除软件危机的途径 5
1.3 软件工程 6
1.3.1 软件工程的定义 6
1.3.2 软件工程的基本原理 7
1.3.3 软件工程的框架 8
1.3.4 软件工程方法学 8
1.4 软件的生命周期 11
1.4.1 软件生命周期及其各个阶段 11
1.4.2 软件生命周期模型 14
1.5 软件工程的目标和原则 21
1.5.1 软件工程的基本目标 21
1.5.2 软件工程的原则 22
1.6 本章小结 23
习题1 23
第2章 面向对象软件开发方法 24
2.1 面向对象基本思想 24
2.2 面向对象基本概念 25
2.3 面向对象方法 29
2.3.1 面向对象方法简介 29
2.3.2 几种典型的面向对象方法 30
2.3.3 面向对象方法主要优点 32
2.4 面向对象开发统一过程 34
2.4.1 统一过程简介 34
2.4.2 统一过程开发阶段 35
2.4.3 统一过程成分 36
2.5 本章小结 37
习题2 37
第3章 面向对象分析与设计技术 39
3.1 面向对象分析技术 39
3.1.1 OOA简介 39
3.1.2 OOA模型 40
3.1.3 OOA过程 41
3.2 面向对象设计技术 44
3.2.1 OOD简介 44
3.2.2 OOD准则 44
3.2.3 OOD模型 46
3.2.4 OOD过程 48
3.3 OOA与OOD的关系 53
3.4 本章小结 54
习题3 54
第4章 UML建模技术 55
4.1 面向对象建模及UML简介 55
4.1.1 面向对象建模 55
4.1.2 UML简介 56
4.2 用例视图 57
4.3 动态模型图 61
4.3.1 活动图 61
4.3.2 顺序图 64
4.3.3 协作图 67
4.3.4 状态图 69
4.4 静态模型图 72
4.4.1 类图 72
4.4.2 组件图 75
4.4.3 配置图 76
4.5 本章小结 77
习题4 77
第5章 软件复用基础 78
5.1 软件复用概述 78
5.1.1 软件复用的基本概念 78
5.1.2 可供复用的软件要素 80
5.2 支持软件复用的软件工程 81
5.2.1 支持复用的软件工程要素 81
5.2.2 面向软件复用的软件工程 86
5.2.3 基于构件的软件开发 86
5.2.4 软件复用实例 89
5.3 本章小结 90
习题5 90
第6章 基于组件与Web Service的软件开发技术 92
6.1 CORBA组件系统 92
6.1.1 什么是CORBA 92
6.1.2 CORBA体系结构 94
6.2 COM+组件系统 98
6.3 J2EE组件系统 100
6.4 Web Service基础 101
6.5 本章小结 104
习题6 104
第7章 软件设计模式 105
7.1 软件设计模式基础 105
7.1.1 什么是设计模式 105
7.1.2 设计模式的作用 106
7.1.3 设计模式的描述 106
7.1.4 如何使用设计模式 107
7.2 设计模式的分类 107
7.2.1 GOF设计模式分类 107
7.2.2 POSA模式分类 108
7.3 创建型(Creational)设计模式 109
7.3.1 Factory Method(工厂方法)模式 109
7.3.2 Abstract Factory(抽象工厂)模式 109
7.3.3 Builder(生成器)模式 110
7.3.4 Prototype(原型)模式 110
7.3.5 Singleton(单件)模式 111
7.4 结构型(Structural)设计模式 111
7.4.1 Adapter(适配器对象)模式 111
7.4.2 Bridge(桥接)模式 112
7.4.3 Composite(组合)模式 112
7.4.4 Decorator(装饰)模式 113
7.4.5 Facade(外观)模式 113
7.4.6 Flyweight(享元)模式 114
7.4.7 Proxy(代理)模式 115
7.5 行为型(Behavioral)设计模式 115
7.5.1 Template Method(模板方法)模式 116
7.5.2 Interpreter(解释器)模式 116
7.5.3 Chain of Responsibility(职责链)模式 117
7.5.4 Command(命令)模式 117
7.5.5 Iterator(迭代器)模式 118
7.5.6 Mediator(中介者)模式 118
7.5.7 Memento(备忘录)模式 119
7.5.8 Observer(观察者)模式 119
7.5.9 State(状态)模式 120
7.5.10 Strategy(策略)模式 120
7.5.11 Visitor(访问者)模式 121
7.6 DrawCLI中设计模式的应用 122
7.6.1 DrawCLI基础 122
7.6.2 DrawCLI中的设计模式 122
7.6.3 Prototype(原型)模式 123
7.6.4 Observer(观察者) 123
7.6.5 Chain of Responsibility(职责链)模式 124
7.7 本章小结 125
习题7 125
第8章 软件体系结构 127
8.1 软件体系结构基础 127
8.1.1 软件体系结构的定义 127
8.1.2 研究软件体系结构的目的 128
8.1.3 软件体系结构的研究角度 128
8.1.4 软件体系结构的研究热点 129
8.2 基本的软件体系结构风格 130
8.2.1 管道和过滤器 130
8.2.2 数据抽象和面向对象组织 131
8.2.3 基于事件的隐式调用 131
8.2.4 分层系统 132
8.2.5 仓库系统 133
8.3 基于软件体系结构的开发模式 133
8.4 软件体系结构应用实例 134
8.5 本章小结 135
习题8 135
第9章 敏捷软件过程 137
9.1 敏捷实践 137
9.1.1 敏捷联盟 137
9.1.2 开发原则 138
9.2 敏捷开发方法 139
9.3 XP——极限编程 140
9.3.1 XP的基础——实践 140
9.3.2 XP方法的价值和规则 140
9.3.3 XP方法的12个核心实践 141
9.3.4 XP案例分析 146
9.4 Scrum 151
9.4.1 Scrum简史 151
9.4.2 Scrum的生产测度 152
9.4.3 Scrum的开发方式 152
9.4.4 Scrum实践 153
9.4.5 监测进展 155
9.4.6 Scrum方法的实践效果和发展方向 155
9.4.7 Scrum案例分析 156
9.4.8 小结 159
9.5 DSDM——动态系统开发方法 159
9.5.1 DSDM原理 159
9.5.2 DSDM过程 160
9.6 Crystal方法 161
9.6.1 Crystal应用(7大体系特征) 162
9.6.2 Crystal框架流程 164
9.7 FDD特性驱动开发 164
9.7.1 FDD过程模型 164
9.7.2 FDD与其他方法的相似和区别 165
9.8 ASD自适应软件开发 166
9.8.1 面向变化的生命周期 166
9.8.2 基本自适应软件开发生命周期 167
9.9 本章小结 169
习题9 170
第10章 软件测试技术与工具 172
10.1 常用的软件测试方法 172
10.1.1 黑盒测试 172
10.1.2 白盒测试 172
10.1.3 基于风险的测试 173
10.1.4 基于模型的测试 174
10.2 常见的软件测试类型 174
10.2.1 BVT 174
10.2.2 Scenario Tests(基于用户实际应用场景的测试) 175
10.2.3 Smoke Test 175
10.2.4 测试实例 175
10.3 软件测试技术 178
10.3.1 自动化测试和手工测试 178
10.3.2 探索性测试 179
10.3.3 单元测试 180
10.3.4 单元级别性能测试 181
10.3.5 数据库性能测试 184
10.3.6 压力测试 184
10.3.7 软件的安全性测试 184
10.3.8 软件安装/卸载测试 185
10.3.9 环境测试 186
10.4 自动化测试 187
10.4.1 自动化测试标准 187
10.4.2 自动化测试体系结构 188
10.4.3 自动化测试原理和方法 188
10.4.4 自动化测试实例 190
10.5 手工测试与自动化测试的应用比较 193
10.5.1 自动化测试优缺点 193
10.5.2 手工测试与自动化测试的应用比较 194
10.6 常用的软件测试工具 194
10.6.1 白盒测试工具 194
10.6.2 黑盒测试工具 195
10.6.3 性能测试工具 195
10.6.4 测试管理工具 195
10.6.5 测试案例 195
10.7 本章小结 197
习题10 197
第11章 软件项目管理 198
11.1 软件项目管理定义及特点 198
11.2 软件项目计划 199
11.2.1 软件规模估算 199
11.2.2 软件工作量估算 205
11.2.3 软件进度计划 208
11.3 软件项目风险管理 211
11.3.1 软件项目风险管理模型 212
11.3.2 软件项目风险管理过程 213
11.3.3 软件项目风险管理实施 215
11.4 软件质量管理 216
11.4.1 软件质量评价体系 216
11.4.2 软件质量管理的基础活动 217
11.5 软件配置管理(Software Configuration Management,SCM) 220
11.5.1 配置管理活动 220
11.5.2 软件配置管理工具 223
11.6 人员的组织与管理 224
11.6.1 民主制程序员组 224
11.6.2 主程序员组 225
11.6.3 现代程序员组 226
11.6.4 软件项目组 227
11.7 本章小结 228
习题11 229
第12章 软件成熟度模型与软件过程 230
12.1 能力成熟度模型 230
12.1.1 CMM的诞生 231
12.1.2 CMM的发展 231
12.1.3 CMM体系结构 232
12.1.4 实施CMM的必要性 239
12.1.5 CMM在中国的现状 240
12.1.6 CMM实施的思考 240
12.2 能力成熟度模型集成 241
12.2.1 CMMI的背景 242
12.2.2 CMMI内容 242
12.2.3 CMMI的实施 243
12.2.4 CMMI与CMM差别 244
12.3 个人软件过程 244
12.3.1 PSP概述 245
12.3.2 PSP的基本原理 245
12.3.3 PSP的结构 246
12.3.4 PSP的过程 247
12.3.5 PSP的现状和发展趋势 252
12.4 团队软件过程 253
12.4.1 TSP概述 253
12.4.2 TSP团队创建 254
12.4.3 TSP团队启动 255
12.4.4 TSP的基本原理 256
12.4.5 TSP框架结构与流程 257
12.4.6 TSP度量元素 260
12.4.7 实施TSP的条件 260
12.5 能力成熟度模型与软件过程之间的关系 261
12.5.1 TSP、PSP对CMM的支持 261
12.5.2 CMM、TSP、PSP的有机结合 262
12.6 本章小结 263
习题12 263