
-
生物通官微
陪你抓住生命科技
跳动的脉搏
大型语言模型与模型驱动逆向工程在程序逆向工程中的对比研究及融合方法探索
【字体: 大 中 小 】 时间:2025年07月26日 来源:Frontiers in Computer Science 2.7
编辑推荐:
这篇综述对比了大型语言模型(LLM)与模型驱动逆向工程(MDRE)在从Java/Python代码抽象OCL(Object Constraint Language)规范中的表现,提出结合两者的LLM4Models方法,显著提升了规范生成的准确性(F1分数提高30%)和显式风格占比(达100%),为软件现代化提供了高效、低门槛的逆向工程解决方案。
逆向工程(Reverse-engineering)是从软件中提取设计或需求信息的过程,而再工程(Re-engineering)则基于这些抽象构建新版本。本文聚焦于通过模型驱动逆向工程(MDRE)和机器学习(ML)方法从Java/Python代码生成UML/OCL规范,比较其语义质量和再工程适用性。
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循环)Python案例对比(表4):
n > 0),而AgileUML偶发类型推断失败。Java案例对比(表5):
while而非iterate,更易理解。4.1 方法对比
4.2 相关研究
4.4 创新点
首次将MDRE规则注入LLM,实现“零配置”逆向工程,用户仅需输入代码即可获得可再工程的显式OCL,降低了对MDE技术的依赖。
4.6 未来方向
扩展至COBOL/VB等传统语言,并引入动态验证(如测试用例)进一步提升可靠性。
(注:全文数据与案例来自公开数据集AVATAR/CoTran,确保可复现性。)
生物通微信公众号
知名企业招聘