于為這個行業(yè),以及這個行業(yè)中的一些人所認(rèn)識、理解和推崇。
與會者之一Martine Fowler在其后來的文章“The New Methodology”中這樣解釋重量級、輕量級和敏捷:
輕量級與重量級的差異來自于人們對兩種方法的文檔數(shù)量的直觀感受,即輕量級方法較少產(chǎn)生和依賴于龐大的文檔,但這只是一個表面現(xiàn)象;在諸多的輕量級方法之間存在著很多相通的地方,敏捷更恰當(dāng)?shù)谋磉_了這些輕量級方法的最根本之處。
首先,敏捷強調(diào)適應(yīng),而非預(yù)測。重量級方法花費大量的人力物力,試圖制訂詳細(xì)的計劃來指導(dǎo)長期的工作,而一旦情況變化,那么計劃就不再適用。因此本質(zhì)上重量級方法是抵制變化的,而敏捷方法則強調(diào)適應(yīng)變化。其次,敏捷方法以人為中心,而非以流程為中心(即以事為中心)。敏捷方法強調(diào)軟件開發(fā)應(yīng)順乎本心(work with people’s nature ),軟件開發(fā)應(yīng)帶來樂趣。
敏捷流程(Agile Process)汲取眾多輕量級方法的“精華”,更加強調(diào)對變化的適應(yīng)和對人性的關(guān)注。除了上面介紹的XP以外,其他知名的敏捷流程包括:
1.Crystal
Cystal事實上不是一種開發(fā)方法,而是一系列的方法。因為Crystal的發(fā)明人Alistair Cockburn認(rèn)為,不同類型的項目需要采用不同的方法。Alistair Cockburn從兩個維度來劃分項目,一是項目規(guī)模,以人數(shù)計算;二是產(chǎn)品發(fā)生錯誤的后果,以嚴(yán)重性計算。
Crystal方法集也形成于90年代,當(dāng)時,Cockburn接受了IBM的任務(wù)去寫一些關(guān)于開發(fā)方法的東西。相對而言,Crystal的個人色彩要淡些,因為它不僅來源于Cockburn的個人經(jīng)驗,而且也來源于Cockburn走訪的很多不同的項目;而Cockburn本人也較為思想開放,樂于接受“異見”。
在以人為導(dǎo)向上,Crystal和其他敏捷方法有些差異。在Cockburn看來,自由是人之本性,要人遵守紀(jì)律總是有難度的;因此,要在工作生產(chǎn)率和流程的紀(jì)律性之間作一權(quán)衡。流程要易于遵照執(zhí)行,而這是以犧牲生產(chǎn)率為代價的。Cockburn認(rèn)為, XP的流程規(guī)范仍太復(fù)雜和難于執(zhí)行,而采用Crystal雖然生產(chǎn)率不如XP,但開發(fā)人員更樂于采用。Cystal也強調(diào)在每個迭代后的Review,并以此進行Cystal方法的自身改進。
2. ASD
ASD(Adaptive Software Development)的發(fā)明人Jim Highsmith本來是一個傳統(tǒng)開發(fā)方法的工作者,他有多年的預(yù)測型方法的研究、教學(xué)和實施經(jīng)驗,但后來,他發(fā)現(xiàn)這些預(yù)測型方法根本就存在很大缺陷,尤其不適合當(dāng)前的軟件業(yè)務(wù)。
ASD強調(diào)開發(fā)方法的適應(yīng)性(Adaptive),這一思想來源于復(fù)雜系統(tǒng)的混沌理論。ASD不象其他方法那樣有很多具體的實踐做法,它更側(cè)重為ASD的重要性提供最根本的基礎(chǔ),并從更高的組織和管理層次來闡述開發(fā)方法為什么要具備適應(yīng)性。
3. SCRUM
SCRUM同樣也包括了很多具體做法,這些做法并無多少特別之處,但多數(shù)有一個“怪異”的名稱。比如,SCRUM將開發(fā)過程劃分為30天的迭代周期,每個迭代周期叫做一個Sprint;每天有一個15分鐘的短會,用來決定第二天的任務(wù)安排,這樣的短會就叫做scrum。
SCRUM較為有特色的,是它特別強調(diào)開發(fā)隊伍和管理層的交流協(xié)作。每天,開發(fā)隊伍都會向管理層匯報進度,如果有問題,也會向管理層要求幫助解決。
4. FDD
FDD