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