2017-01-03 58 views
1

我正在做一個系統的需求分析,目前我嘗試編寫業務用例(BUC)並製作業務用例圖。我目前使用以下準則:INCLUDE在業務用例的備用流程中的語句

  • 當我有一個BUC我使用EXTEND-語句指向哪裏可以找到這些可選步驟BUC可選的額外步驟。擴展的BUC和擴展的BUC都可以獨立存在。

  • 當我在多個BUC中有重複的功能時,我嘗試提取這個並將它放在單獨的BUC中。然後,我在BUC中使用INCLUDE語句來提取功能,指向可以找到該功能的BUC。您使用INCLUDE語句指向外部BUC的BUC不能單獨使用。

這一切都工作得很好,直到我到了以下情況:

  • 在BUC的替代流動(我們稱之爲一個A)有,我已經在另一個指定的重複功能BUC(讓我們稱之爲B)。
  • 所以很自然我想用INCLUDE語句指向B.
  • 如果我這樣做,我也必須在我的業務用例圖中顯示此內容。
  • 如果我在圖中繪製INCLUDE箭頭(從A到B),它看起來像A不能沒有B而存在。
  • 但是,情況並非如此,因爲A只有在B處於備用流時才需要。

我認爲以下選項:

  1. 我守在替代流動的所有功能,但是這使得替代流動時間過長,造成重複的功能。
  2. 我改用延伸,但是這會帶來B是可選的,而如果你在A的替代流動,你必須要經過B.

有什麼想法?

回答

2

include當(並且僅當)包含的UC始終在主UC運行時運行時才使用。

extend用於可以在不運行擴展UC的情況下完成主要UC的情況下使用,但是在一些替代流程中,擴展UC也可以運行。

所以在你的情況下,你應該使用extend

可以顯示擴展點。您可以使用它來解釋邏輯(澄清擴展UC始終在進入備用流程時運行)。如果邏輯更復雜,你也可以把它放在評論中。

我在這裏不討論如果你的分解是一個正確的方法(但期望別人的討論)。

+0

「但是期待別人的討論」:-D :-D – observer

0

從你的描述中,你並沒有進行用例綜合,而是進行了功能分解。這顯然是錯誤的。用例綜合中的要點是關注用例給其actor的附加值,而不是分解任何功能。

我強烈建議您閱讀Bittner/Spence,並在繼續朝着您要前進的方向瞭解基本知識 - 分別走回頭路,瞄準正確的目標。