登錄

軟件生命周期

百科 > 軟件項(xiàng)目管理 > 軟件生命周期

1.什么是軟件生命周期

軟件生命周期又稱為軟件生存周期或系統(tǒng)開發(fā)生命周期,是軟件的產(chǎn)生直到報(bào)廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設(shè)計(jì)、編碼、調(diào)試和測試、驗(yàn)收與運(yùn)行、維護(hù)升級到廢棄等階段,這種按時(shí)間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進(jìn),每個(gè)階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟件的質(zhì)量。但隨著新的面向?qū)ο蟮脑O(shè)計(jì)方法和技術(shù)的成熟,軟件生命周期設(shè)計(jì)方法的指導(dǎo)意義正在逐步減少。

軟件生命周期

生命周期的每一個(gè)周期都有確定的任務(wù),并產(chǎn)生一定規(guī)格的文檔(資料),提交給下一個(gè)周期作為繼續(xù)工作的依據(jù)。按照軟件的生命周期,軟件的開發(fā)不再只單單強(qiáng)調(diào)“編碼”,而是概括了軟件開發(fā)的全過程。軟件工程要求每一周期工作的開始只能必須是建立在前一個(gè)周期結(jié)果“正確”前提上的延續(xù);因此,每一周期都是按“活動 ── 結(jié)果 ── 審核 ── 再活動 ── 直至結(jié)果正確”循環(huán)往復(fù)進(jìn)展的。

2.軟件生命周期的六個(gè)階段

1、問題的定義及規(guī)劃

此階段是軟件開發(fā)方與需求方共同討論,主要確定軟件的開發(fā)目標(biāo)及其可行性。

2、需求分析

在確定軟件開發(fā)可行的情況下,對軟件需要實(shí)現(xiàn)的各個(gè)功能進(jìn)行詳細(xì)分析。需求分析階段是一個(gè)很重要的階段,這一階段做得好,將為整個(gè)軟件開發(fā)項(xiàng)目的成功打下良好的基礎(chǔ)。"唯一不變的是變化本身。",同樣需求也是在整個(gè)軟件開發(fā)過程中不斷變化和深入的,因此我們必須制定需求變更計(jì)劃來應(yīng)付這種變化,以保護(hù)整個(gè)項(xiàng)目的順利進(jìn)行。

軟件生命周期之需求分析

3、軟件設(shè)計(jì)

此階段主要根據(jù)需求分析的結(jié)果,對整個(gè)軟件系統(tǒng)進(jìn)行設(shè)計(jì),如系統(tǒng)框架設(shè)計(jì),數(shù)據(jù)庫設(shè)計(jì)等等。軟件設(shè)計(jì)一般分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。好的軟件設(shè)計(jì)將為軟件程序編寫打下良好的基礎(chǔ)。

軟件生命周期之軟件設(shè)計(jì)

4、程序編碼

此階段是將軟件設(shè)計(jì)的結(jié)果轉(zhuǎn)換成計(jì)算機(jī)可運(yùn)行的程序代碼。在程序編碼中必須要制定統(tǒng)一,符合標(biāo)準(zhǔn)的編寫規(guī)范。以保證程序的可讀性,易維護(hù)性,提高程序的運(yùn)行效率。

5、軟件測試

在軟件設(shè)計(jì)完成后要經(jīng)過嚴(yán)密的測試,以發(fā)現(xiàn)軟件在整個(gè)設(shè)計(jì)過程中存在的問題并加以糾正。整個(gè)測試過程分單元測試、組裝測試以及系統(tǒng)測試三個(gè)階段進(jìn)行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細(xì)的測試計(jì)劃并嚴(yán)格按照測試計(jì)劃進(jìn)行測試,以減少測試的隨意性。

軟件生命周期之軟件測試

6、運(yùn)行維護(hù)

軟件維護(hù)是軟件生命周期中持續(xù)時(shí)間最長的階段。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進(jìn)行維護(hù)。軟件的維護(hù)包括糾錯(cuò)性維護(hù)和改進(jìn)性維護(hù)兩個(gè)方面。

3.軟件生命周期的模型

任何軟件都是從最模糊的概念開始的:為某個(gè)公司設(shè)計(jì)辦公的流程處理;設(shè)計(jì)一種商務(wù)信函打印系統(tǒng)并投放市場。這個(gè)概念是不清晰的,但卻是最高層的業(yè)務(wù)需求的原型。這個(gè)概念都會伴隨著一個(gè)目的,例如在一個(gè)“銀行押匯系統(tǒng)”的目的是提高工作的效率。這個(gè)目的將會成為系統(tǒng)的核心思想,系統(tǒng)成敗的評判標(biāo)準(zhǔn)。1999年政府部門上了大量的OA系統(tǒng)(辦公自動化系統(tǒng)),學(xué)過一點(diǎn)Lotus Notes(Lotus Notes是功能強(qiáng)大的多界面的Windows 軟件,它使人們能高效地協(xié)同工作。使用Notes 人們可以突破平臺技術(shù)組織和地理的限制,Lotus Notes非常好用,通常要由許多應(yīng)用程序來完成的任務(wù),用Notes一次即可完成。)的人都發(fā)了財(cái)(IBM更不用說了),但是更普遍的情況是,許多的政府部門原有的處理模式并沒有變化,反而又加上了自動化處理的一套流程。提高工作效率的初衷卻導(dǎo)致了完全不同的結(jié)果。這樣的軟件究竟是不是成功的呢?

從概念提出的那一刻開始,軟件產(chǎn)品就進(jìn)入了軟件生命周期。在經(jīng)歷需求、分析、設(shè)計(jì)、實(shí)現(xiàn)、部署后,軟件將被使用并進(jìn)入維護(hù)階段,直到最后由于缺少維護(hù)費(fèi)用而逐漸消亡。這樣的一個(gè)過程,稱為“生命周期模型”(Life Cycle Model)。

典型的幾種生命周期模型包括瀑布模型、快速原型模型、迭代模型。瀑布模型(Waterfall Model)首先由溫斯頓·羅伊斯(Winston Royce)提出。該模型由于酷似瀑布聞名。在該模型中,首先確定需求,并接受客戶和軟件質(zhì)量保證(SQA)小組的驗(yàn)證。然后擬定規(guī)格說明,同樣通過驗(yàn)證后,進(jìn)入計(jì)劃階段…可以看出,瀑布模型中至關(guān)重要的一點(diǎn)是只有當(dāng)一個(gè)階段的文檔已經(jīng)編制好并獲得軟件質(zhì)量保證小組的認(rèn)可才可以進(jìn)入下一個(gè)階段。這樣,瀑布模型通過強(qiáng)制性的要求提供規(guī)約文檔來確保每個(gè)階段都能很好的完成任務(wù)。但是實(shí)際上往往難以辦到,因?yàn)檎麄€(gè)的模型幾乎都是以文檔驅(qū)動的,這對于非專業(yè)的用戶來說是難以閱讀和理解的。想象一下,你去買衣服的時(shí)候,售貨員給你出示的是一本厚厚的服裝規(guī)格說明,你會有什么樣的感觸。雖然瀑布模型有很多很好的思想可以借鑒,但是在過程能力上有天生的缺陷。

迭代式模型是RUP(Rational Unified Process,統(tǒng)一軟件開發(fā)過程,統(tǒng)一軟件過程)推薦的周期模型。在RUP中,迭代被定義為:迭代包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的產(chǎn)品版本)的全部開發(fā)活動和要使用該發(fā)布必需的所有其他外圍元素。所以,在某種程度上,開發(fā)迭代是一次完整地經(jīng)過所有工作流程的過程:(至少包括)需求工作流程、分析設(shè)計(jì)工作流程、實(shí)施工作流程和測試工作流程。實(shí)質(zhì)上,它類似小型的瀑布式項(xiàng)目。RUP認(rèn)為,所有的階段(需求及其它)都可以細(xì)分為迭代。每一次的迭代都會產(chǎn)生一個(gè)可以發(fā)布的產(chǎn)品,這個(gè)產(chǎn)品是最終產(chǎn)品的一個(gè)子集。迭代的思想如下圖所示。

迭代式模型

迭代和瀑布的最大的差別就在于風(fēng)險(xiǎn)的暴露時(shí)間上。“任何項(xiàng)目都會涉及到一定的風(fēng)險(xiǎn)。如果能在生命周期中盡早確保避免了風(fēng)險(xiǎn),那么您的計(jì)劃自然會更趨精確。有許多風(fēng)險(xiǎn)直到已準(zhǔn)備集成系統(tǒng)時(shí)才被發(fā)現(xiàn)。不管開發(fā)團(tuán)隊(duì)經(jīng)驗(yàn)如何,都絕不可能預(yù)知所有的風(fēng)險(xiǎn)?!保≧UP)二者的區(qū)別如下圖所示:

迭代和瀑布的區(qū)別

由于瀑布模型的特點(diǎn)(文檔是主體),很多的問題在最后才會暴露出來,為了解決這些問題的風(fēng)險(xiǎn)是巨大的?!霸诘缴芷谥?,您需要根據(jù)主要風(fēng)險(xiǎn)列表選擇要在迭代中開發(fā)的新的增量內(nèi)容。每次迭代完成時(shí)都會生成一個(gè)經(jīng)過測試的可執(zhí)行文件,這樣就可以核實(shí)是否已經(jīng)降低了目標(biāo)風(fēng)險(xiǎn)。”

快速原型(Rapid Prototype)模型在功能上等價(jià)于產(chǎn)品的一個(gè)子集。注意,這里說的是功能上。瀑布模型的缺點(diǎn)就在于不夠直觀,快速原型法就解決了這個(gè)問題。一般來說,根據(jù)客戶的需要在很短的時(shí)間內(nèi)解決用戶最迫切需要,完成一個(gè)可以演示的產(chǎn)品。這個(gè)產(chǎn)品只是實(shí)現(xiàn)部分的功能(最重要的)。它最重要的目的是為了確定用戶的真正需求。在我的經(jīng)驗(yàn)中,這種方法非常的有效,原先對計(jì)算機(jī)沒有絲毫概念的用戶在你的原型面前往往口若懸河,有些觀點(diǎn)讓你都覺得非常的吃驚。在得到用戶的需求之后,原型將被拋棄。因?yàn)樵烷_發(fā)的速度很快,設(shè)計(jì)方面是幾乎沒有考慮的,如果保留原型的話,在隨后的開發(fā)中會為此付出極大的代價(jià)。至于保留原型方面,也是有一種叫做增量模型是這么做的,但這種模型并不為大家所接受。

事實(shí)上,其實(shí)現(xiàn)在的軟件組織中很少說標(biāo)準(zhǔn)的采用那一種模型的。模型和實(shí)用還是有很大的區(qū)別。

軟件生命周期模型的發(fā)展實(shí)際上是體現(xiàn)了軟件工程理論的發(fā)展。在最早的時(shí)候,軟件的生命周期處于無序、混亂的情況。一些人為了能夠控制軟件的開發(fā)過程,就把軟件開發(fā)嚴(yán)格的區(qū)分為多個(gè)不同的階段,并在階段間加上嚴(yán)格的審查。這就是瀑布模型產(chǎn)生的起因。瀑布模型體現(xiàn)了人們對軟件過程的一個(gè)希望:嚴(yán)格控制、確保質(zhì)量。可惜的是,現(xiàn)實(shí)往往是殘酷的。瀑布模型根本達(dá)不到這個(gè)過高的要求,因?yàn)檐浖倪^程往往難于預(yù)測。反而導(dǎo)致了其它的負(fù)面影響,例如大量的文檔、繁瑣的審批。因此人們就開始嘗試著用其它的方法來改進(jìn)或替代瀑布方法。例如把過程細(xì)分來增加過程的可預(yù)測性。

4.軟件生命周期案例分析

評論  |   0條評論