是否允许在活动图中的初始节点之后使用决策节点?



我正在为一个项目建模活动图。在初始节点之后,可以使用决策节点。我只是谷歌搜索它。但我甚至找不到类似的例子。例如:- 想象一个人可以搜索狗的名字选择类别动物,然后狗同样在一开始......

我的一位队友提到,根据上面的例子,这是两个不同的活动,我们应该为它创建两个活动图。

这在条件下是允许的。

关于决策节点输入流的规则是(正式的2017 § 15.3.3.6决策节点第390页):

决策节点应至少有一个,并且 大多数两个传入的活动边缘,以及至少一个传出的活动边缘。... 如果决策节点只有一个 传入边缘,则它是主传入边缘。如果决策节点的主传入边是控制流, 则所有传出边都应为 ControlFlow,如果主传入边是 ObjectFlow,则所有传出边都应为 应为对象流。

还知道(§ 15.3.3.1 初始节点第 387 页):

InitialNode 的传出 ActivityEdges 必须全部是 ControlFlows。

这意味着在您的情况下,假设决策节点没有其他输入边,则决策节点的所有传出边都应是控制流,否则不允许这样做

你的队友没有错。这是一个设计问题,应该事先澄清。活动是用例中的功能部件。它们表示"晴天"、各种错误场景等场景。再往后退一步,用例代表了所考虑的系统对其主要参与者的附加值。

现在从你的例子中很难说出这个系统应该是什么。Search for dog name可能是一个用例,但在什么情况下呢?是给新狗起名字还是在数据库中搜索现有的狗?Select animal category也一样(然后是狗?两者都作为用例没有多大意义。一旦你想出了有意义的用例,你就可以准确地告诉活动应该有哪些步骤作为操作。只有这样,您才能需要做出决定。决定在系统外实际使用它的用例,您不会看到为它完成的步骤。

作为推荐:Bittner/Spence有一本关于用例的优秀书,它(与UML规范不同)很有意义。还有其他知名作家在同一所学校任教(沿着伊瓦尔·雅各布森)。

最新更新