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

敏捷開發的緣來編程

隨着信息技術的迅速發展和經濟的全球化,對軟件開發的生產率提出了更高的要求。所以,軟件開發界爲了知足市場須要,同時也爲了減少軟件開發項目但願可以有更多的可預測性和實際需求的模糊和快速變化不相協調這一因素給軟件的開發定期完成所形成的風險,逐漸興起了一類以快捷、輕便的思惟方式迅速解決了一些傳統軟件開發企業的生產效率的新的開發方法,這類方法稱爲敏捷軟件開發方法。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期

相關文章
相關標籤/搜索