UML建模的要點(diǎn)總結(jié)
預(yù)備知識(shí):
一、UML的特性與發(fā)展現(xiàn)狀
UML是一種Language(語(yǔ)言)
UML是一種Modeling(建模)Language
UML是Unified(統(tǒng)一)Modeling Language
1、已進(jìn)入全面應(yīng)用階段的事實(shí)標(biāo)準(zhǔn)
2、應(yīng)用領(lǐng)域正在逐漸擴(kuò)展,包括嵌入式系統(tǒng)建模、業(yè)務(wù)建模、流程建模等多個(gè)領(lǐng)域
二、建模的目的與原則
1、幫助我們按照實(shí)際情況或按我們需要的樣式對(duì)系統(tǒng)進(jìn)行可視化;提供一種詳細(xì)說(shuō)明系統(tǒng)的結(jié)構(gòu)或行為的方法;給出一個(gè)指導(dǎo)系統(tǒng)構(gòu)造的模板;對(duì)我們所做出的決策進(jìn)行文檔化。
2、僅當(dāng)需要模型時(shí),才構(gòu)建它。
3、選擇要?jiǎng)?chuàng)建什么模型對(duì)如何動(dòng)手解決問(wèn)題和如何形成解決方案有著意義深遠(yuǎn)的影響;每一種模型可以在不同的精度級(jí)別上表示;***的模型是與現(xiàn)實(shí)相聯(lián)系的;單個(gè)模型是不充分的。對(duì)每個(gè)重要的系統(tǒng)***用一組幾乎獨(dú)立的模型去處理。
三、誰(shuí)應(yīng)該建模
2、需求模型:以需求分析人員為主,系統(tǒng)分析員是主力,領(lǐng)域?qū)<姨峁┲笇?dǎo),架構(gòu)師和資深開(kāi)發(fā)人員參與
3、設(shè)計(jì)模型:高層設(shè)計(jì)模型以架構(gòu)師為主,系統(tǒng)分析員從需求方面提供支持,資深開(kāi)發(fā)人員從技術(shù)實(shí)現(xiàn)方面提供支持。詳細(xì)設(shè)計(jì)模型則以資深開(kāi)發(fā)人員為主,架構(gòu)師提供指導(dǎo)。
4、實(shí)現(xiàn)模型:以資深開(kāi)發(fā)人員(設(shè)計(jì)人員)為主,架構(gòu)師提供總體指導(dǎo)。
5、數(shù)據(jù)庫(kù)模型:以數(shù)據(jù)庫(kù)開(kāi)發(fā)人員為主,架構(gòu)師提供指導(dǎo),資深開(kāi)發(fā)人員(設(shè)計(jì)人員)予以配合。
正式開(kāi)始
UML組成,三部分(構(gòu)造塊、規(guī)則、公共機(jī)制),關(guān)系如下圖所示:
一、構(gòu)造塊
1、構(gòu)造塊是對(duì)模型中***有代表性的成分的抽象
行為元素:UML中的動(dòng)詞,它是模型中的動(dòng)態(tài)部分,是一種跨越時(shí)間、空間的行為。
分組元素:UML中的容器,用來(lái)組織模型,使模型更加的結(jié)構(gòu)化。
注釋元素:UML中的解釋部分,和代碼中的注釋語(yǔ)句一樣,是用來(lái)描述模型的。
1.1、建模元素
類(class)和對(duì)象(object)
接口(interface)
主動(dòng)類(active class)
用例(use case)
協(xié)作(collaboration)
構(gòu)件(component)
節(jié)點(diǎn)(node)
類(class)和對(duì)象(object)
類是對(duì)一組具有相同屬性、相同操作、相同關(guān)系和相同語(yǔ)義的對(duì)象的抽象
UML中類是用一個(gè)矩形表示的,它包含三個(gè)區(qū)域,最上面是類名、中間是類的屬性、最下面是類的方法
對(duì)象則是類的一個(gè)實(shí)例 (object is a Instance of Class)
接口(interface)
接口是描述某個(gè)類或構(gòu)件的一個(gè)服務(wù)操作集
主動(dòng)類(active class)
主動(dòng)類實(shí)際上是一種特殊的類。引用它的原因,實(shí)際上是在開(kāi)發(fā)中需要有一些類能夠起到 啟動(dòng)控制活動(dòng)的作用
主動(dòng)類是指其對(duì)象至少擁有一個(gè)進(jìn) 程或線程,能夠啟動(dòng)控制活動(dòng)的類
用例(use case)
用例是著名的大師Ivar Jacobson首先提出的,現(xiàn)已經(jīng)成為了面向?qū)ο筌浖_(kāi)發(fā)中一個(gè)需求分析的最常用工具
用例實(shí)例是在系統(tǒng)中執(zhí)行的一系列動(dòng)作,這些動(dòng)作將生成特定執(zhí)行者可見(jiàn)的價(jià)值結(jié)果。一個(gè) 用例定義一組用例實(shí)例。
協(xié)作(collaboration)
協(xié)作定義了一個(gè)交互,它是由一組共同工作以提供某協(xié)作行為的角色和其他元素構(gòu) 成的一個(gè)群體。
對(duì)于某個(gè)用例的實(shí)現(xiàn)就可 以表示為一個(gè)協(xié)作
構(gòu)件(component)
在實(shí)際的軟件系統(tǒng)中,有許多要比“類”更大的實(shí)體,例如一個(gè)COM組件、一個(gè)DLL文件、一個(gè)JavaBeans、一個(gè)執(zhí)行文件等等。為了更好地對(duì)在UML模型中對(duì)它們進(jìn)行表示,就引入了構(gòu)件(也譯為組件)
構(gòu)件是系統(tǒng)設(shè)計(jì)的一個(gè)模塊化部分,它隱藏了內(nèi)部的實(shí)現(xiàn),對(duì)外提供了一組外部接口。在系統(tǒng)中滿足相同接口的組件可以自由地替換
節(jié)點(diǎn)(node)
為了能夠有效地對(duì)部署的結(jié)構(gòu)進(jìn)行建模,UML引入了節(jié)點(diǎn)這一概念,它可以用來(lái)描述實(shí)際的PC機(jī)、打印機(jī)、服務(wù)器等軟件運(yùn)行的基礎(chǔ)硬件
1.2、行為元素
交互(interaction): 是在特定語(yǔ)境中,共同完成某個(gè)任務(wù)的一組對(duì)象之間交換的信息集合
交互的表示法很簡(jiǎn)單,就是一條有向直線,并在上面標(biāo)有操作名
狀態(tài)機(jī)(state machine):是一個(gè)對(duì)象或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列
在UML模型中將狀態(tài)畫(huà)為一個(gè)圓 角矩形,并在矩形內(nèi)寫(xiě)出狀態(tài)名 稱及其子狀態(tài)
1.3、分組元素
對(duì)于一個(gè)中大型的軟件系統(tǒng)而言,通常會(huì)包含大量的類,因此也就會(huì)存在大量的結(jié)構(gòu)事物、行為事物,為了能夠更加有效地對(duì)其進(jìn)行整合,生成或簡(jiǎn)或繁、或宏觀或微觀的模型,就需要對(duì)其進(jìn)行分組。在UML中,提供了“包(Package)”來(lái)完成這一目標(biāo)
1.4、注釋元素
結(jié)構(gòu)事物是模型的主要構(gòu)造塊,行為事物則是補(bǔ)充了模型中的動(dòng)態(tài)部分,分組事物而是用來(lái)更好地組織模型,似乎已經(jīng)很完整了。而注釋事物則是用來(lái)錦上添花的,它是用來(lái)在UML模型上添加適當(dāng)?shù)慕忉尣糠?/P>
2、關(guān)系
UML模型的關(guān)系比較多,下圖
2.1 關(guān)聯(lián)關(guān)系
關(guān)聯(lián)(Association)表示兩個(gè)類之間存在某種語(yǔ)義上的聯(lián)系。關(guān)聯(lián)關(guān)系提供了通信的路徑,它是所有關(guān)系中最通用、語(yǔ)義最弱的。
在UML中,使用一條實(shí)線來(lái)表示關(guān)聯(lián)關(guān)系
在關(guān)聯(lián)關(guān)系中,有兩種比較特殊的關(guān)系:聚合和組合
聚合關(guān)系:聚合(Aggregation)是一種特殊形式的關(guān)聯(lián)。聚合表示類之間的關(guān)系是整體與部分的關(guān)系
如果發(fā)現(xiàn)“部分”類的存在,是完全依賴于“整體”類的,那么就應(yīng)該使用“組合”關(guān)系來(lái)描述
組合是聚合的變種,加入了一些重要的語(yǔ)義。也就是說(shuō),在一個(gè)組合關(guān)系中一個(gè)對(duì)象一次就只是一個(gè)組合的一部分,“整體”負(fù)責(zé)“部分”的創(chuàng)建和破壞,當(dāng)“整體”被破壞時(shí),“部分”也隨之消失
聚合就像汽車和車胎,汽車壞了胎還可以用。組合就像公司和下屬部門(mén),公司倒閉了部門(mén)也就不存在了!
2.2 泛化、實(shí)現(xiàn)與依賴
泛化關(guān)系描述了一般事物與該事物中的特殊種類之間的關(guān)系,也就是父類與子類之間的關(guān)系。
實(shí)現(xiàn)關(guān)系是用來(lái)規(guī)定接口和實(shí)現(xiàn)接口的類或組件之間的關(guān)系。接口是操作的集合,這些操作用于規(guī)定類或組件的服務(wù)。
#p#
二、規(guī)則
命名:也就是為事物、關(guān)系和圖起名字。和任何語(yǔ)言一樣,名字都是一個(gè)標(biāo)識(shí)符
范圍:與類的作用域相似.
可見(jiàn)性:Public,Protected,Private,Package
三、UML公共機(jī)制
1、規(guī)格描述
在圖形表示法的每個(gè)部分后面都有一個(gè)規(guī)格描述(也稱為詳述),它用來(lái)對(duì)構(gòu)造塊的語(yǔ)法和語(yǔ)義進(jìn)行文字?jǐn)⑹?。這種構(gòu)思,也就使可視化視圖和文字視圖的分離 :
2、UML修飾與通用劃分
在為了更好的表示這些細(xì)節(jié),UML中還提供了一些修飾符號(hào),例如不同可視性的符號(hào)、用斜體字表示抽象類
UML通用劃分:
1)類與對(duì)象的劃分:類是一種抽象,對(duì)象是一個(gè)具體 的實(shí)例
2)接口與實(shí)現(xiàn)的分離:接口是一種聲明、是一個(gè)契 約,也是服務(wù)的入口;實(shí)現(xiàn)則是負(fù)責(zé)實(shí)施接口提供 的契約
3、UML擴(kuò)展機(jī)制
這部分不容易描述,待改(邀月注 2009.2.18)
構(gòu)造型:在實(shí)際的建模過(guò)程中,可能會(huì)需要定義一些特定于某個(gè)領(lǐng)域或某個(gè)系統(tǒng)的構(gòu)造塊
標(biāo)記值則是用來(lái)為事物添加新特性的。標(biāo)記值的表示方法是用形如“{標(biāo)記信息}”的字符串
約束是用來(lái)增加新的語(yǔ)義或改變已存在規(guī)則的一種機(jī)制(自由文本和OCL兩種表示法)。約束的表示法和標(biāo)記值法類似,都是使用花括號(hào)括起來(lái)的串來(lái)表示,不過(guò)它是不能夠放在元素中的,而是放在相關(guān)的元素附近。
4、UML視圖和圖
類圖描述類、類的特性以及類之間的關(guān)系UML 1原有
對(duì)象圖 描述一個(gè)時(shí)間點(diǎn)上系統(tǒng)中各個(gè)對(duì)象的一個(gè)快照 UML 1非正式圖
復(fù)合結(jié)構(gòu)圖 描述類的運(yùn)行時(shí)刻的分解 UML 2.0新增
構(gòu)件圖 描述構(gòu)件的結(jié)構(gòu)與連接UML 1原有
部署圖 描述在各個(gè)節(jié)點(diǎn)上的部署 UML 1原有
包圖描述編譯時(shí)的層次結(jié)構(gòu)UML中非正式圖
用例圖 描述用戶與系統(tǒng)如何交互 UML 1原有
活動(dòng)圖 描述過(guò)程行為與并行行為 UML 1原有
狀態(tài)機(jī)圖描述事件如何改變對(duì)象生命周期UML 1原有
順序圖 描述對(duì)象之間的交互,重點(diǎn)在強(qiáng)調(diào)順序 UML 1原有
通信圖 描述對(duì)象之間的交互,重點(diǎn)在于連接UML 1中的協(xié)作圖
定時(shí)圖 描述對(duì)象之間的交互,重點(diǎn)在于定時(shí)UML 2.0 新增
交互概觀圖 是一種順序圖與活動(dòng)圖的混合 UML 2.0新增
附:開(kāi)發(fā)過(guò)程與圖的對(duì)應(yīng)關(guān)系
【編輯推薦】