- UML基礎與Rose建模實用教程(第三版)
- 謝星星 周新國編著
- 4402字
- 2020-11-23 15:05:10
2.3.1 視圖
UML是用模型來描述系統的結構或靜態特征以及行為或動態特征的,它從不同的視角為系統的架構建模形成系統的不同視圖(View)。視圖是表達系統某一方面特征的UML建模構件的子集。在每一類視圖中使用一種或兩種特定的圖以可視化的方式來表示視圖中的各種概念。
按照邏輯觀點對應用領域中的概念建模,視圖模型被劃分成三個視圖域,分別為結構分類、動態行為和模型管理。
- 結構分類:描述了系統中的結構成員及其相互關系。類元(Classifier)包括類、用例、構件和節點。類元為研究系統動態行為奠定了基礎。類元視圖包括靜態視圖、用例視圖、實現視圖以及部署視圖。
- 動態行為:描述了系統隨時間變化的行為。行為利用從靜態視圖中抽取的瞬間值的變化來描述。動態行為視圖包括狀態機視圖、活動視圖和交互視圖。
- 模型管理:說明了模型的分層組織結構。包是模型的基本組織單元。特殊的包還包括模型和子系統。模型管理視圖跨越了其他視圖并根據系統開發和配置組織這些視圖。
UML還包括多種具有擴展能力的組件,這些組件包括約束、構造型和標記值,它們適用于所有的視圖元素。
現在總結一下,在UML中主要包括的視圖為靜態視圖、用例視圖、交互視圖、實現視圖、狀態機視圖、活動視圖、部署視圖和模型管理視圖。物理視圖對應于利用自身的實現結構建模,例如系統的構件組織和建立在運行節點上的配置。由于實現視圖和部署視圖都是反映了系統中的類映射成物理構件和節點的機制,可以將其歸納為物理視圖。下面分別對靜態視圖、用例視圖、交互視圖、狀態機視圖、活動視圖、物理視圖和模型管理視圖等視圖進行簡要的介紹。
1.靜態視圖
靜態視圖是對應用領域中的各種概念以及與系統實現相關的各種內部概念進行的建模。靜態視圖主要是由類與類之間的關系構成,這些關系包括:關聯、泛化和依賴關系,依賴關系具體可以再分為使用和實現關系。可以從以下三個方面來了解靜態視圖在UML中的作用。
首先,靜態視圖是UML的基礎。模型中靜態視圖的元素代表的是現實系統應用中有意義的概念,這些系統應用中的各種概念包括真實世界中的概念、抽象的概念、實現方面的概念和計算機領域的概念。比如說,一個圖書管理系統由下列各種概念構成:圖書館、圖書、圖書管理員、借閱者、圖書借閱信息等。靜態視圖描繪的是客觀世界的基本認知元素,是建立一個系統中所需概念的集合。
其次,靜態視圖構造了這些概念對象的基本結構。靜態視圖不僅包括所有的對象數據結構,同時也包括對數據的操作。根據面向對象的觀點,數據和對數據的操作是緊密相關的,將數據和對數據的操作可量化為類。比如,圖書對象可以攜帶數據:出版社、出版日期、圖書編號、圖書的價格,還包含對圖書基本信息的操作,比如以一定倍數計算丟失圖書的索賠價格等。
最后,靜態視圖也是建立其他動態視圖的基礎。靜態視圖用離散的模型元素描述具體的數據操作,盡管不包括對具體動態行為細節的描述,但是這些元素是類所擁有并使用的元素,使用和數據同樣的描述方式,只是在標識上進行區分。靜態視圖要建立的基礎就是說清楚在進行交互作用的是什么以及怎樣進行的,如果無法說清楚這些,那么也就無從構建靜態視圖。
靜態視圖的基本元素是類元和類元之間的關系。類元是描述事物的基本建模元素,靜態視圖中的類元包括類、接口和數據類型等。為了方便理解和可重用性,大的單元必須由較小的單元組成。通常使用包來描述擁有和管理模型內容的組織單元。任何元素都可被包所擁有。可以通過擁有完整的系統視圖的包來了解整個系統的構成。對象是從構造的系統的包中分離出來的離散單元,是對類的實例化,所謂實例化是指將對象設置為一個可識別的狀態,該狀態擁有自己獨立的實體,其行為能被觸發。類元之間的關系有關聯關系、泛化關系和依賴關系,依賴關系具體可以再分為使用和實現關系。
靜態視圖的可視化表達的圖主要包括類圖。有關類圖的詳細內容,我們將在后面進行介紹。
2.用例視圖
用例視圖描述了系統的參與者與系統進行交互的功能,是參與者所能觀察和使用到的系統功能的模型圖。一個用例是系統的一個功能單元,是系統參與者與系統之間進行的一次交互作用。當用例視圖在系統的參與者面前出現時,用例視圖捕獲了系統、子系統和用戶執行的操作。它將系統描述為系統的參與者對系統有用功能的需求,這種需求的交互功能被稱為用例。用例模型的用途是標識出系統中的用例和參與者之間的聯系,并確定什么樣的參與者執行了哪個用例。用例使用系統與一個或多個參與者之間的一系列消息來描述系統所進行的交互作用。系統參與者可以是人,也可以是外部系統或外部子系統等。
圖2-2是一個網上招聘系統的用例視圖。這是一個精簡的例子,但卻包含了系統是什么、用戶是什么、各種用戶在這個系統中做什么事情等內容。

圖2-2 用例視圖舉例
用例視圖使用用例圖來進行表示。我們將在后面介紹用例圖的細節內容。
3.交互視圖
交互視圖描述了執行系統功能的各個角色之間相互傳遞消息的順序關系,是描繪系統中各種角色或功能交互的模型。交互視圖顯示了跨越多個對象的系統控制流程。通過不同對象間的相互作用來描述系統的行為,描述的方式有兩種:一種是以獨立的對象為中心進行描述的;另外一種方式是以相互作用的一組對象為中心來進行描述的。以獨立的對象為中心進行描述的方式被稱為狀態機,它描述了對象內部的深層次行為。以相互作用的一組對象為中心進行描述的方式被稱為交互視圖,它適合于描述一組對象的整體行為。通常來講,這一整體行為代表了做什么事情的一個用例。交互視圖的一種形式表達了對象之間是如何協作完成一個功能,也就是所謂的協作圖的形式。交互視圖的另外一種表達形式反映了執行系統功能的各個角色之間相互傳遞消息的順序關系,也就是所謂的序列圖的形式,這種傳遞消息的順序關系在時間上和空間上都能夠有所體現。
總之,交互視圖可運用兩種圖的形式來表示:序列圖和協作圖,它們各有自己的側重點。序列圖和協作圖的細節內容將在后面進行介紹。
4.狀態機視圖
狀態機視圖是通過對象的各種狀態建立模型來描述對象隨時間變化的動態行為。狀態機視圖也是通過不同對象間的相互作用來描述系統的行為,所不同的是它是以獨立的對象為中心進行描述的。在狀態機視圖中,每一個對象都擁有自己的狀態,這些狀態之間的變化是通過事件進行觸發的。對象被看作是通過事件來觸發并做出相應的動作來與外界的其他對象進行通信的獨立實體。事件表達了對象可以被使用或操作,同時也反映了對象狀態的變化。可以把任何會影響對象狀態變化所發生的事情稱為事件。狀態機是由描述對象狀態的一組屬性和描述對象變化的動作所構成的。
狀態是使用類的一組屬性值來進行標識的,這組屬性根據所發生的不同事件而進行不同的反應(或響應),從而標志對象的不同狀態。處于相同狀態的對象對同一事件具有相同的反應,處于不同狀態下的對象會通過不同的動作對同一事件做出不同的反應。
狀態機同時還包括用于描述類的行為事件。對一些對象而言,一個狀態代表執行的一步。
狀態機視圖是一個對象對自身所有可能狀態的模型圖。一個狀態機由該對象的各種狀態以及連接這些狀態的符號所組成。每個狀態對一個對象在其生命周期中滿足某種條件的一個時間段建模。當一個事件發生時,它會觸發狀態間的轉換,導致對象從一種狀態轉化到另一種新的狀態。與轉換相關的活動執行時,轉換也同時發生。有關狀態機用狀態圖來表達狀態圖的細節內容,我們將在后面進行介紹。
5.活動視圖
活動視圖是一種特殊形式的狀態機視圖,是狀態機的一個變體,用來描述執行算法的工作流程中涉及的活動。通常活動視圖用于對計算流程和工作流程建模。活動視圖中的狀態表示計算過程中所處的各種狀態,活動視圖使用活動圖來體現對象的活動狀態和動作狀態。活動圖中包含描述對象活動或動作的狀態以及對這些狀態的控制。
活動圖包含對象活動的狀態。活動的狀態表示命令執行過程中或工作流程中活動的運行。與等待某一個事件發生的一般等待狀態不同,活動狀態等待計算處理過程的完成。當活動完成時,執行流程才能進入活動圖的下一個活動狀態。當一個活動的前導活動完成時,活動圖的完成轉換被觸發。活動狀態通常沒有明確表示出引起活動狀態轉換的事件,當出現閉包循環時,活動狀態會異常終止。
活動圖也包含對象的動作狀態,它與活動狀態有些類似,不同的是動作狀態是一種原子活動操作(即不可分的活動操作),并且當它們處于活動狀態時不允許發生轉換。
活動圖還包含對狀態的控制,這種控制包括對并發的控制等。并發線程表示能被系統中的不同對象和人并發執行的活動。在活動圖中通常包含聚合和分叉等操作。在聚合關系中每個對象有它們自己的線程,這些線程可以并發執行。并發活動可以同時執行也可以順序執行。活動圖能夠表達順序流程的控制,還能夠表達并發流程的控制,單純地從表達順序流程這一點上說,活動圖和傳統的流程圖很類似。
活動圖不僅可以對事物進行建模,也可以對軟件系統中的活動進行建模。活動圖可以很好地幫助人們理解系統高層活動的執行過程,并且在描述這些執行過程中不需要去建立協作圖所必須的消息傳送細節,可以簡單地使用連接活動和對象流狀態的關系流表示活動所需的輸入輸出參數。
6.物理視圖
前面所提到的物理視圖包含有兩種視圖,分別是實現視圖和部署視圖。物理視圖對應于自身實現結構的建模,例如系統的構件組織情況以及運行節點的配置等。物理視圖提供了將系統中的類映射成物理構件和節點的機制。為了可重用性和可操作性的目的,系統實現方面的信息也很重要。
實現視圖將系統中可重用的模塊包裝成為具有可替代性的物理單元,這些單元被稱為構件。實現視圖用構件及構件間的接口和依賴關系來表示設計元素(例如類)的具體實現。構件是系統高層的可重用的組成部件。
部署視圖表示運行時的計算資源的物理布置。這些運行資源被稱為節點。在運行時,節點包含構件和對象。構件和對象的分配可以是靜態的,也可以在節點之間遷移。如果含有依賴關系的構件實例放置在不同的節點上,部署視圖可以展示出執行過程中的瓶頸。
實現視圖使用構件圖來表示,部署視圖使用部署圖來表示。有關構件圖和部署圖的細節內容,我們將在后面進行介紹。
7.模型管理視圖
模型管理視圖是對模型自身組織進行的建模,是由自身的一系列模型元素(如類、狀態機和用例)構成的包所組成的模型。模型是從某一視角以一定的精確程度對系統所進行的完整描述。模型是一種特殊的包。一個包(Package)還可以包含其他的包。整個系統的靜態模型實際上可看成是系統最大的包,它直接或間接包含了模型中的所有元素內容。包是操作模型內容、存取控制和配置控制的基本單元。每一個模型元素包含或被包含于其他模型元素中。子系統是另一種特殊的包。它代表了系統的一個部分,它有清晰的接口,這個接口可作為一個單獨的構件來實現。任何大的系統都必須分成幾個小的單元,這使得人們可以一次只處理有限的信息,并且分別處理這些信息的工作組之間不會相互干擾。模型管理由包及包之間的依賴組成。模型管理信息通常在類圖中表達。