Craig Larman表示,创建一个表格/网格形式的Actor [/ User] -Goal列表是在需求分析期间查找用例的好方法。 (应用UML和模式 - P. 69 ff)
一些简单的双列表应该足以为这个例子提供一个很好的概述;想象一下Actor-Goal List:
Actor
Goal
Admin
Create User
"
Read User
"
.. (full CRUD)
"
CRUD Entry
"
Assign Entry (to User)
"
..
User
Create Entry
"
.. (full CRUD)
"
CRUD himself?
"
..
管理员可以做什么用户可以+更像是管理开发中的系统用户或为他们分配条目。
管理员和用户显然正在分享一些目标(我们可以使用术语用例吗?)。
我不确定从这里开始改进这个Actor-Goal列表。
我的大脑告诉我,我可以通过重用/抽象来节省时间和精力,所以我很可能最终得到一个实现CRUD Entry行为的公共超类,其中Admin通过Manage Goals扩展功能(CRUD用户,分配,等等。)。
但我知道这是设计而不是分析的问题。 我也知道我可以孤立地编写用例:我不必说明谁正确使用它,我只需要知道它是一个坚持给定合同[/ interface]的实体。
什么时候开始考虑抽象? 我现在这样做会让事情过于复杂吗? 我们应该像上面那样离开演员目标列表并将其作为“完整”神器进行检查吗?
由于Actor-Goal列表的经典目的是为我们的下一个Artifact提供一些快速概述 - 用例图 - 我们可以在这里开始转换吗?:
用例图使整个重用部分更加明显(至少对我而言)。现在采用冗余并在后期阶段(例如设计)处理它是否明智? 感谢您的意见!
编辑:我也不太确定用户CRUDing自己..但让我们保持简单并坚持主要问题。
如您所述,在演员目标列表中识别候选用例是一个很好的主意。
识别用例时的问题
在现实生活中,在需求获取期间详细说明列表时,您会很快遇到一致性问题:
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>>
和泛化关系几乎不应该使用,因为它们很容易使图表难以理解。
最后,抽象和重用是否真的发生在用例层面?这与系统外的演员有关吗?如果没有,它更多的是设计和实现细节。因此,我建议您在将要创建(或派生)实现用例的类模型中考虑这些。