摘要 | 第4-6页 |
ABSTRACT | 第6-7页 |
第1章 绪论 | 第16-30页 |
1.1 课题来源 | 第16页 |
1.2 课题的研究目的和意义 | 第16-17页 |
1.3 克隆代码重构的国内外研究现状及分析 | 第17-25页 |
1.3.1 克隆代码的定义与类型 | 第17-20页 |
1.3.2 克隆代码产生的原因 | 第20页 |
1.3.3 克隆代码的危害 | 第20-21页 |
1.3.4 克隆代码检测技术 | 第21页 |
1.3.5 克隆代码的进化分析 | 第21页 |
1.3.6 面向C程序的自动化重构工具 | 第21-22页 |
1.3.7 克隆代码重构 | 第22-24页 |
1.3.8 克隆代码重构存在的问题 | 第24-25页 |
1.4 模块间依赖关系的研究现状及分析 | 第25-27页 |
1.4.1 进化软件中模块间的依赖关系 | 第25-26页 |
1.4.2 重构对模块间依赖关系的影响 | 第26页 |
1.4.3 模块间依赖关系的进化检验存在的问题 | 第26-27页 |
1.5 主要研究内容 | 第27-30页 |
第2章 可重构克隆代码的预处理方法研究 | 第30-59页 |
2.1 引言 | 第30页 |
2.2 克隆代码预处理存在的问题 | 第30-35页 |
2.2.1 克隆代码相关软件缺陷检测存在的问题 | 第31-34页 |
2.2.2 识别重构机会的困难 | 第34-35页 |
2.3 可重构克隆代码的预处理算法 | 第35-49页 |
2.3.1 自适应K-最近邻聚类 (A-KNN) | 第36-40页 |
2.3.2 程序依赖图 | 第40-41页 |
2.3.3 耦合度量 | 第41页 |
2.3.4 算法描述 | 第41-49页 |
2.4 实验结果与分析 | 第49-58页 |
2.4.1 实验数据来源 | 第49页 |
2.4.2 实验结果与分析 | 第49-58页 |
2.5 本章小结 | 第58-59页 |
第3章 不连续克隆代码无定型过程提取方法研究 | 第59-88页 |
3.1 引言 | 第59-60页 |
3.2 不连续克隆代码的过程提取及存在问题分析 | 第60-63页 |
3.2.1 不连续的克隆代码 | 第60-61页 |
3.2.2 克隆代码的保持语法不变的过程提取方法及存在问题分析 | 第61-63页 |
3.3 程序的图形表示 | 第63-69页 |
3.3.1 控制流图 | 第63-64页 |
3.3.2 控制流分析 | 第64-65页 |
3.3.3 数据流分析 | 第65-67页 |
3.3.4 控制依赖 | 第67页 |
3.3.5 抽象语法树 | 第67-68页 |
3.3.6 程序依赖图 | 第68-69页 |
3.4 语义保持的不连续克隆代码无定型过程提取算法 | 第69-77页 |
3.4.1 保持语法不变的过程提取 | 第70页 |
3.4.2 无定型过程提取 | 第70-71页 |
3.4.3 算法描述 | 第71-73页 |
3.4.4 语义保持的程序转换规则 | 第73-75页 |
3.4.5 程序实例 | 第75-77页 |
3.5 实验结果与分析 | 第77-87页 |
3.5.1 实验数据来源 | 第77页 |
3.5.2 算法有效性验证 | 第77-86页 |
3.5.3 算法复杂性分析 | 第86-87页 |
3.6 本章小结 | 第87-88页 |
第4章 近似克隆代码无定型过程提取方法研究 | 第88-111页 |
4.1 引言 | 第88-89页 |
4.2 近似克隆代码过程提取及存在问题分析 | 第89-91页 |
4.2.1 近似克隆代码的研究现状 | 第89页 |
4.2.2 近似克隆代码的过程提取及存在问题分析 | 第89-91页 |
4.3 近似克隆代码无定型过程提取算法 | 第91-99页 |
4.3.1 语义保持的程序转换规则 | 第93-94页 |
4.3.2 程序实例 | 第94-99页 |
4.4 实验结果与分析 | 第99-109页 |
4.4.1 实验数据来源 | 第99-100页 |
4.4.2 算法有效性验证 | 第100-105页 |
4.4.3 算法复杂性分析 | 第105-106页 |
4.4.4 算法代价-收益评估 | 第106-109页 |
4.5 本章小结 | 第109-111页 |
第5章 重构对模块间依赖影响的研究 | 第111-139页 |
5.1 引言 | 第111页 |
5.2 模块间依赖关系分析存在的问题 | 第111-116页 |
5.2.1 过程提取与模块间的依赖关系分析 | 第111-114页 |
5.2.2 软件进化 | 第114页 |
5.2.3 进化软件中模块间的依赖关系 | 第114-115页 |
5.2.4 耦合度量 | 第115页 |
5.2.5 相对依赖理论 | 第115-116页 |
5.2.6 模块间依赖关系的进化检验存在的问题 | 第116页 |
5.3 度量方法 | 第116-118页 |
5.3.1 软件度量 | 第116-117页 |
5.3.2 与模块规模相关的依赖的度量 | 第117-118页 |
5.4 实验结果与分析 | 第118-126页 |
5.4.1 数据来源 | 第118-119页 |
5.4.2 依赖聚集的不平衡性存在于软件的整个生命周期内 | 第119-121页 |
5.4.3 依赖聚集不平衡性的变化 | 第121-122页 |
5.4.4 重构与依赖聚集不平衡性变化的关系 | 第122-126页 |
5.5 应用研究 | 第126-138页 |
5.5.1 生物信息学中软件框架比较的研究 | 第126-129页 |
5.5.2 标准制定的德尔菲层次分析法 | 第129-130页 |
5.5.3 实例研究 | 第130-138页 |
5.6 本章小结 | 第138-139页 |
结论 | 第139-141页 |
参考文献 | 第141-152页 |
附录A 被测产品所有版本CBO和DIT的聚集索引 | 第152-167页 |
附录B 被测产品的重构信息 | 第167-171页 |
攻读博士学位期间发表的论文及其他成果 | 第171-173页 |
致谢 | 第173-174页 |
个人简历 | 第174页 |