目 录 1
第1章导论 1
1.1什么是软件体系结构 1
1.1.1软件体系结构不是什么 3
1.1.2软件体系结构属性 4
1.1.3与体系结构有关的其他关键术语的定义 5
1.1.4其他类型的体系结构 6
1.2为什么要有体系结构 8
1.3体系结构视点概要 9
1.4.1 4+1视图 12
1.4其他软件体系结构方法 12
1.4.2RM-ODP视点 13
1.4.3 Bass的体系结构的构造 14
1.4.4 Hofmeister的软件体系结构视图 14
1.5推荐读物 15
第2章软件体系架构师的角色 17
2.1在开发组织中与其他关键角色的关系 20
2.2架构师的技能和背景 23
2.3 引入体系结构经验 25
2.4体系结构团队的构成 25
2.5与软件架构师相关的陷阱和圈套 26
2.5.3软件架构师和技术领导的地理位置 27
2.5.2软件架构师汇报的组织结构 27
2.5.1 明确领导的定位 27
2.5.4体系结构团队的规模和组成 28
2.5.5软件体系结构生命周期 29
2.6推荐读物 29
第3章软件体系结构和开发过程 31
3.1迭代开发的概要 31
3.1.1开发过程中的全部阶段的概述 32
3.1.2生命周期阶段 33
3.1.3体系结构和灵活过程 35
3.1.4早开始,不断细化 37
3.2.1用例和需求工程 38
3.2 需求管理 38
3.2.2影响体系结构的补充需求 39
3.2.3需求跟踪 40
3.3 技术路线(Roadmap)的管理 40
3.3.1外部软件产品 40
3.3.2软件技术管理的陷阱和圈套 42
3.3.3 组织技术路线 44
3.4有效的技术会议 44
3.4.1非正式技术会议 44
3.4.2同事审查和检查 45
3.4.3设计审查 45
3.4.6供货商陈述会议 46
3.4.4设计通信会议 46
3.4.5管理会议 46
3.4.7分散式的技术会议 47
3.5软件体系结构过程活动中的陷阱和圈套 47
3.5.1 开发者和架构师之间缺乏及时沟通 47
3.5.2分析瘫痪 48
3.5.3复用设计 48
3.5.4用例 48
3.5.5计划表 48
3.6计算机辅助软件工程(CASE)工具 49
3.7推荐读物 50
第4章实例系统概要 51
4.1 系统概要 52
4.2系统接口概要 52
4.3 约束 54
4.4主要的操作和软件的需求 55
第5章UML快速浏览 57
5.1 UML图示概括 57
5.2通用作图习俗 59
5.2.1通用特征:构造型、标记值、多实例 59
5.2.2视图标签 62
5.3 图示 62
5.3.1构件实例图 62
5.3.2类和子系统图 63
5.3.3交互(顺序和协作)图 64
5.3.4部署图 66
5.3.5状态图 67
5.3.6活动图 67
5.4管理复杂度 68
5.4.1关注建模的用例 69
5.4.2关注建模的元素 69
5.4.3细节层 70
5.4.4模型数量的控制 70
5.4.5使用附加的文本信息 71
5.5 推荐读物 72
第6章系统环境和领域分析 73
6.1 概念图 73
6.2环境视点 75
6.3领域分析技术 78
6.3.1正式的分析技术 79
6.3.2找出领域实体的其他技术 82
6.3.3分析的捷径 83
6.4分析视点 84
6.4.1交互分析视点 84
6.4.2焦点分析视点 85
6.4.3整体分析视点 87
11.4使用体系结构模式 1 88
6.4.4候选子系统标识 88
6.5推荐读物 90
11.6.1配置和变化的管理 1 92
第7章构件设计和建模 93
7.1 概述 93
7.1.1基于构件的开发 93
7.1.2术语 94
7.1.3通信和接口 96
7.1.4发现构件 96
7.1.5构件设计的质量 97
7.2构件视点 97
7.2.1构件通信 98
7.2.2构件接口 99
7.2.3基于消息的构件建模 102
7.2.4组合接口和消息 104
7.2.5接口和消息的比较 106
7.2.6机制和性能注释 107
7.3构件交互视点 109
7.3.1构件和构件之间的交互 109
7.4构件状态建模 111
7.5 高级可配置构件体系结构的建模 114
7.6推荐读物 115
第8章子系统的设计 117
8.1 术语 117
8.2对子系统、接口和分层进行建模 119
8.2.1子系统接口依赖性视点 119
8.2.2利用分层加强子系统依赖视图的功能 121
8.2.4分层子系统视点 123
8.2.3顶层依赖 123
8.3子系统和层与实现的映射 128
8.3.1子系统、层和构造树 128
8.3.2子系统和构件 130
8.4推荐读物 131
第9章事务和数据设计 133
9.1逻辑数据体系结构 133
9.1.1逻辑数据模型的稳定性 135
9.1.2稳定的逻辑数据模型的影响 136
9.2逻辑数据视点 137
9.2.1逻辑数据视图实例 137
9.2.2消息传递的逻辑数据视图 140
9.3数据模型的设计——其他要考虑的因素 141
9.3.1数据模型和层 142
9.3.2数据模型和映射 142
9.3.3将对象映射到关系数据库 143
9.4事务设计 146
9.4.1事务概念 146
9.4.2事务动态性建模 147
9.4.3事务和接口设计 150
9.5推荐读物 151
第10章进程和部署的设计 153
10.1物理数据视点 153
10.1.1其他存储属性的建模 155
10.1.2详细的物理存储建模 157
10.2进程视点 158
10.2.1进程和构件 161
10.2.2进程和构件管理 161
10.2.3进程状态视点 164
10.3部署视点 168
10.3.1可伸缩节点的设计 171
10.3.2备份/归档设计 171
10.4推荐读物 174
第11章体系结构技术 175
11.1体系结构开发技术 175
11.1.1共性和可变性的分析 176
11.1.2可变性设计 177
11.1.3生成程序设计技术 178
11.1.4构造一个框架系统 178
11.1.5原型构造 179
11.1.6接口开发——契约式设计 180
11.1.7体系结构描述语言 181
11.1.8体系结构的评价 181
11.2软件划分策略——关注划分 181
11.2.1功能分解 182
11.2.5从用户接口中分离领域实现模型 183
11.2.4分离时间关键(time-critical)构件 183
11.2.3分离特有硬件(hardware-specific)构件 183
1 1.2.2分离配置数据 183
11.2.7从监控中分离主要功能 184
11.2.8分离错误恢复处理 184
11.2.6从实现技术中分离领域实现模型 184
11.2.9外部接口的适配性 185
11.3软件可变性和依赖性管理 185
11.3.1稳定性依赖原则(SDP) 186
11.3.2无环依赖原则 187
11.3.3接口分离原则 187
1 .5集成策略 189
11.5.1纯数据(Data-only)集成 190
11.5.2可执行集成 191
11.6建立体系结构以支持开发 192
11.6.2构造管理 192
11.6.3连续集成 193
11.6.4预期的多语言开发 193
11.6.5预期技巧性开发(改编技术) 194
11.7推荐读物 195
第12章视点的应用 197
12.1 自底向上的体系结构开发 197
12.2 自顶向下的体系结构开发 199
12.3消息协议和接口开发 201
12.4对现存系统的再开发 202
12.5体系结构文档化 203
12.6结论 204
12.6.1成为一个软件架师 204
12.6.2实践的现状 206
12.6.3未来前景 207
12.6.4最后的思考 209
12.7推荐读物 209
附录A体系结构视点总结 211
参考文献 217
索引 225