第11章 物件互動行為塑模
本章大綱 學習目標 11.1 導論 11.2 循序圖 11.3 合作圖 11.4 結論
學習目標 詳讀本章,你至少能瞭解: 物件導向系統分析與設計中之物件互動行為塑模工作。 何謂循序圖、溝通圖及其用途。 如何建構循序圖與溝通圖及其建構之準則。 如何以循序圖與溝通圖進行物件互動行為塑模。
11.1 導論(1/3) 完成需求(使用個案)塑模後,接下來便可進行物件互動行為塑模、物件結構塑模等活動以開始架構系統(參考圖9-7)。
11.1 導論(2/3) 物件互動行為塑模主要以互動圖來表達物件間之互動行為,並可以狀態圖來表達介面物件內元件的狀態、轉換與控制等。 物件結構塑模主要以類別圖或物件圖來表達物件間之靜態結構。 本章將介紹物件互動行為塑模之工作內容,接著分別介紹循序圖、溝通圖與狀態圖之元件及其建構步驟與塑模準則。
11.1 導論(3/3) 物件間之互動行為可從使用個案、活動圖及與使用者溝通後分析得知。因此,完成使用個案塑模後,可直接建構互動圖。 物件互動行為塑模主要針對使用者介面(User Interface, UI)與應用程式核心(Application Core, AC)(簡稱應用程式)兩部分之物件間與物件內元件的行為進行塑模。 以互動圖來表達物件間之互動行為,互動圖包含循序圖、溝通圖、時序圖、互動概觀圖。 以狀態圖來表達物件內元件的狀態、轉換與控制等。
11.2 循序圖 循序圖是用來描述一個使用個案中參與物件及物件間的互動行為,強調以時間發生之先後順序表達物件間的訊息傳遞與處理程序。
11.2.1 循序圖之元件(1/7) 循序圖之重要元件包括生命線、訊息、操作與操作描述、控制焦點與框架,分別介紹如下。 生命線 循序圖之生命線(Lifeline)是將參與互動之物件以矩形表示,在下方加上與物件垂直之虛線組合而成。 矩形中應標示該物件名稱與其類別名稱(Object: Class),而物件之名稱可省略。 在生命線底下的虛線,表示在情節塑造期間物件的生命時間長短,例如從物件接收到訊息至其回傳訊息為止。
表11-1 循序圖之元件
循序圖範例 & 操作描述 操作描述 … 顯示細部說明() 執行時機:客戶瀏覽便當型錄時點選【顯示細部說明】超連結。 執行事項: 系統依客戶點選的便當編號至資料庫中搜尋該便當資料。 將此便當的所有欄位資料﹝便當編號、便當名稱、單價、餐廳﹞顯示在新網頁,同時出現【瀏覽便當型錄】按鈕。
11.2.1 循序圖之元件(2/7) 物件 一個物件是問題領域(Problem Domain)中某個東西的抽象概念,物件有名稱、屬性與操作, 名稱是其唯一的識別(Identity)或辨識值(Identifier Value)。 屬性表達物件之狀態、性質或特徵。 操作則表達物件之行為。
11.2.1 循序圖之元件(3/7) 從實作觀點,循序圖中物件可分為三種: 介面物件(Interface Object)也稱邊界物件,包含表單、報表、硬體介面以及其他與系統溝通的介面,也是行為者和系統交談的媒介。 控制物件(Control Object)包含許多應用系統邏輯(如企業規則),是實體物件及介面物件間的溝通者,也負責協調與管理其他物件。 實體物件(Entity Object)常以企業的領域術語命名,用來表示使用個案完成後仍需要儲存在資料庫中的資料,但某些實體物件也可以是暫存的資料,例如搜尋結果。
11.2.1 循序圖之元件(4/) 訊息 循序圖之訊息(Message)主要可分「呼叫訊息」與「回傳訊息(Return Message)」兩種。 呼叫訊息或刺激(Stimuli)是由某一物件傳送至另一物件以啟動操作,因此呼叫訊息常與操作相結合。若使用個案之情節是以事件條列式描述,也就是採用「主詞+動詞+受詞」的方式表示,且其中的動詞為操作,則該操作的輸入或輸出就可能是訊息。
11.2.1 循序圖之元件(5/7) 操作與操作描述 物件之操作(Operation)是指某一物件接到另一物件送達的訊息時,接收端物件為了執行發送端物件送來之要求,所提供因應之處理方法。 操作描述是操作的細部說明,主要是從系統的行為觀點,描述系統動作與邏輯程序及所需之輸入與輸出,操作描述也是表達該操作「如何」執行,以達成該操作之目的。 原則上,循序圖之操作描述需與類別圖之操作相對應,也就是說,在類別圖上的操作,均需與循序圖上的操作吻合,反之亦然。
11.2.1 循序圖之元件(6/7) 控制焦點 循序圖之控制焦點(Focus of Control)表達物件執行某動作之時段,可由其執行或透過附屬程式,代表系統在執行的過程中,某物件在某個時間點上因收到訊息而被啟動,並獲得了控制權。控制焦點用長且細的矩形(長條圖)表示,且與該物件之生命線重疊。
11.2.1 循序圖之元件(7/7) 框 架 框架(Frame)為一種圖示標記,把原來單一線式訊息擴充成由一連串線式訊息組成的區段來表達,用以表達循序圖中某一區段範圍內一連串相關訊息與操作組合之控制流程、輸入與輸出等,簡稱組合區段(Combined Fragment)。 名稱 框架內容(組合區段)
常用的六種框架(1/7) 多選一(Alternative)框架用以表達彼此互斥的訊息序列選擇,其組合區段用「alt」命名。 典型的範例是「If 前提為真,執行運算域A;Else 執行運算域B」。 其中每個運算域可包含多個線式訊息傳遞。
常用的六種框架(2/7) 自由選擇(Option)框架是用以表達可能發生的訊息序列,其組合區段用「opt」命名。 其概念如多選一的「If 前提為真,執行運算域A」,但沒有「Else 執行運算域B」的部分。 也就是說,它只有一個運算域,該運算域可包含多個線式訊息傳遞,如果前提成立,則在運算域中的所有訊息會被執行。
常用的六種框架(3/7) 迴圈(Loop)框架有成立條件與一個運算域,該運算域可包含多個線式訊息傳遞,其組合區段用「loop」命名。 當條件成立(為「True」)時,運算域中的訊息會持續地被執行,直到條件不成立(為「False」)為止。
常用的六種框架(4/7) 終止(Break)框架有成立條件與一個運算域,該運算域也可包含多個線式訊息傳遞,其組合區段用「break」命名。 若條件不成立(為「False」)時,運算域中的訊息不會被執行;而當條件成立(為「True」)時,運算域中的訊息才會被執行,但當運算域中的訊息被執行完畢,該區段以下之所有訊息傳遞與操作將被終止。
常用的六種框架(5/7) 平行(Parallel)框架用以表達可同時執行的多個訊息傳遞,其組合區段用「par」命名。 區段中可用虛線隔開多個運算域,以增加其易讀性。 每個運算域包含多個訊息傳遞,所有運算域的訊息傳遞可同時執行,且所有訊息傳遞執行完畢後,該區段的工作才算完成。
常用的六種框架(6/7) 參考(Referencing)框架用以表達某個循序圖可藉由一個訊息傳遞以參考其他循序圖,其組合區段用「ref」命名,並把被參考的循序圖名稱與參數標示在內容區內。 參考框架可提升循序圖之重複使用性,也可讓循序圖具有組合能力。
常用的六種框架(7/7) 被參考之循序圖
吳仁和、林信惠(2010) 11.2.2 循序圖之建構步驟與準則 循序圖之建構可先從類別圖或使用個案之情節描述中,確認物件、物件間傳遞之訊息及操作開始,再進一步繪製循序圖。 確認物件 依6.3.1.2節之物件找尋準則找出三種物件後,將各物件繪製成循序圖中的生命線,並將這些生命線以出現之順序排列 兩個生命線間,表達訊息之水平線距離愈短愈好
11.2.2 循序圖之建構步驟與準則 (c.2) 操作描述 擺在循序圖的最左側,描述內容主要來自使用個案之情節描述。 吳仁和、林信惠(2010) 11.2.2 循序圖之建構步驟與準則 (c.2) 操作描述 擺在循序圖的最左側,描述內容主要來自使用個案之情節描述。 可考慮僅作功能性的描述,而完整及詳細的程式邏輯描述,則另外以結構化英文、程式設計語言或物件限制語言描述。
吳仁和、林信惠(2010) 11.2.2 循序圖之建構步驟與準則 (c.3) 描述訊息 描述物件間訊息傳遞的動作,當一個物件送出一訊息給另一個物件時,是由發送端生命線上畫出一條往接收端生命線之水平線段箭頭,水平線段箭頭上須標示訊息名稱及可能之參數。描述訊息之相關原則如下: 盡可能將每一訊息之參數數目減到最少,才有利於再用。 相同或類似的訊息處理,其命名應相同,如此可瞭解物件間相似的 訊息傳遞。 命名時,應能從名稱上反映出物件間訊息傳遞的作用、訊息的內容 或其意義。
11.2.2 循序圖之建構步驟與準則 (c.4) 繪製循序圖 將生命線依物件間訊息傳遞或接收發生之時間順序,由左至右安排。 吳仁和、林信惠(2010) 11.2.2 循序圖之建構步驟與準則 (c.4) 繪製循序圖 將生命線依物件間訊息傳遞或接收發生之時間順序,由左至右安排。 在生命線上標示物件間傳遞或接收之相關訊息與操作。 接著依每一生命線執行某動作之時段畫出控制焦點。 繪製UI 循序圖與AC 循序圖時,尚需檢視兩者間訊息傳遞與操作之一致性與完整性,若有不一致或不完整的情況,須找出問題並作必要的修改。
吳仁和、林信惠(2010) 11.2.3 建構循序圖 本節以西子灣線上訂購系統之「新增訂購項目」使用個案為例,介紹如何利用UI 循序圖以及AC 循序圖進行物件互動行為塑模。
使用者介面循序圖(1/3) 確認物件 分析「新增訂購項目」使用個案中的一系列事件及活動圖註記,可從其中的相關名詞找出介面物件。 例如「書籍型錄」為行為者和系統交談的媒介,可轉為「書籍型錄UI」介面物件。 控制物件亦可由一系列事件及活動圖之活動找出。 例如可由「顯示細部說明」活動找出「顯示」控制物件。 於UI 循序圖中,控制物件與實體物件可濃縮成一個系統「應用程式核心(Application Core, AC)」物件,此AC 物件與介面物件間會有訊息傳遞與操作執行。
使用者介面循序圖(2/3) 確認物件間之訊息與操作 物件間之訊息和操作可由新增訂購項目使用個案之一系列事件描述(或事件條列式)或活動圖之活動及註記分析得到,這些資訊可表示如下表。
使用者介面循序圖(3/3) 繪製UI 循序圖 依11.2.2節之繪製循序圖步驟繪製循序圖後,新增訂購項目使用個案之UI 循序圖可表達如圖11-5所示。
應用程式循序圖(1/3) 確認物件 分析「新增訂購項目」使用個案中的一系列事件、表單及活動圖註記,可從其中的相關名詞發掘實體物件。 例如由圖10-7中註記1.1與1.2之系統輸出資訊,可得知需有一「書籍資料」實體物件於資料庫中記錄書籍之詳細資訊。 於AC 循序圖中,可將建構UI 循序圖時找出之介面物件濃縮成一個「使用者介面(User Interface, UI)」物件,此UI 物件與控制和實體物件間會有訊息傳遞與操作執行。
應用程式循序圖(2/3) 確認物件間之訊息與操作 物件間之訊息和操作可由新增訂購項目使用個案之一系列事件描述、活動圖和UI 循序圖分析得到,分析資訊可表示如表11-4。
應用程式循序圖(3/3) 繪製AC 循序圖 依前述繪製循序圖之原則,新增訂購項目使用個案之AC 循序圖可表達如圖11-6示。 吳仁和、林信惠(2010) 應用程式循序圖(3/3) 繪製AC 循序圖 依前述繪製循序圖之原則,新增訂購項目使用個案之AC 循序圖可表達如圖11-6示。 瀏覽書籍型錄() 執行時機:客戶以瀏覽器瀏覽西子 灣線上訂購系統,即顯 示書籍型錄UI。 執行事項:系統至資料庫中搜尋書 籍資料。 … 操作描述(部分)
11.3 溝通圖 溝通圖強調以物件的結構化組織表達物件間的訊息傳遞與處理程序。
11.3.1 溝通圖之元件(1/3)
11.3.1 溝通圖之元件(2/3) 生命線 溝通圖之生命線與循序圖之生命線相同,均是指參與互動之物件,以矩形表示,並在名稱下方畫一底線。 矩形中應標示該物件名稱與其類別名稱(Object: Class),而物件之名稱可省略。 與循序圖之生命線不同的地方在於,溝通圖之生命線並沒有下方的垂直虛線。 溝通圖之生命線 循序圖之生命線
11.3.1 溝通圖之元件(3/3) 訊息 溝通圖之訊息包含兩生命線間之訊息傳遞接收內容與操作,並將這些訊息伴隨著一個箭頭與路徑來表示。 訊息前加一個序數可表示訊息之發生順序,這些序數都是唯一的,且以自然數(如1, 2, 3,…等)來表示,1表最先發生者,其餘以此類推。 此外,也可以用杜威數(如1.1, 1.2, 2.1, 2.2, …)來表示巢狀發生順序,其中1.1表巢狀1中最先發生者,而1.2表巢狀1中第二個發生者,其餘以此類推。
11.3.2 溝通圖之建構步驟與準則 溝通圖中之生命線和循序圖相同,因此溝通圖之生命線可延用自循序圖之生命線。 在循序圖中,若兩生命線間有訊息傳送或接收,則這兩生命線在溝通圖中必有連結。 溝通圖中之訊息與操作和循序圖相同,只不過循序圖是依時間發生的先後順序由上而下、由左至右來表達;而溝通圖則是以數字來表達發生順序,且溝通圖之訊息與操作表達在相關生命線間之連結旁。
11.3.3 建構溝通圖 建構溝通圖與循序圖的資訊均來自於需求塑模結果,兩者皆用於表達一使用個案內物件間之互動行為。 溝通圖與循序圖在語意上是相同的,且兩種圖可以互相轉換,轉換的過程中不會有資訊遺失。 因此,為避免系統分析與設計工作上的重複,可在塑模過程中僅建構一圖(如循序圖)來表達物件間之互動行為資訊。
使用者介面溝通圖(1/2) 「新增訂購項目」使用個案之UI 溝通圖分析過程如下: 溝通圖之生命線和循序圖相同,因此,參考「新增訂購項目」使用個案之UI 循序圖後可知,此使用個案之UI 溝通圖也會有一客戶行為者及書籍型錄UI、細部說明UI、購物車UI 和AC 五個物件。 於循序圖中有訊息傳送或接收的兩生命線,在溝通圖中會有連結。在「新增訂購項目」使用個案的UI 循序圖中,客戶與「書籍型錄UI」、「細部說明UI」和「購物車UI」有訊息的傳遞;而「書籍型錄UI」、「細部說明UI」和「購物車UI」皆與AC 間有訊息的傳遞,因此這些生命線在UI 溝通圖中會有連結。
使用者介面溝通圖(2/2) 溝通圖中之訊息與操作和循序圖相同,在「新增訂購項目」使用個案的UI 循序圖中,按時間發生之先後順序,分別有瀏覽書籍型錄、查看細部說明等15項訊息與操作,因此可在UI 溝通圖中的訊息與操作名稱前依序標示自然數1~15,並表示於相關的連結旁。「新增訂購項目」使用個案之UI 溝通圖如圖11-8所示。
圖11-8 新增訂購項目之UI溝通圖
應用程式溝通圖(1/2) 「新增訂購項目」使用個案之AC 溝通圖分析過程如下: 溝通圖之生命線和循序圖相同,因此,參考「新增訂購項目」使用個案之AC 循序圖後可知,此使用個案之AC 溝通圖也會有一客戶行為者、UI 物件和顯示、訂購兩控制物件以及書籍資料、購物車資料二個實體物件。 於循序圖中有訊息傳送或接收的兩生命線,在溝通圖中會有連結。在「新增訂購項目」使用個案的AC 循序圖中,UI 物件與兩控制物件間皆有訊息的傳遞;「顯示」與「訂購」控制物件、「書籍資料」實體物件間有訊息的傳遞;「訂購」則與「顯示」控制物件、「購物車資料」實體物件有訊息的傳遞,因此這些生命線在AC 溝通圖中會有連結。
應用程式溝通圖(2/2) 溝通圖中之訊息與操作和循序圖相同,在「新增訂購項目」使用個案的AC 循序圖中,按時間發生之先後順序,分別有瀏覽書籍型錄等34項訊息與操作,因此可在AC 溝通圖中的訊息與操作名稱前依序標示自然數1~34,並表示於相關的連結旁。「新增訂購項目」使用個案之AC 溝通圖如圖11-9所示。
圖11-9 新增訂購項目之AC 溝通圖
11.4 結論(1/2) 物件互動行為塑模是物件導向系統分析與設計過程中很重要的一環,主要應用循序圖、溝通圖等來表達一個使用個案內物件間之互動行為,有利於物件進一步之封裝。 基本上,進行物件互動行為塑模時,每一個使用個案須建立一個互動圖,建構互動圖所需之資訊主要來自於使用個案之情節描述、表單、活動圖或類別圖,以及與使用者之互動。
11.4 結論(2/2) 一個使用個案應有一個與之對應的互動圖來表達該個案內,許多物件間之動態互動行為;也應有一個與之對應的類別圖來表達該個案內,許多物件間之靜態結構關係。