第1章 软件工程概述 1
1.1软件工程的产生和发展 1
1.1.1软件危机与软件工程 1
1.1.2软件工程的定义及基本原则 3
1.1.3软件工程研究的内容 3
1.2软件与软件过程 4
1.2.1软件的概念和特点 5
1.2.2软件工程过程及产品 6
1.3软件过程模型 6
1.3.1瀑布模型 6
1.3.2增量模型 7
1.3.3螺旋模型 7
1.3.4喷泉模型 8
1.3.5原型模型 8
1.3.6智能模型 9
1.4软件开发方法 9
1.4.1结构化开发方法 10
1.4.2原型化开发方法 10
1.4.3面向对象的开发方法 11
1.4.4敏捷软件的开发 12
1.5软件工具与集成化开发环境 15
1.5.1软件工具的发展过程 15
1.5.2软件工具 16
1.5.3集成化CASE环境 18
小结 19
习题1 19
第2章 面向对象方法与UML建模语言 21
2.1面向对象方法概述 21
2.1.1面向对象方法的特点 21
2.1.2几种典型的面向对象方法 22
2.2 UML概述 23
2.2.1 UML的基本概念 24
2.2.2 UML的图形表示 25
2.3建立用例模型 28
2.3.1需求分析与用例建模 28
2.3.2确定执行者和用例 29
2.3.3用例建模实例 31
2.4建立静态模型 33
2.4.1类图 33
2.4.2包图 41
2.5建立动态模型 42
2.5.1消息 42
2.5.2状态图 43
2.5.3顺序图 46
2.5.4合作图 47
2.5.5活动图 50
2.6建立实现模型 52
2.6.1组件图 52
2.6.2部署图 53
2.7 RUP统一过程及其应用 54
2.7.1 UML与RUP统一过程 54
2.7.2 RUP的二维开发模型 56
2.7.3 RUP的迭代开发模式 58
小结 59
习题二 59
第3章 软件需求工程 63
3.1软件需求的基本概念 63
3.1.1软件需求的任务 63
3.1.2功能需求与非功能需求 64
3.2需求工程过程 66
3.2.1需求工程的基本活动 66
3.2.2获取需求 66
3.2.3需求分析与建模 67
3.2.4需求的有效性验证 68
3.2.5需求管理 69
3.3软件需求获取技术 70
3.3.1面谈法 70
3.3.2问卷调查法 70
3.3.3需求专题讨论会 71
3.3.4原型法获取需求 71
3.3.5面向用例的方法 72
3.4需求分析与建模技术 73
3.4.1需求分析方法 73
3.4.2结构化分析(SA)方法 74
3.4.3面向对象的分析(OOA)方法 79
3.5软件需求案例分析 82
3.5.1案例1——用SA法建立需求模型 82
3.5.2案例2——用OOA法建立需求模型 84
小结 87
习题二 88
第4章 软件设计 91
4.1软件设计概述 91
4.1.1软件设计在开发阶段中的重要性 91
4.1.2软件设计阶段的任务 92
4.1.3软件设计的目标 92
4.1.4软件设计过程 92
4.2软件体系结构设计 93
4.2.1系统结构性模型——集中式系统模型 93
4.2.2系统结构性模型——层次结构模型 94
4.2.3系统结构性模型——分布式系统模型 95
4.2.4控制模型 100
4.2.5模块分解 101
4.3详细设计描述工具 104
4.4面向对象的设计 105
4.4.1面向对象设计的准则 106
4.4.2面向对象设计的基本任务 106
4.5用户界面设计 108
4.5.1用户界面设计的特性与设计任务 108
4.5.2用户界面设计的基本原则 109
4.5.3用户界面的基本类型 110
4.5.4用户交互设计 111
4.6 MVC设计模式 114
4.7软件设计实例 115
小结 118
习题四 118
第5章 软件构造 121
5.1程序设计语言的选择 121
5.1.1程序设计语言的分类 121
5.1.2高级程序设计语言的基本组成 122
5.1.3程序设计语言选择准则 123
5.2程序设计方法 123
5.2.1结构化程序设计 123
5.2.2面向对象程序设计 125
5.3程序设计风格 127
5.3.1源程序文件 128
5.3.2语句构造方法 129
5.3.3数据说明方法 129
5.3.4输入/输出技术 130
5.4算法与程序效率 130
5.4.1算法转换过程中的指导原则 130
5.4.2影响效率的因素 131
5.5软件代码审查 133
5.6软件复用 134
5.6.1软件复用的级别 134
5.6.2软件复用过程 135
5.6.3可复用构件 135
5.6.4基于复用的开发过程 136
5.6.5构件的组装和复用 137
5.7软件构造实例 137
5.7.1实现环境 137
5.7.2系统编码实现 138
5.7.3用户界面 143
小结 143
习题五 143
第6章 软件测试 145
6.1软件测试概述 145
6.1.1软件测试的基本概念 145
6.1.2软件测试的特点和基本原则 147
6.1.3软件测试过程 149
6.1.4静态分析与动态测试 151
6.2白盒法测试 153
6.2.1语句覆盖 153
6.2.2判定覆盖 154
6.2.3条件覆盖 155
6.2.4判定-条件覆盖 155
6.2.5条件组合覆盖 156
6.3黑盒法测试 157
6.3.1等价分类法 157
6.3.2边界值分析法 158
6.3.3错误推测法 158
6.3.4因果图法 159
6.4软件测试的策略 160
6.4.1单元测试 160
6.4.2集成测试 162
6.4.3确认测试 164
6.4.4系统测试 165
6.4.5 α测试和β测试 166
6.4.6综合测试策略 167
6.5软件调试 167
6.5.1软件调试过程 167
6.5.2软件调试策略 168
6.6面向对象的测试 170
6.6.1面向对象测试的特点 170
6.6.2面向对象测试模型 171
6.6.3面向对象测试类型 171
6.6.4分析模型测试 173
6.6.5面向对象的测试用例 177
6.7自动化测试 177
6.7.1自动化测试概述 178
6.7.2实施自动化测试的前提条件 179
6.7.3自动化测试过程 180
6.7.4自动化测试的原则 182
6.7.5敏捷测试 182
小结 183
习题六 184
第7章 软件维护 186
7.1软件维护的基本概念 186
7.1.1软件维护的目的 186
7.1.2软件维护的分类 186
7.1.3软件维护的特性 187
7.1.4软件维护的代价 188
7.2软件维护的过程 189
7.2.1软件维护的组织和维护过程管理 189
7.2.2维护工作的流程 190
7.3软件维护技术 191
7.4软件可维护性 192
7.4.1软件可维护性的定义 192
7.4.2提高可维护性的方法 193
7.5软件再工程技术 197
7.5.1逆向工程 197
7.5.2软件再工程过程 197
7.5.3再工程的成本及效益分析 198
7.5.4再工程的风险分析 199
小结 199
习题七 199
第8章 软件项目管理 201
8.1软件项目管理概述 201
8.1.1软件项目管理的特点 201
8.1.2软件项目管理的主要活动 202
8.2软件项目可行性研究 203
8.2.1可行性研究的任务 203
8.2.2可行性研究报告 203
8.3软件项目计划 204
8.3.1软件项目计划内容 204
8.3.2软件开发进度计划 205
8.4软件项目成本估算技术 207
8.4.1影响成本估算的因素 207
8.4.2成本估算模型 208
8.4.3成本/效益分析 211
8.5软件项目人力资源管理 211
8.5.1软件团队建设 212
8.5.2团队人员的选择 213
8.6软件项目风险管理 213
8.6.1软件项目风险管理概述 213
8.6.2软件项目风险管理过程 214
8.6.3风险管理的理论和模型 216
8.7软件质量保证 218
8.8软件配置管理 219
8.8.1软件配置管理的基本概念 219
8.8.2软件配置管理的活动 219
小结 222
习题八 222
第9章 软件能力成熟度模型 223
9.1 CMM概述 223
9.1.1软件过程成熟度的基本概念 223
9.1.2软件过程的成熟度等级 224
9.2 CMM的结构 225
9.2.1关键过程域 226
9.2.2关键实践 227
9.2.3共同特性 227
9.3 CMM的实施与评估 227
9.3.1软件过程评估的必要性 228
9.3.2软件过程评估及参考模型 229
9.3.3软件过程改进 231
9.3.4 CMM评估的执行步骤 231
9.3.5软件企业如何实施CMM 234
9.3.6 CMM与ISO 9000标准 236
9.4软件能力成熟度模型集成 237
9.4.1 CMMI的产生与发展 237
9.4.2 CMMI的模型 237
9.4.3 CMMI的评估 239
9.4.4 CMMI与CMM的比较 240
小结 241
习题九 241
第10章 软件工程课程设计 243
10.1课程设计的目的和要求 243
10.2课程设计步骤及安排 243
10.3可视化建模工具Rational Rose 245
10.3.1 Rose工具简介 245
10.3.2绘制业务用例图 246
10.3.3绘制用例图 247
10.3.4绘制类图 248
10.3.5绘制协作图与顺序图 249
10.3.6绘制活动图 250
10.3.7绘制状态图 251
10.3.8绘制构件图和部署图 251
10.4案例分析 252
10.4.1案例一:ATM系统 252
10.4.2案例二:网上拍卖系统 257
10.4.3案例三:会议管理系统 263
10.4.4案例四:仓库信息管理系统 272
参考文献 278