敏捷軟件開發(fā)方法概念
自從軟件工程產(chǎn)生以來,我們在降低軟件開發(fā)項目的風險過程中嘗試過多種方法,雖然面向?qū)ο、結構化、CMM等技術有利于幫助軟件危機的解決,然而其復雜的過程使軟件行業(yè)陷入低效泥沼中。2001年Kent beck Martin Fowler Robert Martin等經(jīng)驗論陣營的頭領發(fā)起了敏捷聯(lián)盟向全世界發(fā)布了他們的宣言:個體和交互勝過過程和工具;工作軟件高于理解文檔;客戶合作勝過合同談判;響應變化勝過遵循計劃。宣言體現(xiàn)了軟件開發(fā)方法必須去適應軟件變化的特征,在宣言的基礎上就提出了敏捷軟件開發(fā)方法。
1 敏捷方法概述
截止現(xiàn)在敏捷軟件開發(fā)方法還沒有一個確定的定義。但它的特點是重視軟件生產(chǎn)效率的,適用于軟件需求不確定、用戶易溝通并且能參與開發(fā)、開發(fā)人員有責任感并且積極向上、十個人以下的小項目的開發(fā),是以保證軟件開發(fā)有成功產(chǎn)出為前提的,盡可能減少在開發(fā)過程中制成品的方法,體現(xiàn)“剛剛夠”(Just enough)的觀點。
人作為核心、循序漸進和迭代算法是敏捷軟件開發(fā)的宗旨。在敏捷軟件開發(fā)過程中,軟件項目被分解成很多個小項目,每個小項目的成果都經(jīng)過測試,再把他們集成起來。它的靈活性、協(xié)作性和軟件的商業(yè)價值上作出的貢獻是敏捷軟件開發(fā)方法的優(yōu)勢。這都在“敏捷宣言”的核心原則中得到了體現(xiàn):交互和獨立工作是建立在工具和過程基礎上的、軟件使用是建立在文檔基礎上的、客戶的協(xié)作是建立在合同談判基礎上的、對變更做出的響應是建立在遵循計劃基礎上的。
2 幾種常用的敏捷方法比較
2.1 極限編程(XP)
極限編程(簡稱XP)是由KentBeck于1996年提出的,極限編程要求把它列出的每一個思想和方法都做到極限、做到最好。
極限編程的核心價值是我們在開發(fā)中必須注意的:Communication(溝通)、Simplicity(簡單)、Feedback(反饋)、Courage(勇氣)、此外還有第五個價值: Modesty(謙虛)。因為計劃趕不上變化,使用極限編程的軟件開發(fā)人員只需要在開發(fā)的初期做出一些文檔。極限編程把軟件測試放在首位,這樣以后出現(xiàn)漏洞的幾率就會降到最低。
極限編程是一種近螺旋式的開發(fā)方法,它把復雜的開發(fā)分解為相對比較簡單的小軟件;通過溝通、反饋和其它的方法,客戶和開發(fā)人員就可以清楚的了解到開發(fā)進度、變化、困難和急需解決的問題等,并及時地調(diào)整開發(fā)過程。
2.2 SCRUM
SCRUM的宗旨是發(fā)揮構件技術和面向?qū)ο蟮拈_發(fā)方法,對迭代式面向?qū)ο蠓椒ㄟM行改進,適用于需求不確定的產(chǎn)品的開發(fā)。是迭代的增量化過程,便于工作管理和產(chǎn)品研發(fā)。更綜合了各種開發(fā)的經(jīng)驗。
SCRUM把項目分成N個為期15-30天的迭代階段,稱之為“沖刺”(sprint)。每個“沖刺”之前,你明確這一個“沖刺”需要實現(xiàn)的功能,然后讓開發(fā)人員去完成。但是,在“沖刺”時,SCRUM的核心是所有開發(fā)都圍繞著迭代,需求是固定的。SCRUM方法中只有3中角色:SCRUM主管、開發(fā)團隊、產(chǎn)品負責人。
2.3 動態(tài)系統(tǒng)開發(fā)方法(DSDM)
開發(fā)一種面向領域的快速開發(fā)方法是產(chǎn)生動態(tài)系統(tǒng)開發(fā)方法的原因,動態(tài)系統(tǒng)開發(fā)方法在技術支持、應用推廣、研究改進培訓認證和培訓認證等方面都比其他方法要完善,適用于對時間要求很緊的開發(fā)項目,動態(tài)系統(tǒng)開發(fā)方法應用范圍不再僅僅局限于IT行業(yè)。
DSDM方法提倡以業(yè)務為核心,快速而有效地進行系統(tǒng)開發(fā),并提出了探索式開發(fā)方法的概念。強調(diào)軟件使用者一開始就預見所有需求是不可能的。該方法中,只要進能入下一步,當前的算法就是可行的。
2.4 水晶方法(Crystal)
水晶方法是Alistair Cockburn于上世紀90年代末提出的,水晶方法目的是發(fā)展一種提倡“機動性的”方法。
Crystal是根據(jù)項目重要性和規(guī)模來區(qū)別項目的,并給出相應的辦法。所以,crystal是多種方法的組合.它闡明了要把對話和交流放在第一位的觀點。Crystal方法中有兩條準則:(1)應用反思工作室促使方法學的自適應,(2)使用的增量式循環(huán)不超過4個月。
2.5 特性驅(qū)動開發(fā)(FDD)
特性驅(qū)動開發(fā)是一個強調(diào)快速迭代、特性驅(qū)動的軟件開發(fā)方法,適用于周期短的開發(fā)。它既能保證文檔和質(zhì)量,又能保證軟件的快速開發(fā),并提出劃分的每一個功能開發(fā)時間不超過兩星期,要求兩星期內(nèi)生產(chǎn)出可見的、能運行的代碼。
特性驅(qū)動開發(fā)方法認為簡單的過程和良好的定義就能很好地被執(zhí)行,它強調(diào)的是實用、簡化、易于被開發(fā)人員接受,是一個特性驅(qū)動快速迭代的過程,適用的項目為軟件需求經(jīng)常變動。
2.6 自適應軟件開發(fā)(ASD)
自適應軟件開發(fā)方法的理論來源是復雜自適應系統(tǒng)理論,目的是通過提高自適應性用來應對互聯(lián)網(wǎng)時代下的軟件需求難于預測并高速變化的軟件開發(fā),它與水晶方法正在相互借鑒和融合。
在一個環(huán)境中,結果是不可預測的,把計劃看成是一個自相矛盾的。在計劃中,偏離計劃就是錯誤的,要糾正。而在一個適配性環(huán)境里,偏離計劃恰恰是在引導開發(fā)人員走向正確的目標。在不可預測的環(huán)境中,需要我們用各式各樣的方法來應對不確定性。在管理中,重點在于鼓勵大家交流溝通,而不是告訴大家需要做什么,從而使開發(fā)人員能自己提出具有創(chuàng)造性的解決方案。
不同的開發(fā)方法對于不同的開發(fā)人員來說,意義是不同。不同的項目規(guī)模,不同的開發(fā)環(huán)境,也決定了開發(fā)團隊采用哪種開發(fā)方法,本文僅僅對敏捷開發(fā)方法做了一個簡單介紹,相信能為開發(fā)團隊在實踐中選擇方法提供一個比較客觀的參考。