第1章 软件工程概述 1
1.1 软件工程的产生和发展 1
1.1.1 软件工程的发展过程 1
1.1.2 软件危机 2
1.1.3 软件工程的定义及研究的内容 3
1.2 软件与软件过程 4
1.2.1 软件的概念和特点 4
1.2.2 软件工程过程 5
1.3 软件过程模型 6
1.4 软件开发方法 9
1.5 软件工具与软件开发环境 11
习题一 12
第2章 软件需求工程 14
2.1 软件需求的基本概念 14
2.1.1 软件需求的任务 14
2.1.2 功能需求与非功能需求 15
2.2 需求工程过程 17
2.3 软件需求获取技术 20
2.4 需求分析与建模 22
2.4.1 结构化分析(SA)方法 22
2.4.2 面向对象的分析方法 28
2.5 软件需求案例分析 29
2.5.1 案例1——医院病房监护系统 29
2.5.2 案例2——网上拍卖系统 31
习题二 33
第3章 软件设计 36
3.1 软件设计概述 36
3.2 软件体系结构设计 38
3.2.1 仓库模型 38
3.2.2 分布式结构 39
3.2.3 其他体系结构 46
3.3 模块分解 46
3.4 详细设计描述工具 53
3.5 用户界面设计 54
3.5.1 用户界面设计的特性与设计任务 55
3.5.2 用户界面设计的基本原则 56
3.5.3 用户界面的基本类型 56
3.5.4 信息输入/输出界面 58
3.5.5 MVC模式 62
习题三 63
第4章 面向对象的方法 65
4.1 面向对象方法概述 65
4.2 面向对象的基本概念 67
4.3 面向对象的分析 69
4.4 面向对象的设计 72
4.5 典型的面向对象方法 74
4.5.1 Booch方法 74
4.5.2 Coad/Yourdon方法 76
4.5.3 对象模型技术 78
4.5.4 OOSE方法 83
习题四 84
第5章 UML统一建模语言 87
5.1 UML概述 87
5.1.1 UML的基本概念 87
5.1.2 UML的图形表示 89
5.2 建立用例模型 92
5.2.1 需求分析与用例建模 92
5.2.2 确定执行者 93
5.2.3 确定用例 95
5.2.4 建立用例之间的关系 97
5.2.5 用例建模实例 98
5.3 建立静态模型 101
5.3.1 类图 101
5.3.2 包图 110
5.4 建立动态模型 111
5.4.1 消息 111
5.4.2 状态图 112
5.4.3 顺序图 115
5.4.4 合作图 117
5.4.5 活动图 119
5.5 建立实现模型 121
5.5.1 构件图 121
5.5.2 配置图 122
5.6 RUP统一过程及其应用 124
5.6.1 UML与RUP统一过程 124
5.6.2 RUP的二维开发模型 126
5.6.3 RUP的迭代开发模式 128
习题五 129
第6章 软件实现 132
6.1 程序设计语言的选择 132
6.2 结构化程序设计 135
6.3 程序设计风格 136
6.4 算法与程序效率 139
6.5 软件代码审查 142
习题六 143
第7章 软件复用和构件技术 144
7.1 软件复用概述 144
7.2 软件复用的实施与过程 147
7.3 可复用构件与构件工程 148
7.4 领域工程分析和基于构件的开发 150
7.5 基于构件的软件开发特点 152
7.6 软件构件技术的技术规范 154
7.6.1 CORBA 154
7.6.2 COM 155
7.6.3 EJB 157
7.6.4 Web服务 159
习题七 161
第8章 软件测试 163
8.1 软件测试概述 163
8.1.1 软件测试的基本概念 163
8.1.2 软件测试的特点和基本原则 165
8.1.3 软件测试过程 167
8.1.4 静态分析与动态测试 169
8.2 白盒法测试 171
8.3 黑盒法测试 175
8.4 软件测试的策略 179
8.4.1 单元测试 179
8.4.2 集成测试 181
8.4.3 确认测试 184
8.4.4 系统测试 185
8.4.5 α测试和β测试 186
8.4.6 综合测试策略 186
8.5 软件调试 187
8.5.1 软件调试过程 187
8.5.2 软件调试策略 187
8.6 面向对象的测试 189
8.6.1 面向对象测试的特点 190
8.6.2 面向对象测试类型 190
8.6.3 分析模型测试 193
8.6.4 面向对象的测试用例 197
习题八 197
第9章 软件维护 198
9.1 软件维护的基本概念 198
9.2 软件维护的过程 201
9.3 软件维护技术 203
9.4 软件可维护性 204
9.4.1 软件可维护性的定义 204
9.4.2 提高可维护性的方法 205
9.5 逆向工程和再工程 209
习题九 211
第10章 软件工具与集成化环境 212
10.1 软件工具 212
10.1.1 软件开发工具 212
10.1.2 软件维护工具 215
10.1.3 软件管理与支持工具 216
10.2 集成化CASE环境 217
10.2.1 概述 217
10.2.2 集成化的CASE开发环境的体系结构 219
10.3 软件开发工具——Rational Rose 224
10.3.1 Rose工具简介 224
10.3.2 业务用例图 225
10.3.3 用例图 226
10.3.4 类图 228
10.3.5 协作图与时序图 229
10.3.6 活动图 231
10.3.7 状态图 231
10.3.8 构件图和部署图 232
习题十 234
第11章 软件项目管理 235
11.1 软件项目管理概述 235
11.2 软件项目可行性研究 237
11.3 软件项目成本估算技术 239
11.4 软件项目组织与人员管理 245
11.5 软件质量保证 248
11.6 企业资源规划 250
习题十一 255
第12章 软件能力成熟度模型 257
12.1 CMM概述 257
12.2 CMM的内部结构 261
12.3 CMM的应用 263
12.4 CMM的实施与评估 265
12.4.1 软件过程评估的必要性 265
12.4.2 软件过程评估参考模型 266
12.4.3 CMM评估的执行步骤 268
12.4.4 软件企业如何实施CMM 271
12.4.5 CMM与ISO 9000标准 273
12.5 软件能力成熟度模型集成 274
习题十二 277
第13章 软件工程课程设计 279
13.1 课程设计的目的和要求 279
13.2 课程设计步骤及安排 279
13.3 案例分析 281
13.3.1 案例一:ATM系统 281
13.3.2 案例二:医院病房监护系统 287
13.3.3 案例三:会议管理系统 293
13.3.4 案例四:仓库信息管理系统 304
参考文献 313