状态机图 VS 流程图

Asi*_*ara 5 diagram uml state-machine flowchart state-diagram

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

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

Chr*_*phe 7

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

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

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

简短且简化的示例:

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

正如您所看到的:两者都可以讲述相同的故事,但从不同的角度和不同的细节。