基于搜索的软件维护方法与工具
在软件开发和维护过程中,软件的转换、修复、模型转换以及重构等操作至关重要。下面将详细介绍这些操作的相关内容。
1. 程序转换
程序转换是将一个程序转变为另一个程序的行为。它通过将某种编程语言中的每个构造转换为相同语言或不同语言的不同形式来实现。程序转换被认为是促进软件系统演化的重要活动,其假设是原始源代码可以逐步转换为替代形式,输出的程序可能更易于理解和维护,或者没有漏洞。
1.1 问题定义
程序转换问题可视为一个优化问题,需要一个最优的转换公理序列(转换策略),以使输入程序更易于理解。转换可以应用于程序的不同点,例如控制流图(CFG)的节点。由于转换规则及其应用点众多,且许多规则需要按正确顺序应用才能达到预期效果,因此该问题难以解决,适合采用基于搜索的方法。基于搜索的方法可用于在包含所有可能允许的转换规则的搜索空间中识别次优的转换序列。
1.2 解决方案表示
解决方案由需要应用于输入程序的一系列转换表示。每个解决方案具有固定的 20 个可能转换的序列长度,包含特定转换的标识符。使用 FermaT2 转换工具来应用每个解决方案中编码的转换,该工具具有许多内置转换,例如 @merge-right (将选定语句合并到后续语句中)和 @remove-redundant-vars (删除源程序中的冗余变量)。
以下是一个程序转换的示例:
Original Code
if (e1) s1; else s2;
if (true)
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



