從不同視角對系統建模
- 外部視角,上下文模型,對系統上下文或環境建模
- 交互視角,交互模型(功能模型),對系統與參與者或系統內構件之間的交互建模
- 結構視角,結構模型(靜態模型),對系統的組成或系統處理的數據結構建模
- 行為視圖,行為模型(動態模型),對系統的動態行為以及系統如何響應事件進行建模
UML同一建模語言
UML動態圖
- 協作圖
- 順序圖
- 狀態圖
- 活動圖
UML靜態圖
- 用例圖
- 類圖
- 對象圖
- 構建圖
- 部署圖
UML可以用于建立系統開發中的多種模型
功能模型 | 用例圖 |
---|---|
對象模型 | 類圖,對象圖 |
動態模型 | 交互圖(順序圖),狀態圖,活動圖,協作圖 |
其他 | 構件圖,部署圖 |
交互模型(重點)
- 用例建模,系統與外部主體(人或其他系統)之間的交互,抽象層次高
- 順序圖,系統構件之間的交互,也可以包括外部主體,抽象層次低
用例建模
對于上圖寫出用例詳述
用例圖
參與者
- 與系統交互的外部實體(人,其他系統)
- 定義系統邊界
標識參與者
- 在標識參與者的初始階段,很難將參與者與對象區別開 來,例如一個數據庫可能是參與者,也可能是系統中對 象,可以通過確定系統邊界的方式來確定參與者
- 標識參與者的時候需要考慮
- 本系統與哪些參與者交互(人,其他系統)
- 哪些參與者完成系統主要功能
- 哪些參與者完成系統次要功能(維護,管理)
標識用例
- 場景是用例的實例
- 用例可以說明這一功能下的所有場景
- 用例大多由參與者啟動
- 用例貫穿系統事件的完整流程
用例詳述的寫法
-
用動詞短語命名,清晰
- 用戶登錄,打印信息,搜索網頁
-
用名詞短語對參與者進行命名
- 用戶,系統管理員,應用服務器
-
系統邊界應該是清晰的
- XX客戶端,需要對其功能范圍非常清楚
-
事件流中使用主動語態,指明誰完成這一步驟
- 用戶通過網銀結算,將貨款付到第三方支付機構
-
事件流前后因果關系清晰
- 用戶打開播放器
- 搜索本地視頻文件
-
應該描述一個完整的用戶事務流程
-
異常情況應該分別描述
-
無需描述系統接口
- 不需描述用戶提交Web表單到服務器
-
簡潔,明了
示例
標識參與者與用例之間的關系
- 啟動,參與者啟動了該用例
- 參與,參與者參與了該用例
用例與用例之間的關系(牢記)
- 擴展,一個用例被定義為 基礎用例的擴展
- 包含,包含其他用例的行 為,減少用例之間的冗余
- 繼承,一個用例被泛化成 多個用例
順序圖
- 順序圖主要用于對參與者與系統對象之間、系統對象自身之間的交互進行建模。
- 順序圖顯示對象之間的動態合作關系,它強調對象之間消息發送的順序,同時顯示對象之間的交互
- 順序圖的一個用途是用來表示用例中的行為順序。當執行一個用例行為時,順序圖中的每條消息對應了一個類操作或引起狀態轉換的觸發事件
示例
注意長方形里,每寫一個要加冒號
順序圖四要素(重點)
- 示例或類元角色
- 消息流
- 對象生命線
- 注釋
結構模型
結構模型描述系統構件以及它們之間的關系
類圖
- 類圖以反映類的結構(屬性、操作)以及類之間的關系為主要目的,描述了軟件系統的結構,是一種靜態建模手段
- 類圖中的“類”與面向對象語言中的“類”的概念是對應的,是對現實世界中的事物的抽象
類之間的四種關系(重點)
- 關聯、依賴、繼承、實現
- 而其中關聯又有兩種特例:聚合和組合
關聯關系
聚合
組合
關聯和依賴的區別
- 從類之間關系的強弱程度來分,關聯表示類之間的很強的關系;依賴表示類之間的較弱的關系;
- 從類之間關系的時間角度來分,關聯表示類之間的“持久”關系,這種關系一般表示一種重要的業務之間的關系,需要保存的,或者說需要“持久化”的,或者說需要保存到數據庫中的。比如學生管理系統中的Student類和Class(班級)類,一個Student對象屬于哪個Class是一個重要的業務關系,如果這種關系不保存,系統就無法管理。另外,**依賴表示類之間的是一種“臨時、短暫”關系,這種關系是不需要保存的,**比如Student類和StuEditScreen(學生登錄界面)類之間就是一種依賴關系,StuEditScreen類依賴Student類,依賴Student對象的信息來顯示編輯學生信息。
- 依賴是類與類之間的連接,依賴總是單向的。依賴關系代表一個類依賴于另一個類的定義。依賴在代碼中一般表示為方法的參數。
- 關聯是一種結構關系,說明一個事物的對象與另一個事物的對象相聯系。給定一個連接兩各類關聯,可以從一個類的對象導航到另一個類的對象。關聯可以有方向,即導航。一般不作說明的時候
- 導航是雙向的,不需要在線上標出箭頭。大部分情況下導航是單向的,可以加一個箭頭表示。關聯在代碼中一般表示為屬性(成員變量)。
- 設計類之間的關系是遵循的原則:首先判斷類之間是否是一種“關聯”關系,若不是再判斷是否是“依賴關系”,一般情況下若不是關聯,就是依賴關系。
聚合與組合
- 聚合關系也稱“has-a”關系,組合關系也稱“contains-a”關系。
- 聚合關系表示事物的整體/部分關系的較弱情況,部分的生命周期可以超越整體。
- 組合關系表示事物的整體/部分關系的較強的情況,部分的生命周期不能超越整體,或者說不能脫離整體而存在。組合關系的“部分”,是不能在整體之間進行共享的。
- 在聚合關系中,代表部分事物的可以屬于多個聚合對象,可以為多個聚合對象共享,而且可以隨時改變它。所從屬的聚合對象.代表部分事物的對象與代表聚合事物對象的生存期無關,一旦刪除了它的一個聚合對象不一定也就隨即刪除代表部分事物的對象。
- 在組合關系中,代表整體事物的對象負責創建和刪除代表部分事物的對象,代表部分事物只屬于一個組合對象.一旦刪除了組合對象,也就隨即刪除了相應的代表部分事物的對象。
關聯關系的強度:關聯<聚合<組合。
泛化關系
在面向對象中一般稱為繼承關系,存在于父類與子類、父接口與子接口之間
實現關系
對應于類和接口之間的關系