我有一个网络通信系统的源代码,如何绘制协议状态机?我现在能想到两个选择。
方案一:以函数执行的process作为状态,以函数执行的result作为状态机转移条件。 例子: 在此输入图片描述
方案2:以函数执行的结果作为状态,以函数执行的过程作为状态机转移条件。 例子: 在此输入图片描述
请问哪一张图是正确的?
在上面,我尝试通过两个角度来绘制状态机。哪种观点是正确的?或者说我应该如何根据函数调用流程来绘制协议状态机?
状态就是:状态。它不涉及任何操作,因此它不会映射到源代码中的函数。状态可能可能映射到此代码使用的值。
转换意味着涉及到操作,即“调用”,这通常意味着需要执行一些代码。 第一个图似乎不正确,因为“解密”和“验证”是比状态更多的操作。您不会将代码当前正在执行的事实称为状态。状态更像是系统“静止”时的样子。
这也意味着第二张图并不完全正确:“接收”听起来像是一个正在进行的过程。最好读成“已收到”之类的内容。您还可以为每个转换指定其前置条件和后置条件。您可以在
uml-diagrams.com函数能够将一对一映射到转换。所以这可能不是正确的方法。通常,您在编写代码之前设计这些图表。现在您已经有了代码,您将尝试理解它的作用,并根据这种理解起草图表。但同样,这并不意味着一个函数映射到图中的一个转换。