Page 25 - 《软件学报》2025年第5期
P. 25
董黎明 等: 结合主动学习和半监督学习的软件可追踪性恢复框架 1925
pseudo-labeled samples, STRACE(AL+SSL) effectively harnesses unlabeled data to address data-related challenges. Multiple comparative
experiments are conducted with nearly one million issue-commit trace pair samples from 10 different enterprise projects. The results of
these experiments validate the effectiveness of the proposed framework for real-world software traceability recovery tasks. The ablation
results show that the unlabeled samples selected by the active learning in STRACE(AL+SSL) play a crucial role in the traceability
recovery task. Additionally, the optimal combination of sample selection strategies in STRACE(AL+SSL) is confirmed. This includes
CBST-Adjust for the semi-supervised sample rebalancing strategy and SMI_Flqmi, which is recognized for its cost-effectiveness and
efficiency in active learning.
Key words: software traceability; active learning; semi-supervised learning
软件可追踪性对于管理软件开发过程、降低软件复杂性成本都至关重要 [1,2] . 从相关研究中不难发现, 软件可
追踪性与不同环节发挥着不同的作用, 例如在微服务架构中维护软件制品间可追踪性有利于拆分服务和识别不再
需要的服务 [3] . 此外软件可追踪性若缺失则使得开发人员难以明确代码所有权, 从而导致相同的功能被实现多次 [4] ,
软件复杂性和维护成本进一步增加. 在测试环节, 通过分析测试用例中哪些需要重写或简化, 以及增加测试覆盖
度, 有助于推荐质量膨胀的需求 [5] . 然而, 随着软件项目的演进, 保持高质量的软件可追踪性链接是一个代价高昂
的过程 [6] . 因此, 相关研究开始关注软件可追踪性的自动化方法 [7] .
近年来, 软件可追踪性恢复模型大多都基于机器学习方法, 相关研究通过在开源项目或可追踪性领域内公开
数据集上的实验取得了较为理想的效果. Mills 等人 [8] 提出了可追踪性分类模型 TRAIL, 通过组合对比 6 种特征选
择算法、4 种数据重采样方法和 6 种分类算法, 总结出了预测制品间跟踪链接的分类模型的最佳配置组合, 即: 使
用 Pearson 相关性方法做特征选择, 使用过采样方法 (synthetic minority oversampling technique, SMOTE) 做数据
[9]
重采样, 使用随机森林 (random forest, RF) 作为分类算法可以得到最佳模型效果, 相关结果在 11 个可追踪性领域
常用数据集上得到了有效验证. Rath 等人 [10] 提出了缺陷-commit 跟踪链接恢复和推荐的随机森林模型, 通过挖掘
制品之间的人员关系、时间关系和前后追踪关联关系等过程信息, 选择了 16 项过程特征和 2 项文本相似性特征.
通过在 6 个开源项目上展开一系列实验发现, 推荐跟踪链接任务上平均召回率, 即 Top 3 的召回率 Recall 达到
96%, 精确率 Precision 达到 33%. 恢复跟踪链接任务上 6 个项目的精确率均高于 89%, 召回率平均为 50%. 当然近
几年也有一部分研究工作, 逐渐开始应用工业界项目进行相关方法的验证, 也取得了一定进展 [11−14] . Guo 等人 [13]
利用 RNN 模型提出了一个基于深度学习的可追踪性模型, 模型使用了从交通控制系统中收集到的小型数据集进
行验证, 用于恢复子系统需求和设计定义之间的链接关系. 此外, 通过多维度度量制品文本相似性, 结合开发人员
的反馈和传播链接机制, Moran 等人 [12] 实现了可追踪性贝叶斯层次化概率模型 (Comet), 他们在 Cisco 公司的一个
小型项目上验证了该模型, 并开发了基于 Jenkins 的可追踪性链接推荐插件.
然而, 本文发现, 基于学习式的可追踪恢复技术在企业级项目中的实验效果和应用突破仍然面临挑战. 由于复
杂的企业项目中, 软件制品间可追踪性质量问题更为严峻, 因此企业项目对于可追踪性恢复自动化实践需求更为
紧迫. 企业项目中, 软件方法、使用语言、组织团队的更新迭代十分频繁, 由此造成软件制品频繁演化, 不同制品
(如需求文档、缺陷报告、测试用例和源代码等) 之间的潜在的跟踪链接规模很大, 高质量的跟踪链接很难通过人
为手段恢复和维护. 又因为历史数据中制品间存在的关联的链接比例太低, 导致有标签样本非常稀缺, 所以难以构
建有效的制品间的跟踪链接预测模型以提高软件可追踪性质量.
其次, 软件可追踪性是将不同制品进行匹配, 从而判断他们之间是否存在链接, 而“真”“假”链接的比例过于悬
殊就会使得样本数据中的不平衡性增加. 例如一个需求或缺陷 (源制品) 可以追溯到一个或多个代码提交记录 (目
标制品), 因此源制品生命周期中生成的所有潜在代码提交都被选择为目标制品. 在工业环境中, 往往由于紧张的
交付周期使得代码提交更频繁, 则很大比例的与源制品不存在关联关系的代码提交将被选择作为其候选目标制
品. 在以往的研究中, 很少对软件可追踪性的数据不平衡问题提出过针对性的解决方案.
主动学习和半监督学习的共性是都利用到了未标注的数据和已标注的数据, 从而提高模型的学习能力. 而真
实企业项目中, 可追踪性比例低的问题恰好可以提供较多的未标注数据. 本文在前期相关研究基础上 [10] , 在可追
踪性框架中同时结合了主动学习和半监督学习这两种学习策略, 选择未标注数据更新训练集, 并调整其中的样本