軟件(jiàn)測試工(gōng)作(zuò)與軟件(jiàn)開←☆→(kāi)發模型息息相(xiàng)關,在不(bù)同的(de)軟件(jiàn)開(kāi)發模型中,測試的(de)任務和(hé)作(zuò)用(yòng)也(≤✘yě)不(bù)相(xiàng)同,因此測試人(rén)員(yu™>₹φán)要(yào)充分(fēn)了(le)解軟件(ji₹>àn)開(kāi)發模型,以便找準自(z✔δì)己在其中的(de)定位與任務。軟件(jiàn)開(kāi)發模型規定"≥€了(le)軟件(jiàn)開(kāi)發應遵循的(de ★™)步驟,是(shì)軟件(jiàn)開(kāi)發的(deγλ)導航圖,它能(néng)夠清晰、直觀地(dì)表達軟件(jiàn)開 &(kāi)發的(de)全過程,以及每個(gè)階段要₹λ£σ(yào)進行(xíng)的(de)活動≠¥β和(hé)要(yào)完成的(de)任務。開(kāi¶λ<)發人(rén)員(yuán)在選擇開(kāi)發模型時(shí ≥©≤),要(yào)根據軟件(jiàn)的(de)特★σ↓€點、開(kāi)發人(rén)員(yuán)的(de)參與方式選σ§∞'擇穩定可(kě)靠的(de)開(kāi)發模型自(zì)☆ ≥∏有(yǒu)軟件(jiàn)開(kāi)發以來(lái),軟件(jiàn)Ω 開(kāi)發模型也(yě)從(cóng)最初的(de)“邊做(zuò)Ω♣δ≠邊改”發展出了(le)多(duō)個(gè)模型,下(xiàσλ←)面以軟件(jiàn)開(kāi)發模型發展曆史為(wèi)順序,介紹幾個÷☆ (gè)典型的(de)開(kāi)發模型。↓±
1. 瀑布模型
瀑布模型是(shì)W.W.羅伊斯(W.W©¥.Royce)于1970年(nián)提出₹§→的(de)軟件(jiàn)開(kāi)發模型,由模型名稱可(kě)↓<©¶知(zhī)該模型遵循從(cóng)上(shàng)至下(xià)一(yī)次∑™₩性完成整個(gè)軟件(jiàn)産品的(de)開(≠∏₹÷kāi)發方式瀑布模型将軟件(jiàn)開(kāi)≠β∏發過程分(fēn)為(wèi)6個(gè)階段:計(jì→∑)劃→需求分(fēn)析→軟件(jiàn)設計(jì)→編碼→測試→運↕§§行(xíng)維護
在瀑布模型中,軟件(jiàn)開(kāi)發ε 的(de)各項活動嚴格按照(zhào)這(zhè)條線進行(ε ₹xíng),隻有(yǒu)當一(yī)個(gè)階段任務完成之<→Ω後才能(néng)開(kāi)始下(xià)一(yī)δ↕✔個(gè)階段。軟件(jiàn)開(kāi™♠ )發的(de)每一(yī)個(gè)階段都(dōu)要(yào)有(∏ ®yǒu)結果産出,結果經過審核驗證之後作(zuò)為(wèi)下(xià)✔™↓一(yī)個(gè)階段的(de)輸入,下(xià)個(gè)階段才φ®≥可(kě)以順利進行(xíng)。如(rú)™"果結果審核驗證不(bù)通(tōng)過,則需要(yàoε•§Ω)返回修改。
瀑布模型為(wèi)整個(gè)項目劃分(fē←'n)了(le)清晰的(de)檢查點,當一(yī♥σ✘)個(gè)階段完成之後,隻需要(yào)把全α部精力放(fàng)置在後面的(de)開(kāi)發上(shγγδ★àng)即可(kě),它有(yǒu)利于大(dà)型軟ε≥↕<件(jiàn)開(kāi)發人(rén)員(yuán)的(de)組織管理π>(lǐ)及工(gōng)具的(de)使用(yòng)與研究,可(kě> ✘)以提高(gāo)開(kāi)發的(de)效率。
但(dàn)是(shì)瀑布模型是(shì>÷)嚴格按照(zhào)線性方式進行(xíng)< ¥的(de),無法适應用(yòng)戶需求變±≤↑♠更,用(yòng)戶隻能(néng)等到 ≠§(dào)最後才能(néng)看(kàn)到(dào)開(☆"₹kāi)發成果,增加了(le)開(kāi)發風(fēε•ng)險。如(rú)果開(kāi)發人(rén)員(yuán)與客戶對<πφ∏(duì)需求理(lǐ)解有(yǒu)偏差,到(dào)最β♣σ後開(kāi)發完成後,最終成果與客戶需求可(kě)能(nén← g)會(huì)差之千裡(lǐ)。使用(yòng)瀑布¶©↔模型開(kāi)發軟件(jiàn)時(shí),如(rú)果早期犯的(de)錯δγ ↑(cuò)誤在項目完成後才發現(xiàn),此時(s©Ω hí)再修改原來(lái)的(de)錯(©λ→cuò)誤需要(yào)付出巨大(dà)的(de)代價。瀑布模型要≠¥(yào)求每一(yī)個(gè)階段必須有≥$♠(yǒu)結果産出,這(zhè)就(jiù)勢必增加了✔♦(le)文(wén)檔的(de)數(shù)量,使軟件(jiàn)↔≤開(kāi)發的(de)工(gōng)作(zuò)量變大(dà)。
除此之外(wài),對(duì)于現(xià"→n)代軟件(jiàn)來(lái)說(shuō),軟件(jiàn)開(kāiβ )發各階段之間(jiān)的(de)關系大(dà)部分(fēn)不(bù)∏≤∏≤會(huì)是(shì)線性的(de),很(hěn)難♦®→€使用(yòng)瀑布模型開(kāi)發軟件(jiàn),因此瀑布模型不(b ₽ù)再适合現(xiàn)代軟件(jiàn)開(kā<®i)發,已經被逐漸廢棄。
2、 快(kuài)速原型模型
快(kuài)速原型模型與瀑布模型正好(hǎ≤π✘o)相(xiàng)反,它在最初确定用(yòng)戶需求時("®¥shí)快(kuài)速構造岀一(yī)個(gè)可(kě)以運↔πγ±行(xíng)的(de)軟件(jiàn)原型,這(zhè)個(gè)軟÷ ↕✘件(jiàn)原型向用(yòng)戶展示☆♠待開(kāi)發軟件(jiàn)的(de¥↕©)全部或部分(fēn)功能(néng)和(hé)性能(néng)↕≠,客戶對(duì)該原型進行(xíng)審核評價,然後給出更具體(tǐ)的(dλ↑✔ e)需求意見(jiàn),這(zhè)樣逐步豐富細化(huà)需求,最後開(αkāi)發人(rén)員(yuán)與客戶達成最終共識,确定客戶的(de)真₽↔Ω正需求。确定客戶的(de)真正需求之後,開(kāi)始真正↑Ω的(de)軟件(jiàn)開(kāi)發。
快(kuài)速原型模型類似于建造房(fáng)€✔♠子(zǐ),确定客戶對(duì)房(fáng)子(zǐ)的β₽&(de)需求之後快(kuài)速地(dì)搭建一(yī)個(gè)房(f€δ±♦áng)子(zǐ)模型,由客戶對(duì)房(>δ✔fáng)子(zǐ)模型進行(xíng)評價,房(fáng)子(zǐ)&£→的(de)樣式、功能(néng)、布局等是(shì)否滿足需求,哪裡(lǐ)需 ✔♥要(yào)改進等,最後确定了(le)客戶對(du§÷ì)房(fáng)子(zǐ)的(de)要(yào)求,就(jiù)↕₹ 開(kāi)始真正地(dì)建造房(fáng)子(zǐ)。
與瀑布模型相(xiàng)比,快(k©←©☆uài)速原型模型克服了(le)需求不(bù)明(mín">πg)确帶來(lái)的(de)風(fēng)險,适用(yòng)于不γΩ✔(bù)能(néng)預先确定需求的(de)軟件(jiàn)項♣ ₹目。但(dàn)快(kuài)速原型模型ε 關鍵在于快(kuài)速構建軟件(jiàn)原型,準确地(dì)設計(÷ jì)出軟件(jiàn)原型存在定的(de)難度。此外(wài),這(επzhè)種開(kāi)發模型也(yě)不(bù)利于開(kāi)發人(rén≤<'α)員(yuán)對(duì)産品進行(xíng)擴展。
4、 叠代模型
叠代模型又(yòu)稱為(wèi)增量模型或演化(h↔βπuà)模型,它将一(yī)個(gè)完整的≤(de)軟件(jiàn)拆分(fēn)成不(bù)同的(de)組件(jiàn)↑↓≥,然後逐個(gè)組件(jiàn)地(dì)開(kāi)發測試,每完成一↓↑±∏(yī)個(gè)組件(jiàn)就(jiù)展現(xiàn)給客戶,讓• 客戶确認這(zhè)一(yī)部件(jiàn)功能(néng)和(hé)性能(♣φnéng)是(shì)否達到(dào)客戶需求,最終™≥∑®确定無誤,将組件(jiàn)集成到(dào)≤∞軟件(jiàn)體(tǐ)系結構中。整個(gè)開(kāi)發工(gōng)作£↕(zuò)被組織為(wèi)一(yī)系列短(duǎn)期☆§§、簡單的(de)小(xiǎo)項目,稱為(wèi)一(←₹×yī)系列叠代,每一(yī)個(gè)叠代都(d±$ōu)需要(yào)經過需求分(fēn)析→軟件(jiànγ©•)設計(jì)→編碼→測試的(de)過程。
在叠代模型中,第一(yī)個(gè)叠代(即第一(yī)個(gè)組件"≥₩∑(jiàn))往往是(shì)軟件(jiàn)基本需求↓±的(de)核心部分(fēn),第一(yī)個(g≤→è)組件(jiàn)完成之後,經過客戶審核評價形成★∏☆γ下(xià)一(yī)個(gè)組件(jiàn)的(de)開(¥<αkāi)發計(jì)劃,包括對(duì)核心産品的(de)修改和(hé)新功能π (néng)的(de)發布,這(zhè)樣重複叠代步驟直到(dào)實現(x≈™iàn)最終完善的(de)産品。
叠代模型可(kě)以很(hěn)好(h→♥ǎo)地(dì)适應客戶需求變更,它逐個(gè)組件λ(jiàn)地(dì)交付産品,客戶可(kě)以經常看(kàn)到(dà♠★α o)産品,如(rú)果某個(gè)組件(jiàn)沒有(yǒu)滿足客戶需求≤¥±π,則隻需要(yào)更改這(zhè)一(yī)β≤α個(gè)組件(jiàn),降低(dī)了(le)軟件(jiàn₽≤)開(kāi)發的(de)成本與風(fēng₩♠•)險。但(dàn)是(shì)選代模型需要(yào)将開(kāi)發←←完成的(de)組件(jiàn)集成到(dào)軟件(jiàn★×)體(tǐ)系結構中,這(zhè)樣會(huì)有(λ yǒu)集成失敗的(de)風(fēng)險,因此要(yào)求軟件(ji₩₩δ"àn)必須有(yǒu)開(kāi)放(fàng)式的≥£®(de)體(tǐ)系結構。此外(wài),叠代模型✘&£$逐個(gè)組件(jiàn)地(dì)開(kāi)發修改,很(hěn)容易≈ε退化(huà)為(wèi)“邊做(zuò∞★)邊改”的(de)開(kāi)發形式,從(cóng)而失去(qù)對∞®£(duì)軟件(jiàn)開(kāi)發過程的(de)整£≈₩<體(tǐ)控制(zhì)。
4、 螺旋模型
螺旋模型由巴利·玻姆(Barry Boehm)于1988₽↓年(nián)提岀,該模型融合了(le)瀑布模型、快(€✘kuài)速原型模型,它最大(dà)的(de)特點是(shì)引≥™入了(le)其他(tā)模型所忽略的(de)風(fēng)≠π↕險分(fēn)析,如(rú)果項目不(bù)能(néng)排除重大(dà)&§ε風(fēng)險,就(jiù)停止項目從(cón&↕£g)而減小(xiǎo)損失。這(zhè)種模型比較适←¥ 合開(kāi)發複雜(zá)的(de)大(dà)型軟件(j₽¥₹σiàn)。
螺旋模型将整個(gè)項目開(kāi)發過程劃分(fēn)γ♦為(wèi)幾個(gè)不(bù)同的(de)階段,每個(gè)階段按部就→✘↕(jiù)班地(dì)執行(xíng),這(zhè)種劃分(fēn)←₹方式采用(yòng)了(le)瀑布模型。每個(gè)階段• 在開(kāi)始之前都(dōu)要(yào)進行(xí♣∞ ng)風(fēng)險評估,如(rú)果能(néng)消除重大(d☆&à)風(fēng)險則可(kě)以開(kā§₽✔≠i)始該階段任務。在每個(gè)階段,首先構建軟件(jiàn)原型,根據快(φ≠kuài)速原型模型完成這(zhè)個(gè)叠代過程,産™"γ出最終完善的(de)産品,然後進入下(xià)一(yī)個✔•←©(gè)階段,同樣下(xià)一(yī)個(gè)¶§階段開(kāi)始之前也(yě)要(yào)進行(xín→$"→g)風(fēng)險評估,這(zhè)樣循環往複直到(dào)Ω≤完成所有(yǒu)階段的(de)任務。螺旋模型的(de)若幹個(gè)φ↕↕階段是(shì)沿著(zhe)螺線方式進行(xíφ↕πng)的(de)。
4個(gè)象限:制(zhì)訂計(jì)劃∞λ、風(fēng)險分(fēn)析、實施工☆φ(gōng)程、客戶評估,各象限含義如(rú)下(xià)。
(1)制(zhì)訂計(jì)劃:确定軟件(jiàn)目标,制(zhì)訂±→實施方案,并且列出項目開(kāi)發的(de)限制(λ✔♠£zhì)條件(jiàn)。
(2)風(fēng)險分(fēn)析:評價所制(zhì)β₽>≈訂的(de)實施方案,識别風(fēng)險并消除風(fēng)險。
(3)實施工(gōng)程:開(kāi)發産品并進行(xíng)驗證
(4)客戶評估:客戶對(duì)産品進行(xíng)審核評估,÷¥提出修正建議(yì),制(zhì)訂下(xià₹ ≈)一(yī)步計(jì)劃。
在螺旋模型中,每一(yī)個(gè)選代都(dōu)需要♠↕&δ(yào)經過這(zhè)4個(gè)步"£₩驟,直到(dào)最後得(de)到(dào)完善的(de)産品,可(kěδ±♦✘)以進行(xíng)提交。
螺旋模型強調了(le)風(fēng)險分(fēn)γ≤析,這(zhè)意味著(zhe)對(duì)可(kě)¶≈選方案和(hé)限制(zhì)條件(jiàn)都(dōu)進 •☆→行(xíng)了(le)評估,更有(yǒu)助于将₩→軟件(jiàn)質量作(zuò)為(wèi)特殊目标♥♣₽↑融入産品開(kāi)發之中。它以小(xiǎo)分(fēn÷Ω)段構建大(dà)型軟件(jiàn),使成本計(jì)算(suàn) ≥™φ變得(de)簡單容易,而且客戶始終參與每個(gè)階段>¥的(de)開(kāi)發,保證了(le)項目不(bù)偏離(lí)正确方向≤ ',也(yě)保證了(le)項目的(de)可(k±ε≤☆ě)控制(zhì)性。
5、敏捷模型
敏捷模型是(shì)20世紀90年(nián)代興起的(de)₽一(yī)種軟件(jiàn)開(kāi)發模型。在現(xiàn)代社'φ會(huì),技(jì)術(shù)發展非常快(kuài)軟件( πjiàn)開(kāi)發也(yě)是(s↓πhì)在快(kuài)節奏的(de)環境中進行(xíng)的(de)。♥¥×在業(yè)務快(kuài)速變換的(de)環境下(γ¥≠xià),往往無法在軟件(jiàn)開(kāi)發之前收集到(α€dào)完整而詳盡的(de)軟件(jiàn)需求。沒有©∞≠(yǒu)完整的(de)軟件(jiàn)需求,傳統的(de)軟件(jià↔♥♣n)開(kāi)發模型就(jiù)難以展開(kāi)工(g $ōng)作(zuò)。
為(wèi)了(le)解決這(zhè) ↑個(gè)問(wèn)題,人(rén)們提出了(le)敏捷開(kāi)發模型。♣&≥敏捷模型以用(yòng)戶的(de)需求進化(hσ↔£→uà)為(wèi)核心,采用(yòng)叠代、循序漸進的(d★♥π±e)方法進行(xíng)軟件(jiàn)開(kāi)發。在敏捷模型中,軟件(¶♣¥jiàn)項目在構建初期被拆分(fēn)為(wè₹λ ©i)多(duō)個(gè)相(xiàng)互€聯系而又(yòu)獨立運行(xíng)的(de)子(αβ₽zǐ)項目,然後叠代完成各個(gè)子(zǐ)項目,開¥δ<(kāi)發過程中,各個(gè)子(zǐ)項目都(dōu)要(yào)¥×經過開(kāi)發測試。當客戶有(yǒu)需求變更時(shí),敏捷模≈♦型能(néng)夠迅速地(dì)對(duì)'↕↑₩某個(gè)子(zǐ)項目做(zuò)出修改以滿足客戶的(de)需求。在這(zγ&↑hè)個(gè)過程中,軟件(jiàn)一(yī)直處于可(kě)" 使用(yòng)狀态。
除了(le)響應需求,敏捷模型還(hái)有₩'(yǒu)一(yī)個(gè)重要(yào)的(de)₩♠概念——叠代,就(jiù)是(shì)不(bù)斷對(duì)↑♠<φ産品進行(xíng)細微(wēi)、漸進式的(de)改進,每次改進一(y€•↓ī)小(xiǎo)部分(fēn),如(rú)果可("$×δkě)行(xíng)再逐步擴大(dà)改進範圍。在敏捷模型中,軟件(ji™€àn)開(kāi)發不(bù)再是(shì)線性的(de" ),開(kāi)發的(de)同時(shí)也(yě)會(hu&®ì)進行(xíng)測試工(gōng)作(zuò),甚至可(kě)以提前寫好≥↔δ"(hǎo)測試代碼,因此在敏捷模有(yǒu)“開(kāi)↔β•發未動,測試先行(xíng)”的(de)說(shuō)法。
另外(wài),相(xiàng)比于傳✘↑統的(de)軟件(jiàn)開(kāi)發模型,敏捷模型更注重“人(rén)§♠♠”在軟件(jiàn)開(kāi)發中的(de)作(zπ←uò)用(yòng),項目的(de)各部門(m∑↕≤↕én)應該緊密合作(zuò)、快(kuài)速有(yǒu)效地(dì)溝₽±®通(tōng)(如(rú)面對(duì)面溝通(tōng)),&φ提出需求的(de)客戶可(kě)以全程參與到®¶(dào)開(kāi)發過程,以适應軟件(jiàn)₹£頻(pín)繁的(de)需求變更。為(wèi)此,敏捷模>&型描述了(le)一(yī)套軟件(jiàn∑•)開(kāi)發的(de)價值和(hé)原則,具體(tǐ)如(rú)§✔π下(xià)所示。
(1)個(gè)體(tǐ)和(hé)交互重于過程和(hé)工(gōng)具≠♣。
(2)可(kě)用(yòng)軟件(jiàn)重于完備文(w≤¥±én)檔。
(3)客戶協作(zuò)重于合同談判。×↑♣
(4)響應變化(huà)重于遵循計(jì)劃。
對(duì)于敏捷模型來(lái)說(shuō),并不(bù)是(s§£hì)工(gōng)具、文(wén)檔等不(bù)重要(yε€Ω ào),而是(shì)更注重人(rén)與人(rén)✘™之間(jiān)的(de)交流溝通(tō©★↕ng)。
敏捷模型可(kě)以及時(shí)響應客戶需求變更,不(bù)斷★★♥→适應新的(de)趨勢,但(dàn)是(shì)在開(kāi)發靈活的(de£$γ®)同時(shí)也(yě)帶來(lái)了(le)一(y'≈→→ī)定程度的(de)混亂。例如(rú),缺乏文(wén)檔資料;軟件 δ (jiàn)之前版本的(de)可(kě)重現≥&(xiàn)性、可(kě)回溯性較低(dī¶∞♣);對(duì)于較大(dà)的(de)項目,人(rén)員(<₩ yuán)越多(duō),面對(duì)面的(de)有(ππ♥≥yǒu)效溝通(tōng)越困難。因此敏捷模型比較适用(yòλ"ng)于小(xiǎo)型項目的(de)開δ≠•(kāi)發,而不(bù)太适用(yòng)于大(dà)型項目。歡迎聯系無錫小(xiǎo)禾呈科(kē)技(jì)-軟件(jiàn)開βδ(kāi)發專家(jiā)(15358092238,電(diàn)話★★¶•(huà)微(wēi)信同号)。