位置:立项数据库 > 立项详情页
无定型克隆代码的检测及重构方法
  • 项目名称:无定型克隆代码的检测及重构方法
  • 项目类别:面上项目
  • 批准号:61173021
  • 申请代码:F020202
  • 项目来源:国家自然科学基金
  • 研究期限:2012-01-01-2015-12-31
  • 项目负责人:苏小红
  • 依托单位:哈尔滨工业大学
  • 批准年度:2011
中文摘要:

针对不同软件工程实践导致不同类型的克隆代码使软件结构复杂难于理解和维护的问题,以及遗产系统逆向工程的应用背景,结合软件自动测试、程序静态分析、数据挖掘和模式聚类等理论,研究建立将克隆代码检测、相关缺陷检测和克隆代码重构有机融为一体的无定型克隆代码检测与重构模型。基于聚类分析识别功能内聚的代码片段,避免产生语义无关或功能交叉的代码片段,降低克隆代码检测的时间复杂度;在此基础上结合随机动态测试和程序静态分析,检测语法不同但功能等价的克隆代码,并采用从功能到语法到结构语义逐级分析的方法,在统一的框架下,检测由不同原因产生的功能/语法/结构语义等价或相似的克隆代码,提高克隆代码检测的准确性和检测模型的适应性;综合考虑程序结构度量和运行效率并进行缺陷检测过滤,提取适于重构的克隆代码,对不同类型的克隆采取不同的重构转换方法,提高克隆代码重构的效率,并确保重构质量和安全,增强软件的可维护性和可理解性。

结论摘要:

针对不同软件工程实践导致不同类型的克隆代码使软件结构复杂难于理解和维护的问题,以及遗产系统逆向工程的应用背景,结合软件自动测试、程序静态分析、数据挖掘和模式聚类等理论,研究建立将克隆代码检测、相关缺陷检测和克隆代码重构有机融为一体的无定型克隆代码检测与重构模型,为克隆代码检测及重构探索了一种新思路。发表研究论文39篇,其中SCI国际期刊论文6篇,EI检索论文37篇,国内一级期刊论文6篇。主要研究成果如下(1)针对已有的克隆代码检测方法因生成语义无关、无意义的克隆代码碎片而导致大量误检的问题,提出在克隆代码检测之前,先基于K-近邻聚类方法识别和分离功能交叉、低内聚的代码片段,提取功能内聚的代码片段,仅在功能内聚的代码片段中检测克隆代码,不仅可以降低克隆代码检测的时间复杂度,还可以降低误检以及判定和提取适于重构的克隆代码的复杂性。(2)针对目前很多克隆代码检测方法仅适合检测语法或结构语义相似的克隆代码,而对功能等价但程序文本和语法结构差别很大的克隆代码缺少有效的检测方法的问题,提出将自动随机测试与程序静态分析相结合,解决语法结构不同但功能等价的克隆代码的检测问题。(3)针对已有的克隆代码检测方法通常只能检测特定类型的克隆代码,对克隆代码坏味的识别能力有限的问题,提出“功能→语法→结构语义”逐级分析的方法,实现无定型克隆代码的检测,能够有效增强克隆代码检测模型的适应性及其对克隆代码坏味的识别能力。(4)针对目前已有的克隆代码重构方法仅从程序结构度量的角度研究重构方法,而未考虑程序的运行效率,也未结合克隆代码和冗余代码引起的逻辑和语义缺陷检测的问题,提出将性能和结构度量与缺陷检测过滤相结合实现过程替换方案的优选,并通过对克隆代码的分类转换实现无定型克隆代码的重构,同时采用动态测试验证相似克隆代码的重构转换的正确性,不仅能提高克隆代码重构的效率,还可以确保重构的质量和重构安全。(5)针对传统克隆代码重构方法难于分析不连续和近似克隆代码,提出一种语义保持的克隆代码无定型过程提取方法,在保留程序语义一致性约束的条件下,对程序进行无定型变换,降低了对未标记语句提升的需求,并通过插入控制变量和条件语句融合近似克隆代码的差异点,实现了近似克隆代码的过程提取,提高了克隆代码提取的准确性和适用性。


成果综合统计
成果类型
数量
  • 期刊论文
  • 会议论文
  • 专利
  • 获奖
  • 著作
  • 47
  • 28
  • 0
  • 0
  • 0
期刊论文
会议论文
相关项目
期刊论文 13 会议论文 10
期刊论文 41 获奖 3 专利 2 著作 1
苏小红的项目