global-variables - 如何在序列图中通过全局变量表达交互

标签 global-variables uml sequence-diagram

我想为下面的例子画一个序列图。

我知道当有函数调用交互进行数据交换时可以使用消息行。 但在这种情况下,没有定义读取函数接口(interface),因为目标变量被定义为全局变量,以便共享给其他想要读取的组件。我认为在设计过程中必须描述组件之间的所有数据流,而不考虑它是否通过函数接口(interface)。我相信它将向其他低级组件设计者提供有关共享变量的清晰信息。

有没有办法在序列图中直接绘制共享变量?

以下是我在代码中的示例解释,我想要描述的是 A 和 B 之间使用的 variable_a

A.h
extern unsigned char variable_a;

A.c
unsigned char variable_a;

void func_A(void)
{
   variable_a = input();
}


B.c
#include "A.h"

void func_B(void)
{
   if(variable_a >= 100)
   {
     //do something
   }
   else
   {
     //do something
   }
}

最佳答案

全局变量是一个对象,可以显示为单独的生命线。例如,可以使用 getset 消息来公开对对象的访问。

备注:这种技术可能被视为乏味或矫枉过正,但它的优点是准确且可视化本来会隐藏的耦合。顺便说一句,它还鼓励良好的实践:涉及的全局变量越少,额外的生命线就越少;-)

附加提示:您可能还对this other question感兴趣。关于如何了解参与交互的对象。

关于global-variables - 如何在序列图中通过全局变量表达交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72036573/

相关文章:

uml - 在 UML 多重性中使用变量

database - 如何决定是使用 ER 还是 UML 进行建模?

模型、元模型和元元模型

uml - 序列图框架

node.js - NodeJS 中的全局变量与 require.cache

javascript - 如何使 for 循环与变量内的变量一起工作

uml - 如何在 UML 对象和序列图中为同一对象分别显示引用类型和对象类型

java - Eclipse 插件或开源工具,用于对时序图的 Java 代码进行逆向工程

PHP 定义一个变量,如果它没有传递给函数

JavaScript:无法在浏览器工具控制台中查看非全局变量?