基于新信息技術的軟件工程與UML教程(第二版) 課件 項目11-13 動態建模、物理建模、雙向工程_第1頁
基于新信息技術的軟件工程與UML教程(第二版) 課件 項目11-13 動態建模、物理建模、雙向工程_第2頁
基于新信息技術的軟件工程與UML教程(第二版) 課件 項目11-13 動態建模、物理建模、雙向工程_第3頁
基于新信息技術的軟件工程與UML教程(第二版) 課件 項目11-13 動態建模、物理建模、雙向工程_第4頁
基于新信息技術的軟件工程與UML教程(第二版) 課件 項目11-13 動態建模、物理建模、雙向工程_第5頁
已閱讀5頁,還剩153頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目十一動態建模任務一認識動態建模任務二認識狀態圖任務三認識活動圖任務四認識順序圖任務五認識協作圖

任務一認識動態建模

動態建模描述的是參與者如何通過交互實現系統中的用例。系統中對象的交互是通過順序圖、協作圖或者活動圖來描述的,同時,用例模型中用例實現所使用的類會在狀態圖中得以描述。

UML提供了狀態圖、活動圖、順序圖和協作圖來描述系統的結構和行為,它們適合于描述系統中的對象在執行期間不同的時間點是如何動態交互的。一組對象為了實現一些功能而進行通信稱之為交互,可以通過狀態圖、活動圖、順序圖和協作圖來描述系統的動態行為。通過對軟件系統的靜態結構和動態行為的描述,開發團隊和用戶易于理解目標系統的功能及執行結果。

任務二認?識?狀?態?圖一、狀態圖概述狀態圖(StatechartDiagram)是描述一個實體基于事件反應的動態行為,顯示了該實體如何根據當前所處的狀態對不同的事件做出反應。通常創建一個UML狀態圖是為了以下的研究目的:研究類、角色、子系統或組件的復雜行為。狀態圖主要用來描述對象、子系統、系統的生命周期。狀態圖適合描述跨越多個用例的對象在其生命周期中的各種狀態及其狀態之間的轉換。這些對象可以是類、接口、構件或者結點。

狀態圖能幫助分析員、設計員和開發人員理解系統中對象的行為。類圖和對應的對象圖只展示出系統的靜態方面。它們展示的是系統靜態層次和關聯,并能告訴用戶系統的行為是什么。但它們不能說明這些行為的動態細節。

開發人員尤其要知道對象是如何表現自己的行為的,因為他們要用軟件實施這些行為。僅僅實施對象是不夠的,開發人員還必須讓對象做該做的事情。狀態圖可以確保開發人員能夠清楚地了解對象應該做什么,而不用自己去猜測。如果有了一幅展示對象行為的清晰圖景,那么開發小組構造出的系統滿足需求的可能性就會大大增加。

二、狀態圖的組成

狀態圖由表示狀態的結點和表示狀態之間轉換的帶箭頭的直線組成。若干個狀態由一條或者多條轉換箭頭連接,狀態的轉換由事件觸發,如圖11-1所示。

圖11-1狀態圖

1.起點和終點

起點代表狀態圖的一個初始狀態,此狀態代表狀態圖的起始位置。起點只能作為轉換的源,而不能作為轉換的目標。起點在一個狀態圖中只允許有一個。

終點代表狀態圖的最后狀態,此狀態代表狀態圖的終止位置。終點只能作為轉換的目標,而不能作為轉換的源。終點在一個狀態圖中可以有一個或多個,表示一個活動圖的最后和終結狀態。

狀態圖的起點與終點如圖11-2所示。

圖11-2狀態圖的起點與終點

2.狀態(State)

狀態是指對象在其生命周期中,滿足某些條件、執行某些活動或等待某些事件時的一個狀況。狀態指的是對象的狀態,用圓角的矩形框表示,如圖11-3所示。例如:

?發票(對象)被支付(狀態);

?小車(對象)正在停著(狀態);

?發動機(對象)正在工作(狀態);

?電燈(對象)開著(狀態)。

圖11-3登錄提示狀態

1)狀態的特征

通常一個狀態由名稱、進入/退出動作、內部轉換、子狀態和延遲事件等五個部分組成,如表11-1所示。

如圖11-4所示,常常使用三種標準事件:entry(進入)、do(做)和exit(退出)?!斑M入”用來指定進入一個狀態的動作;“退出”用來指定退出一個狀態的動作;“做”用來指定在該狀態下的動作(如發送一條消息)。

圖11-4初始狀態、原子狀態和結束狀態

“動作”是對象類中一個操作的執行,動作具有原子和不可中斷特性。

“事件”指的是發生且引起某些動作執行的事情,即事件表示在某一特定的時間或空間出現的能夠引發狀態改變的運動變化。事件有很多,大致可以分為入口事件、出口事件、動作事件、信號事件、調用事件、修改事件、時間事件和延遲事件等,如表11-2所示。

2)狀態的類型

狀態的類型有初始狀態、原子狀態和結束狀態,如圖11-4所示。狀態還可以分為組合狀態、子狀態、并發狀態、歷史狀態等。

組合狀態和子狀態如圖11-5所示。子狀態是指被嵌套在另外一個狀態中的狀態。組合狀態是指含有子狀態的狀態。組合狀態也可以有初態和終態。

圖11-5組合狀態與子狀態

并發狀態指一個對象在同一時刻可以處在多種狀態,如圖11-6所示。圖11-6并發狀態

歷史狀態代表上次離開組合狀態時的最后一個活動子狀態,它用一個包含字母“H”的小圓圈表示。每當轉換到組合狀態的歷史狀態時,對象便恢復到上次離開該組合狀態時的最后一個活動子狀態,并執行入口動作,如圖11-7所示。

圖11-7歷史狀態

3.轉換

轉換表示當一個特定事件發生或者某些條件滿足時,一個源狀態下的對象完成一定的動作后將發生狀態轉變,轉向另一個稱為目標狀態的狀態。當發生轉換時,轉換進入的狀態為活動狀態,轉換離開的狀態變為非活動狀態。轉換用箭頭表示,如果沒有標注事件,則本轉換為自動轉換。

轉換通常分為外部轉換、內部轉換、完成轉換和復合轉換四種。一個轉換一般包括五部分信息:源狀態、目標狀態、觸發事件、監護條件和動作。轉換的特征如表11-3所示。

三、使用RationalRose繪制狀態圖

狀態圖顯示了對象的動作行為、對象可能存在的各種狀態、對象創建時的狀態、對象刪除時的狀態、對象如何從一種狀態轉移到另一種狀態以及對象在不同狀態中干什么。

1.創建狀態圖

(1)在瀏覽器中右擊類。

(2)選擇“New”→“StatechartDiagram”,對該類創建一個狀態圖,并命名該圖,如圖11-8所示。

圖11-8創建狀態圖

2.在圖中增加狀態

(1)選擇工具欄的【State】按鈕,單擊框圖增加一個狀態,雙擊狀態命名。

(2)選擇工具欄的“StartState”和“EndState”,單擊框圖增加初始狀態和終止狀態,如圖11-9所示。初始狀態是對象首次實例化時的狀態,狀態圖中只有一個初始狀態。終止狀態表示對象在內存中被刪除之前的狀態,狀態圖中有0個、1個或多個終止狀態。

圖11-9增加狀態

3.在狀態之間增加交接

(1)選擇【StateTransition】工具欄按鈕。

(2)從一種狀態拖到另一種狀態。

(3)雙擊“交接”彈出對話框,可以在“General”中增加事件(Event),在“Detail”中增加保證條件(GuardCondition)等交接的細節,如圖11-10、圖11-11所示。

圖11-10增加事件

圖11-11增加保證條件

4.在狀態中增加活動

(1)右擊狀態并選擇“OpenSpecification”。

(2)選擇【Action】標簽,右擊空白處并選擇“Insert”。

(3)雙擊新活動(清單中有“Entry/”)打開活動規范,在“Name”中輸入活動細節,如圖11-12所示。

圖11-12在狀態中增加活動

任務三認?識?活?動?圖一、活動圖概述

活動圖(ActivityDiagram,又稱動態圖)闡明了業務用例實現的工作流程。業務工作流程說明了業務為向所服務的業務主角提供其所需的價值而必須完成的工作。業務用例由一系列活動組成,它們共同為業務主角生成某些工件。工作流程通常包括一個基本工作流程和一個或多個備選工作流程。工作流程的結構使用活動圖來進行說明。

活動圖與常用的程序流程圖相似,它們的主要區別在于程序流程圖一般用來表示串行過程,而活動圖則可以用來表示并行過程,如圖11-13所示。

圖11-13活動圖

使用活動圖的主要目的是:

(1)描述一個操作執行過程中(操作實現的實例化)所完成的工作(動作)。

(2)描述對象內部的工作。

(3)顯示如何執行一組相關的動作,以及這些動作如何影響它們周圍的對象。

(4)顯示用例的實例是如何執行動作以及如何改變對象狀態的。

(5)說明一次商務活動中的參與者、工作流、組織和對象是如何工作的。

二、活動圖的組成

1.動作狀態

動作狀態是原子性的動作或操作的執行狀態,它不能被外部事件的轉換中斷。動作狀態的原子性決定了動作狀態要么不執行,要么就完成執行,不能中斷。如發送一個信號、設置某個屬性值等。動作狀態沒有子結構、內部轉換或內部活動,它不能包括事件觸發的轉換。

動作狀態有如下特點:

(1)動作狀態是原子的,它是構造活動圖的最小單位,無法分解為更小的部分。

(2)動作狀態是不可中斷的,它一旦運行就不能中斷,一直運行到結束。

(3)動作狀態是瞬時的行為,它所占用的處理時間極短,有時甚至可以忽略。

(4)動作狀態有入轉換,入轉換可以是動作流,也可以是對象流。動作狀態至少有一條出轉換,這條轉換以內部動作的完成為起點,與外部事件無關。

(5)動作狀態與狀態圖中的狀態不同,它不能有入口動作和出口動作,也不能有內部轉移。

(6)動作狀態允許多處出現在同一活動圖中。

2.活動狀態

活動狀態是非原子性的,用來表示一個具有子結構的純粹計算的執行。活動狀態可以分解成其他子活動或動作狀態,可以使轉換離開狀態的事件從外部中斷?;顒訝顟B可以有內部轉換、入口動作和出口動作?;顒訝顟B至少具有一個輸出完成轉換,當狀態中的活動完成時該轉換激發?;顒訝顟B用兩邊為弧的條形框表示,中間填活動名?;顒臃譃楹唵位顒雍徒M合活動。簡單活動是指不能再分解的活動;組合活動是指可以再分解的復雜活動。

活動狀態有如下特點:

(1)活動狀態可以分解成其他子活動或動作狀態,由于它是一組不可中斷的動作或操作的組合,所以可以被中斷。

(2)活動狀態的內部活動可以用另一個活動圖來表示。

(3)活動狀態可以有入口動作和出口動作,也可以有內部轉移。

(4)動作狀態是活動狀態的一個特例,如果某一個活動狀態只包括一個動作,那么它就是一個動作狀態。

動作狀態與活動狀態如圖11-14所示。

圖11-14動作狀態與活動狀態

3.組合活動

組合活動也叫復合活動。在UML的活動圖中,一個大的活動可以分為若干個動作或子活動,這些動作或子活動本身又可以組成一個活動圖,如圖11-15所示。

圖11-15組合活動與簡單活動

4.分叉與結合

并發指的是在同一時間間隔內有兩個或者兩個以上的活動執行。對于一些復雜的大型系統而言,對象在運行時往往不只存在一個控制流,而是存在兩個或者多個并發運行的控制流。為了對并發的控制流建模,在UML中引入了分叉和結合的概念。分叉用于表示將一個控制流分成兩個或者多個并發運行的分支,結合用來表示并行分支在此得到

同步。

分叉用粗黑線表示。分叉具有一個輸入轉換、兩個或者多個輸出轉換,每個轉換都可以是獨立的控制流。結合與分叉相反,結合具有兩個或者多個輸入轉換、一個輸出轉換,先完成的控制流需要在此等待,只有當所有的控制流都到達結合點時,控制才能繼續向下進行,如圖11-16所示。

圖11-16分叉與結合

5.分支與合并

分支在活動圖中很常見,它是轉換的一部分,它將轉換路徑分成多個部分,每一個部分都有單獨的監護條件和不同的結果。當動作流遇到分支時,會根據監護條件的真假來判定動作的流向。分支的每個路徑監護條件應該是互斥的,這樣可以保證只有一個路徑的轉換被激發。

合并指的是兩個或者多個控制路徑在此匯合,合并和分支常常成對使用,合并表示從對應分支開始的條件的行為結束。

在活動圖中,分支與合并都用空心的菱形表示,分支有一個輸入箭頭和兩個輸出箭頭,而合并有兩個輸入箭頭和一個輸出箭頭,如圖11-17所示。

圖11-17分支與合并

6.泳道

為了活動的職責進行組織而將活動圖中的活動狀態分為不同的組,稱為泳道。每個泳道代表特定含義的狀態職責部分。在活動圖中,每個活動只能明確地屬于一個泳道,泳道表示了哪些活動是由哪些對象進行的。每個泳道都有一個與其他泳道不同的名稱。

在活動圖中,每個泳道通過垂直實線與它的鄰居泳道相分離。在泳道的上方是泳道的名稱,不同的泳道中的活動既可以順序進行也可以并發進行,如圖11-18所示。

圖11-18泳道

7.對象流

對象可以在活動圖中顯示,表示動作狀態或者活動狀態與對象之間的依賴關系。對象可以作為動作的輸入或輸出,或簡單地表示指定動作對對象的影響。對象用矩形符號來表示,在矩形的內部有對象名或類名。對象流用帶有箭頭的虛線表示,如圖11-19所示。

對象流中的對象有如下特點:

(1)一個對象可以由多個動作操縱。

(2)一個動作輸出的對象可以作為另一個動作輸入的對象。

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

圖11-19對象流

8.動作流

動作流是指所有動作狀態之間的轉換。在活動圖中,一個動作狀態執行完成本狀態需要完成的動作后會自動轉換到另外一個狀態,一般不需要特定事件的觸發。動作流用帶箭頭的直線表示,箭頭的方向指向轉入的方向,如圖11-20所示。

圖11-20動作流

三、使用RationalRose繪制活動圖

1.創建活動圖

創建用于分析系統業務的活動圖:在瀏覽器中右擊UseCaseView,選擇“New”→“ActivityDiagram”,如圖11-21(a)所示。

創建用于顯示用例中的事件流的活動圖:在瀏覽器中選中某個用例,然后右擊這個用例,選擇“New”→“ActivityDiagram”,如圖11-21(b)所示。

(a)(b)圖11-21創建活動圖

2.增加泳道

泳道是框圖里的豎段,包含特定人員或組織要進行的所有活動。可以把框圖分為多個泳道,每個泳道對應每個人員或組織。

在工具欄中選擇【Swimlane】按鈕,然后單擊框圖增加泳道,最后用人員或組織給泳道命名,如圖11-22所示。

圖11-22增加泳道

3.增加活動并設置活動的順序

(1)在工具欄中選擇【Activity】按鈕,單擊活動圖增加活動,命名活動。

(2)在工具欄中選擇【Transition】按鈕,把箭頭從一個活動拖向另一個活動,如圖11-23所示。

圖11-23增加活動

4.增加同步

(1)在工具欄中選擇【Synchronization】按鈕,單擊框圖來增加同步棒。

(2)畫出從活動到同步棒的交接箭頭,表示在這個活動之后開始并行處理。

(3)畫出從同步棒到可以并行發生的活動之間的交接箭頭。

(4)創建另一同步棒,表示并行處理結束。

(5)畫出從同步活動到最后同步棒之間的交接箭頭,表示完成所有這些活動之后將停止并行處理,如圖11-24所示。

圖11-24增加同步

5.增加決策點

決策點表示可以采取兩個或多個不同的路徑。從決策到活動的交接箭頭要給出保證條件,控制在決策之后采取什么路徑,保證條件應該是互斥的。

(1)在工具欄中選擇【Decision】按鈕,單擊框圖增加決策點。

(2)拖動從決策到決策之后可能發生的活動之間的交接,雙擊“交接”,打開【Detail】選項卡,在“GuardCondition”字段中寫入保證條件,如圖11-25所示。

圖11-25增加決策點

任務四認?識?順?序?圖

一個面向對象的軟件系統是一系列相互協同的對象的集合,每個對象都有自己的“生命”,如果每個對象只關心自己的事情,而不考慮與其他對象的交互,將會產生混亂。為了能夠確定這些交互的方法,必須補全對靜態結構的理解:那些并發對象是如何交互以及交互是如何影響對象的狀態的。創建動態模型來完善系統的靜態模型,不僅可以幫助確定類中需要的操作,也能改進系統的靜態結構。

一、順序圖概述

順序圖(SequenceDiagram)又名序列圖、循序圖、時序圖,是一種UML交互圖。它通過描述對象之間發送消息的時間順序顯示多個對象之間的動態協作。它可以表示用例的行為順序,當執行一個用例行為時,其中的每條消息對應一個類操作或狀態機中引起轉換的觸發事件。順序圖可供不同的用戶使用,以幫助他們進一步了解系統。

?幫助用戶進一步了解業務細節;

?幫助分析人員進一步明確事件處理流程;

?幫助開發人員進一步了解需要開發的對象和對這些對象的操作;

?幫助測試人員通過過程的細節開發測試案例。

在UML中,順序圖表示為二維圖,如圖11-26所示。

圖11-26典型的順序圖

二、順序圖的組成

順序圖是由對象(Object)、生命線(Lifeline)、激活(Activation)和消息(Message)等構成的,圖11-27所示順序圖的目的就是按照交互發生的一系列順序顯示對象之間的交互。

圖11-27順序圖的組成

1.對象

順序圖中的對象和對象圖中對象的概念一樣,都是類的實例。順序圖中的對象可以是系統的參與者或者任何有效的系統對象。對象的表示形式也和對象圖中的對象表示方式一樣,使用包含名稱的矩形框來標記,所顯示的對象及其類的名稱帶有下劃線,二者用冒號隔開,即對象名。

類元角色(Actor)為系統中發起請求消息的對象(或者稱為參與者對象),它可以是任何在系統中扮演角色的對象,不管它是對象實例還是參與者,它與生命線的使用方法相同,只是表示方法不同。類元角色的表示方法如圖11-28所示。

圖11-28類元角色

2.生命線

每個參與者及系統運行中的對象(即活動對象)都用一條垂直的生命線表示。UML用矩形和虛線表示生命線,虛線展示了參與交互的對象的生命長度,矩形框中添加對象名稱。對象與生命線結合在一起稱為對象的生命線。

3.激活

順序圖中的激活是對象操作的執行,它表示一個對象直接或通過從屬操作完成操作的過程。它對執行的持續時間和執行與其調用者之間的控制關系進行建模。激活使用小矩形條表示,它的頂端與激活時間對齊,而底端與完成時間對齊。

4.消息

消息是從一個對象(發送者)向另一個或其他幾個對象(接收者)發送信號,或由一個對象調用另一個對象的操作。消息可以用于在對象間傳遞參數。消息可以是信號,即明確的、命名的、對象間的異步通信;也可以是調用,即具有返回控制機制的操作的異步調用。其中,順序圖中強調的是消息的時間順序,而協作圖中強調交換消息的對象間的關系。

在UML中,消息使用箭頭來表示,箭頭的類型表示了消息的類型,消息箭頭所指的一方是接收方。常見的消息類型如表11-4所示。

三、使用RationalRose繪制順序圖

1.創建順序圖

在瀏覽器內的Logic視圖中單擊鼠標右鍵,選擇“New”→“SequenceDiagram”就新建了一張順序圖,如圖11-29所示。也可以在瀏覽器UseCaseView中選擇某個用例,然后右擊這個用例,選擇“New”→“SequenceDiagram”。

圖11-29創建順序圖

2.在順序圖中放置參與者和對象

順序圖中的主要元素之一就是對象,相似的對象可以被抽象為一個類。

(1)把用例圖中該用例涉及的所有參與者拖到Sequence圖中。

(2)選擇工具欄中的【Object】按鈕,單擊框圖增加對象??梢赃x擇創建已有類的對象,也可以在瀏覽器中新建一個類,再創建新的類的對象。雙擊對象,在彈出的對話框中的“Class”里確定該對象所屬的類。

(3)給對象命名。對象可以命名也可以沒有名字。雙擊對象,在彈出對話框的“Name”中給對象取名,如圖11-30所示。

圖11-30放置參與者和對象

3.說明對象之間的消息

(1)在工具欄中選擇【message】按鈕。

(2)單擊啟動消息的參與者或對象,把消息拖到目標對象和參與者中。

(3)命名消息。雙擊消息,在對話框中“General”里的“name”中輸入消息名稱,如圖11-31所示。

圖11-31對象之間的消息

任務五認?識?協?作?圖

協作圖(CollaborationDiagram/CommunicationDiagram,也叫通信圖)是一種交互圖,強調的是發送和接收消息的對象之間的組織結構。與順序圖不同的是,在協作圖中明確表示了角色之間的關系,通過協作角色來限定協作中的對象或鏈。另外,協作圖不將時間作為單獨的維來表示,所以必須使用順序號來判斷消息的順序以及并行線程。順序圖和協作圖表達的是類似的信息,雖然它們使用不同的方法表示,但可以通過適當的方式進行轉換。

一、協作圖概述

要理解協作圖,首先要了解什么是協作。所謂協作,是指在一定的語境中一組對象以及實現某些行為的對象間的相互作用。在協作中同時包含了運行時的類元角色(ClassifierRoles)和關聯角色(AssociationRoles),類元角色描述了一個對象,關聯角色描述了協作關系中的鏈,并通過幾何排列表現交互作用中的各個角色。協作圖如圖11-32所示。

圖11-32協作圖

協作圖的作用如下:

(1)通過描繪對象之間消息的傳遞情況來反映具體的使用語境的邏輯表達。

(2)顯示對象及其交互關系的空間組織結構。

(3)表現一個類操作的實現。

二、協作圖的組成

協作圖是由對象(Object)、消息(Message)和鏈(Link)等構成的。

1.對象

協作圖中的對象和序列圖中的對象的概念相同,同樣都是類的實例。一個協作代表了為了完成某個目標而共同工作的一組對象。對象的角色表示一個或一組對象在達到目標的過程中所應起的那部分作用。在協作圖中,不需要關于某個類的所有對象都出現,同一個類的對象在一個協作圖中也可能要充當多個角色。

2.消息

在協作圖中,可以通過一系列的消息來描述系統的動態行為。在協作圖中,消息使用帶有標簽的箭頭來表示,它附在連接發送者和接收者的鏈上,如圖11-33所示。鏈連接了發送者和接收者,箭頭的指向便是接收者。

圖11-33消息

3.鏈

在協作圖中的鏈和對象圖中鏈的概念和表示形式都相同,都是兩個或多個對象之間的獨立連接,是對象引用元組(有序表),是關聯的實例。

鏈是關聯的實例,當一個類與另一個類之間有關聯時,這兩個類的實例之間就有鏈,一個對象就能向另一個對象發送消息。所以鏈是對象間的發送消息的路徑。

在協作圖中,鏈的表示形式為一個或多個相連的線或弧。在自身相關聯的類中,鏈是兩端指向同一對象的回路,是一條弧。為了說明對象是如何與另外一個對象進行連接的,還可以在鏈的兩端添加上提供者和客戶端的可見性修飾。圖11-34所示是鏈的普通和自身關聯的表示形式。

圖11-34鏈

三、使用RationalRose繪制協作圖

1.增加對象鏈接

(1)在工具欄中選擇【ObjectLink】按鈕。

(2)單擊要鏈接的參與者或對象。

(3)將對象鏈接拖動到要鏈接的參與者或對象間,如圖11-35所示。

圖11-35增加對象鏈接

2.加進消息

(1)在工具欄中選擇【LinkMessage】或【ReverseLinkMessage】按鈕。

(2)單擊要放消息的對象鏈接。

(3)雙擊消息,可以在彈出的對話框里為消息命名,如圖11-36所示。

圖11-36加進消息

3.建立自反鏈接

(1)在工具欄中選擇【LinktoSelf】按鈕。

(2)單擊要鏈接的對象,會增加一個消息的箭頭。

(3)雙擊消息,命名自反鏈接,如圖11-37所示。

圖11-37建立自反鏈接

四、順序圖與協作圖的比較

1.順序圖與協作圖的區別

順序圖與協作圖都是交互圖,其區別主要表現在:

(1)順序圖強調按時間展開的消息的傳遞,清晰地顯示了時間次序;對簡單的迭代和分支的可視化要比協作圖好,常用于場景顯示,可以不要順序號。

(2)協作圖強調交互中實例之間的結構關系以及所傳送的消息,清晰地顯示了對象間關系;對復雜的迭代和分支的可視化以及對多并發控制流的可視化要比時序圖好,常用于顯示過程設計細節,有路徑和順序號。

2.順序圖與協作圖的互換

UML中的順序圖和協作圖都是用來表示對象之間的交互作用,其中順序圖側重于描述交互過程中的時間關系,對象之間的關系描述不十分清楚;協作圖側重于描述交互過程中的對象之間的關系,時間順序描述不是十分清楚。因此,從某種意義上來說,這兩種圖的作用是等價的,Rose中也提供了這兩種圖之間的轉換方式,步驟如下:

(1)打開要轉換的順序圖或協作圖。

(2)依次選擇主菜單欄中的【Browse】→【GoToSequenceDiagram】,即可將當前的協作圖轉換成順序圖,如圖11-38所示。

圖11-38轉換為順序圖項目十二物理建模任務一認識物理建模任務二認識組件圖任務三認識部署圖

任務一認識物理建模

系統模型的大部分圖是反映系統的邏輯和設計方面的信息,它們獨立于系統的最終實現單元。為了描述系統實現方面的信息,達到系統具有可重用性和可操作性的目的,在UML中通過組建圖和部署圖來表示實現單元。

進行物理建模的主要目的是解決以下問題:

?類和對象物理上分布在哪一個程序或進程中?

?程序和進程在哪臺計算機上運行?

?系統中有哪些計算機和其他的硬件設備?它們如何連接在一起?

?不同的代碼文件之間有何關聯?如果某一文件被改變,其他的文件是否需要重新編譯?

任務二認?識?組?件?圖

一、組件圖概述組件圖描述了軟件的組成和具體結構,表示了系統的靜態部分,它能夠幫助開發人員從總體上認識系統。用戶通常采用組件圖來描述可執行程序的結構、源代碼、物理數據庫組成和結構。

通過組件圖可以清晰地表示出軟件的所有源文件之間的關系,如圖12-1所示,這樣開發者就可以更好地理解各個源代碼文件之間的依賴關系,所以組件圖對源文件建模就顯得比較重要。

圖12-1組件圖

在對源程序進行建模時,通常應遵從以下原則:

(1)在正向工程或逆向工程中,識別出要重點描述的每個源代碼文件,并把每個源代碼文件標識為構件。

(2)如果系統較大,包含的構件很多,就利用包來對組件進行分組。

(3)找出源代碼之間的編譯依賴關系,并用工具管理這些依賴關系。

(4)給現有系統確定一個版本號,在組件圖中,采用約束來表示源代碼的版本號、作者和最后的修改日期等信息。

在UML中,組件用一個左邊帶有兩個小矩形的符號來表示。組件名放在組件符號的下面或寫在組件符號的大矩形內。如圖12-2所示。圖12-2組件

二、組件圖的組成

1.組件

組件是定義了良好接口的物理實現單元,是系統中可替換的物理部件。組件表示將類、接口等邏輯元素打包而成的物理模塊。

1)名稱

每個組件都必須有一個不同于其他組件的名稱。組件的名稱是一個字符串,位于組件圖標的內部。

2)組件的種類

組件通常包括編譯時的源組件、鏈接時的二進制組件和運行時的可執行組件三種類型。

(1)源組件。源組件只在編譯時有意義。通常情況下,源組件是指實現一個或多個類的源代碼文件。

(2)二進制組件。通常情況下,二進制組件是指對象代碼,它是源組件的編譯結果。它應該是一個對象代碼文件、一個靜態庫文件或一個動態庫文件。二進制組件只有在鏈接時才有意義。如果是動態庫文件,則在運行時有意義。

(3)可執行組件??蓤绦薪M件是一個可執行的程序文件,它是鏈接所有二進制組件所得到的結果。

2.接口

在組件圖中,組件可以通過其他組件的接口來使用其他組件中定義的操作。通過使用命名接口,可以避免在系統中各個組件之間直接發生依賴關系,有利于組件的替換。組件圖中的接口使用一個小圓圈表示。

3.接口和組件的關系

接口和組件的關系分為兩種:實現關系和依賴關系。接口和組件之間用實線連接表示實現關系,用虛線箭頭連接表示依賴關系,如圖12-3所示。

圖12-3組件圖中的接口

三、使用RationalRose繪制組件圖

1.創建組件圖

創建組件圖的過程如圖12-4所示:

(1)右鍵單擊瀏覽器中的Component視圖。

(2)選擇“New”→“ComponentDiagram”,并命名新的框圖。

圖12-4創建構件圖

2.把構件加入框圖

把構件加入框圖的過程如圖12-5所示:

(1)選擇【Component】工具欄按鈕,單擊框圖增加構件,并命名構件。

(2)右鍵單擊構件,選擇“OpenSpecification”,在“Stereotype”中設置構件版型。

圖12-5設置構件版型

任務三認?識?部?署?圖

一、部署圖概述

部署圖(DeploymentDiagram)用來顯示系統中軟件和硬件的物理架構。從部署圖中可以了解到軟件和硬件組件之間的物理關系以及處理結點的組件分布情況。使用部署圖可以顯示運行時系統的結構,同時還可傳達構成應用程序的硬件和軟件元素的配置和部署方式,如圖12-6所示。

圖12-6部署圖

創建一個部署模型的目的有以下幾點:

?描述系統投產的相關問題。

?描述系統與生產環境中的其他系統間的依賴關系,這些系統可能是已經存在的,或是將要引入的。

?描述一個商業應用主要的部署結構。

?設計一個嵌入系統的硬件和軟件結構。

?描述一個組織的硬件/網絡基礎結構。

二、部署圖的組成

部署圖通常包括2種元素:結點和關聯關系。

1.結點

結點是擁有某些計算資源的物理對象。這些資源包括帶處理器的計算機、外部設備(如打印機、讀卡機、通信設備等)。

一個結點用名稱區別于其他結點。結點的名稱是一個字符串,位于結點的圖標內部。

在應用部署圖建模時,通??梢詫⒔Y點分為處理器和設備兩種類型,如圖12-7所示。

圖12-7結點

2.關聯關系

部署圖結點間通過通信關聯在一起。在UML中,這種通信關聯用一條直線表示,如圖12-8所示,說明在結點間存在某類通信路徑,結點通過這條通信路徑交換對象或發送消息。

圖12-8結點間的通信關聯

三、使用RationalRose繪制部署圖

1.創建部署圖

創建部署圖的過程如圖12-9所示:

(1)雙擊DeploymentView。

(2)選擇【Processor】工具欄按鈕,單擊框圖增加處理器,并命名處理器。

(3)在DeploymenView中右擊處理器并選擇“New”→“Process”,命名進程。

(4)在框圖中右擊處理器,對“ShowProcesses”打鉤,可以在框圖中顯示該處理器的進程。

圖12-9創建實施圖

2.把設備加入到框圖中

把設備加入到框圖中的過程如圖12-10所示:

(1)選擇【Device】工具欄按鈕。

(2)單擊框圖增加設備,并命名。

圖12-10加入設備

3.把連接加進框圖

把連接加進框圖中的過程如圖12-11所示:

(1)選擇【Connection】工具欄按鈕。

(2)單擊要連接的一個處理器或設備,拖動到要連接的另一個處理器或設備。

(3)命名連接。

圖12-11加入連接

習題

1.繪制ATM系統客戶的組件圖(見圖12-12)。

理解:例如用C++建立系統,每個類有自己的頭文件和體文件,因此圖中每個類映射自己的組件,例如ATM屏幕類映射兩個ATM屏幕組件,這兩個ATM屏幕組件表示ATM屏幕類的頭和體。陰影構件稱為包體,表示C++中ATM屏幕類的體文件(.cpp),構件版型是PackageBody。無陰影的構件稱為包規范,這個包規范表示C++類的頭文件(.H),構件版型是PackageSpecification。構件ATM.exe是個任務規范,表示處理線程,是一個可執行程序。

圖12-12ATM系統的組件圖

2.繪制ATM系統的部署圖(見圖12-13)

理解:ATM系統的部署圖顯示了系統的主要布局。ATM客戶機可執行文件在不同地點的多個ATM上運行。ATM客戶機通過專用網與地區ATM服務器通信。ATM服務器上的可執行文件在地區ATM服務器上執行。地區ATM服務器又通過局域網與運行Oracle的銀行數據庫服務器通信。最后,打印機與地區ATM服務器連接。

ATM系統采用了三層結構,分別針對數據庫、地區ATM服務器和客戶機。

圖12-13ATM系統的部署圖項目十三雙向工程任務一認識雙向工程任務二正向工程任務三逆向工程

任務一認識雙向工程

Rose的雙向工程包括正向工程和逆向工程。正向工程就是從UML模型到具體語言代碼的過程,而逆向工程是在軟件開發環境中由具體的語言到UML模型的過程。使用正向工程,一旦軟件系統的設計完成后,開發者可以借助于正向工程直接由UML模型生成程序代碼框架,提高開發效率。借助于逆向工程,開發者可以通過程序源代碼得到軟件系統的設計模型和設計文檔。

任務二正向工程

一、正向工程概述正向工程是從模型圖到代碼框架的過程。通過將軟件模型對某種特定語言的映射可以從UML圖得到該語言的代碼,幫助開發者節約許多編寫類、定義屬性和方法等重復性工作的時間。對一個Java模型元素進行正向工程時,模型的特征會映射到對應的Java語言的特征。Rose中類圖中的一個類會通過組件生成一個“.Java”文件;Rose中的包會生成Java中的一個包。

二、使用Rose的正向工程將類圖生成Java代碼

(1)設置默認語言為Java。在主菜單欄中依次選擇【Tools】→【Options】菜單,選擇【Notation】選項卡,選擇“default”列表框中的語言為Java,如圖13-1所示。

圖13-1設置默認語言為Java

(2)設置環境變量ClassPath。在主菜單欄中依次選擇【Tools】→【Java/J2EE】→【ProjectSpecificat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論