:

Szerző: Voith Hunor

2015. július 1. 16:55

Szoftverjavítás kódátültetéssel?

A Code Phage fejlesztői szerint először a világon képes automatizált kódátültetésre.

Rendkívül érdekes fejlesztésről számolt be nemrég a Massachusettsi Műszaki Egyetem (MIT) néhány kutatója. A Code Phage (CP) névre keresztelt rendszer a készítői szerint az orvosi szervátültetések analógiája mentén gyakorlatilag hasonló átültetésekkel képes hibás szoftvereket önállóan kijavítani – úgy, hogy ehhez nem kell ismernie a donor program forráskódját. Fejlesztői egyelőre csak hét alkalmazáson tesztelték a CP-t (legalábbis tanulmányuk elkészítése során ennyit használtak), de azok esetében mind sikerrel szerepelt. A javítási idő donortól függően változott, de egyszer sem haladta meg a húsz percet, és túlnyomó részt inkább négy perc körül mozgott.

A mintegy 14 ezer kódsoros (10 ezer C-ben és 4 ezer Pythonban írt) automatikus programjavító szoftver jelenleg a programhelyesség-ellenőrzési feltételvizsgálatok azonosítását és azok "átültetését" támogatja olyan alkalmazások között, melyek ugyanazon bemeneti adatot képesek feldolgozni (csak az egyik lefutása egy ilyen feltételvizsgálat hiánya miatt hibás).

Forráskód nélkül

A Code Phage-nek a munka elkezdéséhez két beviteli mintára van szüksége: egyre, ami a donor programban nem okoz futási hibát, és egy olyanra, ami igen. A "beteg" szoftver esetében egyébként nem is szükséges egy konkrét hiba ismerete, akár a csapat saját, néhány hónapja bemutatott DIODE hibakeresőjét is lehet használni, ami egyben a kódban felfedezett problémák mködés közbeni előidézésére is képes.

A CP a donor (azaz helyesen működő) alkalmazással először a biztosan hibátlanul lefutó inputot eteti meg. A végrehajtás során a Code Phage végig figyeli a folyamatot, a kimeneti adatok állapotát, és szimbolikus jelölésekkel rögzíti a műveleteket. Miután ezzel kész, a hibát előidéző bemenetet is betölti ugyanabba a programba, és futás közben szintén jegyzetel. Ahogy azonban az első eltéréshez ér (a korábbi, hibátlan végrehajtáshoz képest), megszakítja a folyamatot, mert valószínűleg olyan programhelyesség-ellenőrzési feltételvizsgálathoz (check) ért, ami a javítandó alkalmazásban nincs meg, és elvégzésének hiányában később futási hiba lép fel. A két állapot közötti eltérést egy, a hibátlan futás során létező, valamilyen paraméterre adott korlátozásként értelmezi, és ezt rögzíti a szimbolikus jelölésekkel.

Forrás: MIT

A Code Phage ennek "tudatában" áttér a hibás programra, és olyan pontokat kezd keresni, amelyek megfelelhetnek a javítási folyamat első felében létrehozott szimbolikus leírásnak. Ezek után az első eshetőségnél a szükséges feltételvizsgálatot beépíti a javítandó alkalmazásba – persze annak programnyelvén. A fordítás a bemutatott verzióban egyelőre kizárólag C-re lehetséges, de a fejlesztők szerint ez később bármi lehet, amire a szoftvert felkészítik. Ha ezzel végzett, az inputot betölti a megjavított alkalmazásba, és ha a futás során nem lép fel hiba, befejezi a teljes javítási folyamatot. Ha elsőre mégsem jön össze a mutatvány, visszatér a korábban azonosított pontokhoz, és addig próbálja a donor szoftvernél összeszedett információkat alkalmazni, amíg nem jár sikerrel. Ha így is elbukik, megkísérli a szimbolikus leírás finomítását úgy, hogy addig ismétli annak felépítését, amíg az elsőként létrehozott leíráshoz képest eltérést talál.

"Meglepődtem, hogy egyáltalán működik"

Ünnepi mix a bértranszparenciától a kódoló vezetőkig

Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.

Ünnepi mix a bértranszparenciától a kódoló vezetőkig Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.

Az MIT-s kutatók első körben csak hibás szoftverek automatizált javítását szeretnék valós körülmények között is alkalmazhatóan megvalósítani, de távolabbi tervük ennél jóval nagyratörőbb: egy fejlesztőnek ne kelljen valamit újra megírnia, ha azt előtte már valaki megtette. Persze tudják, hogy ehhez még rengeteg munka szükséges, egyikük még azt is megjegyezte, már az is kellemes meglepetés, hogy elképzelésük egyáltalán tesztekkel igazolhatóan működik a gyakorlatban.

Mivel a Code Phage a donor forráskódjának ismerete nélkül is képes működni, a fejlesztők elképzelése szerint akár arra is használható lenne, hogy bizonyítottan robusztus szoftvereket futásbiztonságát ráhúzza egyéb alkalmazásokra, vagy minél nagyobb részben automatizálja a programok kódjának többségét kitevő programhelyesség-ellenőrzési feltételvizsgálatok forráskódba illesztését a fejlesztés során.

A kutatást a DARPA (Defense Advanced Research Projects Agency), az amerikai Védelmi Minisztérium híres kutatás-fejlesztési részlege is támogatta. Az érdeklődők a mélyebb technikai részleteket a fejlesztők által kiadott tanulmányban olvashatják, számos szemléltető példával együtt.

a címlapról