Végtelen ciklus helyett

A szoftverjavító szoftver

Egy új, még kísérleti stádiumban levő szoftverkörnyezet képes visszarántani tetszhalott állapotából a lefagyott programok jó részét.

2011.08.05 14:21Szilágyi Szabolcs - ma.hu

Az MIT kutatói előrukkoltak egy olyan szoftverkerettel, mely lehetővé teszi a lefagyott alkalmazások életre keltését bizonyos körülmények között. Jolt névre keresztelt megoldásuk arra kényszeríti a pórul járt szoftvert, ha észleli annak végtelen ciklusba ragadását, hogy hagyja el azt, és folytassa a kód végrehajtását.
 
És mindez nem csak elmélet! A kutatók le is tesztelték működését néhány jól ismert nyíltforrású szoftvereszközben található programhibán. Több kísérletet követően megállapítható, hogy a Jolt képes lehet visszarángatni az elvárt működés pályájára a lefagyott szoftver - olyan helyzetekben, amikor a felhasználónak már manuálisan kellene beavatkoznia, és az alkalmazás leállításával/újraindításával orvosolhatná csak a történteket.

Fotó: Justin Martin - flickr

Egy Microsoft Wordben található hiba inspirálta a fejlesztőket a Jolt létrehozására. Az MIT egyik professzora éppen dokumentumán dolgozott az egyik reggel, amikor az váratlanul lefagyott. Egy debugging - a hiba okát felderíteni képes - eszközzel felfedezett egy végtelen ciklust a programban, amiből az nem tudott kiszabadulni. Ebből az állapotból sikerült kikényszerítenie a redmondiak szövegszerkesztőjét, majd, miután elmentette dokumentumát, a program újraindításával onnan folytathatta az írást, ahol abbahagyta. A történteket aztán e-mailben megosztotta Martin Rinard professzorral, aki úgy döntött, hogy egy automatizált eszköz kifejlesztésébe kezd. Utóbbi gyakorlatilag ugyanarra képes, mint az ember, csak nem igényel humán beavatkozást.
 
Az elmélet elég egyszerű: a Jolt vizsgálja egy adott program futási állapotát; ha a benne zajló ciklusok ismétlődései alatt nem változnak a használt változóértékek, akkor valószínűleg baj van. Ebben az esetben a Jolt beavatkozik, és a végtelen ciklusból egy elágazással kikényszeríti a lefagyott alkalmazást, így az folytathatja az eredeti feladatát. Mindazonáltal nem mondható mindenhatónak a fejlesztés, mivel nem használható olyan hurkokban, amikor a program állapotát ugyan megváltoztatják a műveletek, de mégsem teljesül a hurokból való kilépés elvárt feltétele. Emellett azokat a végtelen ciklusokat sem tudja felismerni, melyeket rekurzív (önmagát ismétlő, újra és újra meghívó) függvények okoznak.
 
Ugyanakkor még így is nagyon hatásos eszköz kerekedett a kísérletből: a valós életben alkalmazott tesztek szerint nyolc esetből hétszer fél másodpercen belül azonosította a vizsgált nyíltforrású programokban felbukkanó végtelen ciklusokat, és lehetővé tette az alkalmazás számára az ezekből való kijutást. Sőt, nyolcból két esetben nem csak a programfutást sikerült előrébb lendíteni, de még a végeredmény is megegyezett az elvárttal: a kérdéses alkalmazás javított változatai két esetben is ugyanazt az eredményt hozták, mint a hibás példányok Jolttal továbbsegített futásakor.
 
Attól azonban még messze van a fejlesztés, hogy a hétköznapi felhasználó számára kiutat jelentsen a szoftverlefagyásokból (vagy legalábbis azok egy részéből). Viszont szépen demonstrálja a programhibákból való visszatérés automatizálhatóságát, ami a szoftverfejlesztők számára hasznos információval szolgálhat.

Figyelem! A cikkhez hozzáfűzött hozzászólások nem a ma.hu network nézeteit tükrözik. A szerkesztőség mindössze a hírek publikációjával foglalkozik, a kommenteket nem tudja befolyásolni - azok az olvasók személyes véleményét tartalmazzák.

Kérjük, kulturáltan, mások személyiségi jogainak és jó hírnevének tiszteletben tartásával kommenteljenek!

Amennyiben a Könyjelző eszköztárába szeretné felvenni az oldalt, akkor a hozzáadásnál a Könyvjelző eszköztár mappát válassza ki. A Könyvjelző eszköztárat a Nézet / Eszköztárak / Könyvjelző eszköztár menüpontban kapcsolhatja be.