第1章 软件工程概述 1
1.1软件与软件危机 1
1.1.1软件的定义、特点、种类及发展 1
1.1.2软件危机 4
1.2软件工程的概念 5
1.2.1软件工程的定义 6
1.2.2软件工程研究的内容 6
1.2.3软件工程的基本原理 7
1.3软件的开发方法 7
1.3.1结构化方法 7
1.3.2面向数据结构的方法 8
1.3.3面向对象的开发方法 8
1.3.4软件开发新方法 9
1.4软件生存周期 10
1.5软件生存周期模型 11
1.5.1瀑布模型 11
1.5.2原型模型 12
1.5.3增量模型 13
1.5.4螺旋模型 14
1.5.5喷泉模型 17
1.5.6智能模型 18
1.5.7构件组装模型 19
小结 20
习题 20
第2章 可行性分析 22
2.1可行性研究的任务 22
2.2可行性研究的具体步骤 25
2.3可行性研究的文档 26
2.4项目开发计划 27
小结 27
习题 27
第3章 软件需求分析 29
3.1软件需求分析的基本概念 29
3.1.1软件需求分析的任务 29
3.1.2需求分析的过程 30
3.1.3需求分析的困难 31
3.2分析建模 31
3.2.1应该分析什么 31
3.2.2通过什么方式去分析 32
3.2.3需求分析方法 33
3.3结构化分析方法 33
3.4数据流图 34
3.5数据词典 40
3.6加工逻辑说明 41
3.7系统行为建模 43
3.7.1状态图 43
3.7.2 Petri网 44
3.8原型化分析方法 45
3.8.1原型化方法的基本思想 46
3.8.2原型化方法和工具 46
3.8.3采用原型化方法的步骤 46
3.9需求分析文档 47
3.10案例分析——图书馆管理系统 49
3.10.1问题陈述 49
3.10.2图书馆组织结构 50
3.10.3系统业务流程分析 50
3.10.4数据流程图 51
3.10.5数据定义及数据词典 53
3.10.6细化需求规格说明 56
小结 57
习题 57
第4章 软件外部设计——交互设计 60
4.1交互设计概述 60
4.1.1交互设计的概念 60
4.1.2交互设计与界面设计 61
4.1.3交互设计的特征 63
4.1.4交互设计的内容 63
4.1.5怎样进行交互设计 64
4.1.6如何粗略地评估可用性 65
4.2交互设计的方法 65
4.2.1角色设计 65
4.2.2目标设计 66
4.2.3任务设计 67
4.2.4交互样式 68
4.3案例分析——LMS的交互设计 75
小结 77
习题 77
第5章 软件内部设计 79
5.1设计过程 79
5.1.1结构化设计与结构化分析的关系 79
5.1.2设计和软件质量的关系 80
5.2设计概念 80
5.2.1软件设计的观点 80
5.2.2控制层次 83
5.3有效的模块设计 85
5.3.1功能独立性 85
5.3.2内聚性 85
5.3.3耦合 87
5.3.4控制范围与作用范围之间的约束 88
5.4结构化设计方法 89
5.4.1结构化开发方法 89
5.4.2数据流图的分类与典型的系统结构 90
5.4.3变换型系统结构图 91
5.4.4事务型系统结构图 93
5.5详细设计描述工具 95
5.5.1结构化程序设计 95
5.5.2图形设计符号 96
5.6编写软件设计文档 98
5.7案例分析——LMS系统设计 100
5.7.1系统功能设计 100
5.7.2系统环境设计 101
5.7.3数据库设计 102
小结 105
习题 105
第6章 面向对象软件工程基础 107
6.1面向对象的开发方法概述 107
6.1.1类与对象 107
6.1.2继承 108
6.1.3虚函数和多态性 109
6.1.4消息 111
6.1.5方法 112
6.2面向对象开发模型 112
6.2.1面向对象开发模型概述 112
6.2.2建立模型的作用 113
6.2.3创建优质模块 113
6.3面向对象分析 115
6.3.1 SA方法和OOA方法比较 115
6.3.2面向对象分析的特点 115
6.3.3面向对象分析的基本任务 116
6.3.4 OOA过程 117
6.4面向对象设计 119
6.4.1面向对象设计的模型 119
6.4.2面向对象设计的任务 123
6.4.3优质对象系统的属性 125
6.5案例分析——LMS中的产品设计 126
6.5.1面向对象概念化 126
6.5.2耦合 127
6.5.3确定系统的参与者 128
小结 128
习题 128
第7章 统一建模语言 131
7.1 UML概述 131
7.1.1 UML的发展 131
7.1.2 UML的构成 132
7.1.3视图 132
7.1.4 UML的图形表示 134
7.1.5 UML的通用模型元素 135
7.2用例模型 139
7.2.1用例图 139
7.2.2参与者 139
7.2.3用例 141
7.3建立静态模型 145
7.3.1类图 145
7.3.2对象图 151
7.3.3包图 152
7.4动态模型 154
7.4.1对象之间的交互——消息 154
7.4.2状态图 155
7.4.3时序图 158
7.4.4协作图 162
7.4.5活动图 164
7.5实现模型 166
7.5.1构件图 166
7.5.2配置图 168
7.6案例分析——LMS的UML模型 169
7.6.1 UCCD类的分析过程 169
7.6.2 LMS分析 172
7.6.3 LMS设计 178
7.6.4 LMS的交互图 183
小结 187
习题 187
第8章 软件编码与实现 189
8.1程序设计语言 189
8.1.1程序设计语言的分类 189
8.1.2程序设计语言的选择 190
8.2程序设计基础 191
8.2.1结构化程序设计 191
8.2.2程序设计风格 191
8.2.3程序效率 194
8.3编程安全 195
8.3.1保护性编程 195
8.3.2 冗余编程 196
8.4软件实现后编写的文档 196
8.5案例分析——LMS系统实现(编码) 198
8.5.1读者注册系统的实现 198
8.5.2读者留言板的实现 200
小结 203
习题 203
第9章 软件测试 204
9.1软件测试的基本概念 204
9.1.1软件测试的目的和重要性 204
9.1.2软件测试的原则 206
9.1.3软件测试的几个定义 207
9.1.4软件测试的基本步骤 209
9.1.5静态分析与动态测试 209
9.2软件测试的基本方法 210
9.2.1测试用例 210
9.2.2白盒测试 211
9.2.3黑盒测试 214
9.3软件测试的策略 217
9.3.1单元测试 218
9.3.2组装测试 219
9.3.3确认测试 222
9.3.4系统测试 223
9.4排错技术 224
9.4.1排错的原则 225
9.4.2排错方法 226
9.5面向对象的测试 227
9.5.1面向对象测试原理 228
9.5.2面向对象的单元测试 228
9.5.3面向对象的集成测试 229
9.5.4面向对象的确认测试 230
9.6软件测试计划与测试分析报告 230
9.6.1软件测试计划 230
9.6.2测试分析报告 233
9.7 LMS测试 235
9.7.1测试计划 235
9.7.2系统地提出测试用例 237
小结 238
习题 239
第10章 软件维护 241
10.1软件维护的定义、分类、特点 241
10.1.1软件维护的定义 241
10.1.2软件维护的分类 242
10.1.3软件维护的特点 243
10.2软件维护过程及组织 244
10.2.1软件维护过程 244
10.2.2软件维护组织 245
10.3软件的可维护性 246
10.3.1软件的可维护性概念 246
10.3.2影响可维护性的因素 247
10.3.3提高软件可维护性的方法 250
10.3.4软件维护的副作用 253
小结 254
习题 254
第11章 软件复用和构件技术 256
11.1软件复用概述 256
11.1.1软件复用的概念 256
11.1.2软件复用的分类和复用级别 256
11.1.3软件复用的形式 258
11.1.4软件复用的实施过程 258
11.2可复用构件与构件工程 259
11.2.1可复用构件 259
11.2.2基于构件的软件工程 260
11.3领域分析和基于构件的开发 261
11.3.1领域分析 261
11.3.2构件的开发与构件库 261
11.4基于构件的开发 264
小结 265
习题 266
第12章 软件项目计划与管理 267
12.1软件项目管理 267
12.1.1软件项目管理的特点 267
12.1.2软件工程管理的内容 267
12.2软件项目计划 269
12.2.1软件开发进度计划 269
12.2.2软件项目计划内容 269
12.2.3软件项目进度安排 270
12.3项目成本估算 274
12.3.1影响成本估算的因素 274
12.3.2成本估算模型 275
12.3.3 Halstead理论模型 275
12.3.4专家估算模型 275
12.3.5 IBM估算模型 276
12.3.6 Putnam估算模型 276
12.3.7 COCOMO模型 277
12.3.8成本估算方法 279
12.4软件复杂性 279
12.4.1软件复杂性的基本概念 279
12.4.2软件复杂性的度量方法 280
12.5软件可靠性 281
12.5.1软件可靠性定义 281
12.5.2软件可靠性指标 281
12.5.3软件可靠性模型 282
12.6软件能力成熟度模型(CMM) 283
12.6.1 CMM的基本概念 283
12.6.2软件过程的成熟度等级 284
12.6.3在软件企业中实施CMM 285
小结 287
习题 287
第13章 软件工程环境 289
13.1软件工程环境概述 289
13.1.1软件工程环境定义 289
13.1.2软件开发环境的特性 289
13.1.3软件开发环境的分类 290
13.2软件开发工具 291
13.3软件开发工具实例Rational Rose 293
13.3.1 Rose工具简介 293
13.3.2业务用例图 294
13.3.3用例图 295
13.3.4类图 296
13.3.5协作图与时序图 298
13.3.6活动图 299
13.3.7状态图 300
13.3.8构件图和部署图 301
13.3.9正向工程和逆向工程 302
小结 304
习题 304
第14章 软件工程课程设计 305
14.1课程简介 305
14.2课程设计参考案例——音像社信息管理系统 306
14.2.1开发前的准备 306
14.2.2描述企业概图 308
14.2.3系统分析 309
14.2.4系统设计 312
14.2.5系统实施 315
14.2.6系统运行与维护 317
14.3汽车租赁企业信息管理系统 317
14.3.1汽车租赁系统的需求分析 317
14.3.2系统的时序图 322
14.3.3系统的协作图 325
14.3.4系统的状态图 326
14.3.5系统的活动图 327
14.3.6系统中的类 328
14.3.7系统的配置模型与实现模型 330
14.3.8系统实现 332
参考文献 335
后记 336