自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

七張圖講明白,使用UML活動圖的建模過程

開發(fā) 前端
一直以來,存在著眾多的流程建模和數(shù)據(jù)流圖示語言,而UML活動圖日漸流行,成為事實上的標準,但是它還有其他重要變體。

1.什么是UML

統(tǒng)一建模語言(UML)是描述、構(gòu)造和文檔化系統(tǒng)制品的可視化語言。在上面的UML定義中,關(guān)鍵點是可視化這個詞,UML是圖形化表示法的事實標準,用來繪制和展示與軟件(特別是OO軟件)相關(guān)的圖形(以及文字)。

UML定義了各種UML簡檔(UML profile),這些簡檔專用于某些常用主題領(lǐng)域的表示法中,例如對EJB使用UML EJB簡檔。

在更深的層次上,UML表示法的基礎(chǔ)是UML元模型(meta-model),它描述建模元素的語義,UML元模型主要對模型驅(qū)動架構(gòu)(Model Driven Architecture,MDA)CASE工具供應(yīng)商有影響。開發(fā)者并不需要學習它。

2.示例

圖1中演示了基本的UML活動圖表示法,這種活動圖包括動作(action)、分區(qū)(partition)、分叉(fork)、匯合(join)和對象節(jié)點(object node)等。從本質(zhì)上講,此圖顯示了一系列動作,其中某些動作可以是并行的。這些表示法大部分都是不言自明的,但有兩點細微之處需要說明:

  • 一旦某個動作完成,緊接著會有一個自動的向外遷移。
  • 活動圖能夠既表示控制流又表示數(shù)據(jù)流。

▲圖1 基本的UML活動圖表示法▲圖1 基本的UML活動圖表示法

3.如何應(yīng)用活動圖

UML活動圖提供了豐富的表示法來表示一系列活動,其中包括并行的活動?;顒訄D可用于任何視角或目的,但常用于可視化業(yè)務(wù)工作流及過程和用例。

業(yè)務(wù)流程建模

我的一個客戶經(jīng)營包裹快遞業(yè)務(wù)??爝f包裹的過程相當不簡單;其中涉及眾多參與方(顧客、司機等)和大量步驟。盡管可以用文本(例如用例文本)描述這一過程,但活動圖恰是“圖畫勝于千言”這一說法的最好例證。我的客戶通過活動圖可視化的手段來理解其復(fù)雜的業(yè)務(wù)流程。分區(qū)有助于觀察多個參與方以及運輸流程中涉及的并行動作,對象節(jié)點可以描述正在移動的東西。對當前的業(yè)務(wù)流程建模之后,他們可視化地探索變更和優(yōu)化。圖1是一個應(yīng)用UML活動圖進行業(yè)務(wù)流程建模的簡單例子。如果將客戶的整個包裹快遞業(yè)務(wù)流程模型顯示出來會占滿整面墻!

數(shù)據(jù)流建模

從20世紀70年代開始,數(shù)據(jù)流圖(DFD)就已經(jīng)成為流行的方法,用于對軟件系統(tǒng)過程中所涉及的主要步驟和數(shù)據(jù)進行可視化。這不同于業(yè)務(wù)流程建模,盡管理論上講DFD可以用于業(yè)務(wù)流程建模,但其通常用于表示計算機系統(tǒng)中的數(shù)據(jù)流。DFD可以用來記錄主要數(shù)據(jù)流或以數(shù)據(jù)流的方式探索新的高級設(shè)計。圖2是使用經(jīng)典Gane-Sarson表示法的DFD示例。注意其中對過程步驟進行了編號,以表示順序。

▲圖2 使用Gane-Sarson表示法的經(jīng)典DFD▲圖2 使用Gane-Sarson表示法的經(jīng)典DFD

對于文檔化和探索來說,DFD模型所提供的信息都具有效用,但UML中并沒有包含DFD表示法。幸運的是,UML活動圖能夠?qū)崿F(xiàn)同一目的—用于數(shù)據(jù)流建模,從而代替?zhèn)鹘y(tǒng)的DFD表示法。圖3展示了與圖2中的DFD相同的信息,但是它使用了UML活動圖。注意,除對象節(jié)點(object node)以外,UML數(shù)據(jù)存儲節(jié)點(datastore node)也適用于數(shù)據(jù)流表示。

▲圖3 使用UML活動圖表示法來表示數(shù)據(jù)流模型▲圖3 使用UML活動圖表示法來表示數(shù)據(jù)流模型

并發(fā)編程和并行算法建模

并發(fā)編程問題中的并行算法涉及多個分區(qū)、分叉和匯合行為。例如,這些算法可用于3D模擬中有限元和有限差分模型、原油儲備模型、材料應(yīng)力分析和天氣建模。整個物理空間被分成大塊,每一塊由一個并行的線程(或進程)執(zhí)行。在這些例子中,使用UML活動圖分區(qū)(partition)來表示不同的操作系統(tǒng)線程或進程。使用對象節(jié)點(object node)對共享對象和數(shù)據(jù)進行建模。同時,分叉(fork)用于對多個線程(或進程)的創(chuàng)建和并行執(zhí)行進行建模,每分區(qū)一個線程(或進程)。

4.其他UML活動圖表示法

當某個活動需要在另外一個活動圖中展開時,如何表示?如圖4和圖5所示,可以使用耙子(rake)符號來表示。

▲圖4 在另外一個活動圖中展開一個活動▲圖4 在另外一個活動圖中展開一個活動

▲圖5 活動的擴展▲圖5 活動的擴展

如何表示條件分支?參見圖5中所使用的決策(decision)符號。與之相關(guān)的是合并(merge)符號,用來表示分支流如何回歸到一起。

圖6中展示了信號。當你需要對時間觸發(fā)動作或取消請求等諸如此類的事件建模時,信號非常有用。

此外,還有更多有效的UML活動圖表示法。這里只重點介紹一些最常用的元素。

▲圖6 信號▲圖6 信號


5.準則

在活動圖建模方面,有下面一些準則:

  • 活動圖通常對于涉及眾多參與方的非常復(fù)雜的過程建模最有價值。對于簡單的過程,用例文本就夠用了。
  • 在進行業(yè)務(wù)流程建模時,可以利用耙子(rake)符號和子活動圖。在level 0圖的概覽中,保持較高的抽象水平,從而使圖形具有清晰、簡潔的品質(zhì)。在level 1甚至level 2的子圖中展開細節(jié)。
  • 與上一條相關(guān)的是,盡量保持同一張圖中所有動作節(jié)點的抽象級別一致。舉一個反例,假設(shè)在level 0的圖中有一個叫“交付訂單”的動作節(jié)點,還有一個叫“計算稅款”的動作節(jié)點。這些動作的抽象級別非常不同。

6.示例:NextGen中的活動圖

圖7中的局部模型表示對處理銷售用例中的過程應(yīng)用UML活動圖的例子。展示這一案例研究的示例是為了保證完整性。但是實際上不會費心去創(chuàng)建這個,有了用例文本,而且過程相對簡單,這樣做就沒什么邊際價值了。

▲圖7 使用UML活動圖對處理銷售用例建模▲圖7 使用UML活動圖對處理銷售用例建模


7.過程:統(tǒng)一過程中的活動圖

統(tǒng)一過程的科目之一是業(yè)務(wù)建模(Business Modeling),其用途是理解和溝通“將要部署系統(tǒng)的組織的結(jié)構(gòu)和動態(tài)特征”[RUP]。業(yè)務(wù)建??颇康年P(guān)鍵制品是業(yè)務(wù)對象模型(UP中領(lǐng)域模型的超集)。本質(zhì)上,業(yè)務(wù)對象模型使用UML類圖、序列圖和活動圖對業(yè)務(wù)運轉(zhuǎn)方式進行了可視化。因此,在UP的業(yè)務(wù)建模科目中,活動圖尤為適用。

8.背景

一直以來,存在著眾多的流程建模和數(shù)據(jù)流圖示語言,而UML活動圖日漸流行,成為事實上的標準,但是它還有其他重要變體。

活動圖的語義松散地基于Petri網(wǎng),Petri網(wǎng)是計算機科學中一個重要的計算理論。Petri網(wǎng)的隱喻實現(xiàn)是:令牌流過活動圖。例如,當令牌到達一個動作節(jié)點時,動作將執(zhí)行。當所有必要的輸入令牌到達匯合節(jié)點,輸出令牌將被創(chuàng)建。

關(guān)于作者:

克雷·拉曼(Craig Larman)享譽世界的軟件開發(fā)專家,從事軟件開發(fā)相關(guān)工作超過50年,為面向?qū)ο缶幊趟枷牒兔艚蓍_發(fā)方法在全球IT領(lǐng)域的普及做出了巨大的貢獻,被譽為“有史以來最具影響力的 20 位敏捷人物之一”,是LeSS(大規(guī)模Scrum)的共同創(chuàng)始人。

責任編輯:武曉燕 來源: 數(shù)倉寶貝庫
相關(guān)推薦

2010-06-29 18:16:57

UML建模

2010-06-30 14:37:20

UML類圖

2010-06-17 15:29:52

UML活動圖

2010-07-09 16:13:06

UML活動圖

2010-06-13 15:03:25

UML實踐

2010-07-12 09:37:26

UML建模

2010-06-09 08:59:30

UML活動圖

2010-07-06 12:00:23

UML活動圖

2010-06-30 17:36:58

UML用例圖

2010-07-01 17:05:34

UML包圖

2010-07-09 09:00:22

UML建模

2010-06-09 14:31:31

UML狀態(tài)圖

2010-07-05 13:55:40

UML圖分類

2010-07-06 11:21:37

UML狀態(tài)圖

2022-09-19 09:41:45

數(shù)據(jù)庫思維

2010-06-08 10:51:48

UML活動圖

2010-07-01 16:38:28

UML序列圖

2010-06-10 14:45:24

UML建模語言

2010-06-08 09:30:20

UML圖

2010-07-09 11:23:07

UML動態(tài)建模
點贊
收藏

51CTO技術(shù)棧公眾號