状态机图和流程图有何异同?
到目前为止,我发现状态图向我们展示了状态的实际变化,而不是流程图中的过程或命令。
状态机图和流程图有何异同?
到目前为止,我发现状态图向我们展示了状态的实际变化,而不是流程图中的过程或命令。
在状态图中,节点是状态,箭头对应于触发状态变化的事件。
在流程图中,节点是动作或决策,箭头对应于控制流,即接下来会发生什么。流程图不是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 ...
并从那里继续。如您所见:两者都可以讲述同一个故事,但从不同的角度和不同的细节。
正如您所提到的,状态机图侧重于根据输入显示执行从哪个状态到哪个状态。
尽管状态机可以作为流程图/活动图的一种特殊形式来处理。