Rational統(tǒng)一過(guò)程RUP貼近中小軟件開(kāi)發(fā)

字號(hào):

對(duì)于中、小規(guī)模的軟件項(xiàng)目,開(kāi)發(fā)團(tuán)隊(duì)的規(guī)模不是很大。軟件的開(kāi)發(fā)周期也比較短。在這種情況下,完全照搬RUP并不完全適用。因此,裁剪RUP使其適合中、小型軟件開(kāi)發(fā)項(xiàng)目是非常有必要的。
    圖1:一個(gè)復(fù)雜的BUC的實(shí)現(xiàn)方法
    Rational統(tǒng)一過(guò)程(RUP)是IBM公司的一個(gè)軟件過(guò)程產(chǎn)品。它幾乎覆蓋了軟件開(kāi)發(fā)過(guò)程中的所有方面。
    J2EE技術(shù)提供了一個(gè)基于組件的、多層分布式計(jì)算平臺(tái)。在J2EE的應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程中,由于使用了中間件,開(kāi)發(fā)人員可以把工作重點(diǎn)放在系統(tǒng)功能的建模、設(shè)計(jì)與實(shí)現(xiàn)上。此外,J2EE技術(shù)結(jié)合了軟件設(shè)計(jì)中的實(shí)踐(best practices),如以架構(gòu)為中心的軟件體系結(jié)構(gòu)、基于組件的架構(gòu)等等。這一切都對(duì)現(xiàn)有的軟件工程過(guò)程提出了新的挑戰(zhàn)。所以,裁剪RUP并且使其在J2EE項(xiàng)目中起更大的作用是非常有意義的。
    本文講述了如何把RUP應(yīng)用到小型項(xiàng)目團(tuán)隊(duì)開(kāi)發(fā)J2EE應(yīng)用系統(tǒng)的過(guò)程中,并且結(jié)合J2EE技術(shù)的特點(diǎn)從項(xiàng)目管理、架構(gòu)設(shè)計(jì)、開(kāi)發(fā)和測(cè)試等方面重點(diǎn)闡明了對(duì)RUP的裁剪。
    項(xiàng)目管理
    在RUP中,角色定義了個(gè)人或團(tuán)隊(duì)的行為和職責(zé),包括分析設(shè)計(jì)人員、編程人員、測(cè)試人員、項(xiàng)目管理人員和輔助人員,一個(gè)人可以同時(shí)擔(dān)當(dāng)幾個(gè)角色.一個(gè)角色也可以由幾個(gè)人來(lái)共同承擔(dān)。針對(duì)J2EE系統(tǒng)的開(kāi)發(fā)和維護(hù),J2EE規(guī)范中也定義不同的角色,包括J2EE產(chǎn)品供應(yīng)商、應(yīng)用組件供應(yīng)商、發(fā)布人員、系統(tǒng)管理員等等。
    在實(shí)際的項(xiàng)目運(yùn)行中.要根據(jù)軟件開(kāi)發(fā)組織的實(shí)際情況來(lái)確定角色的定義和分配。項(xiàng)目經(jīng)理是必不可少的一個(gè)角色,通常是一個(gè)人來(lái)?yè)?dān)任。項(xiàng)目經(jīng)理代表整個(gè)項(xiàng)目與軟件客戶(hù)進(jìn)行溝通和協(xié)商,并且制定軟件開(kāi)發(fā)計(jì)劃等等。架構(gòu)師也是一個(gè)必須的角色,通常由一名經(jīng)驗(yàn)豐富的軟件開(kāi)發(fā)人員來(lái)?yè)?dān)任。
    在項(xiàng)目運(yùn)行的前期,架構(gòu)師負(fù)責(zé)設(shè)計(jì)軟件架構(gòu)和原型系統(tǒng)。在項(xiàng)目運(yùn)行后期,架構(gòu)師可以參與到具體的軟件開(kāi)發(fā)中。SQA同樣是必不可少的,通常是一名經(jīng)驗(yàn)豐富的軟件開(kāi)發(fā)人員來(lái)?yè)?dān)任。SQA在整個(gè)項(xiàng)目的運(yùn)行過(guò)程中負(fù)責(zé)監(jiān)督和改進(jìn)軟件質(zhì)量,包括制定系統(tǒng)測(cè)試方案、用戶(hù)接受測(cè)試方案等等。開(kāi)發(fā)人員是組成團(tuán)隊(duì)的主要力量,負(fù)責(zé)系統(tǒng)的設(shè)計(jì)、開(kāi)發(fā)和測(cè)試。如果可能的話(huà),團(tuán)隊(duì)中必須設(shè)立業(yè)務(wù)分析員的角色,負(fù)責(zé)商業(yè)建模等,通常由有特定行業(yè)經(jīng)驗(yàn)的人來(lái)?yè)?dān)任。
    迭代開(kāi)發(fā)計(jì)劃
    RUP的精髓之一迭代式的開(kāi)發(fā),它是基于Spiral模型翻的。整個(gè)軟件開(kāi)發(fā)周期由很多個(gè)迭代組成,其中初始迭代最為重要。其它每個(gè)迭代都為了實(shí)現(xiàn)軟件的部分功能。在完成所有迭代后,軟件的所有功能都已實(shí)現(xiàn)并且通過(guò)測(cè)試。
    初始迭代又叫作0迭代,它開(kāi)始于項(xiàng)目的啟動(dòng)。結(jié)束于RUP初始階段(inception phase)的完成。初始迭代在整個(gè)軟件項(xiàng)目中起著十分重要的作用,這是因?yàn)樵谶@個(gè)迭代中,項(xiàng)目團(tuán)隊(duì)和客戶(hù)必須對(duì)軟件項(xiàng)目的范圍、成本、進(jìn)度和應(yīng)用系統(tǒng)的邊界以及功能等達(dá)成一致的理解。
    在初始迭代中,最重要的活動(dòng)有明確項(xiàng)目的范圍、商業(yè)需求和提出至少一個(gè)可用的軟件架構(gòu)方案。在明確項(xiàng)目范圍的過(guò)程中,項(xiàng)目經(jīng)理就項(xiàng)目的邊界、產(chǎn)品、限制條件等與軟件客戶(hù)進(jìn)行協(xié)商,從而達(dá)成一致認(rèn)識(shí)。同時(shí),在理解客戶(hù)需求的基礎(chǔ)上,項(xiàng)目經(jīng)理或者業(yè)務(wù)分析員以需求說(shuō)明書(shū)和功能說(shuō)明書(shū)的形式把客戶(hù)的需求記錄下來(lái)。并且和客戶(hù)達(dá)成一致理解。在此基礎(chǔ)上,架構(gòu)師提供至少一個(gè)合適的軟件架構(gòu)方案,并且完成原型系統(tǒng)。原型系統(tǒng)的目的不但是為了驗(yàn)證技術(shù)上的可行性,而且是為了給客戶(hù)一個(gè)感性的認(rèn)識(shí),更好地完善對(duì)需求的理解。
    需求說(shuō)明書(shū)從客戶(hù)的角度簡(jiǎn)要地描述了系統(tǒng)要具備的功能,它包含了很多商業(yè)用例。通常情況下,需求說(shuō)明書(shū)還不能夠全面地描述整個(gè)應(yīng)用系統(tǒng),所以軟件開(kāi)發(fā)組織還要從不同角度來(lái)描述系統(tǒng)的功能和特征,這就是功能說(shuō)明書(shū)。功能說(shuō)明書(shū)中包含了很多系統(tǒng)用例。功能說(shuō)明書(shū)和需求說(shuō)明書(shū)必須征求客戶(hù)的意見(jiàn),直到客戶(hù)滿(mǎn)意為止。
    迭代計(jì)劃是項(xiàng)目計(jì)劃的一部分,指如何把要實(shí)現(xiàn)的系統(tǒng)分解成更小的子系統(tǒng)和如何在不同迭代中(除初始迭代之外)劃分子系統(tǒng),從而使每個(gè)迭代的目標(biāo)明確,不同迭代之間的依賴(lài)關(guān)系達(dá)到最低。通常情況下,從邏輯上看,應(yīng)用系統(tǒng)可以劃分成多個(gè)BUC,而每個(gè)BUC又可以進(jìn)一步劃分成SUC;因此,可以從BUC的角度出發(fā),根據(jù)相互之間的依賴(lài)程度來(lái)進(jìn)行劃分,把依賴(lài)程度低的BUC劃分到不同的迭代中,從而確定每一個(gè)迭代的范圍。一個(gè)復(fù)雜的BUC可以把它分解成獨(dú)立的幾個(gè)小BUC在幾個(gè)迭代中來(lái)實(shí)現(xiàn)。
    一個(gè)應(yīng)用系統(tǒng)也是由很多組件組成的。一個(gè)或者幾個(gè)組件組合起來(lái)可以實(shí)現(xiàn)一個(gè)SUC或者一個(gè)BUC的要求。在設(shè)計(jì)迭代計(jì)劃的時(shí)候,要考慮到組件之間可能存在的約束關(guān)系?;贘2EE的應(yīng)用系統(tǒng)是基于組件架構(gòu)的,因此,最小化迭代之間的依賴(lài)是一個(gè)最重要的衡量標(biāo)準(zhǔn)。
    采用這種迭代辦法后,每個(gè)迭代的范圍限制在一個(gè)或者幾個(gè)相互獨(dú)立的BUC中。這樣做的好處在于降低需求變化帶來(lái)的風(fēng)險(xiǎn)。