You are here

Intézeti szeminárium

Félév: 
2018/19 I. félév
Helyszín: 
Árpád tér 2. II. em. 220. sz.
Dátum: 
2018-11-06
Időpont: 
14:00-15:00
Előadó: 
Balogh Gergő
Cím: 
Első lépések egy gráfok közti különbségeket osztályozó módszertan felé
Absztrakt: 

– Úgy látszik, a nevemet is ismered, noha én soha nem éreztem a szagodat
ennek előtte. Ha szabad kérdeznem, ki vagy, és honnan jössz? - kérdezte
a sárkány.
– Hogyne lenne szabad! Az egység tesztek felől jövök, és a Java metódusok
alá és a metódusok fölé vezet az utam. S a csomagokon át. Én vagyok a
PhD-vándor.
– Ezt el kell hinnem – szólt Smaug –, de hát ez csak nem lehet a neved.
– Én vagyok a traceability-kereső, a csomag-nyiszáló, a gráf-
vizualizációs lény. A témavezetőm választottja vagyok.
– Elragadó címek! – csúfondároskodott a sárkány. – De a témavezetőknek se
lehet igaza, mindig.
– Én vagyok, aki csoportokra bontja az elemeit, és újra össze vonja, majd
a gráfból ismét klaszterekbe rakja őket. A Szoftverfejlesztés Tanszék
végéből jöttem, de soha a Tanszék végében nem ragadtam.
– Ez már nem erősíti oly mértékben a hiteledet – gúnyolódott Smaug.
– A gráfok barátja és a függvények vendége vagyok. Közösség-kereső és
Absztrakció-hozó meg Kutató is – folytatta az előadó, aki kezdett
elégedetté válni talánysorozatával.
– Ez már jobb! – mondta Smaug. – De azért ne hagyd, hogy a képzeleted
elragadjon!
Hát persze, így kell beszélni a sárkányokkal, ha az ember nem akarja
elárulni a nevét (ami bölcs dolog), s feldühíteni sem akarja őket azzal,
hogy megtagadja nevének kimondását (ami szintén nagyon bölcs).
(John Ronald Reuel Tolkien: A Hobbit, Bilbó bemutatkozása nyomán)

Az előadásomban bemutatom az első lépéseket, melyek egy konkrét kézzel
fogható problémától (tesztek és forráskód elemek minőségének javítása)
egy sokkal általánosabb és elvontabb módszertan felé (gráfok közti
különbségek osztályozása) vezetnek.

Kutatásom során a Java nyelvű programok csomagszerkezetét hasonlítottam
össze az egységtesztek futtatása közben gyűjtött lefedettségi adatok
alapján. Az egységtesztek általánosan elfogadott tervezési elvei, mely
szerint egy teszt a lehető legkisebb logikai egység független működését
ellenőrizze, lehetővé tették, hogy a lefedettség segítségével, futás
idejű adatok alapján csoportosítsam a forráskód elemeit. A csoportok
létrehozásához egy közösségkereső algoritmust használtam. Ennek
eredményét és fejlesztő által definiált csomag alapú csoportosítás
különbségeit súlyozott gráf segítségével vizsgáltam. Az így kapott,
általam bevezetett, gráfot klaszter hasonlósági gráfnak nevezzük. Az
elemzés során felhasználtam egy diszkrét leíró vektort, mely képes
jellemezni az egyes csoportokhoz kapcsolódó klaszterek szomszédjainak
eloszlását.

Ezzel a módszerrel több mintát is azonosítottam, melyek jellegzetes
eltéréseket fejeznek ki a forráskód elemek dinamikus és statikus
klaszterezése között. A kapott automatikusan detektált minták kézi
elemzése során javaslatokat fogalmaztam meg, melyek segítséget
nyújtanak az egység tesztek ill. a csomag hierarchia hiba-gyanús
pontjainak javítására.

A kutatás során felismertem, hogy a korábban használt diszkrét lokális
gráfleíró vektor kiterjeszthető folytonos változatra, mely lehetőséget
biztosít a klaszterek közötti hasonlóság mértékének figyelembe vételére
is. Ezen kívül a kidolgozott módszer alapul szolgálhat egy gráfok közti
különbségeket osztályozó módszertan számára.