第一篇软件工程与软件过程
第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.4V模型/19
2.2.5原型化模型/19
2.3软件开发标准/20
2.3.1国内外标准概述/20
2.3.2软件工程标准的层次/21
2.4案例——“图书管理系统”软件开发计划/232.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
第二篇传统方法学
第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.5SA方法小结/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.5SD方法小结/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.2SP方法与编程/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
第三篇面向对象方法学
第11章统一建模语言/189
11.1面向对象方法概述/189
11.1.1面向对象方法的特点/189
11.1.2面向对象的概念/190
11.2UML概述/191
11.2.1UML的特点/192
11.2.2UML的构成/192
11.2.3UML与RUP/192
11.3UML的视图/193
11.4UML的模型元素/194
11.4.1事物/194
11.4.2关系/195
11.5UML的模型图/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.6UML的公共机制/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.1Rational Rose简介/254
14.2Rational Rose的安装、启动与退出/255
14.2.1Rational Rose安装前的准备工作/255
14.2.2Rational Rose的安装/255
14.2.3Rational Rose的启动与退出/260
14.3Rational Rose的界面操作/260
14.3.1如何创建新模型/260
14.3.2Rational Rose的主界面/262
14.3.3Rational 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.13Rational 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
第四篇软件项目管理
第15章Project入门/321
15.1Project简介/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.3COCOMO模型/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基于UML的类复杂性度量/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第五篇高 级 课 题
第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.3JavaBeans构件模型/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.2GoF的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.3XP过程中的各个阶段/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
