状态机图与流程图



状态机图和流程图之间有哪些区别和相似之处?

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

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

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

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

简单的例子:

  • 想象一个Order对象。它可以具有状态receiveddelivey in preparationdelivery completeinvoiced。这些状态中的每一个都告诉订单接下来会发生什么。这将是状态图的主题
  • 想象一个流程图。这些是按顺序发生的不同动作: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 ...并从那里继续

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

正如您所提到的,状态机图专注于显示基于输入的执行从哪个状态到哪个状态。

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

最新更新