Regisztráció és bejelentkezés

Tervezési minták programnyelv-független felismerése

Az objektumorientált szoftverfejlesztésben használt tervezési minták adott problémák adott kontextusbeli megoldásának alapötleteit írják le. Első dokumentációjuk [1] óta széles körben elterjedtek az ipari alkalmazásokban fejlesztésében. Javítják a kód karbantarthatóságát, bővíthetőségét, és a mérnöki gyakorlatban fontos kipróbált megoldások használatát is segítik. Programozási nyelvektől függetlenül írják le a megoldásokat, így minden, az objektumorientáltságot támogató programnyelven alkalmazhatóak.

Egy adott szoftver forráskódjában lévő tervezési minták elemzése segít megérteni a kód adott részének célját és az implementációs részletek mögött meghúzódó tervezési döntéseket. A karbantarthatóság és bővíthetőség elősegítése miatt a minták (vagy azok hiánya) a kód – és így a végleges szoftver – minőségére is utalhatnak. A kód manuális (a forráskód fejlesztő által történő) átvizsgálása viszont körülményes és időigényes feladat.

A minták automatikus felismerésének irodalma fokozatos térhódításuk nyomán egyre több terület ötleteit ötvözi (pl.: fuzzy rendszerek [2], formális nyelvek [3]). Bár a legtöbb alapötlet független a vizsgált programozási nyelvtől, a szerzők nem fektetnek valódi hangsúlyt munkájuk nyelvfüggetlen aspektusainak kidolgozására és bemutatására. Munkám során ezért egy olyan keretrendszert valósítottam meg, mely képes megragadni ezeket a nyelvfüggetlen elemeket és általánosan leírni az objektumorientált fejlesztésben használt alapfogalmakat.

A .NET Compiler Platform [4] (korábban Roslyn) megjelenésével a C# és a Visual Basic programozási nyelvek fordításhoz kapcsolódó szolgáltatások (pl.: szintaxisfa elemzése) közvetlenül elérhetővé váltak a fejlesztők számára. Ezt az új eszközt használtam fel arra, hogy a keretrendszer első konkrét implementációjaként C# programnyelven megírt forráskódból előállítsam a nyelvfüggetlen modellt.

A tervezési minták felismeréshez konkrét mintákat elemeztem. A felismerést egy rugalmas, jól bővíthető kritérium-ellenőrző rendszerként valósítottam meg C# nyelven. Eredményeimet nyílt forráskódú osztálykönyvtárak forráskódján validáltam és hasonlítottam össze más Java alapú rendszerek eredményeivel.

Mivel az irodalom elsősorban eddig a Java nyelvre fókuszált, ezért munkám fontos lépés a C# nyelven írt szoftverek elemzésében. Hosszabb távon a tervezési minták felismerése mellett egyéb szoftveres minták felismerése is implementálható (pl.: objektumorientált tervezési elvek betartásának vizsgálata, anti-patternek felismerése).

[1] E. Gamma, R. Helm, R. Johnson és J. Vlissides, Design patterns: elements of reusable object-oriented software, Pearson Education, 1994.

[2] S. Alhusain, S. Coupland, R. John és M. Kavanagh, „Design Pattern Recognition by Using Adaptive Neuro Fuzzy Inference System,” in Tools with Artificial Intelligence (ICTAI), 2013 IEEE 25th International Conference on, 2013.

[3] H. Zhu, I. Bayley, L. Shan és R. Amphlett, „Tool Support for Design Pattern Recognition at Model Level,” in Computer Software and Applications Conference, 2009. COMPSAC '09. 33rd Annual IEEE International, 2009.

[4] „.NET compiler platform,” [Online]. Available: http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx. [Hozzáférés dátuma: 20 szeptember 2014].

szerző

  • Nagy Ákos
    mérnökinformatikus
    nappali

konzulens

  • Dr. Kővári Bence
    docens, Automatizálási és Alkalmazott Informatikai Tanszék