您的位置:軟件測(cè)試 > 軟件項(xiàng)目管理 > 開(kāi)發(fā)管理 >
軟件開(kāi)發(fā)如何選擇合適的生命周期模式?
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/5/10 15:14:54 ] 推薦標(biāo)簽:

隨著用戶需求的多樣化,軟件系統(tǒng)開(kāi)始越來(lái)越復(fù)雜了,而復(fù)雜性帶來(lái)的結(jié)果是軟件開(kāi)發(fā)管理越來(lái)越困難。然而,許多軟件開(kāi)發(fā)團(tuán)隊(duì)卻沒(méi)有適時(shí)地改變其管理模式。因此,越來(lái)越多的軟件開(kāi)發(fā)項(xiàng)目呈現(xiàn)出管理失控和混亂的跡象,軟件開(kāi)發(fā)的整個(gè)生命周期已經(jīng)越來(lái)越成為人們關(guān)注的焦點(diǎn)。

為什么軟件開(kāi)發(fā)項(xiàng)目的管理是這么困難呢?原因在于許多軟件開(kāi)發(fā)團(tuán)隊(duì)沒(méi)有選擇合適的管理工具。一般來(lái)說(shuō),在軟件開(kāi)發(fā)過(guò)程中會(huì)有許多不確定的、經(jīng)常變化的因素,如果在軟件開(kāi)發(fā)過(guò)程中缺乏合適的管理工具,這將會(huì)導(dǎo)致開(kāi)發(fā)人員無(wú)法統(tǒng)一開(kāi)發(fā)行為和思路。例如,在實(shí)現(xiàn)項(xiàng)目的各階段和各種角色(架構(gòu)師、項(xiàng)目經(jīng)理、開(kāi)發(fā)人員、測(cè)試人員等)的方法和思路并不一致,不但會(huì)對(duì)設(shè)計(jì)、質(zhì)量、代碼管理和部署產(chǎn)生負(fù)面影響,而且還會(huì)導(dǎo)致開(kāi)發(fā)成本增加。

那么,我們應(yīng)該怎樣管理好軟件開(kāi)發(fā)的各種因素呢?像教科書(shū)上經(jīng)常所說(shuō)的一樣,如果我們能夠很好的管理軟件生命周期每一個(gè)階段的質(zhì)量,也很好的管理了整個(gè)軟件開(kāi)發(fā)的整個(gè)過(guò)程。因此,如何大程度地管理好開(kāi)發(fā)過(guò)程成為目前業(yè)界討論的焦點(diǎn)。本文介紹了在軟件開(kāi)發(fā)過(guò)程中一種常用的管理工具:軟件生命周期模式,以及其概念和選擇方法。

什么是軟件開(kāi)發(fā)生命周期模式?

軟件開(kāi)發(fā)工作本身是需要一個(gè)周期來(lái)完成的,而在周期的內(nèi)部則包含了很多因素。一個(gè)因素的不穩(wěn)定,在周期推移的過(guò)程中都很可能會(huì)造成類(lèi)似生物學(xué)領(lǐng)域的蝴蝶效應(yīng)----非洲的一只蝴蝶扇動(dòng)翅膀可能會(huì)造成美洲大陸的一場(chǎng)龍卷風(fēng)。這說(shuō)明每一個(gè)事情都可能會(huì)對(duì)其它的事情產(chǎn)生連鎖反應(yīng)。因此,任何軟件開(kāi)發(fā)項(xiàng)目都必須進(jìn)行適當(dāng)?shù)慕M織和管理,然后才能按預(yù)期計(jì)劃成功地執(zhí)行項(xiàng)目。也說(shuō)是說(shuō),規(guī)劃良好的軟件開(kāi)發(fā)生命周期將能夠?qū)崿F(xiàn)在更短的開(kāi)發(fā)周期內(nèi)構(gòu)建軟件的愿景。

(1)什么是軟件開(kāi)發(fā)生命周期?

同任何事物一樣,一個(gè)軟件產(chǎn)品或軟件系統(tǒng)也要經(jīng)歷孕育、誕生、成長(zhǎng)、成熟、衰亡等階段,這一般稱為軟件生命周期。軟件開(kāi)發(fā)生命周期(SDLC)是指軟件開(kāi)發(fā)的全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。許多軟件開(kāi)發(fā)工具廠商都提出過(guò)各種軟件生命周期方法論,它們有人將SDLC解釋為一組步驟或者里程標(biāo)(Milestone)。但無(wú)論是誰(shuí)的解釋,SDLC的一般步驟包括:確定問(wèn)題、可行性分析與開(kāi)發(fā)計(jì)劃、收集需求、分析與設(shè)計(jì)、編碼開(kāi)發(fā)、測(cè)試、安裝、維護(hù)。

生命周期法也稱結(jié)構(gòu)化系統(tǒng)開(kāi)發(fā)方法,是目前國(guó)內(nèi)外較流行的軟件系統(tǒng)開(kāi)發(fā)方法。尤其在開(kāi)發(fā)復(fù)雜的大系統(tǒng)時(shí),顯示出無(wú)比的優(yōu)越性。它的基本思想是:將軟件工程學(xué)和系統(tǒng)工程的理論和方法引入到軟件系統(tǒng)的開(kāi)發(fā)中,按照用戶至上的原則,采用結(jié)構(gòu)化、模塊化自頂向下對(duì)系統(tǒng)進(jìn)行分析和設(shè)計(jì)。具體的說(shuō),是通過(guò)把整個(gè)軟件生命周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),使規(guī)模大、結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開(kāi)發(fā)變的容易控制和管理。它的優(yōu)點(diǎn)是強(qiáng)調(diào)系統(tǒng)開(kāi)發(fā)過(guò)程的整體性和全局性,強(qiáng)調(diào)在整體優(yōu)化的前提下考慮具體的分析設(shè)計(jì)問(wèn)題,即自頂向下的觀點(diǎn)。它從時(shí)間角度把軟件開(kāi)發(fā)和維護(hù)分解為若干階段,每個(gè)階段有各自相對(duì)獨(dú)立的任務(wù)和目標(biāo),從而降低了系統(tǒng)開(kāi)發(fā)的復(fù)雜性,提高了可操作性。

(2)軟件生命周期模式

對(duì)于不同的軟件系統(tǒng),可以采用不同的開(kāi)發(fā)方法、以及運(yùn)用不同的管理方法和手段。實(shí)際上,軟件生命周期法在開(kāi)始的時(shí)候只是一個(gè)概念。因此,在應(yīng)用軟件開(kāi)發(fā)生命周期法時(shí),許多開(kāi)發(fā)團(tuán)隊(duì)會(huì)把這一個(gè)概念進(jìn)行工具化,這一個(gè)工具化是軟件開(kāi)發(fā)生命周期模式。通過(guò)軟件開(kāi)發(fā)生命周期模式,我們能清晰、直觀地看到軟件開(kāi)發(fā)的全過(guò)程。

在過(guò)去的10年中,軟件生命周期模式及其許多變體獲得了廣泛的認(rèn)可。在各種軟件開(kāi)發(fā)方法和過(guò)程改進(jìn)模式中的技術(shù)革新也得到了承認(rèn),如Rational Unified Process(RUP)、Capability Maturity Model(CMM)、ISO 9000-3 等。典型的幾種生命周期模式包括:瀑布模式、演化模式、螺旋模式、快速原型模式、噴泉模式和混合模式等。在這里只介紹其中常用的幾種模式:

①瀑布模式:它首先是由Royce提出,該模式由于酷似瀑布聞名。在該模式中首先確定需求,然后擬定規(guī)格說(shuō)明,在通過(guò)驗(yàn)證后方可進(jìn)入計(jì)劃階段。因此,瀑布模式中至關(guān)重要的一點(diǎn)是只有當(dāng)一個(gè)階段的文檔獲得認(rèn)可才可以進(jìn)入下一個(gè)階段。瀑布模式通過(guò)強(qiáng)制性規(guī)約來(lái)確保每個(gè)階段都能很好的完成任務(wù),但是實(shí)際上卻往往難以辦到。因?yàn)檎麄(gè)瀑布模式幾乎都是以文檔驅(qū)動(dòng)的,這對(duì)于非專業(yè)的用戶來(lái)說(shuō)是難以閱讀和理解的。雖然瀑布模式有很多很好的思想可以借鑒,但是在過(guò)程能力上有天生的缺陷。

②演化模式:它主要是針對(duì)事先不能完整定義需求的軟件開(kāi)發(fā)。它的方法是用戶先給出待開(kāi)發(fā)系統(tǒng)的核心需求,并且在核心需求實(shí)現(xiàn)后,再提出反饋以支持系統(tǒng)的終設(shè)計(jì)和實(shí)現(xiàn)。也是說(shuō):開(kāi)發(fā)人員首先會(huì)根據(jù)用戶的需求開(kāi)發(fā)核心系統(tǒng),然后提供給用戶試用;用戶試用后再提出增強(qiáng)系統(tǒng)能力的需求;后開(kāi)發(fā)人員再根據(jù)用戶的反饋,實(shí)施迭代開(kāi)發(fā)。實(shí)際上,這個(gè)模式可看作是重復(fù)執(zhí)行的多個(gè)瀑布模式。演化模式要求開(kāi)發(fā)人員把項(xiàng)目的產(chǎn)品需求分解為不同組,以便分批循環(huán)開(kāi)發(fā)。但這種分組并不是隨意性的,而是要根據(jù)功能的重要性及對(duì)總體設(shè)計(jì)的基礎(chǔ)結(jié)構(gòu)的影響而作出判斷。

③螺旋模式:它是瀑布模式與演化模式相結(jié)合,并加入兩者所忽略的風(fēng)險(xiǎn)分析所建立的一種軟件開(kāi)發(fā)模式。螺旋模式基本的做法是在瀑布模式的每一個(gè)開(kāi)發(fā)階段之前,引入非常嚴(yán)格的風(fēng)險(xiǎn)識(shí)別、風(fēng)險(xiǎn)分析和風(fēng)險(xiǎn)控制。直到采取了消除風(fēng)險(xiǎn)的措施之后,才開(kāi)始計(jì)劃下一階段的開(kāi)發(fā)工作。否則,項(xiàng)目很可能被暫停。另外,如果有充足的把握判斷遺留的風(fēng)險(xiǎn)已降低到一定的程度,項(xiàng)目管理人員還可作出決定讓余下的開(kāi)發(fā)工作采用另外的生命周期模式,如演化模式,瀑布模式或自定的混合模式。

④過(guò)程開(kāi)發(fā)模式:它又叫混合模式或元模式,是指把幾種不同模式組合成一種混合模式,它允許一個(gè)項(xiàng)目能沿著有效的路徑發(fā)展。因?yàn)樯鲜龅哪J街卸加凶约邯?dú)特的思想,現(xiàn)在的軟件開(kāi)發(fā)團(tuán)隊(duì)中很少說(shuō)標(biāo)準(zhǔn)的采用那一種模式的,因?yàn)槟J胶蛯?shí)際應(yīng)用還是有很大的區(qū)別的。實(shí)際上,許多軟件開(kāi)發(fā)團(tuán)隊(duì)都是在使用幾種不同的開(kāi)發(fā)方法組成他們自己的混合模式。

后,我們來(lái)總結(jié)一下。螺旋模式是典型的迭代式生命周期模式,而RUP則是近代迭代式生命周期的代表。與螺旋模式相比,RUP將風(fēng)險(xiǎn)管理放在更重要的地位。新的迭代式生命周期模式的代表是模式驅(qū)動(dòng)架構(gòu)(MDA)和敏捷(Agile)軟件開(kāi)發(fā)。MDA模式是基于可執(zhí)行規(guī)格說(shuō)明的思想,是現(xiàn)代轉(zhuǎn)換模式的代表,其核心技術(shù)是組件技術(shù)。而敏捷開(kāi)發(fā)生命周期的典型代表是XP編程,是把傳統(tǒng)的系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)由敏捷軟件開(kāi)發(fā)過(guò)程中的驗(yàn)收測(cè)試、重構(gòu)和測(cè)試驅(qū)動(dòng)所取代;把傳統(tǒng)的集成和部署由敏捷軟件開(kāi)發(fā)中的持續(xù)集成和短周期所取代。

其實(shí)上,無(wú)論是瀑布開(kāi)發(fā)模式還是螺旋開(kāi)發(fā)模式,軟件生命周期模式的發(fā)展實(shí)際上是體現(xiàn)了軟件工程理論的發(fā)展。在早的時(shí)候,軟件的生命周期處于無(wú)序、混亂的情況。一些人為了能夠管理和控制軟件的開(kāi)發(fā)過(guò)程,把軟件開(kāi)發(fā)嚴(yán)格的區(qū)分為多個(gè)不同的階段,并在階段間加上嚴(yán)格的審查,這是軟件開(kāi)發(fā)模式產(chǎn)生的起因。它們體現(xiàn)了人們對(duì)軟件過(guò)程的一個(gè)希望:嚴(yán)格控制、確保質(zhì)量。

如何選擇合適的生命周期模式?

眾所周知,在軟件開(kāi)發(fā)過(guò)程中如果缺乏適當(dāng)?shù)墓芾,終開(kāi)發(fā)出來(lái)的軟件產(chǎn)品質(zhì)量是難以保證的。那么,在軟件開(kāi)發(fā)管理過(guò)程中,應(yīng)該如何選擇合適的軟件開(kāi)發(fā)生命模式工具呢?建議可參考以下幾個(gè)步驟:

(1)評(píng)估軟件開(kāi)發(fā)范圍和需求

當(dāng)軟件所有參與人員都能理解軟件開(kāi)發(fā)的范圍和需求時(shí),能為軟件開(kāi)發(fā)可能遇到的突發(fā)事情和未來(lái)變化建立一個(gè)技術(shù)基線。這個(gè)技術(shù)基線、基礎(chǔ)規(guī)則和假設(shè)應(yīng)該包含識(shí)別和評(píng)估軟件的功能性。一般來(lái)說(shuō),在前期需求明確的情況下可盡量采用瀑布模式或改進(jìn)型的瀑布模式。而在不確定性因素很多時(shí)或很多需求無(wú)法計(jì)劃的情況下,應(yīng)該盡量采用增量迭代模式或螺旋模式。

(2)確定軟件開(kāi)發(fā)規(guī)模和階段劃分

確定軟件的開(kāi)發(fā)規(guī)模是決定開(kāi)發(fā)管理工具的重要一步,也是為關(guān)鍵的步驟。因?yàn)榇_定開(kāi)發(fā)規(guī)模和階段劃分是明確軟件開(kāi)發(fā)生命周期的驅(qū)動(dòng)動(dòng)力,它可用來(lái)約束在開(kāi)發(fā)過(guò)程中所采用的行動(dòng)和資源,以及限制可以提供的選項(xiàng)。例如,對(duì)于規(guī)模小的建議采用瀑布模式;而在資金和成本無(wú)法一次到位情況下可以采用增量模式;而對(duì)于完全多個(gè)獨(dú)立功能的開(kāi)發(fā)可以在需求階段分功能并行,但每個(gè)功能內(nèi)可以遵循瀑布模式原則;而其他項(xiàng)目一般可采用迭代模式。

(3)選擇合適的軟件生命周期模式

一個(gè)定義良好的軟件生命周期模式,可以很好的指導(dǎo)我們的開(kāi)發(fā)工作,使漫長(zhǎng)的開(kāi)發(fā)工作易于控制。事實(shí)上,我們也可以任意定義自己喜歡的軟件生命周期模式。但是,如果生命周期模式定義不合理,卻會(huì)制約我們的開(kāi)發(fā)過(guò)程。因此,選擇一個(gè)軟件開(kāi)發(fā)模式不應(yīng)當(dāng)將其作為一次性的活動(dòng)來(lái)考慮。因?yàn)殡S著開(kāi)發(fā)項(xiàng)目的進(jìn)展,未知內(nèi)容會(huì)逐漸變?yōu)橐阎獌?nèi)容,并且新的和意料之外的問(wèn)題和風(fēng)險(xiǎn)都會(huì)隨之出現(xiàn)。所以,選擇開(kāi)發(fā)模式應(yīng)該要根據(jù)實(shí)際情況來(lái)進(jìn)行,然后在此基礎(chǔ)上再加以裁減以作出適當(dāng)?shù)男薷暮透牧肌?/p>

(4)跟蹤和度量開(kāi)發(fā)模式的效率

在軟件開(kāi)發(fā)模式選定后,應(yīng)該要定時(shí)跟蹤和度量開(kāi)發(fā)模式的效率。例如,記錄那些相關(guān)的信息和得到的經(jīng)驗(yàn)教訓(xùn)。通過(guò)這樣做的目的是為了記錄一個(gè)"佳開(kāi)發(fā)模式"的選擇過(guò)程,以獲得選擇開(kāi)發(fā)模式的經(jīng)驗(yàn)性。因此,跟蹤信息應(yīng)當(dāng)被不斷的收集起來(lái),并且同原始模式和基線進(jìn)行比較。如果執(zhí)行情況出現(xiàn)效率低下或者明顯的不同,那么校正開(kāi)發(fā)模式應(yīng)當(dāng)被考慮進(jìn)來(lái)并加以實(shí)施,從而將項(xiàng)目開(kāi)發(fā)拉回到正確的軌道上來(lái)。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd