天天看點

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

作者:閃念基因
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

看網上有很多關于 UML 圖的介紹,但都不完整,于是參考了一些 UML 書籍、部落格、視訊、官網,并基于最新的 UML 2.5 版本(涵蓋了 UML 14 種圖),總結了這篇文章,希望能給系統分析設計的同學一點參考。

本文分為上下兩篇,主要講解 UML 核心圖的結構和一些案例,偏向于操作介紹,如果發現本篇文章有任何問題,或在使用 UML 畫圖過程中遇到問題,歡迎留言評論。

01

UML的定義

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

UML 全稱 Unified Modeling Language,即統一模組化語言,是軟體工程領域中一種通用的、開發性的模組化語言,它不是一種程式設計語言,旨在提供一種标準的方法來可視化系統的設計。它比 C++、Java 這樣的程式設計語言抽象層次更高,可以适用于任何面向對象的程式設計語言。這種模組化語言已經得到了工業界的廣泛支援和應用,并已被 ISO 确立為國際标準。

統一模組化語言是由對象管理組織(Object Management Group, OMG)制定的一個通用的、可視化的模組化語言标準,可以用來可視化、描述、構造和文檔化軟體密集型系統的各種工件。它是由資訊系統和面向對象領域的 3 位著名的方法學家 Grady Booch、James Rumbaugh 和 Ivar Jacobson(threeAmigos,三友)提出的。

在面向對象的軟體開發中,選擇 UML 已經成了必然的趨勢。面向對象專家 Martin Flower 曾經這樣說過:“如果正在使用其他的舊技術模組化,我強烈建議您馬上轉用 UML,因為它明顯地将成為符号系統的統一标準。如果正在考慮開始使用設計符号來工作,UML 是一個好的選擇,因為它已經統治業界了。”在很多情況下,開發人員都應該選擇 UML 作為模組化語言。

作為一種統一模組化語言,UML 的統一并不僅僅是三大面向對象方法的統一,還合并了許多面向對象方法中被普遍接受的概念,對每一種概念,UML 都給出了清晰的定義、表示法和有關術語。

02

UML的曆史

UML 的誕生經曆了一個漫長的曆程。從 20 世紀 80 年代初期開始,衆多的方法學家都在嘗試用不同的方法進行面向對象的分析與設計。當時,許多方法開始在一些項目中發揮作用,如 Booch、OMT、Shlaer/Mellor、Odell/Martin、RDD、Objectory 等方法。到了 20 世紀 90 年代中期出現了比較完善的面向對象方法,知名的有 Booch 94、OMT 2、OOSE、Fusion 等方法,那時面向對象方法已經成為軟體分析和設計方法的主流。

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

目前,UML 主要存在 UML 1.x 和 UML 2 兩個大的版本系列。UML 1.x 主要是指 UML 1.0~UML 1.5 的這幾個版本,版本之間有一些差别,但總體差别不大。而 UML 2 則是指從 2005 年正式釋出的 UML 2 之後的各個版本。

相比 UML 1.x,UML 2 的變化很大,首先是結構的調整,從 UML 2 開始,UML 标準被劃分為兩個相對獨立的部分:基礎結構和上層結構;其次内容上也有很大的變化,包括底層概念的統一、各種圖形的改進和增加等。目前,UML 2 已經成為發展趨勢。

早期的 UML 1.x 隻提供了 9 種圖形。包圖、組合結構圖、外廓圖、互動概覽圖、時間圖這 5 種是在 UML 2 中新增的(外廓圖是在 UML 2.3 之後才有的);而通信圖則是由 UML 1.x 的協作圖改名而來,其他的一些圖形也做了适當的調整和擴充。

本篇文章的核心圖介紹采用最新的 UML 2.5 作為模組化語言。

03

UML核心圖介紹

UML的分類

PRODUCT

UML 語義結構

UML 即然是一種語言,那麼它必然有語義結構,下圖來自 UML 2.5 規範,列出了 UML 語義域分層的詳細分解結構。

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

按照 UML 的語義結構,可以将 UML 劃分為三大類,結構模組化(Structural Modeling)、行為模組化(Behavioral Modeling)、補充模組化(Supplemental Modeling)

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

動作(Actions)是 UML 中的基本行為單元,用于定義細粒度的行為;在此基礎上形成高層次的行為機制,包括狀态機(StateMachines)、活動(Activities)和互動(Interactions)等。

既有結構化又有行為的輔助模組化結構,包括用例(Use Cases)、部署(Deployments)和資訊流(Information Flows)。

14種UML的分類

PRODUCT

目前最新的UML 2 中有 14 種圖,相比 UML 1.x 新增了 5 種圖(包圖、組合結構圖、外廓圖、互動概覽圖、時間圖),按照靜态結構和動态行為劃分如下:

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

靜态結構圖的主元素是靜态元素,如類圖的類、接口;

動态行為圖的主元素是動态元素,如活動圖的主元素是用例的動作

(下圖來自 wikipedia)

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

從對象、事物、包、系統、構件次元來看 這 14 種圖的差異點

動态行為圖(7 種)

對象互動圖

對象之間的資訊互動的圖(互動圖)

強調消息執行順序:順序圖(時序圖)

強調對象之間的協作:通信圖(協作圖)

強調真實時間資訊:時間圖

互動圖之間的執行順序:互動概覽圖

對象和對象目标之間的關系:用例圖

事物執行的控制流和資料流:活動圖

對象自身經曆的狀态轉移:狀态圖

靜态結構圖(7 種)

包和包之間的關系:包圖

系統的類/接口的協作和關系:類圖

對象和對象之間的關系的圖:對象圖

系統某一部分的内部結構:組合架構圖

構件展示及構件互相依賴關系:構件圖

構件在各節點部署的展示:部署圖

現有圖的擴充:外廓圖

它們的共同點有以下幾個:

  • 描述系統中單個或多個事物動态行為特性
  • 互動圖(順序圖、通信圖、互動概覽圖、時間圖)側重描述事物間的互動過程
  • 行為圖(活動圖、狀态機圖)側重描述事物本身的行為特征

它們的差別主要展現在每種圖形的側重點不同:

  • 互動圖(順序圖、通信圖):适合描述單個用例中多個對象之間的協作行為。
  • 互動概覽圖:用于描述複雜用例多個順序圖間的控制流程。
  • 時間圖:用于描述時間受控的單個或多個對象間狀态互動。
  • 狀态機圖:适合描述跨越多個用例的單個對象的行為如何影響該對象的狀态。
  • 活動圖:适合描述多個對象跨越多個用例時的總貌。

04

從業務分析設計過程看使用階段

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

(1)業務模組化:采用軟體模組化方法分析和了解待開發的業務,描述業務流程;其目标是認識業務本質,該業務本質是後續用例模組化的基礎。

(2)用例模組化:采用 UML 用例模組化技術描述軟體需求,該需求模型将為後續用例分析提供輸入。

(3)用例分析:采用 UML 用例分析技術分析軟體需求,建立軟體系統的分析模型。

(4)架構設計:在系統的全局範圍内,以分析模型為基礎,設計系統的架構。

(5)構件設計:根據架構設計的成果,将分析模型細化,設計系統構件的實作細節。

(6)代碼實作:将系統構件映射到目智語言上。

下面将從“作用”、“組成元素”、“示例”三個次元介紹每個 UML 圖用法

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

靜态結構圖(7種)

PRODUCT

1、類圖

1.1、作用

類圖(Class Diagram)是軟體的藍圖,用于較長的描述系統内各個對象的相關類,以及這些類之間的靜态關系;

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

1.2、組成元素

組成元素 符号
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
例子:
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
接口
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
對象
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
關系 依賴(Dependency)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
關聯(Association)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
聚合(Aggregation)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
組合(Composition)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
泛化(Generalization)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
實作(Realization)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

1.3、示例

(1)圖書館管理系統類圖

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

2、包圖

2.1、作用

包圖(Package Diagram)用于展現由模型本身分解而成的組織單元(包)及它們的依賴關系

核心概念

  • 包(架構、層、子系統)
  • 依賴

2.2、組成元素

組成元素 符号
包(Package)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
關系 依賴(Dependency)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
關聯(Association)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
聚合(Aggregation)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
組合(Composition)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
泛化(Generalization)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
實作(Realization)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

2.3、示例

在圖書館管理系統中,如上圖所示,系統高層分為 3 層,其中界面層負責使用者互動;資料通路層負責通路底層資訊;業務邏輯層負責協調界面層和資料通路層間的通路邏輯。此外,對于資料通路層内部,又可以采用分包的方式進行邏輯劃分,如圖右半部分所示,分為借閱包、讀者包、圖書包。

3、對象圖

3.1、作用

對象圖(Object Diagram)用于表示在某一時刻,類的對象的靜态結構和行為;

核心概念

對象、連結、多重性

3.2、組成元素

組成元素 符号
對象(Object)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
關系 依賴(Dependency)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
關聯(Association)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
聚合(Aggregation)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
組合(Composition)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
泛化(Generalization)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
實作(Realization)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

3.3、示例

(1)某教職工借閱資訊對象圖

4、組合結構圖

4.1、作用

組合結構圖(Composite Structure Diagram)用于描述系統中某一部分(組合結構)的内部結構,包括該部分與系統其他部分的互動點。

核心概念

組合結構、部件、端口、角色綁定。

4.2、組成元素

組成元素 符号
部件(Part)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
端口(Port)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
協作(Collaboration)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
連接配接(Connector)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
角色綁定(Role binding)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

4.3、示例

(1)借書過程的組合結構圖

為了完成系統所需的某些功能(如借書),需要幾個類之間進行互相協作,而這幾個類就構成了一個組合結構。為了完成借書的功能,這些類之間存在着一定的接口(組合結構圖中稱為端口)和連接配接,這些資訊即可通過組合結構圖來反映。上圖展示了借書過程的組合結構圖,為了完成借書的過程,在該圖中需要設定借閱使用者界面類(BorrowUI)、借閱控制類(BorrowCtrl)、借閱資訊類(BorrowInfo)、讀者類(Reader)和圖書類(Book)。

5、構件圖

5.1、作用

構件圖(Component Diagram)将封裝類作為構件,描述在系統實作環境中的軟體構件和它們之間的關系。

核心概念

  • 構件、工件、接口(所供接口、所需接口)
  • 裝配連接配接、委托連接配接、依賴。

推薦場景:系統設計(系統依賴、邊界)、實作、部署等

5.2、組成元素

組成元素 符号
構件(Component)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
所供接口(Shallow History)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
所需接口(Required Interface)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
裝配連接配接(Assembly Connector)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
委托連接配接(Delegate Connector)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
依賴(Dependency)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

PS:所供接口和所需接口是 UML 2 中提出的概念,UML 1.x 隻有接口的概念,特指所供接口

5.3、示例

(1)圖書館管理系統構件圖

UML 1.x 中的構件圖

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

UML 2 中的構件圖(新增了所供接口和所需接口圖示)

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

(2)ACI 排程系統構件圖

(3)Policy Admin Components Wiring

6、部署圖

6.1、作用

部署圖(Deployment Diagram)描述系統所需的硬體環境的實體結構,以及軟體資源在硬體環境中的部署方案。部署圖中的主要概念包括以下幾個。

核心概念

  • 節點、工件、部署規範
  • 連接配接、依賴

推薦場景

系統設計、實施、部署等場合。

6.2、組成元素

組成元素 符号
節點(Node)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
工件(Artifacts)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
部署規範(Deployment)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

通信路徑

(Communication Path)

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
依賴(Dependency)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
部署(Deploy)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
承載(Manifestation)
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

6.3、示例

(1)圖書館管理系統部署圖

從圖中可以看到,該系統共有 4 類不同的節點。其中“讀者用戶端”面向普通讀者提供查詢、預約等功能;“從業人員前置機”面向從業人員用于實作具體的借書、還書業務;“背景資料庫”用于運作系統資料庫環境;“管理者背景”用于幫助管理者實作各種系統維護功能。

(2)deployment 實體部署圖

7、外廓圖

7.1、作用

外廓(Profile)是基于 UML 元素的子集為特定領域定義 UML 的一個特定版本,即定義了一組對 UML 已有模型的擴充和限定機制,以用于某個特定領域,自 UML 2.3 起,UML标準新增了外廓圖。即如果目前所有的 UML 圖如果滿足不了業務模組化訴求的時候,就可以用外廓圖在已有的模型上擴充或減少一些 UML 元模型元素,“創造”出一種新的模組化圖。

這些擴充和限定機制包括:預定義的構造型、标記值、限制、基類等。

針對一些常用的應用領域,OMG推出了一些标準的擴充,如用于實時嵌入式模組化的MARTE(UML Profile for Modeling and Analysis of Real-time and EmbeddedSystems)、用于測試的UML Testing Profile、用于硬體設計的UML Profile for System on a Chip等。

7.2、組成元素

組成元素 符号 作用
構造型
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
定義了針對已存在元模型的擴充,可定義屬性
元類
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
定義了該 profile 中的基本元模型
外闊
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

定義了一個 profile 包結構,其内部可

以包括構造型、元類等

擴充
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

構造型到元類之間的關系,表名該構造

型可以針對哪些元類進行擴充

外廓應用
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
使用者模型到外廓包之間的依賴關系,表明使用者模型可以應用外廓包中的擴充
引用
一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)
外廓包和外部其他包之間的關系,表明該外廓包引用了外部元素

7.3、示例

(1)用于資料庫模組化的外廓圖

一文讀懂14種 UML 圖業務模組化&系統分析的設計方式(上)

資料庫模組化的核心概念是表、字段和關系等,這些概念在 UML 标準規範中并沒有定義,無法直接利用 UML 模組化。為此,我們需要通過擴充 UML 類圖中的相關概念,如可以利用 UML 類模組化表,利用類的屬性模組化表的字段,利用類之間的關聯關系來模組化實體間的關系。

這裡,我們利用外廓圖定義了 3 個構造型 MyTable、MyColumn 和 MyRelationship,分别表示資料庫表、字段和關系,它們各自從 UML 元類中的類(Class)、屬性(Attribute)和關聯關系(Association)上擴充而來;此外,對于 MyColumn 構造型,我們還添加了兩個布爾類型的标記值PK和IsNULL,分别表示該字段是否為主鍵(預設值為false)、是否可以為空(預設值為 true)。

需要說明的是,該圖采用 Enterprise Architect 繪制,圖中 3 個擴充的構造型沒有采用組成元素好表的标準表示形式(即名稱前面加“<<stereotype>>”的方式),而是采用右上角添加“《》”的方式表示,這是該模組化工具所提供的特定圖形符号。

篇幅有限,下篇會講到另外7種動态行為圖及其設計示例。

作者:劉仁權 (弈閣)

來源-微信公衆号:螞蟻研發效能

出處:https://mp.weixin.qq.com/s/N0ExeWcTufnzQTLllSlSaQ

繼續閱讀