我只想確定我是否使用擴展並正確包含。如果我在這裏某處使用了不正確的地方,請說明在哪裏,如果可能的話,爲什麼它不正確。我創建的UML用例圖。我使用include/extend是否正確?
https://imageshack.com/scaled/large/163/nlnk.jpg
乾杯。
我只想確定我是否使用擴展並正確包含。如果我在這裏某處使用了不正確的地方,請說明在哪裏,如果可能的話,爲什麼它不正確。我創建的UML用例圖。我使用include/extend是否正確?
https://imageshack.com/scaled/large/163/nlnk.jpg
乾杯。
使用規則<<include>>
和<<extend>>
很簡單:
<<include>>
限定了子用例是總是包括在一般使用情況下的:用例-include-->
子使用 - 案例。通常它用來表示用例的一個不同部分,或者可以被其他用例重複使用的公共部分。
<<extend>>
限定可選子,可以在一定的條件下(這應該在較低的水平設計來限定,而不是在用例圖)來執行的用例。這裏關係的方向與<<include>>
關係相反:用例<--extend-
子用例。
將這些規則應用到您的圖表並確定它是否正確。
看起來「安全登錄」需要在與<<include>>
鏈接的其他活動之前執行。 Include意味着用例每次都運行包含的用例,在這種情況下可能不是您想要的(每個會話只有一個登錄)。您始終可以創建新的刻板印象,例如<<precedes>> or <<requires>>
。一貫地使用它們可以讓你表達你的意思。
當我試圖區分使用擴展和打算用例圖之間的區別之前,我發現這條建議。我希望它也可以幫助你。最初的建議來自this StackOverflow answer。之間
差分延伸,並且包括
擴展時使用一個用例有條件地添加步驟到另一個 第一類的用例。例如,想象一下「Withdraw Cash」是ATM機使用的一種情況。 「評估費」將擴展Withdraw Cash並且 描述當ATM用戶沒有在ATM所屬機構存款時實例化的條件「擴展點」。注意 基本的「Withdraw Cash」用例本身,不帶 擴展名。
包含用於提取在多個用例中複製的用例碎片。包含的用例不能單獨存在,如果沒有包含用例,則原始用例不完整。這個 應該謹慎使用,只有在重複是 顯着並且通過設計(而不是巧合)存在的情況下。例如,在每個ATM 使用案例(當用戶放入其自動提款卡,輸入其PIN,並且 顯示爲主菜單)開始時發生的事件流將是包括的一個很好的候選者。
此外,從每一本書我讀過,它總是建議使用包括和擴展謹慎。保持簡單愚蠢。
許多關係在這裏顯然不正確。然而,我認爲這個圖的主要問題不是包含和擴展的正確使用,而是複雜和整體不明確的關係。儘管在法律上有效,您應該避免使用這些關係中的多個關卡。
你的圖很難跟蹤和解釋。
一些重構的思路和更正:
謝謝布魯斯。我決定使用安全登錄作爲先決條件而不是用例,我認爲它使圖更易於管理。 – aenergi