基于搜索的软件工程(SBSE)_追逐梦想的顾咏丰_新浪博客

基于搜索的软件工程
---

基于搜索的软件工程 ( Search Based Software Engineering,简称 SBSE ),这个概念是由 Harman 等人[1] 1998年首次提出来的,该领域主要是采用  元启发式搜索 技术,从问题的解空间出发来解决软件工程问题。它为软件工程问题的求解提供了一个新的思路,经过几十年的发展,在软件测试方向有很好的应用,经统计有超过 50% 的论文关注的是软件测试和调试方向。

那么什么是“ 元启发式搜索”呢? 百度百科介绍 [2] “ 启发式搜索就是在状态空间 中的搜索,对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。”,用我们大白话来讲,就是一步一步的逼近目标。

遗传算法 ( Genetic Algorithm ),是一种模拟自然选择进化过程( 即适者生存,不适者淘汰 )的搜索算法。其使用 选择,交叉,变异操作,对原始种群进行进化和筛选,经过数轮迭代得到可能的最优解。

在遗传算法中,每一个可行解都被看作一个“染色体( Chromosome )”。而评价个体优劣程度的指标被称为“适应度( Fitness )”,适应度越高,表示个体越符合要求,反之越不符合要求。遗传算法的“操作算子( Genetic Operator )”包括:选择,交叉,和变异 3种基本形式。

大致流程:初始化一个指定规模的种群,种群中每个染色体都是算计生成;然后算法根据每个染色体的适应度采取选择,交叉和变异,对种群进行迭代;知道满足特定条件终止 1)达到迭代次数 2)得到最优解。

基于搜索的软件工程(SBSE)
图1. 遗传算法大概流程图


自动程序修复 ( Automatic Program Repair ),旨在与降低开发人员进行调试时的压力,本文的 APR 指的是基于测试集的程序修复方法( Approach to test-suites based program repair )。所谓基于测试集的程序修复就是:将补丁是否通过测试集来作为补丁是否合格的评判标准( 当然,这么做肯定有漏洞,因为有可能生成的补丁通过了测试集,但不是我们想要的,或者功能不完全的,这也是未来程序修复的难点与挑战之一 )。

玄跻峰等 [3] 统计和分析了2008 到 2015年间的相关文献,并将自动程序修复方法归结为3类,即:基于搜索的;基于代码穷举的;基于约束求解的。整体框架如下所示。

基于搜索的软件工程(SBSE)
图2. 2008 - 2015 的相关论文直方图

基于搜索的软件工程(SBSE)
图3. 基于测试集的程序修复方法框架

当然了,图3 所示的是大体的程序修复框架,在某些算法中某些步骤可能被简化。如“基于代码穷举”的补丁生成方法中,是没有第一步故障定位( Fault Localization )的,它将所有的语句自然排列。再如“基于约束求解”的补丁生成算法中,补丁生成后无需进行“验证补丁”这一环节。

To be continued ...


----------------------
【参考】


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值