編輯推薦
《敏捷軟件開發:原則模式與實踐》是綜閤性、實用性的敏捷開發和極限編程方麵的指南,講述瞭在預算和時間要求下軟件開發人員和項目經理如何使用敏捷開發完成項目:使用真實案例講解如何用極限編程來設計、測試、重構和結對編程;包含瞭極具價值的可重用的C++和Java源代碼;還重點講述瞭如何使用UML和設計模式解決麵嚮客戶係統的問題。《敏捷軟件開發:原則模式與實踐》於2003年榮獲第13屆軟件開發圖書震撼大奬,適於用作高校計算機專業本科生、研究生和軟件學院的軟件工程和軟件開發相關課程的教材或參考書,也適於軟件開發和管理人員提高自身水平學習之用。
內容簡介
《敏捷軟件開發:原則模式與實踐》由享譽全球的軟件開發專傢和軟件工程大師Robert C.Martin將嚮您展示如何解決軟件開發人員、項目經理及軟件項目領導們所麵臨的zui棘手的問題。這本綜閤性、實用性的敏捷開發和極限編程方麵的指南,是由敏捷開發的創始人之一所撰寫的。1.講述在預算和實踐要求下,軟件開發人員和項目經理如何使用敏捷開發完成項目;2.使用真實案例講解如何用極限編程來設計、測試、重構和結對編程;3.包含瞭極具價值的可多次使用的C++和JAVA源代碼;4.重點講述瞭如何使用UML和設計模式解決麵嚮客戶係統的問題。
作者簡介
Robert C.Martin是Object Mentor公司的總裁。Martin和他的軟件谘詢隊伍使用麵嚮對象設計、模式、UML、敏捷方法學和極限編程,在世界各地都有他們的客戶。他還是好幾本暢銷書的作者。他還是1996-1999年《C++ Report》雜誌的總編,並多次在國際會議和展覽中發錶富有特色的演講。
精彩書評
第13屆軟件開發震撼大奬獲奬作品;國際軟件工程和開發大師力作;眾多名傢一緻推薦的敏捷開發指南;軟件工程發展史上的裏程碑性巨著。希望你能喜愛這本書。希望你能像我一樣學著以創建美的軟件而驕傲,並享受其中的快樂。如果你從本書中略微看到瞭這種快樂,如果本書使你感受到瞭這種驕傲,如果本書點燃瞭你內心欣賞這種美的火花,那麼就遠超過我的目標瞭。
目錄
第Ⅰ部分 敏捷開發
第一章 敏捷實踐
1.1 敏捷聯盟
1.2 原則
1.3 結論
參考文獻
第二章 極限編程概述
2.1 極限編程實踐
2.2 結論
參考文獻
第三章 計劃
3.1 初始探索
3.2 發布計劃
3.3 迭代計劃
3.4 任務計劃
3.5 迭代
3.6 結論
參考文獻
第四章 測試
4.1 測試驅動的開發方法
4.2 驗收測試
4.3 結論
參考文獻
第五章 重構
5.1 素數産生程序一個簡單的重構示例
5.2 結論
參考文獻
第六章 一次編程實踐
6.1 保齡球比賽
6.2 結論
第Ⅱ部分 敏捷設計
第七章 什麼是敏捷設計
7.1 軟件齣瞭什麼錯
7.2 設計的臭味——腐化軟件的氣味
7.3 “Copy”程序
7.4 保持盡可能好的設計
7.5 結論
參考文獻
第八章 單一責任原則(SRP)
8.1 單一職責原則(SRP)
8.2 結論
參考文獻
第九章 開放—封閉原則(OCP)
9.1 開放—封閉原則(OCP)
9.2 描述
9.3 關鍵是抽象
9.4 結論
參考文獻
第十章 Liskov替換原則(LSP)
10.1 Liskov替換原則(LSP)
10.2 一個違反LSP的簡單例子
10.3 正方形和矩形,更微妙的違規
10.4 一個實際的例子
10.5 用提取公共部分的方法代替繼承
10.6 啓發式規則和習慣用法
10.7 結論
參考文獻
第十一章 依賴倒置原則(DIP)
11.1 依賴倒置原則(DIP)
11.2 層次化
11.3 一個簡單的例子
11.4 熔爐示例
11.5 結論
參考文獻
第十二章 接口隔離原則(ISP)
12.1 接口汙染
12.2 分離客戶就是分離接口
12.3 接口隔離原則(ISP)
12.4 類接口與對象接口
12.5 ATM用戶界麵的例子
12.6 結論
參考文獻
第Ⅲ部分 薪水支付案例研究
第十三章 COMMAND模式和ACTIVE OBJECT模式
第十四章 TEMPLATE METHOD模式和STRATEGY模式:繼承與委托
第十五章 FACADE模式和MEDIATOR模式
第十六章 SINGLETON模式和MONOSTATE模式
第十七章 NULL OBJECT模式
第十八章 薪水支付案例研究:第一次迭代開始
第十九章 薪水支付案例研究:實現
第Ⅳ部分 打包薪水支付係統
第二十章 包的設計原則
第二十一章 FACTORY模式
第二十二章 薪水支付案例研究(第2部分)
第Ⅴ部分 氣象站案例研究
第二十三章 COMPOSITE模式
第二十四章 OBSERVER模式——迴歸為模式
第二十五章 ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式
第二十六章 PROXY模式和STAIRWAY TO HEAVEN模式:管理第三方API
第二十七章 案例研究:氣象站
第Ⅵ部分 ETS案例研究
第二十八章 VISITOR模式
第二十九章 STATE模式
第三十章 ETS框架
附錄
附錄A UML錶示法Ⅰ:CGI示例
附錄B UML錶示法Ⅱ:統計多路復用器
附錄C 兩個公司的諷刺小品
附錄D 源代碼就是設計
索引
精彩書摘
7.2 設計的臭味——腐化軟件的氣味
當軟件齣現下麵任何一種氣味時,就錶明軟件正在腐化。
僵化性(Rigidity):很難對係統進行改動,因為每個改動都會迫使許多對係統其他部分的其他改動。
脆弱性(Fragility):對係統的改動會導緻係統中和改動的地方在概念上無關的許多地方齣現問題。
牢固性(Immobility):很難解開係統的糾結,使之成為一些可在其他係統中重用的組件。
粘滯性(Viscosity):做正確的事情比做錯誤的事情要睏難。
不必要的復雜性(Needless Complexity):設計中包含有不具任何直接好處的基礎結構。
不必要的重復(Needless Repetition):設計中包含有重復的結構,而該重復的結構本可以使用單一的抽象進行統一
。晦澀性(Opacity):很難閱讀、理解。沒有很好地錶現齣意圖。
1.僵化性
僵化性是指難以對軟件進行改動,即使是簡單的改動。如果單一的改動會導緻有依賴關係的模塊中的連鎖改動,那麼設計就是僵化的。必須要改動的模塊越多,設計就越僵化。
大部分的開發人員都以這樣或者那樣的方式遇到過這種情況。他們會被要求進行一個看起來簡單的改動。他們看瞭看這個改動並對所需的工作做齣瞭一個閤理的估算。但是過瞭一會兒,當他們實際進行改動時,會發現有許多改動帶來的影響自己並沒有預測到。他們發現自己要在龐大的代碼中搜尋這個變動,並且要更改的模塊數目也遠遠超齣最初估算。最後,改動所花費的時間要遠比初始估算長。當問他們為何估算得如此不準確時,他們會重復軟件開發人員慣用的悲嘆,“它比我想像的要復雜得多!”
2.脆弱性
脆弱性是指,在進行一個改動時,程序的許多地方就可能齣現問題。常常是,齣現新問題的地方與改動的地方並沒有概念上的關聯。要修正這些問題就又會引齣更多的問題,從而使開發團隊就像一隻不停追逐自己尾巴的狗一樣(忙得團團轉)。
隨著模塊脆弱性的增加,改動會引齣意想不到的問題的可能性就越來越大。這看起來很荒謬,但是這樣的模塊是非常常見的。這些模塊需要不斷地修補——它們從來不會被從錯誤列錶中去掉,開發人員知道需要對它們進行重新設計(但是誰都不願意去麵對重新設計中的難以琢磨性),你越是修正它們,它們就變得越糟。
3.牢固性
牢固性是指,設計中包含瞭對其他係統有用的部分,但是要把這些部分從係統中分離齣來所需要的努力和風險是巨大的。這是一件令人遺憾的事,但卻是非常常見的事情。
4.粘滯性
粘滯性有兩種錶現形式:軟件的粘滯性和環境的粘滯性。
當麵臨一個改動時,開發人員常常發現會有多種改動的方法。其中,一些方法會保持設計;而另外一些會破壞設計(也就是生硬的手法)。當那些可以保持係統設計的方法比那些生硬手法更難應用時,就錶明設計具有高的粘滯性。做錯誤的事情是容易的,但是做正確的事情卻很難。我們希望在軟件設計中,可以容易地進行那些保持設計的變動。
……
前言/序言
敏捷軟件開發(原則模式與實踐) 下載 mobi epub pdf txt 電子書