在過去幾年中,敏捷方法(agile methodologies)(也被稱為輕量級方法,lightweight methodology)正在迅速升溫。它能夠有效的解決軟件開發中的官僚作風,讓大家的注意力重新集中在軟件的秀麗風景中。這篇文章展示了輕型方法產生的原因,當然不是討論它們的重量,而是他們那符合自然規律和以人為先的特性。同時文章還給出了學習過程中的一些參考意見和一些影響你在輕型方法這條康莊大道上繼續前進的因素。
(譯者注:agile methodology,agile在字典中的原意為敏捷的, 輕快的, 靈活的。但是我始終沒有找到有比較權威的翻譯,原先我打算根據它的另一個稱謂;輕量級方法,將它翻譯成輕型方法,但是在查資料中發現了管理學中也存在這個詞同類詞:Agile Manufacturing,翻譯為敏捷制造,所以我也把這個詞同樣翻譯成敏捷方法。如果讀者覺得有更好的翻譯,請mail給我。axing@linuxaid.com.cn)
從無, 到紀念碑的, 到敏捷的
可預測型 VS 適應型的
設計和建構的分離
需求的不可預測性
可預測是無法做到的嗎?
控制一個不可預測的過程
適應型客戶
人是第一位的
同一的編程機器
程序員--有責任感的專業人員
面向過程的人員管理
業務領導者的角色
自適應型過程
方法
XP
Cockburn的Crystal Family
開放源碼
Highsmith的適應型軟件開發
SCRUM
DSDM
敏捷軟件開發的宣言
RUP是一個敏捷方法嗎?
其他資源
你應該使用敏捷方法嗎?
從無, 到紀念碑的, 到敏捷的
大多數的軟件開發都是一個混亂、無序的過程, 人們將之戲稱為“code and fix”。軟件的開發毫無計劃性可言,系統設計就是把許多短期決定揉在一起。這在小的系統中可以勝任,可隨著系統的增長,往系統中加入新的功能就變成一件極端困難的事情。此外,bug越來越普遍,修正也越來越困難。 這樣系統的一個典型現象是在系統完成之后會經歷一個相當長的測試時期。測試和除錯完全不可預見,如此之長的測試期嚴重破壞了開發進度。
我們的這種開發軟件的風格存在了很長的一段時間,但是我們也花了很長的時間來研究替代方案: 方法學。 方法學把嚴格規范的過程用于軟件開發,使軟件開發更具可預見性、更有效率。他們遵循規則,制定計劃,細分過程來保證軟件開發。
這種方法學也經歷了很長的發展時間。它們并不十分成功,也不致力于大眾化。這些方法學的最時常發生的批評是官僚。為了遵循方法學的準則做的大量的無用功使得開發的步調緩慢。因此他們時常被稱為重方法學(heavy methodologies), 或使用Jim Highsmith的話:豐碑般的方法學。 (譯者注:段落小標題的豐碑由此而來)
在這些方法學的帶動下,近幾年出現了一群新的方法學。在一段時間內,它們被稱為輕量級方法(lightweight methodologies),但是現在普遍稱之為敏捷方法。人們希望敏捷方法能夠有效解決豐碑式方法的官僚問題。這些新的方法嘗試著在毫無過程和太多過程之間找到一個有效的平衡點,只提供必要的過程以得到一個合理的結果。
這樣的結果是敏捷方法在某些方面和重量級方法有顯著的不同。 最大的不同是敏捷方法不是文檔驅動的, 通常一件給定的工作只需要很少的文檔。在很多方面,它倒是以代碼驅動的: 規則,最重要的文檔是源代碼。
不過我不認為這是敏捷方法的重點所在。較少的文檔只是兩種方法之間更深層次的不同點的一個癥狀:
1、敏捷方法是適應型的,而并非可預測型的。重方法傾向于為軟件開發制定一個包容了大量細節、時間跨度極長的龐大計劃,如果萬事都不變,這個計劃將會執行得非常好。所以它們必然要盡力阻止變化得發生。敏捷方法則不同,它擁抱變化。他們總是去適應變化,利用變化來發展,甚至改變自己。
2、敏捷方法是以人為本而不是以過程為本的。他們建立起一種觀念:工作應該能夠發揮人的特性,而不是去限制它,強調軟件開發過程應該是一個有趣的過程。
在下列各段中,我將更詳細地研究這些不同之處, 你能了解到一個發揮合適的、以人為本的方法是什么樣的,它的優缺點。不論你是軟件的開發者還是使用者,你都應該使用這種方法。
可預測型 VS 適應型的
設計和建構的分離
方法學的靈感來自語工程學的工程規范,諸如土木工程和機械工程。這種規范強調在實際建造之間做充分的計劃。這樣工程師將會用一系列的圖紙來精確描述該建造些什么,以及如何組織它們。同時,根據圖紙作出許多設計決定,比如該如何處理一座橋的負荷。 設計好的圖紙隨即被移交到另一個團隊,通常是一家不同的公司,讓他們來負責構建。一般要假定構建程序要嚴格的遵循圖紙。在實際中負責構建的人會遇到一些問題,但通常都是些小問題。
因為圖紙規定了各個模塊是何如組裝在一起的,這些模塊在具體構建計劃中扮演了一個基礎的角色。這樣的一個計劃能夠計算出需要哪些工作,各項工作之間的關系如何。這就需要考慮可預測的進度表和建造預算。同時圖紙也詳細地說明了哪些構建者應嘎如何完成他們的工作。這樣,構建工作就不太需要那些智力型的工作者,只需要那些勞作型的工作者。
文章來源于領測軟件測試網 http://www.kjueaiud.com/