DE3884034T2 - Verfahren zur Überprüfung von Computersoftware. - Google Patents

Verfahren zur Überprüfung von Computersoftware.

Info

Publication number
DE3884034T2
DE3884034T2 DE88303029T DE3884034T DE3884034T2 DE 3884034 T2 DE3884034 T2 DE 3884034T2 DE 88303029 T DE88303029 T DE 88303029T DE 3884034 T DE3884034 T DE 3884034T DE 3884034 T2 DE3884034 T2 DE 3884034T2
Authority
DE
Germany
Prior art keywords
block
program
code
test
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE88303029T
Other languages
English (en)
Other versions
DE3884034D1 (de
Inventor
Eric Phillip Casteel
R Ralph Delucia
Daniel Joseph Wolf
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CBS Corp
Original Assignee
Westinghouse Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Westinghouse Electric Corp filed Critical Westinghouse Electric Corp
Publication of DE3884034D1 publication Critical patent/DE3884034D1/de
Application granted granted Critical
Publication of DE3884034T2 publication Critical patent/DE3884034T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

    Hintergrund der Erfindung Gebiet der Erfindung:
  • Diese Erfindung bezieht sich auf ein Verfahren zum Testen neuer und überarbeiteter Computerprogramme durch automatisches Erzeugen, Ausführen und Dokumentieren eines kundenorientierten Testprogramms, das nur minimale Eingaben bzw. Interventionen durch den Benutzer erfordert.
  • Hintergrundinformation:
  • Viele Anlagenprozesse werden heutzutage überwacht und in unterschiedlichem Maße im Anlagenkontrollraum gesteuert, wobei Signale verwendet werden, die von überall in der Anlage angeordneten Sendeeinheiten und Instrumentierungen übermittelt werden. Ein typisches Beispiel einer solchen Prozeßanlage ist ein Kernkraftwerk. Obwohl zahlreiche Tätigkeiten im Kontrollraum manuell erfolgen, wird die verbleibende Mehrheit automatisch mit Hilfe von Schaltungen durchgeführt, die programmierte Mikroprozessoren oder programmierbare Digitalrechner umfassen. Zahlreiche der in diesen Mikroprozessoren und Rechnern verwendeten Programme sind mit Bezug auf die Anlagensicherheit kritisch und deshalb sind ihre Genauigkeit und Integrität wichtig.
  • Bei einem typischen Kernkraftwerk können etwa 1200 oder mehr dieser Steuerungs- und Überwachungsprogramme vorhanden sein. Gegenwärtig werden sie durch eine Sichtprüfung des Codes zusammen mit einer unabhängigen physikalischen Prüfung jedes Programmsegments verifiziert und validitiert, um eine richtige Arbeitsweise des Programms sicherzustellen. Obwohl die Sichtprüfung sich als sehr effektiv bei der Validitierung des Programms erwiesen hat, erfordert die von der Nuclear Regulatory Commission der Vereinigten Staaten herausgegebene Richtlinie 1.97, daß Einrichtungen, die Datenerfassungs- und qualifizierte Anzeigefunktionen innerhalb des Kontrollraums erfüllen, in strengerer Weise geprüft werden. Die physikalischen Tests sind bisher unter Verwendung einer Demonstrationseinheit der tatsächlichen Hardware durchgeführt worden, die Zugang zu den Speicherplätzen für die Eingangsparameter und Ausgangsparameter ermöglicht. Um den zu testenden Softwareteil zu isolieren, werden die gewünschten Testwerte der Eingangsparameter direkt in die zugeordneten Speicherplätze in der Demonstrationseinheit eingegeben, und man läßt das Programm ablaufen. Die Ausgangswerte werden von den Ausgangsspeicherplätzen für einen manuellen Vergleich mit den erwarteten Werten herausgezogen.
  • Ein solches Testen legt dem Verifizierer die ganze Last des Entwerfens eines Testprogramms auf, das alle Instruktionen und alle möglichen Verzweigungen in dem Programm ausführt. Dies erfordert ein großes Maß an Geschick auf Seiten des Verifizierers, und es gibt keine direkte Aufzeichnung sämtlicher ausgeführter Programmpfade. Da jedes Programm eine Vielzahl von Aufgaben erfordern kann, um alle Verzweigungen auszuführen, wird das Verfahren außerdem extrem zeitaufwendig und kompliziert.
  • Demgemäß ist es das Hauptziel der vorliegenden Erfindung, ein Verfahren zum Testen von Computerprogrammen zu schaffen, das automatisch ein kundenorientiertes Testprogramm unter Verwendung minimaler Benutzereingaben erzeugt, ausführt und dokumentiert.
  • Hingewiesen wird auf "Angewandte Informatik", Band 25, 8. August 1983, Seiten 321 bis 327, Wiesbaden, wo ein Verfahren zum Verifizieren eines Computerprogrammquellencodes mit bekanntem Format und einer Reihe von Programmanweisungen einschließlich Nichtsteuer- und Steueranweisungen beschrieben ist, durch welche das Programm sich auf alternative Anweisungen des Quellencodes verzweigen kann, und das Verfahren umfaßt das Instrumentieren einer Zieleinheit des Quellencodes durch Betreiben eines Prozessors zum Unterteilen des Quellencodes in Codeblöcke, wobei ein Codeblock durch die Nichtsteueranweisungen zwischen Steueranweisungen markiert wird, und zum Einfügen von ausführbaren Instruktionen in die Codeblöcke zum Schreiben einer Kennung in eine Ausgabedatei für jeden Codeblock, wenn er ausgeführt wird, das Auswählen eines Testdatensatzes für die Zielcodeeinheit, wobei jeder Testdatensatz Eingabewerte für Variable in der Testeinheit und erwartete Ausgabewerte enthält und der Testdatensatz so ausgewählt wird, daß jeder Codeblock in der Testeinheit ausgeführt wird, und das Erzeugen einer Ausgabe, die tatsächliche Ausgabewerte und erwartete Ausgabewerte für den Testdatensatz darstellt, und einer sequentiellen Auflistung der Blockkennungen der Blöcke der Zielcodeeinheit aus der Ausgabedatei in der Reihenfolge, in der sie ausgeführt wurden.
  • Die Erfindung besteht in einem Verfahren zum Unterstützen der Verifizierung eines Computerprogrammquellencodes mit den Schritten:
  • a) Neuformatieren des Quellencodes einer Programmquellendatei, wobei der Quellencode ein bekanntes Format und eine Reihe von Programmanweisungen aufweist, die Nichtsteueranweisungen und Steueranweisungen umfassen, mittels welcher das Programm sich auf alternative Programmanweisungen des Quellencodes verzweigen kann,
  • b) Auswählen einer benutzergewählten Programmeinheit aus der neuformatierten Programmquellendatei,
  • c) Instrumentieren des benutzergewählten Programms mittels eines Codeinstrumentenprozessors, der den Quellencode in Codeblöcke unterteilt, wobei ein Codeblock durch die Nichtsteueranweisungen zwischen Steueranweisungen markiert wird, und Einsetzen von ausführbaren Instruktionen in die Codeblöcke zum Schreiben einer Kennung in eine Ausgabedatei für jeden Codeblock, wenn er ausgeführt wird,
  • d) Erzeugen eines Quellentestprogramms mit Eingabewerten für die benutzergewählte Programmeinheit und erwarteten Ausgabewerten, um die Programmeinheit mit einer Mehrzahl von benutzergewählten Testdaten auszuführen,
  • e) Kompilieren, Verknüpfen und Ausführen des Testprogramms und der benutzergewählten Programmeinheit,
  • f) wobei die Ausführung eine Ausgabe erzeugt, die aktuelle Ausgabewerte für jede Gruppe von Testdaten und eine sequentielle Auflistung der Blockkennungen der Blöcke der genannten benutzergewählten Programmeinheit aus der Ausgabedatei in der Reihenfolge darstellt, in welche sie ausgeführt wurden.
  • Es wird hier ein Verfahren zum Instrumentieren eines Quellencodes, der in einem Prozeßprogramm zu verifizieren ist, und zum Erzeugen eines Teststeuerprogramms beschrieben, das kompiliert und mit dem instrumentierten Quellencode verknüpft wird, um den Quellencode durch Verarbeitung einer Reihe von Testdatensätzen auszuführen. Der Quellencode wird durch Prozessoren instrumentiert, um, wenn der Code ausgeführt wird, eine Anzeige für jeden Codeblock zu erzeugen, daß die Anweisungen des Blocks ausgeführt worden sind. Ein Codeblock umfaßt die Programmanweisungen zwischen Steueranweisungen. Deshalb wird, wenn der instrumentierte Code durch das Teststeuerprogramm ausgeführt wird, eine Ausgabe erzeugt, welche die ausgeführten Codeblöcke angibt. Durch eine zweckmäßig unterteilte Testreihe werden alle Codeblöcke ausgeführt. Die Testdatensätze werden durch Wählen von Werten für die Eingabevariablen des Zielcodes erzeugt. Die erwarteten Werte für die Ausgabevariablen des Zielcodes werden ebenfalls bestimmt, so daß die durch Ausführung der Testdatensätze erzeugten aktuellen Programmausgabewerte verifiziert werden können.
  • Vorzugsweise wird der zu verifizierende Quellencode zuerst entsprechend einer standardisierten Gruppe von Formatierungsregeln neu formatiert, um einen standardisierten neuformatierten Quellencode herzustellen. Dieser neuformatierte Quellencode wird dann instrumentiert und Einheit für Einheit verifiziert, wobei eine Einheit ein Routine oder ein anderer zweckmäßiger Teil des Quellencodes ist.
  • Beim Instrumentieren des Quellencodes werden nichtausführbare Bemerkungen mit einer eindeutigen Blockkennung am Anfang und Ende jedes Blocks der Zielcodeeinheit eingesetzt. Eine Blockdatentabelle wird erzeugt, welche die Blockkennungen, den Verschachtelungsgrad jedes Blocks, die Blockkennung, durch welche in jeden Block eingetreten wird, und eine Anzeige, ob ein Block ein Rückschleifenblock ist, auflistet. Eine Blockverknüpfungstabelle wird ebenfalls aus den Steueranweisungen erzeugt, welche alle gültigen Übergänge zwischen Blöcken aufzeigt. Sodann wird eine ausführbare Instruktion am Anfang des Blocks eingesetzt, um eine Ausgabedatei im Hinblick auf die Blockkennung zu informieren, wenn der Block ausgeführt wird. Eine weitere ausführbare Instruktion wird am Ende des Blocks eingesetzt, die den Block anzeigt, zu welchem die Steuerung zurückspringt, nachdem alle Anweisungen in dem Block ausgeführt worden sind. Während das Programm durch die Teststeuerung ausgeführt wird, werden die Blockkennungen während der Ausführung jedes Blocks in einer eindimensionalen Anordnung in eine Ausgabedatei eingeschrieben.
  • Wenn die Zielcodeeinheit ein weiters Routine aufruft, werden ausführbare Schreibinstruktionen durch einen Prozessor vor und nach der Aufrufanweisung eingefügt, um in der Ausgabedokumentation eine Anzeige zu schaffen, daß die Aufrufanweisung erreicht wurde und das Programm nach dem Aufruf an die richtige Stelle zurückgekehrt ist. Gewünschtenfalls können außerdem Instruktionen zum Einschreiben des Wertes gewählter Variabler in die Ausgabedatei vor und nach dem Aufruf durch einen Prozessor in die Zielcodeeinheit eingefügt werden.
  • Außerdem kann, wie hier beschrieben ist und bevorzugt wird, ein Pseudocode durch einen Pseudocodeprozessor aus der neuformatierten Zielcodeeinheit erzeugt werden. Der Pseudocode enthält nur die Steueranweisungen, wobei Bemerkungen zwischen den Identifizieren der Codeblöcke die gleichen Kennungen wie der instrumentierte Code verwenden. Der Pseudocodeprozessor kann außerdem die Blockdatentabelle und die Verknüpfungstabelle erzeugen, die vom Instrumentenprozessor erzeugt wird.
  • Der Verifizierer prüft den Quellencode, sämtliche verfügbare Dokumentation und den Pseudocode sowie die von dem Pseudocodeprozessor erzeugten Blockdaten- und Verknüpfungstabellen zum Auswählen von Testdatensätzen, die alle Blöcke der Zielcodeeinheit ausführen werden. Die gewählten Werte von Eingabevariablen und die erwarteten Ausgabewerte für jeden Testdatensatz werden durch eine benutzerfreundliche Schnittstelle eingegeben und durch einen Testgeneratorprozessor in einer Variablendatei angeordnet. Der Testdatenprozessor benutzt dann diese Daten zum Erzeugen eines Teststeuerprogramms zur Verarbeitung der Testdatensätze. Die Variablendatei kann außerdem zur Bestimmung verwendet werden, welche Testdatensätze beeinträchtigt werden, wenn eine Variable verändert wird. Der Teststeuerprozessor erzeugt außerdem eine Testspezifizierung, welche die Eingabewerte, die erwarteten Ausgabewerte und die Blockverknüpfungen für jeden von dem Teststeuerprogramm verarbeiteten Testdatensatz darstellt.
  • Das Teststeuerprogramm wird kompiliert und mit der instrumentierten Zielcodeeinheit verknüpft, und das sich ergebende Programm wird ausgeführt, um die Zielcodeeinheit für jeden Testdatensatz sukzessiv auszuführen. Die abschließende Dokumentation umfaßt, zusätzlich zum Pseudocode, die Blockdaten- und Verknüpfungstabellen und der Software-Testspezifizierung, Ausgabedaten, welche die Werte die Eingabevariablen, die tatsächlichen Werte der Ausgabevariablen zusammen mit den erwarteten Werten, und die tatsächliche Folge der Blockverknüpfungen auflisten.
  • Die Erfindung, die sowohl das Verfahren wie auch die Einrichtung zum Verifizieren eines Computerquellencodes umfaßt, vereinfacht den Verifizierungsprozeß so, daß er schneller und mit einem größeren Maß an Standardisierung und Zuverlässigkeit ausgeführt werden kann, als dies bisher möglich ist.
  • Kurzbeschreibung der Zeichnungen
  • Ein volles Verständnis der Erfindung ergibt sich aus der folgenden Beschreibung der nur beispielsweise angegebenen bevorzugten Ausführungsformen in Verbindung mit den anliegenden Zeichnungen, in welchen zeigen:
  • Die Fig. 1a, 1b und 1c, wenn sie entsprechend den jeweils im Kreis angegebenen Zeichen nebeneinander zusammengesetzt sind ein Flußdiagramm des automatisierten Software-Verifizierungssystems nach einer Ausführungsform der Erfindung,
  • Fig. 2 die Organisation eines Bausteins einer beispielsweisen, nach der Erfindung zu verifizierenden Software,
  • die Fig. 3 bis 6 Beispiele von Formatierungsregeln, die bei dem Ausführungsbeispiel der Erfindung zur Standardisierung der Formatierung des Zielcodes verwendet sind,
  • die Fig. 7a und 7b einen Teil des Zielcodes, der gemäß der Standardisierungs- Formatierungsregeln des Ausführungsbeispiels der Erfindung neu formatiert ist,
  • Fig. 8 einen Teil eines erzeugten Pseudocodes, wie er bei dem Erfindung anwendbar ist,
  • die Fig. 9a, 9b und 9c zusammengenommen ein Segment eines vollständig instrumentierten Zielcodes gemäß dem Ausführungsbeispiel der Erfindung,
  • die Fig. 10a, 10b und 10c zusammengenommen eine benutzerspezifische Informationsdarteiliste, die von dem Testgeneratorprozessor gemäß dem Ausführungsbeispiel der Erfindung erzeuge worden ist,
  • Fig. 11 Teile eines Teststeuerprogramms, das von dem Testdatenprozessor gemäß dem Ausführungsbeispiel der Erfindung erzeugt worden ist,
  • die Fig. 12 und 13 Teile der Softwaretestprogrammdatei, die von dem Testdatenprozessor gemäß dem Ausführungsbeispiel der Erfindung erzeugt worden ist,
  • Fig. 14 die Formatierung von Ausgabeergebnissen gemäß dem Ausführungsbeispiel der Erfindung,
  • Fig. 15 schematisch in Blockdiagrammform ein System zur Ausführung der Erfindung.
  • Beschreibung der bevorzugten Ausführungsform
  • Die Erfindung wird in ihrer Anwendung zum automatischen Verifizieren von Software für die Mikroprozessoren in einem digitalen integrierten Schutz- und Kontrollsystem für ein Kernkraftwerk beschrieben. Es ist jedoch ersichtlich, daß die Erfindung in gleicher Weise zur Verifizierung aller Arten von Software einsetzbar ist.
  • Allgemeine Beschreibung:
  • Das automatisierte Softwareverifizierungssystem nach der Erfindung weist eine Reihe von Computerprogrammen auf, davon einige Dialogprogramme, die zum Testen von Zielcomputerprogrammen durch automatisches Erzeugen, Ausführen und Dokumentieren eines kundenorientieren Testprogramms unter Verwendung minimaler Benutzereingaben eingesetzt werden. Die Verifizierung wird an einem Allzweckdigitalcomputer ausgeführt, obwohl die Zielprogramme auch für die Verwendung bei Mikroprozessoren ausgelegt sein können. Das Softwaresystem wird in eine Anzahl unabhängiger Prozessoren unterteilt, um Modifikationen des Systems zu erleichtern.
  • Der anfängliche Schritt des Verifizierungsprozesses ist die Standardisierung der Formatierung des Zielprogrammquellencodes. Die von verschiedenen Programmierern verwendete Formatierung und auch die Formatierung eines individuellen Programmierers innerhalb eines gegebenen Programms kann beträchtlich variieren. Der anfängliche Prozessor formatiert den gesamten Quellencode entsprechend standardisierter Regeln neu. Während diese Formatierung für die Ausführung der Erfindung nicht wesentlich ist, vereinfacht sie die Aufgaben der anderen Prozessoren. Sodann wird ein spezifisches Programm auf dem Zielprogrammsystem zum Testen aus der neuformatierten Datei herausgezogen. Ein Pseudocodegenerator zieht dann aus dem Zielprogramm eine informatorische Auflistung nur der Steueranweisungen des Zielprogramms heraus. Diese Steueranweisungen werden als Blöcke identifiziert und mit einer Blocknummer versehen. Der Pseudocodegenerator erzeugt außerdem eine Blockdatentabelle, die anzeigt, wie in jeden der Blöcke eingetreten wird, und die identifiziert, ob der Block ein Rückschleifenblock ist oder nicht. Zusätzlich wird eine Verknüpfungstabelle erzeugt, die alle gültigen Verzweigungen zwischen Blockpaaren identifiziert. Diese informatorische Blockdatentabelle und die Verknüpfungstabelle werden dem menschlichen Verifizierer verfügbar gemacht, damit er sie beim Aufsetzen des Testprogramms benutzen kann.
  • In einem Parallelpfad fügt ein Codekommentarprozessor Blockidentifikationsbemerkungen entsprechend den vom Pseudocodegenerator benutzen Bemerkungen in den Zielquellencode ein. Ein Codeinstrumentierungsprozessor fügt dann ausführbare Überwachungsanweisungen in jeden Block des Quellencodes ein. Diese Überwachungsanweisungen werden ausgedruckt, wenn der Test durchgeführt wird, um zu verifizieren, daß jeder der Blöcke tatsächlich ausgeführt worden ist. Dieser instrumentierte Code ist dann zum Testen bereit. Der menschliche Verifizierer prüft den Zielquellencode anhand der Programmsoftwaredesignspezifikation und irgendwelcher weiterer verfügbarer Dokumentation und wählt zusammen mit der informatorischen Blockdatentabelle und der Verknüpfungstabelle Testbedingungen aus, die alle Zweige des Programms ausführen. Bei dieser Tätigkeit wählt der Verifizierer Eingabewerte für die verschiedenen Variablen und legt fest, wie die erwarteten Ausgabewerte aussehen sollten. Für ein komplexes Programm kann dies die Erstellung zahlreicher Testdatensätze erfordern.
  • Detailbeschreibung:
  • Ein Flußdiagramm des automatisierten Softwareverifizierungssystems nach der Erfindung ist in den Fig. 1a, b und c dargestellt. Der Verifizierer, also die Person, welche den Zielcode testet, erhält eine Datei 1 von zu testenden Programmen zusammen mit einer vom Programmierer geschriebenen Designspezifikation 2. Der Verifizierer muß den Zielcode und seine Dokumentation analysieren, um sicherzustellen, daß die Dokumentation richtig und genau ist, und muß den tatsächlichen Zielcode durch ein kundenspezifisches Teststeuerprogramm ausführen, das verifiziert, daß der Zielcode richtig arbeitet.
  • Aus den Fig. 1a, b und c ist ersichtlich, daß zwei gesonderte Parallelzweige A und B im Funktionsdiagramm vorhanden sind. Der Zweig A zeigt eine Reihe von Prozessoren, die den Zielcode durch Einfügen von Anweisungen so konditionieren, daß bei seiner Ausführung Mittel zur Überwachung und Aufzeichnung des Ausführungspfads sowie sämtlicher Eingabe- und Ausgabewerte für jeden Testdatensatz innerhalb des Verifizierungsprozesses verfügbar sind. Dies ist die Hauptfunktion der Blöcke 3 bis 7 in den Fig. 1a und b. Diese Überwachungsanweisungen und Eingabe/Ausgabewerte stellen die notwendige Dokumentation für den Verifizierungsprozeß dar, wenn der Zielcode ausgeführt wird.
  • Der Zweig B zeigt den Beurteilungs- und Testspezifikationsvorgang. Unter Verwendung der vom Programmierer geschriebenen Designspezifikation 2, die den Zweck des Zielcodes beschreibt, und unter Betrachtung einer Kopie des Originalcodes 1 muß der Verifizierer eine Reihe von Testdatensätzen - Block 9 - mit einem geeigneten Eingabewert zum Testen sämtlicher existierender Zweige innerhalb des instrumentierten Codes auswählen, während er außerdem bestätigen muß, daß die Ausgabewerte vorhersagbar und genau sind. Dieses Verfahren ist mit oder ohne dem automatisierten Softwareverifizierungssystem gleich und genauso anstrengend, aber die Dateneingabe, die Codekonditionierung und die Erzeugung von Steueranweisungen ist bei diesem System stark vereinfacht. Der Verifizierer gibt bei 10 die Eingabewerte und die erwarteten Ausgabewerte für jeden Testdatensatz ein, und der Zweig B verarbeitet die eingegebenen Testdaten - Block 11 - und erzeugt - Block 12 - ein Teststeuerprogramm, das den im Zweig A "konditionierten" Code ausführt.
  • Alle innerhalb des beispielsweisen automatisierten Softwareverifizierungssystems eingesetzten Prozessoren wurden mit PL/M86, wie von der Intel Corporation in ihren Mikroprozessoren verwendet wird, als Zielsprache entwickelt. Es ist wichtig, zu verstehen, daß die grundsätzlichen Richtlinien, aufgrund derer diese Prozessoren entwickelt wurden, für jede blockstrukturierte Sprache universal sind und deshalb diese Prozessoren so modifiziert werden können, daß sie eine breite Vielfalt von Programmiersprachen wie beispielsweise unter anderem Pascal, PL1, und struktuiertes FORTRAN bearbeiten können. Eine Programmquellendatei für Intel PL/M86 wird als "MODUL" bezeichnet. Um einen gewöhnlichen Mechanismus zu schaffen, so daß jedes Stück der Software innerhalb der Gesamtsoftwarehierarchie schnell und leicht etikettiert werden kann, sind die folgenden Regeln getroffen worden: jeder "MODUL" innerhalb des Gesamtsoftwaresystems wird eindeutig mit einer fünfstelligen alphanumerischen Kennung mit einem daran anschließenden dreistelligen alphanumerischen Zusatz gekennzeichnet.
  • Beispiel: TA028.PLM, RA039.ASM, FI007.INC, FD020.DEC.
  • Die ersten beiden Buchstaben (z. B. TA, RA, FI, FD) werden zur Kategorisierung des Software "MODULS" nach Softwaresystem/Untersystem benutzt.
  • Die nächsten drei Ziffern (d. h. 028, 039, 007, 020) kennzeichnen einen eindeutigen "MODUL" innerhalb eines spezifischen Softwaresystems/Untersystems.
  • Die letzten drei Buchstaben (der Zusatz) bezeichnet eine spezifikationsfunktionelle Art der PL/M86-Quellenkartei:
  • PLM - PL4M86-Programmquellendatei
  • ASM - PL/M86-Assemblerprogrammquellendatei
  • INC - PL/M86-Inklusivdatei
  • DEC - PL/M86-Deklarationsdatei
  • Eine PL/M86-Programmquellendatei (z. B. "MODUL" in PL/M86-Terminologie) kann irgendwo von 1 bis 99 Unterprogramme enthalten, die gewöhnlich als Prozeduren oder Funktionen bezeichnet werden, oder in der PL/M86-Terminologie als "UNITS". Die aktuelle PL/M86-Programmquellendatei selbst besteht aus drei Funktionsteilen :
  • 1. Kopfteil
  • Der "MODUL"-"Kopfteil" enthält den gesamten Quellencode (einschließlich Bemerkungszeilen) innerhalb eines "MODULS" ausschließlich: (1) der "Ende"-Anweisung des Moduls, und (2) des gesamten zur Ausführung eines öffentlich oder lokal deklarierten Unterprogramms (d. h. Prozedur oder Funktion) innerhalb des "MODULS" erforderlichen Codes.
  • Beispiel: TA028.HDR ist lediglich der Kopfteil des Software "MODULS" TA028.
  • 2. Programmteil
  • Das sind die individuellen Unterprogramme, die innerhalb des "MODULS" existieren. Diese Unterprogramme werden sequentiell von 1 bis 99 nummeriert, entsprechend ihrer physikalischen Reihenfolge in dem "MODUL". Jedes dieser Unterprogramme innerhalb des "MODULS" wird "UNIT" genannt.
  • Beispiel: TA02823.UNT ist die 23. "UNIT" innerhalb des "MODUL" TA028.
  • 3. Endteil
  • Das ist der Teil des "MODULS", der dem Ende des letzten Unterprogramms folgt.
  • Beispiel: TA028.ENS ist lediglich der Endteil des Software "MODULS" TA028.
  • Die physikalische Struktur eines PL/M86-"MODUL" ist in Fig. 2 dargestellt. Wie dort gezeigt ist, weist der Modul 20 einen Kopfteil 21, eine Reihe von bis zu 99 Unterprogrammen oder Units 22 und einen Endteil 23 auf.
  • Wie in Block 3 der Fig. 1a gezeigt ist, formatiert der Codevorprozessor (CPP) die Datei von zu testenden Computerprogrammen 1 neu. Der CPP erzeugt eine syntaktisch korrekte Programmdatei aus einem erfolgreich kompilierten PL/M86-Programm. Der CPP bewerkstelligt das zeilenweise Vorformatieren und Einziehen der ursprünglichen PL/M86-Quellenprogrammdatei durch Anwendung der folgenden Programmcodierstandards. Der CPP verändert die Ausführung des ursprünglichen Quellencodes nicht, sondern bewirkt lediglich, daß sämtliche PL/M86- Quellencodeprogramme in sehr ähnlichem Format erscheinen, unabhängig von dem ursprünglichen Programmierer. Diese Standardisierung des Programmformats macht es anderen Personen als dem Urheber leichter verständlich. Es erleichtert auch die Ausführung weiterer Vorprozessoren, d. h. PPP 4, CCP 7, PCG 5, CIP 8, usw., da es anderenfalls für diese sehr schwierig wäre, alle diese verschiedenen in von Programmierer zu Programmierer unterschiedlichen Formaten zu bearbeiten.
  • Die Blockstruktur der PL/M86-Sprache wird bei der Neuformatierung betont, um sicherzustellen, daß das Programm einfach lesbar ist und daß seine Funktion klar ist. Die folgenden Regeln zeigen, wie Blockstrukturen in dem beispielsweisen System formatiert werden. Natürlich sind die jeweils gewählten Regeln nicht kritisch, solang das Ziel des Erhalts eines standardisierten Formats realisiert wird.
  • A. Einrückungen
  • Einrückungen betragen zwei Stellen.
  • B. "DO"-Anweisungen
  • Die einleitende "DO"-Anweisung und die entsprechende "END"- Anweisung haben die gleiche Linksbündigkeit. Innerhalb des Blocks werden Anweisungen eingerückt. Jeder neue Blockverschachtelungsgrad innerhalb eines Blocks erzeugt eine weitere Einrückung. Komplexe "DO"-Blöcke können mit äußeren "DO"- und "END"-Anweisungen etikettiert sein. Vorsicht ist bei der Etikettierung innerer Blöcke angebracht, weil sie die Einrückungsstruktur und Klarheit stört; statt dessen sollten Bemerkungen verwendet werden.
  • Alle in "DO CASE" oder "DO WHILE"-Anweisungen verwendeten Ausdrücke werden in Klammern gesetzt. Ein Beispiel eines etikettierten "DO WHILE"-Blocks mit einem verschachtelten inneren "DO-END"-Block ist in Fig. 3 gezeigt. "DO CASE"- Blöcke müssen eine umschließende "DO"- und "END"-Anweisung um Ausdrücke herum haben, um die von solchen Blöcken umrissenen Pfade zu identifizieren helfen. Es können Anweisungsetiketten oder Bemerkungen in der ersten Zeile jedes Datensatzes verwendet werden. Jedem "DO CASE"-Block muß eine Prüfung auf gültigen Indexbereich vorausgehen. Ein "DO CASE"-Block mit "DO"- und "END"-Begrenzungen für jeden individuellen Datensatz ist in Fig. 4 dargestellt. Ein "DO CASE"-Block mit "DO"- und "END"-Begrenzungen für jeden individuellen Datensatz sowie mit Bemerkungen ist in Fig. 5 dargestellt.
  • C. "IF"-Anweisungen
  • Der Auswertungsausdruck wird stets in Klammern gesetzt, und ausführbare Anweisungen werden stets eingerückt. "DO"-Blöcke sollten jederzeit angewendet werden. Wenn "DO"-Blöcke verwendet werden, gelten die sie betreffenden Regeln. "THEN" erscheint auf der gleichen Zeile wie die "IF"-Anweisung, wobei die "DO"-Anweisung auf der nächsten Zeile mit richtiger Einrückung beginnt.
  • "END IF" ist wörtlich als "DO; END" definiert und dient zum Abschließen eines "IF"-Blocks. Er ist linksbündig mit der anfänglichen "IF" -Anweisung.
  • Wenn "IF"-Anweisungen nach den "THEN", "DO"-Blöcken verschachtelt sind, müssen stets "DO"-Blöcke und das "END IF"- Konstrukt verwendet werden.
  • Wenn sequentielle "IF"-Anweisungen verwendet werden ("IF"-Anweisungen, die nach der "ELSE"-Anweisung verschachtelt sind), müssen "DO"-Blöcke immer um die "IF"-Anweisungen herum verwendet werden. Ein Beispiel des verschachtelten und sequentiellen Konstrukts ist in Fig. 6 dargestellt.
  • 2. Doppelt belegtes Alphabet
  • Die Möglichkeit zur Verwendung von Grußbuchstaben und Kleinbuchstaben ermöglicht die Einführung eines weiteren Klarheitsgrades in den Quellencode. Unter dieser Regel werden Großbuchstaben für auf die Blockstruktur bezogene Wörter verwendet, beispielsweise für "DO", "END", "IF" usw., während Kleinbuchstaben für alles übrige verwendet werden.
  • 3. Bemerkungsstruktur
  • Bemerkungen innerhalb des Codes sollten in der ersten Spalte stehen oder in der gleichen Spaltenposition wie der eingerückte Code auf der vorhergehenden Zeile des kommentierten Codes beginnen. Eine Bemerkung kann vor einem vollständigen Codeblock eingesetzt werden, um seine Funktionalität zu erläutern.
  • Ein Beispiel eines nach den obigen Regeln neuformatierten Programmsegments ist in den Fig. 7a und b dargestellt.
  • Der nächste Prozessor ist der Prozedur-Parser-Prozessor (PPP) 4. Der PPP wird zum automatischen Wählen "des" richtigen zu testenden (d. h. zu verifizierenden) Programms aus einer PL/M86-Quellendatei verwendet, die viele Programme enthalten kann. Dies eliminiert mögliche Fehler, die durch individuelle Verifizierer eingeführt werden können, wenn sie die ursprüngliche PL/M86-Programmquellendatei manuell schneiden und kleben, um das gewünschte Programm herauszuziehen. Der PPP erfordert, daß die PL/M86-Quellendatei zuerst den CPP-Vorprozessor durchlaufen haben muß.
  • Der PPP zieht das folgende aus der vom CPP verarbeiteten PL/M86-Programmquellendatei heraus:
  • 1. Den Kopfteil des "MODULS" (d. h. TA028.HDR).
  • 2. Die bezeichnete "UNIT" (bzw. Unterprogramm) innerhalb des zu verifizierenden "MODULS" (d. h. TA02823).
  • 3. Den Endteil des "MODULS" (d. h. TA002.END).
  • Sodann erzeugt er eine modifizierte PL/M86-Programmquellendatei, die mit einer Kennung versehen wird, beispielsweise mit (TA02823.PLM), und aus dem folgenden besteht:
  • 1. Dem herausgezogenen Kopfteil des ursprünglichen "MODULS" (d. h. TA028.HDR).
  • 2. Der unmittelbar darauffolgenden Einfügung eines /*MARK*/- Zeichenkette zum Bezeichnen des Zustands der zu verifizierenden "UNITS" (d. h. Unterprogramm).
  • 3. Der herausgezogenen, zu verifizierenden "UNIT" (d. h. TA02823.UNT).
  • 4. Der unmittelbar darauffolgende Einfügung einer /*MARK END*/-Zeichenkette zum Bezeichnen des Endes der zu verifizierenden "UNIT".
  • 5. Dem herausgezogenen Endteil des ursprünglichen "MODULS" (d. h. TA023.END).
  • Infolgedessen-hat die Ausgabe des PPP (d. h. TA02823.PLM) die folgende Struktur:
  • TA028.HDR ursprünglicher Kopfteil von TA028.PLM /*MARK*/ kommentierte "MARK" -Anweisung
  • TA02823.UNT spezifische getestete TA028-"UNIT" /*MARK END*/ kommentierte "MARK END"-Anweisung
  • TA028.END ursprüngliches Ende von TA028.PLM
  • Diese modifizierte Quellendatei wird als Arbeitskopie der zu verifizierenden Einheit verwendet.
  • Der nächste Prozessor ist der Pseudocodegenerator (PCG) 5, der vollständig informatorisch ist, und die Arbeitskopie des Programms nicht beeinflußt. Der PCG nimmt die aus dem Modul von dem PPP herausgezogene Programm-"UNIT" heraus und führt zwei Funktionen durch. Zunächst wird der Code abgefragt und irgendwelche ausführbaren Instruktionen identifiziert, die zu einem Programmübergang über Verzweigungen innerhalb des Programms führen könnten. Diese Methodologie basiert auf dem, was als Code- "BLOCK" definiert ist. Ein Code-"BLOCK" besteht aus einer Reihe von ausführbaren Softwareanweisungen, die stets von Anfang bis Ende in der gleichen genauen Reihenfolge ausgeführt werden. Normalerweise sind diese Code- "BLÖCKE" durch das voneinander getrennt, was als "Steuer"-Anweisungen bekannt ist, die wiederum bestimmen, welcher Code-"BLOCK" als nächster ausgeführt wird. Jeder Code- "BLOCK" wird mit einem mehrstelligen numerischen Code identifiziert, der als seine "Blocknummer" bekannt ist. Jedem Code-"BLOCK" ist außerdem eine "Verschachtelungsnummer" zugeteilt, die den "Block"-Verschachtelungsgrad identifiziert. Der Verschachtelungsgrad eines Code-"BLOCKS" ist ein Maß dafür, wieviele Steueranweisungen ausgeführt werden müssen, um diesen Code-"BLOCK" zu erreichen. Der PCG löscht sämtlichen Text zwischen den Steueranweisungen und setzt an dessen Stelle eine einfache "BLOCK-nn"-Kommentierungsanweisung, wobei "nn" die Blocknummer in ihrer sequentiellen Position vom Beginn des Programms an beschreibt. Der Zweck hiervon liegt darin, die zur Verifizierung zu testenden Codebereiche kenntlich zu machen. Fig. 8 zeigt den vom PCG für die in den Fig. 7a und b gezeigte Einheit erzeugten Pseudocode.
  • Die zweite Funktion des PCG ist die Bestimmung aller möglichen Verzweigungen innerhalb der Programmeinheit. Bei der Durchführung dieser Funktion erzeugt der PCG zwei Datentabellen. Die erste ist die Blockdatentabelle, von welcher ein Beispiel folgt und die als Tafel 1 bezeichnet ist. Diese Tafel gibt die Blocknummer, die Verschachtelungsnummer und den damit zusammenhängenden Block an, welcher den Pfad darstellt, über welchen in den Block eingetreten wird.
  • Die Verschachtelungsnummer in der Blockdatentabelle gibt den Verschachtelungsgrad des Blocks an. Ein Zähler, der den Verschachtelungsgrad verfolgt, erhöht jeweils bei "DO"-Anweisungen und vermindert bei "END"-Anweisungen. Schließlich zeigt die Blockdatentabelle an, ob der Block ein Rückschleifenblock ist, wobei ein "T" angibt, daß dies der Fall ist, und ein "F" angibt, daß dies nicht der Fall ist. Tafel 1 Blockdatentabelle Block Nr. Verschachtelungsnr. Blocknummer des zusammenhängenden Blocks Rückschleifenblock
  • Die zweite von dem PCG erzeugte Tabelle ist die Verknüpfungstabelle, die nachstehend als Tafel 2 bezeichnet ist. Diese Tabelle bezeichnet alle möglichen Verzweigungen, die auftreten können, wenn der Code ausgeführt wird. Tafel 2 Verknüpfungstabelle
  • Der PCG kombiniert den Pseudocode zusammen mit den beiden Datenquellen zu einer einzigen gemeinsamen Ausgabedatei 6, beispielsweise TA02823.PCG, die für die abschließende Dokumentation verwendet wird.
  • Der Kommentierte-Code-Prozessor (CCP) 7 verwendet ebenso wie der PCG den Ausgang des PPP als seinen Eingang. Der CCP ist ähnlich dem PCG, und tatsächlich haben die beiden Prozessoren einen gemeinsamen Code, den sie beide benutzen. Während der PCG nur für den informatorischen Gebrauch für den Verifizierer bestimmt war, ist der CCP für die richtige Arbeitsweise des Codeinstrumentenprozessors (CIP) 8 unbedingt wichtig. Ebenso wie der PPP und PCG hilft auch der CCP, Fehler zu minimieren, die von dem individuellen Verifizierer durch Verwendung eines entsprechenden Standards an Regeln unabhängig von dem zu verifizierenden Code eingeführt werden. Der CCP untersucht den Code Zeile für Zeile auf die gleichen Steueranweisungen wie der PCG. Dieses Mal wird jedoch der Code nicht gelöscht, sondern es werden nichtausführbare Kommentarkarten in den Zielcode eingeführt, um Anfang und Ende jedes Codeblocks zu markieren. Folglich identifiziert der CCP jeden "Block" mit der eindeutigen "Blocknummer" die identisch mit der vom PCG dem gleichen Codeblock zugeordneten Nummer ist. Außerdem fügt der CCP eine kommentierte "DO"-Anweisung (d. h. /*DO*/) unmittelbar vor jedem Code "BLOCK" und eine kommentierte "END"-Anweisung (d. h. /*END*/) unmittelbar nach jedem Code- " BLOCK" ein. Er unterscheidet außerdem zwischen der "END"-Anweisung für ein normales "DO"-"END"-"BLOCK"- Konstrukt und der "END"-Anweisung für ein Schleifen-"DO"-"BLOCK"-Konstrukt (d. h. "END FOR", "END WHILE", usw.). Er gibt auch an, welche kommentierten, "DO"- und "END"-Anweisungen er in dem Programm eingefügt hat, in dem er daneben eine "/*ADDED BY CCP*/"-PL/M86-Kommentaranweisung plaziert. Dies dient lediglich Überwachungszwecken und wird nicht von CIP verwendet.
  • Der CCP schreibt diese kommentierte "DO END"-Version des Programmquellencodes in eine Datei ein (d. h. TA02823.PRE).
  • Der CCP erzeugt außerdem die gleichen beiden Datentabelle wie der PCG, aber schreibt sie in eine separate Datei ein (d. h. PA02823.TAB). Diese beiden Dateien werden von dem Codeinstrumentenprozessor (CIP) 8 benutzt.
  • Der Codeinstrumentenprocessor (CIP) 8 verwendet die vom CCP hinzugefügten Bemerkungen als Markierungen zum Einfügen ausführbarer Überwachungsinstruktionen am Anfang und Ende von Codeblöcken zwischen Steueranweisungen und zum Kategorisieren jedes Blocks mit einer Folgenummer. Die Blöcke werden vom CIP in gleicher Weise nummeriert, wie das PCG-Verfahren die Blöcke nummeriert. Die ausführbaren Instruktionen setzen den Wert eines Elements in einer eindimensionalen Anordnung zu der entsprechenden Blocknummer, wenn in dem Block eingetreten wird, und den Block, zu welchem die Steuerung zurückspringt, wenn während der Ausführung aus dem Block ausgetreten wird. Auf diese Weise wird eine Überwachung des Programmausführungspfads leicht hergestellt, indem die Feldwerte ausgedruckt werden, die den Eintritt und den Austritt in einen bzw. aus einem ausgeführten Block in dem Programm zeigen.
  • Der CIP identifiziert auch, welche ausführbare Anweisung er durch Danebensetzen einer "/*ADDED BY CIP* /"-PL/M86-Kommentaranweisung in das Programm eingefügt hat. Er identifiziert auch die aktuellen "Blocknummern", die er bei der Verarbeitung der vom CCP kommentierten einfachen "DO"- und "END"-Anweisungen durch Setzen einer "/*BLOCK nn*/"-PL/M86- Kommentaranweisung zugeordnet hat, wobei "nn" die aktuelle "Blocknummer" ist, die vom CIP am Anfang und Ende jedes "BLOCKS" zugeordnet worden ist. Ebenso wie beim CCP erfolgt dies lediglich zu Überwachungszwecken.
  • Die Fig. 9a, b und c zeigen das voll instrumentierte, in den Fig. 7a und b dargestellte Codestück. Wie man sieht, wird jeder der Blöcke sequentiell in gleicher Weise wie im Pseudocode nach Fig. 8 durch die "BLOCK nn"-Bemerkungen identifiziert, beispielsweise durch die Bemerkungen 24 und 25 am Anfang und Ende des Blocks 3.
  • Die ausführbaren Überwachungsinstruktionen, die in dem instrumentierten Code nach den Fig. 9a, b und c benutzt werden, sind die ACTLINKS-Anweisungen, welche die entsprechende Blocknummer in ein eindimensionales Feld an einer durch TRACEINX bezeichneten Stelle einschreiben. Beispielsweise schreibt die ACTLINKS-Anweisung 26 in dem Feld die Zahl "3" ein, was anzeigt, daß in den Block 3 eingetreten wurde. Die Zahl "3" wird in der Anordnung an der durch den Wert von TRACEINX angegebenen Stelle gespeichert. TRACEINX wird dann zur Vorbereitung für den nächsten Eintritt um 1 erhöht, wie bei 27 angegeben ist. Am Ende des Blocks 3 fügt eine weitere ACTLINKS-Anweisung 28 eine "2" in das eindimensionale Feld ein, was anzeigt, daß die Steuerung zum Block 2 zurückgeführt wurde. Wiederum wird TRACEINX zur Vorbereitung des nächsten Eintritts, beispielsweise bei 29, um 1 erhöht.
  • Der instrumentierte Code nach den Fig. 9a, b und c zeigt auch ein weiteres Merkmal der Erfindung. Man sieht, daß der Block 3 ein weiteres, als "DEADMAN" identifiziertes Routine aufruft, wie durch die Anweisung "CALL DEADMAN" 30 angegeben ist. Der CIP fügt vor der Aufrufanweisung eine Reihe von Anweisungen ein, welche während der Ausführung des Programms "BEFORE DEADMAN" ("vor Deadman") ausdrucken. Diese Instruktionen umfassen eine Bewegungsbyte-Instruktion 31, eine Ausgabedatei-Schreibinstruktion 32 und eine Zeilenvorschubinstruktion 33. In gleicher Weise fügt der CIP-Prozessor nach der Aufrufinstruktion Instruktionen ein, die in die Ausgabedatei "AFTER DEADMAN" ("Nach Deadman") schreiben, was durch die Instruktionen 34, 35 und 36 verkörpert wird. Diese Sequenz verifiziert, daß das Zielroutine die Instruktion zum Aufrufen des externen Routine erreicht hat, und daß das Programm von dem aufgerufenen Routine an die richtige Stelle im Zielprogramm zurückgekehrt ist. Obwohl dies nicht durch den in den Fig. 9a, b und c gezeigten Code verköpert ist, kann der CIP-Prozessor auch für ein Einschreiben der Werte der Zieleinheitvariablen sowohl vor und nach dem Übergang zu dem aufgerufenen Routine in die Ausgabedatei einschreiben, um irgendeine Beeinträchtigung zu beobachten, die das Routine auf die Variablen haben kann.
  • An dieser Stelle ist der Zielcode neu formatiert und alle möglichen Verzweigungsbereiche sind mit einer Blocknummer gekennzeichnet. Außerdem ist ein Code in den Zielcode eingesetzt, um den entsprechenden Wert in einem eindimensionalen Blocknummernfeld zu setzen, wenn dieser besondere Codeabschnitt ausgeführt wird. Außerdem ist ein Code eingeführt worden, um zu verifizieren, daß das Programm von einem aufgerufenen Routine zur richtigen Stelle zurückkehrt, und gewünschtenfalls auch die Werte der Variablen vor und nach dem Aufruf. Bis zu dieser Stelle war die einzige vom Verifizierer verlangte Eingabe die sequentielle Position des vom Modul herauszuziehenden Programms.
  • Der Verifizierer muß sich nun mit der Computerprogrammsoftwaredesignspezifikation 2 vertraut machen, die vom Programmierer geschrieben ist und exakt die Funktion und den Zweck des Programms beschreibt. Außerdem muß sich der Verifizierer mit dem aktuellen Zielcode vertraut machen, der in der Datei 1 enthalten ist. Der Verifizierer muß den Zielcode visuell analysieren und mit der Designspezifikation 9 vergleichen. Mit dieser Information muß der Verifizierer 10 Eingabewerte und erwartete Ausgabewerte bestimmen, die zum Testen des Zielcodes verwendet werden. Der Pseudocode, die Blockdatentabelle und die Blockverknüpfungstabelle, die vom PCG bei 5 erzeugt worden sind, sind nützlich, indem sie den Verifizierer in die Lage versetzen, Eingabewerte vorzugeben, die jeden der Blöcke im Zielcode ausführen. Wenn die Eingabe/ erwartete Ausgabewerte bestimmt sind, müssen diese Daten zusammen mit entsprechender Identifizierung für die verschiedenen Testdatensätze manuell in den Testgeneratorprozessor (TGP) 12 eingegeben werden.
  • Der Testgeneratorprozessor 12 dient zum Anfordern und Aufnehmen von Daten vom Verifizierer in einem benutzerfreundlichen Format und zum Anordnen derselben in einer mit dem Zielcode kompatiblen formatierten Weise. Der TGP stellt außerdem sicher, daß der Verifizierer einen vollständigen und folgerichtigen Datensatz eingegeben hat. Eine vom TGP erzeugte benutzerspezifizierte Informationsdateiliste, die auch als Variablendatei bezeichnet wird, wird in Abschnitte unterteilt. Ein Beispiel einer solchen Dateiliste ist in den Fig. 10a, b und c gezeigt. Die erste Zeile 37 bzw. Dateiüberschrift gibt die Daten und die Zeit der Erstellung der Datei und der Version des TGP an. Dies schafft einen Prüfpfad für jede Ausführung durch den Prüfstand. Der Abschnitt 0 gibt die aufgerufenen Prozeduren und/oder Funktionen an; in diesem Fall das Routine "Deadman". Die Zeilen mit einem Stern am Anfang sind Bemerkungen, welche die Information durch eine in der Zeile 39 erscheinende Spalte identifizieren. Beispielsweise ist der aufgerufene Prozedur- oder Funktionsname in den Spalten 1 bis 31 angegeben. In diesem Fall nimmt "Deadman" nur die Spalten 1 bis 7 ein. Die Dateikennung TA03801 ist in den Spalten 32 bis 38 aufgezeichnet.
  • Der Abschnitt 1, der durch das Bezugszeichen 40 bezeichnet ist, enthält allgemeine Informationen über das Zielprogramm einschließlich solcher Dinge wie die Anzahl von Testdatensätzen und der verwendeten Feldgröße.
  • Der Abschnitt 2, der durch das Bezugszeichen 41 bezeichnet ist, enthält spezifische Informationen über jede der Variablen, wobei 2 Zeilen jeder Variablen zugeordnet sind. Die Bemerkungen geben die in jeder Spalte der Datei aufgezeichneten Daten an einschließlich des Namens der zu überwachenden Variablen, ihrer Datenart (B-Byte, C-Zeichen, D-Doppelwort, H-Sedezimal, I-Ganze Zahl, L-Logisch, P-Zeiger, R-Real, W- Wort, X-Sedezimales Wort, Y-Sedezimales Doppelwort), eine Feldbezeichnung, eine Eingabebezeichnung, eine Ausgabebezeichnung und einen Auswertetyp (A-Argument, G-Global, L-Lokal, M-Modul, -Spezialbereich für "an" einem speziellem Speicherplatz befindliche Variable). Die Spalte 78 ist eine Allverwendungsbezeichnung, die ein Y ist, wenn diese Variable in sämtlichen Testdatensätzen verwendet wird. Die zweite Zeile, beispielsweise 42 für die Variable SEQ, gibt die Testdatensätze an, in welcher diese Variable benutzt wird. Beispielsweise werden alle vier Variablen in dem beispielsweisen Programm in allen drei Testdatensätzen verwendet.
  • Der Abschnitt 3, der durch das Bezugszeichen 42 bezeichnet ist, enthält die Anfangswerte für jede der Variablen für jeden der Testdatensätze. In diesem Fall sind die Testdatensätze durch die Ziffern 00, 01 und 02 gekennzeichnet.
  • Der Abschnitt 4 der TGP-Informationsdateiliste, der durch das Bezugszeichen 43 bezeichnet ist, listet die Aufrufe der getesteten Einheit mit der erforderlichen Argumentliste auf.
  • Der Abschnitt 5, der durch das Bezugszeichen 44 bezeichnet ist, listet den erwarteten Wert für jede Ausgabevariable für jeden Testdatensatz auf und gibt einen Feldindex an, wenn die Variable ein Feld ist.
  • Ein nichtdargestellter Kommentarabschnitt ist als Abschnitt 6 für den Benutzer vorgesehen, um irgendwelche testspezifischen Informationen hinzuzufügen, die während der Testausführung zu beachten sind.
  • Die vom TGP erzeugten Daten werden in einer Datei mit einer siebenstelligen Kennung wie der Dateiname sichergestellt, aber mit dem Zusatz .VAR, beispielsweise TA02838.VAR. Das zur Informationseingabe benützte Schnittstellenmanagementsystem, das vom Benutzer bereitgestellt wird, wurde bei dem beispielsweisen System unter Verwendung des Forms Management Systems auf einem VAX 780 und einem VAX 8600-Computer entwickelt. Das Quellenprogramm für den Testgeneratorprozessor wurde unter Verwendung der FORTRAN-Programmiersprache entwickelt und zwar ebenfalls auf einem VAX 780 und einem VAX 8600.
  • Die formatierte Datei vom TGP wird vom Testdatenprozessor (TDP) 13 zur Erzeugung einer Softwaretestspezifikation 14 sowie eines Teststeuerprogramms verwendet. Ein Beispiel relevanter Teile eines Teststeuerprogramms, das vom TDP erzeugt worden ist, ist in Fig. 11 dargestellt. Nach Erklärung der Variablen (in Fig. 11 nicht dargestellt) wird eine Ausführungsschleifenanweisung 44 eingefügt, welche die Anzahl von Testdatensätzen enthält, die von der Variablendatei abgeleitet ist. Dem Testprogramm wird dann eine Blockkennung "1" durch eine ACTLINKS-Anweisung 45 zugeordnet. Diese Blocknummer wird in die eindimensionale Blockverknüpfungstabelle eingeschrieben, während das Testprogramm ausgeführt wird, um eine Überwachung der Ausgabe zu erzeugen, die angibt, daß das Testprogramm abgelaufen ist. Als nächstes kommen in Fig. 11 die Anweisungen zur Eingabe der zugeordneten Werte für jede Variable in jedem Testdatensatz und zum Schreiben der Testdatensatznummer zusammen mit den Eingabewerten und den erwarteten Werten in die Ausgabedatei, wie bei 46 angedeutet ist.
  • Das Teststeuerprogramm ruft dann bei 47 den zu verifizierenden Prozedur/Funktions/Zielcode zusammen mit der entsprechenden Argumentliste aus der Variablendatei auf. Danach folgt eine Anweisung 48, die Instruktionen zur Steuerung des Ausgabeformats aufruft, und eine weitere ACTLINKS-Anweisung 49, die angibt, daß das Testprogramm vervollständigt worden ist.
  • Schließlich weist das Teststeuerprogramm Ausführungsanweisungen 50 auf, die Ausgangsvariablenwerte und Blockverknüpfungen, die in jedem Testdatensatz erzeugt worden sind, in die Ausgabedatei einschreiben.
  • Die vom Testdatenprozessor erzeugte Softwaretestspezifikation beschreibt das Testprogramm, das die erwarteten Blockverknüpfungen für jeden Testdatensatz identifizieren, sowie eine Wiederholung des Eingabewerts und des geprüften Ausgabewerts herstellen, die früher vom Verifizierer eingegeben worden sind. Die Softwaretestspezifikation (STS)-Datei 14 enthält keine Programmausführungsergebnisse, obwohl sie noch einen sehr wichtigen Teil der Gesamtprogrammdokumentation 19 darstellt. Teile der STS sind in den Fig. 12 und 13 dargestellt.
  • Fig. 12 zeigt die allgemeinen Eingabe- und Ausgabedaten. Fig. 13 zeigt einen der Testdatensätze, in diesem Fall den Testdatensatz 0. Die Reihenfolge der Blockausführung ist bei 51 angegeben. Die Anführungszeichen "1" jeweils am Anfang und am Ende der Reihenfolge gibt die Ausführung des Testprogramms selbst an. Die STS gibt auch die Werte der Eingabevariablen 52 und die erwarteten Werte der Ausgabevariablen 53 an. Eine ähnliche Aufzeichnung wird für jeden Testdatensatz durch die STS erzeugt.
  • An dieser Stelle ist der Zielcode bei 8 so konditioniert, daß der Pfad der Programmausführung und die Eingabe/Ausgabevariablenergebnisse in einer Ausgabedatei aufgezeichnet werden. Ein gesondertes Teststeuerprogramm 15 ist ebenfalls erzeugt worden und ruft den im Test befindlichen instrumentierten Zielcode auf, während ebenfalls alle Eingabe/Ausgabevariablen in der gleichen Ausgabedatei aufgezeichnet werden. Ein Programmkompilier-, Verknüpfungs- und Lokalisierprozessor (PCL) 16 verknüpft den instrumentierten Zielcode, der die Ausgabe des CIP 8 darstellt, mit dem Teststeuerprogramm 15.
  • Die aktuelle Ausführung des Testprogramms 15 und des Zielcodes wird unter Verwendung des SED-Prozessors 17 bewerkstelligt. Bei dem Ausführungsbeispiel der Erfindung in welchem ein VAX-Computer für die Prozessoren eingesetzt wurde, wurde ein Emulator zum Ausführen des PLM 86-Codes des Zielprogramms eingesetzt. Die Ausführung des Teststeuerprogramms/Zielcodes führte zum Schreiben der erzeugten aktuellen Ausgabewerte und der Blockverknüpfungen für jeden Testdatensatz in die Testergebnisse-Ausgabedatei 18. Ein Beispiel der Formatierung der Ausgabeergebnisse ist in Fig. 14 gezeigt. Die abschließende Dokumentation 19 des Programmverifizierungsprozesses schließt zusätzlich zu der Testergebnisdatei 18 die STS-Datei 14 ein, welche die Eingabewerte, die erwarteten Ausgabewerte, die erwarteten Blockverknüpfungen und Rationale für jeden durchzuführenden Testdatensatz definiert, und die PCT-Ausgabedatei 6 ein, welche die Pseudododestruktur und das zu verifizierende Programm zusammen mit seinen Blocknummern und den gültigen Blockverknüpfungen identifiziert. Diese Dokumentation wird analysiert, um für jeden Testdatensatz festzustellen, daß der Programmausführungspfad korrekt war und die aktuellen Ausgabewerte mit den erwarteten in Übereinstimmung stehen. Zusätzlich muß die Feststellung getroffen werden, daß alle Ausführungspfade getestet worden sind. Dies kann automatisch durch Vergleich der Blocknummern in der Blockdatentabelle mit den Blocknummern erfolgen, die während der Testausführung in die Ausgabedatei eingeschrieben wurden, um sicherzustellen, daß jeder Block mindestens einmal ausgeführt worden ist. Wenn die aktuellen Ausgabewerte in Übereinstimmung mit den erwarteten Ausgabewerten stehen, und wenn alle möglichen Verzweigungskombinationen entsprechend berücksichtigt sind, ist das Zielprogramm verifiziert.
  • Der Verifizierungsprozeß kann unter Verwendung eines Computersystems ausgeführt werden, wie es beispielsweise in Fig. 15 dargestellt ist. Dieses System weist einen Mehrzweck- Digitalcomputer 54 auf, der bei dem beispielsweisen System ein VAX-Computer war. Die Prozessoren sowie das Zielprogramm werden im Diskettenspeicher 55 gespeichert. Ein Anzeigeterminal 56 schafft die Dialogschnittstelle mit dem Verifizierer zum Wählen der Zieleinheit und der Testfalldaten. Dauerhafte Kopien der Ergebnisse der Verifizierung werden von einem Drucker 57 erzeugt.
  • Das beschriebene System automatisiert die frühere Arbeitsintensive komplexe Aufgabe der Codevorbereitung zum Ausführen einer ausreichenden Anzahl von Testfällen zum ausreichenden Verifizieren des Zielprogramms. Zusätzlich ist das System so ausgelegt, daß jeder Prozessor einen Teil der Gesamtaufgabe übernimmt und folglich Modifikationen des Systems leicht durch Änderungen in den einzelnen Prozessoren vorgenommen werden können. Ein weiterer Vorteil des Systems liegt darin, daß das Softwareverifizierungssystem notwendigerweise einheitlicher durchgeführt wird. Dieser Vorteil existiert unabhängig von dem zu testenden Programm oder dem den Test durchführenden Verifizierer. Des weiteren machen es das benutzerfreundliche Format und die Codifizierung des Verifizierungsprozesses auch für einen weniger Geübten möglich, die notwendige Softwareverifizierung durchzuführen. Schließlich ist das System in der Lage, mit Modifikationen eine Softwareverifizierung von Programmen durchzuführen, die in irgendeiner Computersprache und für irgendeinen Anwendungsfall geschrieben sind.

Claims (9)

1. Verfahren zum Unterstützen der Verifizierung eines Computerprogrammquellencodes mit den Schritten:
a) Neuformatieren (3) des Quellencodes einer Programmquellendatei (1), wobei der Quellencode ein bekanntes Format und eine Reihe von Programmanweisungen aufweist, die Nichtsteueranweisungen und Steueranweisungen umfassen, mittels welcher das Programm sich auf alternative Programmanweisungen des Quellencodes verzweigen kann,
b) Auswählen (4) einer benutzergewählten Programmeinheit aus der neuformartierten Programmquellendatei,
c) Instrumentieren (8) der benutzergewählten Programmeinheit mittels eines Codeinstrumentenprozessors, der den Quellencode in Codeblöcke unterteilt, wobei ein Codeblock durch die Nichtsteueranweisungen zwischen Steueranweisungen markiert wird, und Einsetzen von ausführbaren Instruktionen in die Codeblöcke zum Schreiben einer Kennung in eine Ausgabedatei für jeden Codeblock, wenn er ausgeführt wird,
d) Erzeugen (12, 13) eines Quellentestprogramms mit Eingabewerten für die benutzergewählte Programmeinheit und erwarteten Ausgabewerten, um die Programmeinheit mit einer Mehrzahl von benutzergewählten Testdaten (9, 10) auszuführen,
e) Kompilieren, Verknüpfen und Ausführen (16, 17) des Testprogramms und der benutzergewählten Programmeinheit,
f) wobei die Ausführung eine Ausgabe (18) erzeugt, die aktuelle Ausgabewerte für jede Gruppe von Testdaten und eine sequentielle Auflistung der Blockkennungen der Blöcke der genannten benutzergewählten Programmeinheit aus der Ausgabedatei in der Reihenfolge darstellt, in welcher sie ausgeführt wurden.
2. Verfahren nach Anspruch 1, wobei der Instrumentierungsschritt das Betreiben eines Prozessors umfaßt, um nichtausführbare Anmerkungen mit einer einzigartigen Blockkennung am Anfang und am Ende jedes Codeblocks in die Zieleinheit einzusetzen, indem aus den Steueranweisungen und den Blockanmerkungen eine Blockdatentabelle erzeugt wird, welche den Block, durch welchen jeder Block eingegeben wird, den Verschachtelungsgrad des Blocks, und irgendwelche Rückführungen in einem Block identifiziert werden, und wobei der Schritt des Einsetzens ausführbarer Schreibinstuktionen in jeden Block die Verwendung der Anmerkungen und der Blockdatentabelle umfaßt, um am Anfang jedes Blocks eine Instruktion zum Schreiben der Blockkennung einzusetzen und am Ende jedes Blocks eine Instruktion zum Schreiben der Blockkennung des Blocks einzusetzen, zu welchem die Zieleinheit zurückkehrt.
3. Verfahren nach Anspruch 2, wobei der Schritt des Erzeugens eine Ausgabe das Erzeugen eines Vergleichs der Blockkennungen, die während der Ausführung eines Codeblocks in die Ausgabedatei eingeschrieben worden sind, und der Blockkennungen in der Blockdatentabelle umfaßt.
4. Verfahren nach Anspruch 2, wobei der Instrumentierungsschritt das Erzeugen einer Blockverknüpfungsdatei umfaßt, die alle möglichen Übergänge zwischen Codeblöcken in der Zieleinheit identifiziert.
5. Verfahren nach Anspruch 2, wobei die Zielcodeeinheit eine Rufinstruktion enthält, die einen externen Programmteil aufruft, und wobei der Instrumentierungsschritt umfaßt: Einsetzen einer ausführbaren Instruktion vor der Rufinstruktion zum Schreiben einer Rufkennung in die Ausgabedatei und Einsetzen einer ausführbaren Instruktion nach der Rufinstruktion zum Schreiben einer Kennung in die Ausgabedatei, daß das Programm an der richtigen Stelle in die Zielcodeeinheit zurückgekehrt ist.
6. Verfahren nach Anspruch 5, wobei der Instrumentierungsschritt das Einsetzen von Instruktionen zum Schreiben der Werte mindestens ausgewählter Zielcodevariablen in die Ausgabedatei vor und nach der genannten Rufinstruktion in die Zieleinheit umfaßt, und wobei der Schritt des Erzeugens einer Ausgabe das Erzeugen von Darstellungen der Werte der gewählten Variablen aus der Ausgabedatei vor und nach dem Ruf umfaßt.
7. Verfahren nach Anspruch 2, welches das Erzeugen eines Pseudocodes zur Verwendung beim Auswählen der genannten Testfälle durch Betätigung eines Prozessors umfaßt, um eine gesonderte Datei zu erzeugen, die nur die Steueranweisungen der Zieleinheit mit anstelle der Nichtsteueranweisungen eingesetzten nichtausführbaren Anmerkungen enthält, wobei die Anmerkungen die Blöcke mit den gleichen Kennungen wie die durch den Instrumentierungsschritt in den Zielcode eingesetzten Anmerkungen identifizieren.
8. Verfahren nach Anspruch 1, wobei der Schritt des Erzeugens eines Quellentestprogramms das Erzeugen einer Variablendatei für die Testvorgänge umfaßt, welche Eingabe- und Ausgabevariable für jeden Testvorgang zusammen mit Eingabewert für jede Eingabevariable und dem erwarteten Wert für jede Ausgabevariable auflistet, und wobei das Verfahren, wenn eine Programmrevision eine Änderung einer bezeichneten Variablen abruft, das Suchen dieser Variablendatei zum Identifizieren der Testvorgänge umfaßt, welche die bezeichnete Variable verwenden.
9. Verfahren nach Anspruch 1, wobei der Schritt des Erzeugens eines Quellentestprogramms das Erzeugen einer Software-Testspezifizierung umfaßt, welche die Werte von durch den Testtreiber zum Implementieren der Testvorgänge verwendeten Variablen und die erwarteten Werte von Ausgabeparametern auflistet.
DE88303029T 1987-04-08 1988-04-05 Verfahren zur Überprüfung von Computersoftware. Expired - Fee Related DE3884034T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/035,802 US4819233A (en) 1987-04-08 1987-04-08 Verification of computer software

Publications (2)

Publication Number Publication Date
DE3884034D1 DE3884034D1 (de) 1993-10-21
DE3884034T2 true DE3884034T2 (de) 1994-05-05

Family

ID=21884862

Family Applications (1)

Application Number Title Priority Date Filing Date
DE88303029T Expired - Fee Related DE3884034T2 (de) 1987-04-08 1988-04-05 Verfahren zur Überprüfung von Computersoftware.

Country Status (7)

Country Link
US (1) US4819233A (de)
EP (1) EP0286361B1 (de)
JP (1) JPS63271643A (de)
CA (1) CA1297191C (de)
DE (1) DE3884034T2 (de)
ES (1) ES2045108T3 (de)
IN (1) IN171541B (de)

Families Citing this family (150)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63296465A (ja) * 1987-05-28 1988-12-02 Canon Inc 受信画像記録装置
US5127103A (en) * 1987-10-14 1992-06-30 North American Philips Corporation Real-time tracing of dynamic local data in high level languages in the presence of process context switches
JP2624753B2 (ja) * 1988-03-18 1997-06-25 株式会社日立製作所 上位仕様書作成方法
US5133070A (en) * 1988-06-30 1992-07-21 International Business Machines Corporation Method of nesting and processing mixed data objects within a data stream utilizing selective environment inheritance
JPH0281230A (ja) * 1988-09-19 1990-03-22 Hitachi Ltd 構文解析および言語処理システム
JPH02109127A (ja) * 1988-10-19 1990-04-20 Hitachi Ltd 仕様処理方法
JPH02199548A (ja) * 1988-11-09 1990-08-07 Asea Brown Boveri Ag 電算機系で作成されるオブジエクト・プログラムの時間経過を観察する方法とこの方法を実行する観測器具
JPH07113898B2 (ja) * 1989-05-09 1995-12-06 株式会社日立製作所 障害検出方式
US5274811A (en) * 1989-06-19 1993-12-28 Digital Equipment Corporation Method for quickly acquiring and using very long traces of mixed system and user memory references
US5193191A (en) * 1989-06-30 1993-03-09 Digital Equipment Corporation Incremental linking in source-code development system
US5325531A (en) * 1989-06-30 1994-06-28 Digital Equipment Corporation Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5201050A (en) * 1989-06-30 1993-04-06 Digital Equipment Corporation Line-skip compiler for source-code development system
US5465258A (en) * 1989-11-13 1995-11-07 Integrity Systems, Inc. Binary image performance evaluation tool
US5157779A (en) * 1990-06-07 1992-10-20 Sun Microsystems, Inc. User extensible testing system
US5241623A (en) * 1990-09-27 1993-08-31 General Electric Company Method and system for delineation of structure and linkages between knowledge base modules
US5657438A (en) * 1990-11-27 1997-08-12 Mercury Interactive (Israel) Ltd. Interactive system for developing tests of system under test allowing independent positioning of execution start and stop markers to execute subportion of test script
US5511185A (en) * 1990-11-27 1996-04-23 Mercury Interactive Corporation System for automatic testing of computer software having output synchronization and capable of responding to asynchronous events
US5333304A (en) * 1991-05-03 1994-07-26 International Business Machines Corporation Method and apparatus for software application evaluation utilizing compiler applications
US5455949A (en) * 1991-09-06 1995-10-03 International Business Machines Corporation Method for representing and signaling run-time program conditions
US5568642A (en) * 1991-12-26 1996-10-22 Institute Of Software Scientifical Constructions Computer system with easy programming architecture and programming method therefor
US5600789A (en) * 1992-11-19 1997-02-04 Segue Software, Inc. Automated GUI interface testing
US5737561A (en) * 1993-01-22 1998-04-07 Intel Corporation Method and apparatus for executing an instruction with multiple brancing options in one cycle
US5717908A (en) * 1993-02-25 1998-02-10 Intel Corporation Pattern recognition system using a four address arithmetic logic unit
US5825921A (en) * 1993-03-19 1998-10-20 Intel Corporation Memory transfer apparatus and method useful within a pattern recognition system
DE69415593T2 (de) * 1993-06-30 1999-05-20 Microsoft Corp Verfahren zur Überprüfung eines nachrichtengesteuerten Betriebssystems
US5414836A (en) * 1993-09-29 1995-05-09 International Business Machines Corporation Software testing system that employs a graphical interface to generate test cases configured as hybrid tree structures
US6009267A (en) * 1993-09-30 1999-12-28 Fujitsu Limited Apparatus for analyzing the task specification (business rule specification) of a source program
US5729676A (en) * 1993-12-10 1998-03-17 Nec Corporation Method of generating data for evaluating programs
US6201539B1 (en) 1994-01-04 2001-03-13 International Business Machines Corporation Method and system for customizing a data processing system graphical user interface
DE4416704A1 (de) * 1994-05-11 1995-11-16 Siemens Ag Integrationstestverfahren für ein objektorientiertes Programm
US5613118A (en) * 1994-06-20 1997-03-18 International Business Machines Corporation Profile-based preprocessor for optimizing programs
US5790858A (en) * 1994-06-30 1998-08-04 Microsoft Corporation Method and system for selecting instrumentation points in a computer program
US5768592A (en) * 1994-09-27 1998-06-16 Intel Corporation Method and apparatus for managing profile data
US5542043A (en) * 1994-10-11 1996-07-30 Bell Communications Research, Inc. Method and system for automatically generating efficient test cases for systems having interacting elements
US5687375A (en) * 1994-10-14 1997-11-11 International Business Machines Corporation Debugging of High Performance Fortran programs with backup breakpoints
JPH08185326A (ja) * 1994-12-28 1996-07-16 Fujitsu Ltd インタープリタ言語処理装置
US5652899A (en) * 1995-03-03 1997-07-29 International Business Machines Corporation Software understanding aid for generating and displaying simiplified code flow paths with respect to target code statements
US5671351A (en) * 1995-04-13 1997-09-23 Texas Instruments Incorporated System and method for automated testing and monitoring of software applications
US5956478A (en) * 1995-09-11 1999-09-21 Digital Equipment Corporation Method for generating random test cases without causing infinite loops
US5845064A (en) * 1995-09-11 1998-12-01 Digital Equipment Corporation Method for testing and verification of a CPU using a reference model
US5748878A (en) * 1995-09-11 1998-05-05 Applied Microsystems, Inc. Method and apparatus for analyzing software executed in embedded systems
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6393497B1 (en) * 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6023580A (en) * 1996-07-03 2000-02-08 Objectswitch Corporation Apparatus and method for testing computer systems
US5754860A (en) * 1996-07-23 1998-05-19 Digital Equipment Corporation Method and apparatus for software testing using a differential testing technique to test compilers
US5950004A (en) * 1996-09-13 1999-09-07 The United States Of America As Represented By The Secretary Of The Navy Model-based process for translating test programs
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6513154B1 (en) 1996-10-21 2003-01-28 John R. Porterfield System and method for testing of computer programs in programming effort
JPH10214203A (ja) * 1997-01-29 1998-08-11 Nec Corp 情報処理装置
US6381740B1 (en) 1997-09-16 2002-04-30 Microsoft Corporation Method and system for incrementally improving a program layout
US6071316A (en) * 1997-09-29 2000-06-06 Honeywell Inc. Automated validation and verification of computer software
US5966541A (en) 1997-12-04 1999-10-12 Incert Software Corporation Test protection, and repair through binary-code augmentation
US6106571A (en) * 1998-01-29 2000-08-22 Applied Microsystems Corporation Relocatable instrumentation tags for testing and debugging a computer program
US6243835B1 (en) * 1998-01-30 2001-06-05 Fujitsu Limited Test specification generation system and storage medium storing a test specification generation program
CN1292115A (zh) * 1998-02-26 2001-04-18 太阳微系统公司 分布系统中动态验证信息的装置和方法
JP2002505467A (ja) * 1998-02-26 2002-02-19 サン・マイクロシステムズ・インコーポレーテッド 分散システムにおける動的参照サービス
US6163858A (en) * 1998-06-08 2000-12-19 Oracle Corporation Diagnostic methodology for debugging integrated software
US6490721B1 (en) 1998-07-14 2002-12-03 Oc Systems Incorporated Software debugging method and apparatus
US6338149B1 (en) 1998-07-31 2002-01-08 Westinghouse Electric Company Llc Change monitoring system for a computer system
US6577981B1 (en) * 1998-08-21 2003-06-10 National Instruments Corporation Test executive system and method including process models for improved configurability
US6546553B1 (en) 1998-10-02 2003-04-08 Microsoft Corporation Service installation on a base function and provision of a pass function with a service-free base function semantic
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US6499137B1 (en) 1998-10-02 2002-12-24 Microsoft Corporation Reversible load-time dynamic linking
US6381628B1 (en) 1998-10-02 2002-04-30 Microsoft Corporation Summarized application profiling and quick network profiling
US6230312B1 (en) 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6983463B1 (en) 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
US6263491B1 (en) 1998-10-02 2001-07-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6381735B1 (en) 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6742175B1 (en) * 1998-10-13 2004-05-25 Codagen Technologies Corp. Component-based source code generator
US6333999B1 (en) * 1998-11-06 2001-12-25 International Business Machines Corporation Systematic enumerating of strings using patterns and rules
US6308321B1 (en) 1998-12-11 2001-10-23 Incert Software Corporation Method for determining program control flow
US6353924B1 (en) * 1999-02-08 2002-03-05 Incert Software Corporation Method for back tracing program execution
US8044793B2 (en) * 2001-03-01 2011-10-25 Fisher-Rosemount Systems, Inc. Integrated device alerts in a process control system
US7206646B2 (en) * 1999-02-22 2007-04-17 Fisher-Rosemount Systems, Inc. Method and apparatus for performing a function in a plant using process performance monitoring with process equipment monitoring and control
US7562135B2 (en) * 2000-05-23 2009-07-14 Fisher-Rosemount Systems, Inc. Enhanced fieldbus device alerts in a process control system
US6633782B1 (en) 1999-02-22 2003-10-14 Fisher-Rosemount Systems, Inc. Diagnostic expert in a process control system
US6298454B1 (en) 1999-02-22 2001-10-02 Fisher-Rosemount Systems, Inc. Diagnostics in a process control system
WO2001022228A1 (en) 1999-09-17 2001-03-29 Nortel Networks Limited System and method for producing a verification system for verifying procedure interfaces
US6973417B1 (en) 1999-11-05 2005-12-06 Metrowerks Corporation Method and system for simulating execution of a target program in a simulated target system
US6539501B1 (en) 1999-12-16 2003-03-25 International Business Machines Corporation Method, system, and program for logging statements to monitor execution of a program
US6748584B1 (en) * 1999-12-29 2004-06-08 Veritas Operating Corporation Method for determining the degree to which changed code has been exercised
US6804814B1 (en) 1999-12-29 2004-10-12 Veritas Operating Corporation Method for simulating back program execution from a traceback sequence
US6745383B1 (en) 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
US6951010B2 (en) * 2000-09-19 2005-09-27 Fujitsu Limited Program specification generating system
US7296275B2 (en) * 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US6965806B2 (en) * 2001-03-01 2005-11-15 Fisher-Rosemount Systems Inc. Automatic work order/parts order generation and tracking
WO2002071173A2 (en) * 2001-03-01 2002-09-12 Fisher-Rosemount Systems, Inc. Data sharing in a process plant
US7720727B2 (en) * 2001-03-01 2010-05-18 Fisher-Rosemount Systems, Inc. Economic calculations in process control system
US8073967B2 (en) 2002-04-15 2011-12-06 Fisher-Rosemount Systems, Inc. Web services-based communications for use with process control systems
IL142487A0 (en) * 2001-04-05 2003-09-17 Hexalock Ltd Method and system for protecting data
US20020191102A1 (en) * 2001-05-31 2002-12-19 Casio Computer Co., Ltd. Light emitting device, camera with light emitting device, and image pickup method
US7036111B2 (en) * 2001-06-01 2006-04-25 Hewlett-Packard Development Company, L.P. Code verification system and method
US7406432B1 (en) 2001-06-13 2008-07-29 Ricoh Company, Ltd. Project management over a network with automated task schedule update
US7191141B2 (en) * 2001-06-13 2007-03-13 Ricoh Company, Ltd. Automated management of development project files over a network
US6941546B2 (en) * 2001-08-01 2005-09-06 International Business Machines Corporation Method and apparatus for testing a software component using an abstraction matrix
US6986125B2 (en) * 2001-08-01 2006-01-10 International Business Machines Corporation Method and apparatus for testing and evaluating a software component using an abstraction matrix
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
SE524639C2 (sv) * 2002-10-15 2004-09-07 Abb As Feldetektering i en industriell kontroller under säkerhetsrelaterad styrning
US7171652B2 (en) * 2002-12-06 2007-01-30 Ricoh Company, Ltd. Software development environment with design specification verification tool
US6986110B1 (en) * 2003-01-02 2006-01-10 Hewlett-Packard Development Company, L.P. Automated method and system for backtracing of instruction parameters from specified instruction in test cases
US20050028146A1 (en) * 2003-08-01 2005-02-03 Quick Shawn G. Systems and methods for software and firmware testing using checkpoint signatures
US7308675B2 (en) * 2003-08-28 2007-12-11 Ricoh Company, Ltd. Data structure used for directory structure navigation in a skeleton code creation tool
US7237224B1 (en) * 2003-08-28 2007-06-26 Ricoh Company Ltd. Data structure used for skeleton function of a class in a skeleton code creation tool
US7346894B1 (en) * 2003-12-12 2008-03-18 Nvidia Corporation Method and system for specifying file-specific program settings
US7287243B2 (en) * 2004-01-06 2007-10-23 Hewlett-Packard Development Company, L.P. Code verification system and method
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US20050204340A1 (en) * 2004-03-10 2005-09-15 Ruminer Michael D. Attribute-based automated business rule identifier and methods of implementing same
US7581211B2 (en) * 2004-07-14 2009-08-25 International Business Machines Corporation Method and apparatus for on demand debugging, tracing, and logging of applications
US7823132B2 (en) * 2004-09-29 2010-10-26 Microsoft Corporation Automated test case verification that is loosely coupled with respect to automated test case execution
US8185868B1 (en) 2004-12-20 2012-05-22 The Mathworks, Inc. System and method for cell-based code editing and publishing
US20060174248A1 (en) * 2005-02-03 2006-08-03 Zeidman Robert M Software tool for automatically protecting shared resources within software source code
JP4924976B2 (ja) * 2005-03-23 2012-04-25 新日鉄ソリューションズ株式会社 ソフトウェア開発支援システム
US9201420B2 (en) 2005-04-08 2015-12-01 Rosemount, Inc. Method and apparatus for performing a function in a process plant using monitoring data with criticality evaluation data
US8005647B2 (en) 2005-04-08 2011-08-23 Rosemount, Inc. Method and apparatus for monitoring and performing corrective measures in a process plant using monitoring data with corrective measures data
US7272531B2 (en) * 2005-09-20 2007-09-18 Fisher-Rosemount Systems, Inc. Aggregation of asset use indices within a process plant
US20070101196A1 (en) * 2005-11-01 2007-05-03 Rogers William A Functional testing and verification of software application
US7895565B1 (en) * 2006-03-15 2011-02-22 Jp Morgan Chase Bank, N.A. Integrated system and method for validating the functionality and performance of software applications
US8050953B2 (en) * 2006-06-07 2011-11-01 Ricoh Company, Ltd. Use of a database in a network-based project schedule management system
US20070288288A1 (en) * 2006-06-07 2007-12-13 Tetsuro Motoyama Use of schedule editors in a network-based project schedule management system
US8799043B2 (en) * 2006-06-07 2014-08-05 Ricoh Company, Ltd. Consolidation of member schedules with a project schedule in a network-based management system
US8352923B2 (en) * 2006-09-25 2013-01-08 Typemock Ltd. Method and system for isolating software components
CN100547562C (zh) * 2006-10-18 2009-10-07 国际商业机器公司 自动生成可再现运行时问题的单元测试用例的方法和系统
US8762956B1 (en) * 2007-01-31 2014-06-24 The Mathworks, Inc. Generating a report document from code
WO2008110411A1 (en) * 2007-03-14 2008-09-18 International Business Machines Corporation Automatic formatting of computer program source code
US8028276B1 (en) * 2007-06-29 2011-09-27 Oracle America, Inc. Method and system for generating a test file
US8301676B2 (en) 2007-08-23 2012-10-30 Fisher-Rosemount Systems, Inc. Field device with capability of calculating digital filter coefficients
US7702401B2 (en) 2007-09-05 2010-04-20 Fisher-Rosemount Systems, Inc. System for preserving and displaying process control data associated with an abnormal situation
US8055479B2 (en) 2007-10-10 2011-11-08 Fisher-Rosemount Systems, Inc. Simplified algorithm for abnormal situation prevention in load following applications including plugged line diagnostics in a dynamic process
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US9594670B2 (en) * 2008-07-03 2017-03-14 International Business Machines Corporation Managing software dependencies during software testing and debugging
US8352907B2 (en) * 2009-08-10 2013-01-08 International Business Machines Corporation Software application recreation
US20120102458A1 (en) * 2010-10-22 2012-04-26 Microsoft Corporation Generating documentation from tests
JP5626786B2 (ja) * 2010-11-09 2014-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウエア開発支援方法とソフトウエア開発支援装置とソフトウエア開発支援プログラム
US8713679B2 (en) 2011-02-18 2014-04-29 Microsoft Corporation Detection of code-based malware
US9927788B2 (en) 2011-05-19 2018-03-27 Fisher-Rosemount Systems, Inc. Software lockout coordination between a process control system and an asset management system
US9038185B2 (en) * 2011-12-28 2015-05-19 Microsoft Technology Licensing, Llc Execution of multiple execution paths
CN104956326A (zh) * 2013-02-01 2015-09-30 惠普发展公司,有限责任合伙企业 基于抽象测试用户控制的测试脚本创建
JP6102448B2 (ja) * 2013-04-10 2017-03-29 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
US9311223B2 (en) * 2013-05-21 2016-04-12 International Business Machines Corporation Prioritizing test cases using multiple variables
IN2013MU02497A (de) * 2013-07-29 2015-06-26 Tata Consultancy Services Ltd
US10001978B2 (en) * 2015-11-11 2018-06-19 Oracle International Corporation Type inference optimization
US10713150B1 (en) * 2019-04-04 2020-07-14 Sap Se Accurate test coverage of generated code

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3427443A (en) * 1965-04-08 1969-02-11 Ibm Instruction execution marker for testing computer programs
US3522597A (en) * 1965-11-19 1970-08-04 Ibm Execution plotter
US3551659A (en) * 1969-05-05 1970-12-29 Charles O Forsythe Method for debugging computer programs
JPS5755456A (en) * 1980-09-19 1982-04-02 Hitachi Ltd Career recording system
JPS57157362A (en) * 1981-03-25 1982-09-28 Hitachi Ltd Method and apparatus of execution path career data pickup for architecture program
JPS57191761A (en) * 1981-05-20 1982-11-25 Hitachi Ltd Analyzing method for execution path of structured program
JPS585850A (ja) * 1981-07-03 1983-01-13 Fujitsu Ltd プログラム翻訳装置
JPS5886648A (ja) * 1981-11-18 1983-05-24 Mitsubishi Electric Corp トレ−ス装置

Also Published As

Publication number Publication date
DE3884034D1 (de) 1993-10-21
EP0286361A3 (en) 1989-05-10
EP0286361B1 (de) 1993-09-15
CA1297191C (en) 1992-03-10
IN171541B (de) 1992-11-14
JPS63271643A (ja) 1988-11-09
ES2045108T3 (es) 1994-01-16
EP0286361A2 (de) 1988-10-12
US4819233A (en) 1989-04-04

Similar Documents

Publication Publication Date Title
DE3884034T2 (de) Verfahren zur Überprüfung von Computersoftware.
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
DE69720821T2 (de) Fehlersuchsystem für Programme mit einer graphischen Benutzerschnittstelle
DE69932371T2 (de) Verschiebbare Instrumentationskennzeichen für die Prüfung und die Fehlerbeseitigung eines Computerprogramms
DE69826659T2 (de) Billige, leicht anzuwendende software für ein automatisches testsystem
DE68923888T2 (de) Speicherprogrammierbare Steuerung mit gespeichertem markierten Quellencode.
DE3787431T2 (de) Verfahren zur Generierung einer Kandidatenliste von fehlerhaften Schaltungselementen und Verfahren zur Isolierung von Fehlern in einer logischen Schaltung unter Verwendung dieser Kandidatenliste.
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
EP1723513B1 (de) Verfahren zur konfiguration eines computerprogramms
DE3789724T2 (de) System zur Prüfung von interaktiver Software.
DE3687842T2 (de) Verfahren und Gerät zum Software-Austesten.
DE69831732T2 (de) Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem
DE19960050A1 (de) Grafische Benutzerschnittstelle zur Entwicklung von Anwendungsbeispielen unter Verwendung einer Testobjektbibliothek
DE3842289C2 (de) Verfahren zur Entwicklung von Programmen für ein verteiltes Datenverarbeitungssystem
DE10308725A1 (de) System und Verfahren zum Verwalten und zum Austausch von Daten eines technischen Projektes, einer technischen Anlage sowie einzelner Anlagenkomponenten
DE102011014830A1 (de) Verfahren und vorrichtung zum analysieren vonsoftware
DE19959157A1 (de) Verbessertes Funktionstesten durch das Filtern von groben Mutationen
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE68924507T2 (de) Verfahren und Gerät zur Markierung von Emulationsanalysezuständen.
DE2654389B2 (de)
DE2242009C2 (de) Verfahren und Anordnung zum Erkennen, ob im Mikroprogramm einer Datenverarbeitungsanlage vorgesehene Verzweigungsoperationen ausgeführt werden
EP1505399B1 (de) Verfahren zum Erzeugen von Testdaten zum Austesten der Funktionsfähigkeit einer datenverarbeitenden Schaltung
DE19924437A1 (de) Verfahren, Computerprogrammprodukte und Vorrichtung zur Initialisierung von globalen Registern
EP0662226B1 (de) Verfahren zur bearbeitung eines anwenderprogramms auf einem parallelrechnersystem
EP0708941B1 (de) Verfahren zum test eines objektorientierten programms

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee