引言 1
0.1 历史 1
0.2 方法和工具 2
0.3 未来的工作 3
第一章 改进设计 4
1.1 基本术语 4
1.2 控制复杂性的原则 5
1.2.2 封装 6
1.2.1 抽象 6
1.2.3 继承性(刻画一般性-特殊性) 7
1.2.4 联系 7
1.2.5 消息通信 7
1.2.6 通用的组织法则 7
1.2.7 粒度 8
1.2.8 行为分类 8
1.3 OOD和原型的影响 9
1.3.1 做原型的因由 9
1.3.2 关于OOD原型的忠告 11
1.4 OOD的根本目标 13
1.4.1 增进生产效率 13
1.4.2 提高质量 13
1.4.3 加强可维护性 14
1.5 OOD的动机和益处 15
第二章 开发多层次、多部分任务的模型 17
2.1 模型是怎样发现的 18
2.2.1 问题 19
2.2 表示法的统一 19
2.2.2 一种解决方法 20
2.2.3 几个重要含意 20
2.3 五个层次、五个活动 23
2.4 四个部分、四个活动 24
2.5 定义和表示法 25
2.5.1 定义和表示法——类及对象 25
2.5.2 定义和表示法——结构 26
2.5.3 定义和表示法——主题 29
2.5.4 定义和表示法——属性(及实例连接) 30
2.5.5 定义和表示法——服务(及消息连接) 32
2.5.6 表示法——概括 33
第三章 问题域部分的设计 34
3.1 什么是问题域部分 34
3.1.1 方法——不是什么 34
3.1.2 方法——是什么 34
3.2 为什么需要问题域部分的设计 35
3.3 如何进行问题域部分的设计 35
3.3.2 使用OOA结果——并在OOD期间加以改进 36
3.3.1 运用OOA 36
3.3.3 运用OOA结果——并在OOD期间加以增补 37
3.3.4 例子——传感器监控系统 47
3.3.5 例子——OOAToolTM 49
第四章 人机交互部分的设计 52
4.1 什么是人机交互部分 52
4.2 为什么需要人机交互部分 52
4.3 如何设计人机交互部分 53
4.3.1 对人分类 53
4.3.2 描述人及其任务脚本 54
4.3.3 设计命令层 56
4.3.4 设计详细的交互 58
4.3.5 继续做原型 59
4.3.6 设计HIC类 60
4.3.7 根据图形用户界面进行设计 63
4.3.8 例子——传感器监控系统 64
4.3.9 例子——OOAToolTM 65
5.2 为什么需要有任务管理部分 67
5.1 什么是任务管理部分 67
第五章 任务管理部分的设计 67
5.3 怎样设计任务管理部分 68
5.3.1 识别事件驱动任务 68
5.3.2 识别时钟驱动任务 69
5.3.3 识别优先任务和关键任务 69
5.3.4 识别协调者 70
5.3.5 审查每个任务 70
5.3.6 定义每个任务 70
5.3.7 例子——传感器监控系统 72
5.3.8 例子——OOAToolTM 73
第六章 数据管理部分的设计 74
6.1 什么是数据管理部分 74
6.2 为什么需要数据管理部分 74
6.3 如何设计数据管理部分 74
6.3.1 数据管理方法 74
6.3.2 对数据管理工具的评价 77
6.3.3 数据管理部分的设计 78
6.3.4 例子——传感器监控系统 81
6.3.5 例子——OOAToolTM 82
第七章 通过OOPL(或者非OO语言)应用OOD 83
7.1 对语言,一切从实际出发 83
7.2 语言对OO开发的影响 83
7.3 评价语言的语法和特征 84
7.3.1 评价标准 85
7.3.2 语法与特征——C和ObjectPascal 86
7.3.3 语法与特征——Smalltalk和Objective-C 96
7.3.4 语法与特征——Eiffel 104
7.3.5 语法与特征——Ada,一种面向程序包的语言 109
7.3.6 语法与特征——过程语言 114
7.4 选择OOPL 118
7.4.1 哪个OOPL将占有支配地位? 118
7.4.2 从OOA到OOD到OOPL的可重用性 118
7.4.3 类库和开发环境 118
7.4.4 其它问题 119
8.2 耦合 120
第八章 采用OOD评价标准 120
8.1 导言:什么是OOD评价标准,为什么要采用OOD评价标准 123
8.2.1 交互耦合 124
8.2.2 继承耦合 126
8.3 内聚 126
8.3.1 服务内聚 127
8.3.2 类内聚 127
8.3.3 一般-特殊内聚 127
8.4 重用 129
8.4.1 重用为什么很重要? 129
8.4.2 做不到重用的原因何在? 129
8.4.3 重用的级别 130
8.4.4 可重用性的组织方法 132
8.5 其它评价标准 133
8.5.1 设计的清晰度 133
8.5.2 一般-特殊结构的深度 135
8.5.3 保持对象和类的简单性 135
8.5.4 保持协议的简单性 136
8.5.5 保持服务的简单性 136
8.5.6 把设计易变性最小化 137
8.5.9 通过“关键成功因素”来评估 138
8.5.7 系统总体规模最小化 138
8.5.8 能够用“脚本”评估 138
8.5.10 设计中公认的优雅风格 139
8.6 小结 139
第九章 为OOD选择CASE 140
9.1 扩充CASE 140
9.2 OOD需要什么 140
9.2.2 层次 141
9.2.3 组成部分 141
9.2.1 表示法 141
9.2.4 自动跟踪特性 142
9.2.5 高级特性 142
9.2.6 模型检查 142
9.3 目前已有哪些可用的CASE工具 143
9.4 进一步的考虑 144
第十章 开始OOD 145
10.1 另一个银弹? 145
10.2 是开始用OOD的时候了吗? 145
10.2.2 有没有好的面向对象实现技术? 147
10.2.1 面向对象的范型成熟了吗? 147
10.2.3 开发组织是否足够老练? 148
10.2.4 该组织建造的系统是否将采用面向对象的技术? 148
10.3 革命与演化 149
10.4 如何开始OOD 150
10.5 结束语 151
附录A 152
附录B 154
附录C 162