[導(dǎo)讀] 作為程序猿都最好掌握的一門(mén)語(yǔ)言,那就是UML(Unified Modeling Language),統(tǒng)一建模語(yǔ)言(UML)是軟件工程領(lǐng)域中一種通用的開(kāi)發(fā)建模語(yǔ)言,旨在提供一種可視化系統(tǒng)設(shè)計(jì)的標(biāo)準(zhǔn)方法。是開(kāi)發(fā)人員、系統(tǒng)設(shè)計(jì)人員交流的有效工具。今天來(lái)分享一下UML的一些體會(huì),如有錯(cuò)誤請(qǐng)幫忙指正。
注:UML工具有很多,本文描述的基于Enterprise Architect。
UML時(shí)間進(jìn)化線:
說(shuō)到UML不得不提的三位大神,Grady Booch、Jacobson、James Rumbaugh,三位是UML的創(chuàng)始人,均為軟件工程界的權(quán)威,除了著有多部軟件工程方面的著作之外,在對(duì)象技術(shù)發(fā)展上也有諸多杰出貢獻(xiàn),其中包括Booch方法、對(duì)象建模技術(shù)(OMT)和Objectory(OOSE)過(guò)程。三人被合稱(chēng)為“UML三友”。
面向?qū)ο?a href="http://www.1cnz.cn/v/tag/1315/" target="_blank">編程方法以及描述符號(hào)進(jìn)化歷史:
然后逐步發(fā)展到UML2.5標(biāo)準(zhǔn)。
UML目前的官方組織是https://www.uml.org/
宏觀看UML
UML用圖去描述一個(gè)軟件系統(tǒng),從需求、設(shè)計(jì)、到部署的方方面面都以及覆蓋。那么從總體上先來(lái)看看UML有哪些圖呢?
從描述系統(tǒng)建模目的,UML圖可以分成下面4大類(lèi):
從建模的動(dòng)態(tài)視角/靜態(tài)視角,可以這樣去分類(lèi):
微觀看UML
UML由基本的組成可以從三大塊去了解:事物/關(guān)系/圖
事物(Things)
構(gòu)件事物:UML模型的靜態(tài)部分,描述概念或物理元素
類(lèi):具有相同屬性相同操作 相同關(guān)系相同語(yǔ)義的對(duì)象的描述
接口:描述元素的外部可見(jiàn)行為,即服務(wù)集合的定義說(shuō)明
協(xié)作 描述了事物間的相互作用的集合
用例:代表一個(gè)系統(tǒng)或系統(tǒng)的一部分行為,是一組動(dòng)作序列的集合
構(gòu)件:系統(tǒng)中物理存在,可替換的部件
節(jié)點(diǎn):運(yùn)行時(shí)存在的物理元素
另外,參與者、信號(hào)應(yīng)用、文檔庫(kù)、頁(yè)表等都是上述基本事物的變體
行為事物:UML模型圖的動(dòng)態(tài)部分,描述跨越空間和時(shí)間的行為
狀態(tài)機(jī):描述事物或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列
交互:實(shí)現(xiàn)某功能的一組構(gòu)件事物之間的消息的集合,涉及消息、動(dòng)作序列、鏈接
分組事物:UML模型圖的組織部分,描述事物的組織結(jié)構(gòu)
注釋事物:UML模型的解釋部分,用來(lái)對(duì)模型中的元素進(jìn)行說(shuō)明,解釋
關(guān)系(Relationship)
下面是UML的基礎(chǔ)4大關(guān)系:
實(shí)現(xiàn)(realization)是類(lèi)元之間的語(yǔ)義關(guān)系,其中的一個(gè)類(lèi)元指定了由另一個(gè)類(lèi)元保證執(zhí)行的契約
泛化(generalization)是一種特殊/一般的關(guān)系。也可以看作是常說(shuō)的繼承關(guān)系
關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,它指明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間的聯(lián)系
依賴(lài)(dependency)是兩個(gè)事物之間的語(yǔ)義關(guān)系,其中一個(gè)事物(獨(dú)立事物)發(fā)生變化,會(huì)影響到另一個(gè)事物(依賴(lài)事物)的語(yǔ)義
更為詳細(xì)的描述,看看下面這些表吧:
圖(Diagram)
用例圖/Use Case Diagram:用于描述系統(tǒng)的參與者與用例間的關(guān)系
類(lèi)圖/Class Diagram:?類(lèi)圖以反映類(lèi)的結(jié)構(gòu)(屬性、操作)以及類(lèi)之間的關(guān)系為主要目的,描述了軟件系統(tǒng)的邏輯結(jié)構(gòu),是一種靜態(tài)建模方法
對(duì)象圖/Object Diagram: 描述系統(tǒng)類(lèi)在某個(gè)時(shí)刻的具體實(shí)例化情況,類(lèi)似系統(tǒng)某時(shí)刻對(duì)象角度的快照
序列圖/Sequence Diagram:描述對(duì)象間動(dòng)態(tài)行為在一段時(shí)間的行為序列
時(shí)序圖/Timing Diagram:描述對(duì)象在時(shí)間維度的動(dòng)態(tài)行為
通訊圖/Communication Diagram:類(lèi)似序列圖,相對(duì)序列圖強(qiáng)調(diào)時(shí)間維度,通訊著重描述協(xié)作的邏輯關(guān)系
相互作用概視圖/Interaction Overview Diagram:系統(tǒng)高層級(jí)的交互描述,可以引用其他序列圖、時(shí)序圖、通訊圖、以及交互概視圖
復(fù)合結(jié)構(gòu)圖/Composite Structure Diagram:復(fù)合結(jié)構(gòu)圖反映了類(lèi),接口或組件(及其組件)的內(nèi)部協(xié)作屬性來(lái)描述一個(gè)功能
信息流圖/Info Flow Diagram:描述信息在對(duì)象間、構(gòu)件、包、參與者之間的流向
狀態(tài)機(jī)圖/State Machine Diagram:用于描述元素在不同狀態(tài)間如何遷移的邏輯聯(lián)系
活動(dòng)圖/Activity Diagram:常用于描述系統(tǒng)級(jí)行為的實(shí)現(xiàn)建模。需要考慮多種因素:邏輯條件、并發(fā)、中斷、數(shù)據(jù)訪問(wèn)等等
封裝圖/包圖/Package Diagram:包圖描繪了將模型元素組織到包中以及它們之間的依賴(lài)關(guān)系(包括包導(dǎo)入和包擴(kuò)展等)。它們還提供相應(yīng)命名空間的可視化。
構(gòu)件圖/Component Diagram:用于高層級(jí)描述系統(tǒng)的組成構(gòu)件,以及構(gòu)件間的依賴(lài)關(guān)系
部署圖/Deployment Diagram:描述系統(tǒng)的部署方式(如何部署、部署在什么環(huán)境、硬件環(huán)境、軟件環(huán)境等等)
.....
用例圖
參與者/Actor:圖中的小人,表示系統(tǒng)的用戶(hù),如人/機(jī)器/內(nèi)部的其他子系統(tǒng)/硬件等
用例/Use Case:圖中的橢圓框及描述,描述參與者與系統(tǒng)交互所實(shí)現(xiàn)的工作內(nèi)容經(jīng)常會(huì)配合附加文本進(jìn)行詳細(xì)描述。
邊界/Boundary:方框,描述框里的都是屬于建模對(duì)象里的東東,建模的時(shí)候可以方便識(shí)別與其他系統(tǒng)交互的接口
用例圖在UML語(yǔ)言中處于至關(guān)重要的位置,所謂4+1架構(gòu)設(shè)計(jì),用例圖用于描述系統(tǒng)需求,處于核心位置。屬于Use-case drivering 大法的心臟。
類(lèi)圖/ Class Diagram
這個(gè)類(lèi)圖描述一個(gè)圖像管理系統(tǒng)。
對(duì)象圖/Object Diagram
描述一個(gè)圖書(shū)管理系統(tǒng)某時(shí)刻對(duì)象的快照。
序列圖/Sequence Diagram
此圖說(shuō)明了在交互中滿(mǎn)足視圖歷史用例所需的對(duì)象。對(duì)象之間的消息流為用戶(hù)提供了事務(wù)歷史信息。描述圖書(shū)管理系統(tǒng)如何查閱歷史的操作系列,反應(yīng)了客戶(hù)端與各對(duì)象間消息傳遞關(guān)系。
時(shí)序圖/Timing Diagram
這個(gè)類(lèi)似于芯片的時(shí)序圖概念。下圖描述用戶(hù)在有卡/無(wú)卡對(duì)系統(tǒng)訪問(wèn)的時(shí)間線場(chǎng)景圖:
通訊圖/Communication Diagram
這是一個(gè)嵌入式系統(tǒng)的UML建模,該圖描述一個(gè)壓力控制系統(tǒng)兩個(gè)主要用例的實(shí)現(xiàn):
壓力控制循環(huán),上面的數(shù)字以及箭頭表示消息傳遞流向
通過(guò)HMI設(shè)置壓力
交互概視圖/Interaction Overview
描述了一個(gè)圖書(shū)管理系統(tǒng)如何從訂單發(fā)起后的所有交互概要圖,每個(gè)子圖上面的ref表示引用了一個(gè)更詳細(xì)的圖,比如Add to Shopping Basket 放入購(gòu)物籃的具體動(dòng)作:
復(fù)合結(jié)構(gòu)圖/Composite Structure
狀態(tài)機(jī)圖/State Machine Diagram
這是描述圖書(shū)訂購(gòu)系統(tǒng)如何登錄的狀態(tài)機(jī)圖
活動(dòng)圖/Activity Diagram
常見(jiàn)的活動(dòng)圖
帶泳道活動(dòng)圖
將活動(dòng)分組,明確該組活動(dòng)負(fù)責(zé)的對(duì)象,對(duì)象負(fù)責(zé)該組的全部活動(dòng)
子活動(dòng)圖
活動(dòng)圖中,某幾個(gè)活動(dòng)可以組成一個(gè)內(nèi)聚的子活動(dòng)。
可中斷活動(dòng)圖
這里的中斷并不嚴(yán)謹(jǐn),本圖中表示這個(gè)活動(dòng)事物是可以取消的。
封裝圖/包圖/Package Diagram
構(gòu)件圖/ Component Diagram
用以描述構(gòu)件之間的相互關(guān)系。
部署圖/Deployment Diagram
總結(jié)一下
本文走馬觀花的將UML大致梳理了一下,并結(jié)合EA的例圖,將常見(jiàn)的UML圖的作用大致描述一遍,供大家參考。對(duì)于軟件開(kāi)發(fā)人員而言,UML還是很有必要學(xué)習(xí)掌握的。
-
UML
+關(guān)注
關(guān)注
0文章
122瀏覽量
30858 -
可視化系統(tǒng)
+關(guān)注
關(guān)注
0文章
30瀏覽量
2183
原文標(biāo)題:程序猿都應(yīng)學(xué)習(xí)的語(yǔ)言:看25張圖學(xué)UML
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論