软件演化的本质是由用户预期偏差所驱动的对软件的修改过程。要成功实施演化活动,涉及两个核心问题:“演化什么”和“如何演化”。其中“演化什么”定义在何处和什么范围内对软件系统实施演化活动;“如何演化”明确实现演化活动的方法、理论和技术。从这个意义上来说“演化什么”是“如何演化”的前提。本书围绕上述两个核心问题,从特征定位、影响范围分析、演化算法和演化评价四个方面展开论述,提出了一套数据驱动的软件演化方法。
样章试读
目录
- 目录
第1章 绪论 1
1.1 序言 1
1.2 软件维护 2
1.3 软件演化 3
1.4 软件演化的分类 3
1.5 软件演化的层次 4
1.6 软件演化过程 6
1.7 当前软件演化研究概述 7
1.7.1 语言层面上的研究 7
1.7.2 模型方面的研究 8
1.7.3 运行环境方面的研究 9
1.7.4 动态配置方法的研究 10
1.8 软件演化研究的意义 11
1.9 本书的特点 12
参考文献 13
第2章 可演化性预测 15
2.1 引言 15
2.2 预备知识 17
2.2.1 分组处理方法 17
2.2.2 半监督标签传播算法 18
2.3 基于半监督数据分组的软件可演化性预测模型 18
2.3.1 指标度量 19
2.3.2 数据标签传播 20
2.3.3 不平衡数据采样 21
2.3.4 基于数据分组方法可演化性预测模型 22
2.4 方法有效性验证 23
2.4.1 评价指标 23
2.4.2 实验过程 24
2.4.3 实验结果与分析 26
参考文献 29
第3章 面向行为主题的特征定位方法 32
3.1 引言 32
3.1.1 动态方法 32
3.1.2 静态方法 33
3.1.3 基于文本的方法 33
3.1.4 混合方法 35
3.2 相关知识 35
3.2.1 TF-IDF 35
3.2.2 LSI 36
3.2.3 Kmeans聚类算法 37
3.3 面向行为主题的特征定位方法 37
3.3.1 面向行为主题的特征定位方法概述 37
3.3.2 软件行为获取 38
3.3.3 执行迹主题建模 39
3.3.4 定位特征 41
3.4 方法有效性验证 42
3.4.1 实验数据 42
3.4.2 验证过程 43
3.4.3 实验标准的定义 44
3.4.4 实验结果与分析 45
3. 5 小结 48
参考文献 49
第4章 特征定位算法的改进 51
4.1 引言 52
4.2 相关知识 54
4.2.1 LDA 54
4.2.2 doc2vec 55
4.2.3 集成方法 55
4.3 面向特征定位问题的相似性计算方法 56
4.3.1 词性过滤 56
4.3.2 相似性计算 58
4.4 方法有效性验证 63
4.4.1 验证数据 63
4.4.2 评价标准 63
4.4.3 验证过程 64
4.4.4 验证结果 66
4.5 小结 69
参考文献 69
第5章 影响范围分析 71
5.1 引言 71
5.1.1 静态分析方法 71
5.1.2 动态分析方法 72
5.1.3 基于软件资源库挖掘的分析方法 72
5.1.4 混合分析方法 72
5.2 相关知识 73
5.2.1 传递闭包 73
5.2.2 关联规则学习 74
5.3 基于文本、执行迹的混合影响范围分析方法 75
5.3.1 执行迹获取 75
5.3.2 基于领域知识的执行迹降噪 76
5.3.3 波及效应分析 78
5.4 有效性验证 85
5.4.1 验证过程 86
5.4.2 评价标准 86
5.4.3 结果 89
5.5 结论 94
参考文献 94
第6章 超协调软件建模基础 96
6.1 引言 96
6.2 相关知识 97
6.2.1 软件演化模型的非协调性 97
6.2.2 多值时序逻辑 98
6.2.3 模型检测 99
6.3 超协调软件模型 100
6.4 基于SAM的软件演化活动验证 103
6.4.1 SAM模型的属性 103
6.4.2 基于多值时序逻辑的模型检测算法基础 105
参考文献 113
第7章 动态演化算法 115
7.1 引言 115
7.2 代码的静止状态 115
7.3 动态演化算法 117
7.3.1 删除算法 117
7.3.2 添加算法 118
7.3.3 替换算法 119
7.4 有效性验证 120
7.4.1 待演化系统用例 121
7.4.2 待演化系统构件图 121
7.4.3 待演化系统的SAM模型 122
7.4.4 待演化系统演化需求 125
7.4.5 执行动态演化算法 125
7.5 小结 129
参考文献 129
第8章 结构约束性确认 130
8.1 引言 130
8.2 软件确认研究综述 130
8.3 软件的行为 131
8.4 事务原子性约束和保序性约束 133
8.5 系统活性和公平性 135
8.6 小结 137
参考文献 138
第9章 功能语义约束确认 139
9.1 研究综述 139
9.2 确认过程 139
9.2.1 源数据获取及处理 140
9.2.2 确认过程 141
9.3 有效性验证 142
9.3.1 实验数据及其获取 142
9.3.2 实验过程 143
9.3.3 结果和分析 144
9.4 小结 148
参考文献 148