CN111124489B - 一种基于bp神经网络的软件功能点数估算方法 - Google Patents

一种基于bp神经网络的软件功能点数估算方法 Download PDF

Info

Publication number
CN111124489B
CN111124489B CN201911409671.2A CN201911409671A CN111124489B CN 111124489 B CN111124489 B CN 111124489B CN 201911409671 A CN201911409671 A CN 201911409671A CN 111124489 B CN111124489 B CN 111124489B
Authority
CN
China
Prior art keywords
function
data
transaction
layer
data storage
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.)
Active
Application number
CN201911409671.2A
Other languages
English (en)
Other versions
CN111124489A (zh
Inventor
项文上
张艳侠
方丁
赵小敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University of Technology ZJUT
Original Assignee
Zhejiang University of Technology ZJUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University of Technology ZJUT filed Critical Zhejiang University of Technology ZJUT
Priority to CN201911409671.2A priority Critical patent/CN111124489B/zh
Publication of CN111124489A publication Critical patent/CN111124489A/zh
Application granted granted Critical
Publication of CN111124489B publication Critical patent/CN111124489B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及一种基于BP神经网络的软件功能点数估算方法,包括:1)合并基于IFPUG功能点评估方法处理得到的每组数据中的相同数据存储、相同事务,得到包含七种属性的新数据;其中,七种属性分别为数据存储DET1、事务DET2、FTR、事务类型、数据存储类型、操作数、功能点数;2)利用BP神经网络进行训练,得到软件功能点数估算模型;3)基于训练好的软件功能点数估算模型估算软件功能点数。本发明改进了原有的功能点数估算方法,减少了计算事务复杂度因子时的误差,对于提高软件规模评估准确度具有重大意义。

Description

一种基于BP神经网络的软件功能点数估算方法
技术领域
本发明涉及软件开发成本度量中的软件规模估算领域,尤其涉及一种基于BP神经网络的软件功能点数估算方法。
背景技术
2019年7月1日正式生效的国家标准《软件工程软件开发成本度量规范》(GB/T36964-2018)为软件行业度量开发成本提供了依据。该标准中定义的软件开发成本估算过程包括软件规模估算、工作量估算、成本估算、确定软件开发成本四部分。其中,估算软件规模时采用IFPUG、MarkII、Nesma、Cosmic、Fisma等五种国际标准的功能点计数方法。IFPUG标准基于明确的规则约束,能保证软件规模评估结果的客观性和一致性;MarkII标准操作简单,只需进行简单的加权计算,但缺乏对基本元素的识别规则;Nesma标准对代码数据进行度量、对隐含查询不予考虑,所以完整性和一致性不强;Cosmic标准引入了“分层”概念,需要考虑软件的技术因素,从而减弱了软件功能点对业务人员透明的优势;Fisma标准强调采用“服务”替代“功能”,但服务的加权系数各不相同,操作困难。
其中IFPUG标准评估方法在软件成本评估中应用最为广泛,该方法根据五种信息域特征估算并合计每个信息域的复杂度对应的功能点数,得出一个初步的总功能点数(UFC),最后根据项目的具体情况,选择相应的技术复杂度参数,估算出最终的软件开发成本。然而该方法在每个信息域估算功能点数时,没有考虑到突变点存在的情况,同时估算事务的功能点数时不可避免地要考虑数据存储,可能会引发在突变点附近取值不精确、过度计算的问题,因此设计一种基于BP神经网络的软件功能点数估算方法是十分有必要的。
发明内容
本发明为克服上述的不足之处,目的在于提供一种基于BP神经网络的软件功能点数估算方法,本发明从数据存储出发,把对相同数据存储的相同事务合并到一起,以新得到的数据为单位,对新的功能点数求和。本发明改进了原有的功能点数估算方法,减少了估算事务功能点数时的误差,对于提高功能点评估准确度具有重大意义。
本发明是通过以下技术方案达到上述目的:一种基于BP神经网络的软件功能点数估算方法,包括如下步骤:
(1)合并基于IFPUG功能点评估方法处理得到的每组数据中的相同数据存储、相同事务,得到包含七种属性的新数据;其中,七种属性分别为数据存储DET1、事务DET2、FTR、事务类型、数据存储类型、操作数、功能点数;
(2)利用BP神经网络进行训练,得到软件功能点数估算模型;
(3)基于训练好的软件功能点数估算模型估算软件功能点数。
作为优选,所述步骤(1)具体为:提取基于IFPUG功能点评估方法处理得到的的每组数据,合并访问同一数据存储的相同事务操作,合计所有功能点数,得到包含七种属性的新数据,具体如下:IFPUG功能点评估方法分别估算在数据存储和事务方面的功能点数,数据存储中ILF和EIF的功能点数由数据元素类型DET和记录元素类型RET决定,其中DET表示数据表的属性数或外部接口的输出属性数,RET表示数据表或外部接口的关联数;
事务中EI、EO、EQ的功能点数由数据元素类型DET和引用文件类型FTR决定,其中FTR表示被维护和读取的数据表或被读取的外部接口;在实际处理中,假设每次操作的FTR=RET,合并每组数据存储的功能点数和对该组数据存储进行相同操作的事务的功能点数,产生新的一组数据,即包含DET1(数据存储)、DET2(事务)、FTR、事务类型(EI、EO、EQ)、数据存储类型(ILF、EIF)、操作数、功能点数七种属性的新数据。
作为优选,所述的功能点数的估算方法包括三种:
(A)根据ILF/EIF功能点数矩阵提取出来的数据包括DET、RET、数据存储类型、功能点数四种属性,用如下公式表示:
F1=f(det,ret,ie)
其中F1表示数据存储对应的功能点数1,det、ret分别表示DET、RET的数值,ie表示该数据存储是ILF还是EIF;
(B)根据EO/EQ功能点数矩阵提取出来的数据包括DET、FTR、事务类型、功能点数四种属性,用如下公式表示:
F2=f(det,ftr,eoeq)
其中F2表示数据存储对应的功能点数2,det、ftr分别表示DET、FTR的数值,eoeq表示该事务操作是EO还是EQ;
(C)根据EI功能点数矩阵提取出来的数据包括DET、FTR、事务类型、功能点数四种属性,用如下公式表示:
F3=f(det,ftr,ei)
其中F3表示数据存储对应的功能点数3,det、ftr的分别表示DET、FTR的数值,ei表示该数据存储是EI。
作为优选,所述合并时,以数据存储为单位,合并得到包括DET1(数据存储)、DET2(事务)、FTR、事务类型(EI、EO、EQ)、数据存储类型(ILF、EIF)、操作数、功能点数七种属性的一组数据,具体情况如下:
(i)事务没有任意数据存储:根据事务类型合并相同事务,只需考虑事务的功能点数而不需要考虑数据存储的功能点数;
(ii)该数据存储没有被事务直接访问:只需考虑数据存储的功能点数而不需要考虑事务的功能点数;
(iii)该数据存储有被事务直接访问:根据事务类型合并相同事务,功能点数同时考虑数据存储和事务。
作为优选,所述步骤(2)使用BP神经网络进行训练包括如下步骤:
(2.1)根据步骤(1)得到的新数据,即将新数据作为样本,建立三层拓扑结构的BP神经网络,其中输入层为六个神经元,输出层为一个神经元,隐藏层取十个神经元;初始化隐藏层权值V,输出层权值W,隐藏层阈值γ,输出层阈值θ,预设计算精度ε,最大迭代次数M,学习率η;
(2.2)随机选取一个输入样本以及对应的输出期望,计算隐藏层各神经元的输入和输出;网络输出的结果与输出期望的误差的函数被称作损失函数,计算损失函数对输出层的各神经元的偏导数;并利用输出层各神经元的偏导和隐藏层各神经元的输出来调整隐藏层到输出层的权值、隐藏层各神经元的偏导和输入层各神经元的输入调整输入层到隐藏层的权值,并计算全局误差;
(2.3)当全局误差小于等于预设计算精度ε或迭代次数大于最大迭代次数M时,训练结束,执行步骤(2.4);否则返回步骤(2.2),进入下一轮迭代;
(2.4)验证和测试训练模型,如果通过则保存模型,否则返回步骤(2.1)重新训练。
作为优选,所述步骤(2.2)具体如下:
随机选取第l个输入样本和对应的样本输出,计算出隐藏层和输出层各神经元的输入、输出:
隐藏层输入:
Figure GDA0004099824820000051
隐藏层输出:hoj(l)=σ(hij(l))
输出层输入:
Figure GDA0004099824820000052
输出层输出:yok(l)=σ(yik(l))
其中ω为所在两个神经元之间的联结权重,θ为输出层阈值,i、j、k分别表示输入层、隐藏层、输出层的神经元,σ为激活函数,其中激活函数采用sigmoid函数
Figure GDA0004099824820000053
求导结果为σ′=σ(1-σ);
模型输出记为yok,给定样本期望tk,采用均方差作为输出层的损失函数,公式为:
Figure GDA0004099824820000061
使用梯度下降方法进行优化,对损失函数在输出层权重W方向进行求偏导:
Figure GDA0004099824820000062
代入yok=σ(yik),并对sigmoid函数求导:
Figure GDA0004099824820000063
展开yik,输出层第k个节点的输入等于上一层各个的输出乘上相应的权值的累加和阈值,而上一层的输出与输出层的权重变量无关,可以看做一个常数,所以直接求导可以得到:
Figure GDA0004099824820000064
再次代入yok=σ(yik):
Figure GDA0004099824820000065
定义δk=yok(1-yok)(yok-tk),得到:
Figure GDA0004099824820000066
利用输出层各神经元的δk(l)和隐藏层各神经元的输出、学习率η来修正连接权值Wjk(l),如下所示:
Figure GDA0004099824820000067
采用同样方法对隐藏层的权重进行计算,对损失函数在隐藏层权重V方向进行求偏导:
Figure GDA0004099824820000068
代入yok=σ(yik),对sigmoid函数求导:
Figure GDA0004099824820000071
再次代入yok=σ(yik),然后使用求导的链式法则:
Figure GDA0004099824820000072
根据
Figure GDA0004099824820000073
得到:
Figure GDA0004099824820000074
代入hoj=σ(hij),对sigmoid函数求导:
Figure GDA0004099824820000075
与求
Figure GDA0004099824820000076
的方法一样,上一层的输出与隐藏层的权重变量无关,可直接求导得/>
Figure GDA0004099824820000077
得到;
Figure GDA0004099824820000078
定义
Figure GDA0004099824820000079
得到:
Figure GDA00040998248200000710
利用隐藏层各神经元的δj(l)和输入层各神经元的输入、学习率η来修正连接权值Vij(l)。
Figure GDA00040998248200000711
最后计算全局误差:
Figure GDA00040998248200000712
作为优选,所述步骤(3)采用步骤(2)所述训练好的软件功能点数估算模型估算功能点数,把提取出来的每组数据放入新模型估算出各自的功能点数,累加每组数据的功能点得到总的功能点数。
作为优选,所述步骤(3)包括如下步骤:
(3.1)提取项目中数据并分组,分组包含DET1(数据存储)、DET2(事务)、FTR、事务类型(EI、EO、EQ)、数据存储类型(ILF、EIF)、操作数N六种属性;
(3.2)把每组数据分别输入到训练好的软件功能点数估算模型,估算出各自功能点数并累加,所得结果就是该项目的功能点总数:
FP=f(DET1,DET2,FTR,IOQ,IE,N)
Figure GDA0004099824820000081
其中IOQ表示事务类型,IE表示数据存储类型,M表示组数,sumfp表示功能点总数。
本发明的有益效果在于:本发明改进了原有的功能点数估算方法,减少了估算事务功能点数时的误差,对于提高功能点评估准确度具有重大意义。
附图说明
图1是本发明的方法流程示意图;
图2是本发明的BP神经网络示意图;
图3是本发明实施例的sigmoid函数示意图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:
实施例:如图1所示,一种基于BP神经网络的软件功能点数估算方法,包括如下步骤:
步骤1:合并基于IFPUG功能点评估方法处理得到的每组数据中的相同数据存储、相同事务的操作,得到包含DET1、DET2、FTR、事务类型、数据存储类型、操作数、功能点数等七种属性的新数据;
步骤1.1:提取使用IFPUG功能点评估方法的每组数据。
IFPUG能点评估方法分别估算在数据存储和事务方面的功能点数。数据存储中的ILF和EIF分别对应项目的数据表和外部接口。RET表示关联数目,在数据表中,DET表示表的属性数,在外部接口中,DET表示接口的外部输出属性数目。ILF/EIF功能点数取值根据《IFPUG-CPM4.2-功能点实践手册》中的ILF/EIF功能点数矩阵,如表1所示。
1-19DET 20-50DET 51+DET
1RET ILF:7/EIF:5 ILF:7/EIF:5 ILF:10/EIF:7
2-5RET ILF:7/EIF:5 ILF:10/EIF:7 ILF:15/EIF:10
6+RET ILF:10/EIF:7 ILF:15/EIF:10 ILF:15/EIF:10
表1
根据表1提取出来的数据每组包括DET、RET、数据存储类型、功能点数四种属性。可以用如下公式表示:
F1=f(det,ret,ie) (1)
其中F1表示这是数据存储对应的功能点数,det、ret分别表示DET、RET的数值,ie表示该数据存储是ILF还是EIF。
事务中EI、EO、EQ分别对应项目的功能操作中的输入、输出、查询。任意操作需要关联数据表或外部接口或无关联,FTR表示关联数目,DET表示所有关联的数据表或外部接口的属性数目,EO/EQ功能点数取值根据《IFPUG-CPM4.2-功能点实践手册》中的EO/EQ功能点数矩阵,如表2所示。
1-5DET 6-19DET 20+DET
0-1FTR EO:4/EQ:3 EO:4/EQ:3 EO:5/EQ:4
2-3FTR EO:4/EQ:3 EO:5/EQ:4 EO:7/EQ:6
4+FTR EO:5/EQ:4 EO:7/EQ:6 EO:7/EQ:6
表2
根据表2提取出来的数据每组包括DET、FTR、事务类型、功能点数四种属性。可以用如下公式表示:
F2=f(det,ftr,eoeq) (2)
其中F2表示这是数据存储对应的功能点数,det、ftr分别表示DET、FTR的数值,eoeq表示该事务操作是EO还是EQ。
EI功能点数估算取值根据《IFPUG-CPM4.2-功能点实践手册》中的EI功能点数矩阵,如表3所示。
1-4DET 5-15DET 16+DET
0-1FTR 3 3 4
2-3FTR 3 4 6
4+FTR 4 6 6
表3
根据表3提取出来的数据每组包括DET、FTR、事务类型、功能点数四种属性。可以用如下公式表示:
F3=f(det,ftr,ei) (3)
其中F3表示这是数据存储对应的功能点数,det、ftr的分别表示DET、FTR的数值,ei表示该数据存储是EI。
由于这些参数所代表的含义各不相同,所以这些公式不能抽象一个包含三元未知量的式子。但它们之间还是有所关联的。其中RET指用户可识别的数据域的子集个数,FTR指在一个事务过程中,所引用到的各种文件的个数,假如一个文件只包括一个数据域子集,又因为任一功能操作都会访问到数据表或外部接口(如果有的话),那么可以假设在对同一个数据存储的事务操作过程中RET=FTR;在公式1中,DET只包含它本身存储过程中的无递归、不重复的信息单元,而在公式2、公式3中,DET不仅包含事务操作访问到的某个数据表或外部接口的信息单元,还包括这个数据表或外部接口所关联的其它数据表或外部接口的无递归、不重复的信息单元,只有当RET和FTR都等于1时,两边的DET数值才相等,所以不能直接把数据存储和事务的DET划等号。
步骤1.2:合并访问同一数据存储的相同事务操作,合计所有功能点数。其中,功能点合计由数据存储和事务操作两部分组成,因为事务操作有EI、EO、EQ共三种,需避免重复估算功能点数。另外假设有n种功能操作,但它们的核心逻辑都是对同一数据存储的相同事务操作,而在实际开发中,这些工作量已经被包含在第一次实现这个功能,后续新增功能可能没有太多工作量,即不需要重新编写核心逻辑,所以在估算功能点时它的复杂度可能会比表中的要少些许,因此用神经网络拟合模型。
以数据存储为单位,合并得到包括DET1(数据存储)、DET2(事务)、FTR、事务类型(EI、EO、EQ)、数据存储类型(ILF、EIF)、操作数、功能点数等七种属性的一组数据。具体情况如下:
(i)事务没有任意数据存储;
根据事务类型合并相同事务,只需考虑事务的功能点数而不需要考虑数据存储的功能点数。
(ii)该数据存储没有被事务直接访问;
只需考虑数据存储的功能点数而不需要考虑事务的功能点数。
(iii)该数据存储有被事务直接访问;
根据事务类型合并相同事务,功能点数同时考虑数据存储和事务。
总共得到4264组包含七种属性的数据,去除重复数据后还剩1000组。
步骤2:使用BP神经网络进行训练;
步骤2.1:建立三层结构的BP神经网络,其中输入层为6个神经元,输出层为1个神经元,隐藏层取10个神经元,如图2所示。
初始化隐藏层(输入层到隐藏层)权值V,输出层(隐藏层到输出层)权值W,隐藏层阈值γ,输出层阈值θ,给定计算精度ε、最大迭代次数M、学习率η。
步骤2.2:随机选取第l个输入样本和对应的样本输出,计算出隐藏层和输出层各神经元的输入、输出。
隐藏层输入:
Figure GDA0004099824820000121
隐藏层输出:hoj(l)=σ(hij(l)) (5)
输出层输入:
Figure GDA0004099824820000131
输出层输出:yok(l)=σ(yik(l)) (7)
其中ω为所在两个神经元之间的联结权重,θ为阈值,i、j、k分别表示输入层、隐藏层、输出层的神经元,σ为激活函数,本文激活函数采用sigmoid函数
Figure GDA0004099824820000132
函数图像如图3所示,求导结果为σ′=σ(1-σ)。
模型输出记为yok,给定样本期望tk,采用均方差作为输出层的损失函数,公式为:
Figure GDA0004099824820000133
使用梯度下降方法进行优化,对损失函数在输出层权重W方向进行求偏导:
Figure GDA0004099824820000134
代入yok=σ(yik),并对sigmoid函数求导:
Figure GDA0004099824820000135
展开yik,输出层第k个节点的输入等于上一层各个的输出乘上相应的权值的累加和阈值,而上一层的输出与输出层的权重变量无关,可以看做一个常数,所以直接求导可以得到:
Figure GDA0004099824820000136
再次代入yok=σ(yik):
Figure GDA0004099824820000137
定义δk=yok(1-yok)(yok-tk),所以
Figure GDA0004099824820000141
利用输出层各神经元的δk(l)和隐藏层各神经元的输出、学习率η来修正连接权值Wjk(l)。
Figure GDA0004099824820000142
采用同样方法对隐藏层的权重进行计算,对损失函数在隐藏层权重V方向进行求偏导:
Figure GDA0004099824820000143
代入yok=σ(yik),对sigmoid函数求导:
Figure GDA0004099824820000144
再次代入yok=σ(yik),然后使用求导的链式法则:
Figure GDA0004099824820000145
根据公式11,
Figure GDA0004099824820000146
Figure GDA0004099824820000147
代入hoj=σ(hij),对sigmoid函数求导:
Figure GDA0004099824820000148
与求公式11的方法一样,上一层的输出与隐藏层的权重变量无关,可直接求导得
Figure GDA0004099824820000149
所以
Figure GDA00040998248200001410
定义
Figure GDA00040998248200001411
所以/>
Figure GDA0004099824820000151
利用隐藏层各神经元的δj(l)和输入层各神经元的输入、学习率η来修正连接权值Vij(l)。
Figure GDA0004099824820000152
最后计算全局误差:
Figure GDA0004099824820000153
步骤2.3:当全局误差E小于等于预设计算精度ε或迭代次数大于最大迭代次数M时,训练结束,执行步骤2.4;否则返回步骤2.2,进入下一轮迭代;
步骤2.4:验证和测试训练模型,如果通过则保存模型,否则返回步骤2.1重新训练。
步骤3:使用训练好的软件功能点数估算模型估算功能点;
步骤3.1:提取项目中数据并分组,分组包含DET1(数据存储)、DET2(事务)、FTR、事务类型(EI、EO、EQ)、数据存储类型(ILF、EIF)、操作数N等六种属性。
步骤3.2:把每组数据分别输入到训练好的模型,估算出各自功能点数并累加求和,所得结果就是该项目的功能点总数:
FP=f(DET1,DET2,FTR,IOQ,IE,N) (24)
Figure GDA0004099824820000154
其中IOQ表示事务类型,IE表示数据存储类型,M表示组数,sumfp表示功能点总数。
以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。

Claims (1)

1.一种基于BP神经网络的软件功能点数估算方法,其特征在于,包括如下步骤:
(1)合并基于IFPUG功能点评估方法处理得到的每组数据中的相同数据存储、相同事务,得到包含七种属性的新数据;其中,七种属性分别为数据存储DET1、事务DET2、FTR、事务类型、数据存储类型、操作数、功能点数;其中具体包括:提取基于IFPUG功能点评估方法处理得到的的每组数据,合并访问同一数据存储的相同事务操作,合计所有功能点数,得到包含七种属性的新数据,具体如下:IFPUG功能点评估方法分别估算在数据存储和事务方面的功能点数,数据存储中ILF和EIF的功能点数由数据元素类型DET和记录元素类型RET决定,其中DET表示数据表的属性数或外部接口的输出属性数,RET表示数据表或外部接口的关联数;
事务中EI、EO、EQ的功能点数由数据元素类型DET和引用文件类型FTR决定,其中FTR表示被维护和读取的数据表或被读取的外部接口;在实际处理中,假设每次操作的FTR=RET,合并每组数据存储的功能点数和对该组数据存储进行相同操作的事务的功能点数,产生新的一组数据,即包含DET1、DET2、FTR、事务类型、数据存储类型、操作数、功能点数七种属性的新数据;其中DET1表示数据存储;DET2表示事务;事务类型为EI、EO、EQ;数据存储类型为ILF、EIF;
其中,所述的功能点数的估算方法包括三种:
(A)根据ILF/EIF功能点数矩阵提取出来的数据包括DET、RET、数据存储类型、功能点数四种属性,用如下公式表示:
F1=f(det,ret,ie)
其中F1表示数据存储对应的功能点数1,det、ret分别表示DET、RET的数值,ie表示该数据存储是ILF还是EIF;
(B)根据EO/EQ功能点数矩阵提取出来的数据包括DET、FTR、事务类型、功能点数四种属性,用如下公式表示:
F2=f(det,ftr,eoeq)
其中F2表示数据存储对应的功能点数2,det、ftr分别表示DET、FTR的数值,eoeq表示该事务操作是EO还是EQ;
(C)根据EI功能点数矩阵提取出来的数据包括DET、FTR、事务类型、功能点数四种属性,用如下公式表示:
F3=f(det,ftr,ei)
其中F3表示数据存储对应的功能点数3,det、ftr的分别表示DET、FTR的数值,ei表示该数据存储是EI;
其中,所述合并时,以数据存储为单位,合并得到包括DET1、DET2、FTR、事务类型、数据存储类型、操作数、功能点数七种属性的一组数据,具体情况如下:
(i)事务没有任意数据存储:根据事务类型合并相同事务,只需考虑事务的功能点数而不需要考虑数据存储的功能点数;
(ii)该数据存储没有被事务直接访问:只需考虑数据存储的功能点数而不需要考虑事务的功能点数;
(iii)该数据存储有被事务直接访问:根据事务类型合并相同事务,功能点数同时考虑数据存储和事务;
(2)利用BP神经网络进行训练,得到软件功能点数估算模型;其中步骤(2)使用BP神经网络进行训练包括如下步骤:
(2.1)根据步骤(1)得到的新数据,即将新数据作为样本,建立三层拓扑结构的BP神经网络,其中输入层为六个神经元,输出层为一个神经元,隐藏层取十个神经元;初始化隐藏层权值V,输出层权值W,隐藏层阈值γ,输出层阈值θ,预设计算精度ε,最大迭代次数M,学习率η;
(2.2)随机选取一个输入样本以及对应的输出期望,计算隐藏层各神经元的输入和输出;网络输出的结果与输出期望的误差的函数被称作损失函数,计算损失函数对输出层的各神经元的偏导数;并利用输出层各神经元的偏导和隐藏层各神经元的输出来调整隐藏层到输出层的权值、隐藏层各神经元的偏导和输入层各神经元的输入调整输入层到隐藏层的权值,并计算全局误差;具体如下:
随机选取第l个输入样本和对应的样本输出,计算出隐藏层和输出层各神经元的输入、输出:
隐藏层输入:
Figure FDA0004099824810000031
隐藏层输出:hoj(l)=σ(hij(l))
输出层输入:
Figure FDA0004099824810000032
输出层输出:yok(l)=σ(yik(l))
其中ω为所在两个神经元之间的联结权重,θ为输出层阈值,i、j、k分别表示输入层、隐藏层、输出层的神经元,σ为激活函数,其中激活函数采用sigmoid函数
Figure FDA0004099824810000041
求导结果为σ′=σ(1-σ);
模型输出记为yok,给定样本期望tk,采用均方差作为输出层的损失函数,公式为:
Figure FDA0004099824810000042
使用梯度下降方法进行优化,对损失函数在输出层权重W方向进行求偏导:
Figure FDA0004099824810000043
代入yok=σ(yik),并对sigmoid函数求导:
Figure FDA0004099824810000044
展开yik,输出层第k个节点的输入等于上一层各个的输出乘上相应的权值的累加和阈值,而上一层的输出与输出层的权重变量无关,可以看做一个常数,所以直接求导可以得到:
Figure FDA0004099824810000045
/>
再次代入yok=σ(yik):
Figure FDA0004099824810000046
定义δk=yok(1-yok)(yok-tk),得到:
Figure FDA0004099824810000047
利用输出层各神经元的δk(l)和隐藏层各神经元的输出、学习率η来修正连接权值Wjk(l),如下所示:
Figure FDA0004099824810000048
采用同样方法对隐藏层的权重进行计算,对损失函数在隐藏层权重V方向进行求偏导:
Figure FDA0004099824810000051
代入yok=σ(yik),对sigmoid函数求导:
Figure FDA0004099824810000052
再次代入yok=σ(yik),然后使用求导的链式法则:
Figure FDA0004099824810000053
根据
Figure FDA0004099824810000054
得到:
Figure FDA0004099824810000055
代入hoj=σ(hij),对sigmoid函数求导:
Figure FDA0004099824810000056
与求
Figure FDA0004099824810000057
的方法一样,上一层的输出与隐藏层的权重变量无关,可直接求导得/>
Figure FDA0004099824810000058
得到;
Figure FDA0004099824810000059
定义
Figure FDA00040998248100000510
得到:
Figure FDA00040998248100000511
利用隐藏层各神经元的δj(l)和输入层各神经元的输入、学习率η来修正连接权值Vij(l);
Figure FDA00040998248100000512
最后计算全局误差:
Figure FDA0004099824810000061
(2.3)当全局误差小于等于预设计算精度ε或迭代次数大于最大迭代次数M时,训练结束,执行步骤(2.4);否则返回步骤(2.2),进入下一轮迭代;
(2.4)验证和测试训练模型,如果通过则保存模型,否则返回步骤(2.1)重新训练;
(3)基于训练好的软件功能点数估算模型估算软件功能点数;其中,所述步骤(3)采用步骤(2)所述训练好的软件功能点数估算模型估算功能点数,把提取出来的每组数据放入新模型估算出各自的功能点数,累加每组数据的功能点得到总的功能点数;具体包括如下步骤:
(3.1)提取项目中数据并分组,分组包含DET1、DET2、FTR、事务类型、数据存储类型、操作数N六种属性;
(3.2)把每组数据分别输入到训练好的软件功能点数估算模型,估算出各自功能点数并累加求和,所得结果就是该项目的功能点总数:
FP=f(DET1,DET2,FTR,IOQ,IE,N)
Figure FDA0004099824810000062
其中IOQ表示事务类型,IE表示数据存储类型,M表示组数,sumfp表示功能点总数。
CN201911409671.2A 2019-12-31 2019-12-31 一种基于bp神经网络的软件功能点数估算方法 Active CN111124489B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911409671.2A CN111124489B (zh) 2019-12-31 2019-12-31 一种基于bp神经网络的软件功能点数估算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911409671.2A CN111124489B (zh) 2019-12-31 2019-12-31 一种基于bp神经网络的软件功能点数估算方法

Publications (2)

Publication Number Publication Date
CN111124489A CN111124489A (zh) 2020-05-08
CN111124489B true CN111124489B (zh) 2023-05-23

Family

ID=70506731

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911409671.2A Active CN111124489B (zh) 2019-12-31 2019-12-31 一种基于bp神经网络的软件功能点数估算方法

Country Status (1)

Country Link
CN (1) CN111124489B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112105086A (zh) * 2020-11-16 2020-12-18 南京航空航天大学 基于流量预测的无人机自组网信道接入控制方法
CN113505064B (zh) * 2021-07-07 2022-05-17 广东电力信息科技有限公司 一种基于异构信息流的电力大数据业务系统测试方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6550053B1 (en) * 1999-04-21 2003-04-15 International Computers Limited Time estimator for object oriented software development
CN103577195A (zh) * 2013-11-14 2014-02-12 中国联合网络通信集团有限公司 一种软件需求分析量化方法及系统
CN109271527A (zh) * 2018-09-27 2019-01-25 华东师范大学 一种需求功能点智能识别方法
CN109460908A (zh) * 2018-10-29 2019-03-12 成都安美勤信息技术股份有限公司 软件工程的造价评估方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6550053B1 (en) * 1999-04-21 2003-04-15 International Computers Limited Time estimator for object oriented software development
CN103577195A (zh) * 2013-11-14 2014-02-12 中国联合网络通信集团有限公司 一种软件需求分析量化方法及系统
CN109271527A (zh) * 2018-09-27 2019-01-25 华东师范大学 一种需求功能点智能识别方法
CN109460908A (zh) * 2018-10-29 2019-03-12 成都安美勤信息技术股份有限公司 软件工程的造价评估方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
丁岳伟,袁健,钱晋.人工神经网络在软件预估分析中的应用.上海理工大学学报.2004,(01),第59-61页. *
于学军 ; 程博.基于BP神经网络的工作量估算模型.《计算机科学》.2012,第97-100页. *
赵小敏 ; 曹光斌 ; 费梦钰 ; 朱李楠.基于加权类比的软件成本估算方法.《计算机科学》.2018,第501-504、531页. *
赵小敏 ; 费梦钰 ; 曹光斌 ; 朱李楠 ; .软件成本评估方法综述.计算机科学.2018,(S2),第86-93、101页. *
郑明辉,周慧华,马光致.基于UML需求分析模型的软件规模估算方法.计算机应用与软件.2004,(03),第24-26、98页. *

Also Published As

Publication number Publication date
CN111124489A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
CN104598569B (zh) 一种基于关联规则的mbd数据集完整性检查方法
WO2017167022A1 (zh) 基于大数据推算开发对象关系的方法及装置
CN111124489B (zh) 一种基于bp神经网络的软件功能点数估算方法
CN110852856B (zh) 一种基于动态网络表征的发票虚开识别方法
CN110110754B (zh) 基于代价局部泛化误差的不平衡问题的分类方法
CN111242793B (zh) 医保数据异常的检测方法和装置
CN112434024B (zh) 面向关系型数据库的数据字典生成方法、装置、设备及介质
CN112508105A (zh) 一种采油机故障检测与检索方法
CN110502277A (zh) 一种基于bp神经网络的代码坏味检测方法
CN103366091A (zh) 基于多级阈值指数加权平均的异常报税数据检测方法
CN111639882B (zh) 一种基于深度学习的用电风险的判定方法
CN106651427A (zh) 基于用户行为的数据关联方法
CN108182531A (zh) 页岩气开发评价方法、装置及终端设备
CN107491656B (zh) 一种基于相对危险度决策树模型的妊娠结局影响因子评估方法
CN108647714A (zh) 负面标签权重的获取方法、终端设备及介质
WO2016004744A1 (zh) 基于复杂对应系统的用户行为一致性度测量方法
CN109614074A (zh) 基于概率转移矩阵模型的近似加法器可靠度计算方法
CN108399284A (zh) 一种基于偏差约减的大数据交易模型分析与修复方法
Rask et al. Simulation and comparison of Albrecht's function point and DeMarco's function bang metrics in a CASE environment
CN106778252A (zh) 基于粗糙集理论与waode算法的入侵检测方法
CN114239444B (zh) 一种基于块的电路延时模型的建立方法
CN104850624A (zh) 近重复记录的相似度评估方法
CN115658515A (zh) 一种深度学习蜕变测试用例排序方法及计算机可读介质
CN112016956B (zh) 基于bp神经网络的矿石品位估值方法及装置
CN104899371B (zh) 输电线路勘测方法及装置

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
GR01 Patent grant
GR01 Patent grant