使用UML显示单个类的工作流程的最佳方法是什么

时间:2012-10-16 19:51:43

标签: code-analysis uml

在尝试显示类的行为如何从一种方法流向另一种方法时,使用的最佳UML图类型是什么?

我正在尝试绘制现有代码,我正在查看的行为主要涉及私有方法调用,对类外部的静态对象进行一些调用。我不认为序列图会在这种情况下给出最好的细节,因为有问题的类不与任何其他类交互,除了前面提到的极少数静态调用。

在这种情况下最适合的是什么?

4 个答案:

答案 0 :(得分:3)

根据UML上层结构(http://www.omg.org/spec/UML),在UML中存在两种行为:紧急行为和执行行为。

执行行为由对象(其主机)执行,并且是该对象行为的描述。 执行行为直接由调用该对象的行为特征或其创建引起。在任何一种情况下,它都是某些相关对象执行动作的结果。行为可以访问其主机对象的结构特征。可以托管行为的对象由BehavioredClassifier元类的具体子类型指定。 紧急行为是由一个或多个参与者对象的交互产生的。如果参与对象是较大复合对象的一部分,则可以将新兴行为视为间接描述容器对象的行为。然而,参与者对象的执行行为可能导致紧急行为。

您可以通过“活动”或“交互”对行为进行建模(实际上您也可以使用状态机和用例)。活动更适应模型执行行为,而交互则模拟紧急行为。

现在,如果您的类有很多部分,并且您想要建模的行为包含其部件的“复杂”交互,则可能是交互图(序列)可能是正确的选择。否则,如果您需要建模的行为由一系列原子动作组成,则活动可能会更好。在UML中考虑有一个特定的动作来表示方法的调用(CallOperationAction),它将您可以通过专用操作(ReadSelfAction)检索的对象引用作为输入引脚。还有一个读取对象属性的操作(ReadStructuralFeatureAction)。 还要检查可执行UML模型的基础(FUML)http://www.omg.org/spec/FUML

答案 1 :(得分:1)

虽然以前的所有答案都是正确的,但我想添加使用State-Machine来定义类的行为的选项。状态机允许您显示类的当前状态以及在调用方法或接收事件时类的状态如何更改。既然你声明你主要是为一个类建模,我认为最重要的事情是可以做什么(可以调用什么方法调用),具体取决于当前状态以及这些方法调用如何影响类的状态。有人认为我非常喜欢状态机,它们具有相对明确的语义,并且还有使用复合和正交状态在不同级别显示信息的方法。

答案 2 :(得分:0)

从广义上讲,你有两个选择(每个@ Silli的回答):序列或活动图。我可能会建议将序列诊断作为第一选择,但是你说你不认为这是合适的。你能详细说明原因吗?

也许这是条件逻辑?如果是这样,活动图可能是更好的选择。与序列图相比,它具有更直观的语法来显示控制流。您还可以在单​​独的泳道中显示静态对象 - 因此可以清楚地区分对外部对象的调用。如果与您相关,您还可以说明并行行为。一些很好的例子here如果有帮助的话。

第h

答案 3 :(得分:0)

我建议将协作图(UML 1.x)重命名为Communication diagram(UML 2.x)。 这可能比序列图更好,更好,因为在您的情况下它可能更具可读性。

  

通信图根据有序消息对对象或部件之间的交互进行建模。通信图表表示从类,序列和用例图中获取的信息的组合,描述了系统的静态结构和动态行为。

enter image description here
http://en.wikipedia.org/wiki/Communication_diagram