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