任憲臻++梁宏英
摘要:敏捷軟件開發是從90年代開始逐漸引起關注的一種新型軟件開發方法,它能夠應對快速變化的需求。本文主要闡述了敏捷軟件開發方法誕生的背景、敏捷軟件開發的的概念及其與傳統的軟件開發方式的不同。同時,本文結合目前軟件行業實際情況,列舉比較了幾種敏捷軟件開發方法,幫助軟件開發團隊在開發中選擇恰當的敏捷軟件開發方法。
關鍵詞:敏捷軟件開發;XP;SCRUM
中圖分類號:TP31 文獻標識碼:A 文章編號:1007-9416(2017)02-0189-01
1 引言
在最初的傳統軟件開發中,瀑布模型是最常用的軟件生命周期模型。瀑布模型將軟件開發過程劃分為可行性研究與計劃、需求分析、設計、編碼、測試、運行與維護這樣幾個階段,并且規定這幾個階段是自上而下、相互銜接的固定次序。作為最早出現的軟件開發模型,瀑布模型在軟件工程中占有重要的地位,但是瀑布模型中階段之間的依賴關系非常強烈,如果上一個階段沒達到目標要求,那么將會導致下一個階段工作的停滯,從而導致軟件開發周期延長。而且,如果項目的早期需求在后期發生變化,那么項目付出的代價將會非常高。有數據顯示有70%的采用瀑布模型開發的軟件項目均以失敗告終。正因為產品需求的瞬息萬變,同時也因為技術發展的日新月異,敏捷軟件開發方法誕生了。
2 敏捷軟件開發
敏捷軟件開發,又稱敏捷開發,是從90年代開始逐漸引起關注的一種新型軟件開發方法,能夠應對快速變化的需求,它強調程序員團隊與業務專家之間的緊密協作、面對面的溝通、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、能夠適應需求變化的代碼編寫和團隊組織方法,也更注重軟件開發中人的作用。
敏捷軟件開發方法重視軟件生產效率,非常適用于軟件需求不確定、用戶易溝通并且能參與開發、開發人員有責任感并且積極向上、十個人以下的小項目的開發。敏捷開發以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟件開發。
3 常用的敏捷方法
在軟件項目開發中,比較常用的敏捷方法主要有:Scrum、極限編程、水晶方法、特征驅動開發、統一過程和動態系統開發方法等。這些方法基本都相繼興起于20世紀90年代的不同時期,主要是作為瀑布方法失敗的一種應對,它們在思想和技術上有著大量的相互交流。
Scrum是一種靈活的敏捷軟件開發管理過程,它將軟件開發團隊比作橄欖球隊,全隊有明確的最高目標:發布產品的重要性高于一切。團隊高度自治,隊員們熟悉開發過程中涉及到的各種技術,緊密合作,確保每個迭代都朝著最高目標推進。而且每隔2至6周,每個人都能看到能實際工作的軟件,并且據此決定是發布這個版本還是繼續開發以加強它的功能。對于功能需求可能經常發生變化的項目來說,Scrum是它們最為理想的選擇之一。Scrum是目前使用最廣泛的敏捷方法,由于它沒有規定工程實踐,所以通常Scrum實施過程中會應用XP中提出一些的工程實踐,比如持續集成、結對編程等。
極限編程是在需要加強開發者與用戶的溝通需求下誕生的,它可以讓客戶全面參與軟件的開發設計,保證客戶變化的需求及時得到修正,它也非常注重用戶的反饋,這與讓客戶加入開發是一致的,讓客戶參與就是隨時反饋軟件是否符合客戶的要求。通過溝通和反饋,雙方可以清楚地了解開發進度、變化、困難和急需解決的問題等,并及時地調整開發過程。溝通、簡單、反饋、勇氣、謙虛是極限編程的核心價值。使用極限編程的軟件開發人員只需要開發初期編寫一些文檔,而且因為測試優先,這樣可以把開發后期缺陷的出現降到最低。
水晶方法是一些敏捷方法系列,包含具有共性的核心元素,每個都含有獨特的角色、過程模式、工作產品和實踐,實際上是一組經過證明、對不同類型項目非常有效的敏捷過程,它的發明使得敏捷團隊可以根據其項目和環境選擇最合適的水晶方法家族成員。
特征驅動開發是敏捷開發的流程之一,其核心理念是先集中精力創建待開發系統的領域模型,然后,圍繞實現這些領域模型的特征來組織開發,可運用于小項目和大型項目,統一過程是一種流行的構造面向對象系統的迭代軟件開發過程,是一種用例驅動的迭代式增量開發過程,每次迭代過程中主要的工作流包括捕獲需求、分析、設計、實現和測試等。統一過程多種變種產生,如Rational統一過程、敏捷統一過程,以及企業統一過程。
動態系統開發方法倡導以業務為核心,快速而有效地進行系統開發,它全面定義了多種不同的角色、過程和工件,比大多數其他敏捷方法顯得更加正規。實踐證明它是成功的敏捷開發方法之一,其中一個重要的特征是根據"MoSCoW法則"來進行需求優先級排序:M表示必不可少的需求;S表示如果可能,盡量具備;Co表示可以有,但并非關鍵;W表示目前不需要,但可能以后需要。
4 結語
本文簡單介紹了的幾種常見敏捷開發方法,它們之間相通的,所以應該采取兼容并蓄的態度,根據自己的具體情況,具體剪裁。在實際的軟件開發中,開發團隊應該根據項目規模、開發環境,在實踐中選擇恰當的方法。
參考文獻
[1]楊帆,徐俊剛.一種改進的Scrum敏捷軟件開發方法[J].電子技術,2011.
[2](美)Alistair Cockburn,蘇敬凱譯.敏捷軟件開發[M].機械工業出版社,2008.
[3]三種敏捷開發方式技術指南.TechTarget商務智能.2014.