第一章软件工程概述 1
1.1 软件危机 1
1.1.1软件的发展阶段 1
目 录 1
1.1.2软件危机的挽救 2
1.2软件开发模型 3
1.2.1瀑布模型 3
1.2.2原型模型 4
1.2.3总体数据库规划模型 5
1.3软件工程学及其基本原则 5
1.3.1软件工程学的内容与目标 5
1.3.2软件工程学基本原则 6
1.4软件工程学的进展 6
1.4.4软件自动生成器 7
1.4.5软件工程与人工智能 7
1.4.1新的软件开发模型 7
1.4.3计算机辅助软件工程CASE 7
1.4.2软件再用 7
习题一 8
第二章软件计划 9
2.1 问题定义 9
2.1.1问题定义的内容 9
2.1.2问题定义的步骤 9
2.2可行性研究 10
2.2.1系统可行性研究的目标内容 10
2.2.2可行性研究的步骤 10
2.3系统流程图 11
2.4.2画数据流图的原则 12
2.4数据流图 12
2.4.1符号定义 12
2.5成本估计 14
2.5.1基于代码行的估计方法 14
2.5.2任务分解估计方法 15
2.5.3经验统计估计模型 15
2.5.4 自动成本估计技术 16
2.6成本效益分析 17
2.7软件开发计划 18
2.7.1软件范围 18
2.7.2资源计划 18
2.7.3软件进度安排 19
2.8软件计划复审 19
习题二 20
第三章软件需求分析 21
3.1软件需求分析任务步骤 21
3.1.1软件需求分析任务 21
3.1.2软件需求分析步骤 22
3.1.3软件需求分析原则 23
3.2软件需求分析工具 25
3.2.1结构化分析方法与工具 25
3.2.2判定表与判定树 26
3.2.3结构化分析语言LSA(Language of Structured Analysis) 28
3.2.4其他需求分析描述工具 28
3.3软件需求分析的复审 29
习题三 30
4.1.2总体设计的过程 32
4.1.1总体设计任务 32
第四章软件概要设计 32
4.1 总体设计任务与过程 32
4.2模块划分 33
4.2.1划分模块要确保总成本 33
4.2.2模块划分的独立性原则 34
4.2.3模块划分的启发性原则 35
4.2.4信息隐蔽和局部化 36
4.2.5软件结构与结构图SC(Structured Chart) 37
4.3总体设计方法与工具 38
4.3.1 数据流问题的结构化设计方法(SD) 38
4.3.2数据结构问题的设计方法 39
4.4.2概要设计的复审 42
4.4总体设计文档与复审 42
4.4.1总体设计文档 42
习题四 43
第五章软件详细设计 46
5.1结构化程序设计 46
5.1.1详细设计的任务 46
5.1.2详细设计的原则 46
5.2详细设计的工具 47
5.2.1程序流程图PFC 47
5.2.2 N—S(Nassi—Shneiderman)盒式图 49
5.2.3 PAD图 49
第十章软件开发环境与工具 1 50
5.2.4 HIPO图 50
5.2.5判定表 52
5.2.6判定树 53
5.2.7过程设计语言PDL 53
5.2.8详细设计方法 54
5.3程序结构复杂程度的度量 55
5.3.1程序图与环域复杂度 55
5.3.2其他度量程序复杂度的方法 56
5.4详细设计工具评审与文档评审 57
5.5软件蓝图 58
习题五 59
第六章软件编码 61
6.1程序设计风格 61
6.1.1源程序 61
6.1.2数据说明 62
6.1.3语句结构 63
6.2.1程序设计语言简介 64
6.2程序设计语言 64
6.1.4输入输出 64
6.2.2程序设计语言的选择 66
6.2.4深入DOS编程 68
6.2.3混合编程 68
6.3冗余与防错程序设计 69
6.3.1 自动程序设计 69
6.3.2冗余程序设计 69
6.3.3防错程序设计 70
6.4面向对象的程序设计方法 71
6.4.1基本思想 71
6.4.2基本概念 71
6.4.3语言特点 72
6.4.4设计步骤 73
6.5程序设计质量评价 73
6.6编码文档及复审 75
6.6.1代码复查与静态分析 75
6.6.2编码文档 77
习题六 77
7.1基本概念 79
7.1.1测试的概念 79
第七章软件测试 79
7.1.2测试方法 82
7.1.3测试的步骤 82
7.2测试用例的设计 83
7.2.1 白盒法(逻辑覆盖) 83
7.2.2黑盒法 86
7.2.3错误推测法 92
7.3软件测试策略 93
7.3.1单元测试(Unit testing) 93
7.3.2组装测试(Integrated testing) 95
7.3.3确认测试(Validation testing) 97
7.3.4系统测试(System Testing) 97
7.3.5人工测试(Manual Testing) 98
7.4.1测试计划复审 99
7.4.2测试规程说明书复审 99
7.4.3软件验收复审 99
7.4测试的复审 99
7.5排错技术 100
7.5.1排错策略方法 100
7.5.2辅助纠错手段 102
7.6软件的可靠性 102
7.6.1基本概念 102
7.6.2平均无故障时间MTTF的估算 103
7.6.3 日立预测法 104
7.7系统转换 105
习题七 106
8.1.2维护的内容 109
第八章软件维护 109
8.1维护概述 109
8.1.1维护的定义 109
8.1.3维护的特点 110
8.1.4可维护性 112
8.1.5维护的过程 113
8.2软件维护的管理 113
8.2.1维护工作人员组织 114
8.2.2软件维护的相关文件 114
8.2.3软件维护的复审 120
8.3可维护性的度量 120
8.3.1耗时记录法 120
8.4维护的副作用 121
8.4.1修改代码的副作用 121
8.3.4维护费用的估算 121
8.3.3程序工作量 121
8.3.2环域复杂度 121
8.4.2修改数据的副作用 122
8.4.3 文件的副作用 122
8.5软件维护工具与软件逆向工程 123
8.5.1软件维护工具 123
8.5.2逆向软件工程 124
8.6软件重用技术 125
8.6.1软件重用概念 125
8.6.2软件重用的设计过程 126
习题八 127
9.1.2软件管理的特殊性 128
第九章软件工程管理 128
9.1 软件项目特点与软件管理职能 128
9.1.1软件项目的特点 128
9.1.3软件管理职能 129
9.2软件计划管理 130
9.2.1软件计划的类型 130
9.2.2 成本估计 131
9.2.3进度计划 132
9.3软件开发人员组织 137
9.3.1 人员组织的相关定律 137
9.3.2 人员组织 139
9.4软件质量与评价 141
9.4.1软件质量度量模型 141
9.4.2软件质量评价过程模型 142
9.4.3软件具体评价 144
9.5软件工程标准 145
9.5.1 软件工程标准化内容与好处 145
9.5.2软件工程标准 147
习题九 148
10.1程序设计方法 150
10.1.1基于自顶向下、结构化、生命周期思想的系统开发方法 150
10.1.2基于系统开发工具与快速开发系统思想的方法 151
10.1.3面向对象的系统开发方法 151
10.1.4信息系统的驱动方式 151
10.2软件界面设计 152
10.2.1代码设计 152
10.2.2代码设计步骤 153
10.3.1输出设计 154
10.2.3代码设计文件 154
10.3输入输出设计 154
10.3.2输入设计 157
10.4用户界面设计 157
10.4.1用户界面开发要点 158
10.4.2菜单技术 159
10.4.3出错控制与处理 160
10.5数据库设计 161
10.5.1数据模型规范化 161
10.5.2数据存储文件设计 162
10.5.3数据库的设计 165
10.6软件安全设计 167
10.6.1系统安全基本概念 167
10.6.3各个生存周期阶段的安全控制措施 168
10.6.2安全控制设计 168
10.7计算机病毒防治 170
10.7.1计算机病毒种类与特点 170
10.7.2病毒的防治 171
10.8软件开发环境与工具 171
10.8.1基本概念 171
10.8.2软件工具 172
10.8.3软件开发环境 172
10.8.4 CASE技术综述 173
习题十 174
参考文献 176
附录A计算机软件产品开发文件编制指南 177
附录B软件工程设计举例 209