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