目录
第1章软件工程概述1
1.1软件的概念、特点和分类1
1.1.1软件的概念与特点1
1.1.2软件的分类3
1.2软件的发展和软件危机6
1.3软件工程过程和软件生存期8
1.3.1软件工程过程(software engineering process)1.3.2软件生存期(life cycle)9
1.4软件生存期模型10
1.4.1瀑布模型(waterfall model)10
1.4.2演化模型(evolutional model)11
1.4.3螺旋模型(spiral model)11
1.4.4喷泉模型(water fountain model)13
1.4.5智能模型(intelligence model)13
1.5软件工程的基本目标13
1.5.1软件工程的定义13
1.5.2软件工程项目的基本目标14
第2章软件需求分析15
2.1软件需求分析概述15
2.1.1软件需求分析的任务15
2.1.2需求分析的过程16
2.1.3软件需求分析的原则19
2.2结构化分析方法21
2.2.1数据流图(DFD,data flow diagram)21
2.2.2数据词典(DD,data dictionary)24
2.2.3加工逻辑说明27
2.3结构化数据系统开发方法(DSSD)——面向数据结构的分析方法之一30
2.3.1Warnier图30
2.3.2DSSD的分析方法31
2.4Jackson系统开发方法(JSD)——面向数据结构的分析方法之二34
2.4.1进程模型35
2.4.2JSD方法的步骤35
2.4.3实体动作分析36
2.4.4实体结构分析37
2.4.5定义初始模型38
2.5原型化方法 (prototyping)40
2.5.1软件原型的分类41
2.5.2快速原型开发模型41
2.6系统动态分析44
2.6.1状态迁移图44
2.6.2Petri网45
2.7结构化分析与设计方法 (SADT)48
第3章软件设计 51
3.1软件设计的目标和任务51
3.1.1软件设计在开发阶段中的重要性51
3.1.2软件设计任务52
3.2程序结构与程序结构图54
3.2.1程序的树状结构和网状结构55
3.2.2结构图(structure chart, 简称SC)55
3.3模块的独立性57
3.3.1模块(module)57
3.3.2模块独立性(module independence)58
3.3.3耦合性(coupling)58
3.3.4内聚性(cohesion)60
3.3.5信息隐蔽63
3.4结构化设计方法——面向数据流的设计方法63
3.4.1典型的系统结构形式64
3.4.2变换分析66
3.4.3事务分析69
3.4.4软件模块结构的改进71
3.5结构化数据系统开发方法(DSSD)
——面向数据结构的设计方法之一75
3.5.1一种简化的设计方法75
3.5.2导出逻辑输出结构76
3.5.3导出逻辑处理结构(LPS)76
3.6Jackson系统开发方法 (JSD)
——面向数据结构的分析与设计方法之二78
3.6.1JSD功能描述78
3.6.2决定系统时间特性82
3.6.3实现82
第4章详细设计描述的工具87
4.1程序流程图(program flow chart)87
4.2N\|S图90
4.3PAD91
4.4PDL93
第5章程序编码100
5.1对源程序的质量要求100
5.2结构化程序设计101
5.2.1关于GOTO语句的争论101
5.2.2结构化程序设计的原则102
5.2.3程序设计自顶向下,逐步求精104
5.3程序设计风格106
5.3.1源程序文档化107
5.3.2数据说明110
5.3.3语句结构110
5.3.4输入和输出(I/O)114
5.4程序复杂性度量115
5.4.1代码行度量法115
5.4.2McCabe度量法116
5.4.3Halstead的软件科学117
第6章面向对象技术120
6.1面向对象的概念120
6.2基于复用的开发过程123
6.2.1应用生存期123
6.2.2类生存期124
6.3面向对象分析与模型化126
6.3.1面向对象分析(OOA, object\|oriented analysis)126
6.3.2论域分析(domain analysis)126
6.3.3应用分析(application analysis)129
6.3.4对象模型技术(OMT, object model tech.)129
6.4高层设计134
6.5类的设计135
6.5.1通过复用设计类135
6.5.2类设计的方针136
6.5.3类设计的过程138
6.6Coad与Yourdon面向对象分析与设计技术143
6.6.1面向对象的分析143
6.6.2面向对象的设计145
6.7Booch的方法146
6.7.1Booch方法的设计过程147
6.7.2Booch方法的基本的模型147
6.8面向对象设计的实现151
6.8.1类的实现151
6.8.2系统的实现153
第7章软件测试155
7.1软件测试的基础155
7.1.1什么是软件测试155
7.1.2软件测试的目的和原则156
7.1.3软件测试的对象157
7.1.4测试信息流158
7.1.5测试与软件开发各阶段的关系159
7.2测试用例设计160
7.3白盒测试的测试用例设计161
7.3.1逻辑覆盖161
7.3.2语句覆盖162
7.3.3判定覆盖163
7.3.4条件覆盖163
7.3.5判定\|条件覆盖164
7.3.6条件组合覆盖164
7.3.7路径测试165
7.4黑盒测试的测试用例设计165
7.4.1等价类划分165
7.4.2边界值分析168
7.4.3错误推测法171
7.4.4因果图171
7.5软件测试的策略174
7.5.1单元测试(unit testing)175
7.5.2组装测试(integrated testing)177
7.5.3确认测试(validation testing)181
7.5.4系统测试(system testing)183
7.5.5测试的步骤及相应的测试种类183
7.6人工测试186
7.6.1静态分析186
7.6.2人工测试187
7.7调试(Debug,排错)189
7.7.1调试的步骤189
7.7.2几种主要的调试方法190
7.7.3调试原则193
第8章软件维护194
8.1软件维护的概念194
8.1.1软件维护的定义194
8.1.2影响维护工作量的因素195
8.1.3软件维护的策略195
8.2软件维护活动196
8.2.1软件维护申请报告196
8.2.2软件维护工作流程197
8.2.3维护档案记录198
8.2.4维护评价198
8.3程序修改的步骤及修改的副作用198
8.3.1分析和理解程序199
8.3.2修改程序199
8.3.3重新验证程序202
8.4软件可维护性202
8.4.1软件可维护性的定义203
8.4.2可维护性的度量203
8.5提高可维护性的方法206
8.5.1建立明确的软件质量目标和优先级206
8.5.2使用提高软件质量的技术和工具206
8.5.3进行明确的质量保证审查207
8.5.4选择可维护的程序设计语言208
8.5.5改进程序的文档209
8.6逆向工程和再工程210
第9章软件工程标准化与软件文档211
9.1软件工程标准化211
9.1.1什么是软件工程标准211
9.1.2软件工程标准化的意义213
9.1.3软件工程标准的层次213
9.1.4中国的软件工程标准化工作214
9.2软件质量认证215
9.2.1ISO 9000系列标准及软件质量认证215
9.2.2ISO 9000系列标准的内容216
9.2.3制定与实施ISO 9000系列标准217
9.2.4ISO 9000\|3的要点218
9.3在开发机构中推行软件工程标准化220
9.4软件文档的作用与分类221
9.4.1软件文档的作用和分类221
9.4.2对文档编制的质量要求223
9.4.3文档的管理和维护225
9.5软件过程成熟度模型227
9.5.1软件机构的成熟性227
9.5.2软件过程成熟度模型228
9.5.3关键过程领域229
9.5.4成熟度提问单230
第10章软件管理232
10.1软件生产率和质量的度量232
10.1.1软件度量232
10.1.2面向规模的度量232
10.1.3面向功能的度量233
10.1.4软件质量的度量234
10.1.5影响软件生产率的因素235
10.2软件项目的估算236
10.2.1对估算的看法236
10.2.2软件项目计划的目标237
10.2.3软件的范围237
10.2.4软件开发中的资源237
10.2.5软件项目估算240
10.2.6分解技术241
10.3软件开发成本估算243
10.3.1软件开发成本估算方法244
10.3.2专家判定技术245
10.3.3软件开发成本估算的经验模型245
10.4软件项目进度安排249
10.4.1软件开发小组人数与软件生产率250
10.4.2任务的确定与并行性251
10.4.3制定开发进度计划251
10.4.4进度安排的方法252
10.4.5项目的追踪和控制254
10.5软件项目的组织与计划255
10.5.1软件项目管理的特点255
10.5.2制定计划257
10.5.3软件项目组织的建立258
10.5.4人员配备262
10.5.5指导与检验263
10.6软件配置管理265
10.6.1软件配置管理265
10.6.2配置标识267
10.6.3版本控制269
10.6.4变更控制269
10.6.5配置状态报告(configuration status reporting,CSR)271
10.6.6配置审计(configuration audit)271
附录软件产品开发文档编写指南273
参考文献287
