孫嘉睿
河海大學計算機與信息學院,江蘇南京 211100
敏捷開發方法綜述
孫嘉睿
河海大學計算機與信息學院,江蘇南京 211100
傳統的軟件工程方法越來越難以適應飛速更新的軟件需求,于是便形成了一些較輕量級的軟件開發方法,這就是被稱為能迅速針對軟件變化要求的敏捷開發方法。本文對敏捷開發方法的原理做出詳細的分析和介紹,同時又列舉了幾種較為常見的開發方法做出了實際應用的相關比較,以幫助我們在今后的軟件開發過程中使用恰當的敏捷型開發方法。
方法;原理;應用;需求
20世紀90年代,作為新型軟件開發方法的敏捷開發開始逐漸成為人們的密切關注的新型方法。這是一種能夠迅速應對變化需求的一種軟件開發能力,其核心理念就是注重業務專家與程序員之間的精誠協作和良好溝通、不斷更新的軟件版本、迅速適應變化需求的代碼編寫以及一支團結合作的團隊,該方法更加強調軟件開發過程中人的作用。它提倡的是一種與時俱進、逐步改進的理論,大大降低了軟件開發的成本和負擔,大大縮短軟件開發的時間,迅速適應各種軟件開發的需求,使得其在軟件開發過程中得到更廣泛的應用。
1.1 簡介
敏捷開發方法是將一個軟件開發項目分成了若干個很小的模塊化部分。每個部分在迭代過程中逐個解決,然后就像是搭積木一樣逐漸添加到整個應用軟件上,最后所有部分完成后,形成一個完整的軟件系統。從字面來看敏捷開發方法意味著高效和快捷,是軟件使用過程中的一種輕型的、迅速的、有效的科學方法。[1]在重型方法中,開發團隊往往枉費了太多精力和時間在一些無關緊要和重復的中間環節上,而敏捷開發方法則有效地避免了這種毫無意義的浪費。在無過程或者說是過于繁瑣的過程中,敏捷開發方法尋找到了一種平衡,以簡潔的步驟獲得了滿意的效果。
1.2 特點
敏捷開發方法主要有兩個特點,首先[2]它是“適應性”而不是“預設性”的。傳統的重型方法是針對軟件開發項目的很長的時間跨度內做出詳細的規劃,然后按照規劃進行開發。而這種規劃方法在規劃完成之后很難再進行修改,而敏捷型方法則不然。敏捷開發方法的目的就是要適應計劃變化的過程,甚至通過改變自身以適應新的變化。其次,敏捷開發方法是面向人的,而不是面向過程的,它們努力使軟件開發工作能夠針對和適用于人的特點,使軟件開發成為一項愉快而非枯燥的活動,最大可能地發揮人的創造能力
1.3 基本原則
敏捷開發注重的是人再軟件開發中的重要作用和迅速適應和應對變化的能力。有效的團隊合作、密切關注當前的代碼是敏捷軟件方法最為強調和重視的兩個基本原則。開發人員和管理人員通過當前的代碼能夠知道當前他們擁有什么,但是不能保證將來會獲得什么,原因就是不能預期將來的變動。密切關注當前的代碼是為了在一個真實可靠的基礎上建立開發工作。敏捷開發方法注重的真誠的交流與合作,相對于讀寫文檔而言,敏捷開發的信息交流更加方便快捷,能夠大大提高讀寫文檔的效率和時間,降低文檔工作量;設計師們可以共同討論,集思廣益,獲取最佳設計??偠灾?,有效的團隊合作能夠獲得高質量、快速度的軟件開發,還能有效降低開發成本。
2.1 極限編程
極限編程XP強調的理念是溝通和反饋,是一種典型的小組開發方法,適用于十人以下的項目組或是開發地點集中的場合,在一些需求模糊或者是揮發性強的場合被業界人士廣泛應用。在軟件開始初期,極限編程XP并不要求開發人員編制很多的文檔。它提倡的是先行測試,目的是將之后出現bug的幾率降到最低。[3]極限編程的目標是將較為模糊、變化較大的客戶需求在最短的時間內,轉化為符合客戶要求的軟件產品。其基本約定是用戶與開發人員團結合作,共同創建出有實際運用價值的軟件。用戶積極參加整個開發項目的周期,并指導開發小組如何提升整個極限編程項目生命周期的業務價值。
2.2 自適應軟件開發
自適應軟件開發與水晶方法實相互借鑒和融合的,自適應軟件開發借鑒的是復雜自適應系統理論,其目的是通過提高自身的適應性,以適應互聯網時代下的軟件需求難于預測并高速變化的軟件開發。因為在不可預測的環境中,開發人員需要用各種方法來應對不可預測性。在對于開發人員的管理中,需要管理的重點是鼓勵開發人員真誠合作、互相溝通,而不是生硬指使大家應該做什么,這樣才能 讓開發人員能夠有足夠的空間提出各具特色的具有創造性的解決方案。
2.3 SCRUM
發揮構件技術和面向對象的開發方法是SCRUM的宗旨和出發點。它是一種迭代的增量化過程,吸取了各種開發的優勢并加以改進,更加有利于工作的管理和產品的進一步研發。SCRUM把項目分成多個迭代階段,每個迭代階段為期半個月至一個月。在完成每個階段之前,開發人員需要明確這一個階段需要實現的功能。但在每一個階段,所有的開發都圍繞著迭代,并且有固定的需求[4]。
敏捷開發對于信息系統開發周期的有著嚴格的要求,這一點與迭代式開發有著共同之處。不同的是,由于迭代周期過長,在迭代期間客戶是無法改變變化需求的,這就大大降低了項目估算的準確度;而敏捷開發模式卻避免了這一不足之處,它具有周期時間短和高度協作的優勢,能滿足客戶需要不斷變化的需求,這樣就使得客戶的需求更加具有可控性,而及時有效的溝通和交流大大提高了開發軟件的效率。
瀑布式開發體現的是預見性的原則,對開發過程中的先后順序有著嚴格的規定,這就難以實現開發過程中的靈活性與自由度;而因具有獨特的迭代方式,敏捷開發模式信息系統中的已開發的部分模塊一直處于可甩狀態,整個系統已經劃分為一些相互獨立的子系統,迭代是以最短的周期進行,效率和客戶滿意度得以大大增加。
與前幾種模式不同,快速原型模型與瀑布模型的有機結合,使螺旋式的開發模式對開發過程中的風險評估十分注重,與一些較大型的信息系統相比,螺旋式的開發模式更加適合復雜度較高的系統。它所強調的是可預見的風險,卻難以應對不可預見的隨機風險,但敏捷開發的核心就在于更加重視在不可預知的風險面前系統所具備的適應性,所以能夠更好地避免風險。
[1] Kiczales G ,et a1.Aspect—oriented programming.European Conf.on Object Oriented Programming.Finland.Springer—VerlagLNCS1241.June 1997.
[2]林海,徐曉飛,潘金貴.計算機科學[J].2005(2):125-128,132.
[3]聶華北,沈劍翹.計算機系統應用[J].2008(12):157-161.
[4]楊帆,徐俊剛.一種改進的Scrum敏捷軟件開發方法[J].電子技術,2011.
TP3
A
1674-6708(2015)143-0126-01