目 录 1
第一章概述 1
1.1软件危机 1
1.1.1什么是软件危机 1
1.1.2产生软件危机的原因 2
1.1.3克服软件危机的办法 3
1.2软件工程 3
1.2.1软件工程研究的内容 3
1.2.2软件的生存周期 4
1.2.3软件生存周期各阶段的任务 4
1.4软件产业 6
1.3软件质量评价 6
第二章软件需求分析 7
2.1需求分析的目标和任务 7
2.1.1确定系统的综合需求 7
2.1.2确定系统的数据需求 8
2.1.3构成系统的逻辑模型 8
2.1.4修正系统的开发计划 8
2.2需求分析的步骤 8
2.2.1问题识别 8
2.2.2分析与综合 8
2.2.3篇写软件需求规格说明书 9
2.2.4软件需求的复审 9
2.4结构化分析方法——SA方法 10
2.3分析员 10
2.4.1数据流程图 11
2.4.2数据字典 20
2.4.3结构化英语 23
2.4.4判定树(或决策树) 25
2.5 HIPO方法 25
2.6软件需求的自动化工具介绍 27
2.7历届试题 29
第三章软件界面设计 30
3.1输出设计 30
3.1.1输出设计的内容 30
3.1.2输出信息的方法 30
3.2输入设计 31
3.1.3输出的类型 31
3.1.4输出格式设计 31
3.2.1输入设计的内容 32
3.2.2输入设计的指导性原则 32
3.2.3接收数据的原则 33
3.2.4数据接收方法(即数据输入方法) 33
3.3用产接口的设计 34
3.3.1用户类型 34
3.3.2用户接口设计要考虑的问题 34
3.3.3交互式用产对话 35
第四章概要设计 37
4.1软件结构 37
4.3模块独立性 38
4.2模块化 38
4.3.1模块独立性的重要性 39
4.3.2模块独立性的定性度量标准 39
4.4改进软件结构的指导性原则 40
4.4.1降低耦合度提高内聚性 40
4.4.2控制模块的规模在适当范围内 41
4.4.3深度、宽度、扇出、扇入都要适当 41
4.4.4作用范围应该在控制范围内 41
4.5模块结构图概念 42
4.5.1模块结构图的成份 42
4.5.2模块功能说明 43
4.6面向数据流的设计方法(SD) 43
4.6.1信息流的类型 44
4.6.2 SD方法的设计过程 45
4.6.3变换分析 45
4.6.4事务分析 49
4.7面向数据结构的设计方法 50
4.7.1 Jackson方法 50
4.7.2 Lcp方法 54
4.8 Parnas方法 57
4.9历届试题 58
第五章详细设计 60
5.1结构程序设计的概念 60
5.1.1结构程序设计的定义 61
5.2.1程序流程图(program Flowehart) 62
5.2详细设计的工具 62
5.1.2结构程序设计技术的优点 62
5.2.2 N——S图 65
5.2.3PAD图 68
5.2.4表格工具 69
5.2.5语言工具 73
5.3历届试题 78
第六章软件测试 80
6.1 测试方法 80
6.1.1白盒法 80
6.1.2黑盒法 82
6.2.1模块测试 86
6.2.2渐增式和非渐增式的联合测试 86
6.2测试的设计 86
6.3测试的分类 88
6.3.1静态分析 88
6.3.2动态分析 89
6.4测试的计划 89
6.5测试报告 90
6.6测试结果与评价 90
6.7排错技术 91
6.7.1张力法纠错 91
6.7.2归纳法纠错 91
6.7.3演绎法纠错 92
6.7.4回溯法纠错 92
6.8.1模块驱动工具 93
6.8.2静态分析工具 93
6.8测试工具 93
6.7.5测试纠错 93
6.8.3 动态分析工具 94
6.8.4测试数据生成工具 94
6.8.5符号执行系统 95
6.8.6文件比较程序 95
6.9历届试题 95
第七章文档编制 99
7.1概要设计说明书 100
7.2详细设计规格说明书 101
7.3 测试计划和测试分析报告 103
7.3.1测试计划 103
7.3.2测试分析报告 104
7.4文档编制标准 105
7.5文档工具 109
第八章软件维护技术和工具 111
8.1 基本概念 111
8.2 软件维护技术 111
8.2.1软件维护基本任务 111
8.2.2程序理解 112
8.2.3程序修改 113
8.2.4程序的重新确认 114
8.3软件维护的技术工具 114
8.3.1 软件理解工具…………………………………………………………………(114 )8.3.2分析波及效应工具 116
8.4.2软件配置管理工具 117
8.4.1软件版本管理工具 117
8.4 软件维护的管理工具 117
8.5软件开发环境简介 118
8.6软件工程的新技术和新方法 118
8.6.1原型化方法 118
8.6 2分布式软件开发环境 120
8.6.3基于知识的程序设计环境 120
第九章软件可靠性和安全性设计 122
9.1 可靠性 122
9.1.1基本概念 122
9.1.2软件可靠性模型 122
9.1.3软件可靠性提高的方法和技术 124
9.2安全性 125
9.2.1操作系统的安全问题 126
9.2.2数据库的安全问题 127
9.2.3通信加密技术 128
9.2.4计算机病毒及防治 129
第十章软件质量管理与设计评审的组织 131
10.1 软件质量的基本概念 131
10.1.1软件质量的定义 131
10.1.2软件质量特性的定义 131
10.2 软件质量管理 132
10.2.1软件质量管理的概念 132
10.2.2软件质量管理的基础工作 132
10.2.3软件开发过程的质量管理 133
10.3软件质量度量 133
10.3.2两种软件质量度量模型 134
10.3.1软件复杂性的度量 134
10.4设计评审的组织 135
10.4.1软件需求评审(SRR) 135
10.4.2概要设计评审(GDR) 136
10.4.3详细设计评审(DDR) 136
10.4.4篇码评审 137
10.5设计评审过程 137
第十一章期程图与程序设计 139
11.1 由软件设计说明书绘制流程图和编制程序 139
11.1.1由设计说明书绘制流程图的一般方法 140
11.1.2绘宏流程图 140
11.1.3绘微流程图 141
11.1.4转换成程序 142
11.2编成方法 143
11.2.1篇程阶投的基本概念 143
11.2.2 SP方法与编程 144
11.2.3防御性编程 145
11.2.4冗余性编程 146
11.3编程风格 147
11.3.1代码文件 149
11.3.2数据说明 150
11.3.3语句构造 150
11.3.4输入和输出 150
11.4算法与程序效率 151
11.4.1算法对程序效率的影响 151
11.4.3算法的时间复杂度 152
11.4.2算法的基本概念 152
11.4.4算法空间复杂度 153
11.4.5算法的最优法 154
11.5程序设计语言 155
11.5.1语言类别 155
11.5.2语言选择 155
11.6历届试题 156
第十二章数据库设计 161
12.1数据库设计的概念 161
12.1.1数据库设计概述 161
12.1.2数据库设计说明书 161
12.1.3数据库设计方法 162
12.2.1数据库设计步骤 164
12.2 数据库应用系统的生命周期 164
12.2.2数据库系统的生命周期 166
12.3 需求分析 167
12.3.1需求分析概况 167
12.3.2确定数据库的范围和收集信息 167
12.3.3数据字典(DDF Data Dictionary) 168
12.4逻辑设计 169
12.4.1逻辑设计内容 169
12.4.2 E—R模附向数据模型转换 170
12.4.3规范化理论的应用 171
12.5 物理设计 173
12.5.1物理设计简介 173
12.5.2物理设计步骤 174
12.5.3性能评价 175
12.6 历界试题 178