国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

UML組件圖詳解(1)

2019-11-17 04:49:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
圖的目的組件圖的主要目的是顯示系統(tǒng)組件間的結(jié)構(gòu)關(guān)系。在 UML 1.1 中,一個(gè)組件表現(xiàn)了實(shí)施項(xiàng)目,如文件和可運(yùn)行的程序。不幸地,這與組件這個(gè)術(shù)語(yǔ)更為普遍的用法、指象COM組件這樣的東西相沖突。隨著時(shí)間的推移及UML的連續(xù)版本發(fā)布, UML 組件已經(jīng)失去了最初的絕大部分含義。UML 2 正式改變了組件概念的本質(zhì)意思;在 UML 2 中,組件被認(rèn)為是獨(dú)立的,在一個(gè)系統(tǒng)或子系統(tǒng)中的封裝單位,提供一個(gè)或多個(gè)接口。雖然 UML 2 規(guī)范沒(méi)有嚴(yán)格地聲明它,但是組件是呈現(xiàn)事物的更大的設(shè)計(jì)單元,這些事物一般將使用可更換的組件來(lái)實(shí)現(xiàn)。但是,并不象在 UML 1. x中,現(xiàn)在,組件必須有嚴(yán)格的邏輯,設(shè)計(jì)時(shí)構(gòu)造。主要思想是,你能輕易地在你的設(shè)計(jì)中重用及/或替換一個(gè)不同的組件實(shí)現(xiàn),因?yàn)橐粋€(gè)組件封裝了行為,實(shí)現(xiàn)了特定接口。1 在以組件為基礎(chǔ)的開(kāi)發(fā)(CBD)中,組件圖為架構(gòu)師提供一個(gè)開(kāi)始為解決方案建模的自然形式。組件圖答應(yīng)一個(gè)架構(gòu)師驗(yàn)證系統(tǒng)的必需功能是由組件實(shí)現(xiàn)的,這樣確保了最終系統(tǒng)將會(huì)被接受。除此之外,組件圖對(duì)于不同的小組是有用的交流工具。圖可以呈現(xiàn)給要害項(xiàng)目發(fā)起人及實(shí)現(xiàn)人員。通常,當(dāng)組件圖將系統(tǒng)的實(shí)現(xiàn)人員連接起來(lái)的時(shí)候,組件圖通常可以使項(xiàng)目發(fā)起人感到輕松,因?yàn)閳D展示了對(duì)將要被建立的整個(gè)系統(tǒng)的早期理解。開(kāi)發(fā)者發(fā)現(xiàn)組件圖是有用的,因?yàn)榻M件圖給他們提供了將要建立的系統(tǒng)的高層次的架構(gòu)視圖,這將幫助開(kāi)發(fā)者開(kāi)始建立實(shí)現(xiàn)的路標(biāo),并決定關(guān)于任務(wù)分配及(或)增進(jìn)需求技能。系統(tǒng)治理員發(fā)現(xiàn)組件圖是有用的,因?yàn)樗麄兛梢垣@得將運(yùn)行于他們系統(tǒng)上的邏輯軟件組件的早期視圖。雖然系統(tǒng)治理員將無(wú)法從圖上確定物理設(shè)備或物理的可執(zhí)行程序,但是,他們?nèi)匀粴g迎組件圖,因?yàn)樗^早地提供了關(guān)于組件及其關(guān)系的信息(這答應(yīng)系統(tǒng)治理員輕松地計(jì)劃后面的工作)。符號(hào)在現(xiàn)在,組件圖符號(hào)集使它成為最輕易畫(huà)的 UML 圖之一。圖 1 顯示了一個(gè)使用前 UML 1.4 符號(hào)的簡(jiǎn)單的組件圖;這個(gè)例子顯示兩個(gè)組件之間的關(guān)系:一個(gè)使用了Inventory System組件的Order System組件。正如你所能見(jiàn)到的,在UML 1.4 中,用一個(gè)大方塊,并且在它的左邊有兩個(gè)凸出的小方塊,來(lái)表示組件。UML組件圖詳解(1)(圖一)

圖 1:這個(gè)簡(jiǎn)單的組件圖使用 UML 1.4 符號(hào)顯示Order System的一般性依靠關(guān)系上述的 UML 1.4 符號(hào)在 UML 2 中仍然被支持。然而,UML 1.4 符號(hào)集在較大的系統(tǒng)中不能很好地調(diào)節(jié)。關(guān)于這一點(diǎn)的理由是,如同我們?cè)谶@篇文章的其余部分將會(huì)見(jiàn)到一樣,UML 2 顯著地增強(qiáng)了組件圖的符號(hào)集。在維持它易于理解的條件下,UML 2 符號(hào)能夠調(diào)節(jié)得更好,并且符號(hào)集也具有更多的信息。讓我們依照 UML 2 規(guī)范一步步建立組件圖。基礎(chǔ)現(xiàn)在,在 UML 2 中畫(huà)一個(gè)組件很類似于在一個(gè)類圖上畫(huà)一個(gè)類。事實(shí)上,在 UML 2 中,一個(gè)組件僅僅是類概念的一個(gè)非凡版本。這意味著適用于類分類器的符號(hào)規(guī)則也適用于組件分類器。(假如你已經(jīng)讀了并理解了我以前的關(guān)于大體上的結(jié)構(gòu)圖和類圖細(xì)節(jié)的文章 [http:// www. ibm.com/developerworks/cn/rational/rationaledge/content/feb05/bell/index.sHtml],你就會(huì)很易理解組件圖)。在 UML 2 中,一個(gè)組件被畫(huà)成堆積著可選擇小塊的一個(gè)立著的長(zhǎng)方形。UML 2 中,組件的一個(gè)高層次的抽象視圖,可以用一個(gè)長(zhǎng)方形建模,包括組件的名字和組件原型的文字和/或圖標(biāo)。組件原型的文本是“«component»”,而組件原型圖標(biāo)是在左邊有兩個(gè)凸出的小長(zhǎng)方形的一個(gè)大長(zhǎng)方形(UML 1.4 中組件的符號(hào)元素)。圖 2 顯示,組件可以用UML 2規(guī)范中的三種不同方法表示。UML組件圖詳解(1)(圖二)

圖 2:畫(huà)組件名字區(qū)的不同方法當(dāng)在圖上畫(huà)一個(gè)組件時(shí),重要的是,你總要包括組件原型文本(在雙重尖括號(hào)中的那個(gè)component,如圖 2 所示)和/或圖標(biāo)。理由呢?在 UML 中,沒(méi)有任何原型分類器的一個(gè)長(zhǎng)方形被解釋為一個(gè)類組件。組件原型和/或圖標(biāo)用來(lái)區(qū)別作為組件元素的長(zhǎng)方形。為組件提供/要求接口建模在圖 2 中所畫(huà)的Order組件表現(xiàn)了所有有效的符號(hào)元素;然而,一個(gè)典型的組件圖包括更多的信息。一個(gè)組件元素可以在名字區(qū)下面附加額外的區(qū)。如前面所提到的,一個(gè)組件是提供一個(gè)或更多公共接口的獨(dú)立單元。提供的接口代表了組件提供給它的用戶/客戶的服務(wù)的正式契約。圖 3 顯示了Order組件有第二個(gè)區(qū),用來(lái)表示Order組件提供和要求的接口。2UML組件圖詳解(1)(圖三)

圖 3:這里額外的區(qū)顯示Order組件提供和要求的接口。在圖 3 中的Order組件例子中,組件提供了名為 OrderEntry 和 AccountPayable 的接口。此外,組件也要求另外一個(gè)組件提供Person接口。3組件接口建模的其它方法UML 2 也引入另外一種方法來(lái)顯示組件提供并要求的接口。這個(gè)方法是建立一個(gè)里面有組件名的大長(zhǎng)方形,并在長(zhǎng)方形的外面放置在 UML 2 規(guī)范中稱為接口符號(hào)的東西。這第二種方法在圖 4 中舉例說(shuō)明。UML組件圖詳解(1)(圖四)

4: 一種可選擇的方法(與圖3相比):使用接口符號(hào)顯示組件提供/要求的接口
在這第二種方法中,在末端有一個(gè)完整的圓周的接口符號(hào)代表組件提供的接口 -- “棒棒糖”是這個(gè)接口分類器實(shí)現(xiàn)關(guān)系符號(hào)的速記法。在末端只有半個(gè)圓的接口(又稱插座)符號(hào)代表組件要求的接口(在兩種情況下,接口的名字被放置在接口符號(hào)本身的四周)。即使圖 4 看起來(lái)與圖 3 有很大的不同,但兩個(gè)圖都提供了相同的信息 -- 例如,Order組件提供兩個(gè)接口:OrderEntry 和 AccountPayable,而且Order組件 要求 Person接口。 QQread.com 推出各大專業(yè)服務(wù)器評(píng)測(cè) linux服務(wù)器的安全性能 SUN服務(wù)器 HP服務(wù)器 DELL服務(wù)器 IBM服務(wù)器 聯(lián)想服務(wù)器 浪潮服務(wù)器 曙光服務(wù)器 同方服務(wù)器 華碩服務(wù)器 寶德服務(wù)器 組件關(guān)系的建模當(dāng)表現(xiàn)組件與其他的組件的關(guān)系時(shí),棒棒糖和插座符號(hào)也必須包括一支依存箭頭(如類圖中所用的)。在有棒棒糖和插座的組件圖上,注重,依存箭從強(qiáng)烈的(要求的)插座引出,并且它的箭頭指向供給者的棒棒糖,如圖 5 所示。UML組件圖詳解(1)(圖五)

圖 5:顯示Order系統(tǒng)組件如何依靠于其他組件的組件圖圖 5 顯示,Order系統(tǒng)組件依靠于客戶資源庫(kù)和庫(kù)存系統(tǒng)組件。注重在圖 5 中復(fù)制出的接口名 CustomerLookup 和 PRodUCtaccessor。 在這個(gè)例子中,這看起來(lái)可能是不必要的重復(fù),不過(guò)符號(hào)確實(shí)答應(yīng)在每個(gè)依靠于實(shí)現(xiàn)差別的組件中有不同的接口(和不同的名字)(舉例來(lái)說(shuō),一個(gè)組件提供一個(gè)較小的必需的接口子類)。子系統(tǒng)在 UML 2 中,子系統(tǒng)分類器是組件分類器的一個(gè)非凡版本。因?yàn)檫@一點(diǎn),子系統(tǒng)符號(hào)元素象組件符號(hào)元素一樣繼續(xù)所有的組件符號(hào)集規(guī)則。唯一的差別是,一個(gè)子系統(tǒng)符號(hào)元素由subsystem要害字代替了component,如圖 6 所示。UML組件圖詳解(1)(圖六)

圖 6:子系統(tǒng)元素的一個(gè)例子UML 2 規(guī)范在如何區(qū)別子系統(tǒng)與組件方面相當(dāng)含糊。從建模的觀點(diǎn),規(guī)范并不認(rèn)為組件與子系統(tǒng)有任何區(qū)別。與 UML 1. x 相比較,這個(gè) UML 2 模型歧義是新的。但是有一個(gè)理由。在 UML 1. x 中,一個(gè)子系統(tǒng)被認(rèn)為是一個(gè)軟件包,而且這個(gè)軟件包符號(hào)正對(duì)許多 UML 實(shí)踐者造成困惑;因此,UML 2中把子系統(tǒng)作為非凡的組件,因?yàn)檫@是最多的 UML 1. x 使用者了解它的方式。這一改變確實(shí)把模糊引入圖中,但是這一模糊更多的是 UML 2 規(guī)范中對(duì)抗錯(cuò)誤的一個(gè)現(xiàn)實(shí)反射。到這里,你可能正在抓著頭皮并感到迷惑,什么時(shí)候該用組件元素,什么時(shí)候又該用子系統(tǒng)元素。相當(dāng)坦率地說(shuō),我沒(méi)有一個(gè)直接的答案給你。我可以告訴你,UML 2 規(guī)范中說(shuō),何時(shí)該使用組件或子系統(tǒng)決定于建模者的方法論。我個(gè)人很喜歡這個(gè)答案,因?yàn)樗鼛椭_保UML與方法論相互獨(dú)立,這在軟件開(kāi)發(fā)中將幫助保持它的普遍可使用。超越基礎(chǔ)組件圖是比較輕易理解的圖之一,因此沒(méi)有很多超越基礎(chǔ)的內(nèi)容。然而,有一個(gè)方面你可以認(rèn)為是略微困難的。顯示組件的內(nèi)部結(jié)構(gòu)

有時(shí)候顯示組件的內(nèi)部結(jié)構(gòu)是有意義的。在關(guān)于類圖的我的前面的文章中,我顯示了該如何為類的內(nèi)部結(jié)構(gòu)建模;這里,當(dāng)它由其他組件組成的時(shí)候,我將會(huì)關(guān)注如何為組件的內(nèi)部結(jié)構(gòu)建模。為了顯示組件的內(nèi)部結(jié)構(gòu),你只需把組件畫(huà)得比平常大一些并在名字區(qū)內(nèi)放置內(nèi)部的部分。圖 7 顯示Store組件的內(nèi)部結(jié)構(gòu)。UML組件圖詳解(1)(圖七)
點(diǎn)擊查看大圖


圖 7: 這個(gè)組件的內(nèi)部結(jié)構(gòu)由其他組件組成。
使用在圖 7 中顯示的例子,Store組件提供了 OrderEntry 接口并要求Account接口。Store組件由三個(gè)組件組成:Order,Customer和Product組件。注重Store的 OrderEntry 和Account接口符號(hào)在組件的邊緣上為何有一個(gè)方塊。這一個(gè)方塊被稱為一個(gè)端口。單純感覺(jué)來(lái)說(shuō),端口提供一種方法,它顯示建模組件所 提供/要求 的接口如何與它里面的部分相關(guān)聯(lián)。4 通過(guò)使用端口,我們可以從外部實(shí)例中分離出Store組件的內(nèi)部部件。在圖 7 中,對(duì)于過(guò)程而言,OrderEntry 端口代表Order組件的 OrderEntry 接口。同時(shí),內(nèi)部的Customer組件要求的Account接口被分配到Store組件的必需的Account端口。通過(guò)連接Account端口,Store組件內(nèi)部部件(例如Customer組件)可以有代表執(zhí)行端口接口的未知外部實(shí)體的本地特征。必需的Account接口將會(huì)由Store組件的外部組件實(shí)現(xiàn)。5在圖 7 中,你可能也注重到了,在內(nèi)部的組件之間的內(nèi)部連接與圖 5 中顯示的那些不同。這是因?yàn)閮?nèi)部結(jié)構(gòu)的這些描繪事實(shí)是嵌套在分類器(在我們的例子中是一個(gè)組件)里的協(xié)作圖,因?yàn)閰f(xié)作圖顯示分類器中的實(shí)體或角色。在內(nèi)部的組件之間建模的關(guān)系以 UML 稱為的一個(gè)組合連接器表示。一個(gè)組合連接器綁定一個(gè)組件 提供 的接口到另外的一個(gè)組件的 必需 接口。組合連接器用緊緊相連的棒棒糖和插座符號(hào)表示。以這種方式畫(huà)這些組合連接器使棒棒糖和插座成為很輕易理解的符號(hào)。結(jié)論 組件圖經(jīng)常是一個(gè)架構(gòu)師在項(xiàng)目的初期就建立的非常重要的圖。然而,組件圖的有用性跨越了系統(tǒng)的壽命。組件圖是無(wú)價(jià)的,因?yàn)樗鼈兡P突臀臋n化了一個(gè)系統(tǒng)的架構(gòu)。因?yàn)榻M件圖文檔化了系統(tǒng)的架構(gòu),開(kāi)發(fā)者和系統(tǒng)可能的系統(tǒng)治理員會(huì)發(fā)現(xiàn)這一工作的要害產(chǎn)品有助于他們理解系統(tǒng)。組件圖也視為軟件系統(tǒng)配置圖的輸入,這將會(huì)是本系列后面的文章主題。腳注

1在UML1.x 中稱為組件的實(shí)際項(xiàng)目,在 UML 2 中稱為產(chǎn)物。一個(gè)產(chǎn)物是一個(gè)物理單位,象一個(gè)文件,可運(yùn)行的程序,腳本,數(shù)據(jù)庫(kù)等等。只有一種產(chǎn)物依靠于實(shí)際的節(jié)點(diǎn);類和組件沒(méi)有“位置”。然而,一個(gè)產(chǎn)物可能顯示組件和其他的分類器(例如類)。一個(gè)單一的組件可能通過(guò)多重產(chǎn)物顯示,它們可能是在相同的或不同的節(jié)點(diǎn)上,因此,一個(gè)單一的組件可以間接地在多重節(jié)點(diǎn)上被實(shí)現(xiàn)。2即使組件是獨(dú)立的單元,它們?nèi)匀豢赡芤揽坑谄渌M件提供的服務(wù)。由于這一點(diǎn),文檔化一個(gè)組件的必需接口是很有用的。3圖3并不顯示Order組件完整的上下文。在一個(gè)真實(shí)的模型中,OrderEntry,AccountPayable 和Person接口會(huì)呈現(xiàn)在系統(tǒng)的模型中。4事實(shí)上,端口適用于任何類型的分類器(例如,一個(gè)類或者你的模型中可能會(huì)有的其他分類器)。為了使本文簡(jiǎn)潔,我在組件分類器及它們的使用中提及端口。5一般來(lái)說(shuō),當(dāng)你畫(huà)一個(gè)端口和一個(gè)接口之間的依存關(guān)系時(shí),依靠方(要求)的接口將會(huì)在運(yùn)行時(shí)間內(nèi)處理所有的處理邏輯。然而,這并不是一種硬性的規(guī)定 -- 對(duì)于四周的組件(舉例來(lái)說(shuō),我們例子中的Store組件),使用自己的進(jìn)程邏輯,而不是僅把進(jìn)程委托給依靠接口,是完全可以接受的。(責(zé)任編輯:銘銘)

上一篇:詳解從UML到BPEL(1)

下一篇:UML類圖詳解(1)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹寨县| 同德县| 台北市| 藁城市| 阜宁县| 泸定县| 衡东县| 宁化县| 晋城| 翁牛特旗| 高台县| 徐水县| 清徐县| 宁国市| 吴川市| 靖远县| 额尔古纳市| 乌拉特后旗| 荥阳市| 东兰县| 资中县| 屯昌县| 阿鲁科尔沁旗| 光山县| 民县| 江山市| 晋城| 栾川县| 上思县| 阿瓦提县| 三原县| 乌拉特前旗| 金塔县| 嘉义县| 吴堡县| 株洲县| 崇礼县| 房山区| 宜宾县| 奉新县| 沧源|