复杂软件系统的重构技术:现状、问题与展望
发布时间:2021-10-27 07:19
软件重构是改善软件质量的一种重要手段,它在不改变软件外部行为特性的情况下,通过调整软件内部结构来提高软件的可理解性、可维护性和可扩展性。然而,随着开源软件的迅猛发展,软件的规模和复杂程度日益增加,现有的重构技术在应对规模庞大且复杂的软件系统时,重构效果并不如意。因此,提高重构技术的可扩展性一直是软件工程领域研究的热点。从技术负债角度出发,探究重构时机,思考重构技术对软件质量的深入影响,明确重构技术旨在寻找重构代码的自动化方法,从而降低维护成本,提高代码质量。文中对工程实例进行分析并对文献进行梳理,调研了自2010年至今国内外96篇相关领域的文献,尝试以复杂系统的视角对这些研究工作进行归纳、比较,提炼总结软件重构领域的研究方向与技术方法,探讨重构技术研究中的特点与难点,思考重构技术研究中存在的问题及未来的研究方向,对软件重构技术的研究趋势进行了展望。
【文章来源】:计算机科学. 2020,47(12)北大核心CSCD
【文章页数】:10 页
【部分图文】:
软件重构过程
重构序列的组合所形成的解空间十分庞大,因此从庞大的解空间中寻求一个最优的重构序列是十分困难的,而这正是搜索算法的优势所在。如图2所示,首先,针对需要被改进的软件系统,将此类系统转换成软件组件(类或方法)的集合或者抽象表示为图形的形式并作为算法的输入;然后,使用重构建议、软件质量度量指标和其他信息作为算法的指导过程,并且将所有的重构操作映射为向量作为解决方案的表现形式;最后,利用适应度函数(Fitness Function)动态评估解的优劣,在搜索收敛至最优或局部最优时,即可得到一组最优的重构序列。在这方面的工作中,Amal等提出了一种基于神经网络的适应度函数,通过遗传算法手动评估重构的解决方案以进行少量迭代,然后利用人工神经网络进行训练以评估剩余迭代的重构解决方案[40]。在某些重构问题中,任何两个或多个目标之间可能存在冗余。Dea等提出了一种新的软件重构方法,即PCA-NSGA-II多目标重构方法。该方法是在PCA-NSGA-II演化多目标算法的基础上改进而来的,通过去除冗余来保留冲突目标,从而避免维数灾难[41]。为了解决相互冲突的优化目标,Mkaouer等提出了一种新的重构问题表示方法,即将每个需要改进的质量属性视为一个独立的优化目标,利用NSGA-III算法,使用8个不同的目标来评估重构解决方案[42]。
【参考文献】:
期刊论文
[1]一种基于深度学习的上帝类检测方法[J]. 卜依凡,刘辉,李光杰. 软件学报. 2019(05)
[2]基于量子搜索的软件工程[J]. 吴楠,宋方敏,LI XiangDong. 中国科学:信息科学. 2015(05)
本文编号:3461130
【文章来源】:计算机科学. 2020,47(12)北大核心CSCD
【文章页数】:10 页
【部分图文】:
软件重构过程
重构序列的组合所形成的解空间十分庞大,因此从庞大的解空间中寻求一个最优的重构序列是十分困难的,而这正是搜索算法的优势所在。如图2所示,首先,针对需要被改进的软件系统,将此类系统转换成软件组件(类或方法)的集合或者抽象表示为图形的形式并作为算法的输入;然后,使用重构建议、软件质量度量指标和其他信息作为算法的指导过程,并且将所有的重构操作映射为向量作为解决方案的表现形式;最后,利用适应度函数(Fitness Function)动态评估解的优劣,在搜索收敛至最优或局部最优时,即可得到一组最优的重构序列。在这方面的工作中,Amal等提出了一种基于神经网络的适应度函数,通过遗传算法手动评估重构的解决方案以进行少量迭代,然后利用人工神经网络进行训练以评估剩余迭代的重构解决方案[40]。在某些重构问题中,任何两个或多个目标之间可能存在冗余。Dea等提出了一种新的软件重构方法,即PCA-NSGA-II多目标重构方法。该方法是在PCA-NSGA-II演化多目标算法的基础上改进而来的,通过去除冗余来保留冲突目标,从而避免维数灾难[41]。为了解决相互冲突的优化目标,Mkaouer等提出了一种新的重构问题表示方法,即将每个需要改进的质量属性视为一个独立的优化目标,利用NSGA-III算法,使用8个不同的目标来评估重构解决方案[42]。
【参考文献】:
期刊论文
[1]一种基于深度学习的上帝类检测方法[J]. 卜依凡,刘辉,李光杰. 软件学报. 2019(05)
[2]基于量子搜索的软件工程[J]. 吴楠,宋方敏,LI XiangDong. 中国科学:信息科学. 2015(05)
本文编号:3461130
本文链接:https://www.wllwen.com/kejilunwen/sousuoyinqinglunwen/3461130.html