Das Tool für Code-Analyse und Software-Re-Engineering.
Ihre Vorteile
Sie identifizieren und eliminieren nicht mehr benötigten Code.
Sie dokumentieren die Realität – jederzeit wiederholbar.
Sie ermöglichen bessere Kommunikation zwischen Fachbereich und Entwicklung.
Sie finden leichter Nachwuchs – und dieser wird doppelt so schnell produktiv.
eXplain deckt insbesondere folgende Funktionalitäten ab:
1. Code-Analysen unterschiedlicher Sourcecode-Quellen
2. Schnittstellenanalysen durch Clustering
3. Komplexitätsvermessung anhand von Regeln und Metriken
4. Kundenindividuelle und erweiterbare technische Dokumentation, die vollautomatisch generiert und jederzeit wiederholt werden kann
Gewachsene Software-Monolithen sind
komplex funktional überladen technologisch veraltet
Sourcen
statische Info
eXplainAnalyse
eXplainClustering
Integriert in Eclipse. Flexibel in der Handhabung. Präzise im Ergebnis.
eXplainQA
dynamische Info externe Info
Parser Individualinfo
Repository
Module Statements und Subroutinen Data Elements (Felder, Attribute, Variablen, Parameter)
Das Repository besteht aus nur 20 Tabellen zur Verwaltung der einzelnen Entitäten und deren Beziehungen zueinander. Dadurch ist es überschaubar und gut strukturiert.
Es kann leicht für eigene SQL-Abfragen genutzt werden.Die Zugriffe und damit auch die Visualisierung sind sehr performant!
Auf einen Blick
Das Repository ist die Grundlage für die Visualisierung und basiert auf drei Ebenen
PROGRAM PGM_A....SUBROUTINE SUB1VAR A, B, C A = B B = B * DEND
SUBROUTINE SUB2 (PARAM1)VAR A A = PARAM1 + 2 RETURN AEND
MAIN VAR X, Y CALL SUB1 Y = CALL SUB2 (X)END
Mit eXplain werden beliebige Sourcecode-Quellen über ausgereifte Parser, die auch kundenindividuell angepasst werden können, gescannt und sowohl statische wie auch dynamische Informationen ausgewertet.
Dabei werden vorrangig verwendete Technologien wie z.B. Cobol, PL I, JCL, RPGLE, DDS, CL etc. abgedeckt.
Alle Informationen aus den Parsing-Vorgängen zuzüglich kundenindividueller Aspekte (z.B. im Sourcecode mit speziellen Tags versehene Kommentare) werden in einem Db2-Repository abgespeichert. Für jegliche Analysen, Auswertungen und Dokumentationen kann das Repository direkt über SQL-Abfragen ausgewertet werden.
Funktional ausgereifte Parser scannen den Sourcecode und legen alle relevanten Meta-Informationen im eXplain Repository ab. Datenbankstrukturen (Db2, DDS, Adabas) werden dem Repository über extern bereitgestellte Metadaten hinzugefügt.
Informationen aus exportierten JCLs z.B. über DD Statements, EXEC Aufrufe usw. können die Parser ebenfalls im Repository ablegen und damit die Verknüpfung zu den Programmen herstellen.
Ein Import z.B. aus Tivoli exportierten, Jobketteninformationen ist in eXplain möglich und bildet die Abhängigkeiten zwischen Jobs und darin referenzierten Programmen und Ressourcen ab. Mit eXplain können über die Analyse- und Visualisierungsengines sowie durch die Nutzung des Clustering-Features die folgenden Ergebnistypen erzeugt werden:
1. Code-Analyse und Dokumentation mit dem eXplain Code-Analyzer
Objekt-Strukturen
(über Code-Quellen hinweg)
Verwendungsnachweise
Diese können entweder direkt über die Informationen im Repository, über in eXplain verfügbare Assistenten oder interaktiv durch die Visualisierungsengines erzeugt werden.
Datenflüsse
(über Code-Quellen, Objekte und Anwendungssysteme hinweg)Die Feldverfolgung ist an dieser Stelle sowohl „Top-Down“ als auch „Bottom-up“ möglich.
Ressourcenverwendung
Welche Programme verwenden eine bestimmte Datenbanktabelle:
Schnittstellen
(Anwendungssystem-übergreifende Verwendungen)Nachfolgendes Beispiel zeigt, wie in eXplain Schnittstellen zwischen Anwendungsclustern detailliert dargestellt werden können. Dabei kann interaktiv (über rechte Maus-Taste > „open source“) jeweils genau an die Stelle im Sourcecode navigiert werden, wo der Call stattfindet:
Das nachfolgende Beispiel zeigt die Visualisierung eines kundenspezifischen Nachrichtensystems (vergleichbar zu MQ), welches über externe Beschreibungen in eXplain importiert wurde:
Der periodische Import aller aktualisierter Quellen kann unmittelbar z.B. aus Sourcecode-Management Systemen eingerichtet und in den vorhandenen Entwicklungsprozess nahtlos integriert werden. eXplain aktualisiert dadurch automatisch alle Auswertungen.Die Ergebnisse der Codeanalysen werden den Entwicklern interaktiv über eine Eclipse-Oberfläche zur Recherche zur Verfügung gestellt.
Eine wichtige Anforderung für ein effizientes Application Management oder einen reibungslosen Umstieg auf ein Neusystem ist neben der technischen Code-Analyse auch die Definition und Strukturierung von einzelnen Funktionsblöcke der Anwendung. Nur so können Schnittstellen zwischen Anwendungsstrukturen klar erkannt und beschrieben sowie Komplexitäten verschiedener Funktionsblöcke miteinander in Relation gesetzt werden. Hierzu bietet eXplain das sogenannte Clustering. Hierbei werden in eXplain die vom Kunden vorzugebenden fachlichen Entitäten definiert. Den Entitäten werden anschließend die jeweils zugehörigen technischen Artefakte zugewiesen. eXplain kann dann die technische Analysesicht und die Clusterzuordnung übereinander gelagert grafisch darstellen und somit ein ganzheitliches Bild auf die Anwendungen ermöglichen.
Mit dem eXplain QA-Dashboard steht ein Werkzeug zur automatisierten Komplexitätsmessung sowie fortlaufenden Qualitätskontrolle zur Verfügung. Dabei kann ein speziell optimierter und im Code messbarer Komplexitätsbegriff gemäß den Richtlinien des Kunden und Erfahrungswerten der PKS definiert und parametrisiert werden.
Basierend auf Sprachgrammatiken und definierten Regeln können unerwünschte Konstellationen im Sourcecode erkannt und vermessen werden. Zudem können diese Informationen dem eXplain-Nutzer als Warnung gemeldet werden. Problematische Situationen wie fehlende Überprüfung von Returncodes nach bestimmten Aufrufen (ESQL, CICS, MQ, …) oder performancekritische Algorithmen können dadurch automatisiert erkannt werden.
2. Fachliche Analysen (Schnittstellenanalysen) mit dem eXplain Clustering
3. Qualitäts-Analysen und Komplexitätsvermessung mit dem eXplain QA-Dashboard
Das Dashboard umfasst dabei verschiedene grafische Ansichten, die unterschiedliche Metriken / Daten visualisieren und vergrößern kann Standortmetriken Objektanzahl und –größe Ungenutzter Code Verschachtelungstiefe Schnittstellenanzahl
Die Ergebnisse der Komplexitätsmessung werden in einem übersichtlichen Dashboard in eXplain dargestellt.
QA Metriken Anzeige kritischer Fehlermeldungen Anzahl Meldungen je Regel-ID Wartbarkeitsindex Kommentierungsgrad Verteilung der Metrikwerte Qualität einzelner Module Wartbarkeitsindex im zeitlichen Verlauf auf Basis der Qualitäts-Snapshots
Zudem werden TOP-10 Handlungsempfehlungen zur Verbesserung der Qualität mit eXplain zur Verfügung gestellt. eXplain erlaubt es außerdem, die Messungen für definierte Cluster durchzuführen. Auch eine Historisierung der Qualitätsmerkmale durch das Erstellen von aktuellen Qualitäts-Snapshots für das ausgewählte Cluster ist möglich. Die Komplexitätsdefinition wird in eXplain implementiert und mit einer Kennzahl für Anwendungsgruppen, Anwendungen, Objekt-Gruppen oder Objekte dargestellt.
Mit eXplain kann eine für den Kunden optimierte technische Dokumentation generiert werden – jederzeit wiederhol- und nachvollziehbar. Dabei können z.B. dargestellt werden:
Objektliste (über alle Code-Quellen hinweg) Liste der Vorgänger/Nachfolger Liste der „Hauptobjekte“ (Job, Programm im Job, Dialog-Hauptprogramm, Schnittstellen-Modul, u.a.) Objektstruktur pro Hauptobjekt (über alle Code-Quellen hinweg) Datenfluss Bereitgestellte Schnittstellen/Ressourcen zu anderen Anwendungsclustern Genutzte Schnittstellen/Ressourcen von anderen Anwendungsclustern
In den Objekten speziell gekennzeichnete Inline-Kommentare werden in die Dokumentation der Code-Quellen integriert. Die technische Dokumentation kann pro Anwendungscluster generiert und als PDF-File exportiert werden. eXplain kann neben Auflistungen von Objektmodulen und/oder Schnittstellen auch dynamisch generierte Übersichtsdiagramme in die Dokumentation integrieren. Damit entsteht eine vollständige Dokumentation über Module und deren Abhängigkeiten.
4. Dokumentation