问题描述
我在互联网上看到许多用例图(在UML中)的示例,例如:
我看到的是delete
用例不包括create
用例。即使我无法想象不创建用户就删除用户。
我想知道为什么不使用include仍然正确吗?我想知道什么时候应该使用它,什么时候不使用它?
解决方法
如果存在mv temp.txt mytext.txt
,则意味着在执行UC 删除用户期间,还将执行UC Create-User ,当然,没道理。
预期的行为可以是:
- 删除用户具有先决条件 Create-User 已成功执行给同一用户,而 Delete-User 尚未成功执行同一用户(然后是最后一个 Create-User 之后) 可以在没有先决条件的情况下执行
- 或 Delete-User ,但如果该用户不存在(对于同一用户, Create-User 未成功执行,或删除用户在上次创建后已经为同一用户执行过,或者是该用户),这是一个错误情况
Bruno's excellent answer已经解释了为什么将GestureDetector
包含在Widget1
中不是一个好主意,以及可以使用哪些替代方式来表达您在两个用例之间解释的关系。
但如果有帮助,请换个角度:
- 用例图并不代表活动的逻辑顺序。
- 用例仅代表参与者的目标,该参与者独立于其他用例和系统历史来激励他/她与系统的交互。因此,简单的事实是sysAdmin可能想要在某个时刻删除
onTap
,足以使用例GestureDetector
独自存在。 -
Create
显示目标可以包括用户感兴趣的其他一些目标。包含不是功能分解,您需要在其中分解所有细节中需要做的事情。也不显示顺序依赖性。因此,对于Delete
,您不应包含之前发生的事情,因为before-before是顺序的。包含项仅突出显示一些对用户有意义的相关子目标,并且这些目标是用户在实现更大目标时始终希望实现的目标。 - 最后,用例
User
可能具有完美的意义,即使用例Delete
从未由任何参与者执行,例如,因为:- 新系统将使用其所有过去的帐户来接管旧数据库,而SysAdmin在新系统中要做的第一件事就是在创建新帐户之前清理已经存在的旧未使用帐户。
- SysAdmin想要
include
一个帐户,但仅在交互期间才发现该帐户不存在,拼写错误或已被删除。这些可能性都是您将在相同用例的叙述中描述的替代流程。 - 或者如果没有
Delete
用例,将可以预见,因为用户创建将在后台自动完成(例如,基于SSO),而无需参与者的参与。