第一篇 传统软件设计技术 3
第1章 软件工程概述 3
1.1软件的概念及其特点 3
1.1.1软件的定义 3
1.1.2软件的分类 4
1.1.3软件的特点 4
1.2软件工程 5
1.2.1软件危机的表现及产生的原因 5
1.2.2软件工程概念 7
1.2.3软件工程的基本原理 8
1.3软件生存周期和软件开发模型 9
1.3.1软件生存周期 9
1.3.2软件生存期模型 10
1.4程序设计方法和软件开发方法 11
1.4.1程序设计方法 12
1.4.2软件开发方法 13
复习思考题 15
第2章 可行性分析和软件项目开发计划 16
2.1可行性分析的任务和步骤 16
2.1.1可行性分析的任务 16
2.1.2可行性分析的步骤 17
2.2成本/效益分析 18
2.2.1成本估计方法 19
2.2.2费用估算 20
2.2.3几种度量效益的方法 21
2.3软件项目开发计划 22
2.4软件计划进度安排 23
2.4.1项目计划与里程碑 23
2.4.2项目计划安排技巧 24
复习思考题 25
第3章 软件需求分析 27
3.1需求分析概述 27
3.1.1需求分析的任务 27
3.1.2需求分析的过程 28
3.1.3需求分析的困难性 28
3.1.4需求的目的 29
3.2结构化分析方法和工具 30
3.2.1结构化分析概述 31
3.2.2数据流图 31
3.2.3数据词典 34
3.2.4加工逻辑描述工具 35
3.3原型化方法 37
3.3.1软件原型的分类 37
3.3.2快速原型开发模型 37
复习思考题 39
第4章 软件设计 40
4.1总体设计概述 40
4.1.1总体设计原则 41
4.1.2总体设计过程 42
4.1.3总体设计的图形工具 42
4.2软件设计 43
4.2.1模块化 43
4.2.2抽象 45
4.2.3信息隐藏 45
4.2.4模块独立性 45
4.2.5模块的深度、宽度、扇出和扇入 48
4.3详细设计 49
4.3.1详细设计概述 49
4.3.2结构化程序设计 50
4.4详细设计工具 51
4.4.1程序流程图 51
4.4.2盒图(N-S图) 52
4.4.3 PAD (problem analysis diagram)图 52
4.4.4过程设计语言PDL (program design language) 53
4.5面向数据结构的设计方法 54
4.5.1 Jackson图 54
4.5.2 Jackson程序设计方法 55
复习思考题 57
第5章 程序编码与软件测试 59
5.1程序设计语言 59
5.1.1语言的分类和特点 59
5.1.2常用开发语言的评价 61
5.1.3开发语言的选择 62
5.2程序编写规范 63
5.2.1编码风格 63
5.2.2结构化编码 64
5.2.3程序清晰性 64
5.2.4变量和表达式 65
5.2.5输入和输出 65
5.2.6程序效率 65
5.2.7程序注释 66
5.2.8成熟技术的使用与“创新” 66
5.3程序员的修养 67
5.3.1程序员的素质 67
5.3.2编程修养 67
5.4软件测试概述 68
5.4.1软件测试及其发展 68
5.4.2软件测试角色 69
5.5软件测试的方法 70
5.5.1 bug和bug跟踪 70
5.5.2测试的分类 70
5.6软件测试用例的设计 73
5.6.1测试用例文档 73
5.6.2白盒测试和黑盒测试 73
复习思考题 75
第二篇 面向对象分析设计方法 79
第6章 面向对象方法 79
6.1面向对象的概述 79
6.1.1面向对象的发展历史和动因 79
6.1.2面向对象的概念 81
6.2面向对象的软件工程 83
6.2.1面向对象的分析 84
6.2.2面向对象的设计 86
6.2.3面向对象的实现 91
6.3面向对象的建模方法 92
6.3.1 Booch方法 92
6.3.2 Rumbaugh的OMT方法 93
6.3.3 Coad/Yourdon方法 94
6.3.4 Jacobson方法 94
复习思考题 95
第7章 软件开发的统一过程UP 96
7.1统一过程UP 96
7.1.1 UP的概念 96
7.1.2 UP和Rational统一过程RUP 97
7.1.3为项目实例化UP 98
7.2统一过程的开发方法 98
7.2.1用例驱动和风险驱动 98
7.2.2以体系结构为中心 99
7.2.3 UP是迭代和增量过程 99
7.2.4 UP结构 101
7.2.5 UP阶段 102
复习思考题 104
第8章 统一建模语言UML简介 105
8.1 UML概述 105
8.1.1 UML简介 105
8.1.2 UML历史 106
8.2 UML语言基础 108
8.2.1 UML语言描述 108
8.2.2元素关系 109
8.3 UML的静态建模 110
8.3.1用例图 110
8.3.2类图、对象图和包 112
8.3.3构件图和配置图 117
8.4动态建模 118
8.4.1消息 118
8.4.2状态图 118
8.4.3顺序图 119
8.4.4合作图 121
8.4.5活动图 121
8.4.6四种图的运用 122
8.5使用UML的过程 122
8.5.1 UML过程的基础 123
8.5.2面向对象方法的一般过程 123
8.5.3 Rational Objecto过程 126
复习思考题 127
第9章用UML构建Web应用 128
9.1 Web应用概述 128
9.1.1 Web工程过程 128
9.1.2 Web开发团队 129
9.2 UML构建数字商店 130
9.2.1概况 130
9.2.2需求和特性 131
9.2.3软件构架文档 131
复习思考题 139
第三篇 软件开发的项目管理 143
第10章 软件开发的项目管理 143
10.1软件项目管理概述 143
10.1.1项目管理中的均衡三角形 143
10.1.2项目均衡 144
10.2软件开发团队 144
10.2.1开发团队构成 145
10.2.2如何组织软件开发团队 147
10.2.3项目经理素质要求 149
10.3项目的开发规范 150
10.3.1软件工程的标准 150
10.3.2标准化的意义 150
10.4软件项目管理的成功原则 151
10.4.1平衡原则 151
10.4.2高效原则 151
10.4.3分解原则 151
10.4.4实时控制原则 152
10.4.5分类管理原则 152
10.4.6简单有效原则 152
10.4.7规模控制原则 152
10.5微软公司的开发管理和演变 153
复习思考题 153
第11章 软件过程和项目的度量方法 154
11.1软件过程的度量 154
11.1.1过程度量 154
11.1.2软件过程的改善 155
11.2软件项目的度量概述 156
11.3软件项目的度量方法 156
11.3.1面向规模的度量 157
11.3.2面向功能的度量 158
11.3.3软件质量的度量 160
11.4风险分析和管理 161
11.4.1被动和主动的风险策略 162
11.4.2软件风险 162
11.4.3软件风险的估计 163
11.4.4风险的监控管理 163
复习思考题 164
第12章 软件的质量保证 165
12.1软件质量保证概述 165
12.1.1软件质量保证的概念和任务 165
12.1.2质量保证和检验 165
12.1.3软件的质量成本 166
12.2软件质量保证体系与实施 167
12.2.1软件质量保证体系 167
12.2.2软件质量保证的实施 168
12.3软件配置管理 169
12.3.1软件配置项管理 169
12.3.2软件配置管理的过程和任务 170
12.4软件工程标准化 171
12.4.1软件工程标准的制定 171
12.4.2软件工程标准的层次 172
12.4.3我国标准 173
12.5软件过程能力评估的CMM模型 174
12.5.1软件机构的过程成熟度模型CMM 175
12.5.2 CMM的评估 175
12.5.3国内IT企业采用CMM的状况 176
复习思考题 176
第13章 极限编程 177
13.1极限编程概述 177
13.1.1什么是极限编程 177
13.1.2极限编程的特点 178
13.1.3极限编程的设计原则 180
13.2极限编程方法 181
13.2.1规划策略 181
13.2.2小型发布 182
13.2.3系统比喻 182
13.2.4简化设计 182
13.2.5测试驱动 183
13.2.6重构 183
13.2.7结对编程 184
13.2.8代码全体拥有 184
13.2.9持续集成 185
13.2.10每周40小时工作制 185
13.2.11现场客户 185
13.2.12代码规范 186
13.3极限编程XP与CMM/RUP的比较 186
13.3.1 XP与CMM的比较 186
13.3.2 XP与RUP的比较 187
复习思考题 188
第14章 软件的维护与再工程 189
14.1软件的维护 189
14.1.1软件维护的概念 189
14.1.2影响软件维护工作量的因素 190
14.1.3软件维护的策略 191
14.1.4软件维护的成本 191
14.1.5软件的可维护性 192
14.1.6提高软件可维护性的方法 193
14.2软件再工程和逆向工程 196
14.2.1业务过程再工程(business process reengineer, BPR) 196
14.2.2软件再工程 197
14.2.3逆向工程 200
14.3重构 201
14.3.1代码重构 201
14.3.2数据重构 202
复习思考题 202
第四篇 软件开发工具和软件工程实践 205
实践1 Rational Rose的使用 205
1.1 Rational Rose界面 205
1.2 Rational Rose用例视图 206
1.2.1创建角色 206
1.2.2创建用例 209
1.2.3创建角色和用例之间的关联 209
1.2.4创建顺序图和合作图 211
1.3 Rational Rose逻辑视图 213
1.3.1建立类图 213
1.3.2建立包 216
1.2.3建立状态图 216
1.4 Rational Rose组件视图 217
1.5 Rational Rose生成代码框架 218
1.6新一代建模工具XDE 220
实践2 PowerDesigner的使用 221
2.1 PowerDesigner简介 221
2.1.1 PowerDesigner概述 221
2.1.2 PowerDesigner版本 222
2.1.3 PowerDesigner模块组成 222
2.1.4 PowerDesigner的4种模型文件 223
2.2 PowerDesigner的操作 224
2.2.1 PowerDesigner系统界面 224
2.2.2 PowerDesigner基本操作 225
2.2.3 PowerDesigner业务规则 228
2.2.4产生实体 229
2.2.5将CDM对象转换为PDM对象 230
2.3正向工程和逆向工程 231
2.3.1正向工程 231
2.3.2逆向工程 232
2.4生成报表 234
实践3用UML设计图书管理系统 236
3.1需求分析 236
3.2系统分析 236
3.2.1总体分析 237
3.2.2域分析 238
3.3设计 240
3.3.1体系结构设计 241
3.3.2详细设计 242
3.3.3用户界面设计 245
3.4实现 245
3.5测试和部署 246
3.6小结 246
附录 软件工程文档模板 253
参考文献 275