首頁技術(shù)文章正文

軟件開發(fā)模型有幾種?它們的開發(fā)方法有何特點【黑馬程序員】

更新時間:2020-10-08 來源:黑馬程序員 瀏覽量:

軟件測試工作與軟件開發(fā)模型息息相關(guān),在不同的軟件開發(fā)模型中,測試的任務(wù)和作用也不相同,因此測試人員要充分了解軟件開發(fā)模型,以便找準(zhǔn)自己在其中的定位與任務(wù)。軟件開發(fā)模型規(guī)定了軟件開發(fā)應(yīng)遵循的步驟,是軟件開發(fā)的導(dǎo)航圖,它能夠清晰、直觀地表達(dá)軟件開發(fā)的全過程,以及每個階段要進(jìn)行的活動和要完成的任務(wù)。開發(fā)人員在選擇開發(fā)模型時,要根據(jù)軟件的特點、開發(fā)人員的參與方式選擇穩(wěn)定可靠的開發(fā)模型自有軟件開發(fā)以來,軟件開發(fā)模型也從最初的“邊做邊改”發(fā)展出了多個模型,下面以軟件開發(fā)模型發(fā)展歷史為順序,介紹幾個典型的開發(fā)模型。

1. 瀑布模型

瀑布模型是W.W.羅伊斯(W.W.Royce)于1970年提出的軟件開發(fā)模型,由模型名稱可知該模型遵循從上至下一次性完成整個軟件產(chǎn)品的開發(fā)方式瀑布模型將軟件開發(fā)過程分為6個階段:計劃→需求分析→軟件設(shè)計→編碼→測試→運行維護(hù),其開發(fā)過程如圖1-1所示。

瀑布模型
圖1-1 瀑布模型


在瀑布模型中,軟件開發(fā)的各項活動嚴(yán)格按照這條線進(jìn)行,只有當(dāng)一個階段任務(wù)完成之后才能開始下一個階段。軟件開發(fā)的每一個階段都要有結(jié)果產(chǎn)出,結(jié)果經(jīng)過審核驗證之后作為下一個階段的輸入,下個階段才可以順利進(jìn)行。如果結(jié)果審核驗證不通過,則需要返回修改。

瀑布模型為整個項目劃分了清晰的檢查點,當(dāng)一個階段完成之后,只需要把全部精力放置在后面的開發(fā)上即可,它有利于大型軟件開發(fā)人員的組織管理及工具的使用與研究,可以提高開發(fā)的效率。

但是瀑布模型是嚴(yán)格按照線性方式進(jìn)行的,無法適應(yīng)用戶需求變更,用戶只能等到最后才能看到開發(fā)成果,增加了開發(fā)風(fēng)險。如果開發(fā)人員與客戶對需求理解有偏差,到最后開發(fā)完成后,最終成果與客戶需求可能會差之千里。使用瀑布模型開發(fā)軟件時,如果早期犯的錯誤在項目完成后才發(fā)現(xiàn),此時再修改原來的錯誤需要付出巨大的代價。瀑布模型要求每一個階段必須有結(jié)果產(chǎn)出,這就勢必增加了文檔的數(shù)量,使軟件開發(fā)的工作量變大。

除此之外,對于現(xiàn)代軟件來說,軟件開發(fā)各階段之間的關(guān)系大部分不會是線性的,很難使用瀑布模型開發(fā)軟件,因此瀑布模型不再適合現(xiàn)代軟件開發(fā),已經(jīng)被逐漸廢棄。

2、 快速原型模型

快速原型模型與瀑布模型正好相反,它在最初確定用戶需求時快速構(gòu)造岀一個可以運行的軟件原型,這個軟件原型向用戶展示待開發(fā)軟件的全部或部分功能和性能,客戶對該原型進(jìn)行審核評價,然后給出更具體的需求意見,這樣逐步豐富細(xì)化需求,最后開發(fā)人員與客戶達(dá)成最終共識,確定客戶的真正需求。確定客戶的真正需求之后,開始真正的軟件開發(fā)。

快速原型模型類似于建造房子,確定客戶對房子的需求之后快速地搭建一個房子模型,由客戶對房子模型進(jìn)行評價,房子的樣式、功能、布局等是否滿足需求,哪里需要改進(jìn)等,最后確定了客戶對房子的要求,就開始真正地建造房子。該模型的開發(fā)過程如圖1-2所示。

快速原型模型
圖1-2 快速原型模型

與瀑布模型相比,快速原型模型克服了需求不明確帶來的風(fēng)險,適用于不能預(yù)先確定需求的軟件項目。但快速原型模型關(guān)鍵在于快速構(gòu)建軟件原型,準(zhǔn)確地設(shè)計出軟件原型存在定的難度。此外,這種開發(fā)模型也不利于開發(fā)人員對產(chǎn)品進(jìn)行擴展。

4、 迭代模型

迭代模型又稱為增量模型或演化模型,它將一個完整的軟件拆分成不同的組件,然后逐個組件地開發(fā)測試,每完成一個組件就展現(xiàn)給客戶,讓客戶確認(rèn)這一部件功能和性能是否達(dá)到客戶需求,最終確定無誤,將組件集成到軟件體系結(jié)構(gòu)中。整個開發(fā)工作被組織為一系列短期、簡單的小項目,稱為一系列迭代,每一個迭代都需要經(jīng)過需求分析→軟件設(shè)計→編碼→測試的過程,其開發(fā)過程如圖1-3所示。

迭代模型

圖1-3 迭代模型

在迭代模型中,第一個迭代(即第一個組件)往往是軟件基本需求的核心部分,第一個組件完成之后,經(jīng)過客戶審核評價形成下一個組件的開發(fā)計劃,包括對核心產(chǎn)品的修改和新功能的發(fā)布,這樣重復(fù)迭代步驟直到實現(xiàn)最終完善的產(chǎn)品。

迭代模型可以很好地適應(yīng)客戶需求變更,它逐個組件地交付產(chǎn)品,客戶可以經(jīng)??吹疆a(chǎn)品,如果某個組件沒有滿足客戶需求,則只需要更改這一個組件,降低了軟件開發(fā)的成本與風(fēng)險。但是選代模型需要將開發(fā)完成的組件集成到軟件體系結(jié)構(gòu)中,這樣會有集成失敗的風(fēng)險,因此要求軟件必須有開放式的體系結(jié)構(gòu)。此外,迭代模型逐個組件地開發(fā)修改,很容易退化為“邊做邊改”的開發(fā)形式,從而失去對軟件開發(fā)過程的整體控制。

4、 螺旋模型

螺旋模型由巴利·玻姆(Barry Boehm)于1988年提岀,該模型融合了瀑布模型、快速原型模型,它最大的特點是引入了其他模型所忽略的風(fēng)險分析,如果項目不能排除重大風(fēng)險,就停止項目從而減小損失。這種模型比較適合開發(fā)復(fù)雜的大型軟件。

螺旋模型將整個項目開發(fā)過程劃分為幾個不同的階段,每個階段按部就班地執(zhí)行,這種劃分方式采用了瀑布模型。每個階段在開始之前都要進(jìn)行風(fēng)險評估,如果能消除重大風(fēng)險則可以開始該階段任務(wù)。在每個階段,首先構(gòu)建軟件原型,根據(jù)快速原型模型完成這個迭代過程,產(chǎn)出最終完善的產(chǎn)品,然后進(jìn)入下一個階段,同樣下一個階段開始之前也要進(jìn)行風(fēng)險評估,這樣循環(huán)往復(fù)直到完成所有階段的任務(wù)。螺旋模型的若干個階段是沿著螺線方式進(jìn)行的,如圖1-4所示。

螺旋模型
圖1-4 螺旋模型

圖1-4有4個象限:制訂計劃、風(fēng)險分析、實施工程、客戶評估,各象限含義如下。

(1)制訂計劃:確定軟件目標(biāo),制訂實施方案,并且列出項目開發(fā)的限制條件。

(2)風(fēng)險分析:評價所制訂的實施方案,識別風(fēng)險并消除風(fēng)險。

(3)實施工程:開發(fā)產(chǎn)品并進(jìn)行驗證

(4)客戶評估:客戶對產(chǎn)品進(jìn)行審核評估,提出修正建議,制訂下一步計劃。

在螺旋模型中,每一個選代都需要經(jīng)過這4個步驟,直到最后得到完善的產(chǎn)品,可以進(jìn)行提交。

螺旋模型強調(diào)了風(fēng)險分析,這意味著對可選方案和限制條件都進(jìn)行了評估,更有助于將軟件質(zhì)量作為特殊目標(biāo)融入產(chǎn)品開發(fā)之中。它以小分段構(gòu)建大型軟件,使成本計算變得簡單容易,而且客戶始終參與每個階段的開發(fā),保證了項目不偏離正確方向,也保證了項目的可控制性。

5、敏捷模型

敏捷模型是20世紀(jì)90年代興起的一種軟件開發(fā)模型。在現(xiàn)代社會,技術(shù)發(fā)展非常快軟件開發(fā)也是在快節(jié)奏的環(huán)境中進(jìn)行的。在業(yè)務(wù)快速變換的環(huán)境下,往往無法在軟件開發(fā)之前收集到完整而詳盡的軟件需求。沒有完整的軟件需求,傳統(tǒng)的軟件開發(fā)模型就難以展開工作。

為了解決這個問題,人們提出了敏捷開發(fā)模型。敏捷模型以用戶的需求進(jìn)化為核心,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開發(fā)。在敏捷模型中,軟件項目在構(gòu)建初期被拆分為多個相互聯(lián)系而又獨立運行的子項目,然后迭代完成各個子項目,開發(fā)過程中,各個子項目都要經(jīng)過開發(fā)測試。當(dāng)客戶有需求變更時,敏捷模型能夠迅速地對某個子項目做出修改以滿足客戶的需求。在這個過程中,軟件一直處于可使用狀態(tài)。

除了響應(yīng)需求,敏捷模型還有一個重要的概念——迭代,就是不斷對產(chǎn)品進(jìn)行細(xì)微、漸進(jìn)式的改進(jìn),每次改進(jìn)一小部分,如果可行再逐步擴大改進(jìn)范圍。在敏捷模型中,軟件開發(fā)不再是線性的,開發(fā)的同時也會進(jìn)行測試工作,甚至可以提前寫好測試代碼,因此在敏捷模有“開發(fā)未動,測試先行”的說法。

另外,相比于傳統(tǒng)的軟件開發(fā)模型,敏捷模型更注重“人”在軟件開發(fā)中的作用,項目的各部門應(yīng)該緊密合作、快速有效地溝通(如面對面溝通),提出需求的客戶可以全程參與到開發(fā)過程,以適應(yīng)軟件頻繁的需求變更。為此,敏捷模型描述了一套軟件開發(fā)的價值和原則,具體如下所示。

(1)個體和交互重于過程和工具。

(2)可用軟件重于完備文檔。

(3)客戶協(xié)作重于合同談判。

(4)響應(yīng)變化重于遵循計劃。

對于敏捷模型來說,并不是工具、文檔等不重要,而是更注重人與人之間的交流溝通。

敏捷模型可以及時響應(yīng)客戶需求變更,不斷適應(yīng)新的趨勢,但是在開發(fā)靈活的同時也帶來了一定程度的混亂。例如,缺乏文檔資料;軟件之前版本的可重現(xiàn)性、可回溯性較低;對于較大的項目,人員越多,面對面的有效溝通越困難。因此敏捷模型比較適用于小型項目的開發(fā),而不太適用于大型項目。


猜你喜歡

什么是接口文檔?為什么要寫接口文檔?

如何測試HTTP響應(yīng)?

軟件生命周期分為哪幾個階段?這六個階段必不可少

軟件測試培訓(xùn)課程

分享到:
在線咨詢 我要報名
和我們在線交談!