< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
什麼是靈活開發?一種以人為核心、疊代、循序漸進的開發方法。在靈活開發中,軟體項目的建構被切分成多個子項目,各個子項目的成果都經過測試,具備內建和可運作的特征。簡言之,就是把一個大項目分為多個互相聯系,但也可獨立運作的小項目,并分别完成,在此過程中軟體一直處于可使用狀态。
人與人之間的互動是複雜的,并且其效果從來都是難以預期的,但卻是工作中最重要的方面。
-- Tom DeMacro和Timothy Lister
靈活軟體開發宣言:
個體和互動 勝過 過程和工具
可以工作的軟體 勝過 面面俱到的文檔
客戶合作 勝過 合同談判
響應變化 勝過 遵循計劃
雖然右項也有價值,但是我們認為左項具有更大的價值。
靈活宣言遵循的原則:
我們最優先要做的是通過盡早的、持續的傳遞有價值的軟體來使客戶滿意。
即使到了開發的後期,也歡迎改變需求。靈活過程利用變化來為客戶創造競争優勢。
經常性地傳遞可以工作的軟體,傳遞的間隔可以從幾個星期到幾個月,傳遞的時間間隔越短越好。
在整個項目開發期間,業務人員和開發人員必須天天都在一起工作。
圍繞被激勵起來的個體來建構項目。給他們提供所需的環境和支援,并且信任他們能夠完成工作。
在團隊内部,最具有效果并富有效率的傳遞資訊的方法,就是面對面的交談。
工作的軟體是首要的進度度量标準。
靈活過程提倡可持續的開發速度。責任人、開發者和使用者應該能夠保持一個長期的、恒定的開發速度。
不斷地關注優秀的技能和好的設計會增強靈活能力。
簡單是最根本的。
最好的構架、需求和設計出于自組織團隊。
每隔一定時間,團隊會在如何才能更有效地工作方面進行檢討,然後相應地對自己的行為進行調整。
當軟體開發需求的變化而變化時,軟體設計會出現壞味道,當軟體中出現下面任何一種氣味時,表明軟體正在腐化。
僵化性: 很難對系統進行改動,因為每個改動都會迫使許多對系統其他部分的其它改動。
脆弱性: 對系統的改動會導緻系統中和改動的地方在概念上無關的許多地方出現問題。
牢固性: 很難解開系統的糾結,使之成為一些可在其他系統中重用的元件。
粘滞性: 做正确的事情比做錯誤的事情要困難。
不必要的複雜性: 設計中包含有不具任何直接好處的基礎結構。
不必要的重複性: 設計中包含有重複的結構,而該重複的結構本可以使用單一的抽象進行統一。
晦澀性: 很難閱讀、了解。沒有很好地表現出意圖。
靈活團隊依靠變化來擷取活力。團隊幾乎不進行預先設計,是以,不需要一個成熟的初始設計。他們更願意保持設計盡可能的幹淨、簡單,并使用許多單元測試和驗收測試作為支援。這保持了設計的靈活性、易于了解性。團隊利用這種靈活性,持續地改進設計,以便于每次疊代結束生成的系統都具有最适合于那次疊代中需求的設計。
為了改變上面軟體設計中的腐化味,靈活開發采取了以下面向對象的設計原則來加以避免,這些原則如下:
單一職責原則(SRP)
就一個類而言,應該僅有一個引起它變化的原因。
開放-封閉原則(OCP)
軟體實體應該是可以擴充的,但是不可修改。
Liskov替換原則(LSP)
子類型必須能夠替換掉它們的基類型。
依賴倒置原則(DIP)
抽象不應該依賴于細節。細節應該依賴于抽象。
接口隔離原則(ISP)
不應該強迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層次結構。
重用釋出等價原則(REP)
重用的粒度就是釋出的粒度。
共同封閉原則(CCP)
包中的所有類對于同一類性質的變化應該是共同封閉的。一個變化若對一個包産生影響,則将對該包中的所有類産生影響,而對于其他的包不造成任何影響。
共同重用原則(CRP)
一個包中的所有類應該是共同重用的。如果重用了包中的一個類,那麼就要重用包中的所有類。
無環依賴原則(ADP)
在包的依賴關系圖中不允許存在環。
穩定依賴原則(SDP)
朝着穩定的方向進行依賴。
穩定抽象原則(SAP)
包的抽象程度應該和其穩定程度一緻。
上述中的包的概念是:包可以用作包容一組類的容器,通過把類組織成包,我們可以在更高層次的抽象上來了解設計,我們也可以通過包來管理軟體的開發和釋出。目的就是根據一些原則對應用程式中的類進行劃分,然後把那些劃分後的類配置設定到包中。
靈活設計是一個過程,不是一個事件。它是一個持續的應用原則、模式以及實踐來改進軟體的結構和可讀性的過程。它緻力于保持系統設計在任何時間都盡可能得簡單、幹淨和富有表現力。
本文轉自 netcorner 部落格園部落格,原文連結:http://www.cnblogs.com/netcorner/archive/2007/06/26/2912351.html ,如需轉載請自行聯系原作者