2016-09-28 67 views
1

Craig Larman指出,以某種表/網格的形式創建演員[/用戶] - 目標列表是在需求分析過程中查找用例的好技術。 (應用UML和模式 - 第69頁ff)多個演員應該在演員 - 目標列表中共享相同的目標

一些簡單的雙列表應該足以爲此示例提供良好的概述;想象一下以下演員 - 目標列表:

ActorGoal

AdminCreate User
" Read User
" .. (full CRUD)
" CRUD Entry
" Assign Entry (to User)
" ..

User Create Entry
" .. (full CRUD)
" CRUD himself?
" ..

聯繫能做什麼用戶能+更像管理小號 ystem ü的nDer d纔有發展的用戶或他們指定的條目。

管理員和用戶清楚地分享了一些目標(我們可以使用術語用例嗎?)。

我不是很確定從這裏去改進這個Actor-Goal列表。

我的大腦告訴我,我可以通過複用/抽象騰出時間和精力在這裏,所以我將最有可能與一個共同的超執行CRUD進入行爲,其中,管理是由擴展功能結束管理目標(CRUD用戶,分配等)。

但我知道這是一個比設計而不是分析的問題。
我也知道我可以單獨編寫用例:我不必說明究竟是誰使用它,我只需要知道它是遵守給定合同的某個實體[/ interface]。


什麼時候開始思考抽象?
我現在是否過度複雜?
我們是否應該像上面那樣離開演員 - 目標列表並將其作爲「完整」神器覈對?

因爲一個演員,目標列表的古典目的是爲我們的下一個神器提供一些簡要概述 - 用例圖 - 我們可以開始轉換就在這裏?: use case diagram

用例圖,使整個重用部分更可見(至少對我來說)。現在採用冗餘並在後期階段(如設計)處理它會是明智的嗎?

欣賞您的輸入!


編輯:我也不太清楚有關用戶CRUDing自己...但是讓我們保持簡單,堅持的主要問題。

回答

1

如您所描述的,在演員目標列表中標識候選用例是一個很好的主意。

的問題識別用例

在現實生活中時,你會很快遇到的一致性問題闡述需求獲取過程中的列表時:

  • 採訪了一些用戶/業務專家會描述非常詳細的逐步目標(對應於系統功能),而其他將描述相當高水平的目標用戶目標。所以你需要第三列來確定每個用例的goal level

  • 術語和用戶目標不會總是以均勻的方式表達。因此需要進行交叉檢查,並重命名用例。例如,我曾在那裏的系統:

    • 管理員聲稱manage authorizations和商務用戶聲稱manage authorization。這是相同的用例嗎?不:看起來系統中的第一個maintained assignment of authorizations,第二個被授權給管理員的decide on authorizations assignment and request them
    • 買方解釋說,對於購買訂單,有人必須在發票付款前給register a good receipt。倉庫職員解釋說,他們在倉庫manage stock movement。後來,看來,這些運動的好收益,良好的問題和股票轉讓。

所以第四列有關主要變種評論可能有助於保持概述,並發現隱藏的共享潛力。

在共享/重用用例之前,通常會進行大量的交叉檢查和協調工作。重複使用太快可能會導致比預期更多的時間。

使用情況圖表

現在我會很挑釁:一旦你有很好的和一致的表與所有的演員和使用的情況下,這將是你從一個用例圖,預計受益?

通常推薦使用not to abuse use case diagrams for functional decomposition(參見also here)。所以用例圖將增加一點你已經在列表中的東西。

此外,<<Include>>, <<Extend>>和泛化關係應該使用很少,因爲他們往往很快使圖難以理解。

最後,抽象和重用確實發生在用例級別嗎?這與系統之外的參與者有關嗎?如果不是,那更多的是關於設計和實現的細節。所以我建議在類模型中考慮這些,您將創建(或派生)以實現用例。