第一部分 导言 3
第1章 构造一个完整的解决方案 3
1.1 市场整合 3
1.2 战略协作 3
1.3 财务协作 3
1.4 软件工程过程 5
1.5 软件工程过程支持环境 5
编者按 6
1.7 以工业标准为目标 6
1.6 培训、指导和咨询服务 6
参考文献 7
Ivar语录 9
第二部分 简史 15
第2章 发生在爱立信的故事:一次巨大的商业成功 15
2.1 背景 15
2.2 产品 16
2.3 AXE方法:概览 16
2.4 成功背后的秘密 17
2.5 它是如何发生的 18
2.6 思想比产品更长久 19
2.7 结论 21
致射 21
参考文献 21
第3章 一个雄心勃勃的目标:使用面向对象技术的软件工业化开发 23
3.1 引言 23
3.2 软件的工业化开发 24
3.3 系统开发 26
3.3.1 系统开发——一个渐进变化的过程 27
3.3.2 增量开发 28
3.3.3 原型 28
3.3.4 从分析到设计 29
3.4 面向对象 30
3.4.1 对象概念 30
3.4.2 类 30
3.5 功能/数据架构和面向对象架构的比较 31
3.5.1 功能/数据隔离 31
3.4.3 继承 31
3.5.2 面向对象 32
3.5.3 面向对象可在所有的开发工作流中使用 33
3.6 大型系统的开发 34
3.6.1 架构 35
3.6.2 方法 36
3.6.3 过程 37
3.6.4 过程更胜于方法 38
3.7 计算机辅助设计 40
3.8 ObjectOry简介 41
3.9 结论 42
致谢 43
参考文献和推荐读物 43
Ivar语录 45
4.1 存在着一场方法之战吗 51
4.2 需要一场方法之战吗 51
4.3 你是说标准化吗 51
第三部分 愿景的种子 51
第4章 方法之战到停火的时候了 51
4.4 能够达成何种结果 52
4.5 该怎么做 52
4.6 为什么要做 52
编者按 53
参考文献 53
第5章 是的,方法之后还存在生命:软件开发过程 55
第6章 用对象技术进行业务流程再造 59
6.1 信息技术的角色 59
6.3 正式的再造过程 60
6.2 有哪些风险以及如何减少风险 60
6.4 面向对象的业务工程 61
6.5 小结 64
编者按 64
参考文献 64
第7章 用构件来构建:迈向成熟的对象技术 67
7.1 面向对象的优点 68
7.2 还需要什么 68
7.3 用专门化的对象分类来管理复杂性 70
7.4 用分层结构来管理复杂性 72
参考文献和推荐读物 74
7.5 小结 74
第8章 通过对象取得成功:现实中的重用 77
8.1 市场要求重用 77
8.2 从爱立信的成功中所获得的重用经验 78
8.3 架构是成功的关键 78
8.4 组织起来管理架构 80
8.5 当然会有些问题 80
8.7 将思想精炼成通用的使用框架 81
8.6 ……当然,我们还从别人那里学了不少 81
8.8 定义完善的方法 82
参考文献 83
第9章 现在该有一个对象建模语言标准了 85
参考文献 88
第10章 只有软件和狗窝才不用蓝图来建造 89
10.1 模型有助于思考 89
10.1.1 真实世界和模型 89
10.1.2 软件作为模型 90
10.2 什么是UML 91
10.3 一个突破 92
Ivar语录 93
第四部分 过程和工具 101
第11章 超越方法和CASE:软件工程过程及其集成支持环境 101
11.1 软件开发仍然是一门手艺 101
11.2 方法并非过程 102
11.3 方法的缺陷 103
11.4 CASE工具不能适应方法 103
11.5 第二代方法 104
11.6 我们需要什么 105
11.6.2 SEP用户 106
11.6.1 SEP用户组织 106
11.6.3 SEP开发组织 107
11.7 SEP支持环境 107
11.8 在投资和回报方面的区别 108
11.9 让SEP/SEPSE成为现实 109
11.10 结论 109
参考文献 110
第12章 再造软件工程过程 111
12.1 再造的技术框架 111
12.2 经验和结论 114
参考文献 115
编者按 115
第13章 设计软件工程过程 117
13.1 在SEP环境中工作 117
13.2 泛化及特化 120
13.3 SEP项目的动态特征 120
13.4 过程的裁剪——SEP框架的使用 121
13.5 经验之谈 121
参考文献和推荐读物 122
13.6 对象的好处 122
第14章 设计一个完整的软件工程过程支持环境 125
14.1 SEPSE的设计始于SEP模型 125
14.2 SEPSE设计特性 128
14.3 SEPSE实现 129
14.4 SEPSE实现的一些重要方面 130
14.4.1 可用性 130
14.4.2 一致性和完备性 130
14.4.5 面向对象的全局存储空间 131
14.4.4 分层架构 131
14.4.3 多角色支持 131
14.5 SEPSE经验谈 132
参考文献 132
第15章 通过确定过程框架来建立自己的过程 133
15.1 方法和过程的区别 133
15.2 商用软件开发组织就是软件工程业务 134
15.3 特定的过程即是软件工程业务的开发案例 134
15.4 是否所有的过程都能定义为软件工程业务的开发案例 134
15.6 是否能在框架上构建具体的软件工程业务 135
15.5 就面向对象系统而言,从普遍意义上来讲,软件工程业务可以泛化成可重用的框架 135
15.7 我们感受到了过程框架的威力 136
参考文献和推荐读物 136
Ivar语录 139
第五部分 用例工程 145
第16章 用例建模基础 145
16.1 前言 145
16.2 用例的直觉认识 146
16.3 一个例子 147
16.4 用例建模 148
16.4.1 参与者的使用 149
16.4.2 用例的使用 150
16.4.3 用例类元 152
16.5 用例最适用的应用程序 153
16.6 用例交互:讨论要点 154
16.7 相关工作 155
参考文献 156
第17章 用例建模基础(续) 159
17.1 用例间的关系 159
17.1.1 泛化关系 160
17.1.2 扩展关系 162
17.1.3 泛化和扩展关系 163
17.2 小结 165
编者按 165
参考文献 166
第18章 用例和对象 167
18.1 软件开发过程中的用例模型和对象模型 167
18.2 类图 168
18.3 交互图 170
参考文献 172
第19章 混淆的OOA和OOD领域 173
19.1 OOA是什么 174
19.1.1 如何进行OOA 174
19.1.2 OOA难道不是一种设计吗 174
19.1.3 业务应用领域是什么以及如何了解用例 175
19.1.4 什么是仿真,分析难道不包括仿真吗 176
19.2 OOD是什么 176
19.3 什么时候开始设计 177
19.3.1 分析模型就是设计模型吗?还是它们应该是互相独立的 178
19.3.2 分析和设计如何保持无缝衔接 179
19.3.3 框架从何而来 179
19.3.4 模式从何而来 180
19.4 结论 180
参考文献 180
第20章 用例工程:释放它的能量 183
20.1 分析用例 184
20.2 设计和实现用例 184
20.4 用例工程的好处 185
20.3 测试实现的用例 185
编者按 187
参考文献和推荐读物 188
第21章 用例建模的形式化 189
21.1 基本用例:建模语言的设计原理 189
21.1.1 用例模型的项目相关人员 190
21.1.2 用例模型的可表达性 190
21.2 形式化层次 192
21.2.2 基本构件 192
21.2.3 交互图 193
21.2.2 类元关系 193
21.2.4 接口 194
21.2.5 状态图 195
21.3 经验 195
21.4 结论 197
参考文献和推荐读物 197
第22章 对用例正在增长的共识 199
22.1 背景 199
22.2 用例和对象 200
22.2.2 把用例作为预想工具 202
22.2.1 对象的观点 202
22.3 重新修订用例间的关系 203
22.3.1 泛化关系 203
22.3.2 扩展关系 203
22.3.3 实例关系 204
22.4 其他方法 204
22.4.1 OMT/Rumbaugh 204
22.4.2 责任驱动设计/Wirfs-Brock 205
22.4.3 对象行为分析 205
22.5 下一个是什么 206
参考文献 207
Ivar语录 209
第六部分 架构与大规模系统 215
第23章 大规模系统中的用例 215
23.1 用例模型介绍 215
23.2 不同级别的系统 216
23.3 不同级别的用例模型 216
23.4 电话交换系统的例子 217
23.5 顺序图与系统接口 218
23.6 下属系统是系统 219
23.7 不同级别用例模型间的映射 220
23.8 小结 221
致谢 221
参考文献 221
第24章 互连系统的系统 223
24.1 互连系统的系统 223
24.2 系统开发的工作流和模型 224
24.3 开发互连系统的系统 225
24.4 系统间的关系 227
24.6 大规模系统 229
24.5 应用领域 229
24.7 分布式系统 230
24.8 结论 230
参考文献 230
第25章 扩展——一种演进大型系统的技术 233
25.1 演进面向对象软件 233
25.2 测试 234
25.3 扩展 234
25.5 实现扩展 235
25.4 历史注解 235
25.6 结论 237
参考文献 238
第26章 用例与架构 239
26.1 用例驱动开发 239
26.2 架构组织了开发工作 241
26.3 保持用例和架构的平衡 243
参考文献 244
27.1 什么是架构 245
第27章 架构是关于每件事情的——但并非每件事情都是架构 245
27.1.1 架构是关于每件事情的 246
27.1.2 架构不是每件事情 246
27.2 模型是每件事情 247
27.3 架构与模型 248
第28章 架构的步骤 251
28.1 什么时候开发架构 251
28.2 哪些用例对架构是重要的 251
28.3 不要漏掉任何用例 252
28.2.2 对系统的用户最重要的用例 252
28.2.1 降低最严重风险的用例 252
28.4 架构基线是一个系统——但却是一个“瘦小的”系统 253
28.5 架构基线和架构描述 254
28.6 架构基线是可运转的 255
28.7 架构:最重要的决定因素 255
第29章 用接口和用例构造可插拔的架构 257
29.1 子系统和接口 257
29.2 一个电信的例子 258
29.2.1 本例中的子系统 260
29.2.2 为可插拔性而构建——高层视图 261
29.2.3 为可插拔性而构建——低层视图 264
29.2.4 不同层次视图间的可跟踪性 265
29.3 可插拔子系统的一种设计方法 265
29.3.1 第1步:确定最高层子系统 265
29.3.2 第2步:把用例分配到子系统中 266
29.3.3 第3步:指定通过接口实现的操作 266
29.3.4 第4步:设计每个子系统内部 267
29.4 经验 267
感谢 268
29.5 相关工作 268
29.6 结论 268
编者按 269
参考文献 269
Ivar语录 271
第七部分 结束语 277
第30章 Objectory就是统一过程 277
30.1 什么是基于构件的开发 278
30.2 怎样找到构件 280
30.3 基于构件开发和面向对象开发之间的区别 281
30.4 什么是Objectory 282
编者按 283
参考文献 284
第31章 统一过程是迭代的 285
31.1 一小步一小步地开发 285
31.2 迭代不是什么 286
31.3 生命周期中的迭代 287
参考文献 289
Ivar语录 291