软件需求对后续开发阶段至关重要,因为所有其他阶段都依赖于它们。将软件需求分为功能需求和非功能需求是一种成熟的实践。已经提出了多种机器学习算法、技术和策略来对软件需求进行分类。相比之下,非功能需求的分类受到的关注较少。非功能需求的分类取决于上下文,需要领域知识和专业知识,这可能导致在开发过程中后期才发现非功能需求。然而,早期识别非功能需求有助于定义系统的质量属性,将其纳入早期架构设计中可以带来高质量的产品和客户满意度。
本研究重点利用迁移学习改进非功能需求的识别和分类。先前的研究已经表明,与基于非迁移学习的方法相比,使用预训练模型(如BERT和XLNet)对非功能需求进行分类取得了有希望的结果(Khan, Khan, Ahmad, & Huda, 2023)。然而,缺乏针对非功能需求的特定领域模型仍然是一个挑战。
迁移学习涉及将预训练模型应用于新的、未见过的问题(Ferrari, Dell’Orletta, Esuli, Gervasi, & Gnesi, 2017),这在需求工程中特别有用,因为通常无法获得用于训练的监督数据集。正如Zhao等人(2021)的报告所述,预训练模型在多种需求工程相关任务中非常有效。在需求工程领域缺乏预训练模型。BERT是一种通用语言模型,它在大量的Wikipedia和书籍语料库上进行训练(Devlin, Chang, Lee, & Toutanova, 2019),并已被用于多项软件需求分类研究。Hey等人(Hey, Keim, Koziolek, & Tichy, 2020)对BERT模型进行了微调以进行软件需求分类,取得了有希望的结果。Li等人(Li, Shi, Yang, & Wang, 2020)对BERT基础模型进行了微调以进行需求识别和注释,达到了91%的精确度和83%的召回率。Wang等人(Wang, Shi, Li, Wang, & Yang, 2020)对BERT基础模型进行了微调以预测软件需求,达到了96%的召回率。Araujo和Marcacini(2021)提出的RE-BERT专注于通过微调BERT基础模型从应用评论中提取软件需求,取得了62%的F1分数。实证结果表明,这些方法始终优于传统的非迁移学习方法。
然而,目前大多数需求工程研究都集中在对BERT模型进行微调上。由于数据领域分布的差异,直接对原始BERT模型进行微调以进行软件需求分类的效果较差。因此,需要在一个基于软件需求规范文档的模型上进行训练。软件需求文档包含许多主要由需求工程社区理解的领域特定术语。本研究提出了RequiBERT模型,这是一个基于软件需求规范文档的领域特定预训练模型。RequiBERT模型在3000万个功能和非功能需求样本上进行了训练,专门用于支持软件需求的分类。RequiBERT采用了掩码语言模型技术进行训练。实现RequiBERT分词器的算法是字节对编码(BPE)。通过在一个标记数据集上对模型进行微调,一项实验研究评估了RequiBERT的有效性和可迁移性。RequiBERT在软件需求分类任务中优于基于迁移学习和非迁移学习的方法。
本文的总体贡献如下:
•提出RequiBERT是一个用于分类软件需求的领域特定预训练模型。
•解决需求工程中监督数据集有限的挑战。
•展示RequiBERT使用小型监督数据集的微调能力,以创建一个先进的、稳健的软件需求分类模型。
•分析RequiBERT在不同分类任务上的稳健性,包括二分类、减少的非功能需求集以及原始PROMISE存储库中的所有非功能需求集。
本文的其余部分组织如下:第2节介绍相关工作,第3节演示所提出的RequiBERT模型,包括该模型在非功能需求分类任务中的应用,第4节对RequiBERT模型与最先进方法进行比较分析。最后,第5节总结本研究。