軟件開發方法與技術(動態模型)_第1頁
軟件開發方法與技術(動態模型)_第2頁
軟件開發方法與技術(動態模型)_第3頁
軟件開發方法與技術(動態模型)_第4頁
軟件開發方法與技術(動態模型)_第5頁
已閱讀5頁,還剩63頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第4章動態模型之

狀態圖、順序圖、協作圖和活動圖§4.1狀態圖(StatechartDiagram)狀態圖:描述了一個特定對象在其生存期間的所有可能狀態以及引起狀態躍遷的事件。其中:1.“事件”是引起狀態躍遷(轉移)的內部消息2.“狀態圖”主要用于描述一個對象在其生存期間的動態行為,表現一個對象所經歷的狀態序列,引起狀態轉移的事件(event),以及因狀態轉移而伴隨的動作(action);3.所謂對象可以是類的實例、用例的實例或整個系統的實例.大多數面向對象技術用狀態圖描述單個對象(類的實例)在其生命周期中的動態行為;4.狀態圖是對某個類對象的補充;5.狀態圖在檢查、調試和描述類的動態行為時非常有用;6.狀態圖是UML中對系統的動態行為建模的5個視圖之一一、狀態圖中的基本元素基本元素包括:狀態、關系(轉移)、判斷、事件和動作。

1.狀態(State)狀態:是指在對象的生命期中的某種狀況,在此期間對象將滿足某個條件、或執行某個動作、或等待某個事件。說明:每個對象都有狀態,一個狀態表示該對象執行了之前活動后的結果。其中:狀態可以細分為不同的類型:

⑴初態:⑵終態:

說明:一個狀態圖只能有一個初態。但終態可以有一個或多個,也可以沒有終態。

⑶一般狀態:

活動格式:

do/執行的動作

entry/執行的動作:入口動作

exit/執行的動作:出口動作例如:或狀態名狀態名活動表說明:

當進入這個狀態時首先執行“entry”動作,所以一個狀態只能有一個“entry”動作。習慣上把它放在其他動作的最前面。

②當退出這個狀態時再執行“exit”這個動作,所以一個狀態只能有一個“exit”動作。習慣上把它放在其他動作的最后面。③“do”動作順次執行,執行完所有動作(不包括“exit”這個動作)后等待事件發生。⑷組合狀態(compositestate)組合狀態:一個含有“子狀態(substate)”的狀態子狀態:嵌套在另一個狀態中的狀態

WXYAB例如:⑸歷史狀態(historystate)歷史狀態:是一個偽狀態(pseudostate),其目的是記住從組合狀態中退出時所處的子狀態。當再次進入組合狀態時,可直接進入這個子狀態,而不是再次從組合狀態的初態開始。HH*其中:歷史狀態用符號或表示:是淺(shallow)歷史狀態的符號,表示只記住最外層組合狀態的歷史H設置方法:在該狀態的Specification對畫框中的General頁面選擇

State/activityhistory。:是深(deep)歷史狀態的符號,表示可記住任何深度的組合狀態的歷史。H*設置方法是在該狀態的Specification對畫框中的General頁面同時選擇:

State/activityhistory和Substate/activityhistory。說明:需要注意的是,如果一個組合狀態到達了其終態,則會丟失歷史狀態中的信息,就好像還沒有進入過這個組合狀態一樣2.關系

狀態與狀態之間的關系是標有“事件”字符串的單向關聯關系。也可以沒有“事件”。3.并發和同步4.判定一個判定是一個狀態同兩個以上狀態之間的一種關系,工作流在此處分支轉移。判定符號:例如:二、事件(event)“事件”是引起狀態躍遷(轉移)的內部消息。(前面給出的)或者說是指已發生并可能引發某種活動的一件事其中:事件產生的原因有調用、滿足條件的狀態的出現、到達時間點或經歷某一時間段、發送信號等。事件的語法格式:

?事件名:包括“調用事件”、“變化事件”、“時間事件”名稱

?參數列表傳送的數據列表或是表達式

?監護條件:當該事件發生時,是否躍遷到下一個狀態條件表達式

?動作表達式:當事件發生,監護條件成立時所執行的動作。事件名(參數列表)[監護條件]/動作表達式

1.調用事件(Callevent):

?“調用(Call)”

是指在一個過程的執行點激發一個操作,它將一個控制線程暫時從調用過程轉移到被調用過程。

?調用事件(Callevent)

指的是一個對象對調用(Call)的接收,這個對象利用狀態轉換而不是利用固定的處理流程實現操作。說明:調用事件分為同步調用和異步調用兩種;如果調用者需要等待操作的完成,則是同步調用;反之則是異步調用。調用事件的語法格式如下:過程名(實參列表)[監護條件]/動作表達式例:設有登錄窗口和Login類,Login類中暫時沒有屬性

其描述“準備登錄”狀態到“登錄”狀態過程的狀態圖:123456******其描述“準備登錄”狀態到“登錄”狀態過程的狀態圖:例:設有登錄窗口和Login類,Login類中有屬性

123456******

2.變化事件(ChangeEvent):變化事件指的是依賴于特定屬性值的布爾表達式的條件滿足時,狀態發生改變。變化事件用關鍵字“when”表示,其語法格式如下:

when(布爾表達式)[監護條件]/動作表達式例:基于上例,Login類中增加屬性LoginTimes用來記錄登錄次數則描述“等待登錄”到“準備登錄”狀態過程的狀態圖為:

3.時間事件(timeevent):

時間事件指的是滿足某一時間表達式的情況的出現,例如到了某一時間點或經過了某一時間段.

時間事件用關鍵字“after/when”表示,其語法格式如下:after(時間表達式)[監護條件]/動作表達式例:基于上例,Login類中再增加屬性CountTime用來記錄等待時間(秒).

則描述“等待登錄”到“終止狀態”狀態過程的狀態圖為:OK例1:基于類Login的對象進行登錄之狀態圖例2:殺毒軟件的定時殺毒過程可用狀態圖描述如下:例3:BOOLCEditDlg::OnInitDialog(){

CDialog::OnInitDialog();

//TODO:Addextrainitializationhere

EditRes.Open(CRecordset::snapshot,NULL,CRecordset::none);m_er1=EditRes.m_R1; m_er2=EditRes.m_R2;m_er3=EditRes.m_R3; m_er4=EditRes.m_R4;

UpdateData(FALSE);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCEditDlg::OnCancel(){ //TODO:Addextracleanuphere

EditRes.Close();

CDialog::OnCancel();}voidCEditDlg::OnUpButton(){ //TODO:Addyourcontrolnotificationhandlercodehere

if(!EditRes.IsBOF())EditRes.MovePrev(); m_er1=EditRes.m_R1; m_er2=EditRes.m_R2;m_er3=EditRes.m_R3; m_er4=EditRes.m_R4;

UpdateData(FALSE); }voidCEditDlg::OnDownButton(){ //TODO:Addyourcontrolnotificationhandlercodehere

if(!EditRes.IsEOF())EditRes.MoveNext();m_er1=EditRes.m_R1;m_er2=EditRes.m_R2;m_er3=EditRes.m_R3;m_er4=EditRes.m_R4;

UpdateData(FALSE);}voidCEditDlg::OnOK(){ //TODO:Addextravalidationhere

UpdateData();//將編輯框中的值賦給對應變量m_erl--m_er4

EditRes.Edit();EditRes.m_R1=m_er1; EditRes.m_R2=m_er2;EditRes.m_R3=m_er3; EditRes.m_R4=m_er4;

if(EditRes.CanUpdate()) {

EditRes.Update();

AfxMessageBox("修改成功!");}

EditRes.Close();

CDialog::OnOK();}CDialog::OnCancel()CDialog::OnOK()!EOF!BOF!BOF!EOF!EOFdo/close()注:作為課后練習,建議課后用

Rose

重新構造該圖三、狀態圖的用途及建模技術問題:在對對象(類、用例)建模時,在什么樣的情況下使用狀態圖呢?回答:對反應型對象建模一般使用狀態圖。反映型對象通常具有如下特點:

(1)響應外部事件,即來自對象語境外的事件;例如,窗口中的菜單和按鈕命令

(2)在對某事件做出反映后,它又會變回空閑狀態,等待下一個事件;

窗口菜單選擇退出IdleWorking例如:

(3)具有清晰的生命期,可以被建模為狀態、躍遷和事件的演化;

例如,時間事件或變化事件的發生

(4)當前行為和過去行為存在著依賴關系。例如,“目標狀態”返回到“源狀態”在使用狀態圖對系統反映型對象建模時,可以參照以下步驟進行:

(1)識別一個要對其生命周期進行描述的參與行為的類;

(2)對狀態建模,即確定對象可能存在的狀態;

(3)對事件建模,即確定對象可能存在的事件;

(4)對動作建模,即確定當轉變被激活時,相應被執行的動作;

(5)對建模結果進行精化和細化。狀態圖作用是輔助確定類中的:

(1)屬性、方法

(2)方法和方法之間的關系

(3)對方法中的算法設計也起著指導作用說明:在實際建模應用中狀態圖用的并不多,使用較多的有:時序圖、協作圖和活動圖;但學習、建立和理解狀態圖對基于事件驅動的程序設計和對程序的分析、調試是很重要的。§4.2順序圖(sequencediagram)

順序圖:也稱時序圖,它是一種描述對象之間按照時間順序進行交互的圖,它由一組相互協作的對象以及它們之間可發送的消息組成,它強調消息之間的順序。順序圖組成:主要有橫向和縱向兩個軸。其中:橫向軸排列的是參與交互的對象,縱向軸表示時間。例如:

對象時間說明:1.對象間的排列順序并不重要,但一般把表示參與者的對象放在圖的兩側,主要參與者放在最左邊,次要參與者放在最右邊(或表示人的參與者放在最左邊,表示系統的參與者放在最右邊);2.縱向軸按時間順序列出各對象所發出和接受的消息。順序圖建模元素:對象(object)生命線(lifeline)控制焦點(focusofcontrol)或激活期(activation)消息(message)其中:

1.對象的命名方式主要有以下三種:其中:第一種命名方式包括對象名和類名;第二種命名方式只顯示類名不顯示對象名,即表示這是一個匿名對象;第三種命名方式只顯示對象名不顯示類名,即不關心對象屬于什么類。

2.消息包含普通消息、調用消息、異步消息和返回消息等多種(1)普通消息(Simple)

(2)調用消息(Procedurecall)

調用消息:指發送者把控制傳遞給消息的接收者,然后停止活動,等待消息接收者放棄或返回控制。調用消息的表示符號如下圖所示:①調用消息可以用來表示同步的意義,事實上,在UML規范說明的早期版本中,就是采用“同步消息”這個術語的。②一般地,調用消息的接收者必須是一個被動對象(passiveobject),即它是一個需要通過消息驅動才能執行動作的對象。③另外調用消息必有一個配對的返回消息,為了圖的簡潔和清晰,與調用消息配對的返回消息可以不用畫出。說明:(3)異步消息(Asynchronous)異步消息指發送者通過消息把信號傳遞給消息的接收者,然后繼續自己的活動,不等待接收者返回消息或控制異步消息的表示符號如下圖所示:說明:異步消息的接收者和發送者是并行工作的。(4)返回消息(Return)

返回消息的表示符號如下圖所示:說明:如果是從調用(同步)消息返回,則返回消息是隱含的,所以返回消息可以不用畫出來。對于非調用(同步)消息,如果有返回消息,必須明確表示出來。

ROSE中順序圖消息圖形符號列表:英文名稱中文名稱符號simple普通消息synchronous同步消息balking阻止消息timeoue超時消息Procedurecall調用消息asynchronous異步消息return返回消息對象的創建和撤銷

1.對象的創建(兩種形式)

如果對象在圖的頂部(默認位置),說明對象在交互開始之前就已經存在了(關聯)。如果對象是在交互過程中創建的,那末應當位于圖的中間(依賴)2.對象的撤銷建立時序圖遵循的指導性的原則:

(1)確定交互的語境語境:可以是系統、子系統和用例等

(2)確定參與交互作用的角色—對象,根據對象的重要性,將其從左向右的方向放在時序圖中。

(3)設置每個對象的生命線。一般情況下,對象存在于交互的整個過程,但它也可以在交互過程中創建和撤銷。

(4)從引發某個交互的信息開始,在生命線之間按從上向下的順序畫出隨后的消息。

(5)如果需要設置時間或空間的約束,可以為每個消息附上合適的時間和空間約束。

(6)給某控制流的每個消息附上前置或后置條件,這可以更詳細地說明這個控制流。例1:基于“學生成績管理系統”之“登錄”語境建立順序圖控制焦點的嵌套:Tools

Options

Diagram設置了“顯示”中的“控制焦點”+“分級消息”后的視圖:例2:基于“圖書館管理系統”之“登錄”、“借書業務”語境建立順序圖借助上述順序圖的進一步分析和設計,可將概念層類圖細化為如下說明層類圖:注意:不完備界面設計登錄界面:借書業務界面:§4·3協作圖(CollaborrationDiagram)消息消息流圖形表示為:

顯示兩個對象之間的信息流:協作圖:描述系統成份如何協同工作,它強調參加交互的各對象的組織結構。·協作圖組成:主要由對象、關聯和消息流3種成份組成。其中:關聯就是關聯關系,其圖形符號為:·建立協作圖遵循的指導性的原則:

(1)確定交互過程的語境(上下文))。

(2)識別參與交互過程的對象。

(3)確定對象之間的鏈(Link),以及沿著鏈的消息。

(4)從引發這個交互過程的初始消息開始,將隨后的每個消息附到相應的鏈上。順序圖到協作圖自動轉換:

BrowseCreate

CollaborrationDiagram或F5協作圖到順序圖自動轉換:

BrowseCreate

SequenceDiagram或F5例:順序圖和協作圖的比較

1.順序圖和協作圖都屬于交互圖,都用于描述系統中對象之間的動態關系。

2.順序圖和協作圖在語義上是等價的,兩者之間可以相互轉換,但兩者并不能完全相互代替。

3.兩者強調的重點不同。順序圖強調的是消息的時間順序;協作圖強調的是參與交互的對象的組織。

4.順序圖可以表示某些協作圖無法表示的信息,同樣,協作圖也可以表示某些順序圖無法表示的信息。說明:可根據交互圖補充提取類操作。活動圖:是狀態圖的擴展,其擴展包括以下兩方面:內部增加以下等元素:動作狀態(原有“狀態”)和“活動狀態”;對象及與對象的關聯(用依賴關系)外部增加有:泳道(不同對象的活動區)●說明:活動圖同狀態圖一樣也是一種特殊的狀態機,

整個活動圖起始于起始狀態●終止于結束狀態§4.4活動圖(ActivityDiagram)一、組成元素1.動作狀態動作狀態:表示活動圖的原子動作,即:結構上不能再被分解,工作上不能被中斷的狀態。動作狀態的圖形符號為:如:說明:動作狀態是構造活動圖的最小單位(原子動作),不能再分解;動作狀態是不可以中斷的狀態;

動作狀態是瞬時行為,它所占用的處理時間極短,有時可以忽略不計;動作狀態不能同對象直接建立聯系,即不可以創建、撤銷一個對象;動作狀態不可以有入口動作、出口動作和子狀態機

2.活動狀態活動狀態:是非原子的,也即是可以分解的,可被中斷的狀態。說明:

(1)活作狀態是可以被中斷的狀態;

(2)活動狀態可以有入口動作、出口動作、狀態動作和子狀態機

(3)活作狀態可以同對象直接建立聯系,即活動狀態可以創建、撤銷一個對象。活動狀態的圖形符號為:

如:3.躍遷躍遷:由一個狀態轉向下一個狀態,不需要事件的觸發。用關聯線表示:4.分支(Branch)分支:規定了基于布爾表達式的替換路徑。圖形表示為:5.分叉和匯合(ForkandJoin)分叉:分叉表示將單一的控制流分成兩個或多個并發的控制流匯合:代表了兩個或多個并發(異步)控制流的同步,聯結有多個輸入躍遷和一個

溫馨提示

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

最新文檔

評論

0/150

提交評論