如何根据协议源码画协议状态机?

问题描述 投票:0回答:1

我有一个网络通信系统的源代码,如何绘制协议状态机?我现在能想到两个选择。

方案一:以函数执行的process作为状态,以函数执行的result作为状态机转移条件。 例子: 在此输入图片描述

方案2:以函数执行的结果作为状态,以函数执行的过程作为状态机转移条件。 例子: 在此输入图片描述

请问哪一张图是正确的?

在上面,我尝试通过两个角度来绘制状态机。哪种观点是正确的?或者说我应该如何根据函数调用流程来绘制协议状态机?

if-statement networking protocols state-machine network-protocols
1个回答
0
投票

状态就是:状态。它不涉及任何操作,因此它不会映射到源代码中的函数。状态可能可能映射到此代码使用的

转换意味着涉及到操作,即“调用”,这通常意味着需要执行一些代码。 第一个图似乎不正确,因为“解密”和“验证”是比状态更多的操作。您不会将代码当前正在执行的事实称为状态。状态更像是系统“静止”时的样子。

这也意味着第二张图并不完全正确:“接收”听起来像是一个正在进行的过程。最好读成“已收到”之类的内容。您还可以为每个转换指定其前置条件和后置条件。您可以在

uml-diagrams.com

上找到所有这些信息。 但是,一般来说,无法保证源代码中的

函数

能够将一对一映射到转换。所以这可能不是正确的方法。通常,您在编写代码之前设计这些图表。现在您已经有了代码,您将尝试理解它的作用,并根据这种理解起草图表。但同样,这并不意味着一个函数映射到图中的一个转换。

© www.soinside.com 2019 - 2024. All rights reserved.