簡體   English   中英

我創建的UML用例圖。 我對include / extend的用法正確嗎?

[英]UML Use Case diagram I created. Is my usage of include/extend correct?

我只想確定我是否正在使用擴展和正確包含。 如果我在此處某處使用不正確,請指出錯誤的位置以及可能的原因。

https://imageshack.com/scaled/large/163/nlnk.jpg

干杯。

使用<<include>><<extend>>很簡單:

  • <<include>>定義了一個子用例,該用例始終包含在一般用例中: use-case -include--> sub use-case 通常,它用於表示用例的不同部分或可以由其他用例重用的公共部分。

  • <<extend>>定義了一個可選的子用例,可以在某些條件下執行(應該在較低級別的設計中定義,而不是在用例圖中定義)。 這里關系的方向與<<include>>關系相反: 用例 <--extend- -sub用例

將這些規則應用於您的圖表,並找出是否正確。

似乎需要在與<<include>>鏈接的其他活動之前執行“安全登錄”。 Include意味着用例每次也會運行包含的用例,在這種情況下,這可能不是您想要的(每次會話一次登錄)。 您始終可以創建新的構造型,例如<<precedes>> or <<requires>> 持續使用它們將使您傳達自己的意思。

在嘗試區分使用擴展和用例圖之間的區別之前,我會找到這條建議。希望對您有所幫助。 原始建議來自此StackOverflow答案

擴展和包含之間的區別

當用例有條件地將步驟添加到另一個一流用例時,將使用Extend。 例如,假設“取現”是ATM機的用例。 “評估費”將擴展“提取現金”並描述有條件的“擴展點”,該條件在ATM用戶未在ATM擁有機構開戶時實例化。 請注意,基本的“提取現金”用例獨立存在,沒有擴展名。

Include用於提取在多個用例中重復的用例片段。 附帶的用例不能單獨存在,沒有附帶的原始用例是不完整的。 僅當重復很重要並且是通過設計(而非巧合)存在時,才應謹慎使用此選項。 例如,在每個ATM用例開始時發生的事件流(當用戶放入他們的ATM卡,輸入其PIN並顯示主菜單時)將是一個不錯的選擇。

另外,從我讀過的每本書中,總是建議盡量使用include和extension 保持簡單愚蠢。

許多關系在這里顯然是不正確的。 但是,我認為該圖的主要問題不是正確地使用包含和擴展,而是針對復雜且總體上不清楚的關系。 盡管從理論上講是有效的,但您應避免使用這些關系中的多個層次。

您的圖表確實很難遵循和解釋。

一些重構思路和更正:

  • 單獨顯示“安全登錄”類,僅與Actor鏈接,然后對“包含”該類的所有用例應用以下先決條件:“用戶已安全登錄”
  • “ 5分鍾后注銷”應該是自己的用例,並且也僅連接到Actor,並具有兩個先決條件:“用戶已安全登錄”和“用戶5分鍾未激活”
  • 刪除“ 5分鍾后注銷”和“發起呼叫”之間的包含。 擴展可能更合適
  • 顛倒“轉移資金...”和“確保足夠的資金...”之間的包含的方向-很明顯,第一個包含第二個,而不是相反
  • 考慮將圖表分解為僅相關UC的2個或更多個簡單圖表:例如,所有登錄/注銷可以單獨顯示並簡化視圖。 在一張圖中,您的用例不應超過5-7個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM