.NET 雲原生架構師訓練營(物件過程建模)--學習筆記

MingsonZheng發表於2021-12-24

目錄

  • UML
  • OPM
  • OPM優化

UML

1997年釋出UML標準

主要域檢視主要概念
結構靜態檢視類圖類、關聯、泛化、依賴關係、實現、介面
用例檢視用例圖用例、參與者、關聯、擴充套件、包括、用例泛化
實現檢視構件圖構件、介面、依賴關係、實現
部署檢視部署圖節點、構件、依賴關係、位置
動態狀態機檢視狀態機圖狀態、事件、轉換、動作
活動檢視活動圖狀態、活動、完成轉換、分叉、結合
互動圖順序圖互動、物件、訊息、啟用
協作圖協作、互動、協作角色、訊息

UML 用例建模

圖中有多個用例,每個用例有一個參與者,以及一個用例名稱

用例是一個站在使用者的角度,他會在這個系統上做什麼事情,這個事情可以稱為一個用例

使用者通過這個系統做成了一件事情,這是以目標為導向的,比如使用者通過ATM機取錢,那麼取錢就稱為一個用例

用例更多的是涉及到使用者和系統之間的互動

為了後期更加詳細的設計,需要將用例圖拆分為文件

內容 描述
用例名稱 報名活動
用例編號
行為角色 訪客、會員
簡要說明 訪客只能檢視、會員可報名
前置條件 使用者已經通過活動列表進入具體活動介紹頁面;使用者已經登入
後置條件 報名按鈕顯示為:已報名
流程圖

UML 會使用多種圖來展示用例內部詳細的過程,但是沒辦法進行層次縮放,這是使用 UML 做系統設計會存在的問題

OPM

Object Process Methodology

  • 系統視角
  • 概念建模
  • 系統分解

系統視角

任何系統都可以從兩方面來看

  • 結構(靜態)
  • 行為(動態)

概念建模

在物件和物件之間建立抽象的關係

過程影響物件

系統分解

  • 從物件和功能開始建模
  • 物件的狀態
  • 用過程連結聯絡物件

從物件和功能開始建模

物件是存在或可能存在的事物

過程是變換物件的事物

物件或過程都是一個事物

舉一個導購分享的例子,首先導購生成分享連結會產生一條分享連結,這就是我們所說的物件

接著點選分享連結,分享連結作為這個過程的輸入,點選連結會建立分享關係

抽取物件的過程中需要注意正方形填的是名詞,是一個物件;圓形填的是動詞,是一個過程

過程一定會影響物件,使得物件的狀態發生一些改變,或者包括建立和銷燬這個物件,同樣的,一個物件會作為另外一個過程的輸入

物件的狀態

一段時間內物件可能處於一種狀態或者情形

狀態使用圓角矩形,分享連結有兩種狀態,有效的和無效的,通過狀態與過程進行互動,只有連結是有效的才可以點選,如果是無效的需要重新生成

這個時候我們需要多一個請求分享連結的過程,這個過程與生成分享連結的過程是不可以連線的

過程與過程之間不可以連線,連線只能發生在一個物件與一個過程之間,所以這個圖可能畫錯了,我們需要調整如下

狀態的檢查應該放到點選連結的時候,連結如果是有效的,才會生成分享關係

連結狀態是分享連結的一個屬性,通過屬性連線(兩個三角形中間實心的圖示)

請求分享連結的時候一定有一個導購的物件,分享連結屬於導購的一個屬性

分享連結的狀態分為已生成和未生成,請求分享連結如果未生成,則需要生成分享連結,雙向的

用過程連結聯絡物件

  • 過程連結
  • 結構連結
  • 事件連結
  • 行為控制

過程連結:將一個物件(或其狀態)與一個過程聯絡起來,比如分享連結與請求分享連結的聯絡

結構連結:將一個物件與另一個物件(或者一個過程與另一個過程聯絡起來),比如請求分享連結與點選連結的聯絡

過程連結

主體連結:系統的參與者,使用者主導了整個過程,比如導購和請求分享連結的聯絡,客戶和點選連結的聯絡

手段(支援)連結:提供手段和支援,比如連結提供器和生成連結的聯絡

兩者的區別是一類是主體物件,一類是支援物件

變換連結:過程就是用來改變物件的狀態,影響一個物件的狀態或者吸收一個物件,比如分享連結和生成連結的聯絡

過程連結只能建立再物件和過程上

結構連結

結構連結是建立在物件與物件之間,過程與過程之間,它們之間往往擁有一種持久的關係,屬性、繼承、組成等等

  • 結構關係
  • 組成關係

屬性:分享連結是導購的屬性,連結狀態是分享連結的屬性,通過屬性連線建立聯絡

繼承:零售客戶和分銷商客戶繼承客戶,瀏覽器點選和APP點選繼承點選連結

事件連結

在結構/過程連結之上新增 e 標註,代表是偶發的

Server 支援請求響應這件事情是偶發的,並不是一直有的,所以可以加上e標註

行為控制
  • 布林物件
  • 條件 if
  • 或(OR)/ 與(XOR)

布林物件:建立在支援物件之上,但是會有一個判斷,比如我們獲取連結的時候會有一個判斷,如果沒有連結則生成連結,有連結則返回

條件 if:和事件連結相似,比如在連結狀態有效的時候建立分享關係,新增 c 標註,無效的時候異常退出

或(OR)/ 與(XOR):或表示走一個或者多個都可以,亦或表示只能走一個,比如在是否有連結的兩個選項中間加兩條弧線,表示只能選一個;如果是或則畫一條弧線

過程連結與結構連結集合

OPM優化

  • 抽象與細化
  • 過程與判定
  • 複雜度管理

抽象與細化

抽象與細節之間會有一個繼承關係,導購繼承使用者,分享連結抽象為推廣

員工,客戶也可以導購;展示二維碼也可以作為一種分享連結

過程與判定

很多時候沒辦法確定是一個物件還是一個過程,最簡單的方式就是根據是動詞還是名詞判斷,以及根據過程有沒有改變物件的狀態判斷

複雜度管理

  • 狀態顯示與狀態隱藏
  • 展開與摺疊(放大與縮小)
  • 埠摺疊

狀態顯示與狀態隱藏

人為的控制是否要顯示狀態,比如連結狀態

展開與摺疊(放大與縮小)

把圖畫的層次高一點則簡單易懂,畫的層次畢竟低一點則複雜一些,但是表現會更加清晰,可以對它們進行切割

如果把分享放大,則可以在裡面畫更加細節的過程,同時可以在獲取連結裡面再畫更加細節的過程

我們也可以在多張圖中進行縮放,比如獲取連結放到第二個圖中

埠摺疊

比如在是否有連結的條件 if 可以摺疊起來,直接在外部通過兩個埠有和無來和其他物件過程建立連結

作業

嘗試把自己之前那個系統架構圖裡面的過程進入展下,一直向下到不可分割的原子級別(可以到某個類級別)

課程連結

https://appsqsyiqlk5791.h5.xiaoeknow.com/v1/course/video/v_5f39bdb8e4b01187873136cf?type=2

知識共享許可協議

本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。

歡迎轉載、使用、重新發布,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。

如有任何疑問,請與我聯絡 (MingsonZheng@outlook.com) 。

相關文章