圖書信息
副標題: 敏捷軟體開發與設計的最佳實踐原作名: Essential Skills for the Agile Developer: A Guide to Better Programming and Design
作者: Alan Shalloway / Scott Bain / Ken Pugh /Amir Kolsky
譯者: 鄭立 / 鄒駿 / 黃靈
出版社: 機械工業出版社華章公司
出版年: 2012-9-5
頁數: 204
定價: 59.00元
裝幀: 平裝
內容簡介
《敏捷技能修煉:敏捷軟體開發與設計的最佳實踐》的4位作者都是世界頂級的軟體開發專家和敏捷導師,都有數十年的軟體行業從業經驗,其中3位曾榮獲Jolt大獎。本書是敏捷軟體開發領域公認的經典著作,權威性毋庸置疑。書中內容圍繞“敏捷式編程”這一主題展開,對每一位敏捷軟體開發人員都應該掌握的核心技能和技術進行了深入闡述,總結出了大量最佳實踐,提供了一整套最精煉的技術集合,可以幫助他們在開發中變得遊刃有餘,極大地提高開發效率和軟體質量。
《敏捷技能修煉:敏捷軟體開發與設計的最佳實踐》共分四個部分:第一部分(1~7章),闡述了在軟體開發過程中能起到“四兩撥千斤”作用的幾種思想方法(“小舵板”),如意圖導向編程、分離構造和使用、測試先行和Shalloway原則等,並總結了業界常用的幾種實踐,包括如何封裝、面向接口的設計和驗收測試驅動等;第二部分(8~9章),對過度設計和持續集成這兩個問題進行了深入的探討,並給出了最佳實踐;第三部分(10~13章),作者分享了很多只有在他們的教學現場才能獲得的經驗,這些經驗是優秀架構師應該具備的,具體包括共性和可變性分析、以開放關閉原則為目標的重構、需求與功能接口、何時以及如何使用繼承等重要內容;第四部分是附錄,介紹了統一建模語言、提高代碼質量的原則,以及如何封裝原始數據類型等。
作者簡介
Alan Shalloway,Net Objectives公司創始人及CEO。Alan有40多年工作經驗,他是計算機軟體行業,特別是精益、看板、產品系列管理、scrum和敏捷設計方面的思想領導者。他幫助公司在企業級層面向精益和敏捷方式轉型,同時教授員工相關課程。Alan開發了關於精益-敏捷的培訓輔導方法,這幫助Net Objectives公司的客戶取得了長期的可持續的生產力。他經常活躍於全球範圍的高端峰會並發表精彩演講。他還是《Design Patterns Explained: A New Perspective on Object-Oriented Design》(Jolt獲獎作品)和《Lean-Agile Pocket Guide for Scrum Teams》的主要作者。在他的職業生涯中,Alan從事過多個行業。他是精益軟體和系統協會(the Lean Software and Systems Consortium)的共同創始人及董事會成員。他擁有麻省理工學院計算機科學系的碩士學位和艾莫利大學(Emory University)數學系的碩士學位。更多詳細信息請查看Twitter上的@alshalloway。Scott Bain,在計算機技術方面有將近40年經驗,從事過軟體開發、軟體工程、框架設計等方面的工作。Scott也曾經從事課堂和遠程教學等教育活動,包括課程的設計、實施培訓和相關管理,給用戶提供認證培訓和終端用戶培訓。目前Scott在敏捷分析和設計模式、高級軟體設計和可持續的測試驅動開發等方面進行授課和提供諮詢。同時,Scott還經常在JavaOne和SDWest這樣的開發者研討會上進行精彩的演講。他是《Emergent Design: The Evolutionary Nature of Professional Software Development》的作者,此書榮獲了Jolt生產力獎。
Ken Pugh, Net Objectives公司高級諮詢師。憑藉多年的豐富經驗,他提供培訓和輔導,幫助公司向精益-敏捷轉型。他熱衷於研究溝通(特別是有效地傳遞需求)、業務價值交付,以及用精益原則來快速進行高質量的交付。同時,在技術課題方面,他提供從面向對象設計到Linux/Unix等多方面的培訓和指導。此外,他還寫過好幾本編程書籍,包括獲得2006年Jolt大獎的《Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability》。 最近的一本書是《Lean-Agile Acceptance Test Driven Development: Better Software Through Collaboration》。他的客戶遍及倫敦、波士頓、悉尼、北京和海得拉巴。工作之餘,他喜歡滑雪、帆船、腳踏車和阿巴拉契亞徒步登山活動。
Amir Kolsky,Net Objectives的資深諮詢師、教練和培訓師。Amir從事計算機科學領域已經超過25年了。他在IBM研究院工作過10年,此外有9年時間在各種大小類型的公司擔任過首席架構師和首席技術官等職位。他從2000年開始接觸敏捷開發。他先後創建了MobileSpear 以及XPand軟體公司,專門在以色列和歐洲提供敏捷輔導、軟體教育和敏捷項目實施。目前Amir把他的專業經驗帶到了Net Objectivs,作為敏捷教練和講師,提供關於精益和敏捷軟體流程、工具和實踐、Scrum、極限編程、設計模式以及測試驅動開發方面的培訓。
圖書目錄
推薦序譯者序
叢書前言
前言
致謝
第一部分 最關鍵的小舵板
第1章 意圖導向編程
1.1意圖導向編程:一個實例
1.2優點
1.2.1方法的內聚性
1.2.2可讀性和表達性
1.2.3調試
1.2.4重構和增強
1.2.5單元測試
1.2.6更易修改和擴展
1.2.7在代碼中發現模式
1.2.8可遷移的方法
1.3小結
第2章 分離構造和使用
2.1一個重要的問題
2.2兩種視圖
2.2.1創建視圖
2.2.2使用視圖
2.2.3隱藏的部分 更容易改動
2.2.4現實的做法
2.2.5一些實際的考量因素
2.3給你的決策計時
2.4重載和C++
2.5自我查驗
2.6小結
第3章 代碼未動,測試先行
3.1一個小舵板:測試與可測試性
3.2什麼是測試
3.3可測試性和代碼質量
3.4案例學習:可測試性
3.4.1隨時應對變化
3.4.2青蛙一樣的程式設計師
3.5一個關於測試先行的思考
3.5.1更好的設計
3.5.2更清晰的範圍和避免不必要的工作
3.5.3降低複雜性
3.5.4其他優勢
3.5.5沒有例外
3.6小結
第4章 Shalloway法則和Shalloway原則
4.1冗餘的種類
4.1.1複製和貼上
4.1.2“魔法”數字
4.1.3其他類型
4.2重新定義冗餘
4.3其他形式的冗餘
4.4設計模式在減少冗餘時扮演的角色
4.5很少有開發人員花費大量的時間去“修改”代碼錯誤
4.6冗餘對代碼質量其他方面的影響
4.7小結
第5章 封裝
5.1未封裝的代碼:對全局變數的破壞
5.2成員標誌的封裝
5.3自封裝成員
5.4預防代碼更改
5.5封裝引用對象的難點
5.6用get()來打破封裝
5.7對象類型的封裝
5.8設計的封裝
5.9各個層次的封裝
5.10實用性建議:把困難封裝起來
5.11小結
第6章 面向接口的設計
6.1針對接口的設計
6.2接口的定義
6.3接口約定
6.4分離不同的視圖
6.5接口的模擬實現
6.6讓接口保持簡單
6.7避免過早採用繼承體系
6.8接口和抽象類
6.9依賴反轉原則
6.10多態性概述
6.11不是每個類都需要接口
6.12小結
第7章 驗收測試驅動開發
7.1兩種開發流程
7.2驗收測試
7.3一個關於驗收測試的實例
7.4實現驗收測試
7.4.1針對用戶界面的測試腳本
7.4.2測試用戶界面
7.4.3XUnit測試
7.4.4驗收測試框架
7.4.5四種方法間的聯繫
7.5一個練習
7.6如果客戶不告訴你怎么做的時候,你應該怎么辦
7.7小結
第二部分 基本態度
第8章 避免過度設計或設計不足
8.1給開發人員的箴言
8.2代碼質量病理學
8.3避免過度設計或設計不足
8.4把複雜度和返工最小化
8.5永不把代碼變得更糟/僅在有目的的情況下降低代碼質量
8.6使代碼容易修改,足夠強大健壯,適應變化並安全可靠
8.7在非面向對象的代碼或遺留系統里編寫易於修改代碼的策略
8.8小結
第9章 持續集成
9.1建立原始碼分支
9.1.1多版本:特殊分支
9.1.2孤立地工作:開發分支
9.1.3問題、解決方案、新的問題
9.2將主幹內容合併回分支
9.3測試驅動開發與合併成本
9.4持續集成
9.5持續集成伺服器
9.6小結
第三部分 設計問題
第10章 共性和可變性分析
10.1用動詞和名詞來做指南:警告,前面有危險
10.2真正的問題是什麼
10.3我們所需要知道的
10.4共性和可變性分析
10.4.1共性分析
10.4.2可變性分析
10.4.3面向對象設計“一箭三雕”
10.5發掘對象的新範式
10.6分析矩陣:一個用例學習
10.7小結
第11章 以開放關閉原則為目標的重構
11.1開放關閉原則
11.1.1從開放關閉原則引申到其他
11.1.2開放關閉原則是一個“原則”
11.2重構
11.2.1為何重構
11.2.2負債還是投資
11.2.3重構和遺留系統
11.2.4以開放關閉原則為目標的重構
11.2.5“及時”設計
11.3小結
第12章 需求與功能接口
12.1迪米特法則
12.2耦合,可惡的耦合,還有依賴
12.2.1耦合和可測試性
12.2.2需求與功能
12.3理想的分離方案:需求接口和功能接口
12.4回到迪米特法則
12.5小結
第13章 何時以及如何使用繼承
13.1“四人組”
13.2初始向量,最終結果
13.3優先委託
13.4使用繼承與使用委託
13.5繼承的使用
13.6可擴展性
13.7在敏捷開發里套用四人組的訓誡
13.8測試問題
13.9更多
第四部分 附錄
附錄A統一建模語言概覽
附錄B代碼質量
附錄C封裝原始數據類型