第1章 绪论 1
1.1 给软件架构师的建议 2
劝告的话 3
新生知识 3
无所适从 4
同行相欺 5
管理陷阱 5
定义软件体系结构 6
“体系结构”一词的误用 6
体系结构之前 7
软件危机 8
1.2作为一门学科的软件体系结构 9
体系结构方法 10
通用原则 11
体系结构的论争 12
革新的软件体系结构 13
体系结构范型的转变 14
体系结构标准 19
应用程序和配置文件 26
视点的记法 27
1.3 设计模式与软件体系结构 28
设计模式 29
软件设计层模型 30
反模式 39
1.4 结论 40
1.5 练习 41
第2章 软件体系结构:基础训练 45
面向对象范型 46
2.1 软件范型 46
技术与系统规模 47
对象成为商业的基线 48
数据库与对象 50
主流中的对象 50
靠近构件:脚本语言 50
构件化软件:面向构件的范型 51
“构件”与“对象” 51
构件基础设施 52
构件的软件模式 54
构件化的软件体系结构 55
基于构件的软件开发 56
2.2 开放系统技术 57
2.3 客户机/服务器技术 61
2.4 软件应用体验 72
2.5 技术和应用体系 74
2.6 将标准用于应用系统 77
2.7分布式基础设施 81
2.8 结论 90
2.9练习 91
第3章 软件体系结构:准备战斗 95
3.1 软件体系结构范型转变 95
传统的系统假设 96
分布式假设——对传统的颠覆 96
多组织系统 96
作出范型转变 97
旧的软件 98
3.2错误的方法 98
一个例子:错误的方法 99
骑士上场:英雄式程序员 100
3.3 正确的方法:企业体系结构开发 101
以体系结构为中心的过程 102
步骤1:系统构想 102
步骤2:需求分析 104
步骤3:体系结构规划 105
计算接口体系结构 107
分布式工程体系结构 107
技术选择体系结构 109
步骤4:实现模型 109
步骤6:项目管理规划 110
步骤5:体系结构原型 110
步骤7:并行增量开发 111
步骤8:系统转换 112
步骤9:操作和维护 112
步骤10:系统移植 113
3.4底线:时间、人员和费用 113
3.5 结论 114
3.6 练习 115
第4章 软件体系结构:训练学校 117
4.1 体系结构与编程 117
软件的分形模型 118
主要的设计要点 118
设计要点的规模效应 118
使用设计层次 119
软件设计层次 119
4.2使用体系结构管理复杂性 120
创造复杂性 120
选项1:压缩 121
选项2:隐藏 122
选项3:忽略 122
选项4:切分 122
选项5:分块 123
4.3 系统集成 123
4.4业务实例 129
4.5从体系结构到软件开发 133
4.6体系结构的软件记法 139
4.7 总结 150
4.8 练习 151
第5章 领导素质训练 153
5.1 领导素质是一项必要的也是可以学会的能力 153
5.2架构师——团队的建立者 154
5.3 坚持优秀产品的理念 156
5.4架构师的走查 161
5.5 总结 164
5.6练习 165
第6章 软件体系结构:伞兵训练学校 167
6.1 过程 167
6.2建立新的过程 174
6.3团队合作 175
6.4结论 181
6.5练习 182
7.1沟通的挑战 189
第7章 沟通的训练 189
7.2责任驱动的开发 190
7.3沟通的责任 192
7.4 处理反馈 192
7.5 练习 193
第8章 软件体系结构:情报操作 195
8.1 体系结构挖掘 196
自底向上与自顶向下 196
体系结构耕作 196
体系结构挖掘过程 197
挖掘的适用性 198
成功挖掘 199
水平与垂直 199
水平设计元素 202
为未来应用而设计 204
关于可追踪性 204
8.2体系结构迭代 205
软件过程背景 206
体系结构过程的角色 208
宏观过程:体系结构迭代 211
开发人员对体系结构的反应 213
寻求情报,迭代设计 215
微观过程:子项目体系结构 216
混沌构建 218
8.3体系结构评定 221
问题求解 222
评审与检查 223
8.5练习 225
8.4结论 225
第9章 软件体系结构:心理战 229
9.1选择性学习 229
9.2内部控制 230
9.3 期望管理 231
9.4真理的心理学 232
9.5感知未必真实 233
9.6探讨人性的弱点 234
感知参考模型 236
生物反应模型 237
反应的群体应用 238
9.7例子:参考销售 239
9.8所有权心理学 241
9.9心理合气道 242
9.10智力合气道 245
赢得战争 247
赢得和平 248
9.11 结论 249
9.12 练习 250
附录A 体系结构实例:测试结果报告系统 255
A.1 导言 255
A.2 构件互操作的挑战 255
A.3 TRRS的目标体系结构 256
A.4 目标企业视点 256
A.5 目标信息视点 257
A.6 目标技术视点 259
A.7 原型实现 260
A.8 原型计算视点 261
A.9 TRRS术语 262
A.10 用例定义 263
UC001产品信息检索会话 263
UC002产品信息登记会话 264
UC003经验报告登记会话 265
A.11 核心工作流 266
UC004产品登记工作流 266
UC005 COTS确认工作流 266
UC006互操作性确认工作流 267
UC007经验报告更新 267
A.12信息模型 268
产品的信息 269
标准配置文件的信息 270
组织的信息 271
产品相关服务的信息 272
经验报告的信息 272
操作环境的信息 273
A.13 结论 273
附录B 设计模板及实例 275
B.1 概念性设计 275
第一部分 目标 275
第二部分 概念性综述 276
第三部分 责任 276
第四部分 体系结构层 277
第五部分 类和对象、类的语义以及类之间的关系 277
第六部分 特征、数据类型和约束的描述 278
B.2 关系服务的概念性设计 279
第一部分 目标 279
第二部分 概念性综述 279
第七部分 如何使设计能处理相关的用例及需求 279
第三部分 责任 281
第四部分 体系结构的层次 281
第五部分 类和对象、类的语义以及类之间的联系 281
第六部分 特征、数据类型以及约束的描述 284
第七部分 如何使设计能处理相关的用例及需求 285
B.3 高层设计 286
第一部分 屏幕模型 286
第二部分 UML图 286
第三部分 发现界面的使用 286
第一部分 屏幕模型 287
第二部分 设计的考虑 287
第四部分 构件复用 287
B.4关系服务的高层设计 287
第五部分 典型用例 287
第三部分 构件复用 288
第四部分 发现界面的使用 288
第五部分 OMG IDL 288
第六部分 总体 291
第七部分 用于事件跟踪的典型用例 292
第八部分 客户端配置文件 292
第九部分 UML类图 292
附录C 软件体系结构术语表 295
参考文献 305