第1章 绪论 1
1.1 软件及其发展的三个阶级 1
1.2 软件工程 2
1.3 软件工程面临的问题 3
1.3.1 软件可靠性 3
1.3.2 软件生产率 4
1.3.3 软件再应用 4
1.3.4 软件维护 5
1.4 软件的生命期 6
第2章 软件开发技术 8
2.1 结构化分析和设计技术 8
2.1.1 SADT的图形语言 8
2.1.2 SADT模型 8
2.1.3 系统开发过程与SADT的缺陷 10
2.2 Jackson软件设计技术 11
2.2.1 数据结构表示法 12
2.2.2 系统开发过程与缺陷 13
2.3 快速原型设计技术 14
2.3.1 原型模型与建模步骤 15
2.3.2 原型技术的特点 17
2.4 面向对象设计技术 17
第3章 什么是面向对象 19
3.1 对象 20
3.2 类和实例 23
3.3 多形 25
3.4 继承性 26
3.5 建立合理的继承性结构 29
3.6 多继承性 31
4.1 几种典型OOPL 33
第4章 面向对象的程序设计 33
4.2 对象 37
4.3 类和实例 37
4.4 类作为对象 39
4.5 继承性 41
4.6 多形 43
4.7 实例 45
4.8 OOP计算模型 47
第5章 面向对象的开发技术 49
5.1 面向对象分析 49
5.2 面向对象的设计 50
5.3 面向对象测试 51
6.1.1 模型 53
第6章 系统的组成与模型 53
6.1 系统开始是构造模型 53
6.1.2 软件系统结构 55
6.1.3 开发过程 56
6.1.4 过程和模型 57
6.2 需求模型 58
6.2.1 使用者和使用事件 58
6.2.2 使用事件驱动设计 60
6.3 分析模型 61
6.3.1 分析模型的对象 61
6.3.2 由RM构造AM 66
6.4 设计模型 67
6.4.1 设计模型的对象 67
6.4.2 用DM 工作 69
6.6 测试模型 70
6.5 实现模型 70
第7章 分析 71
7.1 引论 71
7.1.1 为什么要有分析过程 71
7.1.2 分析过程中做什么 71
7.1.3 实例 72
7.2 RM 73
7.2.1 用户的需求定义是系统开发的基础 73
7.2.2 使用者 73
7.2.3 使用事件 74
7.2.4 界面描述 78
7.2.5 问题领域对象 78
7.2.6 RM的进一步修正 79
7.2.7 讨论 81
7.3 AM 82
7.3.1 界面对象 83
7.3.2 命名关联 84
7.3.3 实体对象 87
7.3.4 控制对象 90
7.3.5 子系统 93
第8章 构造 96
8.1 引论 96
8.1.1 为什么要有构造过程 96
8.1.2 构造阶段做什么 97
8.2 DM 97
8.2.1 可跟踪性 97
8.2.2 实现环境 99
8.2.3 关联图 102
8.2.4 消息定义 104
8.2.5 关联图的结构 106
8.2.6 扩展使用事件 108
8.2.7 一致化 108
8.3 块设计 109
8.3.1 块的界面设计 109
8.3.2 对象行为 112
8.3.3 块的内部结构 118
8.3.4 实现 118
8.3.5 探针的实现 122
8.4 结构工作 123
8.4.1 现存的产品 124
8.4.2 抽象 124
8.4.3 逐渐式开发 125
8.4.4 进一步讨论的问题 125
9.1 实时系统的分类 126
第9章 实时系统规模描述 126
9.2 基本问题 127
9.3 分析 127
9.4 构造 128
9.5 测试和验证 133
第10章 数据库规格描述 134
10.1 引言 134
10.2 关系DBMS 135
10.2.1 问题的提出 135
10.2.2 从对象到表 135
10.2.3 继承性问题 136
10.2.4 模型化持久性对象 138
10.3 面向对象DBMS 140
10.4 讨论 141
11.1.1 软件工程中的可重用性 142
11.1.2 部件作为增强机制 142
11.1 引言 142
第11章 部件 142
11.1.3 现在为什么还没有好部件 143
11.1.4 新的探讨 144
11.2 软件部件 144
11.3 部件的使用 146
11.3.1 找出使用部件的位置 146
11.3.2 用部件实现 147
11.4 部件的管理 148
11.4.1 部件的构造 148
11.4.2 部件系统 149
11.4.3 部件文档 151
11.5小结 152
12.1 引言 154
第12章 测试 154
12.2 测试中的一般问题 155
12.2.1 测试的目的 155
12.2.2 测试策略 156
12.2.3 等价集 157
12.2.4 自动测试 158
12.3 单元测试 159
12.3.1 需求规格测试 159
12.3.2 基于状态的测试 160
12.3.3 结构测试 161
12.4 综合测试 163
12.5 系统测试 164
12.6 测试过程 165
12.6.1 测试计划 165
12.6.4 执行测试 166
12.6.2 测试标记 166
12.6.3 测试规格说明书 166
12.6.5 错误分析 167
第13章 示例学习之一 : 仓库管理系统 168
13.1 例子概述 168
13.2 ACME仓库管理有限公司 168
13.3 需求模型 169
13.3.1 仓库间人为调配 171
13.3.2 客户要求提货 173
13.3.3 抽象事件 174
13.4 分析模型 175
13.4.1 分析对象 175
13.4.2 子系统 184
13.5.1 确定实现环境 186
13.5 构造 186
13.5.2 块结构 187
13.5.3 使用事件设计 190
13.5.4 块设计 193
第14章 示例学习之二:通信 195
14.1 通信转接系统 195
14.2 需求模型 197
14.2.1 局域通话使用事件 199
14.2.2 变更用户实例 200
14.2.3 抽象使用事件 201
14.3 分析模型 202
14.3.1 局域通话使用事件 202
14.3.2 进一步细化 204
14.3.3 用户变更使用事件 205
14.3.4 子系统 205
14.4.1 块结构 206
14.4 设计模型 206
14.4.2 进程构造 209
14.4.3 使用实例设计 209
14.4.4 块接口 212
14.5 实现模型 214
14.5.1 用If-语句实现 214
14.5.2 执行:分支实现 216
第15章 面向对象软件工程的管理 218
15.1 概述 218
15.2 项目选择和准备工作 218
15.2.1 引进新的开发方法 218
15.2.2 如何选择第1个项目 219
15.2.3 教育和培训 220
15.2.4 风险性分析 221
15.3 产品开发组 223
15.4 项目组织与管理 226
15.4.1逐步增长的开发方法 228
15.5 项目开发人员 230
15.6 软件质量保证 232
15.7 软件度量 234
第16章 其他OOM 238
16.1 概述 238
16.2 OOM简介 239
16.3 面向对象分析(OOA/Coad-Yourdon) 240
16.3.1 构造 240
16.3.2 构造方法 241
16.3.3 交付 241
16.3.4 讨论 242
16.4 面向对象设计(OOD/Booch) 243
16.4.1 构造 243
16.4.2 方法 244
16.4.4 讨论 245
16.4.3 交付 245
16.5 层次化面向对象设计(HOOD) 246
16.5.1 构造 246
16.5.2 方法 247
16.5.3 交付 248
16.5.4 讨论 248
16.6 对象模型化技术(OMT) 249
16.6.1 构造 249
16.6.2 方法 250
16.6.3 交付 250
16.6.4 讨论 250
16.7 功能驱动设计 251
16.7.1 构造 251
16.7.3 交付 252
16.7.2 方法 252
16.7.4 讨论 253
16.8 小结 253
附录A :对象方法学的发展 255
A.1 简介 255
A.2 对象方法 256
A.2.1 开发事件 256
A.2.2 开发实体对象 257
A.2.3 进程 259
A.2.4 根据开发实体对象和进程来研究开发事件 259
A.2.5 企业构造 260
A.2.6 根据活动块得到的开发事件 260
A.2.7 活动块的实现 261
A.3 对象方法学 261
参考文献 262