第1章 软件工程概论 1
1.1 软件的概念、特性和分类 1
1.1.1软件的概念 1
1.1.2软件的特性 1
目 录 1
1.1.3软件的分类 3
1.2软件发展和软件危机 5
1.2.1软件发展的三个阶段 5
1.2.3软件危机的表现 6
1.2.2软件危机 6
1.2.4产生软件危机的原因 8
1.2.5解决软件危机的途径 10
1.3软件工程概念 11
1.3.1对软件开发的新认识 11
1.3.2软件工程的基本内容与目标 11
1.4软件工程的基本原理 12
1.5.1软件生存周期 14
1.5.2生存周期各阶段的基本任务 14
1.5软件生存周期方法学 14
1.6计算机辅助软件工程 18
1.6.1新一轮软件危机和CASE 18
1.6.2软件开发环境 19
1.6.3 CASE结构和CASE工具 19
本章小结 20
习题1 20
2.1 软件开发范型要素 22
2.1.1项目概念化 22
第2章 软件开发范型和开发过程 22
2.1.2项目表示 23
2.1.3项目实现 23
2.1.4统一的概念 23
2.2面向过程范型 25
2.2.1功能分解 25
2.2.2结构化分析和设计 26
2.3面向对象范型 28
2.3.1面向对象概念和术语 28
2.3.2面向对象方法学 29
2.3.3面向对象潜在的优点 30
2.3.4面向对象潜在的缺点 31
2.4软件开发过程 32
2.4.1瀑布模型 32
2.4.2快速原型法 34
2.4.3增量/迭代开发过程 36
2.4.4螺旋模型 37
2.5创建非正式场景 38
2.5.1场景说明 38
2.6.1建立模型的作用 39
2.6 统一建模语言(UML) 39
2.5.2创建非正式场景的指南 39
2.6.2 UML概念 40
2.6.3 UML的发展简史 40
2.6.4 UML建模框架 42
2.6.5 UML模型的基本概念 42
2.7 团队软件开发 45
2.7.1 主人翁精神和团队精神 45
2.7.2项目组工作 45
2.7.3创建项目小组 45
习题2 48
本章小结 48
第3章需求分析 49
3.1 需求分析 49
3.1.1 问题分析 49
3.1.2需求模型 50
3.2产品需求——设计之源 51
3.2.1软件设计的出发点——3W 51
3.2.2设计之源 52
3.2.3错误设计之源 52
3.2.4用户 53
3.3 需求收集 54
3.3.1需求导出 54
3.3.2会谈 55
3.3.3集体讨论 57
3.3.4需求技巧和技术 58
3.4需求确认和描述 59
3.4.1需求确认和测试 59
3.4.2需求描述 60
3.5 需求规格说明 61
3.5.1需求规格说明书的内容 61
3.5.3功能需求 62
3.5.2数据需求 62
3.5.4补充规范 63
3.5.5管理需求 64
3.6需求分析的评审 65
3.6.1评审的内容 65
3.6.2评审的方法 66
3.7 UCCD分析过程 66
3.7.1 传统分析与面向对象分析 66
3.7.2 UCCD需求分析步骤 67
本章小结 68
习题3 69
第4章 面向对象的需求分析 70
4.1 面向对象的分析原则和任务 70
4.1.1 面向对象的分析原则 70
4.1.2类职责协作模型 71
4.1.3类职责协作模型的优缺点 72
4.2需求规格说明 73
4.3.1 由图书馆工作人员撰写的需求规格说明 75
4.3.2评价需求规格说明 75
4.3 图书馆管理系统规格说明 75
4.4细化需求规格说明 76
4.4.1原型法作为细化工具 77
4.4.2细化LMS需求说明的其他元素 78
4.5验证需求规格说明 80
4.6面向对象的需求分析过程 81
4.6.1 以用例为中心的开发 81
4.6.2识别潜在的对象和类 81
4.6.3筛选对象和类 82
4.6.5定义操作 85
4.6.4识别对象的属性 85
4.6.6识别用例 86
4.6.7识别LMS中的用例 87
4.6.8场景开发 88
4.6.9 LMS的样本场景 89
4.6.10用UML对系统建模 89
4.7类模型 90
4.7.1类图 90
4.7.2 LMS的类图 91
4.7.3用例图 93
4.8.1 UCCD需求分析过程 95
4.8需求分析小结 95
4.8.2系统演化 96
本章小结 96
习题4 96
第5章产品设计 98
5.1 面向对象设计的任务 98
5.2软件设计的概念和原理 99
5.2.1模块化 99
5.2.2抽象 100
5.2.5耦合 101
5.2.3封装与信息隐蔽 101
5.2.4模块独立 101
5.2.6内聚 102
5.2.7可重用 103
5.2.8启发式规则 104
5.3 产品设计 106
5.3.1面向对象设计模型 106
5.3.2产品设计 106
5.4.1对象持久化 108
5.4.2对象序列化 108
5.4对象持久化 108
5.4.3评价对象持久化 109
5.5进程体系结构 111
5.5.1多结点建模 111
5.5.2进程间通信建模 111
5.5.3网络资源的有效利用 112
5.6用户界面设计 112
5.6.1用户界面的作用 112
5.6.2用户界面的质量因素 113
5.6.4用户界面设计原则 114
5.6.3用户友好性 114
5.7交互样式 117
5.7.1命令语言 117
5.7.2菜单选择 118
5.7.3表单填写 119
5.7.4直接操纵 121
5.7.5 自然语言 122
5.8 LMS用户界面的案例分析 122
本章小结 125
习题5 125
6.1.1类模型层次化 126
第6章 类 设 计 126
6.1 类类型体系结构 126
6.1.2模块化能力的准则 128
6.1.3类的重用 128
6.2类设计过程 129
6.2.1分析—类设计—实现 129
6.2.2类构架 130
6.2.3系统分解 132
6.3类模型演化 133
6.3.1类图的符号修饰 134
6.3.2交互图 135
6.3.3 LMS的交互图 136
6.3.4协作图的创建 138
6.3.5评估设计 140
6.3.6对象图 141
6.3.7对象图的创建 141
6.4类设计阶段的目标 142
6.4.1通过重用设计类 142
6.4.2良好设计的类与方法 144
6.4.4类设计准则 145
6.4.3数据完整性 145
6.5 类设计的验证 147
本章小结 148
习题6 148
第7章编程实现 150
7.1面向对象程序设计 150
7.1.1什么是编程 150
7.1.2面向对象程序设计语言 151
7.2.1实现的方法 152
7.2实现途径 152
7.2.2“大突击”实现 153
7.2.3 自顶向下与自底向上实现 153
7.2.4 自顶向下与自底向上方法的结合 156
7.2.5实现的线程方法 156
7.3程序设计风格 157
7.3.1 由艺术到科学 157
7.3.2源程序文档化 157
7.3.3数据说明 160
7.3.4语句结构 161
7.4.1类的实现方案 163
7.4类的实现 163
7.3.5输入和输出 163
7.4.2持久代码的实现 164
7.5程序效率 165
7.5.1程序效率的准则 165
7.5.2算法对效率的影响 165
7.6容错技术 166
7.6.1冗余程序设计 166
7.6.2防错程序设计 166
7.7.1面向对象程序设计步骤 167
7.7 实现计划 167
7.7.2实现计划 168
7.8项目编码标准 170
本章小结 172
习题7 172
第8章软件测试 173
8.1 软件测试概念 173
8.1.1尽早地测试 173
8.1.2测试的目的 173
8.1.3测试的任务 174
8.2 测试团队 175
8.1.4软件开发与代码测试 175
8.3 测试原理 176
8.3.1 面向对象与面向过程测试 177
8.3.2测试的经验谈 177
8.4错误、故障和失效 178
8.4.1定义 178
8.4.2三个术语的相关性 178
8.5测试计划和测试用例 179
8.5.1测试计划 179
8.4.3错误是否应该分等级 179
8.5.2测试喻示 180
8.5.3测试用例 181
8.5.4程序正确性证明 181
8.6 测试分类 182
8.6.1测试方式 182
8.6.2黑盒测试 183
8.6.3边界值测试 184
8.6.4白盒测试 184
8.7.1单元测试 185
8.6.5回归测试 185
8.7代码测试阶段 185
8.7.2集成测试 186
8.7.3系统测试 187
8.7.4用户验收测试 188
8.8 测试步骤 188
8.9面向对象测试的特殊论题 189
8.9.1面向对象的单元测试 190
8.9.2面向对象的集成测试 190
8.9.3有关继承的测试 190
8.10.1测试计划 192
8.10 测试LMS的案例分析 192
8.10.2单元测试阶段 193
8.10.3系统地提出测试用例 194
8.11 调试 195
8.11.1调试活动的难度 195
8.11.2调试原则 196
8.11.3调试的方法 197
8.11.4调试的步骤 199
习题8 200
本章小结 200
9.1 软件质量因素 201
9.1.1 软件质量的定义和模型 201
第9章软件质量保证 201
9.1.2软件质量因素细分 203
9.2提高质量的基本方法 206
9.2.1质量、生产率与成本 206
9.2.2软件过程改进 206
9.2.3优化与折中 207
9.3软件质量保证 208
9.2.4软件质量评价原则 208
9.4技术审查与管理复审 209
9.4.1进行评审的必要性 209
9.4.2技术审查的标准和方法 210
9.4.3评审的内容 211
9.5软件质量控制 213
9.5.1我国软件现状 213
9.5.2引入规范过程 214
9.6.2 ISO 9001标准 215
9.6.1 ISO质量保证模型 215
9.6软件质量保证标准 215
本章小结 216
习题9 216
第10章 软件维护和配置管理 217
10.1 软件维护概念 217
10.1.1维护的类型 217
10.1.2维护类型的比例 218
10.2.1 结构化维护与非结构化维护的对比 219
10.2软件维护的特点 219
10.1.3区分维护类型 219
10.2.2维护的代价 220
10.2.3维护的问题 221
10.3 维护过程 221
10.3.1维护组织 221
10.3.2维护报告 222
10.3.3维护周期 222
10.3.4保存维护记录 223
10.4可维护性 224
10.4.1影响软件可维护性的因素 224
10.3.5评价维护活动 224
10.4.2文档 225
10.4.3可维护性复审 226
10.4.4软件维护的复审 226
10.5逆向工程与再生工程 228
10.5.1逆向工程与再生工程定义 228
10.5.2预防性维护 228
10.5.3逆向工程的元素 229
10.5.4恢复信息的级别和方法 229
10.6.1软件配置项和基线 230
10.6 软件配置管理 230
10.6.2配置标识 233
10.6.3版本控制 233
10.6.4变更控制 234
10.6.5配置审核 236
10.6.6配置状态报告 236
本章小结 237
习题10 237
参考文献 239
索 引 240