物理圖與對(duì)象約束語(yǔ)言_第1頁(yè)
物理圖與對(duì)象約束語(yǔ)言_第2頁(yè)
物理圖與對(duì)象約束語(yǔ)言_第3頁(yè)
物理圖與對(duì)象約束語(yǔ)言_第4頁(yè)
物理圖與對(duì)象約束語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第9章物理圖與對(duì)象約束語(yǔ)言

?。為了構(gòu)造一個(gè)面向?qū)ο蟮能浖到y(tǒng)必須考

慮系統(tǒng)的邏輯和物理兩個(gè)方面。

■?邏輯方面需要發(fā)現(xiàn)和描述對(duì)象類、接口、

協(xié)同、交互和狀態(tài)機(jī)等事物,物理方面需

要找出組件和節(jié)點(diǎn)。

?h|jML提供了兩種物理表示圖形:組件圖

和配置圖。

■▼組件圖表示系統(tǒng)中的不同物理組件及其聯(lián)

系,它表達(dá)的是系統(tǒng)代碼本身的結(jié)構(gòu)。

HomeI〉

第9章物理圖與對(duì)象約束語(yǔ)言

?,配置圖由節(jié)點(diǎn)構(gòu)成,節(jié)點(diǎn)代表系統(tǒng)的硬件,

組件在節(jié)點(diǎn)上駐留并執(zhí)行。配置圖表示系

統(tǒng)的軟件組件與硬件之間的關(guān)系,它表達(dá)

的是運(yùn)行系統(tǒng)的結(jié)構(gòu)。

?組件圖和配置圖用于建立系統(tǒng)的實(shí)現(xiàn)模型。

?,對(duì)象約束語(yǔ)言(OCL)是用于表示對(duì)模

型元素的約束的語(yǔ)言,是UML的重要組成

部分。

Home

第9章物理圖與對(duì)象約束語(yǔ)言

?9.1組件圖

Home

9.1組件圖

9.1.1組件

9.1.2組件的種類

9.1.3組件的聯(lián)系

9.1.4組件圖的應(yīng)用

9.1.5UML2.0中的相關(guān)變化

Homeia

9.1.1組件

?b組件(Component)是系統(tǒng)的物理的

可替換的單位,它把系統(tǒng)的實(shí)現(xiàn)打包,

算提供一組接口的實(shí)現(xiàn)(Realization)□

■,組件代表系統(tǒng)的一個(gè)物理實(shí)現(xiàn)塊,代表

邏輯模型元素如類、接口、協(xié)同等的物

理打包。

■,組件本身遵從和提供一組接口的實(shí)現(xiàn),

它們代表了由駐留在組件內(nèi)部的模型元

素所實(shí)現(xiàn)的服務(wù)。組件用于對(duì)系統(tǒng)配置

節(jié)點(diǎn)上的物理事物建立模型。

Homeia

9.1.1組件

?b常見(jiàn)的組件有系統(tǒng)的配置組件,如

COM+組件、JavaBeans等。

?,組件也可以是軟件開(kāi)發(fā)過(guò)程中的產(chǎn)物,

如軟件代碼(源碼、二進(jìn)制碼和可執(zhí)行

碼)等。

Homeia

9.1.1組件

?▼組件的圖標(biāo)是一個(gè)大矩形的左邊嵌二個(gè)小矩

形。組件必須有名字。

?▼簡(jiǎn)單組件:只標(biāo)出組件名。

?,在組件名之后或之下,可以用括在花括號(hào)中

的文字(即標(biāo)記值)說(shuō)明組件的性質(zhì),如

“jversion=2.0}”等。

?,擴(kuò)充組件:當(dāng)需要了解組件所包含的模型元

素時(shí),則需要把每個(gè)模型元素的名字在組件的

大矩形框里列出,這稱為擴(kuò)充的組件。

Homeia

9.1.1組件

,例:簡(jiǎn)單組件與擴(kuò)充組件示例,如圖9.1所示。

image,javaI-?―?system::dialog,dll

I|{version=2.0}

mymailer:Mailer

:Mailbox

:RcirtonwList

:MailQueue

圖9.1簡(jiǎn)單組件與擴(kuò)充組件示例

Home

9.1.1組件

?b組件在很多方面與對(duì)象類相似,如都有

名字,都有實(shí)例,都能實(shí)現(xiàn)接口,都存

在著聯(lián)系等。

■,組件的實(shí)例代表運(yùn)行期間的可執(zhí)行軟件

模塊。例如,圖9.1中的組件

“mymailer:Mailer”就是組件“Mailed的

一個(gè)實(shí)例,它存在于運(yùn)行期間。組件的

實(shí)例只用于配置圖中。

Homeia

9.1.1組件

?b組件的性質(zhì)的表示法與類相同。組件所

包含的模型元素的可視性同樣有“公

共”、“保護(hù)”、“私用”等。

■,但是組件和類有實(shí)質(zhì)性的區(qū)別。

■,組件代表物理事物,而類代表事物的邏

輯抽象,因此組件可以用于配置圖的節(jié)

點(diǎn)中,而類不能。

?,一般組件只有操作,外界只能通過(guò)接口

接觸它們,而類可以直接有屬性和操作。

Homeia

9.1.1組件

?▼組件是一組邏輯元素(如類、協(xié)同等)的物

理實(shí)現(xiàn)。一個(gè)類可以由一個(gè)或多個(gè)組件實(shí)現(xiàn)。

?,組件和類的關(guān)系是一種依賴關(guān)系,組件擁有

類,類不存在了,包含它的組件也就不存在了。

?,通常,組件與類的依賴聯(lián)系不必用圖形顯式

表示,可以在說(shuō)明文檔中予以說(shuō)明。

Homeia

9.1.1組件

?,例:圖9.2中的組件“Mailer”依賴于類

“Mailbox"、“RoutingList”和“MailQueue”。

Mailer

i----------------------------1

________w

MailboxRoutingList

圖9.2組件與類的關(guān)系示例

Homeia

9.1.1組件

■,組件提供接口的實(shí)現(xiàn),一個(gè)組件可以實(shí)

現(xiàn)一個(gè)或多個(gè)接口。

■,例:在圖9.3中的組件“字典”實(shí)現(xiàn)兩

個(gè)接口:“拼寫(xiě)檢查”和“同義詞”。

0拼寫(xiě)檢查

Q同義詞

圖9.3組件與接口示例

Homeia

9.1.2組件的種類

?,按照組件的作用可以把組件分為以下3種:

?1.配置組件(DeploymentComponent)

??配置組件是構(gòu)成一個(gè)可執(zhí)行的系統(tǒng)的必需的組

件,如動(dòng)態(tài)連接庫(kù)(DLL)、執(zhí)行程序(EXE)等。

??UML的組件可以表達(dá)典型的對(duì)象模型,如

COM+、CORBA、JAVABeans>Web頁(yè)、數(shù)據(jù)

庫(kù)表等內(nèi)容。

HomeI〉

9.1.2組件的種類

?2.工作產(chǎn)品組件(WorkProductComponent)

?,工作產(chǎn)品組件是在軟件開(kāi)發(fā)階段使用的組件,

它們包括源程序文件、數(shù)據(jù)文件等。

?,配置組件是根據(jù)工作產(chǎn)品組件建立的。

?3.執(zhí)行組件(ExecutionComponent)

?,執(zhí)行組件是執(zhí)行系統(tǒng)的部件,如COM+的一個(gè)

對(duì)象,它是一個(gè)動(dòng)態(tài)連接庫(kù)(DLL)的實(shí)例。

Home

9.1.2組件的種類

??UML的所有擴(kuò)展機(jī)制都可以用于組件。例如,

可以在組件上加上標(biāo)記值描述組件的性質(zhì),使

用構(gòu)造型規(guī)定組件的種類。

?,UML定義了以下5個(gè)用于組件的標(biāo)準(zhǔn)構(gòu)造型:

?1.?executable?

?構(gòu)造型"executable〉〉說(shuō)明一個(gè)組件可以在

系統(tǒng)的節(jié)點(diǎn)上執(zhí)行。

?2.?library?

?構(gòu)造型〈〈library〉〉說(shuō)明一個(gè)組件是一個(gè)靜態(tài)

的或動(dòng)態(tài)的對(duì)象庫(kù)。

Homeia

9.1.2組件的種類

?,UML定義了以下5個(gè)用于組件的標(biāo)準(zhǔn)構(gòu)造型:

?3.?table?

?構(gòu)造型v〈table>>說(shuō)明一個(gè)組件代表的是一

個(gè)數(shù)據(jù)庫(kù)表。

?4.?file?

?構(gòu)造型vv巾le>>說(shuō)明一個(gè)組件代表的是一個(gè)

文檔,它包含的是源代碼或數(shù)據(jù)。

?5.?document?

?構(gòu)造型"document〉〉說(shuō)明一個(gè)組件代表的

是一個(gè)文檔。

Homeia

9.1.3組件的聯(lián)系

?▼組件之間可以有依賴聯(lián)系。組件之間的依賴

是指,一個(gè)組件的模型元素使用另一個(gè)組件的

模型元素。

?,組件也可以通過(guò)接口實(shí)現(xiàn)依賴聯(lián)系。

?,組件通過(guò)接口依賴的圖形表示方式有兩種,

一種是簡(jiǎn)單的表示法,另一種通過(guò)擴(kuò)充的接口

來(lái)袤達(dá),如圖9.4所示。

?▼由一個(gè)組件實(shí)現(xiàn)的接口稱為輸出接口

(ExportInterface),意指該接口是組件提供

給其他組件的服務(wù)。一個(gè)組件可以提供多個(gè)輸

出接口。

Homeia

9.1.3組件的聯(lián)系

?,為一個(gè)組件所使用的接口稱為輸入接口

(ImportInterface),意指該組件遵從該接口,

建立在該接口上。

?,一個(gè)組件可以遵從多個(gè)輸入接口。一個(gè)組件

可以既有輸入接口,又有輸出接口。

?,通過(guò)輸入接口和輸出接口所實(shí)現(xiàn)的組件之間

的依賴稱為輸入依賴(ImportDependency)。

Home

9.1.3組件的聯(lián)系

?b例:組件的依賴接口示例,如圖9.4所

7KO

(a)

《interface〉

ImageObserver

—>■abort:int{fanalstatic}

error:int{fanalstatic!

imageUpdate():Boolean

(b)

圖9.4組件的依賴接口示例

Home

9.1.3組件的聯(lián)系

?丁根據(jù)組件的種類的不同,組件之間的依

賴可以分為兩種:開(kāi)發(fā)期間的依賴和調(diào)

用依賴。

?▼開(kāi)發(fā)期間的依賴是指在編譯階段和連接

階段的組件之間的依賴。

Home

9.1.3組件的聯(lián)系

?,例如,在圖9.5中,客戶組件依賴于供

應(yīng)者組件。供應(yīng)者組件在開(kāi)發(fā)期間存在,

但并不需要在運(yùn)行期間存在。

圖9.5組件的開(kāi)發(fā)期間的依賴

Homeia

9.1.3組件的聯(lián)系

?b調(diào)用依賴(Call

Dependency)是指一個(gè)組

件調(diào)用或使用另一個(gè)組件

的服務(wù),如圖9.6所示。

?,客戶組件調(diào)用或使用供應(yīng)

者組件的服務(wù),調(diào)用可以

直接進(jìn)行,或通過(guò)接口進(jìn)

行。供應(yīng)者組件的元素可

以是組件的型或?qū)ο蟆?/p>

■,調(diào)用依賴可以發(fā)生在開(kāi)發(fā)

期間的組件的型之間,用

組件圖表示;調(diào)用依賴也

可以發(fā)生在運(yùn)行期間的組

件的實(shí)例之間,可在配置圖9.6組件的調(diào)用依賴

圖中表不。

Home

9.1.4組件圖的應(yīng)用

?,組件圖由組件、接口和組件之間的聯(lián)系

構(gòu)成,其中的組件可以是源碼、二進(jìn)制

碼或可執(zhí)行程序。

■,組件圖表示系統(tǒng)中的不同物理部件及其

聯(lián)系,它表達(dá)的是系統(tǒng)代碼本身的結(jié)構(gòu)。

?,組件圖只有型(Type)的形式,沒(méi)有

實(shí)例形式。為了顯示組件的實(shí)例需要使

用配置圖。

Homeia

9.1.4組件圖的應(yīng)用

?b組件圖用于下列事物建立模型:系統(tǒng)的

源代碼、系統(tǒng)的發(fā)布版本、物理數(shù)據(jù)庫(kù)、

自適應(yīng)系統(tǒng)等。

■,組件圖也可以用于建立業(yè)務(wù)模型,此時(shí)

的組件是業(yè)務(wù)的過(guò)程和文檔。

?,組件圖還可以用于建立開(kāi)發(fā)期間的軟件

產(chǎn)物的依賴關(guān)系,用于系統(tǒng)開(kāi)發(fā)的管理。

Homeia

9.1.4組件圖的應(yīng)用

?,例:一個(gè)組件圖的

示例,如圖9.7所示。

它由組件“調(diào)度程

序”、“計(jì)劃程序”、

“GU『(圖形界面),

接口“注冊(cè)登記”、

“更新”,以及它們

的聯(lián)系構(gòu)成。

圖9.7組件圖示例

Homeia

9.1.4組件圖的應(yīng)用

?,建立一個(gè)可執(zhí)行系統(tǒng)的組件圖可按以下

步驟進(jìn)行:

?(1)確定組件。

?(2)對(duì)組件加上必要的構(gòu)造型。如標(biāo)

準(zhǔn)構(gòu)造型〈〈executable〉〉、?library?>

?table?>?file?>?document?,

或自定義新的構(gòu)造型。

Homeia

9.1.4組件圖的應(yīng)用

?。建立一個(gè)可執(zhí)行系統(tǒng)的組件圖可按以下

步驟進(jìn)行:

?(3)確定組件之間的聯(lián)系。最常見(jiàn)的

組件之間的聯(lián)系是通過(guò)接口依賴。一個(gè)

組件使用(輸入)某個(gè)接口,另一個(gè)組

件實(shí)現(xiàn)(輸出)該接口。

?(4)必要時(shí)把組件組織成包。

?(5)繪制組件圖。

Home

9.1.4組件圖的應(yīng)用

?,例:一個(gè)軟件產(chǎn)品的系統(tǒng)構(gòu)成模型,如

圖9.8所示。它由可執(zhí)行程序和動(dòng)態(tài)連接

庫(kù)構(gòu)成。

1animator,exe

]{version=5.0.1}

I

w

raytrce.dll

圖9.8可執(zhí)行程序和動(dòng)態(tài)連接庫(kù)建模示例

Home

9.1.4組件圖的應(yīng)用

?,采用同樣的方法可以

為報(bào)表、文件與文檔建

??animator,exe

模?!竰version=5.0.1}

-

?,例如,圖9.9是在圖w

9.8的基礎(chǔ)上增加了程animator,hip

序的初始化文件

“animator.ini”、數(shù)據(jù)眉render,dllshapes,tbl/

表“shapes.tb『和幫助

文件“animator.hlp,它t

們都用注釋節(jié)點(diǎn)表示。raytree,dll

圖9.9報(bào)表、文件與文檔建模

Homeia

9.1.4組件圖的應(yīng)用

?,例:項(xiàng)目與資源管理系統(tǒng)PRMS的一個(gè)系統(tǒng)組件圖,如圖

9.10所示,它表示了開(kāi)發(fā)期間和運(yùn)行期間的實(shí)現(xiàn)系統(tǒng)的對(duì)象。

9.1.5UML2.0中的相關(guān)變化

?,在UML2.0中規(guī)定的組件圖標(biāo),如圖9.11所示。

?,在UML1.X中,組件用于代表物理結(jié)構(gòu),特別是運(yùn)行時(shí)的系統(tǒng)

物理塊,如動(dòng)態(tài)連接庫(kù)(DLL)等。在UML2.0中,組件代表系

統(tǒng)的一個(gè)模塊化部分,可以是指邏輯的,也可以是指物理的。

■,按照基于組件的開(kāi)發(fā)方法,一個(gè)系統(tǒng)可以看作是由若干個(gè)組件

通過(guò)接口連接而成的。

圖9.11UML2.0的組件圖標(biāo)

Home

9.1.5UML2.0中的相關(guān)變化

?,組件通過(guò)供給接口和需要接口定義其行

為。

?,組件的服務(wù)是一種型(Type)o

?▼組件在其環(huán)境中是一個(gè)可替換的單元。

不論是在系統(tǒng)的分析設(shè)計(jì)階段或運(yùn)行時(shí),

只要型相合(TypeConformant),即接

口的功能等價(jià),一個(gè)組件可以重用,也

可以被另一個(gè)組件完全代替。

Home

9.1.5UML2.0中的相關(guān)變化

■▼在組件中,供給接口和需要接口可以組

織成端口(port),它們常在運(yùn)行時(shí)被訪

問(wèn)。

■,對(duì)于包含復(fù)雜內(nèi)容的組件,常使用復(fù)合

結(jié)構(gòu)把組件的內(nèi)容進(jìn)行劃分和聚集,使

得結(jié)構(gòu)關(guān)系更為清晰。

Home

9.1.5UML2.0中的相關(guān)變化

?▼例:一個(gè)按照UML2.0規(guī)定圖標(biāo)繪制的

簡(jiǎn)單的組件圖,如圖9.12所示。

Home1a圖9.12組件圖示例

9.2復(fù)合結(jié)構(gòu)

▼復(fù)合結(jié)構(gòu)(CpmpositeStructure)和復(fù)合結(jié)構(gòu)圖是

UML2.0中的新成分。

▼復(fù)合結(jié)構(gòu)描述系統(tǒng)中某一部分(復(fù)合結(jié)構(gòu))的內(nèi)部

結(jié)構(gòu),包括該部分與系統(tǒng)的其它部分的交互。復(fù)合

結(jié)構(gòu)圖能夠展示這些部分的“內(nèi)部”參與者的配置

情況。

V通過(guò)復(fù)合結(jié)構(gòu)可以把一個(gè)復(fù)雜類或組件等分解成若

干部分,便于清晰地描述它們(系統(tǒng))的內(nèi)部組織

構(gòu)造情況,明確地說(shuō)明了支持該復(fù)合結(jié)構(gòu)所包含的

分類符(類、組件等)的結(jié)構(gòu)特性(Property)o

這里說(shuō)的分類符可以是類、對(duì)象、組件等。

Homeia

9.2復(fù)合結(jié)構(gòu)

,復(fù)合結(jié)構(gòu)與包都是一種聚組機(jī)制。

,復(fù)合結(jié)構(gòu)是模型元素在運(yùn)行時(shí)刻的聚組,包

是編譯時(shí)刻的聚組。

b復(fù)合結(jié)構(gòu)圖常用于組件圖,適宜表示組件,

以及如何把組件分解為不同的部件。

,復(fù)合結(jié)構(gòu)圖類似于類圖,但它所表示的是內(nèi)

部結(jié)構(gòu)所包含的部件和連接符。

h部件(Part)是分類符將扮演的角色

(Role),不代表特定的實(shí)例(Instance)。

Homeia

g2復(fù)合結(jié)構(gòu)

,部件的圖標(biāo)與力象的圖層吳似,也是一個(gè)矩形

框,它的命名形式為:部件名:類名,但是名

稱之下不帶下劃線。

b部件之間可以有連接符(Connector)連接,

連接符用一條直線表示。連接符使得兩個(gè)部件

(或模型元素)之間能夠通信。

b委托連接符(DelegationConnector)是一種

連接該復(fù)合結(jié)構(gòu)的對(duì)外委托端口和內(nèi)部實(shí)現(xiàn)部

件的連接符,委托連接符用一條虛箭線表示。

,連接符的實(shí)現(xiàn)可以是一個(gè)簡(jiǎn)單指針,或是復(fù)雜

H徽ome峰連接。

9.2復(fù)合結(jié)構(gòu)

,例:一個(gè)表示對(duì)象類的復(fù)合結(jié)構(gòu)的示例,如圖9.13所示。

,其中,“輪胎”類是一個(gè)簡(jiǎn)單類?!稗I車”類的內(nèi)部結(jié)

構(gòu)是一種復(fù)合結(jié)構(gòu),它包含四個(gè)部件:“左前輪”、

“右前輪”、“左后輪”、“右后輪”,代表轎車的四

個(gè)輪子,它們的型都是“輪胎”。兩個(gè)前輪部件和兩個(gè)

圖9.13類的復(fù)合結(jié)構(gòu)示例

Homeia

9.2復(fù)合結(jié)構(gòu)

在復(fù)合結(jié)構(gòu)圖中還常需要表示復(fù)合結(jié)構(gòu)和部

件所需要的接口和端口,以及部件的多重性。

,例:一個(gè)組件“訂貨”的復(fù)合結(jié)構(gòu),如圖

9.14所不,它有兩個(gè)端口。

HomeI〉圖9.14組件的復(fù)合結(jié)構(gòu)圖示例

9.3配置圖

9.3.1節(jié)點(diǎn)

9.3.2節(jié)點(diǎn)的聯(lián)系

9.3.3配置圖的應(yīng)用

9.3.4UML2Q中的相關(guān)變化

Bl[Home

9.3.1節(jié)點(diǎn)

?,節(jié)點(diǎn)(Node)是存在于運(yùn)行期間的系

統(tǒng)的物理元素,節(jié)點(diǎn)代表計(jì)算機(jī)資源,

通常為處理器(Processor)或其他硬件

設(shè)備,系統(tǒng)的組件可以配置在節(jié)點(diǎn)上。

?,節(jié)點(diǎn)的圖標(biāo)為一個(gè)三維立方體圖形,如

圖9.15所示。

圖9.15簡(jiǎn)單節(jié)點(diǎn)與擴(kuò)充節(jié)點(diǎn)示例

Homeia

9.3.1節(jié)點(diǎn)

?,節(jié)點(diǎn)必須有名字。節(jié)點(diǎn)的名字可以是一

個(gè)簡(jiǎn)單名,或用路徑名。

?▼與對(duì)象類一樣,節(jié)點(diǎn)可以用標(biāo)記值說(shuō)明

名字的性質(zhì)。

■,節(jié)點(diǎn)和對(duì)象類一樣可以區(qū)分為型和實(shí)例。

節(jié)點(diǎn)的型代表計(jì)算資源的不同類型,節(jié)

點(diǎn)的實(shí)例代表特定的具體的計(jì)算機(jī)資源。

Home

9.3.1節(jié)點(diǎn)

?▼對(duì)象和組件實(shí)例可以駐留在節(jié)點(diǎn)實(shí)例上,

而且可以從一個(gè)節(jié)點(diǎn)向另一個(gè)節(jié)點(diǎn)遷移。

■。節(jié)點(diǎn)執(zhí)行組件,組件是被節(jié)點(diǎn)執(zhí)行的事

物。

?。一個(gè)節(jié)點(diǎn)可以與其它的節(jié)點(diǎn)、組件、對(duì)

象有關(guān)聯(lián)。

■。節(jié)點(diǎn)和對(duì)象類、協(xié)同、組件等模型元素

一樣可以組織成包。

Homeia

9.3.1節(jié)點(diǎn)

?b例:在節(jié)點(diǎn)上安置組件,如圖9.16所示。

圖9.16用節(jié)點(diǎn)安置組件

Homeia

9.3.2節(jié)點(diǎn)的聯(lián)系

?▼節(jié)點(diǎn)與節(jié)點(diǎn)通過(guò)物理連接(Connection)發(fā)

生聯(lián)系,物理連接如以太網(wǎng)絡(luò)、共享總線等,

從硬件方面保證了系統(tǒng)的節(jié)點(diǎn)協(xié)同運(yùn)行。

?,節(jié)點(diǎn)與節(jié)點(diǎn)、節(jié)點(diǎn)與組件之間存在著多種類

型的聯(lián)系,包括關(guān)聯(lián)(通信聯(lián)系)和依賴(支

持聯(lián)系、成為聯(lián)系)。

Homeia

9.3,2節(jié)點(diǎn)的聯(lián)系

?,1.通信聯(lián)系

?,通信聯(lián)系是節(jié)點(diǎn)之間的一種關(guān)聯(lián),是節(jié)點(diǎn)之

間的通信路徑或連接的模型。

?,通信聯(lián)系的表示法是用一條實(shí)關(guān)聯(lián)線連接兩

個(gè)節(jié)點(diǎn),如圖9.17所示。在實(shí)關(guān)聯(lián)線上可以加

構(gòu)造型以表達(dá)節(jié)點(diǎn)間的通信路徑或連接的性質(zhì)。

Homeia

9.3.2節(jié)點(diǎn)的聯(lián)系

圖9.17通信聯(lián)系表示法示例

Homeia

9.3.2節(jié)點(diǎn)的聯(lián)系

?2.支持聯(lián)系

??支持聯(lián)系是節(jié)點(diǎn)與組件或?qū)ο笾g的依賴聯(lián)

系。如果一個(gè)節(jié)點(diǎn)與一個(gè)組件或?qū)ο蟠嬖谥?/p>

持聯(lián)系,說(shuō)明該節(jié)點(diǎn)上駐留著該組件或?qū)ο螅?/p>

該組件或?qū)ο竽軌蛟谠摴?jié)點(diǎn)上執(zhí)行。

??支持聯(lián)系的表示法是用一條虛箭線從節(jié)點(diǎn)指

向所連接的組件或?qū)ο螅⒖稍谔摷€上加有

構(gòu)造型〈〈supports〉>,如圖9.18所示。

Home1a

9.3.2節(jié)點(diǎn)的聯(lián)系

圖9.18支持聯(lián)系表示法

Homeia

9.3.2節(jié)點(diǎn)的聯(lián)系

?3.成為聯(lián)系

??成為聯(lián)系是組件與組件、組件與對(duì)象、

對(duì)象與對(duì)象之間的依賴聯(lián)系。成為聯(lián)系

不是節(jié)點(diǎn)之間的聯(lián)系,但是它是組件或

對(duì)象在節(jié)點(diǎn)之間的遷移的模型。

?^成為聯(lián)系的表示法是用一條虛箭線從一

個(gè)節(jié)點(diǎn)中的組件指向另一個(gè)節(jié)點(diǎn)中的組

件或從一個(gè)節(jié)點(diǎn)中的對(duì)象指向另一個(gè)節(jié)

點(diǎn)中的對(duì)象,并可在虛箭線上加有構(gòu)造

型vvbecomes>>,如圖9.19所示。

HomeI〉

9.3.2節(jié)點(diǎn)的聯(lián)系

?b成為聯(lián)系表示法,如圖9.19所示。

圖9.19成為聯(lián)系表示法

Homeia

9.3.2節(jié)點(diǎn)的聯(lián)系

?3.成為聯(lián)系

?▼成為聯(lián)系可以用標(biāo)記值“{time=...『說(shuō)

明其時(shí)間性質(zhì),即組件或?qū)ο笤谑裁磿r(shí)

間發(fā)生遷移活動(dòng)。

?成為聯(lián)系說(shuō)明源對(duì)象(或組件)和目標(biāo)

對(duì)象(或組件)是在不同時(shí)間點(diǎn)的同一

個(gè)對(duì)象(或組件),而且它們的狀態(tài)和

向心不同。

Home

9.3.3配置圖的應(yīng)用

?,配置圖由節(jié)點(diǎn)與節(jié)點(diǎn)之間的聯(lián)系構(gòu)成。

在配置圖中也可以有組件,以及節(jié)點(diǎn)與

組件之間、組件與組件之間的聯(lián)系。

■,配置圖表示分布式系統(tǒng)的軟件組件與硬

件之間的關(guān)系,它表達(dá)的是運(yùn)行系統(tǒng)的

結(jié)構(gòu)。

■,配置圖主要用于對(duì)在網(wǎng)絡(luò)環(huán)境運(yùn)行的分

布式系統(tǒng)建立系統(tǒng)物理模型,或者對(duì)嵌

入式系統(tǒng)建模。

Homeia

9.3.3配置圖的應(yīng)用

?,配置圖也可以用于建立業(yè)務(wù)模型,此時(shí)

的“運(yùn)行系統(tǒng)”就是業(yè)務(wù)的組織機(jī)構(gòu)和

資源(人力、設(shè)備等)。

?b例:項(xiàng)目與資源管理系統(tǒng)PRMS的配置

圖,如圖9.20所示。

Homeia

Qa2西?音圖的后田

數(shù)據(jù)庫(kù)服務(wù)需

DB:數(shù)據(jù)庫(kù)

打E|3機(jī)打印機(jī)

應(yīng)用

服務(wù)招

/

資涯營(yíng)理

桌面資3原錯(cuò)埋

容尸(執(zhí)行碼、

圖9.20項(xiàng)目與資源管理系統(tǒng)PRMS的配置圖

Homeia

9.3.3配置圖的應(yīng)用

?b建立一個(gè)客戶機(jī)/服務(wù)器系統(tǒng)或web應(yīng)用系

統(tǒng)的配置圖一般可按以下步驟進(jìn)行:

?(1)確定節(jié)點(diǎn)。

?(2)對(duì)節(jié)點(diǎn)加上必要的構(gòu)造型。

?(3)確定聯(lián)系。

?把系統(tǒng)的組件如可執(zhí)行程序、動(dòng)態(tài)連接庫(kù)等

分配到節(jié)點(diǎn)上,并確定節(jié)點(diǎn)與節(jié)點(diǎn)之間、節(jié)點(diǎn)

與組件之間、組件與組件之間的聯(lián)系,以及它

們的性質(zhì)。

?(4)繪制配置圖。

Homeia

b例:一個(gè)它是一個(gè)對(duì)

象配置圖,其中每一個(gè)節(jié)點(diǎn)都是可視的特定節(jié)點(diǎn)實(shí)例:

"DatabaseUnitServer”(數(shù)搪庫(kù)服務(wù)器)、“HeartUnit

Server"(心血管病服務(wù)器)與"aWindowsPC”(客戶機(jī)),

它們通過(guò)TCP/IP網(wǎng)絡(luò)連接。

?,節(jié)點(diǎn)上的組件及組件間的聯(lián)系:

1)uDatabaseUnitServer":"Objectdatabase"(對(duì)象數(shù)據(jù)

庫(kù));”:HeartCareDomain”(心血管病領(lǐng)域)。依賴大素

2)“HeartUnitServer":“HeartUnitServerApplication”

(心血管病應(yīng)用程序);"Objectdatabase”(對(duì)象數(shù)據(jù)

庫(kù));”:HeartCareDomain”(心血管病領(lǐng)域);

”:ConfigureKnowledge"(參數(shù)配置)接口依賴aHeartUnit

ServerApplication^^

3)“aWindowsPC":uHeartUnitClientFacade"(心血管病

客戶),通過(guò)接口依賴“HeartUnitServer”中的組件“Heart

UnitServerApplication”

Home

PattabaseUnitServer

rr~i:Obiact

i|IDatabase

?----------------------------------A

L--J:HealthCax~aJ

i:■】Domairt

L;-」:Object

L」Database

:;::HealtkCaye

i-j-】Domain

A

:Con£ignra

[1I:HeartUnitKnowTedme

I;Ser-r

I_1ADPILicatLon

:ConEigtureUsei-w

圖9.21醫(yī)院診療系統(tǒng)配置圖(客戶機(jī)/服務(wù)器系統(tǒng))

Homeia

9.3.4UML2.0中的相關(guān)變化

?在UML2.0中規(guī)定,配置圖的節(jié)點(diǎn)所代

表的計(jì)算機(jī)資源,不僅是指硬件設(shè)備

(Device),如處理器、讀卡機(jī)、移動(dòng)

設(shè)備、通信設(shè)備等;而且可以是指包含

在設(shè)備內(nèi)的執(zhí)行環(huán)境。

?始執(zhí)行環(huán)境是其它軟件的宿主,如操作系

統(tǒng)、J2EE容器、工作流引擎、數(shù)據(jù)庫(kù)等。

Homeia

9.3.4UML2.0中的相關(guān)變化

?h制品(Artifact)配置在節(jié)點(diǎn)上。在配

置圖中的制品就是系統(tǒng)開(kāi)發(fā)過(guò)程中最終

產(chǎn)生的各種可執(zhí)行代碼文件。

?實(shí)際上,制品代表組件(或任何可包裝

模型元素,如簡(jiǎn)單的類)的物理形式,

組件由制品實(shí)現(xiàn)。

■制品的圖標(biāo)為一個(gè)矩形,在制品的名稱

u,,

上方給出構(gòu)造型?artifact?;或者,

在矩形的右上角貼上一個(gè)圖標(biāo)“”。

HomeI〉

9.3.4UML2.0中的相關(guān)變化

?b例:圖922中有一個(gè)組件“Order"和一

個(gè)制品“Order.ja己制品“Order.jad是

一個(gè)可執(zhí)行的Java代碼文件。組件

“Orded由制品“Orderjad實(shí)現(xiàn)。

<<component>>?

o-Order-c

itemjava.sql.connection

|<<manifest>>

<<artifact>>|~

Order.jar

Home

9.3.4UML2.0中的相關(guān)變化

?,例:節(jié)點(diǎn)”應(yīng)用服務(wù)器”上的配置,如

圖9.23配置有執(zhí)行環(huán)境和制品的節(jié)點(diǎn)

Homeia

9.4對(duì)象約束語(yǔ)言

?h對(duì)象約束語(yǔ)言(ObjectConstraint

Language,OCL)是一種形式語(yǔ)言,用

于表示UML模型中施加于模型元素上的

約束。

?,OCL是一種純表達(dá)式語(yǔ)言,它用表達(dá)

式表示約束。

?,OCL的表達(dá)式確保沒(méi)有副作用,對(duì)一

個(gè)OCL表達(dá)式進(jìn)行求值將返回一個(gè)值,

它在系統(tǒng)模型中不改變。

HomeI〉

9.4對(duì)象約束語(yǔ)言

?,OCL是一種規(guī)格說(shuō)明語(yǔ)言

(SpecificationLanguage)。所有有關(guān)

實(shí)現(xiàn)的問(wèn)題都不能用OCL表達(dá)。

?bOCL不是一種程序設(shè)計(jì)語(yǔ)言,不能用

OCL編寫(xiě)程序,不能用OCL編寫(xiě)程序邏

輯和控制流程。

Homeia

9.4對(duì)象約束語(yǔ)言

Home

9.4.1標(biāo)準(zhǔn)型

?,OCL預(yù)定義的

標(biāo)準(zhǔn)型定義了一

組基本型和集合

型(Collection

Type)o

?,OCL標(biāo)準(zhǔn)型定

義為一個(gè)層次結(jié)

構(gòu),用類圖套示,

如圖9.18所不。

圖9.18OCL標(biāo)準(zhǔn)型

Homeia

9.4.1標(biāo)準(zhǔn)型

?bOCL基本型的含義與Java語(yǔ)言中的數(shù)

據(jù)類型的含義類似。

?^OCL基本型的例子如下:

?1,3,5.4

?true,false

?'appleTorange','strawberry'

Home

9.4.1標(biāo)準(zhǔn)型

?,對(duì)OCL基本型能施加的運(yùn)算如下:

?OCL基本型運(yùn)算

?Integer*,+/,abs

?Real*,+-,/,floor

?Booleanand,or,xor,not,

implies,if-then-else

?Stringtollpper,toLower,

substring,concat

Homeia

9.4.1標(biāo)準(zhǔn)型

?▼集合型是抽象型,它預(yù)定義了大量的運(yùn)算,

可以維護(hù)集合。

?▼UML定義了3種集合型:“Set”、“Bag”、

“Sequence”。

?,集合型本身又可以構(gòu)成集合型,形成集合型

的嵌套。

?,“Set”型是一個(gè)數(shù)學(xué)的集合,它包含的元素

不重復(fù)。

?▼“Bag”型類似“Set”型,但它包含的元素允

許重復(fù)。

Homeia

9.4.1標(biāo)準(zhǔn)型

,“Sequence”型類似“Bag”型,但它包含的元

素有序。

??“Set”、“Bag”和“Sequence”型的表示方

法是分別用關(guān)鍵字“Set”、“Bag”和

“Sequence",后跟一個(gè)花括號(hào),其中有組成

該型的元素值。

?例:集合型的一些例子如下:

Set{1,3,5,7,9}

Sequence{1,3,4,5,2,3}

Bag{1,3,4,3,5)

Set{Set{1,3},Set{5,7},Set{9,11}}

Homelailection”型嵌套

9.4.1標(biāo)準(zhǔn)型

?,集合型的預(yù)定義運(yùn)算主要有“select”(選

擇)、“reject"(剔除)、“collect"(集合)、

“forAII"(全體)、“exists"(存在)等。

?Collection->select(...)

?Collection->reject(...)

?Collection->collect(...)

?Collection->forAII(...)

?Collection->existsl(...)

Homeia

9.4.1標(biāo)準(zhǔn)型

?▼集合型的預(yù)定義運(yùn)算主要有“select”(選

擇)、“reject"(剔除)、“collect"(集合)、

“forAII"(全體)、“exists"(存在)等。

?Collection->select(...)

?Collection->reject(...)

?Collection->collect(...)

?Collection->forAII(...)

?Collection->existsl(...)

?,例:集合型運(yùn)算的一些例子如下:

?self.employee->select(age>50)->

notEmpty

HomeicK/larriorl\_>

9.4.2表達(dá)式

,OCL表達(dá)式對(duì)一個(gè)OCL型求值。

▼OCL的基本表達(dá)式的擴(kuò)展巴斯科范式EBNF

定義如下:

PrimaryExpression:=literalcollection|literal

|pathNametimeExpression?Qualifier?

FeatureCallParameters?

|expression|ifExpression

literal:=<string>|<number>|<name>

Homeia

9.4.2表達(dá)式

?timeExpression:="@”<name>

?featureCallParameters:="("(declarator)?

(actualParameterList)?

?ifExpression:="if'expression“then”

expression“else”expressionuendif5

?▼最簡(jiǎn)單的OCL基本表達(dá)式是一個(gè)literal(文

字),literal可以是一個(gè)字符串,或一個(gè)數(shù)字,

或在“毋號(hào)后跟一個(gè)模型元素或操作的名字。

?,OCL基本表達(dá)式也可以是literalcollection,

即literal的集合型。

Homeia

942表達(dá)式

?,OCL基本表達(dá)式可以是一個(gè)路徑名,后面可有

選項(xiàng):時(shí)間表達(dá)式、限定符(Qualifier)或特征

調(diào)用參數(shù)。

?,時(shí)間表達(dá)式的格式是在符號(hào)“@”后面跟一個(gè)

名字,它確定性質(zhì)的時(shí)間值。

?b特征調(diào)用參數(shù)是運(yùn)算的實(shí)在參數(shù)表。

?,OCL基本表達(dá)式可以是一個(gè)條件表達(dá)式,其值

為一個(gè)Boolean值“True”或“False”。

?把一個(gè)OCL表達(dá)式用圓括號(hào)括起來(lái)也是一個(gè)

OCL基本表達(dá)式。

Home回

?,OCL表達(dá)式也臬解自素油或行,運(yùn)算符的優(yōu)

先級(jí)規(guī)定由高到低依次為:

圓點(diǎn)“「和箭頭的優(yōu)先級(jí)最高;

一元運(yùn)算符“not"和“」';

乘除運(yùn)算符…和“/”;

加減運(yùn)算符“+”和“」';

邏輯運(yùn)算符“and”、“0廣和。0廣;

邏輯運(yùn)算符“

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論