Programmcode in Echtzeit protokollieren und Fehler schneller beseitigen = Produktivität steigern!
directaudit (Runtime Audit für RPG) ist ein Software-Tool für IBM i Entwickler, um RPG-, COBOL- und CL-Programme während der Ausführung in Echtzeit zu protokollieren.
directaudit erstellt eine lückenlose und authentische Aufzeichnung aller Operationen, die im Programm in Echtzeit gelaufen sind. Es bietet leicht verständliche Auswertungen für Entwickler:
- Ein sequentielles Audit-Protokoll im HTML-Format zu jedem einzelnen Programmlauf. Damit finden Sie Programmfehler im ersten Durchlauf. Und Sie erhalten den besten Einblick in fremden Programmcode.
- Eine Laufzeit-Analyse: Welche Programmzeilen brauchen zu viel Zeit?
- Unbenutzten Code: Welche alten Programmzeilen werden nie benutzt?
Typische Anwendungsgebiete
- Rückwärts-Debugging durch Echtzeit-Software-Analyse. Im directaudit-Protokoll (HTML-Anzeige) können Sie einen Fehler ganz einfach von hinten nach vorne suchen; im Debugger kann man nicht zurückgehen um zu sehen, was vorher geschehen ist. Mit directaudit finden Sie Programmfehler im ersten Durchlauf und erleben eine Vervielfachung! der Programmierer-Produktivität.
- Fehleranalyse unter Realbedingungen. Beispiel: Wenn ein User das Programm benutzt, liefert es andere Werte als wenn der Programmierer das Programm testet. Lassen Sie directaudit bei einem User mitlaufen! Dann erhalten Sie ein präzises Protokoll in der User-Umgebung.
- Ein fremdes oder altes Programm mit mehreren Tausend Statements, dessen Entwickler nicht verfügbar ist, soll geändert oder modernisiert werden. Dazu muss man erst einmal verstehen, was dieses Programm wie und in welcher Reihenfolge unter verschiedenen Bedingungen macht. Ein Echtzeit-Protokoll hilft enorm und nimmt den Schrecken.
- Besonders kritische Softwareteile (Buchungen, Preisfindung, Überweisungen, etc.) müssen vor Manipulationgeschützt werden. Wenn diese Teile mit directaudit lückenlos dokumentiert werden, kann Missbrauch weitgehend ausgeschlossen werden.
So funktioniert directaudit
directaudit erweitert (eine Kopie) des Quellenprogramms um Audit-Anweisungen. Danach wird die erweiterte Source automatisch kompiliert und in eine andere Objektbibliothek gestellt. Diese Objektbibliothek wird bei der Ausführung in der Bibliotheksliste VOR die normale Anwendung gestellt.
Nach der Ausführung des Programms sind die Auswertungen im Browser zu sehen:

directaudit-Protokolle / -Auswertungen
1. Übersicht der Audit-Läufe
2. Jeder Auditlauf bietet ein vollständiges sequentielles Ablaufprotokoll. Das ist eine unveränderliche Prozess- und Datenspur, die den Inhalt aller Datenfelder, Bezugszahlen und Variablen bei jedem ausgeführten Statement zeigt.
Auszug aus einem directaudit-Protokoll (oben). Es zeigt:
- dass man in der HTML-Anzeige vor- oder rückwärts suchen kann (Browser-Funktion STRG+F)
- dass die Inhalte von Variablen und Bezugszahlen direkt sichtbar sind (Orange gefärbt)
- wo zu einem anderen Programm gewechselt wurde (hier Wechsel GSM010 zu GSM100)
Abhängig von den Audit-Parametern (welche Statements, Subroutinen, Variablen, Dateien, Bedingungen) können komplette Programme oder auch nur bestimmte Programmteile untersucht, d.h. protokolliert werden.
3. Die Laufzeit-Analyse zeigt Anweisungen, die bei der Ausführung ungewöhnlich lange gebraucht haben. Man kann die Spalte auf- bzw. absteigend sortieren.
4. Unbenutzte Anweisungen sollte man entfernen, um keinen Ballast zu verwalten und zu pflegen. Wenn man den Durchlauf eines Programms eine Weile mitprotokolliert hat, wird als Nebeneffekt sichtbar, welche Programmzeilen nie verwendet werden. Das kommt häufig daher, dass Funktionen, die vor 10-30 Jahren wichtig waren, nicht mehr benötigt werden.
Bevor man also darangeht, eine Software zu modernisieren, sollte man den Programmcode, der gar nicht mehr verwendet wird, entfernen, und erst dann den restlichen Code modernisieren.
directaudit spart Ihrer Software-Entwicklung und Ihrem Unternehmen mehr Zeit und Geld, als Sie je vermuten würden!
Fragen und Antworten
Für welche Programmtypen kann directaudit genutzt werden?
directaudit unterstützt aktuell RPGIII, RPGIV, CL, CLLE und COBOL.
Free RPG kommt voraussichtlich in 2025. Kunden mit Wartungsvertrag erhalten die neue Version kostenfrei geliefert.
Welche Rechte muss ein User haben, um directaudit nutzen zu können?
Um ein Programm auditierfähig zu machen, d.h. zu “erweitern”, muss der User die Source bearbeiten und umwandeln dürfen.
Um das erweiterte und umgewandelte Programm ausführen zu können, benötigt der Benutzer keine besonderen Rechte.
Wird der Original-Code der Sourcen irgendwie verändert oder markiert?
Nein. An Ihren Original-Quellen werden keine Veränderungen vorgenommen. Die erweiterte Quelle wird nur temporär erzeugt, damit sie compiliert werden kann.
Kann das Auditieren auf einen bestimmten Zeitraum oder User eingeschränkt werden?
Nicht direkt. Es wird über die Bibliotheksliste bestimmt, ob das normale Programm ausgeführt wird oder das auditierfähige Programm.
Hier ist das Warum:
Man könnte das Auditing zwar auf bestimmte Zeiten oder User einschränken, würde dadurch aber nur die Ausgabe des Protokolls verhindern. Das Programm würde intern trotzdem durch das Audit laufen und so zusätzliche Rechenleistung in Anspruch nehmen.
Geschäftsrelevante Aspekte von directaudit
- Die Produktivität der Software-Entwickler wird durch erheblich schnellere Fehlersuche und Protokollierung von Testläufen in jeder Phase (Entwicklung, Wartung, Supportfälle) signifikant höher.
- Die Abhängigkeit von ausgeschiedenen Mitarbeitern wird reduziert. Dank directaudit kann auch jeder andere Entwickler die einmal programmierten Abläufe nachvollziehen, verstehen und neue Anforderungen ohne “Blindflug-Programmierung” an der richtigen Stelle einbauen.
- Die Investition in Software wird geschützt, indem die Software um Jahrzehnte länger produktiv bleiben kann.
- Softwaremodernisierung gelingt schneller und fehlerfreier mit den detaillierten Angaben von directaudit zu jedem Programm, z.B. Anzahl Fehlermeldungen, Anzahl Updates, welche Subroutinen, benutzte Operationsschlüssel und Funktionen, uvm.