第1章 绪论 1
1.1 软件重构的概念 1
1.2 代码坏味问题 2
1.3 软件重构规则 20
1.4 软件重构流程 20
1.5 软件重构研究现状 21
1.6 主要研究内容 23
第2章 模型重构 24
2.1 模型 24
2.2 软件模型 24
2.2.1 模型驱动的体系结构 25
2.2.2 以模型为核心的迭代开发 26
2.2.3 以模型为核心的软件维护 28
2.3 模型重构 29
2.4 模型重构的方法和工具 31
2.5 模型重构主要问题 31
2.6 自动化模型重构方案 33
2.6.1 图转换技术 34
2.6.2 基于图转换的模型重构方案 35
2.7 小结 35
第3章 模型重构描述语言 36
3.1 形式化的意义 36
3.2 形式化规则描述语言 37
3.2.1 基本概念 37
3.2.2 设计模型的形式化表示 38
3.2.3 自由变量 38
3.2.4 多重性 39
3.2.5 嵌套模式 40
3.2.6 序列 41
3.2.7 负面应用条件 42
3.2.8 不存在 42
3.2.9 所有 43
3.2.10 OCL约束 44
3.3 模型的形式化描述 44
3.3.1 简单模式及模式匹配 44
3.3.2 复杂模式及模式匹配 45
3.4 模型重构的形式化规则 46
3.5 形式化语法规则 48
3.6 模型重构形式化实例 49
3.7 小结 51
第4章 模型重构约束的描述与验证 52
4.1 特性保持约束 52
4.2 模型重构实例 53
4.3 重构规则的表示 54
4.4 重构约束的描述 56
4.5 重构约束的验证 59
4.6 适用条件 62
4.7 小结 63
第5章 模型坏味通用检测方法 64
5.1 坏味检测概述 64
5.2 通用检测方法设计思路 64
5.3 CSP问题及其求解方法 65
5.4 图模式匹配到CSP的转换 66
5.5 通用检测方法 67
5.6 通用检测方法的局限性 68
5.7 小结 68
第6章 顺序图中的克隆块检测 70
6.1 顺序图中的克隆块 70
6.2 基本顺序图及后缀树 71
6.2.1 基本顺序图及克隆块 71
6.2.2 后缀树 73
6.3 顺序图中克隆块的检测 75
6.3.1 检测方案设计思路 75
6.3.2 基本顺序图的克隆块检测 75
6.3.3 顺序图的高级特性及其处理对策 79
6.4 检测测试 82
6.5 小结 86
第7章 用况模型中的重复事件流片段检测 87
7.1 用况抽象模型与特征追踪关系 88
7.2 关键词抽取与事件相似度 89
7.3 事件流片段相似度 91
7.4 基于启发式搜索的相似事件流检测算法 91
7.5 算法分析 92
7.6 算法测试 93
7.7 小结 94
第8章 重叠用况检测 95
8.1 重叠用况问题 95
8.2 重叠用况特征 95
8.3 重叠用况 96
8.3.1 教务管理系统功能说明 96
8.3.2 重叠用况的影响 97
8.3.3 对重叠用况采取的措施 98
8.3.4 重叠用况难于检测 98
8.4 重叠用况的检测方法 98
8.4.1 方法概览 98
8.4.2 目标的标识与比较 99
8.4.3 生成状态机图 100
8.4.4 检测重叠状态迁移路径 103
8.4.5 检测重叠消息序列 104
8.5 算法测试 105
8.6 小结 106
第9章 重构调度策略 107
9.1 调度的重要性 107
9.2 重构冲突示例 108
9.3 重构质量度量模型 109
9.4 重构冲突的形式化表示 111
9.5 调度策略 111
9.5.1 方法概述 111
9.5.2 冲突矩阵 112
9.5.3 调度模型 113
9.5.4 调度策略 114
9.6 算法测试 117
9.6.1 测试项目 117
9.6.2 测试流程 117
9.6.3 测试结果 118
9.7 小结 122
第10章 基于图转换的模型重构工具 123
10.1 重构工具的现状 123
10.2 功能需求 124
10.3 体系结构 125
10.3.1 建模工具及元建模工具 126
10.3.2 规则描述语言编辑器 128
10.3.3 规则描述语言解析器 129
10.3.4 冲突检测 129
10.3.5 坏味检测 130
10.3.6 重构调度 130
10.3.7 执行引擎 130
10.3.8 其他插件 130
10.4 小结 131
第11章 方法抽取重构的检测与分析 132
11.1 概述 132
11.2 方法抽取重构 133
11.3 方法抽取重构检测 139
11.4 方法抽取检测算法 141
11.4.1 查找新方法 141
11.4.2 判断方法抽取 147
11.5 方法抽取检测插件的实现 154
11.6 插件测试 165
11.6.1 测试结果 165
11.6.2 测试分析 167
11.7 小结 177
第12章 实时增量式重构检测 178
12.1 实时检测和后期集中检测分析 178
12.2 集成环境中重构工具 179
12.3 实时增量式检测框架 184
12.3.1 监听器 185
12.3.2 代码坏味检测与重构工具 186
12.3.3 反馈控制器 187
12.3.4 代码坏味视图 188
12.4 实时增量式坏味检测插件 188
12.4.1 插件结构 188
12.4.2 ResListener监听器 192
12.4.3 检测器 197
12.5 实时增量式坏味检测插件的测试 223
12.5.1 测试对象 223
12.5.2 测试过程 224
12.6 小结 226
第13章 面向代码坏味检测的阈值动态优化方法 227
13.1 概述 227
13.1.1 研究背景与研究目标 227
13.1.2 相关研究 229
13.2 方法框架 230
13.2.1 方法流程与框架 230
13.2.2 坏味检测 231
13.2.3 手工确认与重构 231
13.2.4 反馈收集 231
13.2.5 阈值优化 231
13.3 阈值优化算法 232
13.3.1 阈值优化目标 232
13.3.2 最优阈值搜索 234
13.4 实验验证 239
13.4.1 实验对象 239
13.4.2 代码坏味及其数据收集 240
13.4.3 遗传算法参数配置 246
13.4.4 实验过程 247
13.4.5 实验结果与分析 247
13.5 小结 253
参考文献 254