„Keresésalapú szoftvertervezés” változatai közötti eltérés

A Wikipédiából, a szabad enciklopédiából
Tartalom törölve Tartalom hozzáadva
Készült a(z) „Search-based software engineering” oldal lefordításával
(Nincs különbség)

A lap 2021. május 23., 10:19-kori változata


Keresés-alapú szoftverfejlesztés (SBSE) metaheuristic keresési technikákra vonatkozik, olyan mint a genetikus algoritmusok, szimulált lágyítást értünk ez alatt, a tabu kereséstől a szoftverfejlesztési problémákig tartó eseteket dolgozza fel. Számos szoftvertervezéssel kapcsolatos tevékenység optimalizálási problémaként határozható meg. A műveletek kutatásának optimalizálási technikái, mint például a lineáris programozás vagy a dinamikus programozás, gyakran nem praktikusak a nagyszabású szoftverfejlesztési problémáknál, számítási összetettségük vagy a problémaszerkezetre vonatkozó feltételezéseik miatt. A kutatók és a gyakorlati szakemberek metaheurisztikus keresési technikákat alkalmaznak, amelyek kevés feltételezést vetnek fel a problémaszerkezetre, annak érdekében,hogy optimális közeli vagy "elég jó" megoldásokat találjanak.

Az SBSE-problémák két típusra oszthatjuk:

  • fekete doboz optimalizálási problémák, például az emberek hozzárendelése egyes feladatokhoz (tipikus kombinatorikus optimalizálási probléma)
  • fehér-dobozos problémák, amelyeknél fontolóra kell venni a forráskóddal végzett műveleteket. [1]

Meghatározás

Az SBSE egy szoftvertervezési problémát számítási keresési problémává alakítja, amely metaheurisztikával kezelhető. Ez magában foglalja a keresési tér 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 feltárható legyen, ami metaheurisztikus megközelítésre sarkall. Ezután egy metrikát (más néven fitneszfüggvényt, költségfüggvényt, célfüggvényt vagy minőségi mutatót) használnak a lehetséges megoldások minőségének mérésére. Számos szoftvertervezési probléma átkonvertálható számítási keresési problémaként.

A "keresés-alapú applikáció" kifejezés ezzel szemben a keresőmotor-technológia helyett a keresési technikákat használja, mint más ipari applikációt.

Rövid története

Webb Miller és David Spooner 1976-ban számolt be az egyik legkorábbi próbálkozásról, hogy optimalizálást alkalmazzon egy szoftvertervezési problémára a szoftver tesztelés területén. 1992-ben S. Xanthakis és munkatársai először alkalmaztak keresési technikát egy szoftverfejlesztési problémára. 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, 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ó. A szoftveres tesztelés az egyik legfontosabb alkalmazás. A keresési technikákat alkalmazták más szoftvertervezési tevékenységekben, például a követelményelemzésben, a tervezésben, a refaktorálásban, a fejlesztésben és a karbantartásban.

Követelmények tervezése

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ési alapú módszereket alkalmaztak a követelmények kiválasztásához és optimalizálásához azzal a céllal, hogy megtalálják a lehető legjobb részhalmazt a követelményeknek, amelyek megfelelnek a felhasználói igényeknek olyan korlátok között, mint a korlátozott erőforrások és a követelmények közötti kölcsönös függőségek. Ezt a problémát gyakran több kritériumot tartalmazó döntéshozatali problémaként 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 szoftverhiba (vagy kód szag ) azonosítása, majd a szoftver hibakeresése (vagy refaktorá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 genetikai programozást, egy biológiailag inspirált technikát, amely magában foglalja a programok fejlesztését a keresztezés és a mutáció segítségével, a programok javításának megkeresésére a forráskód néhány sorának megváltoztatásánál alkalmazták. A GenProg Evolutionary Program Repair szoftver 105 hibából 55-et kijavított, körülbelül 8 dollárért, egy teszt alatt. [2]

A Coevolution egy "ragadozó és zsákmány" metaforát alkalmaz, amelyben egy programcsomag és egy egységnyi tesztcsomag együtt fejlődik és befolyásolja egymást. [3]

Tesztelés

A keresésen-alapuló szoftvertervezést alkalmazták a szoftverek tesztelésére, ideértve a tesztesetek (tesztadatok) automatikus előállítását, a tesztesetek minimalizálását és a tesztesetek rangsorolását. [4] Emelett a regressziós teszt is figyelmet kapott.

Optimalizáló szoftver

Az SBSE használata a program optimalizálásában, vagy egy szoftver módosítása annak érdekében, hogy hatékonyabb legyen a sebesség és az erőforrás-felhasználás, ezeket hosszú kutatás előzte meg. [5] Az egyik esetben egy 50 000 soros program genetikailag javult, ami átlagosan 70-szer gyorsabb programot eredményezett. [6] Basios et al. azt mutatja, hogy az adatstruktúra optimalizálásával a Google Guava 9% -kal javította a végrehajtási időt, 13% -kal javította a memóriafogyasztást és 4% -kal javította a CPU használatát külön-külön. [7]

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. [8]

Eszközök

Az SBSE számára elérhető eszközök közé tartozik az OpenPAT. [9] és az EvoSuite [10] valamint a Coverage, a kód lefedettségmérő eszköz a Python számára [11]

Módszerek és technikák

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

  • Profilozás [12] műszeren keresztül a program egyes részeinek figyelemmel kísérése közben.
  • A programhoz társított elvont szintaxis megszerzése, amely automatikusan vizsgálja, hogy betekintést kapjon a program szerkezetébe.
  • A program vágó applikációk, SBSE közé tartoznak szoftver karbantartás, optimalizálás és program elemzése .
  • A kód lefedettsége lehetővé teszi annak mérését, hogy a kód mekkora részét hajtja végre egy adott bemeneti adatkészlettel.
  • Statikus programelemzés

Az ipar elfogadása

Az SBSE, mint viszonylag új kutatási terület, még nem élvezi a széles körű ipari elfogadottságot.

Az SBSE sikeres alkalmazása az iparban többnyire a szoftveres tesztelésen belül található meg, ahol a vállalatok számára vonzó az a képessé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 szoftverindítását, amely kifejlesztette a Sapienz nevű keresési-alapú hibakereső alkalmazást. [13]

Más alkalmazási esetekben a szoftvermérnökök nem szívesen fogadnak el olyan eszközöket, amelyek felett kevés az irányításuk, vagy amelyek olyan megoldásokat generálnak, amelyek eltérnek az emberek által megszokottaktól. [14] Az SBSE alkalmazásával a programok javításában vagy fejlesztésében a fejlesztőknek biztosnak kell lenniük abban, hogy az automatikusan előállított módosítások nem okoznak váratlan viselkedést a rendszer követelményein és tesztelési környezetén kívül. 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, a karbantartási tevékenységek gyorsabb megoldása érdekében. [15]

További gond, hogy az SBSE feleslegessé teheti a szoftvermérnököt. 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. [16]

Lásd még

  • Programelemzés (számítástechnika)
  • Dinamikus programelemzés
  • Genetikai javulás

Hivatkozások

 

Külső linkek

  1. Harman, Mark (2010). „Why Source Code Analysis and Manipulation Will Always be Important”. 10th IEEE Working Conference on Source Code Analysis and Manipulation (SCAM 2010): 7–19. doi:10.1109/SCAM.2010.28. 
  2. (2012) „A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each”. 2012 34th International Conference on Software Engineering (ICSE): 3–13. doi:10.1109/ICSE.2012.6227211. 
  3. (2008) „A novel co-evolutionary approach to automatic software bug fixing”. IEEE Congress on Evolutionary Computation, 2008. CEC 2008. (IEEE World Congress on Computational Intelligence): 162–168. doi:10.1109/CEC.2008.4630793. 
  4. Harman (2015. április 1.). „Achievements, Open Problems and Challenges for Search Based Software Testing”. 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST), Graz, Austria, 1–12. o, Kiadó: IEEE. DOI:10.1109/ICST.2015.7102580.  
  5. Memeti (2018. május 17.). „Using meta-heuristics and machine learning for software optimization of parallel computing systems: a systematic literature review”. Computing 101 (8), 893–936. o. DOI:10.1007/s00607-018-0614-9.  
  6. Langdon. „Optimising Existing Software with Genetic Programming”. IEEE Transactions on Evolutionary Computation.  
  7. Basios, Michail. Optimising Darwinian Data Structures on Google Guava, Lecture Notes in Computer Science (angol nyelven), 161–167. o.. DOI: 10.1007/978-3-319-66299-2_14 (2017. szeptember 9.). ISBN 978-3-319-66298-5 
  8. (2012) „Evolutionary algorithms for the project scheduling problem: runtime analysis and improved design”.: 1221–1228, New York, NY, USA: ACM. doi:10.1145/2330163.2330332. 
  9. Predicting Regression Test Failures Using Genetic Algorithm-Selected Dynamic Performance Analysis Metrics”. 8084: 158–171. doi:10.1007/978-3-642-39742-4_13. 
  10. (http://www.evosuite.org/)
  11. others, Ned Batchelder and 100, coverage: Code coverage measurement for Python, <https://bitbucket.org/ned/coveragepy>
  12. Open Source Profilers in Java
  13. Sapienz: Facebook’s push to automate software testing. VentureBeat, 2018. december 30. (Hozzáférés: 2020. szeptember 29.)
  14. Jones: Programming using genetic algorithms: isn't that what humans already do ;-). The Shape of Code, 2013. október 18. (Hozzáférés: 2013. október 31.)
  15. Le Goues (2013. szeptember 1.). „Current challenges in automatic software repair”. Software Quality Journal 21 (3), 421–443. o. DOI:10.1007/s11219-013-9208-0. ISSN 1573-1367.  
  16. (2013. május 1.) „Whither (away) software engineers in SBSE?”..