第1篇 软件工程与软件过程 1
第1章 软件工程概述 1
1.1软件工程学的背景和目的 1
1.1.1软件与软件的组成 1
1.1.2软件的特点 2
1.1.3软件的分类 3
1.1.4软件的历史与发展 4
1.1.5软件危机 5
1.1.6软件工程 6
1.2软件开发方法 7
习题 8
第2章 过程和生命周期的建模 9
2.1过程的含义 9
2.2软件过程模型 10
2.2.1瀑布模型 10
2.2.2渐近式模型 13
2.2.3过程的迭代 13
2.2.4V模型 15
2.2.5原型化模型 16
2.3软件开发标准 16
2.3.1国内外标准概述 16
2.3.2软件工程标准的层次 18
习题 19
第3章 可行性研究 20
3.1可行性研究的任务 20
3.1.1问题的定义 20
3.1.2可行性研究的任务 21
3.2可行性研究的步骤 22
3.3系统流程图 24
3.4成本/效益分析 26
3.4.1系统开发成本的计算 26
3.4.2成本/效益分析 27
习题 29
第2篇 传统方法学 30
第4章 需求分析基础 30
4.1需求分析和规格说明阶段的基本概念 30
4.2初步需求获取技术 31
4.2.1访谈与调查问卷 31
4.2.2跟班作业 32
4.2.3组成联合小组 32
4.3需求建模 32
4.4需求规格说明与评审 33
4.4.1需求规格说明书的内容 33
4.4.2需求评审 37
习题 37
第5章 面向数据流的分析方法 39
5.1结构化分析概述 39
5.2数据流图 40
5.2.1数据流图的基本成分 41
5.2.2由外向里画数据流图 42
5.2.3分层数据流图 43
5.2.4由顶向下画分层数据流图 45
5.2.5数据流图的改进 46
5.3数据词典 49
5.3.1词典条目的各种类型 49
5.3.2词典条目的实例 52
5.4小说明 53
5.4.1加工的描述 53
5.4.2结构化语言 54
5.4.3判定表 56
5.4.4判定树 57
5.4.5词典的实现 58
5.5SA方法小结 58
习题 59
第6章 软件设计基础 60
6.1软件设计概述 60
6.1.1软件设计的任务和步骤 60
6.1.2概要设计的基本概念 61
6.1.3详细设计的基本概念 61
6.2模块化设计 64
6.2.1模块概述 64
6.2.2块间联系和块内联系 66
6.3结构图的改进 72
6.4详细设计的描述方式 74
习题 80
第7章 面向数据流的设计方法 81
7.1基本概念和设计过程 81
7.2变换分析 82
7.3事务分析 85
7.4综合设计 85
7.5SD方法小结 86
7.6软件设计文档 86
7.6.1概要设计说明书 86
7.6.2详细设计说明书 89
7.7其他设计方法 91
习题 92
第8章 程序设计语言和编码 94
8.1程序设计语言 94
8.1.1语言类别 94
8.1.2语言选择 96
8.2SP方法与编程 97
8.3程序内部文档 98
8.4编程风格 99
8.4.1编码原则 99
8.4.2编程风格 101
8.5程序的效率 104
8.6程序设计自动化 105
习题 106
第9章 检验和测试方法 107
9.1检验的基本概念 107
9.1.1概述 107
9.1.2软件检验手段 108
9.2软件评审 109
9.2.1评审过程 109
9.2.2评审条款 111
9.3测试的基本概念 112
9.4白盒法 113
9.4.1概述 113
9.4.2语句覆盖 114
9.4.3判定覆盖 115
9.4.4条件覆盖 115
9.4.5判定/条件覆盖 115
9.4.6条件组合覆盖 116
9.5黑盒法 116
9.5.1等价分类法 117
9.5.2边缘值分析法 119
9.5.3因果图法 120
9.5.4错误推测法 121
9.5.5综合策略 122
9.6测试步骤 123
9.7单元测试 124
9.7.1单元测试概述 124
9.7.2单元测试的方法 125
9.8联合测试 126
9.8.1渐增式和非渐增式 126
9.8.2由顶向下和由底向上渐增式测试 126
9.9有效性测试 128
9.10系统测试 129
9.11综合测试文档 130
习题 131
第10章 软件维护 133
10.1维护的基本概念 133
10.2维护的种类 134
10.3维护的步骤与方法 135
10.3.1维护步骤 135
10.3.2维护方法 136
10.4可维护性 137
10.4.1决定软件可维护性的因素 137
10.4.2可维护性复审 139
10.5维护工作的管理 140
10.5.1维护的管理和组织 140
10.5.2维护报告 141
10.6维护的副作用 142
10.7软件维护文档 143
习题 147
第3篇 面向对象方法学 148
第11章 统一建模语言UML 148
11.1面向对象方法概述 148
11.1.1面向对象方法的特点 148
11.1.2面向对象的概念 149
11.2UML概述 151
11.2.1UML的特点 151
11.2.2UML的构成 151
11.2.3UML与RUP 152
11.3UML的视图 152
11.4UML的模型元素 153
11.4.1事物 153
11.4.2关系 154
11.5UML的模型图 155
11.5.1用例图 155
11.5.2类图 157
11.5.3对象图 161
11.5.4包图 162
11.5.5状态图 163
11.5.6活动图 163
11.5.7顺序图 165
11.5.8协作图 166
11.5.9组件图 166
11.5.10配置图 167
11.6UML的公共机制 168
11.6.1注释 168
11.6.2修饰 169
11.6.3规格说明 169
11.6.4通用划分 169
11.6.5扩展机制 169
习题 169
第12章 面向对象分析 171
12.1需求分析与用例建模 171
12.1.1用例建模概述 171
12.1.2确定系统的范围和边界 172
12.1.3确定系统的参与者 172
12.1.4确定系统的用例 173
12.1.5描述用例 173
12.1.6用例分类,确定用例之间的关系 174
12.1.7定义用例图的层次结构 174
12.1.8软件需求分析规格说明书 174
12.2活动图建模 176
12.3系统分析与建模 177
12.3.1建立对象类静态模型 177
12.3.2建立对象类动态模型 179
12.3.3建立系统功能模型 180
12.3.4系统分析规格说明书 180
12.4面向对象分析案例 181
12.4.1需求分析与系统功能 181
12.4.2创建用例模型 182
12.4.3用例描述与活动图建模 186
12.4.4创建对象类静态模型 189
习题 193
第13章 面向对象设计 194
13.1面向对象设计方法 194
13.1.1面向对象设计概述 194
13.1.2系统分解 194
13.1.3系统设计规格说明书 195
13.2对象类动态模型建模 197
13.2.1交互模型建模 197
13.2.2状态模型建模 199
13.3系统体系结构建模 200
13.3.1软件系统体系结构模型 201
13.3.2硬件系统体系结构模型 202
13.3.3组件图建模 202
13.3.4配置图建模 204
13.4面向对象设计案例 205
13.4.1创建动态模型 205
13.4.2创建系统体系结构模型 212
习题 213
第14章 面向对象软件开发工具——Rational Rose 215
14.1Rational Rose简介 215
14.2Rational Rose的安装、启动与退出 216
14.2.1Rational Rose安装前的准备工作 216
14.2.2Rational Rose的安装 216
14.2.3Rational Rose的启动与退出 221
14.3Rational Rose的界面操作 222
14.3.1如何创建新模型 222
14.3.2Rational Rose的主界面 224
14.3.3Rational Rose建模 228
14.4创建用例图 230
14.4.1打开用例图窗口 230
14.4.2用例图工具栏 231
14.4.3添加参与者与用例 231
14.4.4设置属性 231
14.4.5添加关系 232
14.5创建类图 233
14.5.1类图编辑窗口 233
14.5.2创建类 234
14.5.3建立类之间的关系 237
14.6创建包图 240
14.6.1创建包 240
14.6.2设置包的属性 241
14.6.3在包中添加元素 241
14.6.4添加包信息 241
14.6.5添加包之间的依赖关系 242
14.7创建状态图 242
14.7.1状态图编辑窗口 243
14.7.2状态图建模 243
14.8创建活动图 245
14.8.1活动图编辑窗口 246
14.8.2活动图建模 246
14.9创建顺序图 248
14.9.1顺序图编辑窗口 248
14.9.2顺序图建模 249
14.10创建协作图 252
14.10.1协作图编辑窗口 252
14.10.2协作图建模 253
14.11创建组件图 255
14.11.1组件图编辑窗口 255
14.11.2组件图建模 256
14.12创建配置图 259
14.12.1配置图编辑窗口 260
14.12.2配置图建模 260
14.13Rational Rose的双向工程 262
14.13.1双向工程概述 262
14.13.2正向工程——Java代码生成 263
14.13.3逆向工程——Java模型重建 268
14.14数据库设计建模 269
14.14.1设置DBMS 269
14.14.2创建数据库关系模式 271
14.14.3生成数据库代码 275
14.14.4数据库建模的逆向工程 278
习题 279
第4篇 软件项目管理学 281
第15章 软件项目管理 281
15.1软件度量 281
15.1.1度量、测量和估算 282
15.1.2面向过程软件度量 282
15.1.3面向对象软件度量 283
15.2软件项目估算 285
15.2.1功能点估算 285
15.2.2COCOMO模型 286
15.3软件质量度量 287
15.3.1软件质量定义及三层次度量模型 287
15.3.2软件质量要素 287
15.4软件复杂性度量 289
15.4.1软件复杂性及度量原则 289
15.4.2结构复杂性度量 290
15.4.3基于UML的类复杂性度量 291
15.5软件可靠性度量 292
15.5.1软件可靠性的概念 292
15.5.2软件可靠性估算 293
15.6软件开发过程的管理 293
15.6.1风险分析 293
15.6.2进度安排 294
15.6.3软件开发人员的组织与分工 295
15.6.4软件项目的开发过程管理 295
15.7软件过程及软件能力成熟度模型 296
15.7.1引言 296
15.7.2能力成熟度模型CMM 298
15.7.3能力成熟度集成模型CMMI 306
15.7.4我国软件能力评估标准的制定与实施 309
习题 311
第16章 软件工程管理技术 312
16.1软件工程管理概述 312
16.2软件项目计划 313
16.2.1组织开发团队、申请项目资源 313
16.2.2软件项目开发计划 313
16.2.3项目跟踪和监控计划 316
16.3软件配置管理 317
16.3.1软件配置管理的定义 318
16.3.2实施配置管理的好处 318
16.3.3软件配置管理的主要功能 319
16.3.4软件配置管理的角色与配置过程 321
16.3.5常用的配置管理软件 322
习题 322
第5篇 高级课题 323
第17章 软件重用技术 323
17.1软件重用 323
17.1.1软件重用的概念 323
17.1.2软件重用的发展历史和重用过程 323
17.1.3软件重用的方法和主要实现途径 324
17.2软构件技术 326
17.2.1构件技术的概念 326
17.2.2可复用构件的设计准则 327
17.2.3JavaBeans构件模型 327
17.3领域工程 328
17.3.1域工程 329
17.3.2域分析 329
17.3.3域模型 330
17.3.4域分析方法 330
17.3.5领域分析过程框架 331
17.3.6领域分析过程的UML描述 333
17.3.7域设计 333
17.3.8域实现 333
17.4软构件库的开发 334
17.4.1构件库的基本概念 334
17.4.2构件库设计与实现 334
17.5面向对象的软件重用技术 338
17.6软件重用度量 339
习题 340
第18章 软件工程环境 341
18.1计算机辅助软件工程及CASE工具 341
18.1.1计算机辅助软件工程 341
18.1.2CASE工具 341
18.2软件工程环境介绍 343
18.3需求分析和规格说明工具 345
18.4概要设计工具 347
18.5编程工具 349
18.6测试工具 351
习题 353
第19章 设计模式 354
19.1设计模式简介 354
19.2GoF的23种设计模式内容 354
19.2.1创建型设计模式 355
19.2.2结构型设计模式 358
19.2.3行为型设计模式 362
19.2.4非GoF的设计模式 368
19.3对设计模式的理解 369
19.3.1对面向对象的基本原则的领悟 369
19.3.2讨论几个具体的模式 370
19.3.3模式在开发平台中的应用 372
19.4设计模式表述的设计原则 373
19.4.1通用职责分配软件模式——GRASP 373
19.4.2比模式更重要的是原则——设计原则 377
19.4.3更高层次的设计原则 381
19.5如何使用设计模式 381
19.5.1使用设计模式的方式 381
19.5.2一个项目案例 382
习题 382
第20章 敏捷开发 383
20.1敏捷开发 383
20.1.1敏捷软件开发宣言 383
20.1.2敏捷宣言遵循的原则 384
20.2极限编程 385
20.3XP过程中的各个阶段 388
20.3.1计划 389
20.3.2测试驱动 391
20.3.3重构 393
习题 397
附录A文档格式 398
A.1用户手册 398
A.2操作手册 401
A.3C程序编程工程化约束 403
附录B课程实习项目实例 408
B.1可行性研究报告 408
B.2项目开发计划任务书 411
B.3需求规格说明书 413
B.4概要设计说明书 415
B.5详细设计说明书 422
B.6用户操作手册 426
参考文献 428