1. 程式人生 > >SBSE—基於搜尋的軟體工程簡介

SBSE—基於搜尋的軟體工程簡介

土豆洋芋山藥蛋原創,轉載請註明出處,尤其是註明“土豆洋芋山藥蛋”哦

下面我將從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.