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

1元 10元 50元





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



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
   
MBSE从理论方法到工作实践
8月26-27日 北京+线上
大模型核心技术RAG、MCP与智能体实践
8月14-15日 厦门
图数据库与知识图谱
8月28日-29日 北京+线上
     
   
 
 订阅
代码逆向模型:QT插件Demo(采用工具EA+CodeEngineer)
 
作者:俎涛(火龙果科技)
  317  次浏览      5 次
 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

 

   
317 次浏览       5
 
相关工具

文档生成器(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进行系统设计与建模

工具新闻
2024年6月 EA v17.0 Beta版发布
2022年11月 EA v16.1的发布说明
2022年11月 EA v16.1正式版介绍
2022年7月 EA v16.05的发布说明
2022年4月 EA16.0 正式版发布
 
最新文章
在EA中内嵌文档- Artifact
EA中模型视图
EA中的实体关系图
使用EA进行风险建模
EA中的项目词汇表
EA的模型导出或导入csv文件
自定义表格(Custom Table)EA中使用
Gap Analysis Matrix(差距分析矩阵)
更多...   
MBSE工具
MBSE平台
建模工具 EA
模型库-Model Center
需求管理-ReqManager
自动建模-Modeler
多级仿真-Sys Simulator
代码工程-Code Engineer
文档生成器-DocGenerator
更多...   
成功案例
广汽研究院 SysML+EA+软件分析设计
高合汽车研发部门 建模工具EA、WebEA、
国汽智联 建模工具EA、模型库、WebEA
亿咖通 MBSE工程体系与工具链咨询
中航无人机 MBSE工具链
吉利汽车 购买EA工具
华科汽车零部件 购买EA工具
东风岚图汽车 购买EA工具 以及EA定制开发
更多...