- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
?
?
LightGBM融合CFS的开发者感知代码异味强度预测模型研究
?
?
宇 通,高建华
(上海师范大学 计算机科学与技术系,上海 200234)
1 引 言
代码异味是程序源代码中任何可能表明问题更深层次的特征,通常由不合理的代码设计和不恰当的开发操作引起,即如果软件系统包含代码异味,则通常表明代码质量存在问题.传统的代码异味识别方法带有极大的主观性,并且因开发者、开发语言、开发方法的不同而异.
相关研究人员将常见的代码异味按照其不同特点进行了分类.Fowler等人[1]定义了22种发现的代码异味,针对如何检测代码异味,Moha等人[2]提出DéCOR的检测方法以及DETEX一种实例化该方法的检测技术,但该方法不能检测代码异味的强度.
代码异味作为软件技术债务[3]的直接体现,会随时间推移而在软件系统中堆积[4],因为软件在开发与使用阶段经常会因需求变更而进行扩展[5],增加新需求或修改原有需求.在此过程中由于开发时间或其他条件限制或通常会使源代码复杂度提高[6],从而降低了软件质量与可维护性.代码异味问题应尽快得到解决,正如Macia[7]在实证分析中得出的结论,如果开发早期阶段在代码中引入了异味,如不尽快消除便可能在代码和体系结构级别上导致更为严重的问题.
为了解决异味问题引入了重构[1],重构是在不改变软件外部行为的条件下,改善代码内部结构的技术.进行代码重构是提升软件质量的常用做法.
Zhang等人[8]对代码异味与重构相关的研究现状做了系统的阐述,他们发现现有的大多数研究集中于开发自动检测代码异味的工具或方法,而少有关于代码异味的实证性研究.
Basili等人[9]提出使用面向对象的一系列度量指标(CK)来预测软件项目是否存在缺陷,但并未对软件中存在的代码异味进行预测.
选择重构代码的顺序至关重要,Yamashita等人[10]发现并非所有代码异味的危害程度都相同.有些异味程度较轻而不会对软件质量造成缺陷,因此应优先重构异味较严重即异味强度大的代码.选择合适的方法对代码异味强度进行预测有利于对代码异味的处理进行优先级排序,可使异味强度大的代码得到优先处理,以节省人力物力成本.
在重构的先后顺序上,Zhang等人[11]提出重构优先级概念,即根据不同代码异味的严重性确定重构的先后次序,但只定性分析了软件缺陷与代码异味的关系,没有进行深入研究.
Ouni等人[12]利用软件开发历史信息,运用多目标优化的方法确定重构操作的最佳顺序以减少系统中的异味数量,提高了重构效率.Vidal等人[13]开发了SPIRIT工具,根据代码异味类型、过去做出的修改、系统修改可能性的评估,3个重要度量标准对代码异味进行排序.但此类方法均未综合考虑代码的各项度量指标.
在异味严重性检测方法上,Fontana等人[14]提出使用机器学习技术对代码异味严重性进行检测,运用了机器学习分类与回归模型,使用软件多种度量指标作为模型输入进行预测.
Pecorelli等人[15]在进行代码异味处理优先级排序时比较了RF、LR(逻辑回归)、朴素贝叶斯等机器学习算法,并验证了RF具有最佳效果,但未经特征筛选过程且模型精度与运行效率都有待提高.
在特征选择方面,通常原始数据集中存在着冗余和不相关特征,不经过处理可能会导致过拟合,引发“维度灾难”[16],Hall[17]提出使用相关性分析研究机器学习中的特征选择问题,以提高机器学习模型性能,取得了良好的效果.
Ke等人[18]提出了LightGBM,一种实现GBDT(梯度提升决策树)算法的框架,在保证高精度的同时具有更快的训练速度,也实现了更低的内存消耗.LightGBM已被运用在金融领域如加密货币价格趋势预测[19]以及医学领域如针对乳腺癌患者的miRNA分类[20],均取得了良好的效果,但目前还没有使用LightGBM进行代码异味强度预测的相关研究.
对此,本文提出了一种基于LightGBM融合CFS的开发者感知代码异味强度预测模型,该模型综合考虑代码产品与过程度量指标,使用经相关性分析筛选后的高相关特征,运用LightGBM算法对数据集中所考虑的4种代码异味实例进行异味强度预测.
本文的主要贡献有如下3个方面:
1)在统计层面分析了选取的代码度量指标与异味强度的相关关系,并选用软件代码的多个不同层面的度量指标,综合构建代码异味强度预测模型.
2)提出了一种基于LightGBM融合CFS的代码异味强度预测模型,结合相关性分析进行特征选择,并对LightGBM模型参数进行调整,根据模型评价指标对模型进行优化.
3)基于开发者感知的代码异味数据集,分别对软件项目中4种不同类型代码异味进行研究并将本文提出的基于LightGBM融合CFS模型与RF模型进行多方面对比,验证了本文提出的模型相比RF模型在预
原创力文档


文档评论(0)