延伸關係會將延伸使用案例連接到基礎使用案例。您藉由參照基礎使用案例中的延伸點來定義基礎使用案例中要插入延伸使用案例的位置(請參閱工作成果準則:使用案例,以取得延伸點的相關討論)。延伸使用案例通常是抽象的,但它不必是抽象的。
您可以利用延伸來實現許多目的:
-
顯示使用案例的一部分是選用的系統行為,或可能是選用的系統行為。您利用這個方式,將模型中的選用行為和強制行為分開。
-
顯示子流程只在特定(有時是例外)狀況下執行,如觸發警報。
-
顯示可能有一組行為區段,其中一或多個區段可插在基礎使用案例的某延伸點上。插入的行為區段(及其插入順序)相依於在基礎使用案例執行期間和參與者的互動。
延伸使用案例具有條件性,這表示它的延伸相依於執行基礎使用案例時所發生的情況。基礎使用案例並不控制延伸使用案例的執行條件 -
延伸關係會說明這些條件。延伸使用案例可以存取和修改基礎使用案例的屬性。不過,基礎使用案例見不到延伸使用案例,無法存取它們的屬性。
延伸使用案例會隱含地修改基礎使用案例。您也可以說基礎使用案例定義了可以新增延伸使用案例的模組化架構,但基礎使用案例完全見不到特定延伸使用案例。
基礎使用案例本身應該是完整的,這表示它應該不需要參照延伸使用案例,就有意義而可理解。不過,基礎使用案例並非與延伸使用案例無關,因為若不可能遵循延伸使用案例,它便無法執行。
範例:
「撥打電話會議」和「顯示發話端身分」兩者都是「發出呼叫」這個基礎使用案例的延伸使用案例。
在電話系統中,提供給使用者的主要服務由「發出呼叫」使用案例來表示。以下是選用服務的範例:
-
能夠將第三方加到呼叫(撥打電話會議)中。
-
可讓接收端看到來電識別碼(顯示發話端身分)。
我們可以用基礎使用案例「發出呼叫」的延伸使用案例來表示這些選用服務所需要的行為。這是延伸關係的正確用法:由於「發出呼叫」本身就有意義,因此,您不需要閱讀延伸使用案例的說明來瞭解基礎使用案例的主要目的,延伸使用案例有選用的特性。
如果基礎使用案例和「基礎加延伸」使用案例必須能夠明確建立實例,或您要附加的使用案例修改基礎使用案例中的行為,您應該改用使用案例一般化(請參閱工作成果準則:使用案例一般化)。
延伸使用案例可以由一或多個插入區段組成,每個區段都可能內建了替代路徑。這些插入項目會漸進地修改基礎使用案例的行為。延伸使用案例中的每個插入區段都可以插入基礎使用案例中的個別位置。這表示延伸關係有一份延伸點參照清單,數目與延伸使用案例中的插入區段數目相同。每個延伸點都必須定義在基礎使用案例中。
單一基礎使用案例由多個延伸關係組成,這表示使用案例實例在它的生命期限中,可以遵循多個延伸使用案例。單一延伸使用案例可以延伸到多個基礎使用案例中,但這不暗示基礎使用案例之間有任何相依性。如果延伸使用案例插在基礎使用案例的不同位置上,在相同延伸使用案例和基礎使用案例之間,甚至會有多重延伸關係。這表示不同的延伸關係必須參照基礎使用案例中的不同延伸點。延伸使用案例本身也可能是延伸、併入或一般化關係中的基礎使用案例。例如,這表示延伸使用案例可以利用巢狀方式來延伸其他延伸使用案例。
當執行基礎使用案例的使用案例實例到了基礎使用案例中定義了延伸點的位置,就會評估對應延伸關係的條件。如果符合條件或條件不存在,使用案例實例便會遵循延伸使用案例(或其中對應於延伸點的插入區段)。如果不符合延伸關係的條件,就不會執行延伸使用案例。
如同任何使用案例一樣,延伸使用案例也可以有基本事件流程和替代事件流程(請參閱工作成果準則:使用案例,以取得事件流程結構的相關討論)。使用案例實例在延伸使用案例所採用的確實路徑,取決於延伸之前發生了什麼(使用案例實例的狀態),以及執行延伸使用案例時,與參與者的互動發生了什麼。使用案例實例執行了延伸使用案例之後,會在先前停止的點上,回復執行基礎使用案例。
遵循基礎使用案例及其延伸使用案例的使用案例實例。
延伸使用案例可以有多個插入區段,每個插入區段在基礎使用案例中都會有它自己的延伸點。若是如此,使用案例實例會回復基礎使用案例,再繼續延伸關係所指定的下一個延伸點。在這個點上,會執行延伸使用案例的下一個區段。這會重複進行,直到執行最後一個插入區段為止。請注意,只有在第一個延伸點,才會檢查延伸關係的條件
- 如果條件是符合,使用案例實例就必須執行所有插入區段。
遵循基礎使用案例和延伸使用案例的使用案例實例,延伸使用案例有兩個插入區段。
延伸關係的對應關係會限制整個延伸使用案例可能發生的重複次數。請注意,是整個延伸使用案例重複(受到對應關係的限制),而不只是一個插入區段重複。
請透過基礎使用案例的屬性來說明延伸使用案例的條件。您也可以選擇省略條件,在這個情況下,一律會執行延伸使用案例。
每個延伸關係都有一份參照清單,這些參照指向基礎使用案例中的一或多個延伸點。延伸點由名稱來參照。如果延伸使用案例有多個插入區段,您必須指定哪個區段對應於哪個延伸點。您也必須指定延伸使用案例的哪些步驟或子流程構成了每個插入區段。
範例:
在電話系統中,抽象使用案例「顯示發話端身分」可以延伸「發出呼叫」使用案例。這是一項選用服務,通常稱為「來電識別碼」,接收方可能已要求它,也可能未要求它。從「顯示發話端身分」到「發出呼叫」的延伸關係說明,看起來應該如下:
條件:接收端必須訂購了「來電識別碼」服務。
延伸點:顯示識別碼 - 插入整個「顯示發話端身分」使用案例。
您可以提供延伸關係的對應關係,如果省略,對應關係便假設為一。
請設想下列簡單的電話系統:
抽象使用案例「撥打電話會議」是「發出呼叫」使用案例的一項延伸。
在這個模型中,「發出呼叫」使用案例說明了我們熟悉的電話系統的簡單表示法,這是一項基本電話服務。以下是基本事件流程的逐步概要:
-
呼叫端拿起話筒。
-
系統發出撥號音。
-
呼叫端撥號。
-
系統關閉撥號音。
-
呼叫端輸入號碼的其餘部分。
-
系統分析號碼,判斷接收端的網址。
-
系統會分析號碼,判斷接收端在網路中的位置。
-
之後,系統判斷是否能夠建立通往接收端的虛擬電路。
-
如果可以建立虛擬電路,系統會使接收端電話鈴響,且會在呼叫端的電話發出鈴音。
-
當接收端回話時,系統會停止呼叫端電話的鈴音,停止接收端電話的鈴響,這條虛擬電路便告完成。
-
系統啟動一項帳務記錄,記下呼叫的起始時間,呼叫的結束點,以及呼叫端的客戶資訊。
-
這個呼叫會繼續一段時間。當呼叫端或接收端切斷這個呼叫時,系統會記錄呼叫的結束時間,且會釋出支援虛擬電路所需要的所有資源。之後,使用案例便告結束。
如果要在這個系統中加入新功能,讓呼叫端或接收端連接到要呼叫的第三方(通常稱為「電話會議」),我們必須將行為加到事件流程中。我們應該先想到的替代方案,是將差異直接放在「發出呼叫」中。我們可以依照工作成果準則:使用案例所說明,利用替代事件流程來建立這些差異的模型。這個解決方案適用於大部分簡單的附加,附加的功能並不會混淆或遮蔽使用案例的原始意義。另一個替代方案是將這些差異分成稱為「撥打電話會議」的抽象延伸使用案例,讓它延伸基礎使用案例。
「發出呼叫」使用案例會有下列附加項目:
延伸點:
發生在第 11 步驟之後的電話會議。
之後,可以將延伸使用案例「撥打電話會議」描述如下:
「撥打電話會議」使用案例
這個使用案例延伸「發出呼叫」。它插在「電話會議」延伸點上。
基本流程:
1. 呼叫端按下掛斷、鏈結或轉接按鈕。
2. 系統產生 3 個短嗶聲來進行確認。
3..12.<這些步驟與基礎使用案例的 3..12 步驟相同>
13. 呼叫端從「發出呼叫」使用案例中,重新連接到接收端。
第 3..12 步驟與基礎使用案例相同並不恰當。解決這個問題的方法之一,是將共同部分分解出來,成為併入使用案例(請參閱工作成果準則:併入關係)。
|