UML - 用例图选择

UML - Use Case Diagram choices

我听说过关于此的相互矛盾的事情,只是想澄清一下。

我一直认为,在构建用例图时,我只包括系统将执行的活动。例如,如果它是银行 atm,将包含 "User depositing money",因为它涉及用户与 atm 的交互。然而,"User is paid cash in hand from job" 未包含在图中,即使它可能与场景或情况相关。

谢谢大家

它不包括在内,因为 "User is paid cash in hand from job" 不在项目范围内,您尝试创建的内容不需要它。

最常见的用例用于模型的 functional/logical 级别(MDA 的 PIM 级别)。这意味着它仅描述了将自动化的流程部分。

因此,除非您的系统具有以某种方式记录用户以现金支付的事实的功能,否则这不是正在构建的系统的一部分。

在 business/conceptual(MDA 的 CIM 级别)级别,您可以对整个流程进行建模,而不考虑自动化。所以在这个水平上,它 "User is paid in cash from job" 肯定会就位。

用户以现金支付的事实在任何方面都与 information system 有关,这是一个涉及人的系统。支付交易必须与您的项目集成,至少在概念上是这样。换句话说,它应该与用例具有未指定类型的关系,具体取决于上下文。

我知道我的回答很乱:如果您已经觉得无聊,请直接跳到 解决方案 部分...

用例图

根据UML User Guide

A use case is a description of sequences of actions that a system performs that yield observable results to a particular actor.

关键在于对与系统相关的内容进行建模:您的主要问题是考虑项目的范围。

根据您确定的范围,您应该考虑的用例类似于 现金提取:从参与者的角度考虑可观察到的结果。无论您是否考虑系统的操作部分,这部分都是非常主观的。我个人不同意这里的其他答案。

关于手头现金支付的几句话。从纯粹的开发过程的角度来看,在建模时有一个敏锐的想法 如何 用户是正常的吗?这里仍然是范围问题:在您的上下文中,它可能是一个强约束。

即使在逆向工程中,用例也是面向用户的,它与事情是如何完成的无关,而是完成了什么:我认为与特别自动化的事情无关,即使在谈论系统时也是如此。这里有一个微妙的想法:我考虑的是一个信息系统,一个首先涉及到人的系统,而不是一个完全自动化的系统。当然,纯自动化系统可以用UML建模,但大多数系统都涉及用户。

用例本身与如何完成支付的信息之间的关系不必在图表中表示。然而,即使这不符合用例的精神,如果它是一个重要的约束,图表 reader 应该被告知,它的完成方式也可以写在注释中。

解决方法

在我看来,在用例中放置该信息的正确位置不是图表本身,而是在用例描述中。 Martin Fowler 在 UML distilled. You have a simple use case description example here. This is related to the way you are using UML and the way you wish to describe use cases (I personally share Martin Fowler's perception) 中对此给出了一些提示。

也许您更愿意用特定于您的建模软件的形式来表示它,但我认为这不是使用 UML 的传统方式(适用于 Executable UML, not appropriate with blueprint or sketch).