第一篇 软件工程与需求分析 1
第1章 软件工程概述 1
1.1软件的概念、特性和分类 1
1.1.1软件概念的涵义 1
1.1.2软件的分类方法 2
1.2软件的发展与软件危机 4
1.2.1软件的发展历程 4
1.2.2软件危机的产生及其原因 5
1.2.3缓解软件危机的途径 8
1.3软件过程及其基本活动 8
1.3.1软件过程的概念与组成时期 8
1.3.2软件过程中的各个过程 10
1.3.3软件过程的基本活动 11
1.4软件过程模型 12
1.4.1瀑布模型 13
1.4.2原型模型 14
1.4.3增量模型 15
1.4.4螺旋模型 16
1.4.5形式化方法模型 18
1.4.6构件组装模型 18
1.4.7基于面向对象的模型 19
1.4.8统一过程模型 19
1.4.9基于第四代技术的模型 21
1.5软件工程 22
1.5.1软件工程概念的涵义与组成要素 22
1.5.2软件工程的基本目标与基本要求 23
1.6软件工程的开发过程与开发方法 25
1.6.1软件工程的开发过程 25
1.6.2软件工程的开发方法 26
本章小结 28
思考题 28
第2章 软件项目可行性分析 29
2.1软件可行性分析概述 29
2.1.1可行性分析的必要性、目的与任务 29
2.1.2软件可行性分析的步骤 30
2.2软件可行性分析的主要内容 32
2.2.1技术可行性分析 32
2.2.2经济可行性分析 33
2.3方案选择与可行性分析报告 36
2.3.1方案选择 36
2.3.2可行性分析报告 37
本章小结 38
思考题 38
第3章 软件需求分析 39
3.1软件需求概述 39
3.1.1软件需求的涵义与三个层次 39
3.1.2需求分析的涵义与重要性 40
3.1.3需求分析的难点与任务 41
3.1.4需求分析的原则 42
3.2需求收集 43
3.2.1需求收集的内容 43
3.2.2需求收集的方法 44
3.3需求分析过程 46
3.3.1需求分析过程的步骤 46
3.3.2需求分析阶段的描述工具 48
3.4软件需求分析技术 50
3.4.1需求建模技术 50
3.4.2快速原型技术 53
3.5需求规格及其评审 55
3.5.1软件需求规格 55
3.5.2软件需求规格的内容 56
3.5.3软件需求规格的评审 57
3.6软件需求管理 58
3.6.1软件需求管理的任务 58
3.6.2软件需求管理的工具 59
3.6.3需求变更 61
3.6.4需求跟踪 62
本章小结 64
思考题 64
第4章 软件开发工具与环境 65
4.1软件开发工具概述 65
4.1.1软件开发工具的功能 65
4.1.2软件开发工具的性能 66
4.1.3软件开发工具的分类与发展 67
4.1.4软件开发工具的比较因素 69
4.2两种常用软件开发工具 72
4.2.1 Rational Rose 72
4.2.2 Power Designer 76
4.3软件开发环境 78
4.3.1软件开发环境的涵义与特点 78
4.3.2软件开发环境的构成和分类 79
4.3.3计算机辅助软件工程 80
本章小结 86
思考题 86
第二篇 软件设计的方法与技术 87
第5章 软件设计方法概述 87
5.1软件设计的概念与基本原理 87
5.1.1软件设计的涵义、意义与特征 87
5.1.2软件设计的基本原理 88
5.1.3软件设计的目标 90
5.1.4软件设计的任务 91
5.2软件设计的过程与方法 93
5.2.1软件设计的过程 93
5.2.2软件设计的常用方法 94
5.3软件体系结构 95
5.3.1软件体系结构及相关概念的涵义 95
5.3.2软件体系结构设计的作用任务与原则 96
5.3.3软件体系结构的描述和图形表示 99
5.3.4软件体系结构的风格 100
5.4常见的软件开发模型 104
5.4.1系统构成模型 104
5.4.2系统控制模型 105
5.4.3包装程序设计模型 106
5.4.4创建型模型 106
5.4.5软件的模块化设计 107
本章小结 108
思考题 108
第6章 软件的总体设计与详细设计 109
6.1软件的总体设计 109
6.1.1软件总体设计的概念、任务和目标 109
6.1.2软件总体设计的原则 110
6.1.3软件总体设计的方法与步骤 111
6.1.4总体设计中的模块划分 112
6.1.5软件总体设计文件与复审 114
6.2软件的详细设计 115
6.2.1软件详细设计的概念、任务和原则 115
6.2.2软件详细设计的方法和工具 116
6.2.3软件详细设计的过程 117
6.2.4详细设计中的四种建模 118
6.2.5软件详细设计规格说明与复审 120
本章小结 121
思考题 122
第7章 结构化开发方法 123
7.1结构化开发方法概述 123
7.1.1结构化开发方法的涵义、特点及优点与问题 123
7.1.2结构化分析与设计的一般步骤 124
7.2结构化分析方法 125
7.2.1结构化分析的基本原则 125
7.2.2结构化分析的工具之一:数据流图 125
7.2.3结构化分析工具之二:数据词典 126
7.2.4结构化分析工具之三:加工逻辑描述工具 128
7.2.5结构化分析模型 130
7.3结构化设计方法 131
7.3.1结构化设计方法简述 131
7.3.2数据流图的类型 131
7.3.3变换分析设计及其步骤 132
7.3.4事务分析设计及其步骤 133
7.3.5混合型设计与设计后的处理 134
7.3.6结构化设计建模 135
7.4面向数据结构的设计方法 137
7.4.1 Jackson方法 137
7.4.2 Warnier方法 138
本章小结 140
思考题 140
第8章 面向对象的开发方法 141
8.1面向对象方法概述 141
8.1.1面向对象的定义和特点 141
8.1.2面向对象的基本概念 142
8.2面向对象分析 144
8.2.1面向对象分析的目标、任务与原则 144
8.2.2面向对象分析的过程 145
8.3面向对象建模 146
8.3.1面向对象建模概要 146
8.3.2面向对象的三种模型 147
8.3.3三种模型之间的关系 148
8.3.4统一建模语言UML 149
8.4面向对象设计 151
8.4.1从面向对象分析到面向对象设计 151
8.4.2面向对象设计的目标和准则 152
8.4.3面向对象设计的步骤和经验性规则 154
8.4.4问题域子系统的设计 156
8.4.5任务管理系统的设计 157
8.4.6数据管理系统的设计 157
本章小结 158
思考题 158
第9章 人机交互界面设计 159
9.1人机界面设计概述 159
9.1.1人机界面设计是一门综合艺术 159
9.1.2人机界面设计需要考虑人的因素 160
9.1.3人机界面设计的原则与要求 162
9.1.4人机界面设计的标准与风格 164
9.2人机界面设计的主要内容 164
9.2.1软件界面设计内容概论 164
9.2.2字符界面设计 165
9.2.3对话框设计与多窗口界面设计 167
9.2.4数据输入界面设计 168
9.3人机界面设计方法 169
9.3.1界面设计任务分析的方法与步骤 169
9.3.2人机界面设计的过程 169
9.3.3人机界面设计的有关模型 170
9.3.4界面设计中有关问题的把握 170
9.3.5界面设计原型的技巧 171
9.3.6人机界面设计的评估 172
本章小结 173
思考题 173
第10章 软件重用技术 174
10.1软件重用概述 174
10.1.1软件重用涵义、层次、分类及特点 174
10.1.2软件重用的历史和意义 176
10.1.3软件重用机会的识别 176
10.2域工程 177
10.2.1域工程的概念与特征 177
10.2.2域工程的目的、内容与步骤 178
10.2.3域分析 179
10.2.4域建模和实现 180
10.3构件库的开发 181
10.3.1可重用构件的开发 181
10.3.2对构件库的严密管理 183
10.3.3构件的修改与合成 185
10.4面向对象的软件重用 185
10.4.1类构件的重用方式 185
10.4.2类库的构造、检索与合成 186
本章小结 187
思考题 187
第三篇 软件编码、测试与维护 188
第11章 软件编码 188
11.1编码概述 188
11.1.1编码及编码的目的 188
11.1.2编码的标准与规范 189
11.1.3编码的质量要求 190
11.1.4编码途径 191
11.1.5编码工具 194
11.2编码语言 195
11.2.1编码语言的发展 195
11.2.2编码语言的基本成分 196
11.2.3编码语言的特性 197
11.2.4编码语言的分类 199
11.2.5编码语言的选择 200
11.3编码风格 201
11.3.1注重编码风格的意义 201
11.3.2语句结构 201
11.3.3源文档程序化 203
11.3.4数据说明 204
11.3.5输入与输出 204
本章小结 205
思考题 205
第12章 软件测试 206
12.1软件测试概述 206
12.1.1软件测试的概念、目的与类型 206
12.1.2测试与软件开发各个阶段的关系 208
12.1.3软件测试应遵循的原则 209
12.2软件测试方法 210
12.2.1静态测试法 210
12.2.2白盒测试法 212
12.2.3黑盒测试法 215
12.3软件测试步骤 219
12.3.1单元测试 219
12.3.2集成测试 220
12.3.3确认测试 222
12.3.4系统测试 224
12.3.5人工测试 225
12.4软件测试自动化 226
12.4.1软件测试自动化概述 226
12.4.2软件测试自动化的过程 226
12.4.3软件测试自动化的优缺点 228
12.4.4自动化测试工具 230
12.5软件的纠错 232
12.5.1软件纠错与测试的区别 233
12.5.2软件纠错的基本原则 234
12.5.3软件纠错的主要方法 234
12.5.4纠错的过程 236
12.5.5纠错的辅助手段 237
本章小结 237
思考题 238
第13章 软件维护 239
13.1软件维护概述 239
13.1.1软件维护的概念与特点 239
13.1.2软件维护的分类 240
13.1.3软件维护的成本问题 241
13.1.4软件维护中的典型问题 242
13.1.5软件维护的副作用 243
13.2软件维护的过程 244
13.2.1组建维护机构 244
13.2.2编写维护报告 245
13.2.3记录维护流程 246
13.2.4保存维护记录 247
13.2.5评价维护活动 248
13.3软件的可维护性 248
13.3.1软件可维护性的概念及意义 248
13.3.2软件可维护性的度量 248
13.3.3可维护性复审 250
13.4提高软件可维护性的方法 251
13.4.1建立明确的软件质量目标和优先级 251
13.4.2使用提高软件质量的技术和工具 252
13.4.3进行明确的质量保证审查 253
13.4.4选择可维护性的程序设计语言 254
13.4.5改进程序的文档 255
13.5软件再工程 256
13.5.1软件再工程的概念和具体目标 256
13.5.2软件再工程的方法 256
13.5.3软件再工程的活动 257
13.5.4软件再工程的风险 260
本章小结 261
思考题 261
第四篇 软件工程项目管理 262
第14章 软件项目组织与人力资源管理 262
14.1软件项目管理概述 262
14.1.1软件项目管理的涵义、特点、目的与意义 262
14.1.2软件项目管理的主要活动 264
14.1.3软件项目管理的主要内容 265
14.1.4软件项目管理的常用工具介绍 266
14.1.5保证项目成功的重要管理技巧 268
14.2软件项目组织 270
14.2.1项目组织结构模式和小组组织形式 270
14.2.2项目组织必备角色及成员配备规划 272
14.2.3项目管理委员及各小组的组建 273
14.3软件项目人力资源管理 274
14.3.1软件项目人力资源管理的意义与原则 274
14.3.2软件项目负责人的选择 275
14.3.3软件项目参与人员的选择 276
14.3.4软件项目中的团队建设 277
14.3.5对软件项目成员的激励 279
本章小结 281
思考题 281
第15章 软件项目计划与进度控制 282
15.1软件项目计划 282
15.1.1软件项目计划的意义与作用 282
15.1.2软件项目计划的过程 283
15.1.3软件项目计划的任务 284
15.1.4软件项目计划的内容 287
15.1.5软件项目的估算 288
15.2软件项目进度控制 291
15.2.1软件项目进度控制的依据 291
15.2.2任务分解与工作量的确定 292
15.2.3项目开发进度计划与进度安排 293
15.2.4项目进度跟踪与控制 295
本章小结 296
思考题 296
第16章 软件质量管理 297
16.1软件质量管理概述 297
16.1.1软件质量的涵义与构成要素 297
16.1.2软件质量管理的特点原则 300
16.1.3影响软件质量的因素与质量管理的困难 301
16.1.4提高软件质量的一般方法 302
16.2软件可靠性与复杂性分析 303
16.2.1软件可靠性分析 303
16.2.2软件复杂性分析 307
16.3软件质量保证 309
16.3.1软件质量保证的涵义与主要任务 309
16.3.2软件质量保证活动 310
16.4软件质量认证体系 312
16.4.1质量管理体系中的国际标准:ISO 9000系列 312
16.4.2 ISO 9000系列标准 312
16.4.3质量认证及其实施 314
16.4.4能力成熟度模型 317
16.5软件工程标准化管理 320
16.5.1软件工程标准化的意义与标准分类 320
16.5.2软件工程标准化的层次 322
16.5.3软件工程标准的制定与推行 323
16.5.4中国的软件工程标准 323
本章小结 324
思考题 325
第17章 软件配置管理 326
17.1软件配置管理概述 326
17.1.1软件配置管理的涵义与意义 326
17.1.2软件配置管理的模式及常用术语 328
17.1.3软件配置管理的对象:软件配置项 331
17.1.4软件配置管理的工具 332
17.1.5软件配置管理系统 336
17.2软件配置管理过程 338
17.2.1软件配置管理流程 338
17.2.2标识配置对象 340
17.2.3版本控制与变更控制 340
17.2.4配置审核与配置状态记录 341
本章小结 342
思考题 342
第18章 软件项目风险管理 343
18.1软件风险概述 343
18.1.1软件风险的涵义和类别 343
18.1.2软件风险的识别方法 345
18.2软件风险管理 347
18.2.1软件风险检查 347
18.2.2软件风险的预测 347
18.2.3软件风险的评估 348
18.2.4软件风险的监控与规避 350
18.2.5软件风险的综合处理 351
本章小结 352
思考题 353
参考文献 354