APPLICATION UNDERSTANDING FOR JAVA (AU4J)
Legacy-Anwendungen sind nützliche Systeme, die mit alter, unbekannter oder veralteter Technologie erstellt wurden. Sie sind teuer zu ersetzen, ihre Dienstleistungen erfüllen die Erwartungen, aber ihre Verwendung wirft mehrere Probleme auf.
Seit den 1980er Jahren sind Legacy-Anwendungen ein ernstes Problem im Bereich der Informationstechnologie. Vor einem Jahrzehnt dachte jeder an das Wort "Legacy" in Systemen, die in veralteten Sprachen wie COBOL, der natürlichen Sprache der Software AG oder der RPG-Sprache von IBM geschrieben wurden.
In den letzten zehn Jahren hat sich die Mainstream-Technologie jedoch dramatisch verändert, und dies hat auch die Java-Community betroffen. Die Cloud machte einige Aspekte von Java EE so unbrauchbar, dass Java EE schließlich aus dem Java-Portfolio von Oracle entfernt wurde. Microservices ersetzen monolithische Server, die in Hochleistungscontainern installiert sind.
In der Softwareindustrie besteht das Ziel der Brownfield-Entwicklung darin, eine alte Codebasis zu erhalten und weiterzuentwickeln.
Das Problem hierbei ist häufig nicht die Komplexität der neuen Funktionen oder die Komplexität der Umgebung, sondern die Notwendigkeit eines detaillierten und gründlichen Verständnisses des Betriebssystems sowohl in geschäftlicher als auch in IT-Hinsicht. Manchmal ist dieses Verständnis in beiden Sinnen unvollständig. Experten auf dem Gebiet und Autoren des ursprünglichen Codes wären erforderlich, aber sie sind nur in begrenztem Umfang oder überhaupt nicht verfügbar.
Application Understanding für Java (AU4J) ist eine Anwendung zur Lösung des oben genannten Problems.
Application Understanding for Java Entwicklung
Die von unserem Unternehmen ENTIS-NET Gmbh entwickelten AU4J-Methoden und -Algorithmen basieren auf ähnlichen Anwendungen, die bereits für die Programmiersprachen COBOL, RPG und Natural entwickelt wurden, und implementieren unsere vorhandene Technologie zum Verständnis von Anwendungen und das gesammelte Wissen für die Programmiersprache Java.
Dieses Ziel beinhaltete jedoch einige neue Herausforderungen, als wir die Methode zum ersten Mal auf objektorientierte Sprache anwendeten.
Unabhängig vom Ziel des alten Codes, ob er von Grund auf neu geschrieben, die Brownfield-Entwicklung fortgesetzt oder nur zwischen den beiden oben genannten Optionen entschieden wird, müssen Sie die in der Anwendung enthaltene Geschäftslogik verstehen. Das Extrahieren von Geschäftslogik aus einer vorhandenen Codebasis ist jedoch keine leichte Aufgabe. Entwickler müssen Hunderttausende oder sogar Millionen von Codezeilen untersuchen.
Heute stehen mehrere hervorragende Tools zur Unterstützung der Codezuordnung und -entschlüsselung zur Verfügung. Diese folgen normalerweise der Kontrollstruktur des Programms von oben nach unten vom Einstiegspunkt entlang eines gerichteten Diagramms des Kontrollflusses.
Das Durchqueren der Kontrollstruktur ist jedoch schwierig zu verfolgen. Bei diesem Ansatz wird das System in kurzer Zeit kompliziert und undurchsichtig, da die Komplexität auf dem Weg exponentiell zunimmt.
Im Gegensatz dazu verfolgt Application Understanding for Java (AU4J) einen völlig anderen, neuen Ansatz zum Extrahieren von Geschäftslogik aus Anwendungscode.
Die Methode zum Verständnis der AU4J-Anwendung folgt der entgegengesetzten Richtung. Erkennt die Punkte im Code, an denen persistente Daten generiert werden (Ausgabeendpunkte). Von hier aus bewegt sich die Durchquerung des Diagramms rückwärts und sammelt die Codefragmente, die beim Erstellen der konstanten Daten beteiligt sind.
Das Ergebnis ist eine reine Geschäftslogik, bei der alle anderen Aspekte der Architektur wie Protokollierungs- und Verwaltungsfunktionen weggelassen werden.
Das Extrahieren von Geschäftsregeln ähnelt in gewisser Weise der Angiographie, einer medizinischen Bildgebungsmethode zur Visualisierung von Blutgefäßen. Der Entwickler injiziert Farbe in einen oder mehrere Endpunkte des Systems und schaut auf die Flecken.
Das AU4J-Tool kann in eine IDE integriert werden (derzeit wurde das Plugin für die JetBrains IntelliJ IDEA-Umgebung entwickelt), sodass Entwickler AU4J-Ergebnislisten in ihrer eigenen vertrauten Umgebung verarbeiten können.
Neben dem Extrahieren von Geschäftsregeln bietet die AU4J-Webanwendung verschiedene andere Tools zur Unterstützung der Anwendungswartung und der Brownfield-Entwicklung.
Az Application Understandig for Java (AU4J) Funktionen
Scan
Scannen, untersuchen und analysieren Sie die Anwendung anhand des Quellcodes.
MODULES (MODUL HIERARCHIE)
Zeigt nach der Analyse die Hierarchie der Anwendungsmodule als erweiterbaren Baum an. Außerdem werden Modulstatistiken angezeigt.
PAINT
Erweitert die Geschäftslogik durch Auflisten der Codes und Datendateien, die den ausgewählten Endpunkten zugeordnet sind. Für einen Ausgabeendpunkt (in einer ausgewählten Farbe) werden die Codes gezeichnet, die an seiner Produktion beteiligt sind, und für einen Eingabeendpunkt diejenigen, die an seiner Verarbeitung beteiligt sind.
Dead Code
Erkennt nicht verwendete Codefragmente in der Anwendung. Der rekursive Algorithmus filtert auch Codes heraus, die nur von nicht verwendeten Codeteilen aufgerufen werden.
Invocation Map
Für alle Methoden in der zu testenden Anwendung werden alle Codes aufgelistet, die diese Methode aufrufen.
Entities
Listet persistente Entitäten in der Anwendung auf. Wenn eine Eigenschaft eine Referenz auf eine andere Entität ist, zeigt sie beim Klicken auch ihre Struktur an, sodass ganze Referenzketten gleichzeitig angezeigt werden können.
CYCLOMATIC COMPLEXITY
Zeigt die Gesamt- und Durchschnittskomplexität der Elemente der Modul-Klassen-Methoden-Hierarchie an. Das Tool hilft bei der Ressourcenplanung zum Testen und zeigt Methoden auf, die im Code schwer zu pflegen sind.
Queries
Listet benannte, Native und Inline-Abfragen im Code auf. Klicken Sie hier, um die formatierte Quelle der Abfrage in JPQL und SQL anzuzeigen.
SQL Finder
Es ist eine häufige Anforderung von Bedienern, die Quelle einer SQL-Anweisung zu finden, die aus dem Protokoll in der Anwendung gelesen wird. Diese Funktion identifiziert die Codezeilen, die die angegebene SQL- oder JPQL-Abfrage gestartet haben könnten.
Impact analysis
Der AU4J ist mit der Versionskontrollsoftware verbunden, in der der Quellcode gespeichert ist. Wenn der Benutzer nach dem Ändern des Quellcodes eine Festschreibungs-ID eingibt, gibt die Anwendung eine Liste der geänderten Benutzer- und Schnittstellenfunktionen zurück. Das Tool reduziert den Ressourcenbedarf für Regressionstests und ermöglicht es Ihnen, die Sicherheitsauswirkungen einer Änderung zu bewerten.
Vocabulary analysis
Sammelt Wörter, die in der Anwendung als Namen verwendet werden (einschließlich Komponenten zusammengesetzter Namen), sodass Sie Anwendungskonzepte gruppieren können. Es zeigt alle Verwendungen eines bestimmten Wortes und hilft dabei, die Sprache des Systems zu vereinheitlichen, ein gemeinsames Vokabular zwischen Domain-Experten und Entwicklern zu entwickeln und das Koppeln von Synonymen (in gemischten Sprachcodes) zu ermöglichen.
Security analysis
Der Geschäftsexperte kann den Datendateien und Tabellen einen Schadenswert zuweisen. Das Gerät behandelt Schäden durch Datenlecks und Datenverletzungen separat. Der AU4J zeigt diese an Einstiegspunkten an, dh er zeigt quantitativ, wie kritisch jeder Einstiegspunkt aus Sicherheitssicht ist.
Für wen wir AU4J entwickeln
Application Understanding for Java ist ein nützliches Werkzeug

  • für IT-Spezialisten, die das System bedienen,
  • Softwareentwickler und Systemadministratoren, die Support leisten (Systemunterstützung),
  • Fachleute, die planen, das System zu verbessern oder zu modifizieren, und
  • für professionelle Geschäftsanwender des Systems.
Es kann eindeutig zeigen, dass eine monolithische Anwendung

  • wie es in einzelne Module oder sogar Mikrodienste unterteilt werden kann;
  • welche toten Codes (nicht verwendete Codes) es enthält;
  • untersucht die Auswirkungen einer Änderung (Reparatur oder Neuentwicklung) auf die Sicherheit und welche Anwendungsfälle ausreichen, um anstelle des vollständigen Regressionstests zu testen;
  • beschleunigt die Identifizierung der Ursache von Betriebsfehlern erheblich
  • kann die Einstiegspunkte der Anwendung anhand des Ausmaßes des Schadens klassifizieren, der durch sie verursacht werden kann, und wie kritisch jeder Einstiegspunkt aus Sicherheitsgründen ist
Das Projekt wurde im Rahmen der Unterstützung der Innovationsaktivitäten von Kleinst- und Kleinunternehmen am 2018-1.1.1-MKI-2018-00148 durchgeführt. Seitdem haben wir das Produkt kontinuierlich weiterentwickelt.
7. Oktober 2020