首發:嵌入式客棧
作者:逸珺
[導讀] 作為程序猿都最好掌握的一門語言,那就是UML(Unified Modeling Language),統一建模語言(UML)是軟件工程領域中一種通用的開發建模語言,旨在提供一種可視化系統設計的標準方法。是開發人員、系統設計人員交流的有效工具。今天來分享一下UML的一些體會,如有錯誤請幫忙指正。
注:UML工具有很多,本文描述的基于Enterprise Architect。最近微信平臺排序規則升級了,如不想錯過小號文章,建議給小號加下星標。
UML前世今生
UML時間進化線:
說到UML不得不提的三位大神,Grady Booch、Jacobson、James Rumbaugh,三位是UML的創始人,均為軟件工程界的權威,除了著有多部軟件工程方面的著作之外,在對象技術發展上也有諸多杰出貢獻,其中包括Booch方法、對象建模技術(OMT)和Objectory(OOSE)過程。三人被合稱為“UML三友”。
面向對象編程方法以及描述符號進化歷史:
然后逐步發展到UML2.5標準。
UML目前的官方組織是https://www.uml.org/
宏觀看UML
UML用圖去描述一個軟件系統,從需求、設計、到部署的方方面面都以及覆蓋。那么從總體上先來看看UML有哪些圖呢?
從描述系統建模目的,UML圖可以分成下面4大類:
從建模的動態視角/靜態視角,可以這樣去分類:
微觀看UML
UML由基本的組成可以從三大塊去了解:事物/關系/圖
事物(Things)
- 構件事物:UML模型的靜態部分,描述概念或物理元素
- 類:具有相同屬性相同操作 相同關系相同語義的對象的描述
- 接口:描述元素的外部可見行為,即服務集合的定義說明
- 協作 描述了事物間的相互作用的集合
- 用例:代表一個系統或系統的一部分行為,是一組動作序列的集合
- 構件:系統中物理存在,可替換的部件
- 節點:運行時存在的物理元素
- 另外,參與者、信號應用、文檔庫、頁表等都是上述基本事物的變體
- 行為事物:UML模型圖的動態部分,描述跨越空間和時間的行為
- 狀態機:描述事物或交互在生命周期內響應事件所經歷的狀態序列
- 交互:實現某功能的一組構件事物之間的消息的集合,涉及消息、動作序列、鏈接
- 分組事物:UML模型圖的組織部分,描述事物的組織結構
- 注釋事物:UML模型的解釋部分,用來對模型中的元素進行說明,解釋
關系(Relationship)
下面是UML的基礎4大關系:
- 實現(realization)是類元之間的語義關系,其中的一個類元指定了由另一個類元保證執行的契約
- 泛化(generalization)是一種特殊/一般的關系。也可以看作是常說的繼承關系
- 關聯(association)是一種結構關系,它指明一個事物的對象與另一個事物的對象間的聯系
- 依賴(dependency)是兩個事物之間的語義關系,其中一個事物(獨立事物)發生變化,會影響到另一個事物(依賴事物)的語義
更為詳細的描述,看看下面這些表吧:
圖(Diagram)
- 用例圖/Use Case Diagram:用于描述系統的參與者與用例間的關系
- 類圖/Class Diagram:?類圖以反映類的結構(屬性、操作)以及類之間的關系為主要目的,描述了軟件系統的邏輯結構,是一種靜態建模方法
- 對象圖/Object Diagram: 描述系統類在某個時刻的具體實例化情況,類似系統某時刻對象角度的快照
- 序列圖/Sequence Diagram:描述對象間動態行為在一段時間的行為序列
- 時序圖/Timing Diagram:描述對象在時間維度的動態行為
- 通訊圖/Communication Diagram:類似序列圖,相對序列圖強調時間維度,通訊著重描述協作的邏輯關系
- 相互作用概視圖/Interaction Overview Diagram:系統高層級的交互描述,可以引用其他序列圖、時序圖、通訊圖、以及交互概視圖
- 復合結構圖/Composite Structure Diagram:復合結構圖反映了類,接口或組件(及其組件)的內部協作屬性來描述一個功能
- 信息流圖/Info Flow Diagram:描述信息在對象間、構件、包、參與者之間的流向
- 狀態機圖/State Machine Diagram:用于描述元素在不同狀態間如何遷移的邏輯聯系
- 活動圖/Activity Diagram:常用于描述系統級行為的實現建模。需要考慮多種因素:邏輯條件、并發、中斷、數據訪問等等
- 封裝圖/包圖/Package Diagram:包圖描繪了將模型元素組織到包中以及它們之間的依賴關系(包括包導入和包擴展等)。它們還提供相應命名空間的可視化。
- 構件圖/Component Diagram:用于高層級描述系統的組成構件,以及構件間的依賴關系
- 部署圖/Deployment Diagram:描述系統的部署方式(如何部署、部署在什么環境、硬件環境、軟件環境等等)
- .....
用例圖
- 參與者/Actor:圖中的小人,表示系統的用戶,如人/機器/內部的其他子系統/硬件等
- 用例/Use Case:圖中的橢圓框及描述,描述參與者與系統交互所實現的工作內容經常會配合附加文本進行詳細描述。
- 邊界/Boundary:方框,描述框里的都是屬于建模對象里的東東,建模的時候可以方便識別與其他系統交互的接口
用例圖在UML語言中處于至關重要的位置,所謂4+1架構設計,用例圖用于描述系統需求,處于核心位置。屬于Use-case drivering 大法的心臟。
類圖/ Class Diagram
這個類圖描述一個圖像管理系統。
對象圖/Object Diagram
描述一個圖書管理系統某時刻對象的快照。
序列圖/Sequence Diagram
此圖說明了在交互中滿足視圖歷史用例所需的對象。對象之間的消息流為用戶提供了事務歷史信息。描述圖書管理系統如何查閱歷史的操作系列,反應了客戶端與各對象間消息傳遞關系。
時序圖/Timing Diagram
這個類似于芯片的時序圖概念。下圖描述用戶在有卡/無卡對系統訪問的時間線場景圖:
通訊圖/Communication Diagram
這是一個嵌入式系統的UML建模,該圖描述一個壓力控制系統兩個主要用例的實現:
- 壓力控制循環,上面的數字以及箭頭表示消息傳遞流向
- 通過HMI設置壓力
交互概視圖/Interaction Overview
描述了一個圖書管理系統如何從訂單發起后的所有交互概要圖,每個子圖上面的ref表示引用了一個更詳細的圖,比如Add to Shopping Basket 放入購物籃的具體動作:
復合結構圖/Composite Structure
狀態機圖/State Machine Diagram
這是描述圖書訂購系統如何登錄的狀態機圖
活動圖/Activity Diagram
常見的活動圖
帶泳道活動圖
將活動分組,明確該組活動負責的對象,對象負責該組的全部活動
子活動圖
活動圖中,某幾個活動可以組成一個內聚的子活動。
可中斷活動圖
這里的中斷并不嚴謹,本圖中表示這個活動事物是可以取消的。
封裝圖/包圖/Package Diagram
構件圖/ Component Diagram
用以描述構件之間的相互關系。
部署圖/Deployment Diagram
總結一下
本文走馬觀花的將UML大致梳理了一下,并結合EA的例圖,將常見的UML圖的作用大致描述一遍,供大家參考。對于軟件開發人員而言,UML還是很有必要學習掌握的。
本文辛苦原創分享,如果覺得有價值也請幫忙點贊/轉發支持,不勝感激!
_—END_—
審核編輯:符乾江-
UML
+關注
關注
0文章
122瀏覽量
30872 -
深度學習
+關注
關注
73文章
5506瀏覽量
121258
發布評論請先 登錄
相關推薦
評論