內容介紹
本書描述了一種恰如其分的軟體架構設計方法。作者建議根據項目面臨的風險來調整架構設計的成本,並從多個視角闡述了軟體架構的建模過程和方法,包括用例模型、概念模型、域模型、設計模型和代碼模型等。本書不僅介紹方法,而且還對方法和概念進行了歸類和闡述,將軟體架構設計融入開發實踐中,與 敏捷開發方法有機地結合在一起,適合普通程式設計師閱讀。.
這是一本超值的書,案例豐富有趣,言簡意賅,閱讀輕鬆。當年如果讀到這樣的書,我可以少犯許多錯誤!渴望成為更為優秀軟體設計師的讀者,這本書絕對值得在你的書架上占有一席之地。
——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章概述 11.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.2COTS組件的集成 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.7UML的用法 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.5Yinzer系統的設計之旅 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.14map-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