




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第九講 統(tǒng)一建模語(yǔ)言UML和Rational統(tǒng)一過(guò)程RUP現(xiàn)代軟件開(kāi)發(fā)面臨著要盡快將產(chǎn)品推向市場(chǎng)和開(kāi)發(fā)高質(zhì)量、低成本產(chǎn)品的矛盾。要成功解決軟件開(kāi)發(fā)中的矛盾,必須將軟件開(kāi)發(fā)作為一種團(tuán)隊(duì)活動(dòng)。為了有效組織開(kāi)發(fā)和進(jìn)行交流,團(tuán)隊(duì)中不同參與者統(tǒng)一使用公共的過(guò)程、公共的表達(dá)語(yǔ)言、以及支持該語(yǔ)言和過(guò)程的工具。Rational統(tǒng)一過(guò)程(RUP)就是這樣一種公共過(guò)程,而且已經(jīng)在多個(gè)軟件開(kāi)發(fā)組織的實(shí)踐中被證實(shí)可以有效解決上述矛盾。統(tǒng)一建模語(yǔ)言(UML)則可以作為開(kāi)發(fā)團(tuán)隊(duì)的公共語(yǔ)言。UML不是完整的開(kāi)發(fā)方法,UML規(guī)范也沒(méi)有定義標(biāo)準(zhǔn)的過(guò)程,而RUP則是有效使用UML的指南。本講著重介紹UML和RUP的基本概念,并描
2、述了如何在RUP的指導(dǎo)下用UML建模。一引言現(xiàn)代軟件開(kāi)發(fā)中存在著一個(gè)基本矛盾:一方面,開(kāi)發(fā)組織需要將產(chǎn)品盡快推向市場(chǎng);另一方面,推出的軟件系統(tǒng)必須兼具高質(zhì)量和低成本。要在這二者之間取得平衡很困難:倉(cāng)促地將一個(gè)軟件系統(tǒng)推向市場(chǎng),其質(zhì)量肯定會(huì)受到影響;但是過(guò)分注重質(zhì)量可能會(huì)需要過(guò)多的時(shí)間才能將軟件交給用戶(hù)。要解決這個(gè)矛盾,首先要認(rèn)識(shí)到軟件開(kāi)發(fā)已經(jīng)發(fā)生了本質(zhì)的變化。以前,許多信息系統(tǒng)的體系結(jié)構(gòu)相當(dāng)簡(jiǎn)單:上層的應(yīng)用程序建立在中間層上,中間層則封裝了業(yè)務(wù)規(guī)則和數(shù)據(jù)存?。恢虚g層建立在持久存儲(chǔ)之上,通常表現(xiàn)為一個(gè)關(guān)系數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)實(shí)質(zhì)上就是系統(tǒng)的中心。Client/Server體系結(jié)構(gòu)的出現(xiàn)有助于實(shí)現(xiàn)這
3、種三層分離的體系,并且易于有效控制系統(tǒng)的變更。特別地,在保持系統(tǒng)狀態(tài)不變的情況下可以快速創(chuàng)建和修改應(yīng)用,可以引入新的業(yè)務(wù)規(guī)則而不影響系統(tǒng)的穩(wěn)定,也可以隨著時(shí)間以新的和不可預(yù)知的方式來(lái)進(jìn)行數(shù)據(jù)挖掘。這種穩(wěn)定的體系結(jié)構(gòu)使得許多組織以相應(yīng)的形式組織他們的開(kāi)發(fā)團(tuán)隊(duì):分析人員和最終領(lǐng)域?qū)<乙黄饘⒂脩?hù)的要求轉(zhuǎn)化為需求,數(shù)據(jù)建模人員建立滿足用戶(hù)功能需求的領(lǐng)域模型,應(yīng)用開(kāi)發(fā)人員則迅速建造滿足系統(tǒng)行為需求的新系統(tǒng)。然而,隨著Web的出現(xiàn),軟件開(kāi)發(fā)的世界發(fā)生了不可逆轉(zhuǎn)的改變。首先,傳統(tǒng)C/S結(jié)構(gòu)的系統(tǒng)中,用戶(hù)的數(shù)目是可以控制的,通常是數(shù)百或者數(shù)千。而Web上一個(gè)系統(tǒng)的用戶(hù)可能數(shù)以百萬(wàn)計(jì),并且大多不在系統(tǒng)開(kāi)發(fā)組織的
4、控制之中。再者,在傳統(tǒng)的C/S系統(tǒng)中,應(yīng)用和數(shù)據(jù)在概念上距離相當(dāng)小,而Web上的許多系統(tǒng)都是由數(shù)千個(gè)可移動(dòng)的部件組成,其中有使用腳本語(yǔ)言的,有經(jīng)過(guò)編譯的,使用的機(jī)制與傳統(tǒng)的關(guān)系型存儲(chǔ)大相徑庭。第三,在C/S系統(tǒng)中,變更是不可避免的,但可以適度地控制;而在Web上,變更是持續(xù)的,并且在系統(tǒng)體系結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)的每個(gè)層次上都會(huì)發(fā)生。最后,在C/S系統(tǒng)中,參與系統(tǒng)開(kāi)發(fā)的人員相對(duì)較少,而在Web上除了傳統(tǒng)的軟件開(kāi)發(fā)團(tuán)隊(duì)以外,還有許多新的參與者,從內(nèi)容創(chuàng)建人員、信息架構(gòu)構(gòu)造人員到網(wǎng)絡(luò)設(shè)計(jì)人員,大家共同合作進(jìn)行E-軟件的開(kāi)發(fā)。另外,傳統(tǒng)上著重處理大量數(shù)據(jù)的系統(tǒng)在實(shí)現(xiàn)上是相對(duì)同構(gòu)的,主要使用Cobol語(yǔ)言。而
5、Web的出現(xiàn)改變了一切。在Web上一個(gè)這樣的系統(tǒng)可能在服務(wù)器端使用Cobol、C+或Java,或者少量的腳本語(yǔ)言和4GL,在客戶(hù)端使用傳統(tǒng)的語(yǔ)言如VB和Java。有時(shí)也會(huì)使用諸如XML這樣的語(yǔ)言,而且XML本身就是作為一種在Web上表示結(jié)構(gòu)化數(shù)據(jù)的通用語(yǔ)言出現(xiàn)的。除了面對(duì)這些龐雜的編程語(yǔ)言,開(kāi)發(fā)隊(duì)伍還必須處理眾多的技術(shù),如Micosoft的WinDNA,Sun的EJB等,這些技術(shù)提供給開(kāi)發(fā)人員的編程模型也各不相同。對(duì)于一個(gè)組織而言,開(kāi)發(fā)隊(duì)伍的成員能夠以一種通用的方式溝通是至關(guān)重要的,不同的參與者對(duì)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)有不同的看法,只有使用通用的語(yǔ)言表達(dá),才可能統(tǒng)一開(kāi)發(fā)團(tuán)隊(duì)的活動(dòng)。因此,要成功解決軟
6、件開(kāi)發(fā)中的矛盾,必須將軟件開(kāi)發(fā)作為一種團(tuán)隊(duì)活動(dòng),團(tuán)隊(duì)中從事開(kāi)發(fā)和部署的不同參與者統(tǒng)一使用公共的過(guò)程、公共的表達(dá)語(yǔ)言、以及支持該語(yǔ)言和過(guò)程的工具。Rational統(tǒng)一過(guò)程(Rational Unified Process,RUP)就是這樣一種公共過(guò)程,而且已經(jīng)在多個(gè)軟件開(kāi)發(fā)組織的實(shí)踐中被證實(shí)可以有效解決上述矛盾。RUP提供在開(kāi)發(fā)機(jī)構(gòu)中分派任務(wù)和責(zé)任的紀(jì)律化方法,它的目標(biāo)是在可預(yù)見(jiàn)的日程和預(yù)算的前提下,確保滿足最終用戶(hù)需求的高質(zhì)量產(chǎn)品。RUP是風(fēng)險(xiǎn)和用例驅(qū)動(dòng)的過(guò)程,它鼓勵(lì)系統(tǒng)可執(zhí)行版本的迭代和增量式交付,其迭代以用例為依據(jù)。除此之外,RUP還是體系結(jié)構(gòu)優(yōu)先的過(guò)程,系統(tǒng)的體系結(jié)構(gòu)在早期就穩(wěn)定下來(lái),以
7、便對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證,在后續(xù)的迭代中逐步進(jìn)行精化。統(tǒng)一建模語(yǔ)言UML(Unified Modelling Languae,UML)可以作為開(kāi)發(fā)團(tuán)隊(duì)的公共語(yǔ)言。UML是一種直觀化、明確化、構(gòu)建和文檔化軟件系統(tǒng)產(chǎn)物的圖形化語(yǔ)言。UML最主要的目標(biāo)是成為所有建模人員可以使用的通用建模語(yǔ)言,它包含了當(dāng)前主流建模技術(shù)的概念,并針對(duì)許多當(dāng)前軟件開(kāi)發(fā)的問(wèn)題,如大規(guī)模、分布、并發(fā)和團(tuán)隊(duì)開(kāi)發(fā)等。UML不是完整的開(kāi)發(fā)方法,不包括逐步的開(kāi)發(fā)流程。對(duì)于軟件開(kāi)發(fā)來(lái)說(shuō),良好的開(kāi)發(fā)過(guò)程非常重要。UML規(guī)范沒(méi)有定義標(biāo)準(zhǔn)的過(guò)程,但是可以用于迭代的開(kāi)發(fā)過(guò)程,并支持現(xiàn)有的大多數(shù)面向?qū)ο蟮拈_(kāi)發(fā)過(guò)程。而RUP則是有效使用UML的指南。下面
8、將分別介紹統(tǒng)一建模語(yǔ)言和Rational統(tǒng)一過(guò)程。二統(tǒng)一建模語(yǔ)言UML UML是一種可視化的建模語(yǔ)言,結(jié)合了Booch、Objectory和OMT方法,同時(shí)吸收了其它大量方法學(xué)的思想,提供了一種表示的標(biāo)準(zhǔn)。1997年OMG采納UML作為軟件建模語(yǔ)言的標(biāo)準(zhǔn),可以應(yīng)用于不同的軟件開(kāi)發(fā)過(guò)程。下面介紹UML涉及的一些基本概念。1視圖(Views)UML用模型來(lái)描述系統(tǒng)的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為。為了捕捉要構(gòu)建的軟件系統(tǒng)的所有決策信息,需要從團(tuán)隊(duì)中不同參與者的角度出發(fā),為系統(tǒng)的體系結(jié)構(gòu)建模,形成不同的系統(tǒng)視圖。要描述一個(gè)軟件系統(tǒng),下面的五種視圖尤為重要:(1)用例視圖(Use case view)用例視圖定義
9、系統(tǒng)的外部行為,是最終用戶(hù)、分析人員和測(cè)試人員所關(guān)注的。用例視圖定義了系統(tǒng)的需求,是描述系統(tǒng)設(shè)計(jì)和構(gòu)建的其它視圖的基礎(chǔ),即用例驅(qū)動(dòng)。用例視圖也稱(chēng)為用戶(hù)模型視圖。(2)邏輯視圖(Logic view)邏輯視圖描述邏輯結(jié)構(gòu),該邏輯結(jié)構(gòu)支持用例視圖描述的功能,它描述了問(wèn)題空間中的概念以及實(shí)現(xiàn)系統(tǒng)功能的機(jī)制,如類(lèi)、包、子系統(tǒng)等,因而是編程人員最關(guān)心的。邏輯視圖又稱(chēng)作結(jié)構(gòu)模型視圖或靜態(tài)視圖。(3)實(shí)現(xiàn)視圖(Implementation view)實(shí)現(xiàn)描述用于組建系統(tǒng)的物理組件,如可執(zhí)行文件、代碼庫(kù)和數(shù)據(jù)庫(kù)等系統(tǒng)程序員所看到的軟件產(chǎn)物,是和配置管理以及系統(tǒng)集成相關(guān)的信息。實(shí)現(xiàn)視圖又稱(chēng)為組件視圖(Compo
10、nent view)。(4)過(guò)程視圖(Process view)過(guò)程視圖描述將系統(tǒng)分解為過(guò)程和任務(wù),以及這些并發(fā)元素之間的通信與同步。過(guò)程視圖對(duì)于系統(tǒng)集成人員特別重要,因?yàn)樗麄冃枰紤]系統(tǒng)的性能和吞吐量等。過(guò)程視圖也稱(chēng)為并發(fā)視圖、動(dòng)態(tài)視圖或者協(xié)作視圖等。(5)配置視圖(Deployment view)描述系統(tǒng)的物理網(wǎng)絡(luò)布局,是系統(tǒng)工程師和網(wǎng)絡(luò)工程師所感興趣的。又稱(chēng)作物理視圖。2圖(Diagrams)每個(gè)視圖都由一個(gè)或者多個(gè)圖組成,一個(gè)圖是系統(tǒng)體系結(jié)構(gòu)在某個(gè)側(cè)面的表示,所有的圖在一起組成系統(tǒng)的完整視圖。UML提供了九種不同的圖,分為靜態(tài)圖和動(dòng)態(tài)圖兩大類(lèi)。靜態(tài)圖包括用例圖、類(lèi)圖、對(duì)象圖、組件圖和配
11、置圖,動(dòng)態(tài)圖包括序列圖、狀態(tài)圖、協(xié)作圖和活動(dòng)圖。(1)用例圖(Use case diagram):用例圖描述系統(tǒng)的功能,由系統(tǒng)、用例和角色(Actor)三種元素組成。圖中顯示若干角色以及這些角色和系統(tǒng)提供的用例之間的連接關(guān)系。用例是系統(tǒng)對(duì)外提供的功能的描述,是角色和系統(tǒng)在一次交互過(guò)程中執(zhí)行的相關(guān)事務(wù)的序列。角色是與系統(tǒng)、子系統(tǒng)或類(lèi)交互的外部人員、進(jìn)程或事物。用例之間存在擴(kuò)展、使用和組合三種關(guān)系。角色之間可以用通用化關(guān)系將某些角色的共同行為抽象為通用行為。在UML中,用例圖是用例視圖的重要組成部分。(2)類(lèi)圖(Class diagram)類(lèi)圖用來(lái)表示系統(tǒng)中的類(lèi)以及類(lèi)與類(lèi)之間的關(guān)系,描述系統(tǒng)的靜態(tài)
12、結(jié)構(gòu),用于邏輯視圖中。類(lèi)是對(duì)象的抽象描述。所謂對(duì)象就是可以控制和操作的實(shí)體,類(lèi)是具有共同的結(jié)構(gòu)、行為、關(guān)系、語(yǔ)義的一組對(duì)象的抽象。類(lèi)的行為和結(jié)構(gòu)特征分別通過(guò)操作和屬性表示。類(lèi)與類(lèi)之間有多種關(guān)系,如關(guān)聯(lián)、依賴(lài)、通用化、聚合等。關(guān)系提供了對(duì)象之間的通信方式。關(guān)聯(lián)關(guān)系用于描述類(lèi)與類(lèi)之間的連接,通常是雙向的。通用化又稱(chēng)繼承,是通用元素和具體元素之間的一種分類(lèi)關(guān)系,具體元素完全擁有通用元素的信息,并且還可以附加其它信息。聚合關(guān)系具有較強(qiáng)的耦合性,描述整體與部分的關(guān)系。依賴(lài)關(guān)系描述兩個(gè)模型元素之間語(yǔ)義上的連接關(guān)系,其中一個(gè)元素是獨(dú)立的,另一個(gè)元素依賴(lài)于獨(dú)立的模型元素,獨(dú)立元素的變化將影響到依賴(lài)元素。(3)
13、對(duì)象圖(Object diagram)對(duì)象圖是類(lèi)圖的示例,類(lèi)圖表示類(lèi)和類(lèi)與類(lèi)之間的關(guān)系,對(duì)象圖則表示在某一時(shí)刻這些類(lèi)的具體實(shí)例以及這些實(shí)例之間的具體連接關(guān)系,可以幫助人們理解比較復(fù)雜的類(lèi)圖。對(duì)象圖也可以用于顯示類(lèi)圖中的對(duì)象在某一點(diǎn)的連接關(guān)系。對(duì)象圖常用于用例視圖和邏輯視圖中。(4)狀態(tài)圖(Statechart diagram)狀態(tài)圖主要用來(lái)描述對(duì)象、子系統(tǒng)、系統(tǒng)的生命周期。通過(guò)狀態(tài)圖可以了解一個(gè)對(duì)象可能具有的所有狀態(tài)、導(dǎo)致對(duì)象狀態(tài)改變的事件、以及狀態(tài)轉(zhuǎn)移引發(fā)的動(dòng)作。狀態(tài)是對(duì)象操作的前一次活動(dòng)的結(jié)果,通常由對(duì)象的屬性值來(lái)決定。事件指的是發(fā)生的且引起某些動(dòng)作執(zhí)行的事情。狀態(tài)的變化稱(chēng)作轉(zhuǎn)移,與轉(zhuǎn)移相
14、連的動(dòng)作指明狀態(tài)轉(zhuǎn)移時(shí)應(yīng)該做的事情。狀態(tài)圖是對(duì)類(lèi)描述的事物的補(bǔ)充說(shuō)明,用在邏輯視圖中描述類(lèi)的行為。(5)序列圖(Sequence diagram)面向?qū)ο笙到y(tǒng)中對(duì)象之間的交互表現(xiàn)為消息的發(fā)送和接收。序列圖反映若干個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作關(guān)系,即隨著時(shí)間的流逝,消息是如何在對(duì)象之間發(fā)送和接收的。序列圖表現(xiàn)為二維的形式,其中的縱坐標(biāo)軸顯示時(shí)間,橫坐標(biāo)軸顯示對(duì)象。序列圖中重點(diǎn)反映對(duì)象之間發(fā)送消息的先后次序,常用在邏輯視圖中。(6)協(xié)作圖(Collaboration diagram)協(xié)作圖主要描述協(xié)作對(duì)象之間的交互和鏈接。協(xié)作圖和序列圖同樣反映對(duì)象間的動(dòng)態(tài)協(xié)作,也可以表達(dá)消息序列,但重點(diǎn)描述交換消息的對(duì)象
15、之間的關(guān)系,強(qiáng)調(diào)的是空間關(guān)系而非時(shí)間順序。(7)活動(dòng)圖(Activity diagram)活動(dòng)圖顯示動(dòng)作及其結(jié)果,著重描述操作實(shí)現(xiàn)中所完成的工作以及用例實(shí)例或?qū)ο笾械幕顒?dòng)?;顒?dòng)圖中反映了一個(gè)連續(xù)的活動(dòng)流,常用于描述一個(gè)操作執(zhí)行過(guò)程中所完成的工作?;顒?dòng)圖也有其它的用途,如顯示如何執(zhí)行一組相關(guān)的動(dòng)作,以及這些動(dòng)作如何影響它們周?chē)膶?duì)象,說(shuō)明一次商務(wù)活動(dòng)中的工人、工作流、組織和對(duì)象是如何工作的,等等。(8)組件圖(Component diagram)組件圖用來(lái)反映代碼的物理結(jié)構(gòu)。組件可以是源代碼、二進(jìn)制文件或可執(zhí)行文件,包含邏輯類(lèi)的實(shí)現(xiàn)信息。實(shí)現(xiàn)視圖由組件圖構(gòu)成。(9)配置圖(Deployment
16、diagram)配置圖用來(lái)顯示系統(tǒng)中軟件和硬件的物理架構(gòu)。圖中通常顯示實(shí)際的計(jì)算機(jī)和設(shè)備及它們之間的關(guān)系。配置圖用來(lái)構(gòu)成配置視圖,描述系統(tǒng)的實(shí)際物理結(jié)構(gòu)。3模型元素可以在圖中使用的概念統(tǒng)稱(chēng)為模型元素。模型元素用語(yǔ)義、元素的正式定義或確定的語(yǔ)句的準(zhǔn)確含義來(lái)定義。模型元素在圖中用相應(yīng)的符號(hào)表示,即視圖元素。一個(gè)模型元素可以用在多個(gè)不同的圖中,但總是具有相同的含義和符號(hào)表示,并且出現(xiàn)的方式應(yīng)符合一定的規(guī)則。除了類(lèi)、對(duì)象、消息等概念外,模型元素之間的連接關(guān)系如關(guān)聯(lián)、依賴(lài)、通用化也是模型元素。另外,模型元素也包括消息、動(dòng)作和版型等。4通用機(jī)制通用機(jī)制用于為圖附加一些無(wú)法用基本的模型元素表示的信息,如注釋
17、(note)、修飾(adornment)和規(guī)格說(shuō)明(specification)等。在圖的模型元素上添加修飾為模型元素附加一定的語(yǔ)義。這樣,建模人員就可以方便地區(qū)別類(lèi)型與實(shí)例。無(wú)論建模語(yǔ)言怎樣擴(kuò)展,它都不可能適用于描述任何事物。UML提供的注釋能力能夠在模型中添加一些模型元素?zé)o法表示的額外信息,對(duì)某個(gè)元素作出解釋或說(shuō)明。模型元素具有的一些性質(zhì)是以數(shù)值方式體現(xiàn)的。一個(gè)性質(zhì)用一個(gè)名字和一個(gè)值表示,又稱(chēng)作加標(biāo)簽值(tagged value)。UML中預(yù)定義了許多性質(zhì),一般作為模型元素實(shí)例的附加規(guī)格說(shuō)明。這種規(guī)范說(shuō)明方式是非正式的,不直接顯示在圖中。5擴(kuò)展機(jī)制為了使建模人員根據(jù)需要對(duì)基本建模語(yǔ)言進(jìn)行一
18、定的擴(kuò)展,UML提供了版型(stereotype)、加標(biāo)簽值和約束(constrains)等擴(kuò)展機(jī)制。版型機(jī)制是指在已有的模型元素基礎(chǔ)上建立一種新的模型元素。版型比現(xiàn)有元素多一些特別的語(yǔ)義,其使用場(chǎng)所和產(chǎn)生版型的原始元素相同。版型的存在避免了UML語(yǔ)言過(guò)于復(fù)雜化,同時(shí)也使UML能夠適應(yīng)各種需求。加標(biāo)簽值也稱(chēng)為性質(zhì)。除了UML語(yǔ)言中預(yù)定義的性質(zhì)外,用戶(hù)還可以為元素定義一些附加信息,即定義性質(zhì)。約束是對(duì)元素的限制。通過(guò)約束限定元素的用法或元素的語(yǔ)義。通過(guò)擴(kuò)展機(jī)制可以擴(kuò)展UML以適用于某種具體的方法、過(guò)程或組織。6UML建模用UML語(yǔ)言建造系統(tǒng)模型時(shí),并不是只建立一個(gè)模型。在系統(tǒng)開(kāi)發(fā)的每個(gè)階段都要建
19、造不同的模型,建造這些模型的目的也不同。需求分析階段建造的模型用來(lái)捕獲系統(tǒng)的需求、描繪與真實(shí)世界相應(yīng)的基本類(lèi)和協(xié)作關(guān)系。設(shè)計(jì)階段的模型是分析模型的擴(kuò)充,為實(shí)現(xiàn)階段作指導(dǎo)性的、技術(shù)上的解決方案。實(shí)現(xiàn)階段的模型是真正的源代碼,編譯后就變成了程序。最后的配置模型則是在物理架構(gòu)上解釋系統(tǒng)是如何展開(kāi)的。UML盡可能地結(jié)合了世界范圍內(nèi)面向?qū)ο箜?xiàng)目的成功經(jīng)驗(yàn),因而它的價(jià)值在于它體現(xiàn)了世界上面向?qū)ο蠓椒▽?shí)踐的最好經(jīng)驗(yàn),并以建模的形式將它們打包,以適應(yīng)開(kāi)發(fā)大型復(fù)雜系統(tǒng)的要求。但需要說(shuō)明的是,UML作為一種建模語(yǔ)言,目的是為不同領(lǐng)域的人們提供統(tǒng)一的交流標(biāo)準(zhǔn),其本身并不能保證系統(tǒng)的質(zhì)量。使用UML建模,必須依照某種
20、方法或過(guò)程進(jìn)行。在眾多的軟件設(shè)計(jì)和實(shí)現(xiàn)的經(jīng)驗(yàn)中,最突出的有兩條,一是注重系統(tǒng)體系結(jié)構(gòu)的開(kāi)發(fā),一是注重過(guò)程的迭代和遞增性。盡管UML本身沒(méi)有定義任何過(guò)程,但UML對(duì)任何使用它的方法或過(guò)程提出的要求是:支持用例驅(qū)動(dòng)、以體系結(jié)構(gòu)為中心以及遞增和迭代地開(kāi)發(fā)。三Rational統(tǒng)一過(guò)程RUP如上所述,UML提供了為系統(tǒng)進(jìn)行面向?qū)ο蠼5臋C(jī)制,但沒(méi)有指定應(yīng)用UML的過(guò)程和方法。UML的設(shè)計(jì)目標(biāo)之一是在盡可能多的領(lǐng)域內(nèi)得到廣泛的應(yīng)用,但要想成功使用UML,科學(xué)的過(guò)程是必要的。合理的過(guò)程能夠有效測(cè)度工作進(jìn)程,控制和改進(jìn)工作效率。簡(jiǎn)單地說(shuō),軟件工程過(guò)程描述做什么、怎么做、什么時(shí)候做以及為什么要做,描述了一組以某
21、種順序完成的活動(dòng)。過(guò)程的結(jié)果是一組有關(guān)系統(tǒng)的文檔,例如模型和其它一些描述,以及對(duì)最初問(wèn)題的解決方案。過(guò)程描述的一個(gè)重要部分是定義如何使用人力、及其、工具和信息等資源的一些規(guī)則來(lái)完成某個(gè)確定的目標(biāo),為用戶(hù)的問(wèn)題提供解決方案。目前比較流行的有幾種主要的過(guò)程,包括Rational的統(tǒng)一過(guò)程、OPEN過(guò)程和面向?qū)ο筌浖^(guò)程(OOSP)。其中RUP是由Booch等方法學(xué)家以Rational的Objectory為核心提出的,因此在這個(gè)過(guò)程中使用UML是很自然的。下面主要對(duì)RUP進(jìn)行簡(jiǎn)單介紹。RUP是Ratinal公司開(kāi)發(fā)的過(guò)程產(chǎn)品,是軟件工程化的過(guò)程。RUP提供了在開(kāi)發(fā)機(jī)構(gòu)中分派任務(wù)和責(zé)任的紀(jì)律化方法。它
22、的目標(biāo)是在可預(yù)見(jiàn)的日程和預(yù)算的前提下,確保滿足最終用戶(hù)需求的高質(zhì)量產(chǎn)品。1軟件開(kāi)發(fā)的六大經(jīng)驗(yàn)RUP反映了現(xiàn)代軟件開(kāi)發(fā)過(guò)程中的最佳實(shí)踐經(jīng)驗(yàn),使用RUP作為指南,部署這些最佳實(shí)踐為開(kāi)發(fā)隊(duì)伍提供了大量的關(guān)鍵優(yōu)勢(shì)。目前軟件開(kāi)發(fā)實(shí)踐中得到的六個(gè)最佳經(jīng)驗(yàn)是: 迭代的軟件開(kāi)發(fā) 需求管理 使用基于構(gòu)件的體系結(jié)構(gòu) 可視化軟件建模 驗(yàn)證軟件質(zhì)量 控制軟件的變更Rational統(tǒng)一過(guò)程的核心是為軟件開(kāi)發(fā)團(tuán)隊(duì)提供指南、文檔模板和工具,以使整個(gè)團(tuán)隊(duì)能夠最有效地利用這些最佳的軟件開(kāi)發(fā)經(jīng)驗(yàn):(1)迭代的軟件開(kāi)發(fā)當(dāng)今的軟件系統(tǒng)十分復(fù)雜,很難按照首先定義整個(gè)問(wèn)題、設(shè)計(jì)整個(gè)系統(tǒng)、構(gòu)建軟件、最后測(cè)試產(chǎn)品的順序線性進(jìn)行。而是需要一種
23、迭代的方法,通過(guò)不斷地細(xì)化來(lái)增進(jìn)對(duì)問(wèn)題的理解,在多個(gè)迭代的基礎(chǔ)上遞增地得到一個(gè)有效的解決方案。RUP支持迭代開(kāi)發(fā),在生命周期的每個(gè)階段都注重風(fēng)險(xiǎn)最高的問(wèn)題,顯著地降低項(xiàng)目的風(fēng)險(xiǎn)系數(shù)。這種迭代的方法通過(guò)可見(jiàn)的進(jìn)展情況、可執(zhí)行版本來(lái)促進(jìn)最終用戶(hù)的參與和反饋,從而有助于降低開(kāi)發(fā)過(guò)程中的風(fēng)險(xiǎn)。而且,因?yàn)槊總€(gè)迭代結(jié)束時(shí)都提交一個(gè)可執(zhí)行的系統(tǒng)版本,使開(kāi)發(fā)團(tuán)隊(duì)能夠始終將注意力放在產(chǎn)品上,經(jīng)常性的階段檢查也確保項(xiàng)目按計(jì)劃進(jìn)行。迭代方法還很容易容納需求、特色或規(guī)劃上的改變。(2)需求管理RUP描述了如何啟發(fā)、組織所需要的功能和約束,以及如何為它們建立文檔,如何跟蹤和建檔折衷方案和決策,并且易于表達(dá)商業(yè)需求和交流
24、。過(guò)程所規(guī)定的用例和場(chǎng)景已經(jīng)被證明是表達(dá)功能性需求以及保證其驅(qū)動(dòng)軟件的設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試,使最終系統(tǒng)更充分地滿足用戶(hù)需要的最佳方法。它們提供了貫穿整個(gè)開(kāi)發(fā)和所提交系統(tǒng)的一致且可跟蹤的線索。(3)使用基于構(gòu)件的體系結(jié)構(gòu)RUP側(cè)重在利用資源進(jìn)行規(guī)模開(kāi)發(fā)之前,注重體系結(jié)構(gòu)早期的開(kāi)發(fā)和基線。它描述了如何設(shè)計(jì)一個(gè)能適應(yīng)變化、直觀、有利于系統(tǒng)復(fù)用的靈活的體系結(jié)構(gòu)。RUP支持基于構(gòu)件的軟件開(kāi)發(fā)。構(gòu)件是完成一個(gè)明確功能的模塊或子系統(tǒng)。RUP提供了一個(gè)系統(tǒng)的方法用新的和已有的構(gòu)件定義體系結(jié)構(gòu)。(4)為軟件建立可視化模型統(tǒng)一過(guò)程告訴我們?nèi)绾慰梢暬貫檐浖R员磉_(dá)體系結(jié)構(gòu)和構(gòu)件的結(jié)構(gòu)和行為。這樣,就可以隱藏細(xì)節(jié),使
25、用圖形化的基本模塊來(lái)寫(xiě)代碼。使用抽象可視化有助于進(jìn)行不同方面的溝通,顯示出系統(tǒng)元素是如何組織在一起的;保證各部件與代碼一致;維護(hù)設(shè)計(jì)和實(shí)現(xiàn)的一致性;促進(jìn)無(wú)二義性的交流。UML正是成功進(jìn)行可視化建模的基礎(chǔ)。(5)驗(yàn)證軟件質(zhì)量軟件性能和可靠性的低下是影響軟件使用的最重要的因素。因此應(yīng)該根據(jù)基于可靠性、功能、應(yīng)用性能和系統(tǒng)性能的需求對(duì)軟件的質(zhì)量進(jìn)行評(píng)估。RUP可以幫助進(jìn)行這些類(lèi)型的規(guī)劃、設(shè)計(jì)、實(shí)現(xiàn)、執(zhí)行和評(píng)估。質(zhì)量評(píng)估嵌入在整個(gè)過(guò)程的每個(gè)活動(dòng)中,讓所有的人員都參與,使用目標(biāo)試題和準(zhǔn)則,而不再只是事后工作,也不由單獨(dú)的小群體各自完成。(6)控制對(duì)軟件的變更對(duì)變更進(jìn)行管理的能力確保每個(gè)變化都是可接受的,
26、而在變更不可避免的環(huán)境中,跟蹤變更的能力是最根本的。統(tǒng)一過(guò)程描述了如何控制、跟蹤和監(jiān)視變更,從而保證迭代開(kāi)發(fā)過(guò)程的成功。它也指導(dǎo)人們?nèi)绾瓮ㄟ^(guò)控制所有對(duì)軟件制品(如模型、代碼、文檔等)的變更,從而隔離來(lái)自其它工作空間的變更,以此為每個(gè)開(kāi)發(fā)人員建立安全的工作空間。它還描述了如何自動(dòng)化集成和建立管理,從而使一個(gè)團(tuán)隊(duì)的工作團(tuán)結(jié)一致。2過(guò)程的二維空間統(tǒng)一過(guò)程可以在二維空間中描述,如圖1所示。圖1 過(guò)程在二維空間中的組織 水平軸代表時(shí)間,顯示了過(guò)程動(dòng)態(tài)的一面,是用周期(cycle)、階段(phase)、迭代(iteration)、里程碑(milestone)等術(shù)語(yǔ)來(lái)描述的。 垂直軸代表過(guò)程靜態(tài)的一面:是用
27、活動(dòng)(activity)、產(chǎn)品(artifact)、工人(worker)和工作流(workflow)描述的。3過(guò)程和迭代過(guò)程隨著時(shí)間動(dòng)態(tài)組織,把軟件的生存期劃分為一些周期,每個(gè)周期都影響新一代產(chǎn)品。RUP把一個(gè)開(kāi)發(fā)周期劃分為四個(gè)連續(xù)的階段: 初始階段(Inception phase) 細(xì)化階段(Elaboration phase) 構(gòu)造階段(Construction phase) 交付階段(Transition phase)每個(gè)階段的結(jié)果都是一個(gè)里程碑。里程碑是一個(gè)時(shí)間點(diǎn),在這個(gè)時(shí)間點(diǎn)上必須做出重要的決策,達(dá)到一些關(guān)鍵的目標(biāo)。每個(gè)階段都有明確的目標(biāo)。(1)初始階段初始階段的目標(biāo)是,為系統(tǒng)建立商
28、業(yè)用例,確定項(xiàng)目的邊界。為了達(dá)到這些目的,必須找出所有與系統(tǒng)交互的外部實(shí)體,并在較高的層次定義這些交互的特性。包括識(shí)別所有用例并描述一些有意義的用例。商業(yè)用例包括成功的準(zhǔn)則、風(fēng)險(xiǎn)評(píng)估、對(duì)所需資源的估計(jì)以及顯示主要里程碑日期的階段規(guī)劃。初始階段的主要成果是: 前景文檔:對(duì)核心項(xiàng)目要求、關(guān)鍵性質(zhì)、主要限制的一般性的前景說(shuō)明; 初始的用例模型(完成1020) 初始的項(xiàng)目術(shù)語(yǔ)表 初始的商業(yè)用例,包括商業(yè)環(huán)境、一驗(yàn)收規(guī)范以及成本預(yù)測(cè) 初始的風(fēng)險(xiǎn)評(píng)估 項(xiàng)目規(guī)劃,其中明確階段和迭代 商業(yè)模型,根據(jù)需要可選 一個(gè)或多個(gè)原型初始階段結(jié)束時(shí)是第一個(gè)里程碑:生命周期目標(biāo)里程碑。對(duì)初始階段進(jìn)行評(píng)估的準(zhǔn)則是: 風(fēng)險(xiǎn)承擔(dān)
29、人對(duì)項(xiàng)目范圍定義和成本/進(jìn)度估計(jì)達(dá)成共識(shí) 需求由主要的用例無(wú)二義地表達(dá)出來(lái) 成本/進(jìn)度估計(jì)、優(yōu)先級(jí)、風(fēng)險(xiǎn)和開(kāi)發(fā)過(guò)程的可信度 開(kāi)發(fā)出來(lái)的體系結(jié)構(gòu)原型的深度和廣度 實(shí)際支出與計(jì)劃支出的比較如果項(xiàng)目沒(méi)有通過(guò)這個(gè)里程碑,就應(yīng)該考慮取消或者重新思考。(2)細(xì)化階段細(xì)化階段的目標(biāo)是分析問(wèn)題領(lǐng)域,建立一個(gè)健全的體系結(jié)構(gòu)基礎(chǔ),編制項(xiàng)目規(guī)劃,淘汰項(xiàng)目中風(fēng)險(xiǎn)最高的元素。為了達(dá)到這些目標(biāo),必須對(duì)系統(tǒng)有一個(gè)廣泛的認(rèn)識(shí)。體系結(jié)構(gòu)的決策必須建立在對(duì)整個(gè)系統(tǒng)的有一個(gè)理解的基礎(chǔ)上,包括系統(tǒng)的范圍、主要功能和非功能需求等。細(xì)化階段是四個(gè)階段中最關(guān)鍵的。在這個(gè)階段的最后,就認(rèn)為已經(jīng)完成最困難的工程,可以進(jìn)行項(xiàng)目的結(jié)算:決定是否把
30、它提交到構(gòu)造和交付階段。對(duì)大多數(shù)項(xiàng)目來(lái)說(shuō),這也相當(dāng)于從低風(fēng)險(xiǎn)的運(yùn)作到高成本、高風(fēng)險(xiǎn)運(yùn)作的過(guò)渡。盡管過(guò)程必須能夠適應(yīng)不斷的變化,但是細(xì)化階段的活動(dòng)必須保證體系結(jié)構(gòu)、需求和規(guī)劃有足夠的穩(wěn)定性,充分降低風(fēng)險(xiǎn),從而才能夠預(yù)算出整個(gè)開(kāi)發(fā)過(guò)程的成本和進(jìn)度。在細(xì)化階段,根據(jù)項(xiàng)目的范圍、大小和創(chuàng)新性,可能在一個(gè)或多個(gè)迭代中,建立一個(gè)可執(zhí)行的體系結(jié)構(gòu)。這一工作至少要解決初始階段中找出的最重要的用例,而它們通常也揭示了項(xiàng)目的主要技術(shù)風(fēng)險(xiǎn)。雖然目標(biāo)是為產(chǎn)品質(zhì)量組件建立一個(gè)不斷演化的原型,但也不排除開(kāi)發(fā)一個(gè)或多個(gè)拋棄型的原型,來(lái)降低某些風(fēng)險(xiǎn),或給投資人、客戶(hù)或最終用戶(hù)演示。細(xì)化階段的成果是: 用例模型(至少完成80)
31、:識(shí)別出了所有的用例和角色,以及大多數(shù)用例的描述 一些增加的需求,包括非功能性需求以及任何與特定用例無(wú)關(guān)的需求 軟件體系結(jié)構(gòu)描述 可執(zhí)行的體系結(jié)構(gòu)原型 修訂后的風(fēng)險(xiǎn)表和商業(yè)用例 整個(gè)項(xiàng)目的開(kāi)發(fā)計(jì)劃,包括粗略項(xiàng)目規(guī)劃,顯示迭代過(guò)程以及相應(yīng)的評(píng)估準(zhǔn)則 更新的開(kāi)發(fā)用例,指定要使用的過(guò)程 初步的用戶(hù)手冊(cè)(可選)細(xì)化階段結(jié)束時(shí)是第二個(gè)重要的里程碑:生命周期體系結(jié)構(gòu)里程碑。此時(shí)檢查系統(tǒng)詳細(xì)的目標(biāo)和范圍,體系結(jié)構(gòu)的選擇以及對(duì)主要風(fēng)險(xiǎn)的解決。細(xì)化階段的評(píng)估準(zhǔn)則包括對(duì)以下問(wèn)題的回答: 產(chǎn)品的前景是否穩(wěn)定? 體系結(jié)構(gòu)是否穩(wěn)定? 可執(zhí)行的演示是否強(qiáng)調(diào)了主要的風(fēng)險(xiǎn)元素,并且已經(jīng)解決? 構(gòu)造階段的規(guī)劃是否已經(jīng)足夠詳細(xì)和
32、準(zhǔn)確,是否有可信的評(píng)估支持? 如果用當(dāng)前的規(guī)劃來(lái)開(kāi)發(fā)整個(gè)系統(tǒng),并且使用當(dāng)前的體系結(jié)構(gòu)的話,是否所有的風(fēng)險(xiǎn)承擔(dān)人對(duì)當(dāng)前的前景都達(dá)成一致? 是否實(shí)際的資源支出與計(jì)劃的支出都是可接受的?如果項(xiàng)目不能通過(guò)這個(gè)里程碑,則將取消或重新考慮。(3)構(gòu)造階段在構(gòu)造階段,將開(kāi)發(fā)所有剩余的構(gòu)件和應(yīng)用部件,對(duì)它們進(jìn)行測(cè)試,并集成到產(chǎn)品中。從某種意義上說(shuō),構(gòu)造階段是一個(gè)制造過(guò)程,重點(diǎn)是管理資源、控制運(yùn)作、優(yōu)化成本、進(jìn)度和質(zhì)量。從這個(gè)意義來(lái)說(shuō),管理層是從初始和細(xì)化階段對(duì)智力產(chǎn)品的開(kāi)發(fā)轉(zhuǎn)向構(gòu)造和交付階段對(duì)可應(yīng)用產(chǎn)品的開(kāi)發(fā)。對(duì)于許多大規(guī)模的項(xiàng)目可以分散地進(jìn)行并行增量地構(gòu)造。這些并行活動(dòng)可以顯著加速可應(yīng)用版本的開(kāi)發(fā)速度,但也
33、增加了資源管理和工作流同步的復(fù)雜性。健壯的體系結(jié)構(gòu)和易于理解的規(guī)劃是息息相關(guān)的。換言之,體系結(jié)構(gòu)最重要的一個(gè)質(zhì)量因素就是它是否容易構(gòu)造,這也是為什么在細(xì)化階段強(qiáng)調(diào)平衡開(kāi)發(fā)體系結(jié)構(gòu)和規(guī)劃的原因之一。構(gòu)造階段的產(chǎn)品是一個(gè)可以立即提交給最終用戶(hù)使用的產(chǎn)品,它至少應(yīng)該包括: 在特定平臺(tái)上集成的軟件產(chǎn)品 用戶(hù)手冊(cè) 對(duì)當(dāng)前版本的描述構(gòu)造階段結(jié)束是第三個(gè)里程碑:初始運(yùn)行能力。此時(shí)要決定軟件、節(jié)點(diǎn)和用戶(hù)是否已經(jīng)準(zhǔn)備好運(yùn)行,并且項(xiàng)目沒(méi)有出現(xiàn)任何高風(fēng)險(xiǎn)問(wèn)題。這個(gè)版本通常叫做beta版。構(gòu)造階段的評(píng)估準(zhǔn)則包括對(duì)以下問(wèn)題的回答: 這個(gè)產(chǎn)品版本是否足夠穩(wěn)定和成熟,可以在用戶(hù)群中發(fā)布嗎? 是否所有的風(fēng)險(xiǎn)承擔(dān)人都已經(jīng)準(zhǔn)備好
34、向用戶(hù)提交? 實(shí)際的資源支出和計(jì)劃的支出的比值是否仍然可接受?如果項(xiàng)目沒(méi)有達(dá)到這個(gè)里程碑,必須推遲發(fā)布。(4)交付階段交付階段的目的是把軟件產(chǎn)品交付給用戶(hù)群。一旦產(chǎn)品提交給最終用戶(hù),通常會(huì)產(chǎn)生新的要求,如繼續(xù)開(kāi)發(fā)新版本,修正一些問(wèn)題,或者完成某些被推遲的功能部件。當(dāng)基線足夠成熟,能夠向最終用戶(hù)領(lǐng)域發(fā)布時(shí),就進(jìn)入了交付階段。這通常需要系統(tǒng)的一些可以使用的子集已經(jīng)達(dá)到一定的質(zhì)量要求,并且有用戶(hù)文檔,從而使交付產(chǎn)生積極的效果。包括: beta測(cè)試確認(rèn)新系統(tǒng)達(dá)到用戶(hù)的預(yù)期 與被取代的舊系統(tǒng)并行操作 功能性數(shù)據(jù)庫(kù)的轉(zhuǎn)換 用戶(hù)和維護(hù)人員培訓(xùn) 向市場(chǎng)、分銷(xiāo)商和銷(xiāo)售人員進(jìn)行新產(chǎn)品的展示。交付階段側(cè)重向用戶(hù)提交
35、軟件的活動(dòng),這個(gè)階段包括幾個(gè)典型的迭代,如beta版本,通用版本以及對(duì)用戶(hù)的反饋?zhàn)鞒鲰憫?yīng)等,都需要可觀的精力。但是,在生命周期的這一點(diǎn)上,用戶(hù)反饋可能主要限于產(chǎn)品調(diào)整、配置、安裝和可用性問(wèn)題上。交付階段的主要目標(biāo)包括: 使用戶(hù)可以自我?guī)椭?使風(fēng)險(xiǎn)承擔(dān)人合作,使展開(kāi)基線完整,并與前景評(píng)估準(zhǔn)則一致這一階段根據(jù)產(chǎn)品的不同,可以非常簡(jiǎn)單,也可以極其復(fù)雜。交付階段的終點(diǎn)是第四個(gè)重要的項(xiàng)目里程碑:產(chǎn)品發(fā)布里程碑。在這個(gè)點(diǎn)上,要確定是否已經(jīng)達(dá)到目標(biāo),能否開(kāi)始另一個(gè)開(kāi)發(fā)周期。交付階段主要的評(píng)估準(zhǔn)則包括對(duì)以下問(wèn)題的回答:·用戶(hù)是否滿意?·是否能夠接受實(shí)際的和計(jì)劃的資源支出的比?(5)迭代RU
36、P中的每個(gè)階段都可以進(jìn)一步分解為迭代。迭代是一個(gè)完整的開(kāi)發(fā)循環(huán),它的結(jié)果是可執(zhí)行產(chǎn)品的一個(gè)版本,是正在開(kāi)發(fā)的最終產(chǎn)品的一個(gè)子集,從一個(gè)迭代到另一個(gè)迭代,不斷遞增地成長(zhǎng),直到最后成為最終系統(tǒng)。相對(duì)于傳統(tǒng)的瀑布過(guò)程,迭代過(guò)程具有以下優(yōu)點(diǎn): 在早期就降低風(fēng)險(xiǎn) 對(duì)變更易于進(jìn)行控制 更高的可復(fù)用性 項(xiàng)目團(tuán)隊(duì)在開(kāi)發(fā)過(guò)程中可以學(xué)習(xí) 更好的整體質(zhì)量4過(guò)程的靜態(tài)結(jié)構(gòu)軟件工程過(guò)程定義誰(shuí)在做什么、怎么做以及什么時(shí)候做,RUP用四個(gè)主要的建模元素表達(dá):·工人(Workers)誰(shuí)·活動(dòng)(Activities)怎么做·產(chǎn)品(Artifacts)做什么·工作流(Workflows)什
37、么時(shí)候做(1)活動(dòng)、產(chǎn)品和工人 工人:工人定義了個(gè)體或一個(gè)作為團(tuán)隊(duì)工作小組的行為和責(zé)任。工人是個(gè)體在項(xiàng)目中的一個(gè)角色,一個(gè)人可以擔(dān)任多個(gè)角色。分配給工人的責(zé)任包括完成某一系列活動(dòng)以及擁有某一組產(chǎn)品。 活動(dòng):某個(gè)工人的活動(dòng)是承擔(dān)這一角色的人必須完成的一組工作?;顒?dòng)有明確的意圖,通常用創(chuàng)建或更新某些產(chǎn)品來(lái)表示,這些產(chǎn)品包括模型、類(lèi)、規(guī)劃等。每個(gè)活動(dòng)都分配給一個(gè)特定的工人。活動(dòng)的粒度通常從幾個(gè)小時(shí)到幾天不等,通過(guò)涉及一個(gè)工人,影響一個(gè)或少量產(chǎn)品?;顒?dòng)應(yīng)該可以作為規(guī)劃和進(jìn)展的元素,如果太小,它就被忽略;如果太大,就不得不用活動(dòng)的一部分來(lái)表示進(jìn)展。例如規(guī)劃一個(gè)迭代是工人項(xiàng)目經(jīng)理的活動(dòng),找出用例和角色是工
38、人系統(tǒng)分析員的活動(dòng),執(zhí)行性能測(cè)試是工人性能測(cè)試員的活動(dòng),等等。 產(chǎn)品。產(chǎn)品是一個(gè)過(guò)程所生產(chǎn)、修改或使用的一段信息。產(chǎn)品是項(xiàng)目切實(shí)的成果,是項(xiàng)目為生產(chǎn)出最終的產(chǎn)品而制造或使用的東西。產(chǎn)品是工人為了完成一個(gè)活動(dòng)而用的輸入,也是活動(dòng)的輸出或成果。用面向?qū)ο笤O(shè)計(jì)的術(shù)語(yǔ)來(lái)說(shuō),活動(dòng)是在活動(dòng)對(duì)象上的操作,產(chǎn)品則是活動(dòng)的參數(shù)。產(chǎn)品可以具有不同的形式,如·模型,如用例模型或設(shè)計(jì)模型·模型元素,如類(lèi),用例或子系統(tǒng)·文檔,如商業(yè)用例或軟件體系結(jié)構(gòu)文檔·源代碼·可執(zhí)行程序(2)工作流僅僅把所有的工人、活動(dòng)和產(chǎn)品都列舉出來(lái)還不能夠組成過(guò)程,另外還需要一種有效的方式,把產(chǎn)
39、生有價(jià)值結(jié)果的活動(dòng)序列描述出來(lái),并顯示工人之間的交互。工作流是一個(gè)產(chǎn)生具有可觀察的結(jié)果活動(dòng)序列。UML中,可以用一個(gè)序列圖、協(xié)作圖或活動(dòng)圖來(lái)表示工作流。需要注意的是,工作流中不能表示出活動(dòng)之間所有的相關(guān)性,通常,兩個(gè)活動(dòng)之間的相關(guān)性會(huì)比圖中顯示出來(lái)的更緊密,尤其是當(dāng)它們涉及同一個(gè)工人或個(gè)人時(shí)。因此不能把工作流解釋成由人機(jī)械執(zhí)行的程序。下面介紹開(kāi)發(fā)過(guò)程中最基本的工作流,稱(chēng)為核心工作流。5核心工作流(Core Workflows)RUP中有九種核心過(guò)程工作流,把工人和活動(dòng)劃分為不同的邏輯組合。核心過(guò)程工作流被劃分為六個(gè)核心“工程”工作流: 商業(yè)建模工作流 需求工作流 分析和設(shè)計(jì)工作流 實(shí)現(xiàn)工作流
40、測(cè)試工作流 展開(kāi)工作流三個(gè)核心“支持”工作流: 項(xiàng)目管理工作流 配置和變更管理工作流 環(huán)境工作流這里的六個(gè)核心工程工作流不同于傳統(tǒng)瀑布過(guò)程中的幾個(gè)順序階段。迭代過(guò)程的階段是不同的,在整個(gè)生命周期中,這些工作流被重復(fù)訪問(wèn)。在一個(gè)項(xiàng)目實(shí)際的完整的工作流中,這九個(gè)核心工作流是相互交錯(cuò)的,并且在每個(gè)迭代中都以不同的重點(diǎn)和強(qiáng)度重復(fù)。(1)商業(yè)建模大多數(shù)商業(yè)工程項(xiàng)目的主要問(wèn)題在于軟件工程和商業(yè)工程這兩個(gè)領(lǐng)域無(wú)法進(jìn)行交流,導(dǎo)致商業(yè)工程的輸出無(wú)法正確地用作軟件開(kāi)發(fā)的輸入,反之亦然。RUP通過(guò)為這兩個(gè)領(lǐng)域提供一個(gè)共同的語(yǔ)言和過(guò)程,同時(shí)說(shuō)明如何創(chuàng)建和維護(hù)商業(yè)和軟件模型之間直接的可跟蹤性來(lái)解決這個(gè)問(wèn)題。在商業(yè)建模中
41、,我們用所有的商業(yè)用例來(lái)為商業(yè)過(guò)程建立文檔,這確保所有的風(fēng)險(xiǎn)承擔(dān)人可以對(duì)機(jī)構(gòu)到底需要支持什么樣的商業(yè)過(guò)程達(dá)成共識(shí)。對(duì)商業(yè)用例的分析是為了理解商業(yè)到底是如何支持商業(yè)過(guò)程的,這些是用商業(yè)對(duì)象模型來(lái)建檔的。許多項(xiàng)目并不進(jìn)行商業(yè)建模。(2)需求需求工作流的目標(biāo)是描述系統(tǒng)應(yīng)該做什么,并且允許開(kāi)發(fā)人員和客戶(hù)就這個(gè)描述達(dá)成共識(shí)。為了達(dá)到這個(gè)目的,我們提取、組織、文檔化需要的功能和約束,跟蹤并記錄所做的折衷和決策。(3)分析和設(shè)計(jì)分析和設(shè)計(jì)工作流的目標(biāo)是說(shuō)明在實(shí)現(xiàn)階段是如何實(shí)現(xiàn)系統(tǒng)的。建立的系統(tǒng)要: 在特定環(huán)境下,完成用例描述中指定的任務(wù)和功能 滿足所有需求 其構(gòu)造確保它是健壯的(如果功能需求發(fā)生變化時(shí),易于
42、更改)。分析與設(shè)計(jì)的結(jié)果是設(shè)計(jì)模型以及一個(gè)可選的分析模型。設(shè)計(jì)模型是源代碼的一個(gè)抽象,也就是說(shuō),設(shè)計(jì)模型的作用是一個(gè)“藍(lán)圖”,描述了如何對(duì)源代碼進(jìn)行組建和編制。設(shè)計(jì)模型由設(shè)計(jì)類(lèi)和一些描述組成,設(shè)計(jì)類(lèi)被組織成具有良好接口的設(shè)計(jì)包和設(shè)計(jì)子系統(tǒng),而描述則體現(xiàn)了類(lèi)的對(duì)象如何協(xié)同工作實(shí)現(xiàn)用例的功能。設(shè)計(jì)活動(dòng)以體系結(jié)構(gòu)為中心,構(gòu)建和確認(rèn)這個(gè)體系結(jié)構(gòu)是早期迭代最主要的重點(diǎn)。體系結(jié)構(gòu)用結(jié)構(gòu)視圖來(lái)表示,這些視圖表達(dá)了主要的結(jié)構(gòu)設(shè)計(jì)決策。從本質(zhì)上,體系結(jié)構(gòu)視圖是整個(gè)設(shè)計(jì)的抽象或簡(jiǎn)化,丟掉細(xì)節(jié),使重要的特征明顯地表現(xiàn)出來(lái)。體系結(jié)構(gòu)對(duì)于開(kāi)發(fā)好的設(shè)計(jì)模型以及對(duì)于提高系統(tǒng)開(kāi)發(fā)過(guò)程中任何模型的質(zhì)量而言,都是重要的載體。(4
43、)實(shí)現(xiàn)實(shí)現(xiàn)的目的是: 通過(guò)分層次地組織實(shí)現(xiàn)子系統(tǒng)來(lái)定義代碼的結(jié)構(gòu) 用構(gòu)件(源文件、二進(jìn)制文件、可執(zhí)行文件等)的形式來(lái)實(shí)現(xiàn)類(lèi) 對(duì)所開(kāi)發(fā)的構(gòu)件進(jìn)行單元進(jìn)行測(cè)試 把每個(gè)實(shí)現(xiàn)人員(團(tuán)隊(duì))的工作成果集成到一個(gè)可執(zhí)行的系統(tǒng)中系統(tǒng)是通過(guò)實(shí)現(xiàn)構(gòu)件實(shí)現(xiàn)的。RUP描述了如何重用已有構(gòu)件,或?qū)崿F(xiàn)新的良定義責(zé)任的構(gòu)件,使系統(tǒng)更易于維護(hù),提高可重用性。構(gòu)件被構(gòu)造成實(shí)施子系統(tǒng)。子系統(tǒng)以帶有附加結(jié)構(gòu)或管理信息的目錄形式表示。(5)測(cè)試測(cè)試的目的是: 驗(yàn)證對(duì)象之間的交互 驗(yàn)證是否恰當(dāng)?shù)丶闪塑浖乃袠?gòu)件 驗(yàn)證是否所有需求被正確實(shí)現(xiàn) 在發(fā)布軟件之前,找到錯(cuò)誤并改正RUP是用迭代的方法,意味著在整個(gè)項(xiàng)目中都在進(jìn)行測(cè)試,從而允許
44、盡可能早地發(fā)現(xiàn)錯(cuò)誤,從根本上降低修改錯(cuò)誤的成本。測(cè)試分別從可靠性、功能性、應(yīng)用性能和系統(tǒng)性能三個(gè)方面進(jìn)行。對(duì)每個(gè)方面都描述了如何經(jīng)歷規(guī)劃、設(shè)計(jì)、實(shí)現(xiàn)、執(zhí)行和評(píng)估的測(cè)試生命周期。另外,描述了何時(shí)及如何引入測(cè)試自動(dòng)化的策略。測(cè)試自動(dòng)化對(duì)迭代方法尤其重要,在每個(gè)迭代結(jié)束和產(chǎn)品新版本開(kāi)始時(shí)都要進(jìn)行回歸測(cè)試。(6)發(fā)布、展開(kāi)發(fā)布工作流的目的是為了成功地開(kāi)發(fā)出產(chǎn)品版本,并把軟件提交給它的最終用戶(hù)。包括一系列的活動(dòng): 制作軟件的外部版本 軟件打包 分發(fā)軟件 為用戶(hù)提供幫助和支持在許多情況下還包括: 規(guī)劃和實(shí)施beta測(cè)試 移植現(xiàn)有軟件或數(shù)據(jù) 正式接受盡管發(fā)布活動(dòng)大部分集中在交付階段,但許多活動(dòng)還需要在較早階
45、段就進(jìn)行準(zhǔn)備。(7)項(xiàng)目管理軟件項(xiàng)目管理是平衡競(jìng)爭(zhēng)目標(biāo)、管理風(fēng)險(xiǎn)和戰(zhàn)勝困難、成功地提交一個(gè)滿足客戶(hù)和用戶(hù)需要的產(chǎn)品的藝術(shù)。這一工作流側(cè)重于一個(gè)迭代開(kāi)發(fā)過(guò)程的特定內(nèi)容,目標(biāo)是: 為管理軟件密集型項(xiàng)目提供框架 為項(xiàng)目的規(guī)劃、人員管理、運(yùn)行和監(jiān)督提供實(shí)用的指南 提供一個(gè)管理風(fēng)險(xiǎn)的框架這個(gè)工作流并不是成功的秘訣,它只是提供了一個(gè)能夠有效提高項(xiàng)目管理質(zhì)量的項(xiàng)目管理方法。(8)配置和變更管理在配置和變更管理這個(gè)工作流中,描述了如何控制由共同完成同一項(xiàng)目的許多人制造出來(lái)的大量產(chǎn)品。控制有助于避免混亂,保證各個(gè)產(chǎn)品不會(huì)因?yàn)橐韵聠?wèn)題產(chǎn)生沖突:·同時(shí)更新當(dāng)一個(gè)或多個(gè)工人單獨(dú)地做同一個(gè)產(chǎn)品時(shí),最后一個(gè)人可
46、能會(huì)破壞前面人的工作·有限的通知當(dāng)多個(gè)人共享的幾個(gè)產(chǎn)品中的錯(cuò)誤被更正時(shí),可能有些人沒(méi)有得到有關(guān)修改的通知·多個(gè)版本大多數(shù)大程序都是以版本不斷進(jìn)化的形式開(kāi)發(fā)的。一個(gè)版本可能提供給用戶(hù)使用,另一個(gè)用來(lái)測(cè)試,而第三個(gè)用來(lái)繼續(xù)開(kāi)發(fā)。如果其中任何一版中發(fā)現(xiàn)問(wèn)題,就需要把修改的信息傳播給其它版本。在這個(gè)工作流中,將盡可能對(duì)重復(fù)工作、無(wú)效的改變進(jìn)行控制和監(jiān)視,以避免由此產(chǎn)生的混亂。它主要提供一些管理多個(gè)軟件版本的指南、跟蹤在繼續(xù)開(kāi)發(fā)版本、保證按照用戶(hù)定義的規(guī)格說(shuō)明進(jìn)行開(kāi)發(fā)、強(qiáng)制采取節(jié)點(diǎn)專(zhuān)用開(kāi)發(fā)政策。它對(duì)如何并行開(kāi)發(fā)、在多節(jié)點(diǎn)上開(kāi)發(fā)以及使建造過(guò)程自動(dòng)化進(jìn)行了描述。這些在迭代開(kāi)發(fā)過(guò)程中尤其重
47、要。另外,該工作流還描述了如何進(jìn)行審核跟蹤,把誰(shuí)、什么時(shí)候、為什么對(duì)什么產(chǎn)品做的什么修改記錄下來(lái)。另外,它還包括變更需求管理,也就是如何報(bào)告和管理故障,以及如何使用故障數(shù)據(jù)來(lái)跟蹤進(jìn)展和發(fā)展傾向。(9)環(huán)境環(huán)境工作流的目的是為軟件開(kāi)發(fā)組織提供軟件開(kāi)發(fā)環(huán)境提供開(kāi)發(fā)團(tuán)隊(duì)需要的過(guò)程和工具支持。該工作流的重點(diǎn)是在項(xiàng)目環(huán)境中,配置過(guò)程的活動(dòng)。另外就是描述如何在一個(gè)機(jī)構(gòu)內(nèi)實(shí)現(xiàn)過(guò)程。環(huán)境工作流還包含一個(gè)開(kāi)發(fā)工具包,提供一些定制過(guò)程的指南、模板和工具。四在RUP指導(dǎo)下的UML建模如上所述,UML作為一種建模語(yǔ)言并沒(méi)有指定建模的步驟和方法,需要以一定的過(guò)程為指導(dǎo)進(jìn)行。使用UML的過(guò)程應(yīng)該是以架構(gòu)為中心、用例驅(qū)動(dòng)、支持迭代和遞增的開(kāi)發(fā)過(guò)程。RUP具備了使用UML的過(guò)程的特征,因而在RUP的指導(dǎo)下可以進(jìn)行有效的UML建模。1以體系結(jié)構(gòu)為中心體系結(jié)構(gòu)是系統(tǒng)的映射,它定義了系統(tǒng)的不同組成部分、它們之間的關(guān)系和交互、通信機(jī)制、以及如何修改系統(tǒng)組件、如
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)意廣告長(zhǎng)期合同范本
- 二手房自行購(gòu)買(mǎi)合同范本
- 買(mǎi)賣(mài)企業(yè)房產(chǎn)合同范例
- 農(nóng)民種地出租合同范本
- 包裝木箱供貨合同范本
- 北京政府采購(gòu)合同范本
- 出售轉(zhuǎn)讓凍干機(jī)合同范本
- 分?jǐn)傎M(fèi)用合同范本
- 企業(yè)生產(chǎn)訂單合同范本
- 分期購(gòu)車(chē)購(gòu)車(chē)合同范本
- 人教版四年級(jí)數(shù)學(xué)下冊(cè)《圖形的運(yùn)動(dòng)(二)》試題(含答案)
- 2024-2025學(xué)年五年級(jí)(下)信息科技教學(xué)計(jì)劃
- SH∕T 3097-2017 石油化工靜電接地設(shè)計(jì)規(guī)范
- 基礎(chǔ)構(gòu)成設(shè)計(jì)全套教學(xué)課件
- Python程序設(shè)計(jì)基礎(chǔ)PPT(本科)完整全套教學(xué)課件
- (全國(guó)通用)三甲人民醫(yī)院診斷證明書(shū)請(qǐng)假條模板(廣東佛山)
- 表面工程學(xué)課件-全
- 《XX醫(yī)院安寧療護(hù)建設(shè)實(shí)施方案》
- GB∕T 20674.1-2020 塑料管材和管件 聚乙烯系統(tǒng)熔接設(shè)備 第1部分:熱熔對(duì)接
- 泰州港過(guò)船港區(qū)35000噸級(jí)通用泊位工程設(shè)計(jì)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)
- 化工原理課程設(shè)計(jì)乙醇水精餾塔浮閥塔課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論