土豆洋芋山药蛋原创,转载请注明出处,尤其是注明“土豆洋芋山药蛋”哦

下面我将从4个方面介绍SBSE(Search-Based Software Engineering)——即基于搜索的软件工程:
1.引入背景
2.技术和应用分析
3.SBSE优势
4.总结

话不多说,开始上车···

1.引入背景


软件工程(SE)中通常会有一大堆令人眼花缭乱的选择,要找到好的解决方案是很困难的
软件工程要解决的问题是:在相互竞争和潜在冲突的目标之间找到合适的平衡

传统软件工程(SE)的通常面临的问题:
(1)该程序中覆盖所有分支的最小测试用例集是什么?
(2)构建该系统体系结构以提高其可维护性的最佳方式是什么?
(3)平衡软件开发成本和客户满意度的需求集是什么?
(4)对于这个软件开发项目,资源的最佳配置是什么?
(5)应用于这个系统的最佳重构步骤序列是什么?

这些问题的本质是什么呢?
这些问题的答案可以从测试、设计、需求工程、SE管理和重构的文献中得到。这些问题涉及软件工程的不同方面,似乎将由不同的会议和专门的期刊讨论,而且几乎没有共同之处。

然而,所有这些问题本质上都是优化问题

SBSE已经应用于测试、设计、需求、项目管理和重构。

SBSE简介

在SBSE(Search-Based Software Engineering )中,术语“搜索”是指使用的基于元启发式搜索的优化(SBO)技术

SBSE试图将SE问题重新表述为SBO问题(简称“搜索问题”)。

一个搜索问题是在候选解决方案的搜索空间中寻找最优或接近最优的解决方案,由适应度函数指导。

起源
起源可以追溯到20世纪70年代早期关于优化的早期研究。目前已知的对SE问题应用优化的最早尝试是Miller和Spooner在软件测试领域于1976年提出的。
SBSE一词最早由哈曼和琼斯在2001年使用

哈曼和琼斯发现了应用SBO解决SE问题的两个关键因素
(1)问题的表示方式 Solution Representation
(2)适应度函数的定义 Fitness Function

SBSE使用到的技术
软件的虚拟本质使它非常适合SBO 。这是因为适应性是直接根据工程构件来计算的,不需要对所有其他工程优化方法固有的模拟和建模。SE领域也充满了丰富的度量标准,可以作为适应度函数的初始候选

各种各样的优化和搜索技术可以也已经被使用。最广泛使用的是局部搜索、模拟退火(SA)、遗传算法(GAs)、遗传规划(GP)和爬山(HC)。


论文中统计于2012年,之后论文数量仍是上升趋势

SBSE研究的数量有了相当大的增长,整体发展势头良好。

在整个SBSE文献中,50%+的人关注与测试相关的SE应用。

2. 技术和应用分析

EAs使用频率最高,代表了经典的优化算法,如遗传算法,遗传规划等(EAs*代表了自称为优化算法但还未被证实)。

模拟退火算法,爬山算法紧跟其后。


矩形代表算法,圆形代表概念节点(综合应用领域),椭圆带边应用领域。

下面的应用场景上面也会用到;
上面的算法下面也会用到。

从图中可以发现测试的工作很重要,这也解释了为什么SBSE在测试领域的应用占到了50%+。

有趣的发现:

软件测试几乎应用到了所有的领域。

  1. TS,SQP,MA,EDA四种技术目前仅仅被用在了软件测试领域。

  2. 应用最广泛的技术是SA,Eas。

SBSE在软件测试中的应用——SBST起源

优化技术在软件测试和验证中的首次应用可能要追溯到James King的开创性博士论文[1]。

使用元启发式搜索技术的第一篇论文是Boyer、Elspas和Levitt在选择系统的应用[2]

遗传算法在软件工程问题上的首次应用通常也归因于SBST领域,Xanthakis等的工作,他引入了一种遗传算法来开发整个测试套件。[3]

可以看出,总体趋势继续表明,每年论文数量呈多项式增长,突出了SBST的兴趣广度和强劲的健康状况。

如果这一趋势继续下去,在本十年结束之前将有超过1700篇SBST论文。

最初SBSE 领域由SBST主导。

多年来,这一比例有所下降,稳定在50%左右。这代表了SBSE的非测试相关领域的增长,而不是SBST上论文数量的下降。

SBSE论文在测试问题上的比例稳定在大约相当于整个软件工程一半的水平, 这也是SBSE日益成熟的一个标志。

SBST——应用和工具

SBST现在已经足够成熟,已经从实验室研究过渡到工业应用,例如Daimler[4]、爱立信[5]和微软[6]

还有用于自动程序修复的公开的SBSE工具[7]和用于流行语言的SBST工具,如AUSTIN[8]、用于C语言的开源SBST系统和用于Java的开源SBST系统EvoSuite[9]。

3. SBSE优势

SBSE研究项目的显著特征之一是SBSE应用于的各种不同的SE问题。

SBO(search-based optimization)在很少的领域仍然没有被应用

在将基于搜索的方法应用于SE问题之前,必须完成的两个主要任务是定义问题的表示,以及捕获要优化的目标或目标的适应度函数。一旦完成这两个任务,就可以开始从许多SBO技术的应用中获得结果。

4. 总结

SBSE的未来是光明的。与SBSE相关的技术肯定适用于许多领域,但尚未充分考虑。在现有的应用领域,结果已经非常激动人心。

如果我们把软件工程看作是一门真正的工程学科,那么我们当然应该接受SBSE作为一个自然的结果。

优化是所有工程的基石!!!

本文参考文献(这些内容是从哪看来的)
[1] Harman M, Jia Y, Zhang Y. Achievements, Open Problems and Challenges for Search Based Software Testing[C]// IEEE, International Conference on Software Testing, Verification and Validation. IEEE Computer Society, 2015:1-12.
[2] Harman M, Mansouri S A, Zhang Y. Search-based software engineering:Trends, techniques and applications[J]. Acm Computing Surveys, 2012, 45(1):1-61.


本文索引文献(你看到的有下标的文献都在哪)
[1] James Cornelius King. A Program Verifier. PhD thesis, Carnegie Mellon University, 1969.
[2] Robert S. Boyer, Bernard Elspas, and Karl N. Levitt. SELECT – a formal system for testing and debugging programs by symbolic execution. In International Conference on Reliable Software, pages 234–245, New York, NY, USA, 1975. ACM.
[3] S. Xanthakis, C. Ellis, C. Skourlas, A. Le Gall, S. Katsikas, and K. Karapoulios. Application of genetic algorithms to software testing. In 5th International Conference on Software Engineering and its Applications, pages 625–636, Toulouse, France, 1992.
[4] Joachim Wegener and Oliver B¨uhler. Evaluation of different fitness functions for the evolutionary testing of an autonomous parking system. In Genetic and Evolutionary Computation Conference (GECCO 2004), pages 1400–1412, Seattle, Washington, USA, June 2004. LNCS 3103.
[5] Wasif Afzal, Richard Torkar, Robert Feldt, and Greger Wikstrand. Search-based prediction of fault-slip-through in large software projects. In Second International Symposium on Search Based Software Engineering (SSBSE 2010), pages 79–88, Benevento, Italy, 7-9 September 2010.
[6] Nikolai Tillmann, Jonathan de Halleux, and Tao Xie. Transferring an automated test generation tool to practice: From Pex to Fakes and Code Digger. In 29th ACM/IEEE International Conference on Automated Software Engineering (ASE), pages 385–396, 2014.
[7] Claire Le Goues, ThanhVu Nguyen, Stephanie Forrest, and Westley Weimer. GenProg: A generic method for automatic software repair. IEEE Transactions on Software Engineering, 38(1):54–72, 2012.
[8] Kiran Lakhotia, Mark Harman, and Hamilton Gross. AUSTIN: An open source tool for search based software testing of C programs. Journal of Information and Software Technology, 55(1):112–125, January 2013.
[9] Gordon Fraser and Andrea Arcuri. EvoSuite: automatic test suite generation for object-oriented software. In 8th European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE ’11), pages 416–419. ACM, September 5th - 9th 2011.

SBSE—基于搜索的软件工程简介相关推荐

  1. 转载:土豆洋芋山药蛋的博客: SBSE—基于搜索的软件工程简介

    SBSE-基于搜索的软件工程简介 2018年07月21日 22:46:04 土豆洋芋山药蛋 阅读数:125 版权声明:欢迎转载,转载请注明出处:土豆洋芋山药蛋 https://blog.csdn.ne ...

  2. 初识基于搜索的软件工程

    初识SBSE(基于搜索的软件工程) 2017年11月26日 定义:基于搜索的软件工程(Search Based Software Engineering, SBSE)是传统软件工程和智能计算(Inte ...

  3. TypeWriter: Neural Type Prediction with Search-based Validation基于搜索的神经网络预测器

    ABSTRACT 维护使用动态类型语言(JavaScript,Python等)写的大型数据库是非常有挑战性的.简单 数据兼容性错误激增,缺乏IDE支持和API 难理解.最近的一些工作尝试用静态分析或概 ...

  4. 基于搜索的贝叶斯网络结构学习算法-K2

    部分内容取自:[Cooper and Herskovits, 1991] Cooper, G. and Herskovits, E. (January, 1991). A Bayesian metho ...

  5. 基于自然语言的软件工程和程序设计(下)

    软件发展至今,无论是编程语言,还是软件工程,乃至是互联网的趋势发展,都是飞速发展.于是,我们便迷茫于这样形形色色的语言和概念之间,无所适从.其实,我们不妨返璞归真,回到最初,让我们从语义出发,来讨论这 ...

  6. CV之FD之HOG:图像检测之基于HOG算法、简介、代码实现(计算图像相似度)之详细攻略

    CV之FD之HOG:图像检测之基于HOG算法.简介.代码实现(计算图像相似度)之详细攻略 图像检测之基于HOG算法.简介.代码实现(计算图像相似度)之详细攻略 相关文章:CV之FD之HOG:图像检测之 ...

  7. 软件工程---16.基于构件的软件工程

    CBSE CBSE是定义.实现.集成或组装松散耦合的独立构件成为系统的过程. 基于构件的软件工程的要素有: 完全由接口进行规格说明的独立构件. 构件标准使构件集成变得更为容易. 中间件为构件集成提供软 ...

  8. 基于python渗透测试_Python中基于属性的测试简介

    基于python渗透测试 by Shashi Kumar Raja 由Shashi Kumar Raja Python中基于属性的测试简介 (Intro to property-based testi ...

  9. 推荐系统遇上深度学习(八十七)-[阿里]基于搜索的用户终身行为序列建模

    本文介绍的论文是<Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Thr ...

最新文章

  1. [声明]关于春节回家期间不能更新Blog的说明
  2. 如何检查变量的类型是否为字符串?
  3. c++值传递,指针传递,引用传递以及指针与引用的区别
  4. python人工智能——机器学习——数据的划分和介绍
  5. Linux shell中在vim打开的文件中查找关键字
  6. xampp如何上传文件到服务器,xampp安装到云服务器
  7. Hadoop学习笔记(五):MapReduce的类型与格式
  8. php ckfinder basedir,ckfinder后,上传文件
  9. websphere设置共享库
  10. 软件界旷世之架:测试驱动开发(TDD)之争
  11. OpenPose安装(gtx1650+cuda10.1+cudnn7.6.0+anaconda3)
  12. C语言中的free函数
  13. IFSC的完整形式是什么?
  14. git仓库中文件较多,如何拉取指定文件到本地
  15. NBA名人堂之-约翰·哈夫利切克|杰里·卢卡斯|詹姆斯·沃西|乔治·格温|沃尔特·弗雷泽
  16. python创建长度为20的列表_如何在python中创建固定大小列表?
  17. 搭建confluence服务器(详细操作+踩坑说明)
  18. LNCS用户写作指南
  19. 【网络流量识别】【深度学习】【四】DNN、GBT和RF—利用大数据和深度学习技术进行入侵检测
  20. 【Web UI自动化测试】Web UI自动化测试之框架篇(全网最全)

热门文章

  1. Windows截图工具合集
  2. 黑苹果:仅适用ASUS Z390-H主板(败家之眼)
  3. ajax显示不了,AJAX请求不显示信息
  4. 小说APP软件开发一键生成
  5. JS方法篇:vue.js判断滚动条触底
  6. 小程序开发之组件的使用
  7. 上市公司财务年报中ps代表什么意思?
  8. Python中用户界面设计(GUI)
  9. 英国电信反悔华为是唯一真正的5G供应商
  10. 深入了解示波器(一):示波器分类