如何从UML/SysML模型生成命令式非面向对象python代码?

2024-10-03 15:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想基于UML/SysML生成python代码。编码主要是命令式调用函数,用于传递结果、切换状态和一些主要部分

现在我的问题是:如何创建一些简单的主程序,其中包含我的逻辑(同样是基本的:一些输入收集函数,一些处理函数,一些输出编写器函数)

在EnterpriseArchitect中,我认为没有类、对象等是不行的。在这个接近硬件/功能安全的领域中,不需要OOP、继承和多态性。但似乎所有的活动图、序列图等都无法使用。有没有人建议您如何使用基于模型的方法弥合这一差距


Tags: 对象函数代码功能编码硬件状态逻辑
1条回答
网友
1楼 · 发布于 2024-10-03 15:28:33

一,。如何在UML中建模固有的命令/过程设计

如果您有如下处理流程:

some input gathering function, some processing function, some output writer function

您可以使用activity diagrams轻松地设计它。它们拥有描述复杂过程所需的一切,分解过程的步骤更小,无论它是由顺序部分还是并行部分组成

由于对象流,活动图甚至允许您记录输入/输出数据流(但您将使用数据结构而不是封装对象)

很可能,即使您不在OOP世界中,您也会对数据结构感兴趣。从过程的角度来看,您通常会定义一些数据结构,并具有一些旨在管理数据结构的函数。尽管如此,它并不总是像OOP中那样清晰和封装,因为您可以轻松地使用函数同时使用多个数据结构

但是,在轻量级类图中,将数据结构建模为类,最终无需任何操作,即使它不像OOP那样集中,也可以从中获益

现在,如果你有一些函数/过程非常专用于数据结构,没有什么可以阻止你在UML类图中将它们表示为操作,即使它不是OOP。至少它会显示一些函数/过程专用于某些数据结构。这是在数据库建模中经常做的,纯dat表被显示为类,与这些表相关的数据库触发器被显示为操作、事件(如果触发器根本不是OOP)

2.生成代码

对于您的语言,您可能找不到开箱即用的东西。我不确定您的需求是否符合主要针对OOP的UML工具制造商的经济利益

但是,生成C结构、Pascal或艾达记录并不比C++或java类更难。如果工具制造商不提供,那么你至少可以想象一些系统性。

活动图代码生成应该更直接,因为它的概念比其他UML概念更不受OO的影响

最后,状态图对您来说应该也是一个有趣的工具。许多代码生成器都在状态机上工作。YACC、Lex、Bison和co实际上是用语言语法构造巨型状态机的工具,可以自动生成状态转换表,并从中生成无人能手动生成的代码。再说一次,这不是面向对象世界所独有的

结论

UML对于设计建模来说是一个有用的工具,即使你不在OOP中,而且你的设计更程序化。只是你会发现在实现过程中自动化程度较低。(但我的印象是,代码生成和往返工程在OOP中也不那么频繁)

相关问题 更多 >