噴泉模型
1.什么是噴泉模型
噴泉模型是一種以用戶需求為動(dòng)力,以對(duì)象為驅(qū)動(dòng)的模型,主要用于描述面向?qū)ο蟮能浖_發(fā)過程。該模型認(rèn)為軟件開發(fā)過程自下而上周期的各階段是相互重疊和多次反復(fù)的,就像水噴上去又可以落下來(lái),類似一個(gè)噴泉。各個(gè)開發(fā)階段沒有特定的次序要求,并且可以交互進(jìn)行,可以在某個(gè)開發(fā)階段中隨時(shí)補(bǔ)充其他任何開發(fā)階段中的遺漏。采用噴泉模型的軟件過程如下圖所示:
噴泉模型主要用于面向?qū)ο蟮能浖?a href="/wiki/%E9%A1%B9%E7%9B%AE" title="項(xiàng)目">項(xiàng)目,軟件的某個(gè)部分通常被重復(fù)多次,相關(guān)對(duì)象在每次迭代中隨之加入漸進(jìn)的軟件成分。各活動(dòng)之間無(wú)明顯邊界,例如設(shè)計(jì)和實(shí)現(xiàn)之間沒有明顯的邊界,這也稱為“噴泉模型的無(wú)間隙性”。由于對(duì)象概念的引入,表達(dá)分析、設(shè)計(jì)及實(shí)現(xiàn)等活動(dòng)只用對(duì)象類和關(guān)系,從而可以較容易地實(shí)現(xiàn)活動(dòng)的迭代和無(wú)間隙。
2.噴泉模型的概述
噴泉模型是由B.H.Sollers和J.M.Edwards于1990年提出的一種新的開發(fā)模型。噴泉模型主要用于采用面向?qū)ο蠹夹g(shù)的軟件開發(fā)項(xiàng)目,噴泉一詞本身就體現(xiàn)了迭代和無(wú)間隙的特征。無(wú)間隙指在各項(xiàng)活動(dòng)之間無(wú)明顯邊界,如分析、設(shè)計(jì)和編碼之間沒有明顯的界限。在編碼之前再進(jìn)行需求分析和設(shè)計(jì),期間添加有關(guān)功能,使系統(tǒng)得以演化。噴泉模型在系統(tǒng)某個(gè)部分常常被重復(fù)工作多次,相關(guān)對(duì)象在每次迭代中隨之加入漸進(jìn)的系統(tǒng)。由于對(duì)象概念的引入,需求分析、設(shè)計(jì)、實(shí)現(xiàn)等活動(dòng)只用對(duì)象類和關(guān)系來(lái)表達(dá),從而可以較為容易地實(shí)現(xiàn)活動(dòng)的迭代和無(wú)間隙,并且使得開發(fā)過程自然地包括復(fù)用。
3.噴泉模型的優(yōu)缺點(diǎn)
1、噴泉模型的優(yōu)點(diǎn)
噴泉模型不像瀑布模型那樣,需要分析活動(dòng)結(jié)束后才開始設(shè)計(jì)活動(dòng),設(shè)計(jì)活動(dòng)結(jié)束后才開始編碼活動(dòng)。該模型的各個(gè)階段沒有明顯的界限,開發(fā)人員可以同步進(jìn)行開發(fā)。其優(yōu)點(diǎn)是可以提高軟件項(xiàng)目開發(fā)效率,節(jié)省開發(fā)時(shí)間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。
2、噴泉模型的缺點(diǎn)
由于噴泉模型在各個(gè)開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項(xiàng)目的管理。此外這種模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對(duì)可能隨時(shí)加入各種信息、需求與資料的情況。
4.改進(jìn)的噴泉模型
1.傳統(tǒng)的噴泉模型
傳統(tǒng)的噴泉模型如下圖所示,目前主要應(yīng)用于面向?qū)ο蟮能浖_發(fā)中 。該模型的主要特點(diǎn)是認(rèn)為軟件開發(fā)的各個(gè)階段是相互重疊和多次反復(fù)的,從圖中可以看出,軟件開發(fā)的規(guī)格說明階段、設(shè)計(jì)階段、編碼階段和測(cè)試階段可以交疊在一起,同時(shí)進(jìn)行。這體現(xiàn)了各個(gè)開發(fā)過程的并行關(guān)系。噴泉的水可以噴上去又可以落下來(lái),水既可以落在中間,也可以落在底部。這一點(diǎn)在模型中表現(xiàn)為各個(gè)測(cè)試階段的并行。噴泉的水不停的噴發(fā)、墜落,代表著開發(fā)和測(cè)試階段的復(fù)雜性和重復(fù)性。
2.改進(jìn)的噴泉模型
在傳統(tǒng)噴泉模型的基礎(chǔ)上,提出了改進(jìn)的噴泉模型,如下圖所示。以噴泉模型為基礎(chǔ),可以實(shí)現(xiàn)盡早的、全面的展開測(cè)試,同時(shí)將測(cè)試工作進(jìn)行迭代。另外,改進(jìn)的噴泉將需求納入,使得模型完全實(shí)現(xiàn)了整個(gè)開發(fā)過程的無(wú)邊界、交互性。
該模型每一次測(cè)試過程包括四個(gè)階段。
第一階段為測(cè)試需求階段,包括提取和驗(yàn)證需求。這一階段的測(cè)試主要是采用靜態(tài)測(cè)試。
第二階段為測(cè)試分析階段,又分為制定測(cè)試計(jì)劃、測(cè)試設(shè)計(jì)與開發(fā)兩個(gè)步驟。測(cè)試計(jì)劃包括確定測(cè)試策略和測(cè)試系統(tǒng),預(yù)估測(cè)試工作量等。測(cè)試設(shè)計(jì)與開發(fā)包括開發(fā)測(cè)試用例,驗(yàn)證并調(diào)試測(cè)試等。
第三階段為測(cè)試執(zhí)行階段,強(qiáng)調(diào)測(cè)試人員和開發(fā)人員的配合。該階段的測(cè)試方法包括單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試及驗(yàn)收測(cè)試。除了對(duì)程序進(jìn)行測(cè)試外,還要對(duì)文檔等進(jìn)行測(cè)試。記錄測(cè)試結(jié)果并寫出測(cè)試總結(jié)報(bào)告,為下一輪的迭代測(cè)試打基礎(chǔ)。
第四階段為測(cè)試維護(hù)階段。開發(fā)者的維護(hù)包括修復(fù)顧客操作和為滿足不斷變化的顧客需求而對(duì)產(chǎn)品功能進(jìn)行增強(qiáng)時(shí)發(fā)現(xiàn)的缺陷;測(cè)試組的維護(hù)意味著對(duì)缺陷的修復(fù)進(jìn)行驗(yàn)證,測(cè)試增強(qiáng)了的功能以及產(chǎn)品的新發(fā)布版本上運(yùn)行回歸測(cè)試以確保修改前的產(chǎn)品具有的功能不因產(chǎn)品的新變化而被破壞。
從模型圖中可以看出,該模型除具有傳統(tǒng)噴泉模型的優(yōu)點(diǎn)外,還體現(xiàn)了以下特點(diǎn):
(1)布式特點(diǎn)當(dāng)軟件結(jié)束計(jì)劃階段,分布在不同地域的軟件開發(fā)小組可以根據(jù)計(jì)劃,在不同或者相同的時(shí)間啟動(dòng)項(xiàng)目開發(fā)。
(2)測(cè)試的充分軟件測(cè)試中測(cè)試用例的覆蓋率直接決定了軟件測(cè)試的質(zhì)量。改進(jìn)的噴泉模型大大擴(kuò)大了設(shè)計(jì)和選取測(cè)試用例的范圍,可以從包括程序、文檔等所有可以使用的信息中獲得,提高了測(cè)試用例的覆蓋率,保證測(cè)試的充分性和完全性。
(3)完全實(shí)現(xiàn)了測(cè)試和開發(fā)的同步,以及各個(gè)過程內(nèi)各個(gè)階段之間的同步。真正實(shí)現(xiàn)了“全過程”測(cè)試,提高了軟件測(cè)試的質(zhì)量。
5.噴泉模型實(shí)例分析[1]
在給一個(gè)中型制造企業(yè)開發(fā)物流管理信息系統(tǒng)的過程中,使用改進(jìn)模型。這個(gè)物流管理信息系統(tǒng)基于C/S和B/S混合架構(gòu),一共分為六大子系統(tǒng),目的是解決企業(yè)內(nèi)部存在的“信息孤島”問題,實(shí)現(xiàn)企業(yè)內(nèi)部信息共享,幫助企業(yè)提高信息化水平。按照以往經(jīng)驗(yàn),開發(fā)一個(gè)物流管理信息系統(tǒng),其中有一半的時(shí)間是進(jìn)行各類測(cè)試。在開發(fā)這個(gè)系統(tǒng)時(shí),所面臨的問題主要有以下幾點(diǎn):
(1)企業(yè)的需求非常不固定,經(jīng)常變化。
(2)由于企業(yè)的規(guī)模不大,資金有限,要求在規(guī)定的時(shí)間內(nèi)必須完成開發(fā)。
(3)系統(tǒng)必須能正常運(yùn)行,要求測(cè)試的完備性。
該系統(tǒng)開發(fā)小組一共四個(gè)成員,基于上述三個(gè)問題,采用了改進(jìn)的噴泉模型進(jìn)行軟件測(cè)試,一個(gè)編程,一個(gè)測(cè)試,開發(fā)與測(cè)試同步。本文以信息系統(tǒng)中的倉(cāng)庫(kù)子系統(tǒng)為例,介紹如何使用該測(cè)試模型來(lái)解決以上問題。倉(cāng)庫(kù)子系統(tǒng)結(jié)構(gòu)如圖5所示。
圖中一共分為三層,上層、中間層和底層,實(shí)際還有一層,稱為頂層。底層采用單元測(cè)試,中間層和上層采用集成測(cè)試,頂層采用系統(tǒng)測(cè)試。在整個(gè)系統(tǒng)開發(fā)過程中,嚴(yán)格按照測(cè)試模型進(jìn)行測(cè)試和開發(fā)。具體步驟和做法為:
(1)順層開發(fā)階段,對(duì)應(yīng)模型中的顧客分析。主要是對(duì)需求的確定和驗(yàn)證。在確定用戶需求時(shí),根據(jù)企業(yè)需求不穩(wěn)定的現(xiàn)狀,把企業(yè)的需求進(jìn)行分類,共分為三類:穩(wěn)定的,不穩(wěn)定的和極不穩(wěn)定的。
利用這些需求完成最初的需求說明書,根據(jù)測(cè)試模型,測(cè)試人員開始進(jìn)行設(shè)計(jì)驗(yàn)收測(cè)試用例。對(duì)于極不穩(wěn)定的需求編制成一份文檔,并進(jìn)行確認(rèn),在以后的開發(fā)過程中邊開發(fā)邊對(duì)這些需求進(jìn)行更改。
(2)當(dāng)開發(fā)進(jìn)行到概要設(shè)計(jì)(圖中的上層)時(shí),對(duì)應(yīng)測(cè)試模型中的系統(tǒng)分析階段。按照測(cè)試模型,采用邊開發(fā)邊測(cè)試的辦法。根據(jù)上一階段已經(jīng)通過驗(yàn)收測(cè)試的需求說明書,將整個(gè)系統(tǒng)分成了六大子系統(tǒng),銷售子系統(tǒng)、采購(gòu)子系統(tǒng)、倉(cāng)庫(kù)子系統(tǒng)、生產(chǎn)子系統(tǒng)、財(cái)務(wù)子系統(tǒng)和服務(wù)器子系統(tǒng)。此時(shí),測(cè)試人員結(jié)束驗(yàn)收測(cè)試用例的設(shè)計(jì),而進(jìn)入集成測(cè)試用例的設(shè)計(jì)。
(3)詳細(xì)設(shè)計(jì)階段,對(duì)應(yīng)測(cè)試模型的子系統(tǒng)分析。首先把倉(cāng)庫(kù)分成系統(tǒng)管理、入庫(kù)管理、出庫(kù)管理、調(diào)撥管理、庫(kù)存統(tǒng)計(jì)和輔助管理六個(gè)模塊,這個(gè)過程測(cè)試人員繼續(xù)執(zhí)行測(cè)試用例的設(shè)計(jì)。然后進(jìn)入測(cè)試模型中的模塊分析階段,即開發(fā)人員根據(jù)需求文檔進(jìn)行更細(xì)小的模塊劃分。系統(tǒng)管理這個(gè)模塊由四個(gè)更小的模塊組成,入庫(kù)管理、出庫(kù)管理、調(diào)撥管理、庫(kù)存統(tǒng)計(jì)和輔助管理同樣進(jìn)行了更細(xì)的劃分。在這一過程中,需求中的不穩(wěn)定因素被確定下來(lái),測(cè)試人員結(jié)束集成測(cè)試用例設(shè)計(jì),轉(zhuǎn)而開發(fā)單元測(cè)試用例設(shè)計(jì),測(cè)試人員大概能完成3/4的集成測(cè)試用例設(shè)計(jì),并開始對(duì)文檔進(jìn)行驗(yàn)收測(cè)試,記錄測(cè)試結(jié)果,反饋給開發(fā)人員,使其可以及時(shí)修改需求中出現(xiàn)的錯(cuò)誤。
(4)代碼編寫階段。開發(fā)人員根據(jù)詳細(xì)設(shè)計(jì)的結(jié)果,從底層開始進(jìn)行代碼開發(fā)。測(cè)試人員繼續(xù)進(jìn)行單元測(cè)試用例的設(shè)計(jì),測(cè)試用例的獲取范圍也擴(kuò)大,可以從程序中選擇。例如完成庫(kù)存管理單元時(shí),開發(fā)人員繼續(xù)開發(fā)下一個(gè)小單元,測(cè)試人員則開始進(jìn)行單元測(cè)試,并把測(cè)試后的結(jié)果反饋給開發(fā)人員,這樣開發(fā)人員能及時(shí)地改正錯(cuò)誤。當(dāng)開發(fā)人員完成系統(tǒng)管理,開發(fā)入庫(kù)管理時(shí),測(cè)試人員對(duì)系統(tǒng)管理進(jìn)行集成測(cè)試,并同時(shí)進(jìn)行單元測(cè)試。同樣將測(cè)試結(jié)果及時(shí)反饋給開發(fā)人員。當(dāng)整個(gè)倉(cāng)庫(kù)子系統(tǒng)完成了2/3的模塊時(shí),測(cè)試人員邊進(jìn)行單元測(cè)試和集成測(cè)試,邊進(jìn)行系統(tǒng)測(cè)試用例設(shè)計(jì)以及系統(tǒng)測(cè)試需要的測(cè)試環(huán)境設(shè)計(jì)。完成所有子系統(tǒng)時(shí),開始進(jìn)行系統(tǒng)測(cè)試。
在最后執(zhí)行的驗(yàn)收測(cè)試中發(fā)現(xiàn)的錯(cuò)誤,先確定子系統(tǒng),再確定模塊,最后直接回到需求中查找錯(cuò)誤,并執(zhí)行回歸測(cè)試。下表是測(cè)試過程中的一個(gè)測(cè)試實(shí)例。
為了能更清楚的說明改進(jìn)的噴泉模型的優(yōu)勢(shì),我們把該模型每個(gè)階段測(cè)試的結(jié)果和舊有模型進(jìn)行了比對(duì),如表2所示,并進(jìn)行了圖形分析,如下圖所示。
表2 新舊模型測(cè)試結(jié)果對(duì)比
舊模型 | 新模型 | |||
測(cè)試用例 | 出錯(cuò)率 | 測(cè)試用例 | 出錯(cuò)率 | |
需求分析階段 | 已完成的文檔 | 11% | ||
系統(tǒng)設(shè)計(jì)階段 | 準(zhǔn)確無(wú)誤的文檔信息 | 10.2% | 已經(jīng)完成的所有文檔 | 18.6% |
代碼開發(fā)階段 | 文檔、程序 | 24.6% | 所有文檔、程序 | 17.5% |
驗(yàn)收測(cè)試階段 | 需求說明、程序 | l9% | 所有文檔、程序 | 10% |
從表2和上圖中可以看出,由于新模型實(shí)現(xiàn)了開發(fā)與測(cè)試并行,各個(gè)開發(fā)和測(cè)試階段的并行,擴(kuò)大了測(cè)試用例的覆蓋率,而且軟件中出現(xiàn)的錯(cuò)誤在前期就能及時(shí)發(fā)現(xiàn),不僅保證了測(cè)試的有效性和完備性,同時(shí)大大降低了測(cè)試在軟件中的費(fèi)用。