我想生成基于UML/SysML的python代码。编码主要是命令式的——调用传递结果、切换状态和一些主要部分的函数。
我如何创建一些简单的主程序,其中包含我的逻辑(同样是原语:一些输入收集函数,一些处理函数,一些输出编写器函数(?
在企业架构师中,我认为没有类、对象等是不可能的。在这个接近硬件/功能安全的领域,不需要OOP的东西、继承、多态性。但似乎所有的活动图、序列图等都无法使用。有人建议如何用基于模型的方法来弥补这一差距吗?
1。如何在UML中建模固有的命令式/过程式设计
如果您有一个处理流程,例如:
一些输入采集功能,一些处理功能,一些输出写入程序功能
使用活动图可以非常轻松地设计它。他们拥有描述复杂处理所需的一切,可以将其分解为更小的步骤,也可以将其由顺序部分或并行部分组成。
由于对象流,活动图甚至允许您记录输入/输出数据流(但您将使用数据结构而不是封装的对象。
很可能,即使您不在OOP世界中,您也会对数据结构感兴趣。在程序化的方式中,您通常定义一些数据结构,并具有一些旨在管理数据结构的功能。尽管如此,它并不总是像OOP中那样清晰和封装,因为您可以很容易地让一个函数同时处理多个数据结构。
但是,在轻型类图中,将数据结构建模为类,最终不需要任何操作,即使它不像OOP那样集中,也可以从中受益。
现在,如果您有一些非常专用于数据结构的函数/过程,那么没有什么可以阻止您在UML类图中将它们指示为操作,即使它不是OOP。至少它会显示某些函数/过程专用于某些数据结构。这通常在数据库建模中完成,其中纯数据表被显示为类,与这些表相关的数据库触发器被显示为操作、事件,如果触发器根本不是OOP。
2.生成代码
对于你的语言来说,你可能找不到开箱即用的东西。我不确定您的需求是否对主要以OOP为目标的UML工具制造商有经济利益。
然而,生成C结构、Pascal或ADA记录并不比生成C++或Java类更困难。如果工具制造商不提供,你可以想象至少有一些系统学。
活动图代码的生成应该更直接,因为它的概念比其他UML概念更不可知于OO。
最后,状态图对您来说也应该是一个有趣的工具。许多代码生成器都在状态机上工作。YACC、Lex、Bison;事实上,co是用语言语法构建巨型状态机的工具,可以自动生成状态转换表,并从中生成无人能手动生成的代码。同样,这不是为OO世界保留的东西。
结论
UML可以成为设计建模的有用工具,即使您不在OOP中,并且您的设计更具程序性。只是你会发现转移到实现的自动化程度较低。(但我的印象是,代码生成和往返工程在OOP中也不那么频繁(。