目錄
- 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) 。