併入關係會將基礎使用案例連接到併入使用案例。併入使用案例一律是抽象的。它用來說明插入執行基礎使用案例之使用案例實例中的行為區段。基礎使用案例會控制併入關係,且能夠相依於執行併入的結果,但基礎使用案例和併入使用案例都無法互相存取對方的屬性。在這個意義之下,併入使用案例是封裝的,它代表不同基礎使用案例能夠重複使用的行為。
您可以利用併入關係來執行下列動作:
-
從基礎使用案例中,分解出只有結果是重要的,在瞭解使用案例主要目的時並非必要的行為。
-
分解出兩個或更多使用案例共有的行為。
範例:
在 ATM
系統中,「提款」、「存款」和「轉帳」等使用案例都必須併入系統識別客戶身分的方式。這個行為可以擷取到稱為「識別客戶身分」的新併入使用案例中,三個基礎使用案例都會併入這個使用案例。這些基礎使用案例都與識別方法無關,因此,識別方法封裝在併入使用案例中。從基礎使用案例的角度來看,識別方法是讀取銀行磁卡或掃描視網膜都無所謂。它們只會隨著「識別客戶身分」的結果而不同,這個結果便是客戶身分。反過來,也是如此,從「識別客戶身分」使用案例的角度來看,基礎使用案例如何使用客戶身分或基礎使用案例在執行併入之前發生過什麼,也都無所謂
- 識別方法仍是完全相同。
在 ATM 系統中,「提款」、「存款」和「轉帳」等使用案例都會併入「識別客戶身分」使用案例。
單一基礎使用案例可以有多個併入使用案例。單一併入使用案例也可以併入多個基礎使用案例中。這並不表示基礎使用案例之間的任何關係。只要併入使用案例是插在基礎使用案例的不同位置上,在相同的併入使用案例和基礎使用案例之間,甚至也可以有多重併入關係。併入關係會定義這個位置。所有附加項目都可以是巢狀關係,這表示併入使用案例本身也可以是另一個併入使用案例的基礎使用案例。
由於併入使用案例是抽象的,因此,它不需要有相關聯的參與者。只有在併入使用案例中的行為明確包含與參與者的互動時,才會需要與參與者的通訊關聯。
併入行為是插入基礎使用案例的某個插入。當遵循基礎使用案例說明的使用案例實例到了基礎使用案例中定義了併入關係的位置時,它會改成導循併入使用案例的說明。執行併入之後,使用案例實例會從它在基礎使用案例中停止的地位重新開始。
使用案例實例遵循它將併入其中之基礎使用案例的說明。
併入關係並不是條件式的關係:如果使用案例實例到了它在基礎使用案例中的定義位置,它一律會執行。如果您要表達一項條件,您必須將它放在基礎使用案例中。如果使用案例實例絕不會到達定義了併入關係的位置,它就不會執行。
使用案例實例 #1 到達基礎使用案例中定義了併入關係的位置,執行併入。使用案例實例 #2 未到達這個位置,因此,它沒有執行這項併入。
併入使用案例是一個連續的行為區段,它完整併入基礎使用案例的單一位置。如果您有個別的行為區段需要插入不同位置,您應該另外考慮延伸關係(請參閱工作成果準則:延伸關係)或使用案例一般化(請參閱工作成果準則:使用案例一般化)。
對於併入關係,您應該將位置定義在併入要插到其中之基礎使用案例的行為序列中。您可以藉由參照基礎使用案例事件流程內的特定步驟或子流程來定義這個位置。
範例:
在 ATM 系統中,「提款」使用案例併入「識別客戶身分」使用案例。「提款」與「識別客戶身分」的併入關係說明如下:
「識別客戶身分」插入 1.1 區段「使用案例開始」和 1.2 區段「在提款事件流程中要求金額」之間。
為了清晰,您也應該在說明基礎使用案例事件流程的文字中提及併入。
如果使用案例中有行為區段,可供您看出使用案例不相依於事物完成方式,而是相依於功能的結果,您可以將這個行為擷取到併入使用案例中來簡化使用案例。併入使用案例可以併入多個基礎使用案例中,這表示它可讓您在模型的各個使用案例之間重複使用行為。請設想簡單電話系統使用案例的下列逐步概述:
發出呼叫
-
呼叫端拿起話筒。
-
系統發出撥號音。
-
呼叫端撥號。
-
系統關閉撥號音。
-
呼叫端輸入號碼的其餘部分。
-
系統分析號碼,判斷接收端的網址。
-
系統判斷是否能夠建立呼叫端和接收端之間的虛擬電路。
-
系統配置虛擬電路的所有資源並建立連線。
-
系統啟動接收端的電話鈴聲。
-
依此類推。
啟動系統
-
操作員啟動系統。
-
系統執行所有元件的診斷測試。
-
系統測試所有相鄰系統的連線。對於每個相鄰系統,系統會判斷是否能夠建立它本身和相鄰系統之間的虛擬電路。系統會配置虛擬電路的所有資源並建立連線。
-
系統回應已完成作業準備。
-
依此類推。
藍色列出的文字非常類似;在這兩個情況中,我們會執行相同的行為,不過,原因很不同。這個類似性很好用,我們可以將共用行為擷取到新的使用案例「管理虛擬電路」中。
擷取一般行為之後,使用案例會成為:
發出呼叫
-
呼叫端拿起話筒。
-
系統發出撥號音。
-
呼叫端撥號。
-
系統關閉撥號音。
-
呼叫端輸入號碼的其餘部分。
-
系統分析號碼,判斷接收端的網址。
-
併入「管理虛擬電路」使用案例來建立網路內的連線。
-
系統啟動接收端的電話鈴聲。
-
依此類推。
啟動系統
-
操作員啟動系統。
-
系統執行所有元件的診斷測試。
-
系統測試所有相鄰系統的連線。對於每個相鄰系統(迴圈),請併入「管理虛擬電路」使用案例來建立網路連線。
-
系統回應已完成作業準備。
-
依此類推。
在使用案例圖中,所建立的併入關係說明如下:
「發出呼叫」和「啟動系統」這兩個使用案例都包括抽象使用案例「管理虛擬電路」的行為。
|