16、基于搜索的软件维护方法与工具

基于搜索的软件维护方法与工具

在软件开发和维护过程中,软件的转换、修复、模型转换以及重构等操作至关重要。下面将详细介绍这些操作的相关内容。

1. 程序转换

程序转换是将一个程序转变为另一个程序的行为。它通过将某种编程语言中的每个构造转换为相同语言或不同语言的不同形式来实现。程序转换被认为是促进软件系统演化的重要活动,其假设是原始源代码可以逐步转换为替代形式,输出的程序可能更易于理解和维护,或者没有漏洞。

1.1 问题定义

程序转换问题可视为一个优化问题,需要一个最优的转换公理序列(转换策略),以使输入程序更易于理解。转换可以应用于程序的不同点,例如控制流图(CFG)的节点。由于转换规则及其应用点众多,且许多规则需要按正确顺序应用才能达到预期效果,因此该问题难以解决,适合采用基于搜索的方法。基于搜索的方法可用于在包含所有可能允许的转换规则的搜索空间中识别次优的转换序列。

1.2 解决方案表示

解决方案由需要应用于输入程序的一系列转换表示。每个解决方案具有固定的 20 个可能转换的序列长度,包含特定转换的标识符。使用 FermaT2 转换工具来应用每个解决方案中编码的转换,该工具具有许多内置转换,例如 @merge-right (将选定语句合并到后续语句中)和 @remove-redundant-vars (删除源程序中的冗余变量)。

以下是一个程序转换的示例:

Original Code
if (e1) s1; else s2;
if (true) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值