第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 其他軟件體系結構方法 12
1.4.1 4+1視圖 12
1.4.2 RM-ODP視點 13
1.4.3 Bass的體系結構的構造 14
1.4.4 Hofmeister的軟件體系結構視圖 14
1.5 推薦讀物 15
第2章 軟件體系架構師的角色 17
2.1 在開發(fā)組織中與其他關鍵角色的關系 20
2.2 架構師的技能和背景 23
2.3 引入體系結構經驗 25
2.4 體系結構團隊的構成 25
2.5 與軟件架構師相關的陷阱和圈套 26
2.5.1 明確領導的定位 27
2.5.2 軟件架構師匯報的組織結構 27
2.5.3 軟件架構師和技術領導的地理位置 27
2.5.4 體系結構團隊的規(guī)模和組成 28
2.5.5 軟件體系結構生命周期 29
2.6 推薦讀物 29
第3章 軟件體系結構和開發(fā)過程 31
3.1 迭代開發(fā)的概要 31
3.1.1 開發(fā)過程中的全部階段的概述 32
3.1.2 生命周期階段 33
3.1.3 體系結構和靈活過程 35
3.1.4 早開始, 不斷細化 37
3.2 需求管理 38
3.2.1 用例和需求工程 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.4 設計通信會議 46
3.4.5 管理會議 46
3.4.6 供貨商陳述會議 46
3.4.7 分散式的技術會議 47
3.5 軟件體系結構過程活動中的陷阱和圈套 47
3.5.1 開發(fā)者和架構師之間缺乏及時溝通 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章 實例系統(tǒng)概要 51
4.1 系統(tǒng)概要 52
4.2 系統(tǒng)接口概要 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 類和子系統(tǒng)圖 63
5.3.3 交互(順序和協(xié)作)圖 64
5.3.4 部署圖 66
5.3.5 狀態(tài)圖 67
5.3.6 活動圖 67
5.4 管理復雜度 68
5.4.1 關注建模的用例 69
5.4.2 關注建模的元素 69
5.4.3 細節(jié)層 70
5.4.4 模型數量的控制 70
5.4.5 使用附加的文本信息 71
5.5 推薦讀物 72
第6章 系統(tǒng)環(huán)境和領域分析 73
6.1 概念圖 73
6.2 環(huán)境視點 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
6.4.4 候選子系統(tǒng)標識 88
6.5 推薦讀物 90
第7章 構件設計和建模 93
7.1 概述 93
7.1.1 基于構件的開發(fā) 93
7.1.2 術語 94
7.1.3 通信和接口 96
7.1.4 發(fā)現構件 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 構件狀態(tài)建模 111
7.5 高級可配置構件體系結構的建模 114
7.6 推薦讀物 115
第8章 子系統(tǒng)的設計 117
8.1 術語 117
8.2 對子系統(tǒng). 接口和分層進行建模 119
8.2.1 子系統(tǒng)接口依賴性視點 119
8.2.2 利用分層加強子系統(tǒng)依賴視圖的功能 121
8.2.3 頂層依賴 123
8.2.4 分層子系統(tǒng)視點 123
8.3 子系統(tǒng)和層與實現的映射 128
8.3.1 子系統(tǒng). 層和構造樹 128
8.3.2 子系統(tǒng)和構件 130
8.4 推薦讀物 131
第9章 事務和數據設計 133
9.1 邏輯數據體系結構 133
9.1.1 邏輯數據模型的穩(wěn)定性 135
9.1.2 穩(wěn)定的邏輯數據模型的影響 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 事務動態(tài)性建模 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 進程狀態(tài)視點 164
10.3 部署視點 168
10.3.1 可伸縮節(jié)點的設計 171
10.3.2 備份/歸檔設計 171
10.4 推薦讀物 174
第11章 體系結構技術 175
11.1 體系結構開發(fā)技術 175
11.1.1 共性和可變性的分析 176
11.1.2 可變性設計 177
11.1.3 生成程序設計技術 178
11.1.4 構造一個框架系統(tǒng) 178
11.1.5 原型構造 179
11.1.6 接口開發(fā)——契約式設計 180
11.1.7 體系結構描述語言 181
11.1.8 體系結構的評價 181
11.2 軟件劃分策略——關注劃分 181
11.2.1 功能分解 182
11.2.2 分離配置數據 183
11.2.3 分離特有硬件(hardware-specific)構件 183
11.2.4 分離時間關鍵(time-critical)構件 183
11.2.5 從用戶接口中分離領域實現模型 183
11.2.6 從實現技術中分離領域實現模型 184
11.2.7 從監(jiān)控中分離主要功能 184
11.2.8 分離錯誤恢復處理 184
11.2.9 外部接口的適配性 185
11.3 軟件可變性和依賴性管理 185
11.3.1 穩(wěn)定性依賴原則(SDP) 186
11.3.2 無環(huán)依賴原則 187
11.3.3 接口分離原則 187
11.4 使用體系結構模式 188
11.5 集成策略 189
11.5.1 純數據(Data-only) 集成 190
11.5.2 可執(zhí)行集成 191
11.6 建立體系結構以支持開發(fā) 192
11.6.1 配置和變化的管理 192
11.6.2 構造管理 192
11.6.3 連續(xù)集成 193
11.6.4 預期的多語言開發(fā) 193
11.6.5 預期技巧性開發(fā)(改編技術) 194
11.7 推薦讀物 195
第12章 視點的應用 197
12.1 自底向上的體系結構開發(fā) 197
12.2 自頂向下的體系結構開發(fā) 199
12.3 消息協(xié)議和接口開發(fā) 201
12.4 對現存系統(tǒng)的再開發(fā) 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