Regisztráció és bejelentkezés

Domain-szűrt API keresés típús szignatúra alapon Java környezetben

Statikus típusos környezetben végzett, erős típusokra támaszkodó szoftver fejlesztés során a nyelv típusrendszere önmagában is jelentős információt hordozhat az egyes függvények céljáról, működéséről. Bár ez a tudás a paraméter helyesség ellenőrzésen kívül ritkán használt, mégis lehetőséget nyújthat egyfajta dimenzió analízisen alapuló keresésre, aminek során adott feltételezett függvényeket kereshetünk azok be-, és kimeneteinek típusai alapján.

A modern szoftverfejlesztés során általában számos külső modullal (függőséggel) dolgozunk, például Java környezetben a relatív nagy kiterjedésű standard könyvtár (JCL), és az adott projekthez szükséges specifikus könyvtárak mellett bevett gyakorlat bizonyos segítő könyvtárak (guava, apacha commmons, stb) használata is.

Ezen modulok összessége akár több tíz-, vagy akár százezer egyedi, publikus operációt is tartalmazhat, melyek között sok általános felhasználás céljára elkészített függvény található. Ilyen mennyiségű adathalmazon a manuális keresés csak akkor reális lehetőség, ha a fejlesztő tudatában van a használandó művelet valamilyen elnevezési konvenciójának – ez a nyelv által nem kikényszerített, gyakran ad-hoc szabályok miatt sokszor nem teljesül –, vagy valamilyen módon szűkíteni tudja a lehetséges definiálási területet – például a cél csomag vagy modul ismeretével.

A problémára megoldást nyújthat egy kereső motor fejlesztése ami képes egy egyszerű, intuitív szintaxissal mefogalmazott viselkedés leírás alapján kilistázni adott kódbázis azt kielégítő operációit. Így a felhasználó fejlesztő a birtokában lévő változók típusa, és az általa igényelt új típus segítségével kereshet már elkészített függvényeket. Hasonló rendszerek léteznek bizonyos platformokon, köztük a legismertebb a Haskell modulokon operáló Hoogle, de objektumorinentált, azon belül pedig Java környezetben használatos elterjedt eszköz nincs a területen.

Kutatásom során kidolgoztam egy új módszert és kereső motort, mely lehetővé teszi a Java alapú kódbázis feltérképezését és viselkedés alapú feldolgozását. Dolgozatomban az általam kidolgozott algoritmust és megoldást mutatom be, és ismertetem a tervezés és megvalósítás lépéseit. Az eszköz célja az egyes program komponensek (JAR modulok, JCL) függvényeinek feldolgozása és tárolása, majd definiált halmazukon típus-alapú keresések lehetővé tétele azok be-, és kimeneti paraméterei alapján. A lekérdezések bármely, a Java nyelvet ismerő programozó számára intuitívan érthetőek és a találatok remélhetőleg a kívánt műveletekhez vezetnek.

szerző

  • Márkus Krisztián
    Mérnök informatikus szak, mesterképzés
    mesterképzés (MA/MSc)

konzulens

  • Dr. Ekler Péter
    Adjunktus, Automatizálási és Alkalmazott Informatikai Tanszék