摘 要 本文從軟件生命周期出發(fā),介紹統(tǒng)一過程的各階段、特點(diǎn)、優(yōu)缺點(diǎn)及適用范圍。
關(guān)鍵詞統(tǒng)一過程,軟件生命周期
中圖分類號TP3 文獻(xiàn)標(biāo)識碼A文章編號1673-9671-(2009)121-0009-01
1統(tǒng)一過程
軟件開發(fā)過程圍繞著五個(gè)工作流構(gòu)建:需求流、分析流(規(guī)格說明)、設(shè)計(jì)流、實(shí)現(xiàn)流和測試流。統(tǒng)一過程是一個(gè)階段化了的模型,識別出軟件過程當(dāng)中的四個(gè)獨(dú)立階段RUP中的階段是緊密關(guān)聯(lián)于業(yè)務(wù)的,而不是關(guān)聯(lián)于技術(shù)層面。統(tǒng)一過程中的階段如圖1所示。
1)開始階段。開始階段的目標(biāo)是建立系統(tǒng)的一個(gè)業(yè)務(wù)案例。要識別出所有與系統(tǒng)交互的外部實(shí)體(人和系統(tǒng))并定義這些交互。然后使用這個(gè)信息來評估系統(tǒng)對業(yè)務(wù)的貢獻(xiàn)。如果這個(gè)貢獻(xiàn)是微小的,那么項(xiàng)目就要在此階段結(jié)束時(shí)取消了。2)細(xì)化階段。細(xì)化階段的目標(biāo)是增進(jìn)對問題域的理解,建立系統(tǒng)的體系框架,給出項(xiàng)目計(jì)劃并識別關(guān)鍵項(xiàng)目風(fēng)險(xiǎn)。在這個(gè)階段完成時(shí),可以得到系統(tǒng)的需求模型(描述了UML用例),這是軟件的一個(gè)體系結(jié)構(gòu)描述和開發(fā)計(jì)劃。3)構(gòu)建階段。構(gòu)建階段主要關(guān)心的是系統(tǒng)設(shè)計(jì)、編程和測試。系統(tǒng)的各個(gè)部分在并行開發(fā),再集成在一起。在這個(gè)階段完成時(shí),可以得到一個(gè)能運(yùn)行的軟件系統(tǒng),還有能交付給用戶的相關(guān)文檔。4)轉(zhuǎn)換階段。統(tǒng)一過程的最后階段,關(guān)注如何將系統(tǒng)從開發(fā)單位轉(zhuǎn)移到用戶單位,并使之在真實(shí)環(huán)境中工作。這是被絕大多數(shù)軟件過程模型所忽視的一個(gè)階段,而這個(gè)階段事實(shí)上是一個(gè)代價(jià)很高且有時(shí)問題很大的活動(dòng)。在此階段完成時(shí),可以得到一個(gè)在操作環(huán)境下能正常工作的軟件系統(tǒng)及其文檔。
2統(tǒng)一過程的實(shí)施步驟
統(tǒng)一過程的一個(gè)基本的規(guī)則是:在各種工作流的活動(dòng)中,工作是以一種迭代的方式進(jìn)行和測試工作流。在構(gòu)建階段可應(yīng)用的工作流有需求工作流、分析工作流、設(shè)計(jì)工作流、實(shí)現(xiàn)工作流和測試工作流。
1)需求工作流。需求工作流的目標(biāo)是讓軟件開發(fā)組織確定客戶的需求。開發(fā)小組的第一個(gè)任務(wù)是對應(yīng)用領(lǐng)域即將要運(yùn)行目標(biāo)軟件的特定的環(huán)境獲得一個(gè)基本的了解。在過程的任何階段,只要用戶不再相信該軟件產(chǎn)品的代價(jià)是合理的,開發(fā)就會(huì)立即停止。因此,進(jìn)行軟件開發(fā)的一個(gè)關(guān)鍵就是商業(yè)模型,它是一個(gè)目標(biāo)產(chǎn)品代價(jià)合理的文檔。
2)分析工作流。分析工作流的目標(biāo)是分析和提取需求,以獲得正確開發(fā)一個(gè)軟件產(chǎn)品和易于維護(hù)它所必需的需求。其關(guān)鍵是需求流的輸出必須能夠完全被客戶所理解,即需求流的制品必須用用戶的語言表達(dá)。當(dāng)使用統(tǒng)一過程的時(shí)候,沒有通常意義上的規(guī)格說明文檔,而是向用戶展示一組UML制品,這些UML圖標(biāo)及其描述能夠避免許多傳統(tǒng)規(guī)格說明文檔的問題。
當(dāng)用戶批準(zhǔn)規(guī)格說明文檔之后,就可以開始準(zhǔn)備制訂軟件項(xiàng)目管理計(jì)劃。該計(jì)劃的主要組成部分有可交付的東西、交付的時(shí)間以及預(yù)算,計(jì)劃盡可能詳細(xì)地描述了整個(gè)軟件過程。計(jì)劃應(yīng)該包括要使用的生命周期模型,開發(fā)組織的組織結(jié)構(gòu),項(xiàng)目職責(zé),管理目標(biāo)和優(yōu)先權(quán),使用的技術(shù)和CASE工具,以及詳細(xì)時(shí)間表、預(yù)算和資源分配。整個(gè)計(jì)劃的實(shí)質(zhì)是對開發(fā)周期和成本的估計(jì)。
3)設(shè)計(jì)工作流。設(shè)計(jì)流的目標(biāo)是細(xì)化分析流的制品,直至材料處于程序員可實(shí)現(xiàn)的形式。在傳統(tǒng)設(shè)計(jì)階段,設(shè)計(jì)小組確定產(chǎn)品的內(nèi)部結(jié)構(gòu)。設(shè)計(jì)人員將產(chǎn)品分解成模塊,詳細(xì)定義每個(gè)模塊的接口。設(shè)計(jì)小組完成模塊化分解后,開始實(shí)施詳細(xì)設(shè)計(jì),為每個(gè)模塊選擇相應(yīng)的算法和數(shù)據(jù)結(jié)構(gòu)。如果是面向?qū)ο蠓椒ǎ浠A(chǔ)是類,把類看作是一類特殊類型的模塊,在分析流期間提取類,在設(shè)計(jì)流期間設(shè)計(jì)類。
4)實(shí)現(xiàn)工作流。實(shí)現(xiàn)工作流的目標(biāo)是用選擇的實(shí)現(xiàn)語言實(shí)現(xiàn)目標(biāo)軟件產(chǎn)品。小型軟件產(chǎn)品有時(shí)由設(shè)計(jì)者實(shí)現(xiàn),而大型軟件產(chǎn)品被劃分成較小的子系統(tǒng)由多個(gè)編碼小組并行實(shí)現(xiàn),子系統(tǒng)由組件或代碼制品組成,分別由單個(gè)程序員實(shí)現(xiàn)。
5)測試工作流。在統(tǒng)一過程中,測試從始至終是與其他工作流并行進(jìn)行。對于測試,軟件人員要對開發(fā)或維護(hù)的每個(gè)軟件制品進(jìn)行測試或再測試,一旦軟件人員確認(rèn)一個(gè)制品是正確的就將它交給軟件質(zhì)量保證小組進(jìn)行獨(dú)立測試。每個(gè)組件在實(shí)現(xiàn)的同時(shí)應(yīng)該對它進(jìn)行測試,并在實(shí)現(xiàn)之后要對它運(yùn)行測試用例和代碼評審。之后必須將它與其它編碼后的組件結(jié)合起來,以便能夠確定該部分產(chǎn)品整體上功能是否正確。當(dāng)全部組件都編碼和集成完畢,進(jìn)行產(chǎn)品測試。依照規(guī)格說明對產(chǎn)品功能進(jìn)行整體測試,特別是要對規(guī)格說明中列出的約束條件進(jìn)行測試。不僅必須測試產(chǎn)品的正確性,還需要測試產(chǎn)品的健壯性。集成測試的最后一方面測試時(shí)驗(yàn)收測試。軟件交付給用戶之前,客戶使用與測試數(shù)據(jù)不同的真實(shí)數(shù)據(jù),在實(shí)際的硬件上對產(chǎn)品進(jìn)行測試。
為了確保過程改進(jìn)的質(zhì)量,不論采用何種改進(jìn)模式,都需要遵循以下原則:(1)改進(jìn)的基礎(chǔ):軟件過程改進(jìn)是建立在過程評價(jià)和過程度量的結(jié)果基礎(chǔ)之上的;(2)過程評價(jià):產(chǎn)生當(dāng)前過程能力的結(jié)果,用于同軟件企業(yè)的需求和業(yè)務(wù)目標(biāo)進(jìn)行比較,應(yīng)適當(dāng)?shù)刂貜?fù)軟件過程評價(jià)活動(dòng),以便確認(rèn)所作的改進(jìn)是否達(dá)到了預(yù)定的目標(biāo);(3)過程度量:用于對改進(jìn)過程進(jìn)行監(jiān)控,以便及時(shí)對改進(jìn)活動(dòng)做必要的調(diào)整,幫助識別和優(yōu)化改進(jìn)活動(dòng),以支持軟件企業(yè)滿足業(yè)務(wù)目標(biāo)的要求;(4)改進(jìn)是一個(gè)持續(xù)的過程:預(yù)先制定的每一個(gè)改進(jìn)目標(biāo)都應(yīng)當(dāng)與企業(yè)統(tǒng)一制定的過程改進(jìn)規(guī)劃相一致,并且不斷按照計(jì)劃實(shí)加扎監(jiān)控效果這樣的周期進(jìn)行;(5)重視每個(gè)改進(jìn)活動(dòng):將改進(jìn)活動(dòng)本身當(dāng)作一個(gè)過程改進(jìn)項(xiàng)目來完成;(6)降低風(fēng)險(xiǎn):慎重考慮因改進(jìn)活動(dòng)的不完備和改進(jìn)目標(biāo)的不適合而帶來的風(fēng)險(xiǎn)。
不是所有軟件都可采用統(tǒng)一過程進(jìn)行開發(fā)的,統(tǒng)一過程要求所適用的軟件項(xiàng)目具有如下特點(diǎn):在項(xiàng)目開發(fā)早期需求可能有所變化;分析設(shè)計(jì)人員對應(yīng)用領(lǐng)域很熟悉;高風(fēng)險(xiǎn)項(xiàng)目;用戶可不同程度地參與整個(gè)項(xiàng)目的開發(fā)過程;使用面向?qū)ο蟮恼Z言或UML;使用CASE工具,如Rose;具有高素質(zhì)的項(xiàng)目管理者和軟件研發(fā)團(tuán)隊(duì)。統(tǒng)一過程要求的條件非常苛刻的,初學(xué)者不要隨便使用。該模型一般用在中小型應(yīng)用軟件的開發(fā)上,系統(tǒng)軟件的開發(fā)很少采用統(tǒng)一過程模型。
參考文獻(xiàn)
[1]張海藩.軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社,2005.
[2]梁穎紅.軟件工程理論與實(shí)踐[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2008.
[3]齊治昌,譚慶平,寧洪.軟件工程[M].北京:高等教育出版社,2001,