1、 交互圖引言併發
1. 創建動態模型異步
² 對靜態結構建模spa
Ø 對服務進行了外部觀察線程
Ø 不關心對象是怎樣提供(進行)這些服務的設計
² 對行爲建模orm
Ø 捕獲對象是怎樣提供服務的對象
Ø 當對象提供一個特定服務的時候,它負責展示的一系列的活動進程
Ø 識別必須由其餘對象提供的附加服務事件
² 如何定義行爲——定義爲操做(方法)開發
Ø 全部的輸入
Ø 全部的輸出
Ø 對象是怎樣提供服務的(從問題域的視角)
² 行爲的分類
Ø 靜態行爲:不被任何外部或內部的事件所影響
Ø 動態行爲:受外部或內部的事件多影響
² 在捕獲行爲時,須要提出以下問題:
Ø 爲何進行它們?
Ø 它們是怎樣進行的?
Ø 它們之間的相互關係是什麼?
² 對服務的描述
Ø 天然語言
Ø 必定結構話的天然語言
Ø 程序框圖
Ø 活動圖
² 能夠利用交互圖以及狀態圖,可以幫助分析服務及服務之間的關係
2. 交互圖
² 什麼是交互?
Ø 交互是實例之間的通信的集合,包括影響實例的任何方式,包括引起操做、產生或破壞實例等。
Ø 交互最明顯的方面是消息傳遞,消息序列對理解交互是重要的。
² 交互圖的用途
Ø 幫助開發者捕獲交互的狀況
Ø 幫助開發團隊創建對交互的共同理解
Ø 用於對交互過程的詳細設計
² 交互圖的種類
Ø UML 1.X
順序圖
協做圖
Ø UML 2.0
順序圖
通信圖
交互概要圖
時序圖
2、 簡單順序圖、同步消息和異步消息
1. 順序圖的概念與表示法
² 什麼是順序圖
Ø 順序圖(sequence diagram)是一種詳細表示對象之間以及對象與系統外部的參與者之間的動態聯繫的圖形文檔。
Ø 表現了一組相互協做的對象在執行一個(或少許幾個)用況時的行爲依賴關係,以及服務和消息的時序關係。
Ø 順序圖既詳細又直觀,但一般只能表示少數幾個對象之間的交互。
² 用途
Ø 幫助分析員對照檢查每一個用況中描述的用戶需求,是否已經落實到一些對象中去實現。提醒分析員去補充遺漏的對象類或服務。
Ø 幫助分析員發現哪些對象是主動對象
Ø 經過一個特定的對象羣體的動態方面建模,深入地理解對象之間的交互。
概述
順序圖是一種表達對象間交互的圖,由一組對象(參與者)及其間可發送的消息組成,強調消息之間的時間順序。
由對象、消息、生命線和激活組成。
消息
² 定義
Ø 消息是兩個對象間的通信,這樣的通信用於傳輸將產生的動做所須要的信息。
² 消息的效果
Ø 一個消息會調用另外一個對象的操做,調用本對象的操做,向另外一個對象發送一個信號,建立或者撤銷一個對象(能夠本身撤銷本身),還可能向調用者返回一個結果。
² 消息的表示
Ø 把消息表示爲從一個對象生命線到另外一個對象生命線的一個水平實現箭頭,即從源對象指向目標對象,以觸發目標對象中的特定操做。對於對象到自身的消息,箭頭就從同一個對象符號開始和結束。
Ø 用消息(操做或信號)的名字及其參數值或者參數表達式標示箭頭。
² 消息的傳遞時間
Ø 在不少狀況下,傳遞時間是能夠忽略的。
Ø 能夠在圖中使用一些標記,用於指示時間間隔,且約束能夠附在其上。例如,能夠用消息名錶示在計時錶達式中的發送或接受消息的時間(如「b.receive-b.sendTime<1 sec.」)。
² 消息的分類:
同步消息:僅當發送者發送一個消息並且接受者已作好接受這個消息的準備時才能傳送的消息
異步消息:發送者無論接受者是否作好準備均可以發送的消息
返回消息:同步消息的返回消息。在控制的過程流中,能夠省略返回箭頭(暗示激活結束),假設每一個調用在任何消息後都有一個配對的返回,並能夠把返回值標示在初始的箭頭上。對於非過程控制流(包括併發處理和異步消息),都應當顯式地標出返回。
現實世界中的不一樣消息例子
打電話
A向B家打電話,B正好出去了(同步消息)
A向B家打電話,B正好出去了,但B家的電話記錄了這次來電記錄(異步消息)
A向B家打電話,B接後,A告訴B請他吃飯(同步消息)
A向B單位總機打電話……(同步消息)
打獵
小白兔正在吃胡蘿蔔,忽然被獵人獵槍擊中,小白兔應聲倒下(異步消息)
小白兔正在吃胡蘿蔔,忽然被獵人麻醉槍擊中,小白兔吃完胡蘿蔔後倒下(異步消息)
獵人將小白兔綁在柱子上進行射擊練習,瞄準後擊中(同步消息)
同步消息與異步消息的爭議
UML規範:未明肯定義
Martin Fowler : UML Distilled
異步消息不凍結調用者
UML的順序圖將產生歧義
UML 參考手冊
若是操做調用是同步的調用者將等待,直至調用的操做迴應
發送郵件後是一直在等待回信仍是作其餘的事情與消息(發郵件)的類型無關
UML用戶指南
同步消息用方法調用實現
異步消息用信號實現
屬於軟件世界(OOD)的定義,現實世界(OOA)如何定義?
另外,發送信號也能獲得與方法調用相同的效果,如RCP
面向對象的系統分析
不一樣的消息類型取決於發送消息時接受者的行爲,而不是取決於發送消息後發送者的行爲
3、 順序系統和併發系統與同步消息和異步消息的關係
1. 順序系統中的消息
² 順序系統中的一切操做都是順序執行的
² 其OOA某些中只有一個主動對象,而且這個主動對象中只有一個主動服務。
² 實現以後的系統在運行時,將只對應一個進程或線程。
消息是向對象發出的服務請求
消息都是同步的
接受者執行消息所請求的服務
發送者等待消息處理完畢再繼續執行
每一個消息只有惟一的接受者
2. 併發系統中的消息
² 併發系統是具備多個任務併發執行的系統
² 其OOA某些中有對個主動對象,如有一個主動對象則有多個主動服務
² 實現以後的系統在運行時,將對應對多個進程或線程
控制線程內部順序系統比控制線程之間狀況複雜得多
消息有多種用途
消息有同步與異步之分
接受者對消息有不一樣響應方式
發送者對消息處理結果有不一樣期待方式
消息的接受者可能不惟一
併發系統中幾種典型的消息傳遞狀況
同步傳送,等待返回
同步傳送,不等待返回
異步傳送,等待返回
異步傳送,不等待返回
同步動做與異步動做
同步動做是一個請求,發送請求的對象停下來等待響應
異步動做不要求發送對象暫停以等待結果
不一樣的消息舉例
對象的建立與銷燬
舉例:打電話
創建順序圖
設置交互的場景
僅包含相關實例
從左到右從上到下創建順序圖
將主動對象放在左/上,被動對象放在右/下
一個單獨的順序圖最好只顯示一個控制流
建議儘可能少用迭代和分支
4、 其餘交互圖
通信圖
通信圖集中於描述之內部結構與相應的消息傳遞爲中心的交互。
交互概要圖
以活動圖的變形定義交互,突出控制流的概況。
時序圖
首要目的是考慮時序時,使用時序圖,時序圖描述單個類的行爲或多個類的交互,集中與引發對象狀態或條件發生變化的事件的發生時間。