《恰如其分的軟體架構》是2013年華中科技大學出版社出版的中譯圖書,作者George Fairbanks。
基本介紹
- 書名:恰如其分的軟體架構
- 又名:風險驅動的設計方法
- 作者:George Fairbanks
- 原版名稱:Just Enough Software Architecture: A Risk-Driven Approach
- 譯者:張逸/倪健/高翌翔
- ISBN:9787560990750
- 類別:軟體設計
- 頁數:376
- 定價:88.00
- 出版社:華中科技大學出版社
- 出版時間:2013-9-1
- 裝幀:平裝
內容介紹,作者介紹,作品目錄,
內容介紹
本書描述了一種恰如其分的軟體架構設計方法。作者建議根據項目面臨的風險來調整架構設計的成本,並從多個視角闡述了軟體架構的建模過程和方法,包括用例模型、概念模型、域模型、設計模型和代碼模型等。本書不僅介紹方法,而且還對方法和概念進行了歸類和闡述,將軟體架構設計融入開發實踐中,與 敏捷開發方法有機地結合在一起,適合普通程式設計師閱讀。
這是一本超值的書,案例豐富有趣,言簡意賅,閱讀輕鬆。當年如果讀到這樣的書,我可以少犯許多錯誤!渴望成為更為優秀軟體設計師的讀者,這本書絕對值得在你的書架上占有一席之地。
——Timothy J. Halloran博士,SureLogic Inc.工程總監
本書提出的獨特視角讓軟體架構設計變得不再難以捉摸。恰如其分的軟體架構概念及風險驅動的設計理念讓人耳目一新。作者將架構設計原則與現實問題有機地結合起來,值得所有從事軟體開發工作的人士閱讀。
——Marcus Fontoura博士,Yahoo! Research首席科學家兼架構師
Fairbanks把筆墨聚集在“恰如其分”的軟體架構上,這對於每一位想要使架構過程變得更容易的開發人員來說,都是極具吸引力的。本書通過詳細的案例和建議,展示了如何用風險驅動來管理架構的建設和範圍,重點突出,易於理解。同時,作者提供了軟體架構學術方面的很多細節,這對那些對理論和實踐都很感興趣的開發人員非常有益。
——Bradley Schmerl博士,卡耐基梅隆大學計算機科學院資深系統科學家
George Fairbanks的《恰如其分的軟體架構》一書中的風險驅動建模方法已經被NASA Johnson Space Center(JSC)成功地套用於eXtensible Information Modeler (XIM) 項目。項目的所有成員,從項目管理人員到開發人員,都必須遵循。實際上,這本書應該是每一位開發人員的必備工具。僅僅是講述(代碼模型和反模式)的部分,就值回書價了。
——Christopher Dean,美國國家航空航天局詹森空間中心工程科學團隊XIM首席架構師
《恰如其分的軟體架構》教你如何在戰略和戰術上使用工具,以及如何為你的軟體項目選擇架構策略。無論你是一位開發人員還是架構師,本書都是你在架構過程中的必備參考資料。
——Nicholas Sherman,微軟項目經理
作者將過程、生命周期、架構、建模及服務質量方面的最新理念集成在一個條理清楚的框架中。這個框架可以立即套用於你的 IT套用。Fairbanks的寫作異常清晰、精確,同時具有很高的可讀性和趣味性。《恰如其分的軟體架構》是IT套用架構方面一個具有重要貢獻的文獻,對於企業套用架構師來說,也許會成為他們的標準參考資料。
——Ian Maung博士,花旗企業架構部門資深副總裁,Covance前企業架構總監
本書完全滿足了那些軟體開發實踐者的關鍵需求,即如何有效地創建更加實際的系統。George常常運用自己的經驗,並與學術理論相結合,為我們提供一個又一個概念模型、領域(或更廣範圍)內的最佳實踐,以及在軟體架構方面(如何更有用更現實)非常實用的指導。他在書中提出了基於風險的架構方法,並幫助我們認識到怎樣才是“恰如其分”的。本書的問世為軟體架構領域又增添了一份重要的文獻。
——Desmond D’Souza, 《MAp and Catalysis》一書的作者,Kinetium, Inc.
很多系統和軟體開發人員常常追問為什麼要做,以及針對什麼做軟體架構,他們一定會感謝本書的作者在這本書中呈現了清晰的論證和精彩的推理;對於糾結何時,以及如何做架構的開發人員,也會在本書中找到恰如其分的指導,當然還有很多概念和思想。總之,本書簡潔易懂,還有很多可供參考的內容——的確是一本架構精到、設計精心的好書!
——Shang-Wen Cheng博士,航空軟體工程師
如果你打算閱讀一本關於軟體架構的書,那就選擇這一本吧。《恰如其分的軟體架構》覆蓋了每一位程式設計師、開發人員、測試人員、架構師、經理都必須知道的軟體架構的基本概念,它提供了很多在實戰中非常實用的建議,而這只需要你花幾個小時去閱讀!
——Michael Keeling,專業軟體工程師
本書展現了軟體架構將如何幫助你來構建軟體,而不會阻礙軟體的構建;本書能夠讓你關注那些真正值得關注的關鍵性架構工作,從而避免影響編碼工作。
——Kevin Bierhoff博士,專業軟體工程師
作者介紹
George Fairbanks在卡內基·梅隆大學獲得軟體工程專業博士學位,現任Rhino Research公司董事長。Rhino Research是一家專門提供軟體開發培訓及諮詢的公司,總部設在美國科羅拉多州博爾德市。Georg還是軟體體系結構工作會議WISCA(Working International Conference on Software Architecture)、國際軟體維護大 會ICSM(International Conference on Software Maintenance)以及歐洲軟體架構會議的委員會成員。他還是IEEE軟體工程彙刊和IEEE軟體的仲裁委員。
張逸是ThoughtWorks高級諮詢師,程 序員。InfoQ中文站編輯。著譯作包括《軟體設計精要與模式》《WCF服務編程》《Java設計模式》以及評註版《重構:改善既有代碼的設計》。目前居住於成都。
倪健是eBaoTech套用架構師,程式設計師。著作包括《簡單之美:軟體開發實踐者的思考》《IT項目管理那些事兒》(與人合著)。目前居住於上海。
作品目錄
第1章 概述 1
1.1 分治、知識與抽象 2
1.2 軟體架構的三個案例 3
1.3 反思 5
1.4 視角轉換 6
1.5 架構師構建架構 7
1.6 風險驅動的軟體架構 8
1.7 敏捷開發者的架構 9
1.8 關於本書 10
第2章 軟體架構 15
2.1 何為軟體架構? 16
2.2 軟體架構為何重要 18
2.3 架構何時重要? 22
2.4 推定架構 23
2.5 如何運用軟體架構? 24
2.6 架構無關的設計 25
2.7 專注架構的設計 26
2.8 提升架構的設計 27
2.9 大型組織中的架構 30
2.10 結論 31
2.11 延伸閱讀 32
第3章 風險驅動模型 35
3.1 風險驅動模型是什麼? 37
3.2 你現在採用風險驅動了嗎? 38
3.3 風險 39
3.4 技術 42
3.5 選擇技術的指導原則 44
3.6 何時停止 47
3.7 計畫式設計與演進式設計 48
3.8 軟體開發過程 51
3.9 理解過程變化 53
3.10 風險驅動模型與軟體開發過程 55
3.11 套用于敏捷過程 56
3.12 風險與架構重構 58
3.13 風險驅動模型的替代方案 58
3.14 結論 60
3.15 延伸閱讀 61
第4章 實例:家庭媒體播放器 65
4.1 團隊溝通 67
4.2 COTS組件的集成 75
4.3 元數據一致性 81
4.4 結論 86
第5章 建模建議 89
5.1 專注於風險 89
5.2 理解你的架構 90
5.3 傳播架構技能 91
5.4 作出合理的架構決策 92
5.5 避免預先大量設計 93
5.6 避免自頂向下設計 95
5.7 餘下的挑戰 95
5.8 特性和風險:一個故事 97
第6章 工程師使用模型 103
6.1 規模與複雜度需要抽象 104
6.2 抽象提供洞察力和解決手段 105
6.3 分析系統質量 105
6.4 模型忽略細節 106
6.5 模型能夠增強推理 107
6.6 提問在前,建模在後 108
6.7 小結 108
6.8 延伸閱讀 109
第7章 軟體架構的概念模型 111
7.1 規範化模型結構 114
7.2 領域模型、設計模型和代碼模型 115
7.3 指定與細化關係 116
7.4 主模型的視圖 118
7.5 組織模型的其他方式 121
7.6 業務建模 121
7.7 UML的用法 122
7.8 小結 123
7.9 延伸閱讀 123
第8章 領域模型 127
8.1 領域與架構的關係 128
8.2 信息模型 131
8.3 導航和不變數 133
8.4 快照 134
8.5 功能場景 135
8.6 小結 136
8.7 延伸閱讀 137
第9章 設計模型 139
9.1 設計模型 140
9.2 邊界模型 141
9.3 內部模型 141
9.4 質量屬性 142
9.5 Yinzer系統的設計之旅 143
9.6 視圖類型 157
9.7 動態架構模型 161
9.8 架構描述語言 162
9.9 小結 163
9.10 深入閱讀 164
第10章 代碼模型 167
10.1 模型-代碼差異 167
10.2 一致性管理 171
10.3 架構明顯的編碼風格 174
10.4 在代碼中表達設計意圖 175
10.5 模型嵌入代碼原理 177
10.6 表達什麼 178
10.7 在代碼中表達設計意圖的模式 180
10.8 電子郵件處理系統預演 187
10.9 小結 193
第11章 封裝和分割 195
11.1 多層級故事 195
11.2 層級和分割 197
11.3 分解策略 199
11.4 有效封裝 203
11.5 創建封裝接口 206
11.6 小結 210
11.7 深入閱讀 210
第12章 模型元素213
12.1 和部署相關的元素 214
12.2 組件 215
12.3 組件裝配 219
12.4 連線器 223
12.5 設計決策 233
12.6 功能場景 234
12.7 (不變數(約束) 239
12.8 模組 239
12.9 連線埠 241
12.10 質量屬性 246
12.11 質量屬性場景 249
12.12 職責 251
12.13 權衡 252
12.14 小結 253
第13章 模型關係 255
13.1 投影(視圖)關係 256
13.2 分割關係 261
13.3 組合關係 261
13.4 分類關係 261
13.5 泛化關係 262
13.6 指定關係 263
13.7 細化關係 264
13.8 綁定關係 268
13.9 依賴關係 269
13.10 使用關係 269
13.11 小結 270
13.12 深入閱讀 271
第14章 架構風格 273
14.1 優勢 274
14.2 柏拉圖式風格對體驗式風格 275
14.3 約束和以架構為中心的設計 276
14.4 模式對風格 277
14.5 風格目錄 277
14.6 分層風格 277
14.7 大泥球風格 280
14.8 管道-過濾器風格 281
14.9 批量順序處理風格 283
14.10 以模型為中心的風格 285
14.11 分發-訂閱風格 286
14.12 客戶端-伺服器風格和多層 288
14.13 對等風格 290
14.14 map-reduce風格 291
14.15 鏡像,支架和農場風格 293
14.16 小結 294
14.17 深入閱讀 295
第15章 使用架構模型 297
15.1 理想的模型特性 297
15.2 和視圖一起工作 303
15.3 改善視圖質量 306
15.4 提高圖的質量 310
15.5 測試和證明 312
15.6 分析架構模型 312
15.7 架構不匹配 318
15.8 選擇你的抽象級別 319
15.9 規劃用戶界面 320
15.10 指定性模型對描述性模型 320
15.11 對現有系統進行建模 320
15.12 小結 322
15.13 深入閱讀 323
第16章 結論 325
16.1 挑戰 326
16.2 聚焦質量屬性 330
16.3 解決問題,而不是僅僅對它們建模 331
16.4 使用導軌一樣的約束 332
16.5 使用標準架構抽象 333
術語表 335
文獻 347
索引 355
1.1 分治、知識與抽象 2
1.2 軟體架構的三個案例 3
1.3 反思 5
1.4 視角轉換 6
1.5 架構師構建架構 7
1.6 風險驅動的軟體架構 8
1.7 敏捷開發者的架構 9
1.8 關於本書 10
第2章 軟體架構 15
2.1 何為軟體架構? 16
2.2 軟體架構為何重要 18
2.3 架構何時重要? 22
2.4 推定架構 23
2.5 如何運用軟體架構? 24
2.6 架構無關的設計 25
2.7 專注架構的設計 26
2.8 提升架構的設計 27
2.9 大型組織中的架構 30
2.10 結論 31
2.11 延伸閱讀 32
第3章 風險驅動模型 35
3.1 風險驅動模型是什麼? 37
3.2 你現在採用風險驅動了嗎? 38
3.3 風險 39
3.4 技術 42
3.5 選擇技術的指導原則 44
3.6 何時停止 47
3.7 計畫式設計與演進式設計 48
3.8 軟體開發過程 51
3.9 理解過程變化 53
3.10 風險驅動模型與軟體開發過程 55
3.11 套用于敏捷過程 56
3.12 風險與架構重構 58
3.13 風險驅動模型的替代方案 58
3.14 結論 60
3.15 延伸閱讀 61
第4章 實例:家庭媒體播放器 65
4.1 團隊溝通 67
4.2 COTS組件的集成 75
4.3 元數據一致性 81
4.4 結論 86
第5章 建模建議 89
5.1 專注於風險 89
5.2 理解你的架構 90
5.3 傳播架構技能 91
5.4 作出合理的架構決策 92
5.5 避免預先大量設計 93
5.6 避免自頂向下設計 95
5.7 餘下的挑戰 95
5.8 特性和風險:一個故事 97
第6章 工程師使用模型 103
6.1 規模與複雜度需要抽象 104
6.2 抽象提供洞察力和解決手段 105
6.3 分析系統質量 105
6.4 模型忽略細節 106
6.5 模型能夠增強推理 107
6.6 提問在前,建模在後 108
6.7 小結 108
6.8 延伸閱讀 109
第7章 軟體架構的概念模型 111
7.1 規範化模型結構 114
7.2 領域模型、設計模型和代碼模型 115
7.3 指定與細化關係 116
7.4 主模型的視圖 118
7.5 組織模型的其他方式 121
7.6 業務建模 121
7.7 UML的用法 122
7.8 小結 123
7.9 延伸閱讀 123
第8章 領域模型 127
8.1 領域與架構的關係 128
8.2 信息模型 131
8.3 導航和不變數 133
8.4 快照 134
8.5 功能場景 135
8.6 小結 136
8.7 延伸閱讀 137
第9章 設計模型 139
9.1 設計模型 140
9.2 邊界模型 141
9.3 內部模型 141
9.4 質量屬性 142
9.5 Yinzer系統的設計之旅 143
9.6 視圖類型 157
9.7 動態架構模型 161
9.8 架構描述語言 162
9.9 小結 163
9.10 深入閱讀 164
第10章 代碼模型 167
10.1 模型-代碼差異 167
10.2 一致性管理 171
10.3 架構明顯的編碼風格 174
10.4 在代碼中表達設計意圖 175
10.5 模型嵌入代碼原理 177
10.6 表達什麼 178
10.7 在代碼中表達設計意圖的模式 180
10.8 電子郵件處理系統預演 187
10.9 小結 193
第11章 封裝和分割 195
11.1 多層級故事 195
11.2 層級和分割 197
11.3 分解策略 199
11.4 有效封裝 203
11.5 創建封裝接口 206
11.6 小結 210
11.7 深入閱讀 210
第12章 模型元素213
12.1 和部署相關的元素 214
12.2 組件 215
12.3 組件裝配 219
12.4 連線器 223
12.5 設計決策 233
12.6 功能場景 234
12.7 (不變數(約束) 239
12.8 模組 239
12.9 連線埠 241
12.10 質量屬性 246
12.11 質量屬性場景 249
12.12 職責 251
12.13 權衡 252
12.14 小結 253
第13章 模型關係 255
13.1 投影(視圖)關係 256
13.2 分割關係 261
13.3 組合關係 261
13.4 分類關係 261
13.5 泛化關係 262
13.6 指定關係 263
13.7 細化關係 264
13.8 綁定關係 268
13.9 依賴關係 269
13.10 使用關係 269
13.11 小結 270
13.12 深入閱讀 271
第14章 架構風格 273
14.1 優勢 274
14.2 柏拉圖式風格對體驗式風格 275
14.3 約束和以架構為中心的設計 276
14.4 模式對風格 277
14.5 風格目錄 277
14.6 分層風格 277
14.7 大泥球風格 280
14.8 管道-過濾器風格 281
14.9 批量順序處理風格 283
14.10 以模型為中心的風格 285
14.11 分發-訂閱風格 286
14.12 客戶端-伺服器風格和多層 288
14.13 對等風格 290
14.14 map-reduce風格 291
14.15 鏡像,支架和農場風格 293
14.16 小結 294
14.17 深入閱讀 295
第15章 使用架構模型 297
15.1 理想的模型特性 297
15.2 和視圖一起工作 303
15.3 改善視圖質量 306
15.4 提高圖的質量 310
15.5 測試和證明 312
15.6 分析架構模型 312
15.7 架構不匹配 318
15.8 選擇你的抽象級別 319
15.9 規劃用戶界面 320
15.10 指定性模型對描述性模型 320
15.11 對現有系統進行建模 320
15.12 小結 322
15.13 深入閱讀 323
第16章 結論 325
16.1 挑戰 326
16.2 聚焦質量屬性 330
16.3 解決問題,而不是僅僅對它們建模 331
16.4 使用導軌一樣的約束 332
16.5 使用標準架構抽象 333
術語表 335
文獻 347
索引 355