淺析敏捷開發與傳統軟件開發的區別


敏捷開發的緣來

隨着信息技術的迅速發展和經濟的全球化,對軟件開發的生產率提出了更高的要求。因此,軟件開發界為了滿足市場需要,同時也為了減小軟件開發項目希望能夠有更多的可預測性和實際需求的模糊和快速變化不相協調這一因素給軟件的開發按期完成所造成的風險,逐漸興起了一類以快捷、輕便的思維方式迅速解決了一些傳統軟件開發企業的生產效率的新的開發方法,這類方法稱為敏捷軟件開發方法。2001年2月11日到13日,17位軟件開發領域的領軍人物聚集在美國猶他州的滑雪勝地雪鳥(Snowbird)雪場。經過兩天的討論,“敏捷”(Agile)這個詞為全體聚會者所接受,用以概括一套全新的軟件開發價值觀。這套價值觀,通過一份簡明扼要的《敏捷宣言》傳遞給世界,該宣言中寫道:我們一直在實踐中探尋更好的軟件開發方法,身體力行的同時也幫助他人。由此我們建立了如下價值觀:個體和互動高於流程和工具、工作的軟件高於詳盡的文檔、客戶合作高於合同談判、響應變化高於遵循計划也就是說,盡管右項有其價值,我們更重視左項的價值。從而宣告了敏捷開發運動的開始。

敏捷軟件開發和傳統軟件工程的簡介

敏捷軟件開發方法其實不是一個具體的過程,而是一個用於概括那些應需而生的具有類似價值觀的軟件開發方式和方法的涵蓋性術語。這些方法基於迭代和增量開發,通過自組織,跨團隊,溝通協作完成開發工作,一般都具有以人為核心、循環迭代、響應變化等特點,着眼於能高質量地快速交付客戶滿意的工作軟件,從而來應對快速變化的需求。在敏捷開發中,軟件項目的構建被切分成多個經過測試且具備集成和可運行特征的子項目,並分別完成,在此過程中軟件一直處於可使用狀態。而我們所說的傳統軟件工程方法主要是指結構化軟件工程方法,傳統軟件開發是以軟件架構為核心的預測型開發過程,將傳統軟件工程方法分為制定計划、需求分析、軟件設計、程序編寫、軟件測試和運行維護等六個分離的基本活動,每個基本活動的輸出作為下一個階段的輸入,如同瀑布的流水一般,各個階段的通過文檔相互流通。代碼為預先規划、完全設計然后完成。在傳統軟件開發方法中,分析和設計是其最為重要的階段,其前期的工作主要集中在分析和設計階段,其中分析階段對數據、數據流和功能進行分析。前期就要設計好整個軟件大廈的框架來指導和支撐后面各個方面的開發和維護工作,后面在根據前期設計的藍圖來逐步實現。

敏捷軟件開發和傳統軟件開發的差異

在敏捷軟件開發中以極限編程為代表,12 個詳細原則組成了宣言中提到的 4 個觀點,這些原則是區別於傳統軟件工程的特征所在:① 最高優先級是通過盡早和經常交付有價值的軟件來令客戶滿意;② 不斷地交付軟件,以每兩周或每兩個月為周期,推薦使用較短的周期;③ 可運行的軟件是工作進展的主要度量標准;④ 以積極的態度對待需求的變化,即使在開發階段末期也不例外。 敏捷過程利用變化來為客戶創造競爭優勢;⑤ 在整個開發過程中,業務人員和開發人員最好能每天一起工作;⑥ 項目由積極主動的人員來完成,給他們提供所需的環境和支持,信任他們能把工作做好;⑦ 在開發團隊中,最具有效果和最有效率的信息交流手段是面對面的交談;⑧ 最好的系統構架、 需求和設計產生於自組織的團隊;⑨ 應時刻關注技術上的精益求精和合理的設計,這樣可以提高應變能力;敏捷過程提倡可持續開發思想。出資人、開發者、用戶應該保持長期、恆定的開發速度;簡單化——最佳化未完成的工作的藝術——是至關重要的;團隊應該定期對其運作方法進行反思,考慮如何能變得更有效,提出改進意見,並據此進行相應的調整。而以“瀑布模型”( Waterfall Model)[1]為代表的傳統軟件開發方法,團隊在開發的前期總是希望把需求分析做細、做完整,盡可能把變化排除在軟件開發過程之外從而來減小因為需求變化對軟件開發進度、軟件質量以及用戶的滿意程度所產生的影響,也就是說,其軟件開發活動是嚴格按照線性方式進行的,軟件活動自由度相對敏捷軟件開發較低。

敏捷軟件開發相比傳統軟件工程的的優勢

從對比中我們可以發現,相對於傳統軟件開發而言,敏捷軟件開發具有以下特點:1.以為為本,強調客戶和開發團隊間的有效溝通和緊密協作,而相比之下,傳統軟件工程更加依賴於合同和規格的說明。2.適應性較強,接受開發過程中需求的頻繁修改,能有效地應對需求的變更,而傳統軟件工程中開發活動是嚴格按照線性方式進行的,所以較不能接受開發過程中對需求進行頻繁更改。3.高度迭代,持續集成。在敏捷軟件開發中,將開發過程划分為盡可能短的周期,每次迭代完成用戶的部分需求,后面的迭代都是在前面迭代的基礎上對系統功能進行修改、細化以及擴展的功能,設計隨着需求而發展,直至系統功能完善,相比之下,傳統軟件開發方法中,代碼為預先規划,完全設計,然后生成,對需求和架構設計的不確定性較低[2]

傳統軟件開發的兩個重要缺陷

相比於敏捷軟件開發,傳統軟件開發有兩個重要缺陷:1.由於軟件開發早期客戶往往不確定自己真實的需要,所以在早期建立的需求模型往往不能准確包含系統所需的功能,但是傳統軟件工程的開發又是按照計划在線性模式下開發,所以在開發完成后,若客戶提出改變需求的要求,將會對系統進行頻繁的修改,這會大大影響到系統的兼容性。而另一方面,傳統軟件工程開發的測試階段往往都是在整個代碼編寫完后才進行測試,假如在測試中發現問題,有可能要對整個模塊進行修改,這樣的返工成本往往是巨大的[3]。而相比之下,由於敏捷軟件開發采用迭代式開發的方式,通過不斷發布新版本並演示給客戶,似的客戶在交互過程中發現自己需要的系統特性,可以避免客戶在開發初期不能提供准確詳細需求而導致的問題。從這可以看出傳統軟件工程在需求頻繁更變的情況下所變現出的巨大局限性。

傳統軟件開發的優勢之處

盡管如此,這並不意味着傳統的軟件開發就一無是處,正是因為傳統軟件開發強調文檔對於團隊成員的指導作用,開發人員可以在不知道項目細節的情況下進行開發,同時,由於開發計划一開始就已經訂好,這樣避免了大量同客戶溝通交流的迭代會議的召開從而擁有更加富裕的開發時間,有利於開發出更好的產品。而另一方面,超前的預見性和每一階段都要通過嚴格的審查才能進行下一個階段,保證了軟件的質量。

小結

敏捷軟件開發和傳統軟件開發這兩種方法各有各自擅長的領域,差異很大但是各有千秋。傳統軟件開發在大型、復雜的系統中優勢更為明顯,因為這些系統一般都具有安全關鍵或者其他高可靠性的屬性,需求經常相當穩定,環境也具有相當的可預見性。而敏捷軟件開發擅長的則是那些系統和開發團隊規模較小、客戶和系統的使用隨時可以到位、需求和環境相對容易變更的項目。在他們各自的領域中它們的優勢明顯優於對手,並不能一概而論的說哪種開發方式更好、更為優秀。在未來,應用開發領域的發展趨勢既需要敏捷,又離不開規范。我們可以看到,一些平衡這兩者的方法正在顯現,逐步建立方法,而不是自上而下剪枝,而另一方面,方法固然重要,但是同時也應該關注人、價值觀念、溝通以及期望管理有關的領域[4]

[1] 李龍澍.實用軟件工程[M].北京:人民郵電出版社,2005

[2] 吳潔明,萬勵,莫智懿,陸科達 敏捷方法與傳統軟件工程方法在通用型網絡考試系統開發中的應用比較  梧州學院學報 第20卷第6期

[3] 張智麗 軟件開發生命周期比較之敏捷與傳統 電腦開發與應用 2013年12期

[4] 夏顯鄂,梁洪峻. 敏捷軟件開發與計划驅動開發的概述比較 計算機工程與設計 第28卷第16期


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM