第一篇 软件工程与软件过程 3
第1章 软件工程概述 3
1.1软件工程学的背景和目的 3
1.1.1软件与软件的组成 3
1.1.2软件的特点 4
1.1.3软件的分类 5
1.1.4软件的历史与发展 6
1.1.5软件危机 7
1.1.6软件工程 8
1.2软件开发方法 9
1.3案例——“图书管理系统”项目提出 10
1.4实训——“学生管理系统”项目提出 11
1.4.1实训目的 11
1.4.2实训任务与实训要求 11
1.4.3实训内容与步骤 11
1.4.4实训注意事项 12
1.4.5实训成果 12
习题 12
第2章 过程和生命周期的建模 13
2.1过程的含义 13
2.2软件过程模型 14
2.2.1瀑布模型 14
2.2.2渐近式模型 17
2.2.3过程的迭代 17
2.2.4 V模型 19
2.2.5原型化模型 19
2.3软件开发标准 20
2.3.1国内外标准概述 20
2.3.2软件工程标准的层次 21
2.4案例——“图书管理系统”软件开发计划 23
2.5实训——“学生管理系统”软件开发计划 25
2.5.1实训目的 25
2.5.2实训任务与实训要求 25
2.5.3实训内容与步骤 26
2.5.4实训注意事项 26
2.5.5实训成果 26
习题 26
第3章 可行性研究 28
3.1问题定义与任务 28
3.2可行性研究的步骤 29
3.3系统流程图 30
3.4成本/效益分析 32
3.5案例——“图书管理系统”可行性分析报告 32
3.6实训——“学生管理系统”可行性分析报告 37
3.6.1实训目的 37
3.6.2实训任务与实训要求 37
3.6.3实训内容与步骤 37
3.6.4实训注意事项 39
3.6.5实训成果 39
习题 39
第二篇 传统方法学 43
第4章 需求分析基础 43
4.1需求分析和规格说明阶段的基本概念 43
4.2初步需求获取技术 44
4.2.1访谈与调查问卷 44
4.2.2跟班作业 45
4.2.3组成联合小组 45
4.3需求建模 45
4.4需求规格说明与评审 46
4.4.1需求规格说明书的内容 46
4.4.2需求评审 50
4.5案例——“图书管理系统”需求规格说明书 51
4.6实训——“学生管理系统”需求规格说明书 54
4.6.1实训目的 54
4.6.2实训任务与实训要求 54
4.6.3实训内容与步骤 54
4.6.4实训注意事项 55
4.6.5实训成果 55
习题 55
第5章 面向数据流的分析方法 57
5.1结构化分析概述 57
5.2数据流图 58
5.2.1数据流图的基本成分 59
5.2.2由外向里画数据流图 60
5.2.3分层数据流图 61
5.2.4由顶向下画分层数据流图 63
5.2.5数据流图的改进 64
5.3数据词典 67
5.3.1词典条目的各种类型 67
5.3.2词典条目的实例 70
5.4小说明 71
5.4.1加工的描述 71
5.4.2结构化语言 72
5.4.3判定表 73
5.4.4判定树 75
5.4.5词典的实现 76
5.5 SA方法小结 76
5.6案例——“图书管理系统”数据流图 77
5.7实训——“学生管理系统”数据流图和数据字典 80
5.7.1实训目的 80
5.7.2实训任务与实训要求 80
5.7.3实训内容与步骤 81
5.7.4实训注意事项 81
5.7.5实训成果 81
习题 81
第6章 软件设计基础 82
6.1软件设计概述 82
6.1.1软件设计的任务和步骤 82
6.1.2概要设计的基本概念 83
6.1.3详细设计的基本概念 83
6.2模块化设计 85
6.2.1模块概述 86
6.2.2块间联系和块内联系 88
6.3结构图的改进 93
6.4详细设计的描述方式 95
6.5案例——“图书管理系统”结构图 100
6.6实训——“学生管理系统”结构图 101
6.6.1实训目的 101
6.6.2实训任务与实训要求 101
6.6.3实训内容与步骤 101
6.6.4实训注意事项 101
6.6.5实训成果 101
习题 101
第7章 面向数据流的设计方法 103
7.1基本概念和设计过程 103
7.2变换分析 104
7.3事务分析 106
7.4综合设计 107
7.5 SD方法小结 108
7.6软件设计文档 108
7.6.1概要设计说明书 108
7.6.2详细设计说明书 111
7.7其他设计方法 112
7.8案例——“图书管理系统”概要设计说明书 114
7.9实训——“学生管理系统”概要设计说明书 119
7.9.1实训目的 119
7.9.2实训任务与实训要求 120
7.9.3实训内容与步骤 120
7.9.4实训注意事项 121
7.9.5实训成果 121
习题 121
第8章 程序设计语言和编码 122
8.1程序设计语言 122
8.1.1语言类别 122
8.1.2语言选择 124
8.2 SP方法与编程 125
8.3程序内部文档 125
8.4编程风格 127
8.4.1编码原则 127
8.4.2编程风格 129
8.5程序的效率 132
8.6程序设计自动化 133
8.7案例——“图书管理系统”详细设计说明书 133
8.8实训——“学生管理系统”详细设计说明书 137
8.8.1实训目的 137
8.8.2实训任务与实训要求 137
8.8.3实训内容与步骤 137
8.8.4实训注意事项 138
8.8.5实训成果 138
习题 138
第9章 检验和测试方法 139
9.1检验的基本概念 139
9.1.1概述 139
9.1.2软件检验手段 140
9.2软件评审 141
9.2.1评审过程 141
9.2.2评审条款 142
9.3测试的基本概念 144
9.4白盒法 145
9.4.1概述 145
9.4.2语句覆盖 146
9.4.3判定覆盖 146
9.4.4条件覆盖 147
9.4.5判定/条件覆盖 147
9.4.6条件组合覆盖 148
9.5黑盒法 148
9.5.1等价分类法 149
9.5.2边缘值分析法 151
9.5.3因果图法 152
9.5.4错误推测法 153
9.5.5综合策略 154
9.6测试步骤 155
9.7单元测试 155
9.7.1单元测试概述 155
9.7.2单元测试的方法 156
9.8联合测试 157
9.9有效性测试 160
9.10系统测试 160
9.11综合测试文档 161
9.12案例——“图书管理系统”测试分析报告 163
9.13实训——“学生管理系统”测试分析报告 165
9.13.1实训目的 165
9.13.2实训任务与实训要求 166
9.13.3实训内容与步骤 166
9.13.4实训注意事项 166
9.13.5实训成果 167
习题 167
第10章 软件维护 168
10.1维护的基本概念 168
10.2维护的种类 169
10.3维护的步骤与方法 170
10.3.1维护步骤 170
10.3.2维护方法 171
10.4可维护性 172
10.4.1决定软件可维护性的因素 172
10.4.2可维护性复审 174
10.5维护工作的管理 175
10.5.1维护的管理和组织 175
10.5.2维护报告 176
10.6维护的副作用 177
10.7软件维护文档 178
10.8案例——“图书管理系统”软件维护手册 181
10.9实训——“学生管理系统”软件维护手册 185
10.9.1实训目的 185
10.9.2实训任务与实训要求 185
10.9.3实训内容与步骤 185
10.9.4实训注意事项 186
10.9.5实训成果 186
习题 186
第三篇 面向对象方法学 189
第11章 统一建模语言 189
11.1面向对象方法概述 189
11.1.1面向对象方法的特点 189
11.1.2面向对象的概念 190
11.2 UML概述 191
11.2.1UML的特点 192
11.2.2 UML的构成 192
11.2.3 UML与RUP 192
11.3 UML的视图 193
11.4 UML的模型元素 194
11.4.1事物 194
11.4.2关系 195
11.5 UML的模型图 195
11.5.1用例图 195
11.5.2类图 198
11.5.3对象图 202
11.5.4包图 202
11.5.5状态图 203
11.5.6活动图 204
11.5.7 顺序图 205
11.5.8协作图 205
11.5.9组件图 206
11.5.10配置图 207
11.6 UML的公共机制 209
11.6.1注释 209
11.6.2修饰 209
11.6.3规格说明 209
11.6.4通用划分 209
11.6.5扩展机制 209
习题 210
第12章 面向对象分析 211
12.1需求分析与用例建模 211
12.1.1用例建模概述 211
12.1.2确定系统的范围和边界 211
12.1.3确定系统的参与者 212
12.1.4确定系统的用例 212
12.1.5描述用例 213
12.1.6用例分类,确定用例之间的关系 214
12.1.7定义用例图的层次结构 214
12.1.8软件需求分析规格说明书 214
12.2活动图建模 216
12.3系统分析与建模 217
12.3.1建立对象类静态模型 217
12.3.2建立对象类动态模型 220
12.3.3建立系统功能模型 220
12.3.4系统分析规格说明书 221
12.4面向对象分析案例 222
12.4.1需求分析与系统功能 222
12.4.2创建用例模型 222
12.4.3用例描述与活动图建模 226
12.4.4创建对象类静态模型 229
习题 233
第13章 面向对象设计 234
13.1面向对象设计方法 234
13.1.1面向对象设计概述 234
13.1.2系统分解 234
13.1.3系统设计规格说明书 235
13.2对象类动态模型建模 237
13.2.1交互模型建模 237
13.2.2状态模型建模 239
13.3系统体系结构建模 240
13.3.1软件系统体系结构模型 241
13.3.2硬件系统体系结构模型 242
13.3.3组件图建模 242
13.3.4配置图建模 244
13.4面向对象设计案例 245
13.4.1创建动态模型 245
13.4.2创建系统体系结构模型 252
习题 253
第14章 面向对象软件开发工具——Rational Rose 254
14.1 Rational Rose简介 254
14.2 Rational Rose的安装、启动与退出 255
14.2.1 Rational Rose安装前的准备工作 255
14.2.2 Rational Rose的安装 255
14.2.3 Rational Rose的启动与退出 260
14.3 Rational Rose的界面操作 260
14.3.1如何创建新模型 260
14.3.2 Rational Rose的主界面 262
14.3.3 Rational Rose建模 266
14.4创建用例图 268
14.4.1打开用例图窗口 268
14.4.2用例图工具栏 268
14.4.3添加参与者与用例 269
14.4.4设置属性 269
14.4.5添加关系 270
14.5创建类图 271
14.5.1类图编辑窗口 271
14.5.2创建类 272
14.5.3建立类之间的关系 274
14.6创建包图 277
14.6.1创建包 278
14.6.2设置包的属性 278
14.6.3在包中添加元素 279
14.6.4添加包信息 279
14.6.5添加包之间的依赖关系 279
14.7创建状态图 280
14.7.1状态图编辑窗口 280
14.7.2状态图建模 280
14.8创建活动图 283
14.8.1活动图编辑窗口 283
14.8.2活动图建模 284
14.9创建顺序图 285
14.9.1 顺序图编辑窗口 285
14.9.2 顺序图建模 286
14.10创建协作图 289
14.10.1协作图编辑窗口 290
14.10.2协作图建模 290
14.11创建组件图 292
14.11.1组件图编辑窗口 293
14.11.2组件图建模 294
14.12创建配置图 297
14.12.1配置图编辑窗口 297
14.12.2配置图建模 297
14.13 Rational Rose的双向工程 300
14.13.1双向工程概述 300
14.13.2正向工程——Java代码生成 300
14.13.3逆向工程——Java模型重建 304
14.14数据库设计建模 306
14.14.1设置DBMS 306
14.14.2创建数据库关系模式 307
14.14.3生成数据库代码 312
14.14.4数据库建模的逆向工程 315
习题 317
第四篇 软件项目管理 321
第15章 Project入门 321
15.1 Project简介 321
15.2启动Project Professional 321
15.3视图 324
15.4报表 328
15.5创建新项目计划 331
15.6设置非工作日 332
15.7输入项目属性 333
习题 333
第16章 软件项目介绍 334
16.1项目管理背景 334
16.2项目定义及其特征 334
16.2.1软件项目特征综述 335
16.2.2软件项目要素组成 335
16.3软件项目的生命周期 336
16.4国内外软件项目现状 337
习题 339
第17章 软件项目管理 340
17.1项目管理概述 341
17.1.1项目管理定义 342
17.1.2项目管理类型 342
17.1.3项目管理的特征及重要性 343
17.2软件项目管理过程 343
17.2.1项目范围确定 344
17.2.2项目计划 344
17.2.3项目跟踪控制 344
17.2.4项目结束过程 344
17.3软件项目管理面对的问题 345
17.3.1常见的问题 345
17.3.2潜在的问题 345
17.4软件项目管理的范围 346
17.4.1项目管理五要素 346
17.4.2战术意义上的项目管理 346
17.4.3战略意义上的项目管理 346
17.5过程管理与软件项目管理的关系 347
17.5.1过程定义 347
17.5.2过程管理在软件项目中的作用 348
17.5.3过程管理与项目管理的关系 349
17.6项目管理资格认证 350
习题 350
第18章 软件工程管理与技术 351
18.1软件工程管理概述 351
18.1.1管理的目的与内容 351
18.1.2软件估算 352
18.2软件项目特点、管理的特殊性及软件管理功能 358
18.2.1软件项目的特点 358
18.2.2软件管理的功能 359
18.2.3确定软件项目的工作范围 359
18.2.4软件管理方案 359
18.3软件配置管理 360
18.3.1基线 360
18.3.2软件配置项(SCI) 361
18.3.3软件配置管理(SCM)过程 362
18.4成本估计 365
18.4.1参数方程 365
18.4.2标准值法 366
18.4.3 COCOMO模型 368
18.5进度计划 371
18.5.1Gantt图(甘特图) 371
18.5.2工程网络 372
18.5.3估算进度 373
18.5.4关键路径 375
18.5.5机动时间 375
18.6人员组织 377
18.6.1程序设计小组的组织 377
18.6.2主程序员组 378
习题 379
第19章 软件项目计划与管理 380
19.1软件项目计划 380
19.1.1项目计划内容 380
19.1.2项目报告 381
19.1.3变动控制 382
19.2软件度量 382
19.2.1度量、测量和估算 382
19.2.2面向过程软件度量 383
19.2.3面向对象软件度量 384
19.3软件质量度量 385
19.3.1软件质量定义及三层次度量模型 385
19.3.2软件质量要素 386
19.4软件复杂性度量 388
19.4.1软件复杂性及度量原则 388
19.4.2结构复杂性度量 388
19.4.3基于U M L的类复杂性度量 390
19.5软件可靠性度量 390
19.5.1软件可靠性的概念 391
19.5.2软件可靠性估算 391
19.6软件开发过程管理 392
19.6.1风险分析 392
19.6.2进度安排 392
19.6.3软件开发人员的组织与分工 393
19.6.4软件项目的开发过程管理 394
19.7软件能力成熟度模型 394
19.7.1概述 395
19.7.2能力成熟度模型 397
19.7.3能力成熟度集成模型 404
19.7.4我国软件能力评估标准的制定与实施 406
19.8确定软硬件资源 408
19.8.1人力资源 409
19.8.2硬件 409
19.8.3软件 409
19.9质量保证 410
19.9.1软件质量 410
19.9.2质量保证措施 411
习题 412
第五篇 高级课题 415
第20章 软件重用技术 415
20.1软件重用 415
20.1.1软件重用的概念 415
20.1.2软件重用的发展历史和重用过程 415
20.1.3软件重用的方法和主要实现途径 417
20.2软构件技术 418
20.2.1构件技术的概念 418
20.2.2可复用构件的设计准则 418
20.2.3 JavaBeans构件模型 419
20.3领域工程 420
20.3.1域工程 420
20.3.2域分析 421
20.3.3域模型 422
20.3.4域分析方法 422
20.3.5领域分析过程框架 423
20.3.6领域分析过程的UML描述 424
20.3.7域设计 425
20.3.8域实现 425
20.4软构件库的开发 425
20.4.1构件库的基本概念 425
20.4.2构件库设计与实现 426
20.5面向对象的软件重用技术 430
20.6软件重用度量 431
习题 432
第21章 设计模式 433
21.1设计模式简介 433
21.2 GoF的23种设计模式内容 433
21.2.1创建型设计模式 434
21.2.2结构型设计模式 437
21.2.3行为型设计模式 441
21.2.4非GoF的设计模式 448
21.3对设计模式的理解 449
21.3.1对面向对象的基本原则的领悟 449
21.3.2讨论几个具体的模式 450
21.3.3模式在开发平台中的应用 451
21.4设计模式表述的设计原则 452
21.4.1通用职责分配软件模式 452
21.4.2比模式更重要的是原则——设计原则 456
21.4.3更高层次的设计原则 460
21.5如何使用设计模式 461
21.5.1使用设计模式的方式 461
21.5.2一个项目案例 461
习题 462
第22章 敏捷开发 463
22.1敏捷开发 463
22.2极限编程 465
22.3 XP过程中的各个阶段 468
22.3.1计划 468
22.3.2测试驱动 471
22.3.3重构 473
习题 477
附录A软件工程标准化文档 478
A.1可行性分析报告的正文格式 478
A.2软件开发计划的正文格式 480
A.3系统/子系统需求规格说明(SSS)的格式 486
A.4软件测试报告(STR)的格式 492
参考文献 494