您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
   
嵌入式软件架构-高级实践
12月11-12日 北京+线上
LLM大模型与智能体开发实战
12月18-19日 北京+线上
需求分析与管理
2026年1月22-23日 北京+线上
     
   
 订阅
代码逆向模型:QT插件Demo(采用工具EA+CodeEngineer)
 
作者:俎涛(火龙果科技)
  1914   次浏览      10 次
 2025-8-7
 

前言

当前,很多软件经过多年积累,代码越来越复杂,造成持续开发和维护的困难,所以对已有软件代码完整而清晰描述愈发显得重要。 UML 建模语言可以对软件进行非常精准的描述,这就可以把已有的代码逆向为模型,然后再此基础上在进行正向设计、开发和维护。下面找了一个 QT 插件开发的示例,演示一下如何对已有的代码进行逆向。建模工具采用的是主流 UML/SysML/UAF 建模工具EA ,为了提高建模的效率,采用 EA 插件 代码正逆向工具CodeEngineer (火龙果科技开发) 进行了代码到模型的自动逆向。下面是 建模工具EA 代码正逆向工具CodeEngineer 逆向结果的截图。

如下是 代码正逆向工具CodeEngineer 功能目录:

 

下面首先了解一下 QT Plugin 示例项目。

示例项目简介: QT Plugin

如下是 QT Plugin 项目的构成,分为 2 部分:

•  Plugin_Demo :这是 QT 插件,提供可以装载到主程序的窗体。

•  Plugin_Test : QT 应用主程序,加载 Plugin_Demo ,创建该插件的窗体,然后加载到主窗体的 tabWidget 。 QT Creator 中的项目截图如下:

Plugin_Demo 的窗体如下:

Plugin_Test 的主界面加载 Plugin_Demo 的窗体后效果如下:

QT 插件示例项目源码如下。

PluginDemo 程序源码





PluginTest 程序源码





逆向的模型: QT Plugin 示例项目

代码逆向模型的并不只是把代码逆向为设计模型,而是应该从完整理解软件的角度进行梳理。这就需要参考正向工程的主线:需求、设计、实现,按照正向工程的主线进行梳理。如下是逆向的软件模型主要的图示:

代码逆向模型(采用 建模工具EA 代码正逆向工具CodeEngineer

下面分别介绍逆向的结果。

用例模型

采用用例图描述软件的功能需求,如下是插件示范项目的用例图。

《用例:使用插件》简介:用户在主应用界面点击《按钮:加载插件》,主应用界面加载插件界面。

逻辑模型

把已有的代码的结构逆向为 UML 类图。对于 QT 程序中的一些特殊定义建模工具 EA 无法处理,为此我在 建模工具EA 的插件 CodeEngineer (火龙果科技研发) 定制开发了 QT 代码的逆向功能。逆向出来的类图如下 :

Plugin_Demo 的类图如下:

说明: Plugin_Demo 类实现 PluginInterface , Plugin_Demo 类负责创建 Form 类的实例。

Plugin_Test 的类图如下:

 

说明: main 调用 MainWindow 创建主界面, MainWindow 通过插件接口 PluginInterface 创建插件 Plugin_Demo 的 Form 实例,然后显示在主界面。

 

对象的交互

主程序 Plugin_Test 的对象交互过程逆向为顺序图,如下所示:

说明:用户启动主应用, main 创建 Main Window 的实例,用户点击《按钮:加载插件》,触发 on_pushButton_clicked 的调用, mainWindow 加载插件文件 Plugin_Demo.dll, 然后调用《 pi : PluginInterface 》的 getWidget( ) 创建《 w : Form 》,最后调用 addTab ()加载插件界面。

为了提高逆向效率,采用 代码正逆向工具CodeEngineer 把函数 MainWindow::on_pushButton_clicked() 自动逆向为如下的活动图:

 

组件模型

采用组件模型描述了主程序 Plugin_Test.exe 和 Plugin_Test.dll 的集成关系,组件图如下:

组件交互

同时采用了顺序图描述了组件之间的交互。

如果希望了解 QT_Plugin_Demo 模型详细信息,请浏览   《 模型库:QT_Plugin_Demo 》

欢迎购买 MBSE 工具链(如下工具可以根据需要选择):

1) 建模工具【 EA

2) 代码工程师【 Code-Engineer

3) MBSE 平台与建模工具【 iSpace

4) 模型库 【Model-Center 】

5) 自动建模器【 Auto-Modeler

6) 模型检查器 【Model-Checker

7) 质量管理器【 Model-Reviewer

8) 文档生成器【 Doc-Generator

9) 系统仿真器【 Simulator-Sys

10) 需求管理器【 Req-Manager

11) 需求、质量与项目管理工具【 WebEA

12) 测试驱动器【 Test-Driver

13) 嵌入式集成测试平台【 Integrator

 

如果希望进一步学习 SysML 或 UML 有关的建模课程和工具,欢迎访问:

1) 课程: MBSE 体系与实践

2) 课程: 基于 SysML 和 EA 进行系统设计与建模

3) 课程: 基于 UML 和 EA 进行系统分析设计   

4) 课程: 使用NML 进行系统分析与建模 

5) 课程: UAF 体系架构与实践

6) 课程: DODAF 模型规范与实例

 

如果您希望了解更多信息:

  • 欢迎访问建模者频道   http://modeler.org.cn/
  • 也欢迎直接联系我们 teacher@uml.net.cn , 010-62670969

 

   
1914   次浏览       10 次
 
相关工具

文档生成器(DocGenerator)
代码工程师 Code Engineer
模型检查器 Checker
WebEA
自动建模器(AutoModeler)
 
相关文章

ASPICE 4.0 过程指南
采用SysML对FPGA逻辑单元进行建模(对应到VHDL代码)
DoDAF建模图例(EA+UPDM)
EA集成第三方工具:Polarion、JIRA、AzureDevOps
UML建模指南(建模工具iSpace)
 
相关课程

ASPICE4.0核心开发过程指南
使用NML进行系统分析与建模
基于UML和EA进行系统分析设计
业务建模与业务分析
基于SysML和EA进行系统设计与建模

工具新闻
2025年6月 EA v17.1 发布
2024年6月 EA v17.0 Beta版发布
2022年11月 EA v16.1的发布说明
2022年11月 EA v16.1正式版介绍
2022年7月 EA v16.05的发布说明
 
最新文章
SysML图解
UAF 过程指南
代码逆向模型:QT插件Demo
基于企业架构的企业数字化指南
采用SysML对FPGA逻辑单元进行建模
DoDAF建模图例(EA+UPDM)
硬件模型:智驾域控制器(建模工具EA)
UML建模指南(建模工具iSpace)
更多...   
MBSE工具
MBSE平台
建模工具 EA
模型库-Model Center
需求管理-ReqManager
自动建模-Modeler
多级仿真-Sys Simulator
代码工程-Code Engineer
文档生成器-DocGenerator
更多...   
成功案例
某汽车整车企业 MBSE工具链和咨询服务
航天三院某研究所 建模工具、模型库和咨询
零跑汽车 建模工具EA及服务
赛力斯 MBSE工具链和培训服务
高合汽车研发部门 建模工具EA、WebEA、
广汽研究院 SysML+EA+软件分析设计
高合汽车研发部门 建模工具EA、WebEA、
国汽智联 建模工具EA、模型库、WebEA
更多...