Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

25.08.1989 - 

CICS gestattet unerwünschte Speicherzugriffe, doch:

Debugger erhöhen die Programmstabilität

Während die heutigen ClCS-Anwendungen zunehmend komplexer werden, haben die Programmierer alle Hände voll zu tun, um Zeitvorgaben und Endtermine zu koordinieren. Testperioden können direkte Auswirkungen auf die Produktions-Anwendungen haben. Diese Situation führt zu dem wahrscheinlich kritischsten CICS-Problem: Unerwünschte Speicherzugriffe (Storage Violations).

Das Online-System CICS gestattet gleichzeitig Läufe von beliebigen Datenbank- und Anwenderprogrammen. CICS erlaubt den Anwendungsprogrammen, Daten oder Bereiche anderer Tasks zu verändern, wodurch Speicherverletzungen verursacht werden können. Wenn solche Speicherüberschreitungen auftreten, können daraus mehrere Probleme resultieren: Unterbrechungen für ClCS-Anwendungen in der Produktion, Verlust der Datenintegrität, Systemzusammenbrüche, die einen erneuten Start der CICS-Region erfordern und Verlust von Programmierer-Testzeiten.

Die Behebung einer Speicherverletzung kann schwierig werden. Oft sind alle nötigen Informationen verschwunden, bevor das Problem gefunden wird. Durch umfangreiche CICS-Dumps sind die Bemühungen der Fehlersuche häufig vergeblich. Vor diesem Hintergrund haben sich mittlerweile einige Anwender entschieden, diesen Problemen mit einem geeigneten Softwarewerkzeug zu begegnen, um die Wirtschaftlichkeit im DV-Bereich zu verbessern.

Der Programmierer muß in die Lage versetzt werden, Fehler genau zu analysieren und zu beseitigen. Das gilt nicht nur für CICS-Transaktions-Abbrüche und Speicherverletzungen, sondern auch komplexe logische Probleme und Dateninkonsistenzen. Logische Programmfehler und datenbezogene Probleme können eine ungeheure Herausforderung sein, wenn man bedenkt, daß das Programm nicht immer auf spezifische Statements oder fehlerhafte Instruktionen hinweist.

Die wichtigsten Kriterien, die zu einer Entscheidung für den Einsatz eines Debugging-Werkzeuges führen, sind:

þErgonomie, das heißt anwenderfreundliche Bedieneroberfläche, angelehnt an TSO-ISPF. Gleiche Tastenbelegung, ISPF-gleiche oder ähnliche Kommandos (FIND-command, etc.), Setzen von Stops etc. per Line-Commands,

þkomfortable Trace-Möglichkeiten mit Anzeige der involvierten Feldinhalte und zusätzlich frei wählbarer Felder,

þsymbolische Anzeige der Working-Storage und Linkage-Section,

þFeldanzeige in Hexa- und Character-Darstellung,

þAufbereitung von Tabellenfeldern in der Working-Storage,

þDatenbank-Schnittstellen: DL/1 Call-Level, DL/1 Exec-Level, DB2-SQL,

þVerträglichkeit mit den IBM-Komponenten CEDF und CICS-MRO,

þMöglichkeit des gezielten Einsatzes des Werkzeuges, auch in einer Produktionsumgebung, Möglichkeit des Datenschutzes über Security-Features,

þVerhinderung von Speicherverletzungen,

þMöglichkeit der Überwachung von Hintergrundtransaktionen (Transaktionen, die ohne Terminal ablaufen),

þMaster/Slave-Unterstützung, das heißt Überwachungsmöglichkeit von anderen Bildschirmen aus,

þsymbolische Anzeige interner CICS-Systembereiche wie CS/A, TCA für die Systemprogrammierer.

Eine umfassende Unterstützung der CICS-Tests muß von der Leistungsfähigkeit und der Architektur darauf ausgelegt sein, Probleme sowohl im Test- als auch im Produktionsbereich anzuzeigen. Debugging-Tools helfen, kritische Probleme sowohl in der CICS-Produktionsumgebung, als auch im Test zu isolieren, zu fixieren und zu adressieren.

Produktionsbezogene Probleme sind besonders kritisch. Dementsprechend haben steigende CICS-Integrität, Stabilität und Verfügbarkeit in den meisten DV-Organisationen oberste Priorität. Entsprechende Softwaretools sollten hier eine schnelle und präzise Reaktion auf auftretende Produktionsprobleme gewährleisten können. Eine interaktive CICS-Testmethode verbessert zudem die Qualität und Integrität der entwickelten Anwendungen.

Von Vorteil ist, wenn das Debugging-Tool dem Anwender gestattet, in jedem Online-Cobol- oder Assembler-Programm Fehler zu finden und zu beseitigen, ohne es neu umzuwandeln. In der Produktionsumgebung sollte ein derartiges Werkzeug die schnelle und präzise Reaktion auf eine Fehlermeldung in einer Datei, Datenbank oder einem temporären Speicher ermöglichen. Weiter sollten kritische Speichermodifizierungen vorgenommen werden können, ohne CICS herunterzufahren.

Die breite Palette der oft auftretenden Fehler umfaßt Programmlogikfehler, CICS-Transaktions-Abends und CICS-Storage-Violation. Viele CICS-Transaktions-Fehlercodes haben verschiedene Definitionen wie ASRA, AEIP. Um die Kontrolle über den Testablauf zu behalten, muß das Debugging-Tool das zu testende Programm unterbrechen, und zwar bevor es zu einem Abbruch kommt. Nur dann kommen die folgenden Vorteile zum Tragen:

þsofortige Beschreibung der Fehlerbedingung,

þsofortige Beschreibung der fehlerhaften Anweisung, da Source-Level interaktives Testen möglich macht,

þsofortige Analyse der Programmdaten,

þFähigkeit, den Test zu steuern und dabei:

- Anzeige der betroffenen, möglicherweise fehlerhaften Feldinhalte,

- Leitwegverarbeitung, um die fehlerhafte Anzeige und Instruktion herum,

- Leitwegverarbeitang zu anderen Programmsektionen, die normalerweise nicht getestet werden können,

- sofortige Veränderung der Feldinhalte und direkte Wiederholung der Instruktionsfolge,

- Abbruch der Transaktion.

Auf diese Weise können vielschichtige Programmprobleme und Fehlerbedingungen während jedes Testlaufs gefunden werden. Somit sind die Hauptziele eines interaktiven Testsystems:

þErhöhung der Getsamtproduktivität der Programmierer,

þvielfältige Programmprobleme und Fehlerbedingungen sollen während eines Testdurchlaufes gefunden werden,

þdie Reduzierung der gesamten Ressourcennutzung durch die Verminderung

- der Anzahl und Häufigkeit der Testläufe,

- der Anzahl und Häufigkeit der Programmumwandlungen und Linkläufe,

- der Erfordernisse gedruckter Auflistungen und

- der Erfordernisse von Transaktions-Dumps.

Analyse zeitraubend und beschwerlich

Die traditionellen Methoden interaktiver Tests sind dagegen mit einer Reihe von Problemen behaftet: Die Analyse von CICS-Dumps kann beschwerlich und zeitraubend sein und erfordert zudem fehlerträchtige hexadezimale Berechnungen. Die Analyse eines Programms verlangt häufig mehrere unterschiedliche Trace-Dumps und grundsätzlich kann jedes einzelne Programmproblem mehrere Umwandlungen, Linkläufe und Testläufe in Anspruch nehmen, um genau zu diagnostizieren und zu korrigieren.

CEDF (command-level execution diagnostic facility) ist in einem CICS-Makro-Level-Anwendungsprogramm in diesem Rahmen relativ nutzlos denn es erfolgt nur ein Stop bei CICS-Befehlen. Mitunter erfordert es viel Aufwand, um ein Problem mit seinen Ursachen und Auswirkungen einzukreisen. Hingegen ist es hilfreich, wenn das Tool die Möglichkeit bietet, bei jeder Instruktion stoppen zu können.

Insgesamt muß den Programmierern eine vollständige Kontrolle über jeden Testlauf geboten werden. Unproduktive Testverfahren sollten beseitigt, Umwandlungen sowie Linkläufe vermindert werden. Vor allem gilt es, gründlicher getestete Programme in die Produktionsumgebung einzuspielen.

Das Ziel, ungültige Daten in einem Anwendungsprogramm zu lokalisieren, besteht darin, diese Daten zu finden und auf zweckmäßige Weise zu korrigieren. Um das zu erreichen, braucht ein Programmierer ein umfassendes Fehlerbeseitigungsinstrument, das folgende Merkmale beinhalten sollte:

þZugriff auf die Programmsource zur Unterstützung einen detaillierten Programmanalyse;

þbedingungsloser Stop, der dem Anwender gestattet, den Programmlauf bei jeder Anzeige oder Anweisung anzuhalten;

þbedingte Stops, die dem Benutzer das Anhalten eines Programmlaufes bei einer spezifischen Anzeige oder Instruktion nur erlauben, wenn eine vorbestimmte Bedingung eintritt;

þschrittweise durch das Programm gehen, erlaubt dem Benutzer, das Programm Befehl für Befehl durchzugehen, bei gleichzeitiger Anzeige involvierter und zusätzlich angegebener Felder;

þZeitlupenprogrammoperation unterstützt die Analyse des logischen Programmablaufs und des Dateninhaltes jeder Anzeige und Instruktion, so daß Abläufe optisch verfolgt werden können;

þbedingtes, schrittweises Vorgehen gestattet dem Anwender, die Programmoperation irgendwo zu stoppen und zu starten, wenn eine spezifische Bedingung auftritt.

Die traditionellen Methoden sind im Vergleich hierzu extrem zeitraubend, äußerst fehlerträchtig und mühsam. Wertvolle Entwicklungs und Testzeit wird vergeudet. Es kann nicht sinnvoll sein, wenn der Programmierer bei der Programmsource-Analyse den Computer "spielt", indem er jede Instruktion analysiert und jeden Gebrauch und jede Veränderung eines Datenfeldes nachverfolgt. Jeder Testlauf sollte zu einem Qualitätstest führen, anstatt die Operationen für jedes einzelne Programmproblem zu wiederholen.

CICS-Storage-Violations werden von Programmen verursacht, die ClCS-Speicherbereiche überlagern. Sie sind ein ernstes Problem in der Testumgebung und haben noch kritischere Auswirkungen in der Produktion. Speicherschutz muß ein integraler Bestandteil jedes CICS-Test- und Fehlerbeseitigungssystems sein. CICS-Storage-Violations können sich folgendermaßen auswirken:

þzerstörte oder teilzerstörte Programme können abbrechen,

þüberlagerte Speicherbereiche verursachen nicht vorhersehbare Ergebnisse,

þCICS-System-Speicherbereiche können überschrieben werden und dadurch zu einem Zusammenbruch von CICS führen,

þVerwirrung in der ClCS-Umgebung durch Ausfall der Online-Verfügbarkeit,

þWartezeiten für Operator, Programmierer und CICS-Anwender und Kunden.

Da das schon genug Probleme sind, bleibt nichts anderes übrig, als die Speicherstörung zu finden und das Programm zu korrigieren. Das kann eine gigantische Aufgabe sein. Entsprechend ihrer Natur verwischen Speicherverletzungen oft ihre Spuren und machen dadurch die Problemlösung kostspielig, zeitraubend und manchmal fast unmöglich.