2

状态机图和流程图有何异同?

到目前为止,我发现状态图向我们展示了状态的实际变化,而不是流程图中的过程或命令。

4

2 回答 2

3

在状态图中,节点是状态,箭头对应于触发状态变化的事件。

在流程图中,节点是动作或决策,箭头对应于控制流,即接下来会发生什么。流程图不是UML。最接近的 UML 图是活动图,它允许您更精确地模拟您可以使用流程图等建模的所有内容(因为箭头也可以表示对象流)。

两者可以是互补的:流程图中的动作/决定可以触发导致状态变化的事件。但这不一定是一对一的:一个动作可能会导致几个状态变化,而流程图中没有任何证据表明这些可能发生。

简短而简化的示例:

  • 想象一个Order物体。它可能有状态received, delivey in preparation, delivery complete, invoiced. 这些状态中的每一个都告诉订单接下来会发生什么。这将是状态图的主题。
  • 想象一个流程图。这些是按顺序发生的不同动作:Get an order from customer, Pick items of the orders from the inventory, Send items to the customer, Are all items sent?, 如果是, Prepare and send invoice, 如果不是,Find missing items然后返回Pick items ...并从那里继续。

如您所见:两者都可以讲述同一个故事,但从不同的角度和不同的细节。

于 2022-01-01T14:42:44.020 回答
1

正如您所提到的,状态机图侧重于根据输入显示执行从哪个状态到哪个状态。

尽管状态机可以作为流程图/活动图的一种特殊形式来处理。

于 2022-01-01T12:53:28.610 回答