AU4J logo

APPLICATION UNDERSTANDING FOR JAVA (AU4J)

A Legacy (öröklött) alkalmazások régi, ismeretlen vagy elavult technológiával készült, hasznosan működő rendszerek. Lecserélésük költséges, szolgáltatásaik megfelelnek az elvárásoknak, de használatuk több problémát is felvet.

A múlt század nyolcvanas éveitől a Legacy alkalmazások komoly problémát jelentenek az informatika területén. Egy évtizeddel ezelőtt a Legacy szóra mindenki olyan divatjamúlt nyelven írt rendszerekre gondolt, mint a COBOL, a Software AG Natural nyelve vagy az IBM RPG nyelve.

Az elmúlt tíz évben azonban a mainstream technológia drámaian megváltozott, és ez a Java közösséget is érintette. A felhő használhatatlanná tette a Java EE egyes aspektusait, olyannyira, hogy végül el is távolította a Java EE-t az Oracle Java portfóliójából. A mikroszolgáltatások helyettesítik a nehézsúlyú konténerekbe telepített monolit szervereket.

A szoftveriparban a barnamezős (brownfield) fejlesztés esetén egy régi kódbázis karbantartása és továbbfejlesztése a cél.

Itt gyakran nem az új funkciók komplexitása, vagy a környezet bonyolultsága okoz problémát, hanem az, hogy szükség lenne a működő rendszer részletes és alapos megértésére, üzleti és informatikai értelemben egyaránt. Előfordul, hogy ez a megértés mindkét értelemben hiányos. Szükség lenne a szakterület szakértőire, és az eredeti kód szerzőire, de ők csak korlátozottan vagy egyáltalán nem érhetők el.

Az Application Understanding for Java (AU4J) a fenti probléma megoldására tervezett alkalmazás.

Az Application Understanding for Java fejlesztése

A cégünk, az ENTIS-NET Kft. által létrehozott AU4J módszerei és algoritmusai támaszkodnak a COBOL, RPG és Natural programnyelvekre már korábban kifejlesztett hasonló alkalmazásokra, a meglévő alkalmazás-megértési technológiánkat és a felgyűlt tudást a Java programnyelvre implementálja.

Ez a célkitűzés azonban több új kihívást is tartalmazott, minthogy most először alkalmaztuk a módszert objektum-orientált nyelvre.

Bármi is a cél a régi kóddal, akár újraírás a semmiből, akár a barnamezős fejlesztés folytatása, vagy csak dönteni kell a fenti két lehetőség között, meg kell érteni az alkalmazásban megtestesülő üzleti logikát. Az üzleti logika kibontása egy meglévő kódbázisból azonban nem könnyű feladat. A fejlesztőknek százezernyi vagy akár milliónyi kódsort kell megvizsgálniuk.

Ma már több kiváló eszköz áll a fejlesztő rendelkezésére, amelyek a kód feltérképezését és visszafejtését támogatják. Ezek általában a program vezérlési struktúráját követve, fentről lefelé a belépési ponttól kezdve a control flow irányított gráfja mentén haladnak.

A vezérlési struktúra bejárása azonban nehezen követhető, a rendszer ezzel a megközelítéssel rövid idő alatt bonyolulttá és áttekinthetetlenné válik, mert a komplexitás exponenciálisan növekszik az úton.

Ezzel szemben az Application Understanding for Java (AU4J) egy egészen eltérő, új megközelítést alkalmaz az üzleti logika kinyeréséhez az alkalmazáskódból.

Az AU4J alkalmazás megértési módszere az ellenkező irányt követi. Felismeri a kód azon pontjait, amelyekben perzisztens adat keletkezik (kimeneti végpontok). Innen a gráf bejárása visszafelé halad, összegyűjtve azokat a kódrészleteket, amelyek részt vesznek az állandó adatok létrehozásában.

Az eredmény a tiszta üzleti logika, kihagyva az architektúra összes többi aspektusát, például a naplózást és a management funkciókat.

Mint folyamat, az üzleti szabályok kinyerése valamilyen módon hasonlít az angiográfiához, egy orvosi képalkotó módszerhez, amelyet az erek megjelenítésére használnak. A fejlesztő festéket fecskendez be a rendszer egy vagy több végpontjába, és nézi, hogy mi színeződött.

Az AU4J eszközt integrálható IDE-vel (jelenleg a JetBrains IntelliJ IDEA környezetéhez készült el a plugin), így a fejlesztők az AU4J eredménylistáit a saját ismerős környezetükben dolgozhatják fel.

Az üzleti szabályok kinyerése mellett az AU4J webalkalmazás több más eszközt kínál, amelyek az alkalmazás karbantartását és a barnamezős fejlesztést támogatják.

Az Application Understanding for Java (AU4J) funkciói

illustration

Vizsgálat (Scan)

Az elemzés után, kibontható faként megjeleníti az alkalmazás moduljainak hierarchiáját. Megjeleníti a modul statisztikáit is.

Modulhierarchia (Modules)

Az elemzés után, kibontható faként megjeleníti az alkalmazás moduljainak hierarchiáját. Megjeleníti a modul statisztikáit is.

modules
modules

Festés (Paint)

Kibontja az üzleti logikát a kiválasztott végpontokhoz kapcsolódó kódok és adatállományok felsorolásával. Output végpont esetében (választott színre) befesti azokat a kódokat, amelyek részt vesznek az elõállításában, input végpont esetében pedig azokat, amelyek részt vesznek a feldolgozásában.

Használaton kívüli kódok (Dead Code)

Feltárja az alkalmazásban a nem használt kódrészeket. A rekurzív algoritmus azokat a kódokat is kiszûri, amelyeket csak nem használt kódrészek hívnak.

Hívástérkép (Invocation Map)

A vizsgált alkalmazás összes metódusához kilistázza az összes olyan kódot, amely az adott metódust meghívja.

Entitások (Entities)

Felsorolja az alkalmazás perzisztens entitásait. Ha egy tulajdonság hivatkozás egy másik entitásra, akkor kattintásra megmutatja annak a szerkezetét is, így egész hivatkozási láncokat képes egyszerre megjeleníteni.

modules

Ciklikus komplexitás

Megjeleníti a modul - osztály - metódus hierarchia elemeinek teljes és átlagos komplexitását. Az eszköz elõsegíti a tesztelés erõforrás-tervezését, és rámutat azokra a metódusokra, amelyeket nehéz karbantartani a kódban.

Lekérdezések (Queries)

Felsorolja a kódban szereplõ elnevezett, natív és inline lekérdezéseket. Kattintásra megjeleníti a lekérdezés formázott forrását JPQL és SQL nyelven egyaránt.

SQL keresõ (SQL Finder)

Gyakori igény üzemeltetõk részérõl, hogy meg kell találni egy, a naplóból kiolvasott SQL utasítás forrását az alkalmazásban. Ez a funkció azonosítja azokat a kódsorokat, amelyek a megadott SQL vagy JPQL lekérdezést indíthatták.

sql finder

Hatásvizsgálat (Impact analysis)

Az AU4J kapcsolódik a forráskódot tároló verziókezelõ szoftverhez. A forráskódon történõ módosítás után, ha a felhasználó beírja egy commit azonosítóját, akkor az alkalmazás visszaadja a megváltozott felhasználói és interfész funkciók listáját. Az eszköz csökkenti a regressziós tesztelés erõforrásigényét, és lehetõvé teszi a változás biztonsági hatásának felmérését.

Szókincs elemzés (Vocabulary)

Összegyûjti az alkalmazásban névként használt szavakat (beleértve az összetett nevek komponenseit is), ami lehetõvé teszi az alkalmazás fogalmainak csoportosítását. Megmutatja egy adott szó összes felhasználását, ezzel elõsegíti a rendszer nyelvének egységesítését, közös szókincs kidolgozását a tartományszakértõk és a fejlesztõk között, valamint lehetõvé teszi a szinonímák összepárosítását (vegyes nyelvû kódokban).

Biztonsági elemzés (Security analysis)

Az üzleti szakértõ kárértéket rendelhet az adatfájlokhoz és táblákhoz. Az eszköz külön kezeli az adatszivárgás és az adattörés okozta károkat. Az AU4J megjeleníti ezeket a belépési pontokon, más szóval kvantitatív módon megmutatja, hogy az egyes belépési pontok védelmi szempontból mennyire kritikusak.

Kiknek fejlesztjük az alkalmazást

Az Application Understanding for Java egyaránt hasznos eszköz

  • a rendszert üzemeltetõ informatikusok,
  • a szupportot (rendszertámogatást) ellátó szoftverfejlesztõk és rendszerszervezõk,
  • a rendszer továbbfejlesztését vagy átalakítását tervezõ szakemberek, és
  • a rendszer üzleti-szakmai felhasználói számára.

Egyedi módon képes megmutatni azt, hogy egy monolit alkalmazás

  • hogyan darabolható fel önálló modulokra, vagy akár mikroszervizekre;
  • milyen dead code-okat (nem használt kódokat) tartalmaz;
  • megvizsgálja, hogy egy módosításnak (javításnak vagy új fejlesztésnek) milyen hatása lehet a biztonságra, illetve a teljes regressziós teszt helyett mely use-caseket elegendõ vizsgálni;
  • jelentõsen meggyorsítja a mûködés során felmerülõ hibák okának azonosítását
  • az alkalmazás belépési pontjait képes minõsíteni annak alapján, hogy mekkora a rajtuk keresztül okozható kár mértéke, az egyes belépési pontok védelmi szempontból mennyire kritikusak.

A projekt a Mikro- és kisvállalkozások innovációs tevékenységének támogatása keretében, 2018-1.1.1-MKI-2018-00148 számon valósult meg. A terméket azóta is folyamatosan továbbfejlesztjük.

2020. október 7.

ERFA logó
Entisnet logo
© 2025 entisnet.hu