恭喜杭州电子科技大学俞东进获国家专利权
买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
龙图腾网恭喜杭州电子科技大学申请的专利基于代码异味的软件重构预测方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN114138328B 。
龙图腾网通过国家知识产权局官网在2025-05-27发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202111468006.8,技术领域涉及:G06F8/72;该发明授权基于代码异味的软件重构预测方法是由俞东进;翁乐辉;陈洁;陈信;陈宇廷;叶佳萍设计研发完成,并于2021-12-03向国家知识产权局提交的专利申请。
本基于代码异味的软件重构预测方法在说明书摘要公布了:本发明公开了一种基于代码异味的软件重构预测方法。该方法基于LGBM和LogisticRegression来实现软件重构的预测,合理利用了存在于源代码文件中蕴含的结构性信息、代码异味的强度和历史性信息,凭借不同信息度量之间强大的互补性提高了预测的效果。此外,通过过采样技术SMOTE解决了样本比例不均衡的问题。通过本发明方法能够高效预测软件的重构时机,对于软件的可维护性和可拓展性的提升具有非常重要的意义。
本发明授权基于代码异味的软件重构预测方法在权利要求书中公布了:1.基于代码异味的软件重构预测方法,其特征在于包括以下步骤:步骤一:给定待分析系统中m*n个源代码文件版本集合F=F1,1,F1,2,…,Fi,j,…,Fm,n,其中Fi,j表示源代码文件Fi的第j个版本,利用代码解析工具解析每一个源代码文件,将每一个源代码文件版本Fi,j的结构与异味信息度量表示为Si,j=className,classVersion,structure,hasSmell的形式,i=1,2,…,m,j=1,2,…,n,其中className表示源代码文件版本Fi,j的类名,设一个源代码文件包含一个类;classVersion表示源代码文件版本Fi,j在项目历史中的版本号,structure表示源代码文件版本Fi,j的结构特征集合W,hasSmell表示源代码文件版本Fi,j中是否存在某种代码异味,1表示存在异味,0则表示不存在;特征集合W=wLOC,wNOA,wCBO,wMPC,wTCC,wMcCabe,wWMC,其中wLOC表示该文件的代码行数,wNOA表示该文件中属性的个数,wCBO表示与该文件相耦合的目标类的数量,耦合即该文件中的方法调用了目标类的方法或变量;wMPC表示该文件中的方法调用其他方法的个数,WTCC表示通过访问相同的属性而直接发生联系的方法个数,wMcCabe表示该文件通过McVabe度量法计算得到的复杂度,wWMC表示该文件中方法的圈复杂度的和;步骤二:如果源代码文件版本Fi,j被识别为存在某种代码异味,判别是否具有这种代码异味的特征阈值集为T=w1|b1,...,wg|bg,...,wt|bt,其中wg为W中的一个特征,bg为识别为这种代码异味的特征wg对应的阈值,g=1,2,…,t,通过以下公式计算得到异味强度: 其中,mwg表示待分析系统中存在的、由于特征wg引起某种代码异味的最大或最小值:当wg超过bg时引起某种代码异味的时候选用最大值,当wg小于bg时引起某种代码异味的时候选用最小值;添加强度信息后源代码文件版本Fi,j的结构与异味信息度量表示为:S′i,j=className,classVersion,structure,hasSmell,intensity;步骤三:获取源代码文件历史信息度量:设源代码文件Fi在某个历史版本p中引入了代码异味,源代码文件Fi当前版本为j,则源代码文件版本Fi,j中关于历史信息度量表示为:Hi,j=className,classVersion,diffDays,diffVersions,action其中,diffDays表示版本p和j之间间隔的自然天数,diffVeersions表示版本p和j之间间隔的版本数,action表示版本p和j之间文件Fi发生修改的次数;步骤四:我们在源代码文件集合F中找到所有的代码异味消除的源代码文件版本,分成以下两类:1Fi,j的hasSmell=1,而Fi,j+1的hasSmell=0;2Fi,j的hasSmell=1,且j是源代码文件Fi的最后一个版本;根据1和2中的策略,在源代码文件集合F中获取到存在某种代码异味的所有的最后一个源代码文件版本Fi,j,组成代码异味消除的源代码文件集合,并通过过采样技术SMOTE将其进行扩充,形成ζP,即为数据集中的正样本,将源代码文件集合F中剩余的源代码文件版本作为数据集的负样本ζN,最后得到了完整的样本数据集:ζ=ζP∪ζN,其中ζP中每一个源代码文件版本对应的重构标签值y为1,ζN中的每一个源代码文件版本对应的重构标签值y为0;步骤五:使用特征递归消除技术、RandomForestClassifier和LGBMClassifier来保留最重要的z个特征,记为W*=w1,w2,…,wz;经过特征选择之后的源代码文件版本Fi,j用S*i,j,H*i,j来表示,其中S*i,j表示保留的结构与异味信息度量,H*i,j表示保留的历史信息度量;步骤六:将数据集中的一部分数据作为训练集ζtrain;步骤七:对于每一个源代码文件版本的信息表示S*i,j,H*i,j,将S*i,j输入到LGBM中得到输出h1,将H*i,j输入到LogisticRegression中得到输出h2,最终模型的输出表示重构的预测概率其中a1和a2表示权重,且a1+a2=1;步骤八:使用交叉熵损失函数来计算重构标签值y和输出之间的损失,损失函数的定义如下: 其中d表示训练的样本数;步骤九:利用训练集ζtrain来训练LGBM和LogisticRegression模型参数,直至达到最大迭代次数MaximumIter,获得训练之后最佳参数的LGBM和LogisticRegression模型;步骤十:对于一个源代码文件,首先按步骤一、步骤二、步骤三,获取到文件与异味信息度量和历史信息度量,然后根据步骤五抽取出最佳的特征,将这些特征输入到步骤九获得的模型中,最终获得关于此文件是否需要进行重构的预测概率,如果概率大于等于0.5则说明要进行重构,小于0.5则说明不需要。
如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人杭州电子科技大学,其通讯地址为:310018 浙江省杭州市钱塘新区白杨街道2号大街1158号;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。