第一章 软件与软件工程 1
1.1软件 2
1.1.1软件与软件的组成 2
1.1.2软件的特点 3
1.1.3软件的分类 4
1.1.4软件的发展 6
1.1.5软件危机 8
1.2软件工程的概念 10
1.2.1软件工程的定义 10
1.2.2软件工程的目标 11
1.2.3软件工程的原则 13
1.3软件生存周期 14
1.3.1软件定义 14
1.3.2软件开发 16
1.3.3软件使用、维护和退役 18
1.4软件开发模型 19
1.4.1瀑布模型 20
1.4.2原型模型 21
1.4.3螺旋模型 22
1.4.4基于四代技术的模型 23
1.4.5变换模型 24
1.4.6组合模型 25
1.5CASE工具及环境 26
1.5.1计算机辅助软件工程 27
1.5.2CASE工具 27
1.5.3集成化的CASE环境 29
小结 30
习题 30
第二章 软件项目管理 32
2.1软件度量 32
2.1.1度量、测量和估算 33
2.1.2面向规模的度量 34
2.1.3面向功能的度量 35
2.1.4代码行度量与功能点度量的比较 38
2.2软件项目估算 39
2.2.1代码行、功能点和工作量估算 40
2.2.2经验估算模型之一:CoCoMo模型 41
2.2.3经验估算模型之二:Putnam模型 45
2.3软件质量度量 47
2.3.1软件质量定义及三层次度量模型 47
2.3.2软件质量要素 48
2.3.3软件质量要素评价准则 49
2.4软件复杂性度量 54
2.4.1软件复杂性及度量原则 54
2.4.2控制结构的复杂性度量 54
2.4.3文本复杂性度量 55
2.5软件可靠性度量 57
2.5.1软件可靠性的概念 57
2.5.2软件修复和软件有效性 59
2.5.3软件可靠性估算 60
2.6软件开发过程的管理 63
2.6.1风险分析 63
2.6.2进度安排 67
2.6.3软件开发标准 70
2.6.4软件质量保证 72
2.6.5软件开发人员的组织与分工 74
2.6.6软件项目的开发过程管理 76
2.7软件项目管理中的CASE工具 76
小结 77
习题 77
第三章 计算机系统工程 79
3.1计算机系统工程 80
3.1.1硬件和硬件工程 80
3.1.2软件和软件工程 81
3.1.3人机工程 84
3.1.4数据库工程 85
3.2可行性研究 86
3.2.1引言 86
3.2.2经济可行性 87
3.2.3技术可行性 89
3.2.4方案选择 90
3.3系统模型与模拟 92
3.3.1系统模型 92
3.3.2系统建模和模拟 94
3.4系统规格说明及评审 96
3.4.1系统规格说明 96
3.4.2系统规格说明评审 97
小结 97
习题 98
第四章 需求分析基础 99
4.1分析的任务与原则 99
4.2初步需求获取技术 101
4.2.1访谈与会议 101
4.2.2观察用户工作流程 101
4.2.3用户和开发人员共同组成联合小组 102
4.2.4实例分析 102
4.3需求建模 103
4.4问题抽象、问题分解与多视点分析 104
4.5支持需求分析的快速原型技术 105
4.6需求规格说明与评审 106
4.6.1需求规格说明书的目标与内容 106
4.6.2需求评审 109
小结 110
习题 110
第五章 面向数据流的分析方法 114
5.1数据流图与数据字典 114
5.2实体-关系图 117
5.2.1数据对象、属性与关系 117
5.2.2实体-关系图 118
5.3数据流图的实时系统扩充 120
5.3.1Ward&Mellor扩充 120
5.3.2Hatley&Pirhai扩充 122
5.4基于数据流的分析方法 126
5.4.1创建数据流模型 126
5.4.2创建控制流模型 127
5.4.3过程规格说明 128
5.5基于数据流图的需求分析CASE工具 130
5.5.1核心思想 130
5.5.2语言机制 132
5.5.3动态分析 138
5.5.4基于CASE工具的需求分析 139
小结 140
习题 140
第六章 面向对象的需求分析 142
6.1面向对象的概念与思想 142
6.2面向对象的分析方法 144
6.2.1识别对象 144
6.2.2标识对象的属性 146
6.2.3识别对象的行为 147
6.2.4识别对象所属的类 153
6.2.5定义主题词 155
6.2.6多视点需求分析 156
6.3面向对象的需求分析CASE工具 158
6.3.1概述 158
6.3.2对象及消息传递图 159
6.3.3类结构图 161
6.3.4对象状态转换图 161
6.3.5主题词结构图 162
6.3.6基于CASE工具的需求分析 162
小结 163
习题 164
第七章 面向数据的分析方法与形式化方法 165
7.1面向数据结构的系统开发方法 165
7.1.1Warnier图 165
7.1.2DSSD方法 166
7.2Jackson系统开发方法 169
7.2.1标识实体与行为 169
7.2.2生成实体结构图 170
7.2.3创建软件系统模型 171
7.3形式化方法 173
7.3.1主要思想 173
7.3.2形式化规格说明语言简介 175
7.3.3形式化需求描述 176
7.3.4形式化方法的现状与发展趋势 183
小结 184
习题 184
第八章 软件设计基础 186
8.1软件设计过程 186
8.2软件设计基本概念 187
8.2.1抽象与逐步求精 187
8.2.2模块化与信息隐藏 190
8.2.3软件总体结构设计 193
8.2.4数据结构设计 195
8.2.5软件过程设计 196
8.3过程设计技术和工具 197
8.3.1结构化程序设计 197
8.3.2图形表示法 198
8.3.3判定表 200
8.3.4过程设计语言(PDL) 201
8.3.5过程设计工具之比较 204
8.4设计规格说明与评审 205
小结 207
习题 207
第九章 面向数据流的设计方法 209
9.1基本概念和设计过程 209
9.2变换分析 211
9.3事务分析 217
9.4启发式设计策略 221
9.5设计优化原则 223
9.6实时系统设计 224
9.6.1实时系统性能要求 224
9.6.2实时系统设计要素 224
9.6.3实时系统设计方法 225
9.6.4设计实例 227
小结 230
习题 230
第十章 面向对象的设计方法 233
10.1面向对象设计的概念 234
10.1.1对象、操作和消息 234
10.1.2类、实例和继承 235
10.1.3对象描述 235
10.2面向对象的设计方法 236
10.2.1主体部件(PDC)的设计 237
10.2.2用户界面部件(HIC)的设计 242
10.2.3任务管理部件(TMC)的设计 244
10.2.4数据管理部件(DMC)的设计 246
10.3基于对象的设计方法 248
10.3.1设计步骤 248
10.3.2详细设计 251
小结 252
习题 253
第十一章 面向数据的设计方法 255
11.1面向数据设计 255
11.2Jackson系统开发方法 256
11.2.1JSD分析技术回顾 256
11.2.2扩充功能性过程 257
11.2.3施加时间约束 262
11.2.4实现与JSP技术 263
11.2.5产生过程表示 265
11.3基于结构化数据的系统开发(DSSD)方法 266
11.3.1DSSD设计步骤 267
11.3.2推导输出数据的逻辑结构 267
11.3.3推导处理过程的逻辑结构 268
11.3.4复杂过程逻辑的描述 270
小结 271
习题 271
第十二章 人机界面设计 273
12.1人的因素 273
12.1.1人类感知基础 273
12.1.2用户的技能 274
12.1.3任务与用户的特殊要求 275
12.2人机界面风格 275
12.3人机界面设计过程 276
12.3.1界面设计的有关模型 277
12.3.2任务分析与建模 277
12.3.3界面设计的一般问题 278
12.3.4实现工具 279
12.4人机界面实现的原则 280
12.4.1一般可交互性 280
12.4.2信息显示 280
12.4.3数据输入 281
12.5人机界面标准 281
12.6支持界面设计的CASE工具 282
小结 286
习题 286
第十三章 程序设计语言和编码 288
13.1程序设计语言 288
13.1.1程序设计语言的特性 288
13.1.2程序设计语言的基本机制 290
13.1.3程序设计语言的演变和分类 292
13.1.4程序设计语言的选择 293
13.2程序设计过程 294
13.2.1面向对象语言对OOD的支持 295
13.2.2基于对象语言对OOD的支持 297
13.2.3过程式语言对OOD的支持 300
13.3编程标准 302
13.4编程风格 303
13.5程序设计支持环境(PSE) 305
小结 307
习题 307
第十四章 软件测试 309
14.1基本概念 309
14.1.1软件测试的目标 309
14.1.2测试阶段的信息流程 310
14.1.3测试用例和场景的设计 311
14.1.4软件测试的步骤 312
14.2软件测试技术 313
14.2.1白盒测试 313
14.2.2黑盒测试 322
14.3软件测试策略 324
14.3.1单元测试 324
14.3.2综合测试 327
14.3.3确认测试 331
14.3.4系统测试 332
14.3.5排错 333
14.4基于CASE工具的软件测试和排错 336
14.4.1自动测试工具 336
14.4.2调试器 336
小结 338
习题 338
第十五章 软件维护 342
15.1软件维护的分类 342
15.2维护过程 343
15.2.1结构化与非结构化的维护 343
15.2.2维护的成本 344
15.2.3可能存在的问题 345
15.3可维护性 346
15.3.1影响可维护性的因素 346
15.3.2若干量化的测度 346
15.3.3保证可维护性的复审 347
15.4维护活动 347
15.4.1维护组织 347
15.4.2维护的报告与评估 348
15.4.3维护活动的事件流 349
15.4.4保存维护记录 350
15.4.5评价维护活动 351
15.5维护的副作用 352
15.6逆向工程与重构工程 353
15.6.1恢复信息的级别 353
15.6.2恢复信息的方法 354
小结 355
习题 356
第十六章 软件配置管理 357
16.1软件配置管理 357
16.1.1基线技术 358
16.1.2软件配置项 358
16.2软件配置管理任务 360
16.2.1标识配置对象 360
16.2.2版本控制 362
16.2.3系统建立 362
16.2.4修改控制 362
16.2.5配置审计 364
16.2.6配置状况报告 365
16.3软件配置管理标准 365
16.4配置管理的CASE工具 366
小结 368
习题 368
第十七章 软件重用技术 369
17.1软件重用 370
17.1.1软件重用的概念 370
17.1.2软件重用的过程与意义 370
17.1.3重用项目的管理 371
17.2软部件库的构造 372
17.2.1域分析 372
17.2.2软部件的开发 374
17.2.3软部件库的组织 377
17.3软部件的重用 380
17.3.1检索与提取软部件 380
17.3.2理解与评价软部件 382
17.3.3修改软部件 383
17.3.4软部件的合成 383
17.4面向对象的软件重用技术 384
17.4.1类库的构造 384
17.4.2类库的检索 384
17.4.3面向对象的合成 385
17.5软件重用项目的管理 389
17.5.1组织机构 389
17.5.2软件重用的考核指标 390
17.5.3创造重用氛围 391
17.6支持软件重用的CASE工具 391
17.6.1软件重用对CASE工具的需求 391
17.6.2类库的组织与检索工具 393
小结 395
习题 395
第十八章 快速原型技术 397
18.1瀑布模型的缺陷 397
18.2快速原型方法 400
18.2.1原型及其作用 400
18.2.2快速原型的构造过程 401
18.3基于快速原型的进化式软件开发 403
18.3.1螺旋模型 403
18.3.2螺旋模型的评价 406
18.4快速原型的技术支持 407
18.4.1用户界面自动生成工具 407
18.4.2面向数据库应用的开发工具 410
18.4.3四代语言 415
18.4.4可重用工具 416
18.4.5程序设计环境 416
小结 418
习题 418
第十九章 集成化CASE环境 420
19.1概述 420
19.2CASE工具的集成形式 421
19.2.1信息交换 421
19.2.2公共界面 422
19.2.3公共信息管理与信息共享 422
19.2.4高度集成 423
19.3集成化CASE环境的总体结构 424
19.3.1界面集成 424
19.3.2工具集成 425
19.3.3信息集成 426
19.3.4软件工程信息库 427
19.4可移植的通用工具环境PCTE 430
19.4.1基本机制 430
19.4.2用户接口 431
19.4.3分布式机制 432
小结 432
习题 433
第二十章 新型软件开发技术 434
20.1Internet与Java简介 434
20.1.1Internet简介 434
20.1.2Java的发展历史 436
20.1.3Java的特征 437
20.1.4Java的语法机制 439
20.1.5Java的意义 445
20.2Java与Internet环境下的软件开发 446
20.2.1基于Java的软件开发过程 446
20.2.2Java与多媒体主页的制作 447
20.2.3Java与交互式主页的制作 453
20.2.4Java与图形界面 454
20.2.5Java与网络程序设计 458
20.3对象链接与嵌入(OLE)技术 459
20.3.1OLE简介 459
20.3.2构件对象模型 460
20.3.3结构化存储与复合文件 461
20.3.4数据对象传送 462
20.3.5复合文档 464
20.3.6OLE自动化 465
20.3.7OLE控件 466
20.4CORBA与分布计算技术 466
20.4.1分布计算环境 467
20.4.2分布计算技术 467
20.4.3CORBA概述 469
20.4.4Internet环境下的分布式软件开发 470
小结 471
习题 472
参考文献 474