UML統一建模語言是用來設計軟件藍圖的可視化建模語言。UML從不同的角度爲系統建模,並形成系統的不同視圖。這些圖包括:
用例圖 | 模型化系統與外界的交互 |
類圖 | 模型化系統的結構 |
對象圖 | 對象及對象間的相互關係 |
包圖 | 描述包及其關係 |
行爲圖 | 模塊化系統內的事件流 |
交互圖 | 描述系統中的對象是如何進行交互作用 |
順序圖 | 描述按照時間的先後順序對象之間交互動作過程 |
部署圖 | 模型化系統的硬件分佈 |
構件圖 | 模型化組件的組織和依賴 |
用例圖
——用例圖的基本組成
----從用戶角度描述系統功能,並指定各功能的操作者。
----用例圖是由主角、用例以及它們之間的關係構成的圖。
——用例圖的作用
----重在應用
----重在交流
----重在事件流的描述
——用例的主要屬性
——事件流
----描述一個用例在執行時執行者與系統之間的交互過程。這個過程包括多個分支
----基本流:對用例中常規和預期路徑的描述。
----備選流:由於受到其他因素影響,用例執行了其他的路徑。
——前置條件
----是該用例執行的前提條件,用來描述在什麼條件下可以開始執行一個事件流。
——後置條件
----說明用例結束時系統的狀態。
前置條件和後置條件可以用於用例的驗證和評審。
類圖
——類圖
----類圖是顯示了模型的靜態結構,特別是模型中存在的類、類的內部結構以及它們與其他類的關係等。類圖不顯示暫時性信息。
----類圖最基本的元素是類或者接口。
對象圖
——對象圖
----對象圖是顯示了一組對象和他們之間的關係。
----對象圖是類圖的實例,幾乎使用與類圖完全相同的標識。
----他們的不同點在於對象圖顯示類的多個對象實例,而不是實際的類。
----由於對象存在生命週期,因此對象圖只能在系統某一時間段存在。
類圖與對象圖的區別
類圖 | 對象圖 |
在類中包含三部分,分別是類名、類的屬性和類的操作 | 對象包含兩個部分:對象的名稱和對象的屬性 |
類的名稱欄只包含類名 | 對象的名稱欄包含“對象名:類名” |
類的屬性欄定義了所有屬性的特徵 | 對象的屬性欄定義了屬性的當前值 |
類中列出了操作 | 對象圖中不包含操作內容,因爲對屬於同一個類的對象,其操作時相同的 |
類是一類對象的抽象,類不存在多重性 | 對象可以具有多重性 |
包圖
——包
----包就像是一個“容器”,可用於組織模型中的相關元素,以便容易理解。
----將相關的各種類型的模型元素組織成組的通用機制。
----包的實例沒有任何語義。
----僅在建模時有意義,而不必轉換到可執行的系統中。
——包圖
----描述包及其關係的圖。
----包圖是維護和控制系統總體結構的重要建模工具。
——包的作用
----邏輯上把一個複雜的圖模塊化
----組織源代碼
----對語義上相關的元素進行分組
----提供配置管理單元和並行工作的單元。
----提供封裝的命名空間,同一個包中,其元素的名稱必須唯一。
——包的圖符
----UML中,用文件夾符號來表示一個包。包由一個矩形表示,它包含2欄。
——包中的元素
----類、接口、構件、用例、其他包等。
----若包被撤銷,則其中的元素也被撤銷了。
----一個模型元素不能被一個以上的包所擁有。
包與包之間的關係
——泛化
——細化
——依賴(常用)
----如果兩個包中的任意兩個類之間有依賴關係,則這連個包之間有依賴關係。
包的常見問題
1.一定要避免循環依賴產生。
2.測試時可以以包爲測試單位。
3.應該儘量把概率和語義上相接近的元素包含在同一個包中。
4.對於一個包,找出哪些包內的元素是可以在包外訪問的,把這些元素標記爲公共的,其他所有元素都標記爲受保護的或者私有的。
行爲圖
活動圖
——活動圖
----流程圖常被用來建立算法模型,使用流程圖可以表示一個算法的執行序列、過程、判定點、分支和循環。
----活動圖與流程圖十分類似,不同之處在於它支持並行活動。
----活動圖的缺點:很難清楚的描述動作與對象之間的關係,沒有交互圖直接。
——活動圖的作用
----描述一個操作的執行過程中所完成的工作或者動作。
----描述對象內部的工作。
----顯示如何執行一組相關的動作,以及這些動作如何影響周圍對象。
----描述用例的執行。
----處理多線程應用。
——不使用活動圖的場合
----顯示對象這件的合作。
----顯示對象在其生命週期內的運轉情況。
——活動圖的基本要素
----活動狀態Action states
----活動狀態之間的轉移transitions
----判斷decisions
----一種表示判斷決策的特殊活動
----保證條件guard conditions
----只有保證條件爲真時轉移才發生
----同步條synchronization bar
----一種表示活動之間的同步的特殊活動
----起點和終點
----起點有且只有一個,終點可有一個或多個
——活動圖的圖符
----起始狀態
----終止狀態
----狀態遷移
----決策點
----同步條:表示活動之間的同步。
----泳道:用於對活動圖中的活動進行分組,用於描述對象之間的合作關係。
----所謂泳道技術,是將活動用線分成一些縱向區域,這些縱向區域稱爲泳道。每個區域代表一個特定類,或者人,或者部門的責任區。泳道技術是活動圖中引入的一種面向對象機制。可爲提取類及分析各個對象之間的交互提供方便。
狀態圖
——狀態圖
----狀態圖用來描述一個特定對象的所有可能狀態以及由於各種事件的發生而引起的狀態之間的轉移。
——狀態圖的圖符
----狀態
----轉移
----起點
----終點
——狀態機
----狀態機是這樣一種行爲,它描述了一個對象或一個交互在生命期內響應事件所經歷的狀態序列。
----單個類或一組類之間協作的行爲可以用狀態機來描述。
----一個狀態機涉及到一些其他元素,包括狀態、轉換(從一個狀態到另一個狀態的流)、事件(觸發轉換的事務)和活動(對一個轉換的響應)。
——狀態
----狀態是指在對象的生命期中滿足某些條件、執行某些活動或等待某些事件時的一個條件或狀況。
----一個狀態有以下幾個部分:
----名稱name
----進入協作和退出動作entry action/exit action
----內部轉換internal transition
----子狀態substate
----延遲事件deferred event
----特殊狀態
----初識狀態
----終止狀態
——轉換
----一個轉換是兩個狀態之間的一種關係,表示對象將在第一個狀態中執行一定的動作,並在某個特定事件發生而某個特定的條件滿足時進入第二個狀態。
----一個轉換由5部分組成:
----源狀態source state
----事件觸發event trigger
----監護條件guard condition
----動作action
----目標狀態target state
活動圖和狀態圖區別
——狀態圖側重從行爲的結果來描述(狀態)
——活動圖側重從行爲的動作來描述(活動)
在實際項目中,活動圖並不是必須的。一般在以下情況需要使用活動圖:
----描述一個並行的過程或者行爲。
----描述一個算法。
----描述一個跨越多個用例的活動。
狀態圖描述了一個具體對象的可能狀態以及它們之間的轉換。
交互圖
——交互圖
----可用兩種方式描述:
----強調消息的時間順序
----強調發送和接收消息的對象的結構組織
----交互圖包括:
----順序圖:強調消息的事件順序
----合作圖:強調對象之間的交互關係
----交互圖用來描述系統中的對象是如何進行相互作用的。即一組對象是如何進行消息傳遞的
----交互主要用於描述協作的動態行爲方面
----當交互建模時,通常既包括對象(每個對象都扮演某一特定的角色),又包括信息(每個消息都代表對象之間的通信活動,並導致一定的動作發生)
順序圖
——順序圖
----順序圖描述按照時間的先後順序對象之間交互動作過程
——順序圖的構成
----對象
----消息:是對象之間的通信,可以是信號或者操作調用
----簡單消息:表示簡單的控制流
----同步消息:表示嵌套的控制流
----異步消息:表示異步控制流
----可以將一個簡單消息和一個同步消息合併成一個消息
----生命線(激活):表示在某段時間內對象是存在的
部署圖
實現圖
——實現圖
----實現圖包括:
----構件圖:用來顯示一組構件之間的組織與依賴關係
----部署圖:用來描述系統硬件的物理拓撲結構以及在此結構上執行的軟件
----UML中大部分模型描述了邏輯和設計方面的信息
----實現圖 用來描述實現方面的信息
----實現圖從系統的層次來描述
----硬件的組成和佈局
----軟件系統劃分和功能實現
部署圖
——部署圖
----部署圖是用來顯示系統中軟件和硬件的物理架構
----從部署圖中,可以瞭解到軟件和硬件組件之間的物理關係以及處理節點的組件分佈情況
----節點:節點是一個物理元素,它在運行時存在,代表一個可計算的資源,通常佔用一些內存和具有處理能力。一個構件集合一般來說位於一個節點,但有可能從一個節點轉到另一個節點。
構件圖
——構件圖
----構件圖的主要目的是顯示系統組件間的結構關係。
----構件圖描述代碼構件的物理結構以及各種構件之間的依賴關係。
----用來建模軟件的組件及其相互之間的關係,這些圖由構件標記符和構件之間的關係構成。
----在構件圖中,構件時軟件單個組成部分,它可以是一個文件,產品、可執行文件和腳本等。
在需求階段:採用用例圖來描述需求
在分析階段:採用類圖來描述靜態結構
在設計階段:採用類圖、包圖對類的接口進行設計
在實現階段:將類用某個面向對象的語言實現
在集成與交付階段:構件圖、包圖、部署圖
在測試階段:單元測試使用類圖和類的規格說明書
集成測試階段使用類圖、包圖、構件圖和合作圖
系統測試使用用例圖來測試系統功能