CONTENTS 1
第1章绪论 1
1.1软件的基本概念 1
1.1.1什么是软件 1
目 录 1
1.1.2软件的特点和分类 2
1.1.3软件开发涉及的问题 4
1.2软件危机与软件工程 5
1.2.1软件危机 5
1.2.2软件工程学及其基本原则 7
1.2.3软件生存周期 9
1.3.1瀑布模型 10
1.3.2原型化模型 10
1.3软件开发模型 10
1.3.3渐增模型 12
1.3.4螺旋模型 13
1.3.5喷泉模型 14
1.3.6构件集成模型 14
1.4小结 15
练习题 15
第2章系统分析 17
2.1基于计算机的系统 17
2.1.1基于计算机系统的层次及元素 17
2.1.2计算机系统工程 18
2.1.3软件和软件工程 19
2.2系统分析 20
2.3可行性分析 21
2.2.1 系统分析的目标 21
2.2.2系统分析的过程 21
2.3.1可行性研究的内容 22
2.3.2可行性研究的步骤 23
2.3.3可行性研究报告 24
2.4技术分析 25
2.4.1系统模型 25
2.4.2模型工具 25
2.5成本/效益分析 27
2.5.1成本估计 27
2.5.2成本/效益分析的内容 28
2.6系统规格说明与评审 30
练习题 31
2.7小结 31
第3章需求分析 33
3.1需求分析的任务和过程 33
3.1.1软件需求分析的任务与原则 33
3.1.2软件需求的内容 34
3.1.3软件需求分析的过程与步骤 34
3.1.4常用需求分析方法 36
3.2结构化分析方法(Structured Analysis,SA) 36
3.2.1结构化分析方法使用的工具 36
3.2.2结构化分析的过程 45
3.2.3原型化方法在需求分析中的作用 47
3.3面向对象分析方法(OOA,Object-Oriented Analysis) 48
3.3.1面向对象的基本概念 49
3.3.2面向对象方法常用的图形工具 50
3.3.3面向对象的分析方法学 51
3.3.4面向对象分析过程 53
3.4软件需求分析的验证 59
3.4.1软件需求分析的评审 59
3.4.2软件需求规格说明 61
3.5小结 62
练习题 62
第4章软件设计基础 64
4.1软件设计的目的和任务 64
4.1.1概要设计的任务 64
4.2软件设计的基本概念 65
4.2.1抽象与细化 65
4.1.2详细设计的任务 65
4.2.2模块化与信息隐蔽 67
4.2.3复用 72
4.3软件架构设计 72
4.4过程设计的技术与工具 74
4.4.1结构化程序设计 74
4.4.2图形工具 75
4.5设计规格说明书与评审 77
4.6小结 78
练习题 79
第5章面向数据流的软件设计方法 80
5.1基本概念与工具 80
5.1.1 SC图 80
5.1.2数据流图DFD的类型 81
5.1.3 SD方法的步骤 82
5.2变换分析 83
5.3事务分析 86
5.4结构设计优化的启发式策略 87
5.5结构设计的示例 91
5.6过程设计 93
5.6.1过程设计的原则 93
5.6.2过程设计的工具 94
5.6.3过程设计的例 96
5.7小结 98
练习题 99
6.1.1面向对象设计任务 101
6.1.2 OOD方法的描述机制 101
6.1面向对象设计概述 101
第6章面向对象的设计方法 101
6.2面向对象设计方法 103
6.2.1系统设计 103
6.2.2对象设计 110
6.3小结 112
练习题 112
第7章编码与程序设计语言选择 114
7.1程序设计语言 114
7.1.1影响编码的程序设计语言的特点 114
7.1.2程序设计语言的类别 115
7.1.3程序设计语言的选择 117
7.2编码标准 119
7.3编码风格 120
7.3.1编码风格指导原则 120
7.3.2编码问题的例 122
7.4软件设计支撑工具 125
7.5小结 125
练习题 126
第8章软件测试 128
8.1测试的基本概念 128
8.1.1软件测试的目的与特性 128
8.1.2几个与测试相关的概念 129
8.1.3 Myers测试经验 129
8.1.4软件的错误 130
8.2黑盒测试 131
8.2.1等价分类法 132
8.3白盒测试 134
8.2.3错误猜测法 134
8.2.2 边界值分析(Boundary Value Analysis) 134
8.3.1逻辑覆盖测试 135
8.3.2基本路径测试 138
8.4软件的测试策略 141
8.4.1测试的层次性 141
8.4.2单元测试 142
8.4.3集成测试 144
8.4.4确认测试 146
8.4.5系统测试 147
8.5调试(纠错) 148
8.5.1调试的特点 148
8.5.2调试的方法 149
8.6面向对象的测试 149
8.6.1面向对象软件的测试策略 150
8.6.2类的测试用例设计 151
8.7软件测试计划与测试分析报告 152
8.8小结 153
练习题 154
第9章软件维护 156
9.1软件维护的基本概念 156
9.1.1软件维护的定义与分类 156
9.1.2维护代价的分布 157
9.1.3一个维护的例子 157
9.2维护的特点 158
9.2.1软件工程方法对维护的影响 158
9.2.2维护的代价 158
9.3可维护性 159
9.2.3软件维护中的一些典型问题 159
9.3.1影响可维护性的因素 160
9.3.2可维护性的若干量化的测度 160
9.3.3保证可维护性的复审 161
9.4维护过程与维护活动 161
9.4.1软件维护工作的内容 161
9.4.2建立维护机构 161
9.4.3维护报告 162
9.4.4维护活动的模型 163
9.4.5维护管理文档 164
9.4.6评价 165
9.5软件修改的副作用 165
9.6逆向工程与重构工程 166
9.6.2恢复信息的级别 167
9.6.1软件重构工程模型 167
9.6.3恢复信息的方法 168
9.7 小结 169
练习题 169
第10章配置管理 171
10.1软件配置管理的基本概念 171
10.1.1基线技术 172
10.1.2软件配置项 172
10.2软件配置管理的任务 173
10.2.1标识软件配置中各种对象 174
10.2.2版本控制 175
10.2.3变化控制 176
10.2.4状态报告 178
10.2.5配置审计 178
10.2.6配置管理的标准和CASE工具 179
10.3小结 180
练习题 180
第11章软件项目的度量 181
11.1软件度量的基本概念 181
11.1.1度量,测量和估算 181
11.1.2面向规模的度量 182
11.1.3面向功能的度量 183
11.1.4软件度量体系标准 185
11.2软件项目的估算 186
11.3经验估算模型 189
11.3.1 COCOMO模型 189
11.3.2 Putnam模型 191
11.4.1软件质量和影响软件质量的要素 192
11.4软件的质量度量 192
11.4.2软件质量要素评价标准 193
11.5 软件复杂性度量 195
11.5.1软件复杂性 195
11.5.2控制结构的复杂性度量 196
11.5.3源代码复杂性度量 197
11.6软件可靠性估算 198
11.7面向对象系统的技术度量 199
11.7.1面向对象系统在度量方面的区别特征 199
11.7.2面向类的度量 200
11.7.3面向操作的度量 201
11.8小结 201
练习题 202
12.1.1软件体系结构的研究现状 203
第12章软件体系结构与设计模式 203
12.1软件体系结构 203
12.1.2常用的软件体系结构 205
12.2面向对象中的模式 207
12.2.1设计模式的概念 207
12.2.2设计模式的组成与描述 208
12.2.3模式的分类 209
12.2.4 Proxy模式 210
12.2.5如何使用模式 214
12.3小结 215
练习题 215
参考文献 216