A keresésalapú szoftverfejlesztés (search-based software engineering, SBSE) metaheurisztikus keresési technikákat alkalmaz szoftverfejlesztési problémák megoldására, mint például genetikus algoritmusokokat, szimulált hűtést, tabu keresést. Az operációkutatásban alkalmazott optimalizálási technikák (például lineáris vagy dinamikus programozás) összetettségük miatt általában nem praktikusak nagyszabású szoftverfejlesztési feladatok esetén. A kutatók és a programozók metaheurisztikus keresési technikákat alkalmaznak, amelyeket nem befolyásol a probléma szerkezete, annak érdekében, hogy szinte optimális vagy legalábbis megfelelő megoldásokat találjanak.

Az SBSE-problémák két típusra oszthatóak: feketedobozos problémák, például emberek hozzárendelése egyes feladatokhoz (tipikus kombinatorikus optimalizálási feladat) fehérdobozos problémák, amelyeknél fontolóra kell venni a forráskódon végzett műveleteket.

Meghatározás Az SBSE egy szoftvertervezési problémát egy egyszerű keresési problémává alakít, amely metaheurisztikus módszerekkel kezelhető; ez számos esetben alkalmazható. Ez magában foglalja a keresési térnek, vagy a lehetséges megoldások halmazának meghatározását. Ez a tér általában túl nagy ahhoz, hogy kimerítően kezelhető legyen, ez pedig metaheurisztikus megközelítésre sarkall. Ezután egy metrikát (más néven fitness függvényt, költségfüggvényt, objektív függvényt vagy minőségi mutatót) használnak a lehetséges megoldások minőségének meghatározására.

Az SBSE nem összetévesztendő a keresésalapú alkalmazással (search-based application), mely keresőmotor-technológiákat (nem keresési technikákat) alkalmaz ipari alkalmazásokban.

Rövid története Webb Miller és David Spooner 1976-ban számolt be az egyik legkorábbi próbálkozásról: a szoftvertesztelés területén próbáltak optimalizálást keresni egy szoftvertervezési feladatra. 1992-ben S. Xanthakis és munkatársai először alkalmaztak keresési technikát egy szoftverfejlesztési problémára.S. Xanthakis, C. Ellis, C. Skourlas, A. Le Gall, S. Katsikas and K. Karapoulios, "Application of genetic algorithms to software testing," in Proceedings of the 5th International Conference on Software Engineering and its Applications, Toulouse, France, 1992, pp. 625–636 Az SBSE kifejezést 2001-ben használta először Harman és Jones. A kutatói közösség 2013-ig több mint 800 szerzővel bővült, és 40 ország mintegy 270 intézményére terjedt ki.

Alkalmazási területek A keresésalapú szoftvertervezés a szoftverfejlesztési folyamat szinte minden szakaszában alkalmazható. Egyik leggyakoribb alkalmazása a szoftverek tesztelésénél van, de más szoftvertervezési tevékenységekben is alkalmazzák, például követelményelemzés, szoftvertervezés, kódrefaktorálás, szoftverfejlesztés, karbantartásban.

Követelménytervezés A követelménytervezés az a folyamat, amelynek során meghatározzák és kezelik a szoftver felhasználói és környezeti igényeit. Keresésalapú módszereket alkalmaznak a követelmények kiválasztásához és optimalizálásához azzal a céllal, hogy megtalálják a követelmények lehető legjobb részhalmaztát, amely megfelel a felhasználói igényeknek, figyelembe véve a korlátozott erőforrásokat és a kölcsönös függőségeket. Ezt a problémát gyakran több kritériumot tartalmazó döntéshozatali problémaként (MCDM) kezelik, és általában magában foglalja a döntéshozó számára a kompromisszumok halmazát a költség és a felhasználói elégedettség, valamint a követelmények kockázata között.

Hibakeresés és karbantartás A szoftverhibák azonosítása és kijavítása (vagy a kód refatorálása) nagyrészt emberi és munkaigényes erőfeszítés, bár a folyamat eszköztámogatott. Az SBSE egyik célja a hibák automatikus azonosítása és kijavítása (például mutációs teszteléssel).

A biológia által ihletett genetikus programozás, amely keresztezés és mutáció segítségével járul hozzá a szoftverek fejlesztéséhez, a forráskód néhány sorának megváltoztatásával keresi és javítja a programok hibáit. A GenProg Evolutionary Program Repair szoftver 105 hibából 55-öt javított ki egy teszt alatt, egyenként körülbelül 8 dollárért.

A koevolúció egy „ragadozó és zsákmány” metaforát alkalmaz, amelyben egy programcsomag és egy egységteszt együtt fejlődik és befolyásolja egymást.

Tesztelés A keresésalapú szoftvertervezést gyakran alkalmazzák a szoftvertesztelés berkein belül, ideértve a tesztesetek (tesztadatok) automatikus előállítását, az esetek minimalizálását és rangsorolását. Ezek mellett a regressziós tesztelés is figyelmet kapott.

Optimalizáló szoftver Az SBSE használata a programoptimalizálásban (egy szoftver módosítása annak érdekében, hogy hatékonyabb legyen, ami a sebességet és az erőforrás-felhasználást illeti) sikeres kutatás tárgya volt. Egyik esetben egy soros program genetikailag javult, mely 70-szer gyorsabb futást eredményezett. Basios és mások munkája kimutatta, hogy az adatstruktúra optimalizálásával a Google Guava szerint a végrehajtási idő 9%-kal, a memóriahasználat 13%-kal, a processzorhasználat 4%-kal javult.

Projektmenedzsment Számos döntést, amelyet általában egy projektmenedzser léptet életbe, meg lehet hozni automatikusan (például a projekt ütemezését).

Eszközök Az SBSE számára elérhető eszközök közé tartozik az OpenPAT és az EvoSuite(http://www.evosuite.org/) valamint a Coverage, egy kódlefedettség-mérőeszköz Pythonhoz.

Módszerek és technikák Számos módszer és technika áll rendelkezésre, többek között:

Profilozás mérőeszközökön keresztül, melyek a program egyes részeit figyelik futás közben A program absztrakt szintaxisfájának elkészítése, amely segítségével betekintést nyerhetünk a program szerkezetébe SBSE-alapú szeletelés (program slicing) alkalmazásai: karbantartás, optimalizálás, programelemzés Kódlefedettség mérése (a kód mekkora része fut le adott bemeneti adatkészlettel) Statikus kódanalízis

Elfogadottsága Az SBSE, mint viszonylag új kutatási terület, még nem élvez széleskörű elfogadottságot az iparágban.

Az SBSE sikeres alkalmazása az iparágban többnyire a szoftveres tesztelésen belül található, ahol a vállalatok számára vonzó az a lehetőség, hogy automatikusan véletlenszerű tesztbemeneteket generáljanak a hibák nagy mértékű feltárására. 2017-ben a Facebook megvásárolta a Majicke Limited startupot, amely kifejlesztette a Sapienz nevű keresésalapú hibakereső alkalmazást.

Más alkalmazási esetekben a szoftvermérnökök nem szívesen támaszkodnak olyan eszközökre, amelyekbe korlátozott beavatkozásuk van, vagy amik olyan megoldásokat eredményeznek, amelyek eltérnek az emberek által generáltaktól. Mikor a programok javítására vagy fejlesztésére SBSE-t alkalmaznak, a fejlesztőknek biztosnak kell lenniük abban, hogy bármilyen automatikus módosítás nem okoz váratlan viselkedést, melyek túlmutatnak a rendszer követelményein és tesztelési környezetén. Figyelembe véve, hogy a teljesen automatizált programozást még el kell érni, az ilyen módosítások kívánatos tulajdonsága az lenne, hogy az emberek könnyen megértsék, így könnyebben tufjanak karbantartási tevékenységeket végezni.

További gond, hogy az SBSE feleslegessé teheti a szoftvermérnököket. A támogatók azt állítják, hogy az SBSE célja a mérnök és a program közötti kapcsolat javítása.

Jegyzetek

További információk Az SBSE-vel kapcsolatos publikációk tárháza Metaheurisztika és szoftvertervezés Software-artefact Infrastructure Repository Nemzetközi konferencia a szoftvertervezésről Genetikai és evolúciós számítás (GECCO) Google Tudós oldal a keresésalapú szoftvertervezésről

Fordítás

Kategória:Szoftvertesztelés Kategória:Szoftverfejlesztés