天天看點

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

uml是程式員需要掌握一個重要工具,特别在研究hadoop(http://www.iigrowing.cn/hadoop)系統中,有很多相關的uml圖形需要繪制,為了友善大家了解uml,在網絡上找了些uml方面的文章(http://www.iigrowing.cn/?s=uml)在參考資料中,在uml參考資料中缺少活動圖方面的介紹,是以特地在網絡上尋找了一些資料,然後整理成一篇文章,供大家參考,水準有限疏漏難免,請諒解.

一.UML概述

以下内容對uml進行簡單介紹,讀者有興趣可以閱讀,建議讀者可以閱讀其他uml等文章,最後有時間在了解這個部分内容。這樣可以先去實踐一些uml,然後在回到這裡的一些簡單的理論介紹,收獲會大些。

UML 全稱Unified Modeling Language 又稱統一模組化語言或标準模組化語言,是始于1997年一個OMG标準,它是一個支援模型化和軟體系統開發的圖形化語言,為軟體開發的所有階段提供模型化和可視化支援。

UML是一種定義良好、易于表達、功能強大且普遍适用的模組化語言。它融入了軟體工程領域的新思想、新方法和新技術。它的作用域不限于支援面向對象的分析與設計,還支援從需求分析開始的軟體開發的全過程。

作為一種模組化語言,UML的定義包括UML語義和UML表示法兩個部分。

(1) UML語義 描述基于UML的精确元模型定義。元模型為UML的所有元素在文法和語義上提供了簡單、一緻、通用的定義性說明,使開發者能在語義上取得一緻,消除了因人而異的最佳表達方法所造成的影響。此外UML還支援對元模型的擴充定義。

(2) UML表示法 定義UML符号的表示法,為開發者或開發工具使用這些圖形符号和文本文法為系統模組化提供了标準。這些圖形符号和文字所表達的是應用級的模型,在語義上它是UML元模型的執行個體。

标準模組化語言UML的重要内容可以由下列五類圖(共9種圖形)來定義:

第一類是用例圖,

從使用者角度描述系統功能,并指出各功能的操作者。

第二類是靜态圖 (Static diagram),

包括類圖、對象圖和包圖。其中類圖描述系統中類的靜态結構。不僅定義系統中的類,表示類之間的聯系如關聯、依賴、聚合等,也包括類的内部結構(類的屬性和操作)。類圖描述的是一種靜态關系,在系統的整個生命周期都是有效的。

對象圖是類圖的執行個體,幾乎使用與類圖完全相同的辨別。他們的不同點在于對象圖顯示類的多個對象執行個體,而不是實際的類。一個對象圖是類圖的一個執行個體。由于對象存在生命周期,是以對象圖隻能在系統某一時間段存在。

包由包或類組成,表示包與包之間的關系。包圖用于描述系統的分層結構。

第三類是行為圖(Behavior diagram),

描述系統的動态模型群組成對象間的互動關系。行為圖包括:狀态圖、活動圖、順序圖和協作圖。其中狀态圖描述類的對象所有可能的狀态以及事件發生時狀态的轉移條件。通常,狀态圖是對類圖的補充。在實用上并不需要為所有的類畫狀态圖,僅為那些有多個狀态其行為受外界環境的影響并且發生改變的類畫狀态圖。

而活動圖描述滿足用例要求所要進行的活動以及活動間的限制關系,有利于識别并行活動。活動圖是一種特殊的狀态圖,它對于系統的功能模組化特别重要,強調對象間的控制流程。

順序圖展現了一組對象和由這組對象收發的消息,用于按時間順序對控制流模組化。用順序圖說明系統的動态視圖。 協作圖展現了一組對象,這組對象間的連接配接以及這組對象收發的消息。它強調收發消息的對象的結構組織,按組織結構對控制流模組化。

順序圖和協作圖都是互動圖,順序圖和協作圖可以互相轉換。

第四類是互動圖(Interactive diagram),

描述對象間的互動關系。其中順序圖顯示對象之間的動态合作關系,它強調對象之間消息發送的順序,同時顯示對象之間的互動;合作圖描述對象間的協作關系,合作圖跟順序圖相似,顯示對象間的動态合作關系。除顯示資訊交換外,合作圖還顯示對象以及它們之間的關系。如果強調時間和順序,則使用順序圖;如果強調上下級關系,則選擇合作圖。這兩種圖合稱為互動圖。

第五類是實作圖 ( Implementation diagram )。

其中構件圖描述代碼部件的實體結構及各部件之間的依賴關系。一個部件可能是一個資源代碼部件、一個二進制部件或一個可執行部件。它包含邏輯類或實作類的有關資訊。部件圖有助于分析和了解部件之間的互相影響程度。

配置圖定義系統中軟硬體的實體體系結構。它可以顯示實際的計算機和裝置(用節點表示)以及它們之間的連接配接關系,也可顯示連接配接的類型及部件之間的依賴性。在節點内部,放置可執行部件和對象以顯示節點跟可執行軟體單元的對應關系。

從應用的角度看,當采用面向對象技術設計系統時,

首先是描述需求;

其次根據需求建立系統的靜态模型,以構造系統的結構;

第三步是描述系統的行為。

其中在第一步與第二步中所建立的模型都是靜态的,包括用例圖、類圖(包含包)、對象圖、元件圖和配置圖等五個圖形,是标準模組化語言UML的靜态模組化機制。

其中第三步中所建立的模型或者可以執行,或者表示執行時的時序狀态或互動關系。它包括狀态圖、活動圖、順序圖和合作圖等四個圖形,是标準模組化語言UML的動态模組化機制。是以,标準模組化語言UML的主要内容也可以歸納為靜态模組化機制和動态模組化機制兩大類。

二.活動圖介紹

1. 簡介

活動圖是uml的動态模型的一種圖形,一般用來描述相關用例圖。準确的活動圖定義:活動圖描述滿足用例要求所要進行的活動以及活動間的限制關系,有利于識别并行活動。活動圖是一種特殊的狀态圖,它對于系統的功能模組化特别重要,強調對象間的控制流程。

互動圖強調的是對象到對象的控制流,而活動圖則強調的是從活動到活動的控制流

活動圖是一種表述過程基理、業務過程以及工作流的技術。

它可以用來對業務過程、工作流模組化,也可以對用例實作甚至是程式實作來模組化

2. 活動圖示例

下圖是個簡單的活動圖例子,裡面包括了大部分活動圖的相關元素,大家應該都能看的差不多吧,有不明白的可以繼續看,下面有針對各個元素有介紹啦,相信大家看完後面的,看這個圖就不會有問題的。

另外,若想學會畫活動圖,必須先看大量的圖,看明白别人的圖,在慢慢畫,慢慢一個圖形就弄明白了。

其實uml包括了各種各樣的圖形,把每種圖形都會畫啦,基本uml也就會啦。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

3. 活動圖與流程圖的差別

活動圖描述系統使用的活動、判定點和分支,看起來和流程圖沒什麼兩樣,并且傳統的流程圖所能表示的内容,大多數情況下也可以使用活動圖表示,但是兩者是有差別的,不能将兩個概念混淆。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

活動圖與流程圖的差別

⑴ 流程圖着重描述處理過程,它的主要控制結構是順序、分支和循環,各個處理過程之間有嚴格的順序和時間關系

活動圖描述的是對象活動的順序關系所遵循的規則,它着重表現的是系統的行為,而非系統的處理過程。

⑵ 活動圖能夠表示并發活動的情形,而流程圖不能。

⑶ 活動圖是面向對象的,而流程圖是面向過程的。

4. 活動圖與狀态圖差別

活動圖與狀态圖都是狀态機的表現形式,但是兩者還是有本質差別:

狀态圖着重描述從一個狀态到另一個狀态的流程,主要有外部事件的參與。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

上圖是一個典型的狀态圖

活動圖着重表現從一個活動到另一個活動的控制流,是内部處理驅動的流程。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

5. 活動圖基本元素

1) 初始節點和活動終點:

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

實心圓表示初始節點(隻有一個),圓圈内加一個實心圓來表示活動終點(可有多個)。

2) 活動節點:

用來表示一個活動

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

3) 轉換:

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

一條帶箭頭的直線來表示。 一旦前一個活動結束馬上轉到下一個活動(無觸發轉換)。

4) 分支與監護條件:

分支是用菱形表示的,它有一個進入轉換(箭頭從外指向分支符号),一個或多個離開轉換(箭頭從分支符号指向外)。而每個離開轉換上都會有一個監護條件,用來表示滿足什麼條件的時候執行該轉換。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

5) 分叉與彙合:

分叉用于将動作流分為兩個或者多個并發運作的分支,而彙合則用于同步這些并發分支,以達到共同完成一項事務的目的。

分叉可以用來描述并發線程,每個分叉可以有一個輸入轉換和兩個或多個輸出轉換,每個轉換都可以是獨立的控制流。

彙合代表兩個或多個并發控制流同步發生,當所有的控制流都達到彙合點後,控制才能繼續往下進行。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

每個彙合可以有兩個或多個輸入轉換和一個輸出轉換。

彙合将兩條路徑連接配接到一起,合并成一條路徑。彙合指的是兩個或者多個控制路徑在此彙合的情況。彙合是一種便利的表示法,省略它不會丢失資訊。彙合和分支常常成對的使用,合并表示從對應分支開始的條件行為的結束。

分叉和彙合都使用加粗的水準線段表示。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

6. 抽象的活動圖示例

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

UML的活動圖中包含的圖形元素有動作狀态、活動狀态、動作流、分支與合并、分叉與彙合、泳道和對象流等。

7. 帶泳道的活動圖

泳道表明每個活動是由哪些人或哪些部門負責完成。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

每個泳道代表特定含義的狀态職責的部分。在活動圖中,每個活動隻能明确的屬于一個泳道,泳道明确的表示了哪些活動是由哪些對象進行的。

每個泳道都有一個與其他泳道不同的名稱。

每個泳道可能由一個或者多個類實施,類所執行的動作或擁有的狀态按照發生的事件順序自上而下的排列在泳道内。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

在活動圖中泳道區分了負責活動的對象,它明确地表示了哪些活動是由哪些對象進行的。

在包含泳道的活動圖中每個活動隻能明确地屬于一個泳道

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

上圖是一個未采用泳道的活動圖

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

上圖是采用泳道技術後的活動圖

從兩幅圖的對比中,我們可以了解泳道技術是非常重要的,可以更明确表達出活動圖的意圖。

泳道将活動圖中的活動化分為若幹組,并把每一組指定給負責這組活動的業務組織,即對象。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

泳道區分了負責活動的對象,它明确地表示了哪些活動是由哪些對象進行的。

在包含泳道的活動圖中,每個活動隻能明确地屬于一個泳道。

在活動圖中,泳道用垂直實線繪出,垂直線分隔的區域就是泳道。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

在泳道上方可以給出泳道的名字或對象(對象類)的名字,該對象(對象類)負責泳道内的全部活動。

泳道沒有順序,不同泳道中的活動既可以順序進行也可以并發進行。

動作流和對象流允許穿越分隔線。

8. 帶對象流的活動圖

用活動圖描述某個對象時,可以把涉及到的對象放置在活動圖中,并用一個依賴将其連接配接到進行建立、修改和撤銷的動作狀态或者活動狀态上,對象的這種使用方法就構成了對象流。

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用
uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

對象流是動作狀态或者活動狀态與對象之間的依賴關系

對象流表示動作使用對象或者動作對對象的影響。

對象流中對象的特點:

⑴ 一個對象可以由多個動作操縱;

⑵ 一個動作輸出的對象可以作為另一個動作輸入的對象;

對象流中對象的特點:

⑶ 在活動圖中,同一個對象可以多次出現,它的每一次出現表明該對象正處于對象生存期的不同時間點。

在活動圖中,對象流用帶有箭頭的虛線表示。

如果箭頭從動作狀态出發指向對象,則表示動作對對象施加了一定的影響。

施加的影響包括建立、修改和撤銷等。如果箭頭從對象指向動作狀态,則表示該動作使用對象流所指向的對象。

狀态圖中的對象用矩形表示,矩形内是該對象的名稱,名稱下的方括号表明對象此時的狀态。

還可以在對象名稱的下面加一個分隔欄表示對象的屬性值。

9. 信号發送和接收

發送信号與接收信号

10. 引腳

是一個對象節點,代表活動連接配接輸入、輸出值的連接配接點

用來标明每個活動節點所需輸入的資料或者所産生的資料(模組化業務流時則可表示産生或者消耗的資源)

11. 擴充區

表示重複或循環

12. 輔助活動圖

當活動圖過于複雜時可以用活動的分解來處理

一個活動可以分為若幹個動作或子活動,這些動作和子活動本身又可以組成一個活動圖。

不含内嵌活動或動作的活動稱之為簡單活動;

嵌套了若幹活動或動作的活動稱之為組合活動,組合活動有自己的名字和相應的子活動圖

uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用
uml活動圖 各個功能的操作流程和分支_uml活動圖的概念與作用

三.活動圖繪制要點

⑴ 識别要對工作流描述的類或對象。找出負責工作流實作的業務對象,這些對象可以是顯示業務領域的實體,也可以是一種抽象的概念和事物。找出業務對象的目的是為每一個重要的業務對象建立泳道。

⑵ 确定工作流的初始狀态和終止狀态,明确工作流的邊界。

⑶ 對動作狀态或活動狀态模組化。找出随時間發生的動作和活動,将它們表示為動作狀态或活動狀态。

⑷ 對動作流模組化。對動作流模組化時可以首先處理順序動作,接着處理分支與合并等條件行為,然後處理分叉與彙合等并發行為。

⑸ 對對象流模組化。找出與工作流相關的重要對象,并将其連接配接到相應的動作狀态和活動狀态。

⑹ 對建立的模型進行精化和細化。