基于Bert的面向非功能性需求的绿色软件需求工程方法

互联不一般哥 2024-03-13 06:34:02

引用

A. F. Subahi, "BERT-Based Approach for Greening Software Requirements Engineering Through Non-Functional Requirements," in IEEE Access, vol. 11, pp. 103001-103013, 2023, doi: 10.1109/ACCESS.2023.3317798.

论文:https://ieeexplore.ieee.org/document/10256174

摘要

本研究提出了一种全新的机制,用于将软件非功能性需求(NFRs)映射到定义好的绿色软件可持续性维度,包括两个映射步骤:1)在NFRs和可持续性维度之间进行映射;2)在可持续性维度和本文定义的两个绿色IT的聚类之间进行映射。另外,本研究在PROMISE_exp数据集的扩展版本上测试了模型的性能,增加了新的二分类列,将可持续性维度分类为两个定义好的聚类:生态技术和社会经济,并由选定的领域专家标记原始数据。

1 引言

随着技术的快速发展,管理海量数据、同时执行多个任务并保证高性能和高可靠性的需求不断提高。采用具有合适的信息和通信技术(ICT)基础设施的现代信息技术(IT)系统已成为必需。此外,IT在虚拟会议、智能交通系统、决策支持系统、智能医疗应用、机器人技术以及智能城市的智能物联网系统等多个领域发挥着重要作用。值得注意的是,软件和硬件公司一直专注于这些领域的设计和实施,却在很大程度上忽视了用于创建它们的资源的可持续性。这种忽视导致了一个十分严重的问题,该问题可以从两个角度进行分析:1)IT软件;2)可持续性。

在IT软件方面,其后果是造成软件复杂性的指数级增长,从而对软件所有者、利益相关者和软件成本产生负面影响。另一方面,对可持续性也会产生负面影响,具体体现为更多的硬件数量、数据中心以及操作、维护和开发这些系统所需的能源。此外,对经济和社会维度的负面影响也不容忽视。这一负面影响促生了对环境、社会和经济方面影响极小的软件的需求。为了满足这一需求,绿色软件工程研究应运而生,该研究是从不同角度提高软件系统可持续性的核心解决方案。本研究的贡献如下。

首先,本研究提出了一个以概念验证为基础的方法以推动绿色需求工程,即软件系统开发生命周期(SDLC)的关键阶段。尽管已有多项研究利用各种自然语言处理(NLP)和机器学习(ML)技术对软件需求进行分类,但我们的研究将软件的非功能性需求(NFRs)映射到绿色软件可持续性的维度,从而扩展了他们的工作。其次,我们通过增加软件可持续性维度的新特征,扩展了广泛使用的软件工程中的PRedictOr模型(PROMESE)数据集。该数据集用于训练本研究中开发的语言模型。据我们所知,这是第一项在数据集级别展示NFRs与可持续性维度之间关联的研究。第三,我们开发、使用和评估了一种高效的经过精细调整的BERT语言模型,用于将不同类型的NFRs分类到适当的可持续性维度。

2 预训练与数据预处理

本研究的基础为常用的PROMISE语料库的扩展版本PROMISE_exp。本研究使用谷歌搜索引擎搜索需求文件,从在线可获得的需求工程文档中获取不同类型的软件需求。此外,专家们在将新需求添加到仓库之前,对提取的需求进行了验证。这次扩展改进了原始数据集,通过使用支持向量机、决策树学习、k最近邻算法和多项式朴素贝叶斯算法的机器学习技术,对新版本与原始仓库进行评估。

与原始的PROMISE仓库只有625个需求不同,PROMISE_exp包含了969个用自然语言(英语)表达的已标记软件需求。该仓库曾在许多研究中被使用,用于解决软件需求分类的问题。数据集的两个版本都包含三个主要属性:ProjectID、RequirementText和Class。ProjectID属性代表从中提取需求的项目的识别号,RequirementText属性代表在特定项目中表达软件需求的实际文本,而Class属性代表每个RequirementText的分类类型。PROMISE_exp将软件需求分类为FRs和11种NFRs:可用性(US)、可移植性(PO)、法律(L)、可维护性(MN)、可扩展性(SC)、安全性(SE)、可用性(A)、容错性(FT)、外观和感觉(LF)、运行(O)和性能(PE)。

2.1 扩展PROMISE-EXP数据集

在本研究中,为了涵盖提出的软件可持续性测量框架中提到的所有质量属性,我们对PROMISE_exp数据集进行了两个阶段的扩展。首先,我们考虑了三种类型的NFRs——RE、EF和可访问性(AC),并将它们添加到数据集中。这些类型的软件NFRs也可以用来确定软件系统的可持续程度。此外,为了解决PROMISE_exp数据集版本中未考虑的更多NFRs,包括AC、EF、互操作性(IN)和RE,我们向数据集中添加了大量实例。图1中显示的统一建模语言(UML)活动图说明了创建扩展数据集的步骤,包括数据预处理步骤,用于清理、转换和标记数据。

图1:数据集扩展和标注策略

如图1所示,在将新的NFR或FR实例添加到数据集之前执行了一些步骤。在第一步中,通过在线搜索检索了以往几年在与计算机相关的学位或课程中注册的学生毕业项目和论文的公开文档。然后,对所有检索到的论文和项目报告进行分析,只有基于软件/系统开发主题的项目和论文文档被考虑,其余文档被丢弃。

接下来,对所考虑文档的软件/系统需求和分析章节进行了审查,确定并提取了需求句子。对从文档中识别的大多数需求,根据其是功能性需求还是某种类型的NFR进行了分类。只有少量的NFR句子被手动分类为所考虑的NFR类型之一。完成NFR提取和分类步骤后,所有选定的NFR以及FR都经过了软件工程师或计算机科学家的审查和验证,以检查语言的歧义性和正确性。而后,所有经过验证的软件或系统需求都作为新实例添加到数据集中。本研究使用的PROMISE_exp数据集的扩展版本包括1149个需求,分布在69个文档中。其组成如图2(a)所示。

图2(a) 扩展数据集中的非功能性需求分布

图2(b) 应用标签处理后标签中的值分布

作为数据集扩展过程的一部分,数据集中的当前标签列被视为数据集的另一个特征。新的扩展版本被视为未标记的数据。

2.2 数据集标记技术

根据所使用的扩展数据集版本的特性,考虑使用手动标记技术对其进行注释。选择领域专家来逐行审核原始数据并分配适当的标签。这些标签被用作一种有意义且信息丰富的方式,以代表与常见的绿色IT实践相关的软件可持续性的上下文。图3中显示的活动图展示了整个标记过程。

图3:数据集标签处理

2.2.1 标签识别

根据采用的策略将可持续性维度映射到绿色IT,用于表示两类绿色IT因素:生态技术和社会经济。这些新标签将用于NFRs的分类。

标签识别过程始于要求选定的专家对给定的未标记NFR语句做出判断。要求标记者对数据集中的所有NFR语句进行标记,其中“该语句是否表明或暗示对技术或环境可持续性的直接贡献”为真。例如,“应用程序在合理的时间限制内响应”通过不消耗大量电力来对技术和环境可持续性做出贡献,因为它没有因为性能慢而消耗大量电力。后续章节将讨论每种类型的NFR对不同可持续性维度的直接影响。这些影响将被用作标记过程的指导。完成标记后,标签被分发到扩展数据集中,如图2(b)所示。

2.2.2 非功能性需求验证

评估过程包括三个手动步骤,由选定的领域专家执行:1) 评估出现在扩展数据集中的每个NFR对可持续性维度的直接影响;2) 评估每个NFR的语义含义以及其对绿色IT的影响;3) 填写新添加的列,赋予适当的标签值。

2.3 对绿色IT的特征工程

本方法提出了一个系统的特征工程流程,旨在基于扩展数据集中考虑的许多NFRs和质量属性,获得文本可持续性需求的语言特征。在各种可用的特征工程技术中,选择了由Google AI提供的BERT技术。构建BERT模型可以更精确地理解文本的词语语义和句法关系。BERT是利用了两个无监督学习目标,即遮盖语言建模和下一个句子预测进行预训练的。这些目标使BERT能够在不依赖标记数据的情况下深入理解语言结构和语义,使其广泛适用于二进制文本的分类。借助其迁移学习能力,BERT可以取代NLP传统流程。通过最小的微调,BERT模型可以应用于除其训练任务之外的其他任务。因此,开发BERT可能需要的工作量比使用深度学习技术执行传统的NLP处理要少,因为只需要加载预训练的BERT模型并执行微调任务即可。

由于其基于transformer的架构,BERT范式在处理长距离文本依赖关系时提供了更高效的计算和并行性。这些优势超过了其他技术,包括词袋模型、词项频率-逆文档频率、词嵌入、循环神经网络和长短期记忆网络。在本研究中,使用Python库scikit-learn(sklearn)来实现数据预处理和特征提取策略。另外还使用了PyTorch——Python中另一个功能强大的多用途库,用于张量计算。PyTorch提供了一种动态和用户友好的方法,用于模型部署和数据集训练。

图4中展示的UML活动图展示了本研究中设计的BERT的NLP流水线。首先,将数据集转换为PyTorch数据框,并分为训练集和验证集。然后,上传BERT分词器,并用于将每个NFR文本转换为BERT标记。所有标签都转换为数值。之后,创建训练和测试数据集。接下来,使用加载的BERT模型应用序列分类步骤。然后,在确定适当的训练参数来微调BERT模型后,创建训练器。最后,计算整体BERT分类器的准确性,用于进一步预测。

图4:BERT模型的开发和训练步骤

3 主方法

本方法的主要创新在于采用广泛使用的可持续性维度,并进行以下步骤来解决NFRs和绿色IT方面之间的联系问题:1)识别四个可持续性维度和NFRs之间的映射;2)识别四个可持续性维度和绿色IT方面之间的映射;3)开发和训练BERT模型;4)通过额外的绿色IT特征扩展和标记数据集。值得注意的是,目前尚无包含与NFRs相关的可持续性特征的数据集,也没有可供比较的类似方法。这是本方法的另一个优势。方法将从如下两个方面进行介绍:1)将NFRs映射到可持续性维度;2)将可持续性维度映射到绿色IT。

3.1 将NFRs映射到可持续性维度

软件的非功能性需求(NFRs)与整体绿色可持续性之间存在显著关系,因为它们可以直接和间接影响软件系统的环境。通过考虑NFRs对软件可持续性的直接影响,可以通过其中的各种维度开发更具可持续性和环保性的软件。接下来本文将讨论各个软件可持续性维度与对整体可持续性有直接影响的每种NFR类型之间的映射关系。

3.1.1 将环境软件可持续性映射到相关的非功能性需求

软件系统的环境可持续性高度依赖于NFRs,即软件质量属性,例如性能、安全性和可扩展性。随着对监测、预测和管理环境过程的环境软件应用的使用增加,确保这些系统具有资源和能源效率变得至关重要。此外,性能优化还可以减少计算需求和能源消耗,有助于减少这些应用程序的环境足迹。本研究在评估软件的环境可持续性定义与每种NFR类型的定义之后,开发了NFR类型与环境软件可持续性之间的详细映射(详见表1)。值得注意的是,本研究只考虑对环境可持续性有直接影响的NFR类型。

表1:NFR类型和它们对软件环境可持续性的直接影响

3.1.2 将技术软件可持续性映射到相关的非功能性需求

NFRs对于软件的技术可持续性至关重要。随着软件系统和应用程序变得越来越复杂,并嵌入到多个领域中,确保它们的长期技术可持续性至关重要。系统应当能够适应不断变化的需求,并随着时间的推移不断发展,同时降低技术淘汰的风险。

在评估了每种NFR类型的定义与软件技术可持续性的定义相对比之后,本研究开发了NFR类型与软件技术可持续性之间的详细映射(详见表2)。值得注意的是,本研究只考虑对技术可持续性有直接影响的NFR类型。

表2:NFR类型和它们对软件技术可持续性的直接影响

3.2 将软件可持续性维度映射到绿色IT

软件可持续性的各个维度从不同的角度对绿色IT实践产生重要影响。在提出的映射中,软件可持续性的四个维度被聚合成两个因素组(如图5所示):1)生态技术因素将可持续性的技术和环境(生态)维度结合起来——该因素强调以一种促进软件环境可持续性和效率的方式高效地开发和应用技术;2)社会经济因素结合了可持续性的社会和经济维度,指的是在个人和社区层面社会和经济因素之间的相互关系,强调了在各种环境中考虑二者之间的联系,以及其对用户行为和组织的影响。

图5:用于开发和训练BERT模型的四个软件可持续性维度的因素分组

4 实验

4.1 实验概览

本实验旨在评估BERT模型对定义的两类软件绿色可持续性进行分类的可行性和能力。具体体现为在不同性能指标中达到的最高得分。值得注意的是,本实验的目标是验证概念和方法,而不是找到最佳的语言模型。

在评估实验中,数据集被分为训练集(70%)和测试集(30%)。本实验考虑了一种超参数调优策略,以优化开发的BERT模型的性能,其中包括两个关键参数——epoch数和batch大小。模型在多个epoch数上进行训练,范围分别为从1到5、从8到12。两种batch大小分别为8和16。另外,本实验在训练过程中使用Adam优化。值得注意的是,这里的“batch大小”指的是在训练过程中用于单次更新的训练样本数量,它会影响模型的性能。

为了量化模型的性能及其从不同方面提供正确预测的能力,本实验考虑了四个常见的指标——准确率、精确率、召回率和F1分数,这些指标用于在验证集上来监视BERT模型的性能。

为了避免过拟合问题,我们使用特定的random_state值来控制训练和测试数据的随机拆分,以确保拆分是可重现的。

4.2 数据分析

本研究采用混淆矩阵以描述所开发的分类模型的性能。如图6所示,我们将社会经济标签定义为负类,生态技术标签定义为正类。使用8个epoch和batch大小为8时,混淆矩阵显示出120个社会经济实例被准确检测出,而有11个案例被预测为生态技术,但实际上是社会经济。此外,35个生态技术实例被正确识别,而有19个实例被错误预测为社会经济(图6(a))。然而,使用8个epoch和batch大小为16时,混淆矩阵显示出121个社会经济实例被正确识别为社会经济,而有10个社会经济实例被错误识别为生态技术。此外,13个生态技术实例被错误识别为社会经济,而有39个生态技术实例被正确识别(图6(b))。

图6(a) 不同epoch和batch下BERT性能的混淆矩阵表示

图6(b) 不同epoch和batch下BERT性能的混淆矩阵表示

表3和表4代表了开发的BERT模型在多个epoch数以及两种batch大小(8和16)下的性能指标。这些表格显示,随着epoch数的增加(从1到12),无论batch大小如何,模型的性能整体上都有所提高,表现为准确率、精确率、召回率和F1分数的增加。在batch大小为8的情况下,记录的最佳性能指标结果是在8个epoch下实现的。随着epoch数的增加,准确率从72.6%增加到84.70%,反映出模型正确预测两类绿色IT因素的能力得到了改善。这是一个不错的准确率,但准确率有时会具有误导性,特别是在类别不平衡的情况下。

表3:batch大小为8时,各epoch下的性能指标

表4:batch大小为16时,各epoch下的性能指标

关于模型正确预测环境技术类的能力,这被视为正类(标签概率为1),性能随着epoch数的增加略有改善,由精确率比从80.23%增加到84.32%。此外,模型84.70%的时间能够正确识别生态技术类。这个百分比反映了敏感性指标(召回率)的比率。

由于使用不平衡数据集时,准确率指标的性能得分可能具有误导性,因此F1分数被认为是一个更好的指标,它是精确率和召回率的调和平均值。表5中可以观察到F1比率的显著提高(从7.41%增加到71.43%),这反映了模型以较低的误报率准确识别生态技术样本的能力。这个分数被认为是相当不错的,但表明精确率和召回率之间可能存在一些不平衡。

类似地,对于批量大小为16的情况,记录的最佳性能指标结果是在8个epoch下实现的。准确率比随着epoch数的增加从71.58%增加到87.43%,反映出模型能够更准确地分类两种绿色IT因素。此外,精确率和F1分数都显著提高,精确率从51.24%增加到87.26%,F1分数从0%增加到77.23%,表明模型的性能是令人满意的。

总之,在第二种情况下,批量大小更大,所有性能指标得分都有所提高。特别是,F1比率从71.43%增加到77.23%。这表明模型在分类社会经济和环境技术实例方面的性能得到了改善。关于混淆矩阵,第二种情况下的误分类较少。误报的数量(被错误预测为环境技术的实例)略有减少,从11个减少到10个,误判的数量(被错误预测为社会经济的实例)也从17个减少到13个。

4.3 实验发现

从上述结果可以得出以下结论:

1)从8到16的batch大小增加提高了模型的性能,这在所有评估指标中都有所体现。

2)在第二种情况下,使用更大的batch大小,模型正确分类社会经济和环境技术实例的能力得到了提高。

3)第二种情况下假阳性和假阴性的减少表明模型改善了其准确预测的能力,避免了错误预测。

4)在两种情况下,假阴性的数量都高于假阳性的数量。这表明模型更有可能将环境技术实例错误地分类为社会经济而不是相反。

5)在两种情况下,F1比率略低于其他指标,这意味着可以通过进一步优化模型以获得更高的F1分数来实现改进的机会。

转述:邹英龙

0 阅读:0

互联不一般哥

简介:感谢大家的关注