一種輔助性的制圖工具+交互圖+一種軟件工程設(shè)計人員必學(xué)習(xí)的內(nèi)容ppt課件_第1頁
一種輔助性的制圖工具+交互圖+一種軟件工程設(shè)計人員必學(xué)習(xí)的內(nèi)容ppt課件_第2頁
一種輔助性的制圖工具+交互圖+一種軟件工程設(shè)計人員必學(xué)習(xí)的內(nèi)容ppt課件_第3頁
一種輔助性的制圖工具+交互圖+一種軟件工程設(shè)計人員必學(xué)習(xí)的內(nèi)容ppt課件_第4頁
一種輔助性的制圖工具+交互圖+一種軟件工程設(shè)計人員必學(xué)習(xí)的內(nèi)容ppt課件_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、交互與交互圖交互與交互圖如何閱讀交互圖如何閱讀交互圖如何繪制交互圖如何繪制交互圖交互圖應(yīng)用說明交互圖應(yīng)用說明定時圖定時圖本章小結(jié)本章小結(jié)交互與交互圖交互與交互圖如何閱讀交互圖如何閱讀交互圖如何繪制交互圖如何繪制交互圖交互圖應(yīng)用說明交互圖應(yīng)用說明定時圖定時圖本章小結(jié)本章小結(jié)一次交互就是指在特定語境中,為了實現(xiàn)某一個目標(biāo),一次交互就是指在特定語境中,為了實現(xiàn)某一個目標(biāo),而在一組對象之間進行交換的一組消息所表示的行為而在一組對象之間進行交換的一組消息所表示的行為 順序圖:順序圖是一種強調(diào)消息時間順序的交互圖,為順序圖:順序圖是一種強調(diào)消息時間順序的交互圖,為讀者提供了控制流隨著時間推移的清晰的可視化

2、軌跡讀者提供了控制流隨著時間推移的清晰的可視化軌跡 通信圖:通信圖:UML 2.0中的通信圖實際上就是中的通信圖實際上就是UML 1中的協(xié)中的協(xié)作圖,它強調(diào)的是參加交互的對象的組織,為讀者提供作圖,它強調(diào)的是參加交互的對象的組織,為讀者提供了在協(xié)作對象結(jié)構(gòu)組織的語境中觀察控制流的一個清晰了在協(xié)作對象結(jié)構(gòu)組織的語境中觀察控制流的一個清晰的可視化軌跡的可視化軌跡 定時圖:采用了一種帶數(shù)字刻度的時間軸來精確地描述定時圖:采用了一種帶數(shù)字刻度的時間軸來精確地描述消息的順序消息的順序交互概述圖:是交互圖和活動圖的混合物交互概述圖:是交互圖和活動圖的混合物 1.1 概述 順序圖(序列圖)主要用于按照交互發(fā)

3、生的一系列順序,顯示對象之間的這些交互。很象類圖,開發(fā)者一般認為序列圖只對他們有意義。然而,一個組織的業(yè)務(wù)人員會發(fā)現(xiàn),序列圖顯示不同的業(yè)務(wù)對象如何交互,對于交流當(dāng)前業(yè)務(wù)如何進行很有用。除記錄組織的當(dāng)前事件外,一個業(yè)務(wù)級的序列圖能被當(dāng)作一個需求文件使用,為實現(xiàn)一個未來系統(tǒng)傳遞需求。在項目的需求階段,分析師能通過提供一個更加正式層次的表達,把用例帶入下一層次。那種情況下,用例常常被細化為一個或者更多的序列圖。 序列圖的主要用途之一,是把用例表達的需求,轉(zhuǎn)化為進一步、更加正式層次的精細表達。用例常常被細化為一個或者更多的序列圖。 對象與角色:最頂上一排矩形框。在交互圖中,參與交對象與角色:最頂上一排

4、矩形框。在交互圖中,參與交互的對象既可以是具體的事物,又可以是原型化的事物。互的對象既可以是具體的事物,又可以是原型化的事物。作為具體的事物,一個對象代作為具體的事物,一個對象代表現(xiàn)實世界中的某個東西。例如,表現(xiàn)實世界中的某個東西。例如,aOrder作為類作為類Order的一個實例,可以代表一個的一個實例,可以代表一個特定的訂單;而如果作為一個原型化的事特定的訂單;而如果作為一個原型化的事件,則件,則aOrder可以代表類可以代表類Order的任何一的任何一個實例。個實例。生命線與控制焦點:每個對象都有自己的生命線與控制焦點:每個對象都有自己的生命線,對象生命線是一條垂直的虛線,生命線,對象生

5、命線是一條垂直的虛線,用來表示一個對象在一段時間內(nèi)存在。用來表示一個對象在一段時間內(nèi)存在。音訊:用來描述對象之間所進行的通信的,該信息帶有音訊:用來描述對象之間所進行的通信的,該信息帶有對將要發(fā)生的活動的期望。當(dāng)傳送一個消息時,它所引對將要發(fā)生的活動的期望。當(dāng)傳送一個消息時,它所引起的動用是一個通過對計算過程的抽象而得到的可執(zhí)行起的動用是一個通過對計算過程的抽象而得到的可執(zhí)行語句。語句。消息分為五種:調(diào)用、前往、發(fā)送、創(chuàng)建和銷毀消息分為五種:調(diào)用、前往、發(fā)送、創(chuàng)建和銷毀調(diào)用:表示調(diào)用某個對象一個操作調(diào)用:表示調(diào)用某個對象一個操作 順序編號:整個消息的傳遞過程就形成了一個完整的序列,因此通順序編

6、號:整個消息的傳遞過程就形成了一個完整的序列,因此通過在每個消息的前面加上一個用冒號隔開的順序號來表示其順序。過在每個消息的前面加上一個用冒號隔開的順序號來表示其順序。除了順序編號之外,還可以采用嵌套方案:除了順序編號之外,還可以采用嵌套方案:框架符號框架符號在在 UML 2中,框架元件用于作為許多其他的圖元件中,框架元件用于作為許多其他的圖元件的一個基礎(chǔ),作為圖的圖形化邊界。的一個基礎(chǔ),作為圖的圖形化邊界。除了提供一個圖形化邊框之外,用于圖中的框架元件也有描述交互的重要的功能。在序列圖上一個序列接收和發(fā)送消息交互),能通過連接消息和框架元件邊界,建立模型如圖 2 所見到)。注意在圖 2 中,

7、對于序列圖,圖的標(biāo)簽由文字“sd開場。當(dāng)使用一個框架元件封閉一個圖時,圖的標(biāo)簽需要按照以下的格式:UML 規(guī)范給圖類型提供特定的文本值。(舉例來說,sd代表序列圖,activity代表活動圖,use case代表用例圖)。根底根底序列圖的主要目的是定義事件序列,產(chǎn)生一些希望的序列圖的主要目的是定義事件序列,產(chǎn)生一些希望的輸出。重點不是消息本身,而是消息產(chǎn)生的順序;不輸出。重點不是消息本身,而是消息產(chǎn)生的順序;不過,大多數(shù)序列圖會表示一個系統(tǒng)的對象之間傳遞的過,大多數(shù)序列圖會表示一個系統(tǒng)的對象之間傳遞的什么消息,以及它們發(fā)生的順序。圖按照水平和垂直什么消息,以及它們發(fā)生的順序。圖按照水平和垂直的

8、維度傳遞信息:垂直維度從上而下表示消息的維度傳遞信息:垂直維度從上而下表示消息/調(diào)用調(diào)用發(fā)生的時間序列,而且水平維度從左到右表示消息發(fā)發(fā)生的時間序列,而且水平維度從左到右表示消息發(fā)送到的對象實例。送到的對象實例。生命線生命線當(dāng)畫一個序列圖的時候,放置生命線符號元件,橫跨當(dāng)畫一個序列圖的時候,放置生命線符號元件,橫跨圖的頂部。生命線表示序列中,建模的角色或?qū)ο髮崍D的頂部。生命線表示序列中,建模的角色或?qū)ο髮嵗?。例?生命線畫作一個方格,一條虛線從上而下,通生命線畫作一個方格,一條虛線從上而下,通過底部邊界的中心圖過底部邊界的中心圖 3)。生命線名字放置在方格)。生命線名字放置在方格里。里。圖圖

9、3: 用于一個實體名為用于一個實體名為freshman的生命線的的生命線的Student類的一個例子類的一個例子UML 的生命線命名標(biāo)準(zhǔn)按照如下格式:生命線生命線圖圖 3 中我們生命線例子是一個命名的對象,但是不是中我們生命線例子是一個命名的對象,但是不是所有的生命線都代表命名的對象。相反的,一個生命所有的生命線都代表命名的對象。相反的,一個生命線能用來表現(xiàn)一個匿名的或未命名的實體。當(dāng)在一個線能用來表現(xiàn)一個匿名的或未命名的實體。當(dāng)在一個序列圖上,為一個未命名的實例建模時,生命線的名序列圖上,為一個未命名的實例建模時,生命線的名字采用和一個命名實例相同的模式;但是生命線名字字采用和一個命名實例相

10、同的模式;但是生命線名字的位置留下空白,而不是提供一個例圖名字。再次參的位置留下空白,而不是提供一個例圖名字。再次參考圖考圖 3,如果生命線正在表現(xiàn),如果生命線正在表現(xiàn)Student類的一個匿名例類的一個匿名例圖,生命線會是圖,生命線會是: “Student”。同時。同時, 因為序列圖在項因為序列圖在項目設(shè)計階段中使用,有一個未指定的對象是完全合法目設(shè)計階段中使用,有一個未指定的對象是完全合法: 舉例來說,舉例來說,“freshman”。圖圖 3: 用于一個實體名為用于一個實體名為freshman的生命線的的生命線的Student類的一個例子類的一個例子音訊音訊為了可讀性,序列圖的第一個消息總

11、是從頂端開始,為了可讀性,序列圖的第一個消息總是從頂端開始,并且一般位于圖的左邊。然后繼發(fā)的消息加入圖中,并且一般位于圖的左邊。然后繼發(fā)的消息加入圖中,稍微比前面的消息低些。稍微比前面的消息低些。為了顯示一個對象例如,生命線傳遞一個消息給為了顯示一個對象例如,生命線傳遞一個消息給另外一個對象,你畫一條線指向接收對象,包括一個另外一個對象,你畫一條線指向接收對象,包括一個實心箭頭如果是一個同步調(diào)用操作或一個棍形箭實心箭頭如果是一個同步調(diào)用操作或一個棍形箭頭如果是一個異步訊號)。音訊頭如果是一個異步訊號)。音訊/方法名字放置在方法名字放置在帶箭頭的線上面。正在被傳遞給接收對象的消息,表帶箭頭的線上

12、面。正在被傳遞給接收對象的消息,表示接收對象的類實現(xiàn)的一個操作示接收對象的類實現(xiàn)的一個操作/方法。方法。音訊音訊圖圖 4: 一個在對象之間傳遞消息的實例一個在對象之間傳遞消息的實例返回消息是可選擇的;一個返回消息畫作一個帶開放箭頭的虛線,向后指向來源的生命線,在這條虛線上面,你放置操作的返回值。 音訊音訊當(dāng)序列圖建模時,有時候,一個對象將會需要傳遞一當(dāng)序列圖建模時,有時候,一個對象將會需要傳遞一個消息給它本身。一個對象何時稱它本身?一個純化個消息給它本身。一個對象何時稱它本身?一個純化論者會爭辯一個對象應(yīng)該永不傳遞一個消息給它本身論者會爭辯一個對象應(yīng)該永不傳遞一個消息給它本身。然而,為傳遞一個

13、消息給它本身的對象建模,在一。然而,為傳遞一個消息給它本身的對象建模,在一些情境中可能是有用的。舉例來說,圖些情境中可能是有用的。舉例來說,圖 5 是圖是圖 4 的一的一個改良版本。個改良版本。 圖圖 5 版本顯示調(diào)用它的版本顯示調(diào)用它的 determineAvailableReports 方法的系統(tǒng)對象。通過表方法的系統(tǒng)對象。通過表示系統(tǒng)傳遞消息示系統(tǒng)傳遞消息“determineAvailableReports給它本給它本身,模型把注意力集中到過程的事實上,而不是系統(tǒng)身,模型把注意力集中到過程的事實上,而不是系統(tǒng)對象。對象。音訊音訊當(dāng)序列圖建模時,有時候,一個對象將會需要傳遞一當(dāng)序列圖建模時

14、,有時候,一個對象將會需要傳遞一個消息給它本身。一個對象何時稱它本身?一個純化個消息給它本身。一個對象何時稱它本身?一個純化論者會爭辯一個對象應(yīng)該永不傳遞一個消息給它本身論者會爭辯一個對象應(yīng)該永不傳遞一個消息給它本身。然而,為傳遞一個消息給它本身的對象建模,在一。然而,為傳遞一個消息給它本身的對象建模,在一些情境中可能是有用的。舉例來說,圖些情境中可能是有用的。舉例來說,圖 5 是圖是圖 4 的一的一個改良版本。個改良版本。 圖圖 5 版本顯示調(diào)用它的版本顯示調(diào)用它的 determineAvailableReports 方法的系統(tǒng)對象。通過表方法的系統(tǒng)對象。通過表示系統(tǒng)傳遞消息示系統(tǒng)傳遞消息“

15、determineAvailableReports給它本給它本身,模型把注意力集中到過程的事實上,而不是系統(tǒng)身,模型把注意力集中到過程的事實上,而不是系統(tǒng)對象。對象。為了要畫一個調(diào)用本身的對象,如你平時所作的,畫為了要畫一個調(diào)用本身的對象,如你平時所作的,畫一條消息,但是不是連接它到另外的一個對象,而是一條消息,但是不是連接它到另外的一個對象,而是你把消息連接回對象本身。你把消息連接回對象本身。音訊音訊圖圖 5: 系統(tǒng)對象調(diào)用它的系統(tǒng)對象調(diào)用它的 determineAvailableReports 方法方法音訊音訊圖圖 5 中的消息實例顯示同步消息;然而,在序列圖中中的消息實例顯示同步消息;然

16、而,在序列圖中,你也能為異步消息建模。一個異步消息和一個同步,你也能為異步消息建模。一個異步消息和一個同步的畫法類似,但是消息畫的線帶一個棍形矛頭,如圖的畫法類似,但是消息畫的線帶一個棍形矛頭,如圖 6 所示。所示。圖 6: 表示傳遞到實體2的異步消息的序列圖片段約束約束當(dāng)為對象的交互建模時,有時候,必須滿足一個條件當(dāng)為對象的交互建模時,有時候,必須滿足一個條件,消息才會傳遞給對象。約束在,消息才會傳遞給對象。約束在 UML 圖各處中,用圖各處中,用于控制流。在這里,我將會討論于控制流。在這里,我將會討論UML 1.x 及及UML 2.0兩者的約束。在兩者的約束。在 UML 1.x 中,一個約

17、束只可能被分中,一個約束只可能被分配到一個單一消息。配到一個單一消息。UML 1.x中,為了在一個序列圖中,為了在一個序列圖上畫一個約束,你把約束元件放在約束的消息線上,上畫一個約束,你把約束元件放在約束的消息線上,消息名字之前。圖消息名字之前。圖 7 顯示序列圖的一個片段,消息顯示序列圖的一個片段,消息addStudent 方法上有一個約束。方法上有一個約束。約束約束在圖 7 中,約束是文本“ pastDueBalance=0”。通過這個消息上的約束,如果應(yīng)收帳系統(tǒng)返回一個零點的逾期平衡,addStudent 消息才將會被傳遞。圖 7:UML 1.x 序列圖的一個片段,其中addStuden

18、t 消息有一個約束約束約束-組合碎片組合碎片(變體方案,選擇項,和循環(huán)變體方案,選擇項,和循環(huán))然而,在大多數(shù)的序列圖中,然而,在大多數(shù)的序列圖中,UML 1.x“in-line約束約束不足以處理一個建模序列的必需邏輯。這個功能缺失不足以處理一個建模序列的必需邏輯。這個功能缺失是是 UML 1.x 的一個問題。的一個問題。UML 2 已經(jīng)通過去掉已經(jīng)通過去掉“in-line約束,增加一個叫做組合碎片的符號元件,解約束,增加一個叫做組合碎片的符號元件,解決了這一個問題。一個組合碎片用來把一套消息組合決了這一個問題。一個組合碎片用來把一套消息組合在一起,在一個序列圖中顯示條件分支。在一起,在一個序

19、列圖中顯示條件分支。UML 2 規(guī)規(guī)范指明了組合碎片的范指明了組合碎片的 11 種交互類型。種交互類型。 約束約束-變體變體 變體用來指明在兩個或更多的消息序列之間的、變體用來指明在兩個或更多的消息序列之間的、互斥的選擇。變體支持經(jīng)典的互斥的選擇。變體支持經(jīng)典的“if then else邏輯的建邏輯的建模舉例來說,假設(shè)模舉例來說,假設(shè) 我買三個,然后我買三個,然后 我得到我得到 我購買我購買的的20% 折扣;否則折扣;否則 我得到我購買的我得到我購買的 10% 折扣)。折扣)。約束約束-變體變體 一個變體的組合碎一個變體的組合碎片元件使用框架來畫。片元件使用框架來畫。單詞單詞“alt放置在框架

20、放置在框架的的namebox里。然后較里。然后較大的長方形分為大的長方形分為 UML 2 所稱的操作元。所稱的操作元。 操作元操作元被虛線分開。每個操作被虛線分開。每個操作元有一個約束進行測試元有一個約束進行測試,而這個約束被放置在,而這個約束被放置在生命線頂端的操作元的生命線頂端的操作元的左上部。左上部。 如果操作元的如果操作元的約束等于約束等于“true”,然后,然后那個操作元是要執(zhí)行的那個操作元是要執(zhí)行的操作元。操作元。 圖 8:包含變體組合碎片的一個序列圖片段約束約束-變體變體 圖 8作為一個變體的組合碎片如何閱讀的例子,顯示序列從頂部開始,即bank對象獲取支票金額和帳戶結(jié)余。此時,

21、序列圖中的變體組合碎片接管。因為約束“balance = amount”,如果余額超過或等于金額,然后順序進行bank對象傳遞 addDebitTransaction 和 storePhotoOfCheck 消息給account對象。然而,如果余額不是超過或等于金額,然后順序的過程就是bank傳遞addInsuffientFundFee 和 noteReturnedCheck 消息給account對象,returnCheck 消息給它自身。由于“else約束,當(dāng)余額不大于或者等于金額時,第二個序列被調(diào)用。在變體的組合碎片中,不需要“else約束;而如果一個操作元,在它上面沒有一個明確的約束,那

22、么將假定“else約束。約束約束-選擇項選擇項 選擇項組合碎片用來為序列建模,這些序列給予一個特定條件,將會發(fā)生的;或者,序列不發(fā)生。一個選擇項用來為簡單的“if then表達式建模。(例如,如果架上的圈餅少于五個,那么另外做兩打圈餅)。 選擇項組合碎片符號與變體組合碎片類似,除了它只有一個操作元并且永不能有“else約束以外它就是如此,沒有理由)。要畫選擇項組合,你畫一個框架。文字“opt是被放置在框架的 namebox 里的文本,在框架的內(nèi)容區(qū),選擇項的約束被放置在生命線頂端上的左上角。 然后選擇項的消息序列被放在框架的內(nèi)容區(qū)的其余位置內(nèi)。約束約束-選擇項選擇項 圖 9:包括選擇項組合碎片

23、的一個序列圖片段約束約束-選擇項選擇項 閱讀選擇項組合碎片很容易。圖 9 是圖 7 的序列圖片段的再加工,但是這次它使用一個選擇項組合碎片,因為如果Student的逾期平衡等于0,需要傳遞更多的消息。按照圖 9 的序列圖,如果Student的逾期平衡等于零,然后傳遞addStudent,getCostOfClass和chargeForClass消息。如果Student的逾期平衡不等于零,那么在選擇項組合碎片中,序列不傳遞任何一個消息。 約束約束-循環(huán)循環(huán) 在 UML 2 中,為一個重復(fù)的序列建模已經(jīng)改良,附加了循環(huán)組合碎片。 循環(huán)組合碎片表面非常類似選擇項組合碎片。你畫一個框架,在框架的 na

24、mebox 中放置文本“l(fā)oop”。在框架的內(nèi)容區(qū)中,一個生命線的頂部,循環(huán)約束 6 被放置在左上角。然后循環(huán)的消息序列被放在框架內(nèi)容區(qū)的其余部分中。 在 一個循環(huán)中,除了標(biāo)準(zhǔn)的布爾測試外,一個約束能測試二個特定的條件式。特定的約束條件式是寫作“minint = the number”(例如,“minint = 1”)的最小循環(huán)次數(shù),和寫作“maxint = the number”(例如,“maxint = 5”)的最大循環(huán)次數(shù)。通過最小循環(huán)檢驗,循環(huán)必須運行至少指定次數(shù),而循環(huán)執(zhí)行次數(shù)不能達到約束指定的最大循環(huán)次數(shù)。約束約束-循環(huán)循環(huán) 圖 10:包括循環(huán)項組合碎片的一個序列圖片段引用另外一個

25、順序圖引用另外一個順序圖 當(dāng)做序列圖的時候,開發(fā)者愛在他們的序列圖中,重用存在的序列圖。 在 UML 2 中開始,引進“交互進行元件。由此能組合重用較簡單的序列,生成比較復(fù)雜的序列。 一個交互進行元件使用一個框架繪制。文字“ref放置在框架的 namebox 中,引用的序列圖名字放置在框架的內(nèi)容區(qū)里,連同序列圖的任何參數(shù)一起。引用序列圖的名字符號如下模式:引用另外一個順序圖引用另外一個順序圖兩個例子:1. Retrieve Borrower Credit Report(ssn) : borrowerCreditReport 或者2. Process Credit Card(name, numb

26、er, expirationDate, amount : 100) 在例子 1 中,語法調(diào)用叫做Retrieve Borrower Credit Report的序列圖,傳遞給它參數(shù) ssn。序列Retreive Borrower Credit Report返回變量 borrowerCreditReport 。在實例 2 中,語法調(diào)用叫做Process Credit Card的序列圖,傳遞給它參數(shù)name,number,expiration date,和 amount。然而,在例子 2 中,amount參數(shù)將會是值100。因為例子2沒有返回值標(biāo)簽,序列不返回值假設(shè),建模的序列不需要返回值)。引用

27、另外一個順序圖引用另外一個順序圖圖 11: 一個引用兩個不同序列圖的序列圖引用另外一個順序圖引用另外一個順序圖 圖 11 顯示一個序列圖,它引用了序列圖“Balance Lookup和“Debit Account”。序列從左上角開始,客戶傳遞一個消息給teller對象。teller對象傳遞一個消息給 theirBank 對象。那時,調(diào)用Balance Lookup序列圖,而 accountNumber作為一個參數(shù)傳遞。Balance Lookup序列圖返回balance變量。然后檢驗選擇項組合碎片的約束條件,確認余額大于金額變量。在余額比金額更大的情況下,調(diào)用Debit Account序列圖,

28、給它傳遞參數(shù)accountNumber 和amount。在那個序列完成后,withdrawCash 消息為客戶返回cash。引用另外一個順序圖引用另外一個順序圖在圖 11 中,序列引用“Balance Lookup序列圖?!癇alance Lookup序列圖在圖 12 中顯示。因為例子序列有參數(shù)和一個返回值,它的標(biāo)簽 位于圖的 namebox 中 按照一個特定模式:兩個例子:1. SD Balance Lookup(Integer : accountNumber) : Real 2. SD Available Reports(Financial Analyst : analyst) : Rep

29、orts 引用另外一個順序圖引用另外一個順序圖在圖 11 中,序列引用“Balance Lookup序列圖?!癇alance Lookup序列圖在圖 12 中顯示。:圖 12: 一個使用 accountNumber 參數(shù)并返回一個Real對象的序列圖引用另外一個順序圖引用另外一個順序圖例子 2:圖 13: 一個在它的交互中使用參數(shù)、返回一個Reports對象的序列圖門門門是另一種容易在序列圖之間傳遞消息的方法,一個門只是一個消息,圖形表示為一端連接序列圖的框架邊緣,另一端連接到生命線。 門門圖 14: 圖 11 的重構(gòu),這次使用門 門門圖 14: 圖 11 的重構(gòu),這次使用門 門門圖 15:

30、圖 12 的重構(gòu),這次使用門 跳轉(zhuǎn)跳轉(zhuǎn) 跳轉(zhuǎn)組合碎片幾乎在每個方面都和選擇項組合碎片一致,除了兩個例外。首先,跳轉(zhuǎn)的框架namebox的文本“break代替了“option”。其次, 當(dāng)一個跳轉(zhuǎn)組合碎片的消息運行時,封閉的交互作用的其他消息將不會執(zhí)行,因為序列打破了封閉的交互。這樣,跳轉(zhuǎn)組合碎片非常象 C+ 或 Java 的編程語言中的break關(guān)鍵字。 跳轉(zhuǎn)跳轉(zhuǎn) 圖 16: 來自圖 8 的序列圖片段的重構(gòu),片段使用跳轉(zhuǎn)代替變體跳轉(zhuǎn)跳轉(zhuǎn) 跳轉(zhuǎn)最常用來做模型異常處理。圖 16 是圖 8 的重構(gòu),但是這次圖16使用跳轉(zhuǎn)組合碎片,因為它把balance amount的情況作為一個異常對待,而不是一個

31、變體流。要閱讀圖 16,你從序列的左上角開始,向下讀。當(dāng)序列到達返回值“balance的時候,它檢查看看是否余額比金額更少。如果余額不少于金額,被傳遞的下一個消息是 addDebitTransaction 音訊,而且序列正常繼續(xù)。然而,在余額比金額更少的情況下,然后序列進入跳轉(zhuǎn)組合碎片,它的消息被傳遞。一旦跳轉(zhuǎn)組合的消息的已經(jīng)被傳遞,序列不發(fā)送任何其它消息就退出舉例來說,addDebitTransaction)。跳轉(zhuǎn)跳轉(zhuǎn) 注意有關(guān)跳轉(zhuǎn)的一件重要的事是,它們只引起一個封閉交互的序列退出,不必完成圖中描述的序列。在這種情況下,跳轉(zhuǎn)組合是變體或者循環(huán)的一部分,然后只是變體或循環(huán)被退出。并行并行 今天

32、的現(xiàn)代計算機系統(tǒng)在復(fù)雜性和有時執(zhí)行并發(fā)任務(wù)方面不斷進步。當(dāng)完成一個復(fù)雜任務(wù)需要的處理時間比希望的長的時候,一些系統(tǒng)采用并行處理進程的各部分。當(dāng)創(chuàng)造一個序列圖,顯示并行處理活動的時候,需要使用并行組合碎片元件。 并行組合碎片使用一個框架來畫,你把文本“par放在框架的 namebox 中。然后你把框架的內(nèi)容段用虛線分為水平操作元??蚣艿拿總€操作元表示一個在并行運行的線程。并行并行圖 17: oven 是并行做兩個任務(wù)的對象實例并行并行圖 17 可能沒有舉例說明做并行活動的對象的最好的計算機系統(tǒng)實例,不過提供了一個容易理解的并行活動序列的例子。序列如這樣進行:hungryPerson 傳送 coo

33、kFood 消息給oven 對象。當(dāng)oven 對象接收那個消息時,它同時發(fā)送兩個消息nukeFood 和 rotateFood給它本身。這些消息都處理后,hungryPerson 對象從oven 對象返回 yummyFood ??偨Y(jié)總結(jié) 序列圖是一個用來記錄系統(tǒng)需求,和整理系統(tǒng)設(shè)計的好圖。序列圖是如此好用的理由是,因為它按照交互發(fā)生的時間順序,顯示了系統(tǒng)中對象間的交互邏輯。鏈:連接器,是用來表示對象之間的語義連接,一般而鏈:連接器,是用來表示對象之間的語義連接,一般而言,鏈?zhǔn)顷P(guān)聯(lián)的一個實例包括言,鏈?zhǔn)顷P(guān)聯(lián)的一個實例包括等)。不過在等)。不過在UML 2中中已經(jīng)開始弱化它們的使用,因此除非必要,

34、無需過多地已經(jīng)開始弱化它們的使用,因此除非必要,無需過多地考慮它們考慮它們消息編號:消息的編號有兩種,一種是無層次編號,它消息編號:消息的編號有兩種,一種是無層次編號,它簡單直觀;另一種是嵌套的編號,它更易于表示消息的簡單直觀;另一種是嵌套的編號,它更易于表示消息的包含關(guān)系包含關(guān)系迭代標(biāo)記:用迭代標(biāo)記:用*號表示,表示循環(huán),通常還有迭代表達號表示,表示循環(huán),通常還有迭代表達式,用來說明循環(huán)規(guī)則式,用來說明循環(huán)規(guī)則監(jiān)護條件:通常是用來表示分支的,也就是表示監(jiān)護條件:通常是用來表示分支的,也就是表示“如果如果條件為條件為true,才發(fā)送消息,才發(fā)送消息” 在通信圖中使用監(jiān)護條件一定要有所限制,通常

35、應(yīng)只列在通信圖中使用監(jiān)護條件一定要有所限制,通常應(yīng)只列出主要的監(jiān)護條件,否則會影響其閱讀。如果需要,盡出主要的監(jiān)護條件,否則會影響其閱讀。如果需要,盡可能還是通過順序圖來表示可能還是通過順序圖來表示 交互與交互圖交互與交互圖如何閱讀交互圖如何閱讀交互圖如何繪制交互圖如何繪制交互圖交互圖應(yīng)用說明交互圖應(yīng)用說明定時圖定時圖本章小結(jié)本章小結(jié)首先根據(jù)自己的喜好和實際的表現(xiàn)需要來選擇順序圖或首先根據(jù)自己的喜好和實際的表現(xiàn)需要來選擇順序圖或通信圖。不過由于它們在語義上是等價的,因此可以繪通信圖。不過由于它們在語義上是等價的,因此可以繪制出一種,再通過建模工具來自動轉(zhuǎn)換成另一種圖制出一種,再通過建模工具來自

36、動轉(zhuǎn)換成另一種圖 分析模型中的交互圖徹重于分析類的職責(zé)分配和交互流分析模型中的交互圖徹重于分析類的職責(zé)分配和交互流程,而設(shè)計模型中的交互圖則徹重于設(shè)計類的引入和實程,而設(shè)計模型中的交互圖則徹重于設(shè)計類的引入和實際方法的調(diào)用與流程控制際方法的調(diào)用與流程控制 先確定參與交互的對象、對象之間的關(guān)系通信圖),先確定參與交互的對象、對象之間的關(guān)系通信圖),然后確定對象間的消息交互流程用同步調(diào)用、異步消然后確定對象間的消息交互流程用同步調(diào)用、異步消息、返回消息表示),并利用交互片斷順序圖或迭息、返回消息表示),并利用交互片斷順序圖或迭代標(biāo)記及監(jiān)護條件來表示循環(huán)和分支結(jié)構(gòu)代標(biāo)記及監(jiān)護條件來表示循環(huán)和分支結(jié)構(gòu)

37、Robustness分析不是分析不是UML模型的一部分,它是一個強大模型的一部分,它是一個強大的草圖工具,是介于分析和設(shè)計之間的一種有效工具的草圖工具,是介于分析和設(shè)計之間的一種有效工具在在Robustness分析中,將應(yīng)用邊界類、控制類和實體類分析中,將應(yīng)用邊界類、控制類和實體類從一個用例中抽取三類對象的方法:從一個用例中抽取三類對象的方法: 圖書管理員向系統(tǒng)發(fā)出圖書管理員向系統(tǒng)發(fā)出“新增書籍信息懇求新增書籍信息懇求主窗主窗口、口、“新增書籍信息按鈕新增書籍信息按鈕系統(tǒng)要求圖書管理員選擇要新增的書籍是計算機類還是系統(tǒng)要求圖書管理員選擇要新增的書籍是計算機類還是非計算機類非計算機類書籍類別列表

38、框。書籍類別列表框。圖書管理員做出選擇圖書管理員做出選擇后,顯示相應(yīng)界面,后,顯示相應(yīng)界面,讓圖書管理員輸入信讓圖書管理員輸入信息,并自動根據(jù)書號息,并自動根據(jù)書號規(guī)則生成書號規(guī)則生成書號“新書信息錄入窗口新書信息錄入窗口及輔助的及輔助的“提交按鈕提交按鈕根據(jù)事件流中的步驟根據(jù)事件流中的步驟5,以及擴展路徑的描述,就可以,以及擴展路徑的描述,就可以在原圖上增加相應(yīng)的控制對象,得到更進一步的在原圖上增加相應(yīng)的控制對象,得到更進一步的Robustness分析圖分析圖 新添兩個邏輯:一是基本事件流中的步驟新添兩個邏輯:一是基本事件流中的步驟2、3要求根據(jù)要求根據(jù)用戶選擇的類別,自動獲得書號;二是當(dāng)書

39、名重復(fù)性檢用戶選擇的類別,自動獲得書號;二是當(dāng)書名重復(fù)性檢查沒有通過有重名),則應(yīng)返回要求其重輸查沒有通過有重名),則應(yīng)返回要求其重輸 交互與交互圖交互與交互圖如何閱讀交互圖如何閱讀交互圖如何繪制交互圖如何繪制交互圖交互圖應(yīng)用說明交互圖應(yīng)用說明定時圖定時圖本章小結(jié)本章小結(jié)工作方法:針對用例圖中的每個用例,并結(jié)合領(lǐng)域模型工作方法:針對用例圖中的每個用例,并結(jié)合領(lǐng)域模型中的類,尋找分析類,并通過中的類,尋找分析類,并通過Robustness分析來理清業(yè)分析來理清業(yè)務(wù)邏輯流程,再用交互模型將其確定下來務(wù)邏輯流程,再用交互模型將其確定下來 留意:主要關(guān)注于區(qū)分出邊界對象、實體對象和控制對留意:主要關(guān)注于區(qū)分出邊界對象、實體對象和控制對象,暫時不要考慮其具體的實現(xiàn)類象,暫時不要考慮其具體的實現(xiàn)類 闡明:對于較復(fù)雜的用例,可以按上述的流程逐漸地進闡明:對于較復(fù)雜的用例,可以按上述的流程逐漸地進行分析、設(shè)計、實施;但對于比較簡單的用例而言,也行分析、設(shè)計、實施;但對于比較簡單的用例而言,也是可以直接從用例描述中導(dǎo)出設(shè)計階段交互模型是可以直接從用例描述中導(dǎo)出設(shè)計階段交互模型 引入基礎(chǔ)類:包括基礎(chǔ)框架、程序庫等引入基礎(chǔ)類:包括基礎(chǔ)框架、程序庫等質(zhì)量評審:質(zhì)量評審:- 低耦合:

溫馨提示

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

評論

0/150

提交評論