大型语言模型与模型驱动逆向工程在程序逆向工程中的对比研究及融合方法探索

【字体: 时间:2025年07月26日 来源:Frontiers in Computer Science 2.7

编辑推荐:

  这篇综述对比了大型语言模型(LLM)与模型驱动逆向工程(MDRE)在从Java/Python代码抽象OCL(Object Constraint Language)规范中的表现,提出结合两者的LLM4Models方法,显著提升了规范生成的准确性(F1分数提高30%)和显式风格占比(达100%),为软件现代化提供了高效、低门槛的逆向工程解决方案。

  

1 引言

逆向工程(Reverse-engineering)是从软件中提取设计或需求信息的过程,而再工程(Re-engineering)则基于这些抽象构建新版本。本文聚焦于通过模型驱动逆向工程(MDRE)和机器学习(ML)方法从Java/Python代码生成UML/OCL规范,比较其语义质量和再工程适用性。

2 材料与方法

2.1 LLM在逆向工程中的应用
通用LLM(如GPT-4)虽能生成OCL,但存在语法错误、隐含风格(仅描述结果而非过程)等问题。研究通过QLoRA技术对Mistral-7B进行微调,使用AgileUML生成的20,580组Java和25,684组Python代码-OCL配对数据训练,得到专用模型LLM4Models。其提示词明确要求生成无冗余、显式风格的OCL,例如:

复制
context EQUILIBRIUM_INDEX_OF_AN_ARRAY_1::M209 activity: ( var sum : int := 0; for i in 0..n-1 loop sum := sum + arr[i] )

2.2 AgileUML工具
作为MDRE代表工具,AgileUML通过CSTL脚本匹配抽象语法树(AST)规则,将代码转换为显式OCL,支持扩展类型(如OclFile库)。其优势在于高精度,但依赖MDE专业知识。

2.3 OCL扩展的必要性
标准OCL缺乏程序语义表达所需特性(如循环、异常处理),AgileUML引入过程式语句(表1)和扩展库(如OclRandom),使规范更贴近代码逻辑。

2.5 评估指标
采用完整性(召回率)、一致性(精确率)和F1分数衡量质量,同时区分规范形式:

  • 隐含风格:仅声明结果(如result = arr→sum()
  • 显式风格:详细描述计算过程(如for循环)

3 结果

Python案例对比(表4):

  • LLM4Models的F1达0.91,显式规范占比100%,优于GPT-4(F1=0.65,显式占比0%)。
  • 典型错误:GPT-4常添加多余约束(如n > 0),而AgileUML偶发类型推断失败。

Java案例对比(表5):

  • LLM4Models完整性(0.98)超过AgileUML(0.95),但一致性略低(0.96 vs. 0.99)。
  • 图3-4显示,LLM4Models在复杂循环(如计算非递减数)中能正确使用while而非iterate,更易理解。

4 讨论

4.1 方法对比

  • MDRE:高一致性但覆盖有限(表6-7),如Python动态类型处理不足。
  • LLM微调:通过数据学习AgileUML规则,泛化能力更强,但需防范过拟合。

4.2 相关研究

  • MDRE:早期研究(如Bowen等)依赖手工规则,OMG的ADM框架标准化了KDM/ASTM模型,但工具链复杂。
  • ML翻译:Transcoder利用中间表示提升语义感知,而LLM4Models通过微调实现跨语言抽象。

4.4 创新点
首次将MDRE规则注入LLM,实现“零配置”逆向工程,用户仅需输入代码即可获得可再工程的显式OCL,降低了对MDE技术的依赖。

4.6 未来方向
扩展至COBOL/VB等传统语言,并引入动态验证(如测试用例)进一步提升可靠性。

(注:全文数据与案例来自公开数据集AVATAR/CoTran,确保可复现性。)

相关新闻
生物通微信公众号
微信
新浪微博
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号