面向软件重构的推荐方法研究
发布时间:2017-06-08 11:10
本文关键词:面向软件重构的推荐方法研究,由笔耕文化传播整理发布。
【摘要】:由于需求的改变导致软件在其生命周期内不断演化。随着程序员不断的增加或删减代码,软件原先的设计构架被打破,结构变得不再清晰,代码变得越来越难理解,软件的扩展和维护也变得越来越困难。软件重构是改善软件质量的一种重要手段。它在不改变软件外部行为特性的情况下通过调整软件内部结构以提高软件的可理解性、可维护性和可扩展性。自1992年Opdyke首次提出了软件重构的概念以来,软件重构迅速成为研究的热点,在工业界和学术界获得广泛的认可。研究人员针对软件重构开展了大量的研究工作,也设计实现了许多重构工具。软件重构是一项复杂的代码调整活动,它要求程序员不断做出各种复杂的决策。例如,在何处重构、何时应重构、以及如何重构等等。利用自动推荐技术以降低各种复杂重构决策的难度既是降低重构成本提高重构效果的一个重要途径,也是推广软件重构技术的一个重要技术基础。为此,本文面向软件重构研究相应的推荐方法以辅助程序员进行重构决策,从而降低重构难度并提高重构效果。本文的主要工作和贡献体现在以下几个方面:(1)基于代码库和特征匹配的函数名称推荐重命名是最常见的软件重构操作之一。程序员通过重命名操作给相关的软件实体赋予更有意义的名称。然而如何选择合适的名称就需要人来决定。对于缺乏经验的初学者或是母语并非英语的程序员,为函数拟定一个合适的名字并不容易。为此,本文提出一种基于代码库和特征匹配的函数名称推荐方法以辅助程序员为函数确定合适的名字。首先,该方法使用词性标注技术对代码库中的函数名称进行解析获取用于命名的候选词条。然后通过特征抽取技术将函数中代表函数特征的代码抽取出来,并在特征代码与候选词条之间建立关联关系。最后,将特征代码与待推荐函数相匹配筛选候选词条并按照规则为程序员推荐命名方案。实验的结果表明本文提出的方法具有较高的推荐成功率。(2)基于测试用例变化的软件重构推荐方法许多初学者往往缺乏软件重构的经验,对软件重构工具也不熟悉,因此很少使用工具实施重构。然而手工实施重构耗时易错。如果能够从代码的变化中及时发现重构的意图,就能提醒或指导程序员使用重构工具,进而减少人为的错误并降低软件重构的难度。为此,本文针对测试驱动开发(Test-Driven Development)提出一种基于测试用例变化的软件重构推荐方法。该方法通过在线监控的方式对测试代码进行动态监控,将测试代码的变化情况与预先定义的基于重构的测试代码变化模式的启发规则相匹配,从而为用户推荐重构。实验的结果表明该方法具有较高的推荐准确率。(3)基于优先级的代码坏味处理顺序推荐软件重构是消除代码坏味的一种有效手段。然而软件重构活动也需要耗费一定的人力资源。因此,在资源受限条件下可能无法通过重构消除所有的代码坏味。此时,我们应该优先选择和处理那些对软件危害较大的坏味类型才能最大限度地提高软件的质量。为此,本文,从代码坏味危害发生的概率、影响范围、是否对系统安全性构成威胁、是否影响软件的复用、是否影响软件的可理解性等几个方面分析了10种典型的代码坏味。依据分析的结果划分了代码坏味处理的优先级,明确了每个级别的特征(如安全性威胁,影响范围等)。通过实验表明,在资源受限情况下,按照本文推荐的基于优先级的代码坏味处理顺序实施重构能够有效的提高软件重构的整体效果。
【关键词】:软件重构 代码坏味 软件维护 推荐方法 测试驱动 重构自动化
【学位授予单位】:北京理工大学
【学位级别】:博士
【学位授予年份】:2015
【分类号】:TP391.3
【目录】:
- 摘要5-7
- Abstract7-16
- 第1章 绪论16-34
- 1.1 软件演化与软件重构16-18
- 1.2 面向软件重构的推荐方法18-26
- 1.2.1 软件重构机会推荐19-21
- 1.2.2 软件重构顺序推荐21-24
- 1.2.3 软件重构方案推荐24-25
- 1.2.4 软件重构推荐工具25-26
- 1.3 其他软件重构技术研究现状26-31
- 1.3.1 软件重构验证26-28
- 1.3.2 软件重构效果评估28-29
- 1.3.3 软件重构一致性29-30
- 1.3.4 基于图的软件重构方法研究30-31
- 1.4 尚待解决的问题31-32
- 1.5 研究内容32-33
- 1.6 论文组织结构33-34
- 第2章 基于代码库和特征匹配的函数名称推荐方法34-55
- 2.1 引言34-37
- 2.2 名称推荐方法37-44
- 2.2.1 方法概述37-38
- 2.2.2 检索相似函数38-40
- 2.2.3 函数名称解析40-41
- 2.2.4 特征代码抽取41-43
- 2.2.5 名称推荐43-44
- 2.3 实验验证44-52
- 2.3.1 实验设计44-47
- 2.3.2 实验过程47-48
- 2.3.3 实验结果与分析48-52
- 2.4 讨论52-54
- 2.4.1 实验人员52
- 2.4.2 项目的选取52
- 2.4.3 自然语言处理工具52-53
- 2.4.4 特征选择算法53
- 2.4.5 名称结构53
- 2.4.6 匹配算法53
- 2.4.7 实验结果的适用性53-54
- 2.5 小结54-55
- 第3章 基于测试代码变化的软件重构推荐方法55-70
- 3.1 引言55-56
- 3.2 软件重构推荐方法56-62
- 3.2.1 方法概述56
- 3.2.2 测试代码的动态监控56-57
- 3.2.3 变化分析57-58
- 3.2.4 基于规则的匹配58-62
- 3.3 实验验证62-67
- 3.3.1 实验设计62-63
- 3.3.2 实验过程63-64
- 3.3.3 实验结果和分析64-67
- 3.4 讨论67-68
- 3.4.1 实验人员67-68
- 3.4.2 项目选取68
- 3.4.3 实验结果68
- 3.5 小结68-70
- 第4章 基于代码坏味优先级的软件重构调度推荐方法70-90
- 4.1 引言70-73
- 4.2 典型代码坏味73-76
- 4.3 代码坏味处理优先级76-78
- 4.4 实验验证78-89
- 4.4.1 问卷调查78-80
- 4.4.2 重构历史分析80-83
- 4.4.3 重构效果验证83-88
- 4.4.4 讨论88-89
- 4.5 小结89-90
- 第5章 软件重构推荐系统原型设计与实现90-97
- 5.1 引言90
- 5.2 需求分析90-91
- 5.3 体系结构91-96
- 5.3.1 支撑体系91-92
- 5.3.2 数据库92
- 5.3.3 自然语言处理92
- 5.3.4 动态检测92-93
- 5.3.5 搜索引擎93
- 5.3.6 执行引擎93
- 5.3.7 解析器93-94
- 5.3.8 软件重构推荐94
- 5.3.9 图形用户界面94-96
- 5.3.10 其他插件96
- 5.4 小结96-97
- 第6章 结束语97-101
- 6.1 本文工作小结97-99
- 6.2 进一步工作设想99-101
- 参考文献101-119
- 攻读学位期间发表论文与研究成果清单119-120
- 致谢120-121
- 作者简介121
【共引文献】
中国期刊全文数据库 前3条
1 刘伟;胡志刚;刘宏韬;;基于抽象语法树和多态机制的复杂条件语句自动重构研究[J];电子科技大学学报;2014年05期
2 刘伟;胡志刚;刘宏韬;杨柳;;Automated pattern-directed refactoring for complex conditional statements[J];Journal of Central South University;2014年05期
3 刘伟;胡志刚;刘宏韬;;单例模式导向的源代码自动重构研究[J];小型微型计算机系统;2014年12期
中国博士学位论文全文数据库 前1条
1 金涛;业务过程模型检索与重构[D];清华大学;2012年
中国硕士学位论文全文数据库 前4条
1 张学鹏;基于重构的核电厂环境监测系统[D];南华大学;2012年
2 李霞;结合动态测试和静态分析的克隆代码重构[D];哈尔滨工业大学;2013年
3 李智超;基于支持向量机的克隆代码有害性评价方法研究[D];哈尔滨工业大学;2013年
4 黄雪;面向数字矿山信息系统的重构研究[D];中南大学;2014年
本文关键词:面向软件重构的推荐方法研究,,由笔耕文化传播整理发布。
本文编号:432330
本文链接:https://www.wllwen.com/shoufeilunwen/xxkjbs/432330.html