敏捷開發
人與人之間的交互是復雜的,并且其效果從來都是難以預期的,但卻是工作中最重要的方面。
-- Tom DeMacro和Timothy Lister
敏捷軟件開發宣言:
1 個體和交互 勝過 過程和工具
2 可以工作的軟件 勝過 面面俱到的文檔
3 客戶合作 勝過 合同談判
4 響應變化 勝過 遵循計劃
雖然右項也有價值,但是我們認為左項具有更大的價值。
敏捷宣言遵循的原則:
5 我們最優先要做的是通過盡早的、持續的交付有價值的軟件來使客戶滿意。
6 即使到了開發的后期,也歡迎改變需求。敏捷過程利用變化來為客戶創造競爭優勢。
7 經常性地交付可以工作的軟件,交付的間隔可以從幾個星期到幾個月,交付的時間間隔越短越好。
8 在整個項目開發期間,業務人員和開發人員必須天天都在一起工作。
9 圍繞被激勵起來的個體來構建項目。給他們提供所需的環境和支持,并且信任他們能夠完成工作。
10 在團隊內部,最具有效果并富有效率的傳遞信息的方法,就是面對面的交談。
11 工作的軟件是首要的進度度量標準。
12 敏捷過程提倡可持續的開發速度。責任人、開發者和用戶應該能夠保持一個長期的、恒定的開發速度。
13 不斷地關注優秀的技能和好的設計會增強敏捷能力。
14 簡單是最根本的。
15 最好的構架、需求和設計出于自組織團隊。
16 每隔一定時間,團隊會在如何才能更有效地工作方面進行反省,然后相應地對自己的行為進行調整。
當軟件開發需求的變化而變化時,軟件設計會出現壞味道,當軟件中出現下面任何一種氣味時,表明軟件正在腐化。
1 僵化性: 很難對系統進行改動,因為每個改動都會迫使許多對系統其他部分的其它改動。
2 脆弱性: 對系統的改動會導致系統中和改動的地方在概念上無關的許多地方出現問題。
3 牢固性: 很難解開系統的糾結,使之成為一些可在其他系統中重用的組件。
4 粘滯性: 做正確的事情比做錯誤的事情要困難。