?? uml5.htm
字號(hào):
<html><head><meta http-equiv="Content-Type"content="text/html; charset=gb_2312-80"><meta name="GENERATOR" content="Microsoft FrontPage Express 2.0"><title>標(biāo)準(zhǔn)建模語(yǔ)言UML及其支持環(huán)境(五)</title></head><body bgcolor="#D2D2D2"><p align="center"><font color="#FF0000" size="5">標(biāo)準(zhǔn)建模語(yǔ)言UML及其支持環(huán)境(五)<br></font><br>北京航空航天大學(xué)軟件工程研究所</p><p><br>前4期的主要內(nèi)容包括:<br>一、標(biāo)準(zhǔn)建模語(yǔ)言UML概述<br>二、標(biāo)準(zhǔn)建模語(yǔ)言UML的靜態(tài)建模機(jī)制<br>三、標(biāo)準(zhǔn)建模語(yǔ)言UML的動(dòng)態(tài)建模機(jī)制<br>1. 消息<br>2. 狀態(tài)圖<br>3. 順序圖<br>4. 合作圖<br>(接上期)<br>5. 活動(dòng)圖(Activity Diagram)</p><p><br>活動(dòng)圖的應(yīng)用非常廣泛,它既可用來(lái)描述操作(類(lèi)的方法)的行為,也可以描述用例和對(duì)象內(nèi)部的工作過(guò)程?;顒?dòng)圖是由狀態(tài)圖變化而來(lái)的,它們各自用于不同的目的?;顒?dòng)圖依據(jù)對(duì)象狀態(tài)的變化來(lái)捕獲動(dòng)作(將要執(zhí)行的工作或活動(dòng))與動(dòng)作的結(jié)果。活動(dòng)圖中一個(gè)活動(dòng)結(jié)束后將立即進(jìn)入下一個(gè)活動(dòng)(在狀態(tài)圖中狀態(tài)的變遷可能需要事件的觸發(fā))。圖1給出了一個(gè)活動(dòng)圖的例子。</p><p align="center"><img src="../images/uml5-1.jpg" width="342"height="301"><br></p><p>活動(dòng)和轉(zhuǎn)移</p><p><br>一項(xiàng)操作可以描述為一系列相關(guān)的活動(dòng)。活動(dòng)僅有一個(gè)起始點(diǎn),但可以有多個(gè)結(jié)束點(diǎn)?;顒?dòng)間的轉(zhuǎn)移允許帶有g(shù)uard-condition、send-clause和action-expression,其語(yǔ)法與狀態(tài)圖中定義的相同。一個(gè)活動(dòng)可以順序地跟在另一個(gè)活動(dòng)之后,這是簡(jiǎn)單的順序關(guān)系。如果在活動(dòng)圖中使用一個(gè)菱形的判斷標(biāo)志,則可以表達(dá)條件關(guān)系(見(jiàn)圖1),判斷標(biāo)志可以有多個(gè)輸入和輸出轉(zhuǎn)移,但在活動(dòng)的運(yùn)作中僅觸發(fā)其中的一個(gè)輸出轉(zhuǎn)移。</p><p><br>活動(dòng)圖對(duì)表示并發(fā)行為也很有用。在活動(dòng)圖中,使用一個(gè)稱(chēng)為同步條的水平粗線(xiàn)可以將一條轉(zhuǎn)移分為多個(gè)并發(fā)執(zhí)行的分支,或?qū)⒍鄠€(gè)轉(zhuǎn)移合為一條轉(zhuǎn)移。此時(shí),只有輸入的轉(zhuǎn)移全部有效,同步條才會(huì)觸發(fā)轉(zhuǎn)移,進(jìn)而執(zhí)行后面的活動(dòng),如圖2所示。</p><p align="center"><img src="../images/uml5-2.jpg" width="334"height="311"></p><p><strong>泳道<br></strong>活動(dòng)圖告訴你發(fā)生了什么,但沒(méi)有告訴你該項(xiàng)活動(dòng)由誰(shuí)來(lái)完成。在程序設(shè)計(jì)中,這意味著活動(dòng)圖沒(méi)有描述出各個(gè)活動(dòng)由哪個(gè)類(lèi)來(lái)完成。泳道解決了這一問(wèn)題。它將活動(dòng)圖的邏輯描述與順序圖、合作圖的責(zé)任描述結(jié)合起來(lái)。如圖2所示,泳道用矩形框來(lái)表示,屬于某個(gè)泳道的活動(dòng)放在該矩形框內(nèi),將對(duì)象名放在矩形框的頂部,表示泳道中的活動(dòng)由該對(duì)象負(fù)責(zé)。<br><strong>對(duì)象<br></strong>在活動(dòng)圖中可以出現(xiàn)對(duì)象。對(duì)象可以作為活動(dòng)的輸入或輸出,對(duì)象與活動(dòng)間的輸入/輸出關(guān)系由虛線(xiàn)箭頭來(lái)表示。如果僅表示對(duì)象受到某一活動(dòng)的影響,則可用不帶箭頭的虛線(xiàn)來(lái)連接對(duì)象與活動(dòng),如圖2所示。<br><strong>信號(hào)<br></strong>如圖3所示,在活動(dòng)圖中可以表示信號(hào)的發(fā)送與接收,分別用發(fā)送和接收標(biāo)志來(lái)表示。發(fā)送和接收標(biāo)志也可與對(duì)象相連,用于表示消息的發(fā)送者和接收者。</p><p align="center"><img src="../images/uml5-3.jpg" width="331"height="341"></p><p><strong>6. 四種圖的運(yùn)用<br></strong>上面對(duì)UML中用于描述系統(tǒng)動(dòng)態(tài)行為的四個(gè)圖(狀態(tài)圖、順序圖、合作圖和活動(dòng)圖)做了簡(jiǎn)單地介紹。這四個(gè)圖均可用于系統(tǒng)的動(dòng)態(tài)建模,但它們各自的側(cè)重點(diǎn)不同,分別用于不同的目的。下面對(duì)如何正確使用這幾個(gè)圖做一簡(jiǎn)單的總結(jié),在實(shí)際的建模過(guò)程中要根據(jù)具體情況靈活運(yùn)用這些建議。</p><p><br>首先,不要對(duì)系統(tǒng)中的每個(gè)類(lèi)都畫(huà)狀態(tài)圖。盡管這樣做很完美,但太浪費(fèi)精力,其實(shí)你可能只關(guān)心某些類(lèi)的行為。正確的做法是:為幫助理解類(lèi)而畫(huà)它的狀態(tài)圖。狀態(tài)圖描述跨越多個(gè)用例的單個(gè)對(duì)象的行為,而不適合描述多個(gè)對(duì)象間的行為合作。為此,常將狀態(tài)圖與其它技術(shù)(如順序圖、合作圖和活動(dòng)圖)組合使用。</p><p><br>順序圖和合作圖適合描述單個(gè)用例中幾個(gè)對(duì)象的行為。其中順序圖突出對(duì)象間交互的順序,而合作圖的布局方法能更清楚地表示出對(duì)象之間靜態(tài)的連接關(guān)系。當(dāng)行為較為簡(jiǎn)單時(shí),順序圖和合作圖是最好的選擇。但當(dāng)行為比變復(fù)雜時(shí),這兩個(gè)圖將失去其清晰度。因此,如果想顯示跨越多用例或多線(xiàn)程的復(fù)雜行為,可考慮使用活動(dòng)圖。另外,順序圖和合作圖僅適合描述對(duì)象之間的合作關(guān)系,而不適合對(duì)行為進(jìn)行精確定義,如果想描述跨越多個(gè)用例的單個(gè)對(duì)象的行為,應(yīng)當(dāng)使用狀態(tài)圖。</p><p><br><strong>四、標(biāo)準(zhǔn)建模語(yǔ)言UML支持環(huán)境</strong></p><p><strong><br></strong>標(biāo)準(zhǔn)建模語(yǔ)言UML定義良好、易于表達(dá)、功能強(qiáng)大,不僅支持面向?qū)ο蟮姆治雠c設(shè)計(jì),而且支持從需求分析開(kāi)始的軟件開(kāi)發(fā)的全過(guò)程。但如何恰當(dāng)?shù)貙⑦@種可視化圖形建模技術(shù)用于解決軟件開(kāi)發(fā)所面臨的問(wèn)題,如何研制和開(kāi)發(fā)支持UML的建模過(guò)程及其支持環(huán)境,仍是目前該領(lǐng)域的熱點(diǎn)問(wèn)題。</p><p><br>目前,在基于UML的開(kāi)發(fā)方法和環(huán)境方面,國(guó)際上已經(jīng)進(jìn)行了一些研究和實(shí)際開(kāi)發(fā)工作。Rational公司正致力于它稱(chēng)之為Objectory過(guò)程的研究,并試圖將其原有支持OMT的工具作進(jìn)一步擴(kuò)充,以期支持UML建模。國(guó)內(nèi)對(duì)UML支持環(huán)境的研制開(kāi)發(fā)工作尚處于起步階段。</p><p><br>這里從當(dāng)前對(duì)軟件開(kāi)發(fā)過(guò)程的需求及其動(dòng)向出發(fā),提出了UML柔性軟件開(kāi)發(fā)過(guò)程的概念,并設(shè)計(jì)了相應(yīng)的UML集成化支持環(huán)境的組成框架。<br>1. 過(guò)程工程的基本要點(diǎn)<br>任何語(yǔ)言的支持環(huán)境都是為了更好地開(kāi)發(fā)計(jì)算機(jī)應(yīng)用系統(tǒng),而任何計(jì)算機(jī)應(yīng)用系統(tǒng)又都是為一定的企事業(yè)的目標(biāo)服務(wù)的。因此計(jì)算機(jī)應(yīng)用系統(tǒng)及其支持環(huán)境的研制與開(kāi)發(fā),必須在企事業(yè)過(guò)程工程理論的指導(dǎo)下進(jìn)行。下面根據(jù)我們近十年來(lái)從事過(guò)程工程理論研究與正反兩方面的實(shí)際經(jīng)驗(yàn),扼要介紹過(guò)程工程理論和過(guò)程工程環(huán)境的基本要點(diǎn)。<br>(1)任何企事業(yè)都可以也都應(yīng)該從過(guò)程、資源、機(jī)構(gòu)、行為和信息等五方面來(lái)描述。其中過(guò)程是指該企事業(yè)所進(jìn)行的活動(dòng)及其活動(dòng)間的關(guān)系,它有一個(gè)包含規(guī)劃、設(shè)計(jì)、建造和應(yīng)用等四個(gè)階段呈螺旋特征的生命周期??虅澮粋€(gè)企事業(yè)模型,首先必須研究這五個(gè)方面模型的定量描述技術(shù)及其相互關(guān)系的約束理論,并研究其描述技術(shù)及約束理論在四個(gè)不同階段中的演變情況,建立系統(tǒng)動(dòng)力學(xué)模型,為采用模擬技術(shù)解決上述五個(gè)方面模型的綜合集成與整體優(yōu)化奠定理論基礎(chǔ)。<br>(2)任何企事業(yè)中的過(guò)程都可劃分為縱向過(guò)程與橫向過(guò)程兩類(lèi)??v向過(guò)程是以產(chǎn)品工程技術(shù)為核心的逐步發(fā)展的硬技術(shù)群,橫向過(guò)程是以產(chǎn)品和過(guò)程的管理技術(shù)為主體的服務(wù)于縱向過(guò)程的軟技術(shù)群。因此要刻劃一個(gè)企事業(yè)過(guò)程,還必須研究縱向過(guò)程與橫向過(guò)程的定性模型與定量度量技術(shù),研究這兩類(lèi)過(guò)程的相互關(guān)系,以建立產(chǎn)品開(kāi)發(fā)和管理過(guò)程相結(jié)合的集成化綜合模型,為采用模擬技術(shù)研究硬技術(shù)群與軟技術(shù)群的相互之間的量化關(guān)系奠定理論基礎(chǔ)。<br>(3) 在瞬息萬(wàn)變的信息化社會(huì)中,由于客觀環(huán)境(系統(tǒng)的外部參數(shù))和主觀實(shí)體(系統(tǒng)的內(nèi)部結(jié)構(gòu)及狀態(tài))均具有動(dòng)態(tài)的性質(zhì),系統(tǒng)模型的結(jié)構(gòu)、狀態(tài)及其計(jì)算機(jī)支持環(huán)境也應(yīng)隨之而變化。為此,要研究面向?qū)ο蠹夹g(shù)在過(guò)程工程中的應(yīng)用技術(shù),把軟件工程、過(guò)程工程和企事業(yè)工程結(jié)合起來(lái),為建立自適應(yīng)的過(guò)程工程支持環(huán)境奠定理論基礎(chǔ)。我們不妨把軟件工程、過(guò)程工程、企事業(yè)工程三者結(jié)合起來(lái)進(jìn)行綜合考察的工程技術(shù)稱(chēng)之為聚合工程,把自適應(yīng)的計(jì)算機(jī)支持環(huán)境稱(chēng)之為柔性信息系統(tǒng)。<br>(4) 過(guò)程的規(guī)模可大可小,過(guò)程的持續(xù)時(shí)間可長(zhǎng)可短。因此要研究既能支持過(guò)程的橫向劃塊(將過(guò)程規(guī)模較大的系統(tǒng)劃分成若干個(gè)規(guī)模較小的子系統(tǒng))、又能支持過(guò)程的縱向分段(將持續(xù)時(shí)間較長(zhǎng)的過(guò)程劃分成幾個(gè)持續(xù)時(shí)間較短的子過(guò)程)的分割與綜合技術(shù),研究資源的動(dòng)態(tài)調(diào)度技術(shù)以及模型的局部實(shí)例化與局部模擬技術(shù),為采用模擬技術(shù)研究大范圍、長(zhǎng)周期的復(fù)雜動(dòng)力學(xué)系統(tǒng)奠定技術(shù)基礎(chǔ)。</p><p><br>由以上理論可知,任何語(yǔ)言的支持環(huán)境必須滿(mǎn)足這些基本的技術(shù)設(shè)施,這就是我們研制與開(kāi)發(fā)標(biāo)準(zhǔn)建模語(yǔ)言UML支持環(huán)境的基本出發(fā)點(diǎn)。在這些基本點(diǎn)中,特別值得注意的是前三條,即聚合工程和柔性信息系統(tǒng)的概念。</p><p><br>2. UML柔性軟件開(kāi)發(fā)過(guò)程及其支持環(huán)境<br>(1) UML柔性軟件開(kāi)發(fā)過(guò)程<br>軟件系統(tǒng)的規(guī)模越來(lái)越大,復(fù)雜程度不斷提高,傳統(tǒng)的軟件開(kāi)發(fā)模式越來(lái)越難以滿(mǎn)足需求。新的產(chǎn)品開(kāi)發(fā)周期已不再是從需求定義、軟件設(shè)計(jì)、實(shí)現(xiàn)和交付的一次性過(guò)程,迭代式增量開(kāi)發(fā)方式已得到了廣泛采用。除了傳統(tǒng)概念上的時(shí)間、質(zhì)量和花費(fèi)三個(gè)主要要求外,產(chǎn)品支持系統(tǒng)的"柔性"成為更加重要的核心需求。因此我們將新的軟件開(kāi)發(fā)模式歸結(jié)為圖4所示的迭代式開(kāi)發(fā)和圖5所示的柔性軟件開(kāi)發(fā)模型。</p><p align="center"><img src="../images/uml5-4.jpg" width="309"height="201"></p><p align="center"><img src="../images/uml5-5.jpg" width="331"height="208"></p><p>所謂柔性軟件開(kāi)發(fā)是指軟件開(kāi)發(fā)過(guò)程應(yīng)在需求工程的牽引下,首先建立系統(tǒng)的頂層模型,并對(duì)其進(jìn)行模擬、分析和調(diào)整。次之,將頂層模型自頂向下地進(jìn)行分解,建立該系統(tǒng)各個(gè)子系統(tǒng)的模型,對(duì)這些子模型進(jìn)行模擬、分析和調(diào)整。然后將子模型的模擬結(jié)果,逐次代入上層,再對(duì)該上層模型進(jìn)一步進(jìn)行模擬、分析和調(diào)整,如有不適,則進(jìn)行修改。因此整個(gè)建模過(guò)程是一個(gè)"自頂向下建模,由底向上修改"的反復(fù)迭代的過(guò)程。簡(jiǎn)言之,柔性軟件開(kāi)發(fā)過(guò)程是一個(gè)在需求牽引下,自頂向下分層細(xì)化地建模,然后按照"T型技術(shù)",通過(guò)對(duì)模型的虛擬執(zhí)行,由底向上地逐層上移修改,直至各層的模擬結(jié)果都滿(mǎn)足需求為止。<br></p><p>代碼的生成建立在模型正確性的基礎(chǔ)上,同時(shí)考慮到對(duì)需求修改的靈活性和快速響應(yīng)能力,實(shí)施能夠反饋修改的"閉環(huán)開(kāi)發(fā)"。即不僅能支持從模型到代碼的自動(dòng)生成,將新的模型轉(zhuǎn)換為代碼,還能支持從代碼到模型的逆向變換,將原有的代碼轉(zhuǎn)化成模型,進(jìn)行再次分析、修改和調(diào)整以及新一輪的開(kāi)發(fā),從而為增量式開(kāi)發(fā)提供支持。這樣不僅能做到分階段提交產(chǎn)品,也提高了對(duì)用戶(hù)需求變化的響應(yīng)速度和應(yīng)變能力,以滿(mǎn)足用戶(hù)不斷變化的新的需求。</p><p><br>(2) UML支持環(huán)境的基本需求<br>根據(jù)上述理論以及我們十五年來(lái)研制與開(kāi)發(fā)集成化軟件工程環(huán)境正反兩方面的經(jīng)驗(yàn),一個(gè)完善的集成化過(guò)程工程環(huán)境在功能上應(yīng)滿(mǎn)足以下基本需求:<br>·應(yīng)能支持開(kāi)發(fā)完備的過(guò)程模型(即應(yīng)能從過(guò)程、資源、機(jī)構(gòu)、行為和信息等五個(gè)側(cè)面來(lái)描述企事業(yè)過(guò)程)與系統(tǒng)模型(即應(yīng)能從過(guò)程、行為、信息和結(jié)構(gòu)等四個(gè)側(cè)面來(lái)描述一個(gè)系統(tǒng))。<br>·在這個(gè)環(huán)境支持下建立的模型應(yīng)是一個(gè)可執(zhí)行的過(guò)程(系統(tǒng))模型,即應(yīng)能支持模型的虛擬執(zhí)行(模擬)和實(shí)際運(yùn)作,從而可在不同的層次上對(duì)模型進(jìn)行分析和優(yōu)化。<br>·過(guò)程(系統(tǒng))模型應(yīng)采用可視化的圖符與正文描述相結(jié)合的表達(dá)方式,其可視化模型圖的結(jié)構(gòu)應(yīng)能客觀、自然地反映出企事業(yè)各部門(mén)間的通信和同步關(guān)系。<br>·應(yīng)能支持建模人員或管理人員按照企事業(yè)(系統(tǒng))內(nèi)外部的約束條件對(duì)模型的執(zhí)行進(jìn)行靈活的控制,從而實(shí)現(xiàn)開(kāi)發(fā)過(guò)程與管理過(guò)程的交叉。<br>·應(yīng)能支持從模型自動(dòng)生成可在Internet上運(yùn)行且支持多平臺(tái)共享與多數(shù)據(jù)庫(kù)存取的應(yīng)用系統(tǒng),從而實(shí)現(xiàn)對(duì)第三代過(guò)程工程自動(dòng)化的有力支持。<br>·還應(yīng)能支持對(duì)各類(lèi)構(gòu)件庫(kù)的靈活管理,支持基于構(gòu)件的程序設(shè)計(jì)方法,實(shí)現(xiàn)過(guò)程構(gòu)件、需求描述、系統(tǒng)結(jié)構(gòu)與軟件構(gòu)件的復(fù)用和組裝。</p><p><br>UML集成化支持環(huán)境應(yīng)對(duì)集成化過(guò)程工程環(huán)境和集成化系統(tǒng)工程環(huán)境提供強(qiáng)有力的技術(shù)支持。一方面在功能與接口上三者必須無(wú)縫連接,另一方面在風(fēng)格上三者必須協(xié)調(diào)一致。在分工上,過(guò)程工程環(huán)境的目標(biāo)是優(yōu)化過(guò)程,系統(tǒng)工程環(huán)境的目標(biāo)是自動(dòng)產(chǎn)生優(yōu)化了的計(jì)算機(jī)應(yīng)用系統(tǒng),UML支持環(huán)境的目標(biāo)是為建成柔性的計(jì)算機(jī)應(yīng)用系統(tǒng)提供技術(shù)支持。(未完待續(xù))<br></p><p align="center"><a href="../index.htm">Home</a></p></body></html>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -