CN117193823A - 一种软件需求变更的代码工作量评估方法、***及设备 - Google Patents
一种软件需求变更的代码工作量评估方法、***及设备 Download PDFInfo
- Publication number
- CN117193823A CN117193823A CN202311167843.6A CN202311167843A CN117193823A CN 117193823 A CN117193823 A CN 117193823A CN 202311167843 A CN202311167843 A CN 202311167843A CN 117193823 A CN117193823 A CN 117193823A
- Authority
- CN
- China
- Prior art keywords
- software
- code
- data set
- change
- requirement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000008859 change Effects 0.000 title claims abstract description 100
- 238000000034 method Methods 0.000 title claims abstract description 70
- 239000013598 vector Substances 0.000 claims abstract description 55
- 238000012549 training Methods 0.000 claims abstract description 30
- 238000010801 machine learning Methods 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 238000003860 storage Methods 0.000 claims description 5
- 108091081062 Repeated sequence (DNA) Proteins 0.000 claims description 4
- 230000015654 memory Effects 0.000 claims description 4
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000011002 quantification Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 19
- 230000018109 developmental process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000011156 evaluation Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 235000012054 meals Nutrition 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011158 quantitative evaluation Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000011524 similarity measure Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件需求变更的代码工作量评估方法、***及设备,评估方法包括将需求变更前后的软件需求与编程语言输入至预训练的机器学习模型中,获得需求变更前后的代码行数;对比需求变更前后的代码行数,获得工作量变化结果;其中,所述机器学习模型的训练方法包括:构建以软件需求、编程语言和代码行数为记录的数据集;优化所述数据集中的软件需求,获得句向量;构建以所述句向量、编程语言和代码行数为记录的优化数据集;将所述优化数据集输入至搭建的回归模型中,获得机器学习模型。本申请通过将软件需求与代码量链接,实现了需求与成果有效量化,通过对比需求变更前后的代码行数,清楚的展示了工作量的变化情况。
Description
技术领域
本发明涉及软件开发技术领域,具体涉及一种软件需求变更的代码工作量评估方法、***及设备。
背景技术
软件需求是软件开发过程中不可或缺的重要部分,随着软件***规模的扩大,需求分析与定义在整个软件开发与维护过程中越来越重要,直接关系到软件的成功。需求变更是因为需求发生了新的变化。需求变更的出现主要是因为在项目的需求确定阶段,用户往往不能确切地定义自己需要什么。随着开发工作的不断进展,用户对***的了解也逐步深入。随着了解得越多,新的要求也就越多,需求变更因此不可避免地一次又一次出现。软件需求的变更会导致工作内容发生很大变化,特别是涉及到代码层面的工作量发生变化。因此需要有明确的需求变更控制过程,评估预测因为软件需求变更而导致的工作量变化情况。否则很可能造成项目进度拖延、成本不足、人力紧缺,甚至导致整个项目失败。
目前现有的软件需求变更控制过程中,需要人工去评估需求变更后的工作量变化情况,存在着两个方面的问题。一方面是在流程上依赖于人的经验,主观性强,没有办法形成一个客观的判断依据,难以科学评估与预测。另一方面是没有有效利用过去软件开发过程的经验数据,容易忽略实际软件开发过程中的问题与风险,评估不够全面,准确性低。因此,提供一种可以基于过去软件开发过程经验的智能化软件需求变工作量评估方法非常重要。
如公开号为CN201910920661.9的专利申请提出了一种结合软件开发质量信息的软件可靠性定量评估方法,评估了软件的可靠性,但是其没有对软件需求进行分析。公开号为CN202011529315.7的专利申请提出了一种***级软件需求处理方法,对需求进行了流程化处理,但是不能对需求变更带来的影响进行有效处理。
发明内容
本发明的目的在于提供一种软件需求变更的代码工作量评估方法、***及设备,以解决现有技术中软件需求变更后工作量变化难以评估预测的问题。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本申请公开了一种软件需求变更的代码工作量评估方法,包括:
将需求变更前后的软件需求与编程语言输入至预训练的机器学习模型中,获得需求变更前后的代码行数;对比需求变更前后的代码行数,获得工作量变化结果;其中,所述机器学习模型的训练方法包括:
构建以软件需求、编程语言和代码行数为记录的数据集;
优化所述数据集中的软件需求,获得句向量;构建以所述句向量、编程语言和代码行数为记录的优化数据集;
将所述优化数据集输入至搭建的回归模型中,获得机器学习模型。
进一步地,优化所述数据集中的软件需求,获得句向量包括:
将软件需求的语句s进行分词处理,获得子词序列x;
对所述子词序列x进行单词重复操作,获得子词重复序列x+;
将所述子词序列x和子词重复序列x+分别输入至带Dropout的Bert模型中,将同一语句获得的两个向量h和h+作为正例对,其余向量作为负例对;
将所述正例对和负例对输入至通过Transformers训练的对比学习模型中,获得句向量。
进一步地,对所述子词序列x进行单词重复操作,获得子词重复序列x+包括:
定义子词序列x中重复子词的数量;
按重复子词的数量采用均匀分布的形式在所述子词序列x中随机选取需要重复的子词,获得重复集合;
将重复集合中的子词合并至所述子词序列x中获得子词重复序列x+。
进一步地,所述重复子词的数量dup_len的取值范围为:
dup_len∈[0,max(2,int(duprate*N))];
其中,duprate为重复比例的超参数,N为句子长度,int()为取整函数,max()为求最大值函数。
进一步地,所述重复集合dup_set的表达式为:
dup_set=uniform(range=[1,N],num=dup_len);
其中,uniform()为均匀分布函数。
进一步地,所述回归模型为CNN-LSTM回归模型,所述CNN-LSTM回归模型包括依次设置的输入层、一维卷积层、两个LSTM层、全连接层和输出层。
进一步地,构建以软件需求、编程语言和代码行数为记录的数据集包括:
收集历史软件项目的软件需求以及编程语言和代码行数,获得历史数据;
将所述历史数据以软件需求、编程语言和代码行数为记录进行数据集的构建,并采用编号代表所述编程语言,获得数据集。
第二方面,本申请公开了一种软件需求变更的代码工作量评估***,包括:
结果生成模块,用于将需求变更前后的软件需求与编程语言输入至预训练的机器学习模型中,获得需求变更前后的代码行数;对比需求变更前后的代码行数,获得工作量变化结果;
模型训练模块,用于构建以软件需求、编程语言和代码行数为记录的数据集;以及用于
优化所述数据集中的软件需求,获得句向量;构建以所述句向量、编程语言和代码行数为记录的优化数据集;以及用于
将所述优化数据集输入至搭建的回归模型中,获得机器学习模型。
第三方面,本申请公开了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如第一方面任一所述的方法。
第四方面,本申请公开了一种计算机设备,包括:
存储器,用于存储指令;
处理器,用于执行所述指令,使得所述设备执行实现如第一方面任一项所述的方法的操作。
根据上述技术方案,本发明的有益效果为:
本申请的机器学习模型可将软件需求和编程语言转换成代码行数,通过将软件需求与代码量链接,实现了需求与成果有效量化,解决软件需求本身以文档、文字的形式呈现,难以量化工作量的情况;通过对比需求变更前后的代码行数,清楚的展示了工作量的变化情况;
本申请的机器学习模型采用优化数据集训练获得,优化数据集采用对数据集中的软件需求优化获得句向量的形式,采用此设计不仅保留了语义信息,还解决了相似语义训练模型时容易出现偏差的问题;
本申请使用软件需求语义变化情况,来评估软件需求变更导致的代码工作量变化,解决了因代码行数波动性强导致的预测代码行数困难的问题。
附图说明
图1为申请评估方法的流程图;
图2为软件需求向量化方法示意图;
图3为CNN-LSTM回归模型结构图;
图4为本申请评估方法的具体流程框图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
本发明的目的是为软件开发过程中产生的需求变更问题,提出一种软件需求变更的代码工作量评估方法。基于语义变化去量化需求变更的复杂情况,结合变更需求导致的代码工作量变化情况,进行智能化、规范化、客观化的软件需求变更后工作量的评估与预测。
实施例1
如图1所示,本申请公开了一种软件需求变更的代码工作量评估方法,包括:将需求变更前后的软件需求与编程语言输入至预训练的机器学习模型中,获得需求变更前后的代码行数;对比需求变更前后的代码行数,获得工作量变化结果;其中,所述机器学习模型的训练方法包括:构建以软件需求、编程语言和代码行数为记录的数据集;优化所述数据集中的软件需求,获得句向量;构建以所述句向量、编程语言和代码行数为记录的优化数据集;将所述优化数据集输入至搭建的回归模型中,获得机器学习模型。
本申请的机器学习模型可将软件需求和编程语言转换成代码行数,通过将软件需求与代码量链接,实现了需求与成果有效量化,解决软件需求本身以文档、文字的形式呈现,难以量化工作量的情况;通过对比需求变更前后的代码行数,清楚的展示了工作量的变化情况。
下面结合附图4的流程对本申请进行进一步说明。
首先,对本申请设计的缩略语进行解释。
缩略语:Bert(Bidirectional Encoder Representation from Transformers)一种预训练模型。
SimCSE(Simple Contrastive Learning of Sentence Embeddings)是一种简单的对比学习框架,极大地提升了句子嵌入(句向量)的特征效果。
Dropout随机丢弃。深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。
CNN(Convolutional Neural Networks)卷积神经网络。
LSTM(Long Short-Term Memory)一种时间循环神经网络。
Keras一个由Python编写的开源人工神经网络库。
MSE(mean-square error)均方误差,反映估计量与被估计量之间差异程度的一种度量。
本发明提出软件需求变更的代码工作量评估方法,其中主要包括数据集构建、软件需求向量化、回归网络模型训练和代码工作量预测四个部分。
整体流程为:首先,进行软件需求、编程语言以及代码行数等数据的收集,完成数据集的构建;然后使用类似SimCSE模型的句向量模型,使用中文***语料库进行训练,获取训练完成的句向量模型后,将软件需求文本向量化;接下来构建回归神经网络模型,将软件需求向量和编程语言作为网络输入;最后通过预测软件需求变更前后的代码工作量情况,对软件需求变更产生的工作量情况进行评估。
第一部分,数据集构建。
基于软件需求变更进行代码量的评估,需要构建需求与代码数量的数据集。软件需求与代码通常是一对一的关系,一个软件项目的软件需求文档对应了一个代码工程仓库。为保证代码数量的有效性,只选取符合编程规范的项目作为数据集。统计每一个项目需求文档所对应的代码行数,以及项目进行过程中的需求变更造成的代码行数的变化情况,形成以<软件需求,主要编程语言,代码行数>为一条记录的数据集。其中软件需求是多句子的文本,主要编程语言记录为该语言的编号,代码行数为正整数。将数据集分为训练集和验证集,用来进行模型训练测试。
具体实现如下:
步骤1.1:收集数据。收集历史软件项目的软件需求以及编程语言和代码行数,将收集到的数据汇总。
步骤1.2:数据集构建。将收集到的数据构建为数据集,以<软件需求,编程语言,代码行数>为一条记录。其中软件需求部分为文本格式。编程语言部分表示在软件工程中占比最高的编程语言,通过查表(见表1)使用编号代表主要编程语言,表中包含大多数主流编程语言。代码行数部分为正整数数字,统计行数时不统计空行,并且要求代码符合标准编程规范。
表1、软件主要编程语言
步骤1.3:数据集划分。将数据集的90%划分为训练集,10%划分为验证集,为回归模型训练做准备。
步骤1.2中数据集构建时,采用编号代表编程语言,构建的数据集如下表所示。
表2、数据集形式表
第二部分、软件需求向量化。
软件需求通常用一个文档和大段的文字描述进行表示,不同的软件需求会有不同程度的代码工作量。因此,在使用软件需求去评估代码工作量时,需要将软件需求向量化,在向量化过程中保证语义的信息不丢失,作为回归预测模型的训练输入。当前在基于语义的句向量生成领域,常使用预训练的Bert模型生成句向量。但是原生的Bert生成的句向量效果(句子相似度等任务)并不好,Bert生成的词向量在空间分布不均匀。句向量仅仅是词向量的平均池化,所以通过它获得的句向量不能很好的表现不同句子间语义的关联性,也不能很好的体现本发明需要的软件需求变更的关联性。
因此,本发明部分使用无监督的SimCSE句向量生成方法,引入对比学习的思想训练词向量生成模型。同时在SimCSE的基础上增加单词重复的方法进行正例对的构建,解决同一个句子通过预训练Bert模型产生的正例对具有相同的长度,而来自两个不同句子的负例对通常包含不同长度的信息的问题。使用单词重复的方法进行正例对的构建,降低了在修改句子长度时语义被修改的可能性。将文段句子通过带有Dropout的编码模型,再将进行单词重复的文段句子再次通过带有Dropout的编码模型。
修改前后的同一个句子得到的两个向量作为正例,其余向量作为负例。使用中文***语料库进行句向量模型训练,得到模型后将软件需求转化为句向量。
具体实现如下:
步骤2.1:进行单词重复,增强样本。为了增强样本希望改变句子的长度而不改变其语义,使用单词重复的方法,即在句子中随机重复一些单词。
例如:“我们都喜欢吃饭”在重复一些单词后得到“我们都喜欢喜欢吃饭饭”,句义不发生改变。随机重复句子中的一些单词/子单词,给定一个句子s,经过分词处理后,得到子词序列x={x1,x2,x3…xN},N为序列的长度。将重复的单词数量定义为:
dup_len∈[0,max(2,int(duprate*N))];
duprate是一个重复比例的超参数,N为句子长度,之后会采样长度为dup_len的单词下标集合对原句进行采样。在确定dup_len后,利用均匀分布从序列中随机选取需要重复的dup_len子词,组成重复集合dup_set如下:
dup_set=uniform(range=[1,N],num=dup_len);
例如,如果第1个子词在dup_set集合中,那么序列x就变成了x+={x1,x1,x2,x3…xN}。
步骤2.2:正向样本与负向样本获取,如图2所示。将文本两种样本x和x+和分别输入到预训练的Bert模型中,由于有Dropout随机性以及单词重复影响,两次的输出向量不一样(当Dropout较小时,可以认为两个输出的向量语义是相似的),得到两个向量h和h+。其中同一个句子和重复单词前后的输出是相似的,即是相似的。
步骤2.3:给定训练函数。拉近语义一致向量的余弦距离,拉大语义不一致向量的余弦距离。训练函数为:
其中,τ是温度超参数,是相似度度量,通常是余弦相似度函数,如下所示:
步骤2.4:模型实现与训练。将该模型通过Huggingface的Transformers库实现,使用中文***语料库训练对比学习模型。
步骤2.5:软件需求向量化。将软件需求输入到训练得到的对比学习模型中,获取软件需求的句向量,作为回归模型的输入。
在本部分,使用“单词重复”方法解决正例长度一样的问题,防止模型自动认为相同或相似长度的两个句子在语义上更相似。“单词重复”比“删除单词”和“加入额外词语”在语义上的影响程度低,因此是一个很好的扩充正例的方法。
第三部分,CNN-LSTM回归模型。
以向量化的软件需求和主要编程语言为输入,需求对应的代码行数为目标,进行回归网络模型的搭建。基于Keras框架构建CNN-LSTM网络模型,在输入层输入特征向量,中间使用了一个一维卷积层,两个LSTM层和一个全连接层,最后使用MSE(均方误差)作为损失函数。使用准备好的数据集训练回归模型后保存模型。
具体过程如下:
步骤3.1:构建回归模型架构,如图3所示。软件需求向量和主要编程语言编号为输入,对应的代码行数为目标,进行回归网络模型的搭建。在输入层输入特征向量,中间使用一个一维卷积层,两个LSTM层和一个全连接层,损失函数使用MSE(均方误差)。神经网络具体参数结构见表3。
表3、CNN-LSTM网络结构
步骤3.2:模型训练。使用构建的数据集训练CNN-LSTM回归模型。模型训练完成后保存模型,用作代码工作量预测。
本部分使用CNN-LSTM回归模型,使用卷积层进一步特征提取,使用两层LSTM将重要特征保留下来,能够有效减缓长序列问题中可能出现的梯度消失或***问题,最后用一个全连接层进行连接。这个回归模型设计简单精巧,可用性强与可操作性强。
在本部分,回归模型也可选择其它精度较高的模型架构。
第四部分,代码工作量预测。使用训练获得的机器学习模型进行代码工作量的预测。输入软件需求变更前的需求、主要编程语言以及软件需求变更后的需求、主要编程语言,分两次进行预测,获取预测得到的代码行数值。基于两次预测得到的结果,分析当前软件需求变更带来的工作量变动情况。为是否变更需求、是否再次修改需求等关键性的决策问题提供评估数据。
具体过程如下:
步骤4.1:需求变更前代码量预测。将需求变更前的软件需求与编程语言作为模型输入,预测代码行数。
步骤4.2:需求变更后代码量预测。将需求变更后的软件需求与编程语言作为模型输入,预测代码行数。
步骤4.3:对比需求变更前后代码量。由于本发明的目标是评估软件需求变更前后工作量的变更情况,所以对代码行数这个数据的预测精度要求不高,需要体现的是基于软件需求语义的变化,导致工作量变化的趋势情况。因此通过对比需求变更前后代码量的变化情况,可以很好的评估软件需求对于工作量影响的程度。
通过上述具体的设置,本申请具有以下优点:
(1)本发明将软件需求与代码量链接,将需求与成果有效量化。软件项目本身是一个将需求转化为代码的过程,需求本身以文档、文字的形式呈现,难以量化工作量情况。而与代码量链接的方式,从一个角度将需求与工作量进行量化呈现。
(2)本发明为软件需求变更提供一种科学的、智能的、规范的、操作便捷的工作量评估方法。软件需求变更本身难以客观评估工作量变化,存在主观性强且对经验要求很高的特点。使用本发明的方法,可以使用训练的模型,将软件需求变更转化为一个工作量变化的对应关系。结合过去的项目历史数据以及精准的语义分析模型,智能化、科学化并且规范化地进行需求变更的工作量分析。模型规模小,评估操作方便快捷。
(3)本发明使用类似SimCSE模型的方法生成句向量,尽可能不损失语义精度的情况下,将软件需求向量化。SimCSE模型本身是一个非常优秀的句向量生成模型,但是SimCSE模型里同一个句子通过BERT产生的正例对具有相同的长度,而来自两个不同句子的负例对通常包含不同长度的信息。由于这样的差异,会导致模型训练时出现偏差,让模型自动认为相同或相似长度的两个句子在语义上更相似。本发明使用单词重复的方法部分规避了这一个问题,同时也继承了SimCSE模型通过对比学习的方法,大幅度保留语义信息情况,特别关注不同句子间的相似度情况,将文本句子向量化。
(4)本发明使用软件需求语义变化情况,来评估软件需求变更导致的代码工作量变化,对预测代码行数的准确度要求不高。预测代码行数本身是一件很困难的事情,因为项目的代码行数的上下波动性比较强。本发明中使用回归模型对代码量进行预测并不需求对代码行数的精准度非常高,更多的是作为需求变更前后的工作量变化情况的一个评估。这使得对数据集的精准度要求不高,回归模型的灵活性强,方便日常的使用。
通过本申请的设计,本申请与背景技术中的专利申请相比CN201910920661.9相比,本申请着力于软件需求变更的评估,采用软件需求语义提取的方法,以代码量为工作量进行预测评估。与专利申请CN202011529315.7相比,本申请对软件需求的管理相关部分涉及较少,只提取软件需求的文字部分,使用基于词向量的语义向量化方法,对软件需求变更的情况进行评估。另外,本申请与论文《SimCSE:Simple Contrastive Learning ofSentence Embeddings》相比,本申请将类似SimCSE模型应用词向量的获取上,对词义间的差距进行分析与量化,智能化地进行软件需求变更的工作量评估。
实施例2
基于实施例1相同的发明构思,本实施例提供了一种软件需求变更的代码工作量评估***,包括结果生成模块和模型训练模块。
结果生成模块用于将需求变更前后的软件需求与编程语言输入至预训练的机器学习模型中,获得需求变更前后的代码行数;对比需求变更前后的代码行数,获得工作量变化结果。
模型训练模块用于构建以软件需求、编程语言和代码行数为记录的数据集;以及用于优化所述数据集中的软件需求,获得句向量;构建以所述句向量、编程语言和代码行数为记录的优化数据集;以及用于将所述优化数据集输入至搭建的回归模型中,获得机器学习模型。
需要说明的是,上述模块之间的信息交互、执行过程等内容,与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述***的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
实施例3
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
由技术常识可知,本发明可以通过其它的不脱离其精神实质或必要特征的实施方案来实现。因此,上述公开的实施方案,就各方面而言,都只是举例说明,并不是仅有的。所有在本发明范围内或在等同于本发明的范围内的改变均被本发明包含。
Claims (10)
1.一种软件需求变更的代码工作量评估方法,其特征在于,包括:
将需求变更前后的软件需求与编程语言输入至预训练的机器学习模型中,获得需求变更前后的代码行数;对比需求变更前后的代码行数,获得工作量变化结果;其中,所述机器学习模型的训练方法包括:
构建以软件需求、编程语言和代码行数为记录的数据集;
优化所述数据集中的软件需求,获得句向量;构建以所述句向量、编程语言和代码行数为记录的优化数据集;
将所述优化数据集输入至搭建的回归模型中,获得机器学习模型。
2.根据权利要求1所述的软件需求变更的代码工作量评估方法,其特征在于,优化所述数据集中的软件需求,获得句向量包括:
将软件需求的语句s进行分词处理,获得子词序列x;
对所述子词序列x进行单词重复操作,获得子词重复序列x+;
将所述子词序列x和子词重复序列x+分别输入至带Dropout的Bert模型中,将同一语句获得的两个向量h和h+作为正例对,其余向量作为负例对;
将所述正例对和负例对输入至通过Transformers训练的对比学习模型中,获得句向量。
3.根据权利要求2所述的软件需求变更的代码工作量评估方法,其特征在于,对所述子词序列x进行单词重复操作,获得子词重复序列x+包括:
定义子词序列x中重复子词的数量;
按重复子词的数量采用均匀分布的形式在所述子词序列x中随机选取需要重复的子词,获得重复集合;
将重复集合中的子词合并至所述子词序列x中获得子词重复序列x+。
4.根据权利要求3所述的软件需求变更的代码工作量评估方法,其特征在于,所述重复子词的数量dup_len的取值范围为:
dup_len∈[0,max(2,int(duprate*N))];
其中,duprate为重复比例的超参数,N为句子长度,int()为取整函数,max()为求最大值函数。
5.根据权利要求3所述的软件需求变更的代码工作量评估方法,其特征在于,所述重复集合dup_set的表达式为:
dup_set=uniform(range=[1,N],num=dup_len);
其中,uniform()为均匀分布函数。
6.根据权利要求1所述的软件需求变更的代码工作量评估方法,其特征在于,所述回归模型为CNN-LSTM回归模型,所述CNN-LSTM回归模型包括依次设置的输入层、一维卷积层、两个LSTM层、全连接层和输出层。
7.根据权利要求1所述的软件需求变更的代码工作量评估方法,其特征在于,构建以软件需求、编程语言和代码行数为记录的数据集包括:
收集历史软件项目的软件需求以及编程语言和代码行数,获得历史数据;
将所述历史数据以软件需求、编程语言和代码行数为记录进行数据集的构建,并采用编号代表所述编程语言,获得数据集。
8.一种软件需求变更的代码工作量评估***,其特征在于,包括:
结果生成模块,用于将需求变更前后的软件需求与编程语言输入至预训练的机器学习模型中,获得需求变更前后的代码行数;对比需求变更前后的代码行数,获得工作量变化结果;
模型训练模块,用于构建以软件需求、编程语言和代码行数为记录的数据集;以及用于
优化所述数据集中的软件需求,获得句向量;构建以所述句向量、编程语言和代码行数为记录的优化数据集;以及用于
将所述优化数据集输入至搭建的回归模型中,获得机器学习模型。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求1-7中任一所述的方法。
10.一种计算机设备,其特征在于,包括:
存储器,用于存储指令;
处理器,用于执行所述指令,使得所述设备执行实现如权利要求1-7任一项所述的方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311167843.6A CN117193823A (zh) | 2023-09-11 | 2023-09-11 | 一种软件需求变更的代码工作量评估方法、***及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311167843.6A CN117193823A (zh) | 2023-09-11 | 2023-09-11 | 一种软件需求变更的代码工作量评估方法、***及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117193823A true CN117193823A (zh) | 2023-12-08 |
Family
ID=89004761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311167843.6A Pending CN117193823A (zh) | 2023-09-11 | 2023-09-11 | 一种软件需求变更的代码工作量评估方法、***及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117193823A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117875797A (zh) * | 2024-03-12 | 2024-04-12 | 广东华宸建设工程质量检测有限公司 | 一种建设工程协同监理方法及*** |
-
2023
- 2023-09-11 CN CN202311167843.6A patent/CN117193823A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117875797A (zh) * | 2024-03-12 | 2024-04-12 | 广东华宸建设工程质量检测有限公司 | 一种建设工程协同监理方法及*** |
CN117875797B (zh) * | 2024-03-12 | 2024-08-06 | 上海天佑工程咨询有限公司 | 一种建设工程协同监理方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108363790B (zh) | 用于对评论进行评估的方法、装置、设备和存储介质 | |
US7685082B1 (en) | System and method for identifying, prioritizing and encapsulating errors in accounting data | |
CN109902159A (zh) | 一种基于自然语言处理的智能运维语句相似度匹配方法 | |
CN111191002B (zh) | 一种基于分层嵌入的神经代码搜索方法及装置 | |
CN111310438A (zh) | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 | |
CN112069295B (zh) | 相似题推荐方法、装置、电子设备和存储介质 | |
CN111339255A (zh) | 目标情感分析的方法、模型训练方法、介质和设备 | |
CN115357719B (zh) | 基于改进bert模型的电力审计文本分类方法及装置 | |
CN112052684A (zh) | 电力计量的命名实体识别方法、装置、设备和存储介质 | |
CN116738959B (zh) | 一种基于人工智能的简历改写方法及*** | |
CN116719520B (zh) | 代码生成方法及装置 | |
CN117193823A (zh) | 一种软件需求变更的代码工作量评估方法、***及设备 | |
CN117217277A (zh) | 语言模型的预训练方法、装置、设备、存储介质及产品 | |
Vexler et al. | Statistics in the health sciences: Theory, applications, and computing | |
CN113761875B (zh) | 事件抽取方法、装置、电子设备及存储介质 | |
CN114722833A (zh) | 一种语义分类方法及装置 | |
CN113868422A (zh) | 一种多标签稽查工单问题溯源识别方法及装置 | |
Sabbah et al. | Self-admitted technical debt classification using natural language processing word embeddings | |
CN116610592B (zh) | 基于自然语言处理技术的可定制软件测试评价方法及*** | |
CN116342167A (zh) | 基于序列标注命名实体识别的智能成本度量方法和装置 | |
CN116383414A (zh) | 一种基于碳核查知识图谱的智能文件评审***及方法 | |
CN115203206A (zh) | 数据内容搜索方法、装置、计算机设备及可读存储介质 | |
CN113326348A (zh) | 一种博客质量评估方法及工具 | |
Choi et al. | Does active learning reduce human coding?: A systematic comparison of neural network with nCoder | |
Gramajo et al. | Recurrent Neural Networks to automate Quality assessment of Software Requirements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |