欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2019114096712
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

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个输入样本和对应的样本输出,计算出隐藏层和输出层各神经元的输入、输出:隐藏层输入:

隐藏层输出:hoj(l)=σ(hij(l))

输出层输入:

输出层输出:yok(l)=σ(yik(l))

其中ω为所在两个神经元之间的联结权重,θ为输出层阈值,i、j、k分别表示输入层、隐藏层、输出层的神经元,σ为激活函数,其中激活函数采用sigmoid函数 求导结果为σ′=σ(1‑σ);

模型输出记为yok,给定样本期望tk,采用均方差作为输出层的损失函数,公式为:使用梯度下降方法进行优化,对损失函数在输出层权重W方向进行求偏导:代入yok=σ(yik),并对sigmoid函数求导:展开yik,输出层第k个节点的输入等于上一层各个的输出乘上相应的权值的累加和阈值,而上一层的输出与输出层的权重变量无关,可以看做一个常数,所以直接求导可以得到:再次代入yok=σ(yik):

定义δk=yok(1‑yok)(yok‑tk),得到:利用输出层各神经元的δk(l)和隐藏层各神经元的输出、学习率η来修正连接权值Wjk(l),如下所示:采用同样方法对隐藏层的权重进行计算,对损失函数在隐藏层权重V方向进行求偏导:代入yok=σ(yik),对sigmoid函数求导:

再次代入yok=σ(yik),然后使用求导的链式法则:根据 得到:

代入hoj=σ(hij),对sigmoid函数求导:

与求 的方法一样,上一层的输出与隐藏层的权重变量无

关,可直接求导得 得到;

定义 得到:

利用隐藏层各神经元的δj(l)和输入层各神经元的输入、学习率η来修正连接权值Vij(l);

最后计算全局误差:

(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)其中IOQ表示事务类型,IE表示数据存储类型,M表示组数,sumfp表示功能点总数。