SBSE—基于搜索的软件工程简介

版权声明:欢迎转载,转载请注明出处:土豆洋芋山药蛋 https://blog.csdn.net/qq_33414271/article/details/81150158

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

下面我将从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.

猜你喜欢

转载自blog.csdn.net/qq_33414271/article/details/81150158