摘 要:軟件開(kāi)發(fā)模型(Software Development Model)是指軟件開(kāi)發(fā)全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。軟件開(kāi)發(fā)模型能清晰、直觀地表達(dá)軟件開(kāi)發(fā)全過(guò)程,明確規(guī)定了要完成的主要活動(dòng)和任務(wù),用來(lái)作為軟件項(xiàng)目工作的基礎(chǔ)。對(duì)于不同的軟件系統(tǒng),可以采用不同的開(kāi)發(fā)方法、不同的軟件工具和不同的軟件工程環(huán)境。
關(guān)鍵詞:軟件開(kāi)發(fā)模型; 瀑布模型; V模型; 迭代模型
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-3315(2014)09-120-001
一、前言
當(dāng)今時(shí)代,軟件的重要性與日俱增,從辦公生活到休閑娛樂(lè),日常生活中每時(shí)每刻都有軟件的身影。企業(yè)要提高運(yùn)作效率,家庭要提升生活質(zhì)量,電商要提升營(yíng)銷精準(zhǔn)度;政府要提升公眾滿意,無(wú)不需要依靠各種各樣的軟件。CRM、ERP、大數(shù)據(jù)、互聯(lián)網(wǎng)APP,各式各樣的軟件正在改變著我們的生活,我們已經(jīng)進(jìn)入一個(gè)軟件定義世界的時(shí)代。
在此背景下,軟件開(kāi)發(fā)也變得越來(lái)越至關(guān)重要,而作為軟件開(kāi)發(fā)管理的基礎(chǔ),軟件工程方法的正確選擇和應(yīng)用將是軟件開(kāi)發(fā)項(xiàng)目成功的保障。
本文主要簡(jiǎn)要探討一些常見(jiàn)的軟件工程模型方法及其適用范圍。
二、瀑布模型
瀑布模型(Waterfall Model)是最早出現(xiàn)的軟件開(kāi)發(fā)模型,在軟件工程中占有重要的地位,它提供了軟件開(kāi)發(fā)的基本框架。該過(guò)程由一系列順序的活動(dòng)構(gòu)成,每個(gè)活動(dòng)分為輸入、過(guò)程與輸出三部分。其中上一項(xiàng)活動(dòng)的輸出被作為本活動(dòng)的輸入,利用這一輸入實(shí)施該項(xiàng)活動(dòng)應(yīng)完成的內(nèi)容,最后給出該項(xiàng)活動(dòng)的工作成果輸出,作為下一項(xiàng)活動(dòng)的輸入。
從上述描述中我們能夠看出,傳統(tǒng)的瀑布模型具有如下的優(yōu)點(diǎn):
(1)為項(xiàng)目提供了按階段劃分的檢查點(diǎn)。使得軟件開(kāi)發(fā)過(guò)程從無(wú)序變?yōu)橛行颍管浖_(kāi)發(fā)的工程管理變?yōu)榭赡堋?/p>
(2)各項(xiàng)活動(dòng)串行進(jìn)行,當(dāng)前一階段完成后,只需要去關(guān)注后續(xù)階段。軟件工程管理變得簡(jiǎn)單清晰。
(3)它提供了一系列的模板,這個(gè)模板使得分析、設(shè)計(jì)、編碼、測(cè)試和支持的方法可以在該模板下有一個(gè)共同的指導(dǎo)。
瀑布模型也存在如下致命缺點(diǎn):
(1)各個(gè)階段的劃分完全固定且周期較長(zhǎng),極大地降低了開(kāi)發(fā)效率。
(2)由于開(kāi)發(fā)模型是線性的,用戶只有等到整個(gè)過(guò)程的末期才能見(jiàn)到開(kāi)發(fā)成果,從而增加了開(kāi)發(fā)風(fēng)險(xiǎn)。
(3)項(xiàng)目管理更加注重過(guò)程,而容易忽視對(duì)目標(biāo)及價(jià)值結(jié)果的關(guān)注。
(4)無(wú)法應(yīng)對(duì)開(kāi)發(fā)過(guò)程中出現(xiàn)的用戶需求的變化。
(5)開(kāi)發(fā)與測(cè)試活動(dòng)割裂,導(dǎo)致測(cè)試人員天然的依附于開(kāi)發(fā)人員。
綜上,典型的瀑布模型相對(duì)來(lái)說(shuō)比較理想化,適合那種開(kāi)發(fā)周期固定、客戶需求清晰的項(xiàng)目,當(dāng)前幾乎被業(yè)界拋棄,很難適應(yīng)當(dāng)今軟件開(kāi)發(fā)的需求。比如互聯(lián)網(wǎng)應(yīng)用軟件很難使用瀑布模型來(lái)管理。
三、V模型
V模型一定程度上是典型瀑布模型的一種改良,可視為瀑布模型的延伸。主要是針對(duì)開(kāi)發(fā)、測(cè)試活動(dòng)割裂進(jìn)行的改良。把測(cè)試設(shè)計(jì)工作提前到分析、設(shè)計(jì)、編碼各階段,一方面提升了開(kāi)發(fā)效率,同時(shí)開(kāi)發(fā)與測(cè)試同源,提升測(cè)試有效性。
典型的V模型開(kāi)發(fā)流程包括:需求分析(系統(tǒng)測(cè)試分析)、概要設(shè)計(jì)(集成測(cè)試分析)、詳細(xì)設(shè)計(jì)(單元測(cè)試分析)、編碼、單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試和發(fā)布。和瀑布模型的最大區(qū)別是測(cè)試設(shè)計(jì)分析的提前,比如單元測(cè)試分析。在瀑布模型中,單元測(cè)試是在編碼后進(jìn)行的,輸入的是編碼;而測(cè)試人員需要根據(jù)編碼先設(shè)計(jì)單元測(cè)試用例,然后執(zhí)行。這樣將存在一個(gè)風(fēng)險(xiǎn),即單元測(cè)試只能發(fā)現(xiàn)編碼本身的問(wèn)題,即使編碼完全未按照詳細(xì)設(shè)計(jì)進(jìn)行,單元測(cè)試也無(wú)法發(fā)現(xiàn)。而在V模型中,開(kāi)發(fā)人員、測(cè)試人員針對(duì)詳細(xì)設(shè)計(jì)展開(kāi)工作,開(kāi)發(fā)人員編碼的同時(shí),測(cè)試人員編寫(xiě)單元測(cè)試用例,從而使得測(cè)試用例不受具體編碼影響,能夠更加準(zhǔn)確的驗(yàn)證詳細(xì)設(shè)計(jì)的意圖。其他階段類似。
V模型中,測(cè)試活動(dòng)有更多的獨(dú)立性和自主性,軟件開(kāi)發(fā)效率也有一定程度的提升。但是V模型無(wú)法解決瀑布模型的本質(zhì)缺陷,如同樣無(wú)法應(yīng)對(duì)需求的不斷變化,同樣需要在版本開(kāi)發(fā)后期才能驗(yàn)證成果等。
三、迭代模型
早在20世紀(jì)50年代末期,軟件領(lǐng)域中就出現(xiàn)了迭代模型。通俗的講,迭代模型就是將整個(gè)軟件的開(kāi)發(fā)分解成一個(gè)個(gè)的子特性開(kāi)發(fā)(階段),而針對(duì)每個(gè)階段內(nèi)部采用的還是類似瀑布模型的方法。每個(gè)迭代是一次完整的經(jīng)過(guò)所有工作流程的過(guò)程:需求、分析設(shè)計(jì)、實(shí)施和測(cè)試工作流程。每一次的迭代都會(huì)產(chǎn)生一個(gè)可以發(fā)布的產(chǎn)品,這個(gè)產(chǎn)品是最終產(chǎn)品的一個(gè)子集。
與傳統(tǒng)的瀑布模型相比較,迭代過(guò)程具有以下優(yōu)點(diǎn):
(1)由于每個(gè)迭代是整個(gè)系統(tǒng)的子系統(tǒng),相對(duì)內(nèi)容比較單一,各個(gè)階段需要傳遞的信息量較小,不需要通過(guò)大量的文檔進(jìn)行傳遞。
(2)由于整個(gè)開(kāi)發(fā)過(guò)程被拆分為獨(dú)立的若干階段,用戶在每個(gè)階段結(jié)束就可以提前看到開(kāi)發(fā)成果。一方面能夠及時(shí)對(duì)開(kāi)發(fā)中出現(xiàn)的偏差進(jìn)行糾正;另一方面由于能夠及時(shí)看到工作成果,有利于開(kāi)發(fā)人員的效率提升。
(3)相對(duì)于瀑布模型,迭代模型更加關(guān)注對(duì)軟件目標(biāo)、結(jié)果的關(guān)注,更加注重和最終用戶的互動(dòng),以保證開(kāi)發(fā)成果的質(zhì)量。
(4)由于用戶的需求并不能在一開(kāi)始就作出完全的界定,它們通常是在后續(xù)階段中不斷細(xì)化的,而迭代模型更能夠適應(yīng)這種需求的變化。
同樣,迭代模型也存在其缺點(diǎn),那就是對(duì)于項(xiàng)目經(jīng)理和開(kāi)發(fā)團(tuán)隊(duì)的要求更加高,并且需要團(tuán)隊(duì)成員之間更加的信任。因?yàn)榈P瓦\(yùn)作對(duì)于過(guò)程的監(jiān)控較弱,更加關(guān)注面對(duì)面的交流與合作。
四、結(jié)束語(yǔ)
軟件工程方法包含的內(nèi)容很多,除了正確的選擇模型方法以外,還包括各種能力域的工程方法,如計(jì)劃管理、資源管理、財(cái)務(wù)管理、人員管理、價(jià)值管理、需求管理、風(fēng)險(xiǎn)管理等等。只有根據(jù)軟件項(xiàng)目具體的情況和目標(biāo),選擇正確的工程方法模型,并把這一系列的工程管理方法有機(jī)的結(jié)合起來(lái),才能使得軟件開(kāi)發(fā)的結(jié)果可預(yù)期,質(zhì)量可保證。
參考文獻(xiàn):
[1]軟件工程-實(shí)踐者的研究方法,(美)Poger S.Pressman
[2]錢樂(lè)秋.《軟件工程》[M]北京:清華大學(xué)出版社,2005
[3]張海藩.軟件工程(第二版)[M]北京:人民郵電出版社,2006