【发布时间】:2020-09-04 06:49:43
【问题描述】:
我正在为一个项目建模活动图。直接在初始节点之后可以使用决策节点。我只是用谷歌搜索它。但我什至找不到类似的例子。 例如:- 想象一个人可以搜索狗名或选择类别动物,然后选择狗,同样在最开始......
我的一个队友提到,根据上面的例子,这是两个不同的活动,我们应该为它创建两个活动图。
【问题讨论】:
标签: uml activity-diagram
我正在为一个项目建模活动图。直接在初始节点之后可以使用决策节点。我只是用谷歌搜索它。但我什至找不到类似的例子。 例如:- 想象一个人可以搜索狗名或选择类别动物,然后选择狗,同样在最开始......
我的一个队友提到,根据上面的例子,这是两个不同的活动,我们应该为它创建两个活动图。
【问题讨论】:
标签: uml activity-diagram
你的队友没有错。这是一个设计问题,应该事先澄清。活动是用例内部的功能部分。它们代表了诸如“晴天”之类的场景、各种错误场景等。再一次,用例代表了所考虑的系统对其主要参与者所代表的附加值。
现在从您的示例中很难判断该系统应该是什么。 Search for dog name 可能是一个用例,但在哪种情况下?是给新狗命名还是在数据库中搜索现有的狗? Select animal category(然后是狗?)也一样。两者作为用例都没有多大意义。一旦你提出了有意义的用例,你就可以准确地知道活动应该有哪些步骤作为行动。只有这样,您才有必要做出决定。决定哪个用例在系统外实际使用它,您不会看到为它完成的步骤。
作为建议:Bittner/Spence 有一本关于用例的优秀书籍(与 UML 规范不同)很有意义。还有其他知名作家(与 Ivar Jacobson 一起)在同一所学校任教。
【讨论】:
这是有条件的。
关于决策节点的输入流的规则是(formal 2017 § 15.3.3.6 决策节点第 390 页):
一个DecisionNode应该至少有一个和 最多两个传入的 ActivityEdge,以及至少一个传出的 ActivityEdge。 ...如果DecisionNode只有一个 入边,则它是主要的入边。如果 DecisionNode 的主要传入边缘是 ControlFlow, 那么所有的出边都应该是控制流,如果主要的入边是一个对象流,那么所有的出边 应该是 ObjectFlows。
也知道(第 15.3.3.1 节初始节点第 387 页):
InitialNode 的传出 ActivityEdges 必须都是 ControlFlows。
这意味着在你的情况下,假设 DecisionNode 没有其他输入边,DecisionNode 的所有输出边都应为 ControlFlows,否则这是不允许的
【讨论】: