我曾经制作过一个活动图来表示一个有3个参与者的用例。我为每个演员制作了一个泳道,所以我在活动图中有3个泳道。但我的讲师说这是错误的,因为我应该有更多的活动图。他的意思是活动图基于用例图中的一个气泡(用例),而不是基于actor。然而,我浏览了更多,然后我发现我的讲师的话应该是序列图,而不是活动图。那么,真正的说法是什么呢?我的第一张活动图还是讲师的话?
您的讲师是对的:
- 用例图是关于系统必须提供什么来满足需求。每个用例对应于一组行为,这些行为可以在与参与者的交互中执行,以帮助他们实现目标
- 活动图是关于系统如何执行基本行为或更复杂的行为集
用例与系统内部无关。这是关于它的目的和与外部世界的主要关系。在这样的图中显示的用例之间绝对没有顺序。用户可以阅读它并得到问题"的答案;我有什么事&";。
相反,活动与外界无关,也与行动者无关。这是关于系统的内部:它的内部流,遵循可以从控制和数据流语义推导出的顺序。开发者可以阅读它并得到问题"的答案;这将如何工作">
如果你知道某些活动是在与某些参与者的互动中进行的,并且你认为这很重要,你可以在模型中用活动分区来传达这一知识,用图形表示为"泳道"。但是要注意,分区并不是用来映射到环境的参与者或其他元素的。分区允许对具有一些共同特征的活动节点进行可视化分组。它们通常用于突出显示哪个组件或类正在做什么。
总之,活动和用例之间不一定有直接的映射,因为它们代表了不同的现实。然而,如果存在这样的映射,那么每个用例(bubble)至少有一个活动图。
p.S:经过轻微编辑以避免术语混淆:"泳线"是来自流程建模的非UML术语,用于描述图形布局,"分区"是模型中活动图的细分
活动图没有参与者。
它们旨在显示从一个活动(用例)到另一个活动的消息流。你可以在这里阅读更多详细信息。
活动图主要用于以下目的:
- 绘制了系统的活动流程
- 描述从一个活动到另一个活动的顺序,以及
- 描述了系统的并行、分支和并发流
没有一种方法可以指定用例。UML没有描述如何实现它。因此,许多作者对如何实现它有不同的想法。因此,你使用分区(你称之为泳道)来表示Actors的想法是有效的,只要它能帮助你将用例传达给你的利益相关者。
然而,当你的讲师有不同的意见时,这对你没有帮助。他或她可能有充分的理由发表这种言论。在他或她所经历的情况下,这可能很有效。
一些作者建议使用交互图。由于用例描述了参与者如何使用系统,换句话说,他们如何与系统交互,因此这可能是一个不错的选择。这里的问题是,大多数人只知道交互的序列图,他们不太适合描述实现用例目标的所有不同方式。
因此,许多人使用活动图,尽管官方无法描述参与者和系统之间的交互。它们实际上是用来描述一个系统(当然也可能是一个人的系统)的内部运作。因此,活动图的正式含义是,活动调用参与者的行为。我不认为这是你的想法。
尽管如此,许多人还是使用活动图来描述用例,我认为你对分区的解释并不遥远。我个人认为,分区会使建模者的生活变得不必要地困难,并且不会使用它们。
如果您选择使用活动来描述用例,那么每个用例应该有一个活动。
一个用例表示系统的单个功能,但没有显示满足需求所涉及的流程,为了显示所涉及的过程,我们使用活动图。