
-
生物通官微
陪你抓住生命科技
跳动的脉搏
基于类图度量的软件缺陷预测:机器学习与深度学习方法在软件设计阶段的应用
【字体: 大 中 小 】 时间:2025年07月03日 来源:Array 2.7
编辑推荐:
为解决软件开发生命周期(SDLC)早期阶段缺陷预测的难题,研究人员通过逆向工程构建模型级度量数据集,采用ML/DL技术对类图进行缺陷分类。结果表明,基于设计阶段的模型性能与代码级方法相当,AUC达68.12%,为降低软件维护成本提供了新思路。
在当今高度信息化的社会中,软件质量已成为影响企业运营和用户体验的关键因素。然而,传统缺陷检测方法主要集中在实现和测试阶段,导致后期修复成本高昂——据统计,设计阶段产生的缺陷若未被及时发现,其修复成本可能比实现阶段高出100倍。这种"缺陷放大效应"促使学术界寻求更早期的预测方案,但现有研究多局限于代码层面的分析,对设计阶段类图(Class Diagram)的缺陷预测仍存在明显空白。
针对这一挑战,研究人员开展了一项开创性研究,首次将机器学习(ML)和深度学习(DL)技术应用于类图级别的缺陷预测。该研究通过逆向工程(Reverse Engineering)从著名的Unified Bug Dataset(包含82个开源Java项目)中提取类图特征,构建了包含24项设计度量(Design Metrics)的新型数据集。采用随机森林(RF)、XGBoost等8种算法进行训练后,模型在准确率(Accuracy)和F1值等指标上展现出与代码级方法相当的预测能力,其中Extra Tree(ET)模型的F1-score达到69.47%,AUC为68.12%。这项发表于《Array》的研究,为软件工程领域提供了首个可应用于设计阶段的大规模缺陷预测框架。
关键技术方法包括:1) 使用AltovaUML工具从源代码逆向生成类图;2) 采用SDmetrics工具提取24项对象导向设计(OOD)度量指标;3) 应用SMOTE算法处理数据不平衡问题;4) 通过KerasTuner进行超参数优化;5) 采用交叉数据集验证评估模型泛化能力。
研究结果部分:
3.1 数据集构建与度量指标
通过逆向工程创建的模型数据集包含67,406个样本,覆盖Promise等5个子数据集。重点选取了反映类规模(NumAttr)、继承关系(DIT)和耦合度(EC_Attr)的三类24项指标,如类属性数(NumAttr)和继承深度(DIT)等。
3.2 模型训练
对比标准化与重采样技术发现,SMOTE过采样使LR模型的AUC提升10%。超参数调优后,XGBoost在max_depth=20、learning_rate=0.1时取得最佳表现,F1-score达68.64%。
4.2 模型性能
RF模型在ROC曲线分析中表现最优,AUC为67.17%。值得注意的是决策树(DT)展现出优于MLP的泛化能力,而TabTransformer存在过拟合现象。
4.3 与代码级模型对比
使用相同Unified数据集时,模型级方法的平均AUC(66.48%)仅比代码级(70.49%)低4个百分点,证明设计阶段指标具有可比预测价值。
4.4 泛化能力验证
跨数据集测试显示,在Promise上训练的RF模型应用于BugCatchers时,仍保持62.3%的平均召回率(Recall),证实方法具备工程实用性。
结论与讨论指出,这项研究实现了三大突破:首次建立类图级缺陷预测方法体系;创建首个面向设计阶段的大规模度量数据集;验证了ML/DL在早期缺陷预测中的适用性。尽管存在匿名类匹配率不足等局限,但该成果为SDLC前移提供了关键技术支撑。未来研究将扩展至序列图(Sequence Diagram)等UML模型,并探索Transformer架构在设计缺陷检测中的应用潜力。作者Batnyam Battulga强调,这项工作标志着软件质量保障从"事后检测"向"预防为主"的重要转变。
生物通微信公众号
知名企业招聘