[轉(zhuǎn)]用EA 建模設(shè)計(jì)Blog全過(guò)程EA AND ROSE:
UML實(shí)踐----用例圖、順序圖,、狀態(tài)圖,、類(lèi)圖、包圖,、協(xié)作圖
面向?qū)ο蟮膯?wèn)題的處理的關(guān)鍵是建模問(wèn)題,。建模可以把在復(fù)雜世界的許多重要的細(xì)節(jié)給抽象出,。許多建模工具封UML(也就是Unified Modeling Language™),,這篇課程的目的是展示出UML的精彩之處。 UML中有九種建模的圖標(biāo),,即:
為什么UML很重要,? 為了回答這個(gè)問(wèn)題,我們看看建筑行業(yè),。設(shè)計(jì)師設(shè)計(jì)出房子,。施工人員使用這個(gè)設(shè)計(jì)來(lái)建造房子。建筑越復(fù)雜,,設(shè)計(jì)師和施工人員之間的交流就越重要,。藍(lán)圖就成為了這個(gè)行業(yè)中的設(shè)計(jì)師和施工人員的必修課。 寫(xiě)軟件就好像建造建筑物一樣,。系統(tǒng)越復(fù)雜,,參與編寫(xiě)與配置軟件的人員之間的交流也就越重要。在過(guò)去十年里UML就成為分析師,設(shè)計(jì)師和程序員之間的“建筑藍(lán)圖”?,F(xiàn)在它已經(jīng)成為了軟件行業(yè)的一部分了,。UML提供了分析師,設(shè)計(jì)師和程序員之間在軟件設(shè)計(jì)時(shí)的通用語(yǔ)言,。 UML被應(yīng)用到面向?qū)ο蟮膯?wèn)題的解決上,。想要學(xué)習(xí)UML必須熟悉面向?qū)ο蠼鉀Q問(wèn)題的根本原則――都是從模型的建造開(kāi)始的。一個(gè)模型model就是根本問(wèn)題的抽象,。域domain就是問(wèn)題所處的真實(shí)世界,。 模型是由對(duì)象objects組成的,它們之間通過(guò)相互發(fā)送消息messages來(lái)相互作用的,。記住把一個(gè)對(duì)象想象成“活著的”,。對(duì)象有他們知道的事(屬性attributes)和他們可以做的事(行為或操作behaviors or operations)。對(duì)象的屬性的值決定了它的狀態(tài)state,。 類(lèi)Classes是對(duì)象的“藍(lán)圖”,。一個(gè)類(lèi)在一個(gè)單獨(dú)的實(shí)體中封裝了屬性(數(shù)據(jù))和行為(方法或函數(shù))。對(duì)象是類(lèi)的實(shí)例instances,。 用例圖 用例圖Use case diagrams描述了作為一個(gè)外部的觀察者的視角對(duì)系統(tǒng)的印象,。強(qiáng)調(diào)這個(gè)系統(tǒng)是什么而不是這個(gè)系統(tǒng)怎么工作。 用例圖與情節(jié)緊緊相關(guān)的,。情節(jié)scenario是指當(dāng)某個(gè)人與系統(tǒng)進(jìn)行互動(dòng)時(shí)發(fā)生的情況,。下面是一個(gè)醫(yī)院門(mén)診部的情節(jié)。 “一個(gè)病人打電話(huà)給門(mén)診部預(yù)約一年一次的身體檢查,。接待員找出在預(yù)約記錄本上找出最近的沒(méi)有預(yù)約過(guò)的時(shí)間,,并記上那個(gè)時(shí)間的預(yù)約記錄。” 用例Use case是為了完成一個(gè)工作或者達(dá)到一個(gè)目的的一系列情節(jié)的總和,。角色actor是發(fā)動(dòng)與這個(gè)工作有關(guān)的事件的人或者事情,。角色簡(jiǎn)單的扮演著人或者對(duì)象的作用。下面的圖是一個(gè)門(mén)診部Make Appointment用例,。角色是病人,。角色與用例的聯(lián)系是通訊聯(lián)系communication association(或簡(jiǎn)稱(chēng)通訊communication)
角色是人狀的圖標(biāo),用例是一個(gè)橢圓,,通訊是連接角色和用例的線,。 一個(gè)用例圖是角色,用例,,和它們之間的聯(lián)系的集合,。我們已經(jīng)把Make Appointment作為一個(gè)含有四個(gè)角色和四個(gè)用例的圖的一部分。注意一個(gè)單獨(dú)的用例可以有多個(gè)角色,。
用例圖在三個(gè)領(lǐng)域很有作用,。
類(lèi)圖 類(lèi)圖Class diagram通過(guò)顯示出系統(tǒng)的類(lèi)以及這些類(lèi)之間的關(guān)系來(lái)表示系統(tǒng),。類(lèi)圖是靜態(tài)的-它們顯示出什么可以產(chǎn)生影響但不會(huì)告訴你什么時(shí)候產(chǎn)生影響。 下面是一個(gè)顧客從零售商處預(yù)定商品的模型的類(lèi)圖,。中心的類(lèi)是Order,。連接它的是購(gòu)買(mǎi)貨物的Customer和Payment。Payment有三種形式:Cash,,Check,,或者Credit。訂單包括OrderDetails(line item),,每個(gè)這種類(lèi)都連著Item,。
UML類(lèi)的符號(hào)是一個(gè)被劃分成三塊的方框:類(lèi)名,屬性,,和操作。抽象類(lèi)的名字,,像Payment是斜體的,。類(lèi)之間的關(guān)系是連接線。 類(lèi)圖有三種關(guān)系,。
一個(gè)關(guān)聯(lián)有兩個(gè)尾端。每個(gè)尾端可以有一個(gè)角色名role name來(lái)說(shuō)明關(guān)聯(lián)的作用,。比如,,一個(gè)OrderDetail實(shí)例是一個(gè)Order實(shí)例的項(xiàng)目,。 關(guān)聯(lián)上的方向性navigability箭頭表示該關(guān)聯(lián)傳遞或查詢(xún)的方向。OrderDetail類(lèi)可以查詢(xún)他的Item,,但不可以反過(guò)來(lái)查詢(xún),。箭頭方向同樣可以告訴你哪個(gè)類(lèi)擁有這個(gè)關(guān)聯(lián)的實(shí)現(xiàn);也就是,,OrderDetail擁有Item,。沒(méi)有方向性的箭頭的關(guān)聯(lián)是雙向。 關(guān)聯(lián)尾端的數(shù)字表示該關(guān)聯(lián)另一邊的一個(gè)實(shí)例可以對(duì)應(yīng)的數(shù)字端的實(shí)例的格數(shù),,通過(guò)這種方式表達(dá)關(guān)聯(lián)的多樣性multiplicity,。多樣性的數(shù)字可以是一個(gè)單獨(dú)的數(shù)字或者是一個(gè)數(shù)字的范圍。在例子中,,每個(gè)Order只有一個(gè)Customer,,但一個(gè)Customer可以有任意多個(gè)Order。 下面這個(gè)表給出了最普遍的多樣性示例,。
每個(gè)類(lèi)圖包括類(lèi),,關(guān)聯(lián)和多樣性表示。方向性和角色是為了使圖示得更清楚時(shí)可選的項(xiàng)目,。 包和對(duì)象圖 為了簡(jiǎn)單地表示出復(fù)雜的類(lèi)圖,,可以把類(lèi)組合成包packages。一個(gè)包是UML上有邏輯關(guān)系的元件的集合,。下面這個(gè)圖是是一個(gè)把類(lèi)組合成包的一個(gè)商業(yè)模型,。 dependencies關(guān)系。如果另一個(gè)的包B改變可能會(huì)導(dǎo)致一個(gè)包A改變,,則包A依賴(lài)包B,。
包是用一個(gè)在上方帶有小標(biāo)簽的矩形表示的。包名寫(xiě)在標(biāo)簽上或者在矩形里面,。點(diǎn)化線箭頭表示依賴(lài) 對(duì)象圖Object diagrams用來(lái)表示類(lèi)的實(shí)例,。他們?cè)诮忉審?fù)雜關(guān)系的細(xì)小問(wèn)題時(shí)(特別是遞歸關(guān)系時(shí))很有用。 這個(gè)類(lèi)圖示一個(gè)大學(xué)的Department可以包括其他很多的Departments,。
這個(gè)對(duì)象圖示上面類(lèi)圖的實(shí)例,。用了很多具體的例子。 UML中實(shí)例名帶有下劃線,。只要意思清楚,,類(lèi)或?qū)嵗梢栽趯?duì)象圖中被省略。
每個(gè)類(lèi)圖的矩形對(duì)應(yīng)了一個(gè)單獨(dú)的實(shí)例,。實(shí)例名稱(chēng)中所強(qiáng)調(diào)的UML圖表,。類(lèi)或?qū)嵗拿Q(chēng)可能是省略對(duì)象圖表只要圖的意義仍然是明確的。 順序圖 類(lèi)圖和對(duì)象圖是靜態(tài)模型的視圖,。交互圖是動(dòng)態(tài)的,。他們描述了對(duì)象間的交互作用,。 順序圖將交互關(guān)系表示為一個(gè)二維圖??v向是時(shí)間軸,,時(shí)間沿豎線向下延伸。橫向軸代表了在協(xié)作中各獨(dú)立對(duì)象的類(lèi)元角色,。類(lèi)元角色用生命線表示,。當(dāng)對(duì)象存在時(shí),角色用一條虛線表示,,當(dāng)對(duì)象的過(guò)程處于激活狀態(tài)時(shí),,生命線是一個(gè)雙道線。 消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象生命線的箭頭表示,。箭頭以時(shí)間順序在圖中從上到下排列,。
協(xié)作圖 協(xié)作圖也是互動(dòng)的圖表。他們像序列圖一樣也傳遞相同的信息,,但他們不關(guān)心什么時(shí)候消息被傳遞,,只關(guān)心對(duì)象的角色。在序列圖中,,對(duì)象的角色放在上面而消息則是連接線,。
對(duì)象角色矩形上標(biāo)有類(lèi)或?qū)ο竺ɑ蛘叨加校n?lèi)名前面有個(gè)冒號(hào)(:),。 協(xié)作圖的每個(gè)消息都有一個(gè)序列號(hào),。頂層消息的數(shù)字是1。同一個(gè)等級(jí)的消息(也就是同一個(gè)調(diào)用中的消息)有同樣的數(shù)字前綴,,再根據(jù)他們出現(xiàn)的順序增加一個(gè)后綴1,,2等等,。 狀態(tài)圖 對(duì)象擁有行為和狀態(tài),。對(duì)象的狀態(tài)是由對(duì)象當(dāng)前的行動(dòng)和條件決定的。狀態(tài)圖statechart diagram顯示出了對(duì)象可能的狀態(tài)以及由狀態(tài)改變而導(dǎo)致的轉(zhuǎn)移,。 登錄系統(tǒng)可以被劃分為四種不重疊的狀態(tài):Getting SSN, Getting PIN, Validating, 以及 Rejecting,。每個(gè)狀態(tài)都有一套完整的轉(zhuǎn)移transitions來(lái)決定狀態(tài)的順序。
狀態(tài)是用圓角矩形來(lái)表示的,。轉(zhuǎn)移則是使用帶箭頭的連線表示,。觸發(fā)轉(zhuǎn)移的事件或者條件寫(xiě)在箭頭的旁邊。我們的圖上有兩個(gè)自轉(zhuǎn)移,。一個(gè)是在Getting SSN,,另一個(gè)則在上Getting PIN,。 初始狀態(tài)(黑色圓圈)是開(kāi)始動(dòng)作的虛擬開(kāi)始。結(jié)束狀態(tài)也是動(dòng)作的虛擬結(jié)束,。 事件或條件觸發(fā)動(dòng)作時(shí)用(/動(dòng)作)表示,。當(dāng)進(jìn)入Validating狀態(tài)時(shí),對(duì)象并不等外部事件觸發(fā)轉(zhuǎn)移,。取而代之,,它產(chǎn)生一個(gè)動(dòng)作。動(dòng)作的結(jié)果決定了下一步的狀態(tài),。 活動(dòng)圖 活動(dòng)圖activity diagram是一個(gè)很特別的流程圖,。活動(dòng)圖和狀態(tài)圖之間是有關(guān)系的,。狀態(tài)圖把焦點(diǎn)集中在過(guò)程中的對(duì)象身上,,而活動(dòng)圖則集中在一個(gè)單獨(dú)過(guò)程動(dòng)作流程?;顒?dòng)圖告訴了我們活動(dòng)之間的依賴(lài)關(guān)系,。 對(duì)我們的例子來(lái)說(shuō),我們使用如下的過(guò)程,。 “通過(guò)ATM來(lái)取錢(qián),。” 這個(gè)活動(dòng)有三個(gè)類(lèi)Customer, ATM和 Bank。整個(gè)過(guò)程從黑色圓圈開(kāi)始到黑白的同心圓結(jié)束,?;顒?dòng)用圓角矩形表示。
活動(dòng)圖可以被分解成許多對(duì)象泳道swimlanes ,,可以決定哪些對(duì)象負(fù)責(zé)那些活動(dòng),。每個(gè)活動(dòng)都有一個(gè)單獨(dú)的轉(zhuǎn)移transition連接這其他的活動(dòng)。 轉(zhuǎn)移可能分支branch成兩個(gè)以上的互斥的轉(zhuǎn)移,。保護(hù)表達(dá)式(在[]中)表示轉(zhuǎn)移是從一個(gè)分支中引出的,。分支以及分支結(jié)束時(shí)的合并merge在圖中用菱形表示。 轉(zhuǎn)移也可以分解fork成兩個(gè)以上的并行活動(dòng),。分解以及分解結(jié)束時(shí)的線程結(jié)合join在圖中用粗黑線表示 組件與配置圖 組件component是代碼模塊,。組件圖是是類(lèi)圖的物理實(shí)現(xiàn)。 配置圖Deployment diagrams則是顯示軟件及硬件的配置,。 下面的配置圖說(shuō)明了與房地產(chǎn)事務(wù)有關(guān)的軟件及硬件組件的關(guān)系,。
物理上的硬件使用節(jié)點(diǎn)nodes表示。每個(gè)組件屬于一個(gè)節(jié)點(diǎn),。組件用左上角帶有兩個(gè)小矩形的矩形表示,。
轉(zhuǎn):http://www.cnblogs.com/catti/archive/2009/04/21/1440494.html |
|
來(lái)自: 昵稱(chēng)4253149 > 《我的圖書(shū)館》