官术网_书友最值得收藏!

1.5 軟件開發(fā)與軟件測(cè)試的關(guān)系

前面已經(jīng)提到軟件生命周期,大家已經(jīng)清楚軟件從無(wú)到有是需要需求人員、研發(fā)人員、測(cè)試人員、實(shí)施維護(hù)等人員相互協(xié)作的。作為軟件測(cè)試人員,在從事軟件測(cè)試工作的同時(shí),最好對(duì)軟件的研發(fā)過(guò)程有一個(gè)整體的了解。隨著信息技術(shù)和各行各業(yè)的蓬勃發(fā)展,現(xiàn)在的軟件系統(tǒng)通常都比較復(fù)雜,一個(gè)新的軟件產(chǎn)品研發(fā)過(guò)程少則需要幾個(gè)人,多則需要幾百人、數(shù)千人來(lái)協(xié)同完成,下面我們就來(lái)看一看軟件的開發(fā)模式。

1.5.1 常見(jiàn)的幾種軟件開發(fā)模式

從開始構(gòu)思到正式發(fā)布軟件產(chǎn)品的過(guò)程稱為軟件開發(fā)模式。一個(gè)軟件系統(tǒng)的順利完成是和選擇正確的、適宜的軟件開發(fā)方法,嚴(yán)格地按照整個(gè)開發(fā)進(jìn)程開發(fā)密不可分的。

由于軟件開發(fā)需求和規(guī)模各不相同,因此,在實(shí)際工作中也有針對(duì)性地運(yùn)用了多種開發(fā)模式,下面給大家介紹一下。

1.直接編寫法

在早期的軟件開發(fā)過(guò)程中,通常由于軟件的規(guī)模比較小,有些開發(fā)人員不遵從軟件工程的思想,直接編寫代碼,而不經(jīng)過(guò)前期的概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)等過(guò)程,通常會(huì)有兩種結(jié)果。第一種結(jié)果是開發(fā)出來(lái)的軟件非常優(yōu)秀(開發(fā)人員思路非常清晰,代碼編寫能力非常強(qiáng));第二種結(jié)果是軟件產(chǎn)品開發(fā)失敗(畢竟在開發(fā)過(guò)程中,能夠很好掌控整體構(gòu)架,并能夠很好實(shí)現(xiàn)細(xì)節(jié)的開發(fā)人員還是很少)。

直接編寫法的優(yōu)點(diǎn)顯而易見(jiàn)就是思路簡(jiǎn)單,對(duì)開發(fā)人員的要求很高,要求開發(fā)人員必須思路清晰,因?yàn)槎鄶?shù)時(shí)候功能模塊的實(shí)現(xiàn)是依賴于開發(fā)人員的“突發(fā)奇想”,由于不需要編寫相應(yīng)的需求、設(shè)計(jì)等文檔,軟件開發(fā)過(guò)程有可能會(huì)縮短。其缺點(diǎn)也非常明顯,就是這種方法沒(méi)有任何計(jì)劃、進(jìn)度安排和規(guī)范的開發(fā)過(guò)程,軟件項(xiàng)目組成員的主要精力花費(fèi)在程序開發(fā)的設(shè)計(jì)和代碼編寫上,它的開發(fā)過(guò)程是非工程化的。這種方法的軟件測(cè)試通常是在開發(fā)任務(wù)完成后進(jìn)行,也就是說(shuō)已經(jīng)形成了軟件產(chǎn)品之后才進(jìn)行測(cè)試。測(cè)試工作有的較容易,有的則非常復(fù)雜,這是因?yàn)檐浖捌湔f(shuō)明書在最初就已完成,待形成產(chǎn)品后,已經(jīng)無(wú)法回頭修改存在的問(wèn)題,所以軟件測(cè)試的工作只是向客戶報(bào)告軟件產(chǎn)品經(jīng)過(guò)測(cè)試后發(fā)現(xiàn)的情況。

通過(guò)上面的介紹,大家不難發(fā)現(xiàn)這種開發(fā)軟件方法存在著很大的風(fēng)險(xiǎn),但是,現(xiàn)行軟件產(chǎn)品通常都是功能繁多、業(yè)務(wù)處理復(fù)雜的產(chǎn)品,這些軟件產(chǎn)品開發(fā)工作應(yīng)當(dāng)避免采用直接編寫法作為軟件開發(fā)的方法。

2.邊寫邊改法

軟件的邊寫邊改開發(fā)模式是軟件項(xiàng)目小組在沒(méi)有刻意采用其他開發(fā)模式時(shí)常用的一種開發(fā)模式。它是對(duì)直接編寫法的一種改進(jìn),參考了軟件產(chǎn)品的要求。這種方法通常只是在開發(fā)人員有了比較粗略的想法就開始進(jìn)行簡(jiǎn)單設(shè)計(jì),然后進(jìn)行較長(zhǎng)的反復(fù)編寫、測(cè)試與修復(fù)這樣一個(gè)循環(huán)的過(guò)程,在認(rèn)為無(wú)法更精細(xì)地描述軟件產(chǎn)品要求時(shí)就發(fā)布產(chǎn)品。因?yàn)閺拈_始就沒(méi)有計(jì)劃和文檔的編制,項(xiàng)目組織能夠較為迅速地展示成果。因此,邊寫邊改模式極其適合用在快速制作的小項(xiàng)目上,如示范程序與演示程序比較適合采用該方法。

處于邊寫邊改開發(fā)項(xiàng)目組的軟件測(cè)試人員要明確的是,測(cè)試人員和開發(fā)人員有可能長(zhǎng)期陷入循環(huán)往復(fù)的開發(fā)過(guò)程中。通常,新的軟件(程序)版本在不斷地產(chǎn)生,而舊的版本的測(cè)試工作可能還未完成,新版本軟件(程序)還可能又包含了新的或已修改的功能。

在進(jìn)行軟件測(cè)試工作期間,邊寫邊改開發(fā)模式最有可能遇到。雖然它有缺點(diǎn),但它是通向采用合理軟件開發(fā)的路子,有助于理解更正規(guī)的軟件開發(fā)方法。

3.瀑布法

1970年,WinSTon Royce提出了著名的“瀑布模型”,直到20世紀(jì)80年代早期,它一直是被廣泛采用的軟件開發(fā)模型。瀑布模式是將軟件生命周期的各項(xiàng)活動(dòng)規(guī)定為按照順序相連的若干個(gè)階段性工作,形如瀑布流水,最終得到軟件產(chǎn)品,如圖1-4所示。瀑布模式本質(zhì)上是一種線性順序模型,因此存在著較明顯的缺點(diǎn),各階段之間存在著嚴(yán)格的順序性和依賴性,特別強(qiáng)調(diào)預(yù)先定義需求的重要性,在著手進(jìn)行具體的開發(fā)工作之前,必須通過(guò)需求分析預(yù)先定義并“凍結(jié)”軟件需求,然后再一步一步地實(shí)現(xiàn)這些需求。但是實(shí)際項(xiàng)目很少遵循著這種線性順序進(jìn)行的。雖然瀑布模式也允許迭代,但這種改變往往對(duì)項(xiàng)目開發(fā)帶來(lái)混亂。在系統(tǒng)建立之前很難只依靠分析就確定出一套完整、準(zhǔn)確、一致、有效的用戶需求,這種預(yù)先定義需求的方法更不能適應(yīng)用戶需求不斷變化的情況。

圖1-4 瀑布開發(fā)模式

(1)瀑布開發(fā)模式優(yōu)點(diǎn)。

① 各個(gè)階段之間具有順序性和依賴性。

② 推遲程序的物理實(shí)現(xiàn)。

③ 每個(gè)階段必須完成規(guī)定的文檔;每個(gè)階段結(jié)束前完成文檔審查,對(duì)修正錯(cuò)誤起到一定作用。

④ 易于組織,易于管理。

⑤ 是一種嚴(yán)格線性的、按階段順序的、逐步細(xì)化的過(guò)程模型(開發(fā)模式)。

(2)瀑布開發(fā)模式缺點(diǎn)。

① 在項(xiàng)目開始的時(shí)候,用戶常常難以清楚地給出所有需求。

② 用戶與開發(fā)人員對(duì)需求理解存在差異。

③ 順序的開發(fā)流程使得開發(fā)中的經(jīng)驗(yàn)教訓(xùn)不能反饋到該項(xiàng)目的開發(fā)中去,實(shí)際的項(xiàng)目很少按照順序模式進(jìn)行。

④ 因?yàn)槠俨寄J酱_定了需求分析的絕對(duì)重要性,但是在實(shí)踐中要想獲得完善的需求說(shuō)明是非常困難的,導(dǎo)致出現(xiàn)“阻塞狀態(tài)”情況發(fā)生。

⑤ 開發(fā)中出現(xiàn)的問(wèn)題直到開發(fā)后期才能夠顯露,因此失去及早糾正的機(jī)會(huì)。

⑥ 不能反映出軟件開發(fā)過(guò)程的反復(fù)與迭代性。

(3)瀑布開發(fā)模式適用場(chǎng)合。

① 對(duì)于有穩(wěn)定的產(chǎn)品定義和易被理解的技術(shù)解決方案時(shí),使用瀑布模式非常適合。

② 對(duì)于有明確定義的版本進(jìn)行維護(hù)或?qū)⒁粋€(gè)產(chǎn)品移植到一個(gè)新的平臺(tái)上,使用瀑布模式也比較適合。

③ 對(duì)于那些易理解但很復(fù)雜的項(xiàng)目,應(yīng)用瀑布模式同樣比較合適,因?yàn)檫@樣的項(xiàng)目可以用順序方法處理問(wèn)題。

④ 對(duì)于那些質(zhì)量需求高于成本需求和進(jìn)度需求的項(xiàng)目,使用瀑布模式處理效果也很理想。

⑤ 對(duì)于那種研發(fā)隊(duì)伍的技術(shù)力量比較薄弱或者新人較多缺乏實(shí)戰(zhàn)經(jīng)驗(yàn)的團(tuán)隊(duì),采用瀑布模式也非常合適。

4.快速原型法

根據(jù)客戶需求在較短的時(shí)間內(nèi)解決用戶最迫切解決的問(wèn)題,完成可演示的產(chǎn)品。這個(gè)產(chǎn)品只實(shí)現(xiàn)最重要功能,在得到用戶的更加明確的需求之后,原型將丟棄。快速原型模型的第一步是建造一個(gè)快速原型,實(shí)現(xiàn)客戶或未來(lái)的用戶與系統(tǒng)的交互,用戶或客戶對(duì)原型進(jìn)行評(píng)價(jià),進(jìn)一步細(xì)化待開發(fā)軟件的需求。通過(guò)逐步調(diào)整原型使其滿足客戶的要求,開發(fā)人員可以確定客戶的真正需求是什么;第二步則在第一步的基礎(chǔ)上開發(fā)客戶滿意的軟件產(chǎn)品。顯然,快速原型方法可以克服瀑布模式的缺點(diǎn),減少由于軟件需求不明確帶來(lái)的開發(fā)風(fēng)險(xiǎn),具有顯著的效果。快速原型實(shí)施的關(guān)鍵在于盡可能快速地建造出軟件原型,一旦確定了客戶的真正需求,所建造的原型將被丟棄。因此,原型系統(tǒng)的內(nèi)部結(jié)構(gòu)并不重要,重要的是必須迅速建立原型,隨之迅速修改原型,以反映客戶的需求,如圖1-5所示。

圖1-5 快速原型開發(fā)模式

5.螺旋模式法

1988年,Barry Boehm正式發(fā)表了軟件系統(tǒng)開發(fā)的“螺旋模式”,他將瀑布模式和快速原型結(jié)合起來(lái),強(qiáng)調(diào)了其他模型所忽視的風(fēng)險(xiǎn)分析,特別適合于大型復(fù)雜的系統(tǒng)。

螺旋模型沿著螺線進(jìn)行若干次迭代,圖1-6中的4個(gè)象限代表了以下活動(dòng)。

圖1-6 螺旋模式法

(1)規(guī)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制條件。

(2)風(fēng)險(xiǎn)分析:分析評(píng)估所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn)。

(3)原型開發(fā):實(shí)施軟件開發(fā)和驗(yàn)證。

(4)用戶評(píng)審:評(píng)價(jià)開發(fā)工作,提出修正建議,制訂下一步計(jì)劃。

螺旋模式有風(fēng)險(xiǎn)分析,強(qiáng)調(diào)可選方案和約束條件,從而支持軟件的重用,有助于將軟件質(zhì)量作為特殊目標(biāo)融入產(chǎn)品開發(fā)之中。螺旋模式的第一個(gè)階段是確定該階段的目標(biāo)—制訂計(jì)劃,完成這些目標(biāo)的選擇方案及其約束條件,然后從風(fēng)險(xiǎn)角度分析方案的開發(fā)策略,努力排除各種潛在的風(fēng)險(xiǎn),有時(shí)需要通過(guò)建造原型來(lái)完成。如果某些風(fēng)險(xiǎn)不能排除,該方案立即終止,否則啟動(dòng)下一個(gè)開發(fā)步驟。最后,評(píng)價(jià)該階段的結(jié)果,并設(shè)計(jì)下一個(gè)階段。螺旋模式是瀑布模式與邊寫邊改演化模式相結(jié)合,并加入風(fēng)險(xiǎn)評(píng)估所建立的軟件開發(fā)模式。主要思想是在開始時(shí)不必詳細(xì)定義所有細(xì)節(jié),而是從小開始,定義重要功能,盡量實(shí)現(xiàn),接受客戶反饋,進(jìn)入下一階段,并重復(fù)上述過(guò)程,直到獲得最終產(chǎn)品。但是,螺旋模式也有一定的限制條件,具體如下。

(1)螺旋模式強(qiáng)調(diào)風(fēng)險(xiǎn)分析,但要求許多客戶接受和相信這種分析,并做出相關(guān)反應(yīng)是不容易的,因此,這種模式往往適應(yīng)于內(nèi)部的大規(guī)模軟件開發(fā)。

(2)如果執(zhí)行風(fēng)險(xiǎn)分析將大大影響項(xiàng)目的利潤(rùn),那么進(jìn)行風(fēng)險(xiǎn)分析毫無(wú)意義,因此,螺旋模式只適合于大規(guī)模軟件項(xiàng)目。

(3)軟件開發(fā)人員應(yīng)該擅長(zhǎng)尋找可能的風(fēng)險(xiǎn),準(zhǔn)確地分析風(fēng)險(xiǎn),否則,將會(huì)帶來(lái)更大的風(fēng)險(xiǎn)。

1.5.2 測(cè)試與開發(fā)各階段的關(guān)系

測(cè)試應(yīng)該從生命周期的第一個(gè)階段開始,并且貫穿于整個(gè)軟件開發(fā)的生命周期。生命周期測(cè)試是對(duì)解決方案的持續(xù)測(cè)試,即使在軟件開發(fā)計(jì)劃完成后或者被測(cè)試的系統(tǒng)處于執(zhí)行狀態(tài)的時(shí)候,都不能中斷測(cè)試。在開發(fā)過(guò)程的幾個(gè)時(shí)期,測(cè)試團(tuán)隊(duì)所進(jìn)行的測(cè)試是為了盡早發(fā)現(xiàn)系統(tǒng)中存在的缺陷。軟件的開發(fā)有其自己的生命周期,在整個(gè)軟件生命周期中,軟件都有各自的相對(duì)于各生命周期的階段性的輸出結(jié)果,其中也包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)及程序編碼等各階段所產(chǎn)生的文檔,包括需求規(guī)格說(shuō)明、概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序等,而所有這些輸出結(jié)果都應(yīng)成為被測(cè)試的對(duì)象。測(cè)試過(guò)程包括了軟件開發(fā)生命周期的每個(gè)階段。在需求階段,重點(diǎn)要確認(rèn)需求定義是否符合用戶的需要;在設(shè)計(jì)和編程階段,重點(diǎn)要確定設(shè)計(jì)和編程是否符合需求定義;在測(cè)試和安裝階段,重點(diǎn)是審查系統(tǒng)執(zhí)行是否符合系統(tǒng)規(guī)格說(shuō)明;在維護(hù)階段,要重新測(cè)試系統(tǒng),以確定更改的部分和沒(méi)有更改的部分是否都正常工作,如圖1-7所示。

圖1-7 測(cè)試與開發(fā)各階段的關(guān)系

基于“V”模型,如圖1-8所示。在開發(fā)周期中的每個(gè)階段都有相關(guān)的測(cè)試階段相對(duì)應(yīng),測(cè)試可以在需求分析階段就及早開始,創(chuàng)建測(cè)試的準(zhǔn)則。每個(gè)階段都存在質(zhì)量控制點(diǎn),對(duì)每個(gè)階段的任務(wù)、輸入和輸出都有明確的規(guī)定,以便對(duì)整個(gè)測(cè)試過(guò)程進(jìn)行質(zhì)量控制和配置管理。通常在測(cè)試中,使用驗(yàn)證來(lái)檢查中間可交付的結(jié)果,使用確認(rèn)來(lái)評(píng)估可執(zhí)行代碼的性能。一般來(lái)說(shuō),驗(yàn)證回答這樣的問(wèn)題:“是否建立了正確的系統(tǒng)?”,而確認(rèn)回答的問(wèn)題是:“建立的系統(tǒng)是否正確”。

圖1-8 軟件測(cè)試“V”模型

所謂驗(yàn)證,是指如何決定軟件開發(fā)的每個(gè)階段、每個(gè)步驟的產(chǎn)品是否正確無(wú)誤,并與其前面的開發(fā)階段和開發(fā)步驟的產(chǎn)品相一致。驗(yàn)證工作意味著在軟件開發(fā)過(guò)程中開展一系列活動(dòng),旨在確保軟件能夠正確無(wú)誤地實(shí)現(xiàn)軟件的需求。

所謂確認(rèn),是指如何決定最后的軟件產(chǎn)品是否正確無(wú)誤。

1.5.3 測(cè)試的經(jīng)濟(jì)學(xué)觀念

隨著信息技術(shù)的飛速發(fā)展,軟件產(chǎn)業(yè)在國(guó)民經(jīng)濟(jì)中扮演著越來(lái)越重要的角色,各行各業(yè)對(duì)軟件質(zhì)量要求也越來(lái)越高,那么軟件企業(yè)是不是為了保證產(chǎn)品的質(zhì)量,測(cè)試人員就需要無(wú)限期地對(duì)軟件產(chǎn)品測(cè)試下去呢?回答是否定的,從經(jīng)濟(jì)學(xué)的角度考慮就是確定需要完成多少測(cè)試,以及進(jìn)行什么類型的測(cè)試。經(jīng)濟(jì)學(xué)所做的判斷,確定了軟件存在的缺陷是否可以接受,是否符合企業(yè)產(chǎn)品定義的質(zhì)量標(biāo)準(zhǔn)。“太少的測(cè)試是犯罪,而太多的測(cè)試是浪費(fèi)。”對(duì)風(fēng)險(xiǎn)測(cè)試得過(guò)少,會(huì)造成軟件的缺陷和系統(tǒng)的癱瘓;而對(duì)風(fēng)險(xiǎn)測(cè)試得過(guò)多,就會(huì)使本來(lái)沒(méi)有缺陷的系統(tǒng)進(jìn)行沒(méi)有必要的測(cè)試,或者是對(duì)輕微缺陷的系統(tǒng)所花費(fèi)的測(cè)試費(fèi)用遠(yuǎn)遠(yuǎn)大于它們給系統(tǒng)造成的損失。測(cè)試費(fèi)用的有效性,可以用測(cè)試費(fèi)用的質(zhì)量曲線來(lái)表示,如圖1-9所示。隨著測(cè)試費(fèi)用的增加,發(fā)現(xiàn)的缺陷也會(huì)越多,兩線相交的地方是過(guò)多測(cè)試開始的地方,這時(shí),發(fā)現(xiàn)缺陷的測(cè)試費(fèi)用超過(guò)了缺陷給系統(tǒng)造成的損失費(fèi)用。

圖1-9 測(cè)試費(fèi)用的質(zhì)量曲線

由于市場(chǎng)和軟件研發(fā)成本的影響,軟件測(cè)試不可能無(wú)限期地測(cè)試下去,軟件測(cè)試最佳的發(fā)布日期通常是在測(cè)試多輪以后,在較長(zhǎng)的時(shí)期發(fā)現(xiàn)不了缺陷或者發(fā)現(xiàn)很少的缺陷(如2周、3周,甚至1、2個(gè)月也發(fā)現(xiàn)不了缺陷),但是該階段耗費(fèi)的研發(fā)成本日益增長(zhǎng)的時(shí)候終止。

主站蜘蛛池模板: 仁化县| 弥勒县| 陵水| 宣恩县| 宁强县| 久治县| 文水县| 崇义县| 扶沟县| 荣昌县| 保山市| 镇原县| 景宁| 永仁县| 江孜县| 北海市| 保靖县| 广宗县| 通化市| 达尔| 尼勒克县| 安丘市| 句容市| 婺源县| 新乐市| 疏附县| 周至县| 盘山县| 青川县| 唐海县| 孟州市| 五原县| 宿松县| 长武县| 海阳市| 天门市| 武清区| 方城县| 安仁县| 顺义区| 胶南市|