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

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

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

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

1. 瀑布模型

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

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


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

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

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

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

2、 快速原型模型

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

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

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

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

4、 迭代模型

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

迭代模型

圖1-3 迭代模型

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

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

4、 螺旋模型

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

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

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

圖1-4有4個(gè)象限:制訂計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)施工程、客戶評(píng)估,各象限含義如下。

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

(2)風(fēng)險(xiǎn)分析:評(píng)價(jià)所制訂的實(shí)施方案,識(shí)別風(fēng)險(xiǎn)并消除風(fēng)險(xiǎn)。

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

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

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

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

5、敏捷模型

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

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

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

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

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

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

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

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

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

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


猜你喜歡

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

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

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

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

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!