DE102021128521A1 - Effiziente defektlokalisierung in neuen codeversionen - Google Patents

Effiziente defektlokalisierung in neuen codeversionen Download PDF

Info

Publication number
DE102021128521A1
DE102021128521A1 DE102021128521.6A DE102021128521A DE102021128521A1 DE 102021128521 A1 DE102021128521 A1 DE 102021128521A1 DE 102021128521 A DE102021128521 A DE 102021128521A DE 102021128521 A1 DE102021128521 A1 DE 102021128521A1
Authority
DE
Germany
Prior art keywords
program
procedure
defect
version program
new version
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.)
Pending
Application number
DE102021128521.6A
Other languages
English (en)
Inventor
Zhen Liu
Jia Tian Zhong
Le Chang
Ming Lei Zhang
Ting Ting Zhan
Xiao Yan Tian
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102021128521A1 publication Critical patent/DE102021128521A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3632Software debugging of specific synchronisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • 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/368Test management for test version control, e.g. updating test cases to a new software version
    • 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/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

Quellcode einer goldenen Version und einer nächsten Version eines Programms, in dem Prozeduraufrufe so modifiziert werden, dass sie aus einer Eingangspunkttabelle (EPT) mit Indexnummern aufrufen, die Prozedurspeicheradressen entsprechen, wird empfangen. Ein ausführbares defektfreies Programm der goldenen Version und ein Programm der nächsten Version mit einem Defekt werden empfangen. Eine erste Eingangspunkttabelle (erste EPT) für das Programm der neuen Version und eine zweite EPT für das Programm der goldenen Version werden erzeugt. Eine Reihe von Ersetzungen von Prozeduren aus der zweiten EPT in der ersten EPT wird durchgeführt, und eine Ersetzungsreihenfolge umfasst: einen Modulsatz, ein Modul des Modulsatzes, einen Prozedursatz des Moduls und eine Prozedur des Prozedursatzes. Die Prozedur zum Erzeugen eines Defekts wird durch Ersetzen der Reihenfolge nach identifiziert, bis der Defekt nicht mehr vorhanden ist, und anschließend wird in der Reihenfolge mit dem nächsten Ersetzen fortgefahren.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf das Gebiet der Fehlersuche in der Anwendungsentwicklung und im Besonderen auf effizientes Lokalisieren von Code, der Defekte einführt, durch priorisierte Ersetzungen.
  • HINTERGRUND DER ERFINDUNG
  • Softwareanwendungen können in Bezug auf Architektur und Codezeilen sehr umfangreich und komplex sein. Häufig werden Anwendungen entwickelt, die mehrere Module umfassen, von denen jedes einen bestimmten Bereich von Operationen oder eine Gruppe von verwandten Funktionen durchführt. Die Module einer Anwendung sind Teile eines Programms, die oft unabhängig voneinander entwickelt und durch Verknüpfen der Module kombiniert werden. Module umfassen eine oder mehrere Prozeduren, die konkrete Aufgaben durchführen und die während des Ausführens des Programms referenziert oder aufgerufen werden.
  • Softwareanwendungen werden in einer Umgebung getestet, um Fehler und Defekte, die manchmal auch als „Bugs“ bezeichnet werden, zu lokalisieren und zu beheben. Testumgebungen umfassen häufig einen Debugger, der Lokalisieren und Korrigieren von Codedefekten ermöglicht. Der Quellcode umfasst die Programmieranweisungen einer Anwendung, die in der Regel in einer textgestützten Programmiersprache erstellt und von einer Compilerfunktion kompiliert werden, um ein ausführbares Programm zu erzeugen.
  • Softwareanwendungen werden häufig durch Ändern oder Ergänzen des bestehenden Codes der Anwendung aktualisiert. Aktualisierungen werden als neue Versionen der Softwareanwendung bezeichnet und können durch ein Versionsnummerierungsschema identifiziert werden. Eine aktualisierte Software kann zu Problemen mit den Funktionen der Vorgängerversion führen, was eine Analyse und Suche erfordert, um Defekte zu lokalisieren und zu beheben. Vorgängerversionen der Softwareanwendung, die defektfrei sind, werden manchmal als Goldener Code oder Goldene Version bezeichnet, während die aktualisierte Anwendung kurz als neue Version der Softwareanwendung bezeichnet werden kann.
  • KURZDARSTELLUNG
  • Ausführungsformen der vorliegenden Erfindung offenbaren ein Verfahren, ein Computerprogrammprodukt und ein System zum Lokalisieren eines Defekts in einer neuen Version eines Softwareprogramms. Das Verfahren stellt bereit, dass ein oder mehrere Prozessoren den Quellcode eines Programms der goldenen Version und den Quellcode eines Programms der nächsten Version empfangen, der so modifiziert wurde, dass er Prozeduraufrufe innerhalb der jeweiligen Programme an Indexnummern in einer Eingangspunkttabelle (entry point table - EPT) leitet, wobei jede Indexnummer einer jeweiligen Prozedurspeicheradresse entspricht. Der eine oder die mehreren Prozessoren empfangen eine nächste Version und eine goldene Version eines Programms, wobei das Programm der nächsten Version ausführbar ist und mindestens einen Defekt umfasst und das Programm der goldenen Version ausführbar und defektfrei ist. Der eine oder mehrere Prozessoren erzeugen eine erste Eingangspunkttabelle (erste EPT) für das Programm der neuen Version und eine zweite Eingangspunkttabelle (zweite EPT) für das Programm der goldenen Version. Der eine oder mehrere Prozessoren führen eine Reihe von Ersetzungen von Prozeduren aus der zweiten EPT des Programms der goldenen Version in der ersten EPT des Programms der neuen Version durch, wobei die Reihe von Ersetzungen von Prozeduren eine Reihenfolge eines Modulsatzes, eines einzelnen Moduls des Modulsatzes, eines Prozedursatzes des einzelnen Moduls und einer einzelnen Prozedur des Prozedursatzes umfasst, und der eine oder mehrere Prozessoren identifizieren die einzelne Prozedur, bei der festgestellt wurde, dass sie den Defekt erzeugt, indem sie ein Ersetzen der Reihenfolge durchführen, bis festgestellt wird, dass der Defekt nicht vorhanden ist, und fahren mit einem nächsten Ersetzen der Reihenfolge fort.
  • Ausführungsformen der vorliegenden Erfindung offenbaren auch ein Verfahren, ein Computerprogrammprodukt und ein Computersystem zum Festlegen einer Ersetzungsreihenfolge zum Identifizieren einer Prozedur einer neuen Version eines Programms, das einen Defekt erzeugt. Das Verfahren stellt einen oder mehrere Prozessoren bereit, die Faktoren ermitteln, die einer neuen Version eines Programms im Zusammenhang mit dem Auftreten eines Defekts zugehörig sind. Der eine oder mehrere Prozessoren legen eine Gewichtung der Faktoren für Module des Programms der neuen Version bzw. eine Gewichtung der Faktoren für Prozeduren der jeweiligen Module fest. Der eine oder mehrere Prozessoren empfangen einen Modulaufrufbaum und einen Prozeduraufrufbaum des Programms der neuen Version.
  • Der eine oder mehrere Prozessoren ermitteln einen Ersetzungsprioritätswert für einen Modulsatz in einer durch den Modulaufrufbaum identifizierten Aufrufsequenz auf der Grundlage der Gewichtung der jeweiligen Module, die in dem Modulsatz des Programms der neuen Version enthalten sind. Der eine oder mehrere Prozessoren ermitteln eine Reihenfolge des Ersetzens des Modulsatzes des Programms der neuen Version durch einen entsprechenden Modulsatz des Programms der goldenen Version, bei der es sich um eine Vorgängerversion des Programms handelt, die defektfrei ist, und die Ersetzungsreihenfolge des Modulsatzes wird in einer Sequenz durchgeführt, die vom höchsten Prioritätswert zum niedrigsten Prioritätswert verläuft und so lange fortgesetzt wird, bis ein Ersetzen des Modulsatzes dazu führt, dass der Defekt nicht mehr vorhanden ist.
  • Als Reaktion auf ein Feststellen, dass der Defekt beim Ausführen des Programms der neuen Version durch Ersetzen des Modulsatzes nicht vorhanden ist, ersetzen ein oder mehrere Prozessoren ein einzelnes Modul, das in dem identifizierten Modulsatz enthalten ist, in der Reihenfolge vom höchsten Prioritätswert zum niedrigsten Prioritätswert.
  • Als Reaktion auf ein Feststellen, dass ein identifiziertes Modul, das in dem identifizierten Modulsatz enthalten ist und durch ein entsprechendes Modul des Programms der goldenen Version ersetzt wird, dazu führt, dass der Defekt nicht mehr vorhanden ist, ersetzen der eine oder mehrere Prozessoren einen Prozedursatz aus dem Programm der goldenen Version durch den Prozedursatz des identifizierten Moduls auf der Grundlage des für den Prozedursatz ermittelten Prioritätswerts, und als Reaktion auf ein Feststellen, dass ein identifizierter Prozedursatz, der in dem identifizierten Modul enthalten ist und durch einen entsprechenden Prozedursatz des Programms der goldenen Version ersetzt wird, dazu führt, dass der Defekt nicht mehr vorhanden ist, ersetzen ein oder mehrere Prozessoren eine Prozedur des identifizierten Prozedursatzes aus dem Programm der goldenen Version durch die entsprechende Prozedur des Programms der neuen Version auf der Grundlage des für die Prozedur ermittelten Prioritätswerts, wobei die Ersetzungsreihenfolge von Prozeduren mit dem höchsten Prioritätswert zu Prozeduren mit dem niedrigsten Prioritätswert verläuft.
  • Figurenliste
    • 1 ist ein funktionelles Blockschaubild, das eine verteilte Anwendungstestumgebung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
    • 2 zeigt ein Beispiel für einen Prozeduraufruf von Anwendungsmodulen, die gemäß Ausführungsformen der vorliegenden Erfindung durch einen entsprechenden Index einer Eingangspunkttabelle (EPT) referenziert werden.
    • 3 ist ein Ablaufplan, der die Arbeitsschritte eines Programms zum Lokalisieren von Defekten darstellt, das in der verteilten Datenverarbeitungsumgebung von 1 gemäß Ausführungsformen der vorliegenden Erfindung arbeitet.
    • 4 zeigt einen Blockschaltplan von Komponenten eines Datenverarbeitungssystems, darunter eine Datenverarbeitungseinheit, die so konfiguriert ist, dass sie das Programm zum Lokalisieren von Defekten von 3 gemäß einer Ausführungsform der vorliegenden Erfindung funktionsmäßig durchführt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Erfindung berücksichtigen, dass Softwareanwendungen mit Änderungen und neuen Ergänzungen des Programmiercodes aktualisiert werden können und oft Defekte oder Fehler im Code enthalten, die dazu führen, dass eine zuvor korrekt durchgeführte Programmfunktion ausfällt oder zu Fehlern führt. Große und komplexe Anwendungen können zahlreiche Module und Tausende von Codezeilen umfassen, was das Lokalisieren von Codedefekten in aktualisierten Programmen erschwert. Ausführungsformen berücksichtigen, dass die Schwierigkeiten größer sind, wenn Entwickler den von anderen Entwicklern geschriebenen Programmcode lesen und korrigieren müssen.
  • Ausführungsformen der vorliegenden Erfindung berücksichtigen, dass Softwareanwendungen Module umfassen, bei denen es sich um separate unterscheidbare Komponenten des Programms handelt, die unabhängig entwickelt worden sein können, und dass jedes Modul einen bestimmten Satz von Operationen durchführen kann. Komplexe Softwareanwendungen können aus einer großen Anzahl von Modulen bestehen, und neue Versionen der Anwendung können Aktualisierungen und Ergänzungen zu einem oder mehreren der Module umfassen, darunter auch Löschungen und Ersetzungen. Ausführungsformen berücksichtigen, dass Module eine oder mehrere Prozeduren umfassen, bei denen es sich um Sätze von Programmanweisungen handelt, die bestimmte Aufgaben durchführen. Module und Prozeduren sind oft im Programm so angeordnet, dass sie aufgerufen oder gestartet werden, indem sie entsprechende Terme als Funktionsargumente enthalten, z.B. einen Term „P2“, der so definiert ist, dass er einer Prozedur eines bestimmten Moduls entspricht.
  • Ausführungsformen der vorliegenden Erfindung berücksichtigen auch, dass neue Versionen eines Anwendungsprogramms über Vorgängerversionen verfügen, die getestet und von Fehlern bereinigt wurden und in denen identifizierte Defekte lokalisiert und korrigiert wurden. Die defektfreie Vorgängerversion des Codes, die der neuen Version des Programmcodes unmittelbar vorausgeht, wird oft als Goldener Code oder Goldene Version des Programms bezeichnet.
  • Ausführungsformen der vorliegenden Erfindung stellen ein Verfahren, ein Computerprogrammprodukt und ein Computersystem zum Lokalisieren eines Defekts in einer neuen Programmversion eines Softwareanwendungsprogramms bereit. Ausführungsformen wenden eine Ersetzungsmethodik an und umfassen ein Priorisieren von Ersetzungen, um den Umfang des Defekts auf die Prozedurebene einzugrenzen, indem Komponenten einer goldenen Version der Softwareanwendung referenziert werden. Ausführungsformen ersetzen selektiv einen Modulsatz einer goldenen Version des Softwareanwendungscodes durch entsprechende Module der neuen Programmversion auf der Grundlage von ermittelten Prioritätswerten und der von einem Ablaufverfolgungstool bereitgestellten Modulaufrufsequenz. Ausführungsformen ersetzen weiterhin Module im Modulsatz, wiederum auf der Grundlage von Prioritätswerten, und wiederholen in ähnlicher Weise Ersetzungen auf der Prozedurebene für das Modul, das als den Defekt enthaltend identifiziert wurde.
  • Ausführungsformen der vorliegenden Erfindung umfassen eine neue Version einer Softwareanwendung, die mögliche Änderungen, Ergänzungen und Löschungen von Programmiercode einer fehlerfreien Vorgängerversion derselben Softwareanwendung umfasst. Die neue Version der Softwareanwendung wird hier als Programm der neuen Version bezeichnet, und die fehlerfreie Vorgängerversion derselben Softwareanwendung, ohne die in der neuen Version enthaltenen Änderungen, wird hier als Programm der goldenen Version bezeichnet. Die Begriffe „Softwareanwendung“, „Anwendung“ und „Programm“ werden hier austauschbar verwendet.
  • In einigen Ausführungsformen werden Ersetzungen durch Erzeugen von Eingangspunkttabellen (EPTs) ermöglicht, die jeweiligen Prozeduren von Modulen sowohl für das Programm der neuen Version als auch für das Programm der goldenen Version eine Indexnummer zuweisen. Die EPTs werden nach der Installation von ausführbaren Instanzen der jeweiligen Programme in einer Entwicklungstestumgebung erzeugt, die Debugger-Funktionen umfasst. Anwendungsprogrammierschnittstellen (APIs) für EPTs erzeugen die EPTs, identifizieren die jeweiligen Module und Prozeduren mit den Modulen, rufen die Speicherorte der jeweiligen Prozeduren jedes Moduls ab und weisen die Speicherorte einer Indexnummer der jeweiligen EPT für die neue Version und die goldene Version des Softwareprogramms zu.
  • Die EPTs ermöglichen Ersetzen einer oder mehrerer Prozeduren der goldenen Version durch eine oder mehrere entsprechende Prozeduren der neuen Version des Programms. In einigen Ausführungsformen wird das Programm der neuen Version geändert, indem Prozeduraufrufe im Quellcode durch EPT-Indexnummernaufrufe ersetzt werden, die den jeweiligen Prozeduren entsprechen, sodass die Indexnummer der EPT in Argumenten zum Aufrufen der geeigneten Prozedur verwendet wird. In einigen Ausführungsformen werden die Änderungen am Quellcode durch manuelle Programmierarbeiten vorgenommen.
  • Das ausführbare Programm der neuen Version wird unter der Steuerung eines Debuggers in der Testumgebung ausgeführt, und der/die Defekt/e wird/werden ermittelt, in der Regel durch Erkennen der Abweichung von erwarteten Ergebnissen der Anwendungsfälle. Auf der Grundlage der Prioritätswerte von Modulaufrufsequenzen wird ein Modulsatz der goldenen Version verwendet, um den entsprechenden Modulsatz im Programm der neuen Version zu ersetzen. Das Programm der neuen Version wird in der Testumgebung ausgeführt und auf das Vorhandensein oder Nichtvorhandensein des Defekts (oder eines der Defekte, wenn mehrere Defekte vorhanden sind) geprüft. Wenn der Defekt immer noch vorhanden ist, wird ein weiterer Modulsatz auf der Grundlage des Prioritätswerts ersetzt, und der Vorgang wird so lange wiederholt, bis der Defekt durch Ersetzen eines einzelnen Moduls beseitigt ist. Ausführungsformen fahren mit ähnlichen Ersetzungsschritten auf Prozedurebene für das identifizierte Modul fort, bis eine einzelne Prozedurersetzung den Defekt beseitigt und die verantwortliche Prozedur identifiziert.
  • Ausführungsformen der vorliegenden Erfindung lokalisieren wirksam Defekte im Programm der neuen Version mithilfe einer Berechnung von Prioritätswerten für Module und Verfahren des Programms der neuen Version. In einigen Ausführungsformen werden Faktoren ermittelt, die sich auf potenzielle Defekte in den jeweiligen Modulen und Prozeduren beziehen, und es werden Gewichtungen für die Faktoren ermittelt und den jeweiligen Modulen und Prozeduren auf der Grundlage des Beitrags der Faktoren für die jeweiligen Module und Prozeduren des Programms der neuen Version zugewiesen.
  • In einer beispielhaften Ausführungsform wird ein Entropie-Gewichtungsverfahren verwendet, um die Gewichtung jedes Faktors zu ermitteln. Zu beispielhaften Faktoren können gehören: i) Ermitteln der Codezeilen, in denen Änderungen für ein entsprechendes Modul oder eine Prozedur des Programms der neuen Version vorgenommen wurden; ii) Qualitätssicherungshistorie der Häufigkeit von Defekten, die in bestimmten Modulen oder Prozeduren in Vorgängerversionen aufgetreten sind; iii) Informationen aus dem Aufrufstapel von Modulen und Prozeduren, die zum Zeitpunkt des Auftretens des Defekts im Aufrufstapel vorhanden sind (falls verfügbar); iv) die Häufigkeit, mit der ein Modul oder eine Prozedur aufgerufen wird, wie von einer statischen Quellcode-Analysekomponente angezeigt. Ausführungsformen der vorliegenden Erfindung können zusätzliche oder weniger Faktoren umfassen, die beim Festlegen der Gewichtungen für die Berechnung der Prioritätswerte berücksichtigt werden.
  • In einigen Ausführungsformen werden faktorgestützte Gewichtungen berechnet und den Modulen und Prozeduren des Programms der neuen Version zugewiesen, und ein Ablaufverfolgungstool wird eingesetzt, um einen Modulaufrufbaum für das Programm der neuen Version und einen Prozeduraufrufbaum für ein gegebenes Modul zu erzeugen. Die Sequenzen von Verfahrensaufrufen und Prozeduraufrufen innerhalb des Programms der neuen Version werden ermittelt, und ein berechneter Prioritätswert auf der Grundlage der berücksichtigten Faktoren wird auf die Modulsequenzen angewendet, um einen Gesamtprioritätswert für jeden Modulsatz in einer Sequenz zu erhalten.
  • In einigen Ausführungsformen der vorliegenden Erfindung wird der Modulsequenzsatz mit dem höchsten Prioritätswert unter allen Modulsequenzsätzen des Programms der neuen Version ausgewählt und durch den entsprechenden Modulsatz des in der Testumgebung installierten ausführbaren Programms der goldenen Version ersetzt. Das Programm der neuen Version umfasst den ersetzten Modulsatz und wird ausgeführt und auf das Vorhandensein des Defekts überprüft. Wird der Defekt nicht gefunden, enthält der Modulsatz des Programms der neuen Version, der durch den Modulsatz des Programms der goldenen Version ersetzt wurde, den defekten Code. Besteht der Defekt weiterhin, wird der Modulsequenzsatz des Programms der neuen Version mit dem nächsthöheren Prioritätswert durch den entsprechenden Modulsequenzsatz des Programms der goldenen Version ersetzt. Das Programm der neuen Version mit ersetzten Modulen wird ausgeführt und auf das Vorhandensein des Defekts geprüft. Die Ersetzungsmethodik wird so lange wiederholt, bis das Programm der neuen Version ohne Auftreten des Defekts läuft.
  • Nachdem aus einer Ablaufverfolgungssequenz von Modulaufrufen der Modulsatz ermittelt wurde, der den Defekt enthält, indem der höchste Prioritätswert für den Modulsatz der Ablaufverfolgungssequenz ausgewählt wurde, wiederholen Ausführungsformen der vorliegenden Erfindung die Ersetzungsmethodik für einzelne Module des zuvor im Programm der neuen Version ersetzten Modulsatzes, gefolgt vom Ersetzen von Prozeduren des einzelnen Moduls, das als den Defekt enthaltend identifiziert wurde. Durch Ersetzen von Prozeduren in der Reihenfolge des höchsten Prioritätswertes wird die Prozedur identifiziert, die den Defekt verursacht.
  • Die vorliegende Erfindung wird nun mit Bezug auf die Figuren ausführlich beschrieben. 1 ist ein funktionelles Blockschaubild, das eine verteilte Anwendungstestumgebung, die allgemein mit 100 bezeichnet wird, gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. 1 stellt nur eine Darstellung einer Implementierung bereit und impliziert keine Einschränkungen in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen implementiert werden können. Fachleute können zahlreiche Änderungen an der dargestellten Umgebung vornehmen, ohne vom Umfang der Erfindung wie in den Ansprüchen niedergelegt abzuweichen.
  • Die verteilte Anwendungstestumgebung 100 umfasst die Datenverarbeitungseinheit 110, eine neue Version des Quellcodes 120, eine goldene Version des Quellcodes 130, ein ausführbares Programm der neuen Version 140 und ausführbares Programm der goldenen Version 160, die alle über ein Netzwerk 150 miteinander verbunden sind. Bei dem Netzwerk 150 kann es sich beispielsweise um ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN) wie beispielsweise das Internet, ein virtuelles lokales Netzwerk (VLAN) oder eine beliebige Kombination handeln, die drahtgebundene, drahtlose oder optische Verbindungen umfassen kann. Im Allgemeinen kann das Netzwerk 150 aus einer beliebigen Kombination von Verbindungen und Protokollen bestehen, die die Datenübertragung zwischen den Servern 110 unterstützen.
  • Die Datenverarbeitungseinheit 110 umfasst den Compiler 113, den Debugger 115 und die EPT-APIs 117 (entry point table application programming interfaces, Eingangspunkttabellen-Anwendungsprogrammierschnittstellen). In einigen Ausführungsformen kann es sich bei der Datenverarbeitungseinheit 110 um einen Blade-Server, einen Webserver, einen Laptop-Computer, einen Desktop-Computer, eine eigenständige mobile Datenverarbeitungseinheit, ein Smartphone, einen Tablet-Computer oder eine andere elektronische Einheit oder ein Datenverarbeitungssystem handeln, das Daten empfangen, senden und verarbeiten kann. In anderen Ausführungsformen kann es sich bei der Datenverarbeitungseinheit 110 um eine Datenverarbeitungseinheit handeln, die mit Anwendungen und Diensten interagiert, die in einer Cloud-Computing-Umgebung gehostet und betrieben werden. In einer weiteren Ausführungsform kann die Datenverarbeitungseinheit 110 ein Netbook-Computer, ein persönlicher digitaler Assistent (PDA) oder eine andere programmierbare elektronische Einheit sein, die in der Lage ist, den Quellcode der neuen Version 120 und den Quellcode der goldenen Version 130 zu kompilieren und Fehlersuchoperationen bei dem ausführbaren Programm der neuen Version 140 und dem ausführbaren Programm der goldenen Version 160 auszuführen sowie Operationen des Programms 300 zum Lokalisieren von Defekten durchzuführen. In einigen Ausführungsformen kann die Datenverarbeitungseinheit 110 auch über eine Datenverbindung mit dem entfernt angeordneten Programm 300 zum Lokalisieren von Defekten verbunden sein. Die Datenverarbeitungseinheit 110 kann interne und externe Hardwarekomponenten umfassen, die ausführlicher in 4 dargestellt sind.
  • Das Programm 300 zum Lokalisieren von Defekten ist eine Anwendung zum wirksamen Lokalisieren eines Defekts, manchmal auch als „Bug“ bezeichnet, in einer neuen Version eines Softwareprogramms, z.B. in einem ausführbaren Programm der neuen Version 140. Das Programm 300 zum Lokalisieren von Defekten wendet eine Ersetzungsmethodik an, bei der Modulsätze und Prozedurkomponenten des Programms der neuen Version selektiv und sequenziell durch entsprechende Module und Prozeduren des Programms einer goldenen Version ersetzt werden, in der ein Satz ein oder mehrere Module oder eine oder mehrere Prozeduren umfasst. Das Programm 300 zum Lokalisieren von Defekten wendet einen Prioritätswert auf Module und Prozeduren des Programms der neuen Version an und wählt einen Modulsatz auf der Grundlage der Prioritätswerte aus, die den Modulen in einer Aufrufsequenz zugewiesen werden, die durch die Ausgaben des Ablaufverfolgungstools von Modul- und Prozeduraufrufbäumen ermittelt wird. Das Programm 300 zum Lokalisieren von Defekten wählt den Modulsatz mit dem höchsten Prioritätswert zum Ersetzen aus. Wenn das Ersetzen eines Modulsatzes aus Modulen der goldenen Version durch Module der neuen Version dazu führt, dass der Defekt im ausgeführten Programm nicht mehr vorhanden ist, wird der defekte Code als innerhalb des Modulsatzes des Programms der neuen Version liegend ermittelt, der ersetzt wurde.
  • Das Programm 300 zum Lokalisieren von Defekten ersetzt die einzelnen Module durch den identifizierten Modulsatz, der den defekten Programmiercode enthält, auf der Grundlage der den Modulen zugewiesenen Prioritätswerte. Das Programm 300 zum Lokalisieren von Defekten identifiziert das Modul, das den defekten Programmiercode umfasst, auf der Grundlage des Nichtvorhandenseins des Defekts als Ergebnis des Ersetzens des Moduls der goldenen Version. Das Programm 300 zum Lokalisieren von Defekten geht dazu über, Prozeduren innerhalb des identifizierten einzelnen Moduls zu ersetzen, indem es in ähnlicher Weise den Prozedursatz mit dem höchsten zugewiesenen Prioritätswert auswählt, gefolgt von der einzelnen Prozedur innerhalb des Prozedursatzes, die als den Defekt enthaltend identifiziert wurde. Identifizieren der einzelnen Prozedur, in der sich die Defektquelle befindet, schränkt die Suche der Entwickler nach den Codefehlern, die zu dem Defekt führen, erheblich ein und spart Zeit und Ressourcen.
  • Der Compiler 113 führt Softwareoperationen durch, die den in höheren Programmiersprachen geschriebenen Quellcode in maschinenlesbare Anweisungen übersetzen, die oft als Maschinencode bezeichnet werden. Der Compiler 113 führt Operationen zum Kompilieren des Quellcodes der neuen Version 120 und des Quellcodes der goldenen Version 130 durch, was zu einem ausführbaren Programm der neuen Version 140 bzw. zu einem ausführbaren Programm der goldenen Version 160 führt. In Ausführungsformen der vorliegenden Erfindung führt der Compiler 113 Kompilierungsaufgaben im ausführbaren Programm der neuen Version 140 durch, nachdem Ersetzungen in Modulsätzen, einzelnen Modulen und Prozeduren vorgenommen wurden, um das ausführbare Programm der neuen Version 140 zu erzeugen, wobei die Ersetzungen mit Modul- und Prozedurkomponenten aus dem ausführbaren Programm der goldenen Version 160 vorgenommen werden, um Code zu lokalisieren, der zu einem oder mehreren Defekten im ausführbaren Programm der neuen Version 140 führt.
  • Der Debugger 115 ist ein Softwaretool für Computerprogramme, das bei der Entwicklung von Softwareanwendungen zum Testen, Ermitteln von Fehlern und Reparieren oder Korrigieren von Fehlern im Programmcode verwendet wird. Der Debugger 115 stellt Steuern des Testens und Ausführens des ausführbaren Programms der neuen Version 140 innerhalb der verteilten Anwendungstestumgebung 100 bereit. Der Debugger 115 ermöglicht es, dass sowohl das ausführbare Programm der neuen Version 140 als auch das ausführbare Programm der goldenen Version 160 innerhalb der verteilten Anwendungstestumgebung 100 installiert werden, was es dem Programm 300 zum Lokalisieren von Defekten ermöglicht, Ersetzungen von Modulsätzen, Modulen und Prozeduren aus dem ausführbaren Programm der goldenen Version 160 im ausführbaren Programm der neuen Version 140 durchzuführen.
  • Bei den EPT-APIs 117 handelt es sich um einen Satz von Anwendungsprogrammierschnittstellen, die durch die Installation des ausführbaren Programms der neuen Version 140 und des ausführbaren Programms der goldenen Version 160 in der verteilten Anwendungstestumgebung 100 unter der Steuerung des Debuggers 115 aktiviert werden. Die EPT-APIs 117 erzeugen Eingangspunkttabellen für das ausführbare Programm der neuen Version 140 und das ausführbare Programm der goldenen Version 160, in denen die Speicheradressen der Prozeduren für jedes Modul der jeweiligen Programme im EPT enthalten sind und durch eine Indexnummer identifiziert werden, die der jeweiligen Prozedurspeicheradresse entspricht. Die EPT-APIs 117 erzeugen die EPT-Tabellen, die die Änderungen aktivieren, die an den Prozeduraufrufen im Quellcode der neuen Version 120 und im Quellcode der goldenen Version 130 vorgenommen wurden, um Ersetzungen von Modulsätzen, einzelnen Modulen und Prozeduren aus dem ausführbaren Programm der goldenen Version 160 im ausführbaren Programm der neuen Version 140 zu ermöglichen.
  • Der Quellcode der neuen Version 120 ist der textgestützte Code für eine neu entwickelte Version des Programms, das in der verteilten Anwendungstestumgebung 100 enthalten ist. Der Quellcode der neuen Version 120 umfasst Aktualisierungen und Änderungen gegenüber einer Vorgängerversion desselben Programms, z.B. des Quellcodes der goldenen Version 130. In Ausführungsformen der vorliegenden Erfindung wird der Quellcode der neuen Version 120 unter Verwendung einer oder mehrerer Programmiersprachen erzeugt und vom Compiler 113 der Datenverarbeitungseinheit 110 verarbeitet, um ein ausführbares Programm der neuen Version 140 zu erzeugen, in dem vom Debugger 115 ein Defekt festgestellt wurde. Der Quellcode der neuen Version 120 wurde mit einer Architektur entwickelt, die eine Mehrzahl von Modulen und eine oder mehrere Prozeduren umfasst, die in den jeweiligen Modulen enthalten sind.
  • Der Quellcode der goldenen Version 130 ist der textgestützte Programmiercode für eine fehlerfreie Vorgängerversion des Quellcodes der neuen Version 120 ohne die Aktualisierungen und Änderungen, die am Quellcode der neuen Version 120 vorgenommen wurden. In Ausführungsformen der vorliegenden Erfindung wird der Quellcode der goldenen Version 130 unter Verwendung einer oder mehrerer Programmiersprachen erzeugt und vom Compiler 113 der Datenverarbeitungseinheit 110 verarbeitet, um ein ausführbares Programm der goldenen Version 160 zu erzeugen, das ohne Defekt ist. Der Quellcode der goldenen Version 130 wurde mit einer Architektur entwickelt, die eine Mehrzahl von Modulen und eine oder mehrere Prozeduren umfasst, die in den jeweiligen Modulen enthalten sind.
  • In einer Ausführungsform der vorliegenden Erfindung handelt es sich bei dem ausführbaren Programm der neuen Version 140 um eine kompilierte Ausgabe des Quellcodes der neuen Version 120, der vom Compiler 113 der Datenverarbeitungseinheit 110 verarbeitet wird. Das ausführbare Programm der neuen Version 140 wird in der verteilten Anwendungstestumgebung 100 unter der Steuerung des Debuggers 115 ausgeführt, der in der Datenverarbeitungseinheit 110 arbeitet. In Ausführungsformen der vorliegenden Erfindung wird das ausführbare Programm der neuen Version 140 mit der Eingabe des Anwendungsfalls ausgeführt und umfasst einen oder mehrere Defekte in der Programmierung. In einigen Ausführungsformen kann der Code der neuen Version 120, der Code der goldenen Version 130, das ausführbare Programm der neuen Version 140 und das ausführbare Programm der goldenen Version 160 in einer oder mehreren entsprechenden Datenverarbeitungseinheiten (nicht dargestellt) gehostet und/oder gespeichert werden. Das Programm 300 zum Lokalisieren von Defekten, der Compiler 113, der Debugger 115 und die EPT-APIs 117 können auf den Code der neuen Version 120, den Code der goldenen Version 130, das ausführbare Programm der neuen Version 140 und das ausführbare Programm der goldenen Version 160 zum Zweck des Datenaustauschs zugreifen.
  • 2 zeigt ein Beispiel für einen Prozeduraufruf von Anwendungsmodulen, die gemäß Ausführungsformen der vorliegenden Erfindung durch einen entsprechenden Index einer Eingangspunkttabelle (EPT) referenziert werden. Softwareanwendungen, z.B. das ausführbare Programm der neuen Version 140 und das ausführbare Programm der goldenen Version 160, umfassen mehrere Module mit einer oder mehreren Prozeduren, die das jeweilige Modul aufweisen. 2 umfasst die EPT 210, die Prozeduraufrufänderung 220 und die Modulliste 230. Die EPT (entry point table - Eingangspunkttabelle) 210 ist eine Programmierstruktur, die sich im Speicher der Datenverarbeitungseinheit 110 befindet und z.B. die Speicheradressen der Prozeduren der jeweiligen Module des ausführbaren Programms der neuen Version 140 umfasst. Die EPTs werden von EPT_APIs des Programms 300 zum Lokalisieren von Defekten nach der Installation kompilierter Programme des ausführbaren Programms der neuen Version 140 und des ausführbaren Programms der goldenen Version 160 erzeugt.
  • Die Speicheradressen der EPT 210 sind in 2 durch Text dargestellt, der die Prozeduren und das Modul, in dem die Prozedur enthalten ist, identifiziert, z.B. Prozedur 1 von Modul 1. Die EPT 210 verknüpft die jeweiligen Prozeduradressen im Speicher mit einer Indexnummer, z.B. Indexnummer „0“ für Prozedur 1 von Modul 1. Die EPT 210 umfasst in der Figur Prozedur 0 von Modul 1 bis Prozedur m von Modul N.
  • In Ausführungsformen der vorliegenden Erfindung wird bei einem Prozeduraufruf innerhalb des ausführbaren Programms der neuen Version 140, das unter der Steuerung des Debuggers 115 arbeitet, bei dem geänderten Prozeduraufruf die Indexnummer identifiziert, die der Speicheradresse der Prozedur entspricht. EPT-Tabellen werden von den EPT-APIs 117 sowohl für das ausführbare Programm der neuen Version 140 als auch für das ausführbare Programm der goldenen Version 160 erzeugt, wenn die jeweiligen Versionen in der Testumgebung unter Steuerung des Debuggers 115 installiert werden. Die EPT 210 ermöglicht Ersetzen einer entsprechenden Prozedur aus dem ausführbaren Programm der goldenen Version 160 in der EPT 210 des ausführbaren Programms der neuen Version 140, das das Programm 300 zum Lokalisieren von Defekten zum Lokalisieren von Defekten des ausführbaren Programms der neuen Version 140 verwendet.
  • Die Prozeduraufrufänderung 220 veranschaulicht eine Änderung eines Prozeduraufrufs, die Aufrufen einer Prozedur durch eine entsprechende Indexnummer ermöglicht. Die Prozeduraufrufänderung 220 umfasst Änderungen am Aufrufcode, sodass die Indexnummer der EPT 210 in den Prozeduraufrufcode aufgenommen wird. Die Struktur und die Verwendung von EPTs unterstützen das Ersetzen von Prozedurspeicheradressen der goldenen Version durch die Adressen des ausführbaren Programms der neuen Version 140 mit nur geringfügigen Änderungen in der Programmierung, wobei zur Vereinfachung der Änderungen eine automatische Ersetzungsfunktion genutzt werden kann.
  • Die Modulliste 230 veranschaulicht die Mehrzahl der Module, die einer Softwareanwendung zugehörig sind, z.B. das ausführbare Programm der neuen Version 140 und das ausführbare Programm der goldenen Version 160. In einigen Ausführungsformen der vorliegenden Erfindung veranlasst das Programm 300 zum Lokalisieren von Defekten die EPT-APIs 117 zum Erzeugen der EPT 210 als Reaktion auf Installieren des ausführbaren Programms der neuen Version 140 und des ausführbaren Programms der goldenen Version 160 in der Entwicklungstestumgebung unter der Steuerung des Debuggers 115. Die EPT 210 umfasst Indexnummern, die den jeweiligen Prozeduren der einzelnen Module der jeweiligen Programme entsprechen.
  • 3 ist ein Ablaufplan, der die Arbeitsschritte des Programms 300 zum Lokalisieren von Defekten darstellt, das in der verteilten Anwendungstestumgebung von 1 gemäß Ausführungsformen der vorliegenden Erfindung ausgeführt wird. In einigen Ausführungsformen lokalisiert das Programm 300 zum Lokalisieren von Defekten eine bestimmte Prozedur des Programms, in der ein Codefehler zu einem Defekt führt, der vom Debugger 115 der Datenverarbeitungseinheit 110 erkannt wird. Das Programm 300 zum Lokalisieren von Defekten führt auf der Grundlage der Indexnummern, die Modulprozeduren in den EPTs der ausführbaren Programme der goldenen und der neuen Version zugehörig sind, Ersetzungen der Speicheradressen des Prozedurcodes aus einer goldenen Version des ausführbaren Programmcodes (z.B. ausführbares Programm der goldenen Version 160) in einem entsprechenden ausführbaren Programmcode der neuen Version (z.B. ausführbares Programm der neuen Version 140) durch.
  • Das Programm 300 zum Lokalisieren von Defekten umfasst auch eine effiziente Methodik zum Auswählen des Modulsatzes, des einzelnen Moduls, des Prozedursatzes und der einzelnen Prozedur, um Defekte im Programmcode der neuen Version zu lokalisieren, und zwar auf der Grundlage eines Berechnens eines Prioritätswertes von Modulen und Prozeduren, was Ermitteln von Faktoren umfasst, die als möglicherweise mit dem Auftreten von Defekten in Zusammenhang stehend identifiziert wurden.
  • Das Programm 300 zum Lokalisieren von Defekten empfängt ein Programm der neuen Version und ein Programm der goldenen Version mit Änderungen an den Prozeduraufrufen (Schritt 310). Ausführungsformen der vorliegenden Erfindung umfassen Änderungen am Quellcode einer neuen Version eines Programms und einer goldenen Version des Programms, wobei die Prozeduraufrufe der Programmmodule durch Indexnummern ersetzt werden, die den Speicheradressen der Prozeduren der Module entsprechen. Die Programmierungsänderungen führen zu Prozeduraufrufen auf der Grundlage von Verweisen auf einen Index der Eingangspunkttabelle (EPT), der der Speicheradresse einer bestimmten Prozedur entspricht. In einigen Ausführungsformen wird die Änderung manuell durchgeführt. In anderen Ausführungsformen werden die Änderungen durch automatisiertes oder unterstütztes Ersetzen von Codeelementen vorgenommen. Das Programm 300 zum Lokalisieren von Defekten empfängt Quellcode mit durchgeführten Änderungen, die Prozeduraufrufe von EPTs für eine neue Version eines Programms und eine goldene Version des Programms ermöglichen.
  • Das Programm 300 zum Lokalisieren von Defekten empfängt zum Beispiel den Quellcode der neuen Version 120 und den Quellcode der goldenen Version 130. Der Quellcode der neuen Version 120 und der Quellcode der goldenen Version 130 wurden so geändert, dass die Prozeduraufrufe einen Verweis auf eine Indexnummer einer EPT für den jeweiligen Quellcode umfassen, wobei die Indexnummer einer Speicheradresse entspricht, an der die aufgerufene Prozedur gespeichert ist.
  • Das Programm 300 zum Lokalisieren von Defekten erzeugt EPTs für die Programme der neuen Version und der goldenen Version (Schritt 315). Das Programm 300 zum Lokalisieren von Defekten umfasst EPT-APIs, die als Reaktion auf Erkennen einer ausführbaren Version eines unter der Steuerung durch einen Debugger in eine Testumgebung geladenen Programms initiiert werden. Das Programm 300 zum Lokalisieren von Defekten erstellt über die EPT-APIs eine EPT als Datenstruktur, die eine Indexnummer mit der Speicheradresse einer Programmprozedur verknüpft. In einigen Ausführungsformen erhalten die EPT-APIs die Speicheradressen aller Prozeduren für alle Module der jeweiligen ausführbaren Programme (d.h. neue Version und goldene Version) und nehmen die Speicheradressen in die jeweilige EPT auf, die jeweils einer Indexnummer zugehörig sind.
  • Das Programm 300 zum Lokalisieren von Defekten erzeugt EPTs für das ausführbare Programm der neuen Version und das ausführbare Programm der goldenen Version, sodass die Indexnummern der Prozeduren in der EPT des Programms der goldenen Version mit den Indexnummern der entsprechenden Prozeduren in der EPT des Programms der neuen Version übereinstimmen, wodurch ein Ersetzen von ähnlichen Prozeduren möglich ist. Die zuvor vorgenommenen Änderungen am jeweiligen Quellcode der Programme der neuen Version und der goldenen Version ersetzen die direkten Prozeduraufrufe durch die jeweiligen Programme mit Indexnummern der EPTs, um die Speicheradressen der Prozeduren zu erhalten und die Programmschritte durchzuführen.
  • Das Programm 300 zum Lokalisieren von Defekten stellt zum Beispiel fest, dass das ausführbare Programm der neuen Version 140 und das ausführbare Programm der goldenen Version 160 in der verteilten Anwendungstestumgebung 100 unter der Kontrolle des Debuggers 115 installiert sind. Das Programm 300 zum Lokalisieren von Defekten initiiert die EPT-APIs 117, um EPTs für das ausführbare Programm der neuen Version 140 und das ausführbare Programm der goldenen Version 160 zu erstellen. Die EPT-APIs 117 erhalten die Speicheradressen der Prozeduren für die Module der jeweiligen Programme und nehmen die Speicheradressen in die jeweiligen EPTs auf. Der kompilierte Code des ausführbaren Programms der neuen Version 140 und des ausführbaren Programms der goldenen Version 160 umfasst die Änderungen, die die Prozeduraufrufe durch Indexnummern der jeweiligen EPT ersetzt haben, die der Speicheradresse der Prozedur entsprechen.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt Faktorgewichtungen und Prioritätswerte der jeweiligen Module und Prozeduren (Schritt 320). Das Programm 300 zum Lokalisieren von Defekten empfängt eine Eingabe, die Faktoren identifiziert, die zum wahrscheinlichen Auftreten eines Defekts in einem Modulsatz, einem Modul, einem Prozedursatz oder einer Prozedur beitragen. In beispielhaften Ausführungsformen kann das Programm 300 zum Lokalisieren von Defekten Gewichtungsfaktoren berechnen und auf entsprechende Module und Prozeduren des ausführbaren Programms der neuen Version, z.B. des ausführbaren Programms der neuen Version 140, anwenden.
  • Ausführungsformen der vorliegenden Erfindung sind nicht durch die Anzahl der berücksichtigten Faktoren begrenzt. Zu Faktoren, die einen Zusammenhang mit dem Auftreten von Defekten vermuten lassen, können beispielsweise Module und Prozeduren gehören, an denen zahlreiche Codeänderungen vorgenommen wurden, was häufig anhand einer Maßzahl für Codezeilenaktualisierungen, der Historie der Qualitätssicherung der Programmversion, die Module und Prozeduren identifiziert, in denen in der Vergangenheit Defekte aufgetreten sind, des Identifizierens von Modulen und Prozeduren, die in einem Aufrufstapel vorhanden sind, wenn der Defekt auftritt, und einer Häufigkeit, mit der Module und Prozeduren während des Programmablaufs aufgerufen werden, ermittelt wird.
  • Für jedes Modul und jede Prozedur werden die Anwendbarkeit und der Grad der Faktoren ermittelt, und für jeden der Faktoren wird eine Gewichtung berechnet und den jeweiligen Modulen und Prozeduren zugewiesen. Zum Berechnen eines Prioritätswerts für die jeweiligen Modulsätze, einzelnen Module, Prozedursätze und einzelnen Prozeduren des ausführbaren Programms der neuen Version können Methodiken zum Ermitteln der Gewichtung angewendet werden. Ein Beispiel für eine Methodik zum Ermitteln der Gewichtung ist das Entropie-Gewichtungsverfahren (entropy weight method - EWM); Ausführungsformen der vorliegenden Erfindung sind jedoch nicht auf einen Ansatz zum Ermitteln und Zuweisen von Gewichtungen zu Modulen und Prozeduren des ausführbaren Programms der neuen Version beschränkt.
  • Zu Faktoren, die als möglicherweise zum Auftreten eines oder mehrerer Defekte innerhalb eines Moduls oder einer Prozedur des ausführbaren Programms der neuen Version 140 beitragend betrachtet werden, gehören zum Beispiel: i) die Anzahl der Codezeilen, die innerhalb eines Moduls oder einer Prozedur geändert wurden, ii) die Qualitätssicherungshistorie früherer Defekte, die in Modulen und/oder Prozeduren gefunden wurden, iii) das Vorhandensein von Modulen und Prozeduren in einem Aufrufstapel beim Auftreten eines Defekts und iv) die Anzahl der Aufrufe eines bestimmten Moduls oder einer Prozedur. Die Faktoren erhalten jeweils eine Gewichtungsspanne, und die Gewichtungen für jedes Modul und jede Prozedur werden z.B. mit dem Entropie-Gewichtungsverfahren berechnet. Die berechnete Gewichtung stellt einen Prioritätswert bereit, der zum Auswählen von Modulsätzen (durch Kombinieren der gewichteten Werte der einzelnen Module des Modulsatzes), einzelnen Modulen, Prozedursätzen (durch Kombinieren der gewichteten Werte der einzelnen Prozeduren des Prozedursatzes) und einzelnen Prozeduren des ausführbaren Programms der neuen Version 140 verwendet wird.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt Aufrufsequenzen von Modulsätzen und Prozedursätzen auf der Grundlage von Aufrufbaum-Traces (Schritt 325). Das Programm 300 zum Lokalisieren von Defekten empfängt Informationen über den Modulaufrufbaum des ausführbaren Programms aus der Ausgabe eines Ablaufverfolgungstools, die auf das Programm der neuen Version angewendet wird. Durch das Verfolgen des Ablaufs des Modulaufrufbaums werden die Modulsätze von sequenziellen Modulaufrufen während des Ausführens des ausführbaren Programms der neuen Version bereitgestellt. Eine bestimmte Sequenz von Modulaufrufen definiert einen Modulsatz, und die Modulsätze werden für das ausführbare Programm der neuen Version ermittelt. Ein Modulsatz umfasst alle Prozeduren der einzelnen Module des Modulsatzes, die in einer bestimmten Sequenz durchgeführt werden. Das Ersetzen eines Modulsatzes umfasst Ersetzen aller Prozeduren aller Module des Modulsatzes.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt auch Prozedursätze auf der Grundlage des Prozeduraufrufbaums, der von Ablaufverfolgungstools ausgegeben wird, die auf das ausführbare Programm der neuen Version angewendet werden. Prozedursätze umfassen eine Sequenz der Prozeduraufrufe, wie sie im ausführbaren Programm der neuen Version durchgeführt werden. Jeder Prozedursatz umfasst eine oder mehrere einzelne Prozeduren, die in einer bestimmten Sequenz durchgeführt werden.
  • Das Programm 300 zum Lokalisieren von Defekten empfängt zum Beispiel eine Ausgabe von Ablaufverfolgungstools, die einen Modulaufrufbaum umfasst, der eine Aufrufsequenz anzeigt. Die Aufrufreihenfolge gibt an, welche Module in den jeweiligen Sätzen enthalten sind. In den vorgestellten Beispielen werden die Module durch „M“ und eine Nummer dargestellt. Das Ablaufverfolgungstool identifiziert die Modulsätze von M1; M2-M3-M10-M4; M8-M9-M10; M5-M10; M6, M7, M10 als Modulsätze für das ausführbare Programm der neuen Version 140. Das Programm 300 zum Lokalisieren von Defekten ermittelt auch Prozedursätze anhand eines von Ablaufverfolgungstools ausgegebenen Prozeduraufrufbaums für das ausführbare Programm der neuen Version 140.
  • Das Programm 300 zum Lokalisieren von Defekten ersetzt den Modulsatz mit dem Prioritätswert des ausführbaren Programms der neuen Version durch den entsprechenden Modulsatz aus dem ausführbaren Programm der goldenen Version (Schritt 330). Das Programm 300 zum Lokalisieren von Defekten verknüpft kumulativ die Prioritätswerte jedes Moduls der aus den empfangenen Modulaufrufbäumen ermittelten Modulsätze. Aus der Verknüpfung ergibt sich ein Gesamtprioritätswert für den jeweiligen Modulsatz. Das Programm 300 zum Lokalisieren von Defekten ermittelt den Modulsatz des ausführbaren Programms der neuen Version, der unter der Mehrzahl der Modulsätze den höchsten Prioritätswert hat, und ersetzt die Module des Modulsatzes mit dem höchsten Prioritätswert durch die entsprechenden Module aus dem ausführbaren Programm der goldenen Version. Das ausführbare Programm der goldenen Version wurde zuvor als frei von Defekten überprüft, sodass Ersetzen des Modulsatzes des ausführbaren Programms der goldenen Version durch den Modulsatz des ausführbaren Programms der neuen Version zum Beseitigen des Defekts führt, wenn sich der Defekt im ursprünglichen Modulsatz des ausführbaren Programms der neuen Version befindet. Das ausführbare Programm der neuen Version umfasst Ersetzen des Modulsatzes und wird in der Testumgebung ausgeführt.
  • Ausführungsformen der vorliegenden Erfindung ersetzen die Speicheradressen der Prozeduren, die Modulen in den jeweiligen EPTs zugehörig sind, durch das ausführbare Programm der neuen Version (im Folgenden einfach als Programm der neuen Version bezeichnet) und das ausführbare Programm der goldenen Version (im Folgenden einfach als Programm der goldenen Version bezeichnet). Zur Verdeutlichung der Merkmale von Ausführungsformen der vorliegenden Erfindung werden die vom Programm 300 zum Lokalisieren von Defekten vorgenommenen EPT-Ersetzungen als Ersetzen der Speicheradresse von Prozeduren in der EPT des Programms der neuen Version durch die EPT-Speicheradresse der entsprechenden Prozeduren des Programms der goldenen Version angesehen.
  • Zur Vereinfachung wird im Folgenden auf Ersetzungen dadurch Bezug genommen, dass der Term „Speicheradresse“ weggelassen wird und die Prozedurterme aufgenommen werden, da sich diese auf Prozedurersetzungen von Modulsätzen, einzelnen Modulen, Prozedursätzen und einzelnen Prozeduren des Programms der neuen Version, das den/die Defekt/e enthält, durch entsprechende Prozeduren aus dem Programm der goldenen Version, die frei von Defekten ist, beziehen. Die Prozeduren entsprechen einer Indexnummer der jeweiligen EPT, sodass die Prozedur des Programms der neuen Version, die dem Index 0 entspricht, wenn sie ersetzt wird, durch die EPT-Prozedur des Programms der goldenen Version, die demselben Index 0, entspricht, ersetzt oder ausgetauscht wird.
  • Das Programm 300 zum Lokalisieren von Defekten führt das Ersetzen durch, indem es die Prozeduren des Programms der neuen Version ersetzt, die in dem vom Programm 300 zum Lokalisieren von Defekten ermittelten Modulsatz mit dem höchsten Prioritätswert enthalten sind. Das Programm 300 zum Lokalisieren von Defekten ersetzt die Prozeduren des Modulsatzes des Programms der neuen Version durch die Prozeduren des gleichen Modulsatzes und der gleichen EPT-Indexnummer des Programms der goldenen Version. Das Programm 300 zum Lokalisieren von Defekten führt das Ersetzen der jeweiligen Programmprozeduren der goldenen Version an der entsprechenden Indexposition der EPT des Programms der neuen Version durch.
  • Das Programm 300 zum Lokalisieren von Defekten stellt beispielsweise fest, dass der Modulsatz M2-M3-M10-M4 den höchsten Prioritätswert von 2,3 aufweist, während die Prioritätswerte aller anderen Modulsätze unter 2,3 liegen. Das Programm 300 zum Lokalisieren von Defekten ersetzt die Prozeduren in den Modulen M2, M3, M10 und M4 des ausführbaren Programms der goldenen Version 160 in der EPT des ausführbaren Programms der neuen Version 140, wobei die Prozeduren für die Module M2, M3, M10 und M4 des ausführbaren Programms der neuen Version 140 durch defektfreie Prozeduren für die gleichen Module M2, M3, M10 und M4 aus dem ausführbaren Programm der goldenen Version 160 ersetzt werden.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt, ob der Defekt im Programm der neuen Version noch vorhanden ist (Entscheidungsschritt 335). Das Programm 300 zum Lokalisieren von Defekten ermittelt, ob das Programm der neuen Version mit einem ersetzten Modulsatz aus dem Programm der goldenen Version noch den Defekt aufweist. Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt immer noch vorhanden ist (Schritt 335, Verzweigung „JA“), kehrt das Programm 300 zum Lokalisieren von Defekten zu Schritt 330 zurück und ersetzt die Prozeduren des nächsten Modulsatzes mit dem nächsthöheren Prioritätswert des Programms der neuen Version durch die entsprechenden Prozeduren des nächsten Modulsatzes des Programms der goldenen Version (Schritt 330) und verfährt wie oben beschrieben. Die Schritte 335 und 330 werden so lange wiederholt, bis ein Modulsatzersetzen dazu führt, dass der Defekt nicht mehr auftritt, was bedeutet, dass sich der Defekt im Code eines der Module des Modulsatzes befindet.
  • Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt nicht mehr vorhanden ist (Schritt 335, Verzweigung „NEIN“), ersetzt das Programm 300 zum Lokalisieren von Defekten das prioritäre Modul des Modulsatzes der neuen Version durch das entsprechende Modul der goldenen Version (Schritt 340). Das Programm 300 zum Lokalisieren von Defekten identifiziert den ersetzten Modulsatz des Programms der neuen Version als den defekten Code enthaltend, der im Folgenden als „identifizierter Modulsatz“ bezeichnet wird. Das Programm 300 zum Lokalisieren von Defekten ersetzt das Modul mit dem höchsten Prioritätswert des identifizierten Modulsatzes des Programms der neuen Version durch das entsprechende Modul der goldenen Version (Schritt 340).
  • In einigen Ausführungsformen setzt das Programm 300 zum Lokalisieren von Defekten die EPT des Programms der neuen Version mit den ursprünglichen Prozeduren für die Module des identifizierten Modulsatzes zurück, die durch die entsprechenden Prozeduren der goldenen Version ersetzt wurden. Das Programm 300 zum Lokalisieren von Defekten ermittelt das bestimmte Modul des identifizierten Modulsatzes, das den höchsten Prioritätswert hat, und ersetzt die EPT-Prozeduren des bestimmten Moduls im Programm der neuen Version durch die Prozeduren des entsprechenden Moduls im Programm der goldenen Version.
  • Ausführungsformen der vorliegenden Erfindung berücksichtigen, dass der Defekt alternativ auch dadurch lokalisiert werden kann, dass die Modulsätze, Module, Prozedursätze und Prozeduren aus der EPT des Programms der neuen Version in der EPT des Programms der goldenen Version ersetzt werden, wobei das Programm der goldenen Version mit ersetzten Prozeduren kompiliert und das Vorhandensein des Defekts geprüft wird. Die alternative Ausführungsform identifiziert das Modul im Modulsatz, in dem sich der defekte Code befindet, indem die ursprünglichen Prozeduren des Programms der neuen Version für das Modul mit dem höchsten Prioritätswert wiederhergestellt werden und ermittelt wird, ob der Defekt zurückkehrt. Die nachfolgenden Beschreibungen des Programms 300 zum Lokalisieren von Defekten gehen davon aus, dass die ursprünglichen Prozeduren des Programms der neuen Version vor den nachfolgenden Ersetzungen zurückgesetzt werden; Ausführungsformen der vorliegenden Erfindung berücksichtigen jedoch, dass Identifizieren von Modulen, Prozedursätzen und Prozeduren, die einen Code umfassen, der zu einem Defekt führt, auch dadurch erfolgen kann, dass Prozeduren des Programms der neuen Version aus der EPT des Programms der neuen Version in der EPT des Codes der goldenen Version ersetzt werden und ermittelt wird, ob der Defekt auftritt.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt, ob der Defekt noch vorhanden ist (Entscheidungsschritt 345). Das Programm 300 zum Lokalisieren von Defekten ermittelt, ob der Defekt noch vorhanden ist, nachdem die Prozeduren eines bekanntermaßen defektfreien Moduls aus der EPT des Programms der goldenen Version durch entsprechende Prozeduren der EPT des Programms der neuen Version ersetzt wurden. Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt immer noch vorhanden ist (Schritt 345, Verzweigung „JA“), kehrt das Programm 300 zum Lokalisieren von Defekten zu Schritt 340 zurück und ersetzt das Modul mit dem nächsthöheren Prioritätswert der Module im zuvor identifizierten Modulsatz (Schritt 340) und verfährt wie oben beschrieben, indem es Ersetzungen durch die Prozeduren des Moduls mit dem nächsthöheren Prioritätswert wiederholt, bis der Defekt nicht mehr vorhanden ist.
  • Das Programm 300 zum Lokalisieren von Defekten stellt zum Beispiel fest, dass das Modul zwei (M2) den höchsten Prioritätswert der im identifizierten Modulsatz enthaltenen Module aufweist. Das Programm 300 zum Lokalisieren von Defekten ersetzt die Prozeduren des Moduls 2 aus der EPT des Programms der goldenen Version in der EPT des Programms der neuen Version und führt das Programm der neuen Version mit den ersetzten Prozeduren aus, wobei geprüft wird, ob der Defekt vorhanden ist. Bleibt der Defekt bestehen, ersetzt das Programm 300 zum Lokalisieren von Defekten die Prozeduren des Moduls mit dem nächsthöheren Prioritätswert des identifizierten Modulsatzes, führt das Programm der neuen Version mit den ersetzten Prozeduren aus und überprüft, ob der Defekt noch vorhanden ist.
  • Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt nicht mehr vorhanden ist (Schritt 345, Verzweigung „NEIN“), ersetzt das Programm 300 zum Lokalisieren von Defekten den Prozedursatz des identifizierten Moduls der neuen Version, der den höchsten Prioritätswert aufweist, durch den entsprechenden Prozedursatz der goldenen Version (Schritt 350). Die Prozedursätze des Programms der neuen Version wurden mithilfe von Ablaufverfolgungstools ermittelt, die Prozeduraufrufbäume für das Programm der neuen Version erzeugen. Das Programm 300 zum Lokalisieren von Defekten ermittelt den Prozedursatz des identifizierten Moduls im Programm der neuen Version, der den höchsten Prioritätswert hat, wie durch den kumulativen Prioritätswert der einzelnen Prozeduren des Prozedursatzes ermittelt. Das Programm 300 zum Lokalisieren von Defekten ersetzt die Prozeduren, die dem Prozedursatz des Programms der neuen Version entsprechen, der den höchsten Prioritätswert aufweist, aus der EPT des Programms der goldenen Version im entsprechenden Index der EPT des Programms der neuen Version.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt beispielsweise das identifizierte Modul des Programms der neuen Version, das den Defekt enthält. Das Programm 300 zum Lokalisieren von Defekten identifiziert die Prozedursätze des identifizierten Moduls aus dem Prozeduraufrufbaum, der von Ablaufverfolgungstools für das ausführbare Programm der neuen Version 140 erstellt wurde. Das Programm 300 zum Lokalisieren von Defekten stellt fest, dass eine Sequenz von Prozeduren (P), die durch eine Sequenz von Prozedurnummern identifiziert wird, die den höchsten Prioritätswert aufweist, P6-P7-P10-P5-P8-P9-P5 ist. Das Programm 300 zum Lokalisieren von Defekten ersetzt die Prozeduren P6-P7-P10-P5-P8-P9-P5 aus der EPT des ausführbaren Programms der goldenen Version 160 durch die entsprechenden Prozeduren in der EPT des ausführbaren Programms der neuen Version 140.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt, ob der Defekt noch vorhanden ist (Entscheidungsschritt 355). Das Programm 300 zum Lokalisieren von Defekten führt das Programm der neuen Version mit den ersetzten Prozeduren für das identifizierte Modul aus und ermittelt, ob der Defekt noch vorhanden ist. Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt noch vorhanden ist (Schritt 355, Verzweigung „JA“), kehrt das Programm 300 zum Lokalisieren von Defekten zu Schritt 350 zurück und ersetzt die Prozedur mit dem nächsthöheren Prioritätswert des zuvor identifizierten Moduls (Schritt 350) und fährt fort wie oben beschrieben.
  • Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt nicht mehr vorhanden ist (Schritt 355, Verzweigung „NEIN“), ersetzt das Programm 300 zum Lokalisieren von Defekten die prioritäre Prozedur des identifizierten Prozedursatzes des Programms der neuen Version durch die entsprechende Prozedur des Programms der goldenen Version (Schritt 360). Das Programm 300 zum Lokalisieren von Defekten ermittelt die Prioritätswerte der Prozeduren innerhalb des identifizierten Prozedursatzes und wählt die Prozedur mit dem höchsten Prioritätswert aus und ersetzt die entsprechende Prozedur der goldenen Version aus der EPT des Programms der goldenen Version in der EPT des Programms der neuen Version. Das Programm 300 zum Lokalisieren von Defekten prüft, ob der Defekt nach Kompilieren und Ausführen des Programms der neuen Version mit der ersetzten Prozedur noch vorhanden ist.
  • Das Programm 300 zum Lokalisieren von Defekten stellt beispielsweise fest, dass der Prozedursatz mit dem nächsthöheren Prioritätswert den defekten Code enthält. Der identifizierte Prozedursatz umfasst die Prozeduren P1, P2, P3 und P5. Das Programm 300 zum Lokalisieren von Defekten stellt fest, dass die Prozedur zwei (P2) den höchsten Prioritätswert aufweist, und ersetzt die Prozedur zwei aus der EPT des Programms der goldenen Version in den Positionen der Prozedur zwei der EPT des Programms der neuen Version. Das Programm der neuen Version wird ausgeführt, und das Programm 300 zum Lokalisieren von Defekten prüft, ob der Defekt noch vorhanden ist.
  • Das Programm 300 zum Lokalisieren von Defekten ermittelt, ob der Defekt noch vorhanden ist (Entscheidungsschritt 365). Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt noch vorhanden ist (Schritt 365, Verzweigung „JA“), kehrt das Programm 300 zum Lokalisieren von Defekten zu Schritt 360 zurück und wählt die Prozedur des identifizierten Prozedursatzes mit dem nächsthöheren Prioritätswert aus und ersetzt die Prozedur der goldenen Version aus der EPT des Programms der goldenen Version, die der Prozedur in der EPT des Programms der neuen Version mit dem nächsthöheren Prioritätswert entspricht, und fährt fort wie oben beschrieben.
  • Für den Fall, dass das Programm 300 zum Lokalisieren von Defekten feststellt, dass der Defekt nicht mehr vorhanden ist, legt das Programm 300 zum Lokalisieren von Defekten die Kennung der Prozedur des Programms der neuen Version mit dem Defekt vor (Schritt 370). Das Programm 300 zum Lokalisieren von Defekten identifiziert die einzelne Prozedurersetzung, die das Auftreten des Defekts im Programm der neuen Version beseitigt hat. In einigen Ausführungsformen kann das Programm 300 zum Lokalisieren von Defekten eine detaillierte Ersetzungshistorie bereitstellen, in der die endgültige Prozedurersetzung hervorgehoben wird, um den Ort des fehlerhaften Codes zu identifizieren und die Fehlersuche durch den Entwickler zu verbessern. In einigen Ausführungsformen kann das Programm 300 zum Lokalisieren von Defekten eine Warnung oder Benachrichtigung ausgeben, die auf einer Benutzeroberfläche der Datenverarbeitungseinheit 110 angezeigt wird. Durch Anwenden von Prioritätswerten auf Module und Prozeduren im Programm der neuen Version auf der Grundlage von Faktorgewichtungstechniken stellt das Programm 300 zum Lokalisieren von Defekten eine technologische Verbesserung bei der Fehlersuche in Aktualisierungen und neuen Versionen von bestehendem Programmcode bereit, indem es wirksam und effizient die Prozedur lokalisiert, in der defekter Code gefunden wird, und vermeidet, dass zu viele Schritte beim Ersetzen, Neukompilieren und Überprüfen auf das Vorhandensein des Defekts ausgeführt werden.
  • Nachdem der Defekt in einer einzelnen Prozedur des Programms der neuen Version lokalisiert wurde, endet das Programm 300 zum Lokalisieren von Defekten.
  • 4 zeigt einen Blockschaltplan der Komponenten des Datenverarbeitungssystems 400, darunter die Datenverarbeitungseinheit 405, die so konfiguriert ist, dass sie die in 1 dargestellten Komponenten umfasst oder funktionsmäßig mit ihnen verbunden ist, und das in der Lage ist, das Programm 300 zum Lokalisieren von Defekten aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung funktionsmäßig auszuführen.
  • Die Datenverarbeitungseinheit 405 umfasst Komponenten und Funktionsfähigkeiten, die gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung denen der Datenverarbeitungseinheit 110 (1) ähnlich sind. Es sei darauf hingewiesen, dass 4 nur eine beispielhafte Implementierung bereitstellt und keine Einschränkungen in Bezug auf die Umgebungen impliziert, in denen verschiedene Ausführungsformen implementiert werden können. An der dargestellten Umgebung können zahlreiche Änderungen vorgenommen werden.
  • Die Datenverarbeitungseinheit 405 umfasst die Datenübertragungsstruktur 402, die Datenübertragungen zwischen einem oder mehreren Computerprozessoren 404, dem Speicher 406, dem permanenten Speicher 408, der Datenübertragungseinheit 410 und einer oder mehreren Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 412 bereitstellt. Die Datenübertragungsstruktur 402 kann mit einer beliebigen Architektur umgesetzt werden, die zum Übertragen von Daten und/oder Steuern von Informationen zwischen Prozessoren (wie beispielsweise Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), dem Systemspeicher, Peripherieeinheiten und einer beliebigen anderen Hardware-Komponente in einem System entworfen wurde. Die Datenübertragungsstruktur 402 kann zum Beispiel mit einem oder mehreren Bussen umgesetzt werden.
  • Bei dem Speicher 406, dem Cache 416 und dem permanenten Speicher 408 handelt es sich um durch einen Computer lesbare Speichermedien. In dieser Ausführungsform enthält der Speicher 406 den Direktzugriffsspeicher (RAM) 414. Im Allgemeinen kann der Speicher 406 jedes geeignete flüchtige oder nichtflüchtige, durch einen Computer lesbare Speichermedium enthalten.
  • In einer Ausführungsform wird das Programm 300 zum Lokalisieren von Defekten im permanenten Speicher 408 gespeichert, um von einem oder mehreren der jeweiligen Computerprozessoren 404 über einen oder mehrere Speicher des Speichers 406 ausgeführt zu werden. In dieser Ausführungsform enthält der permanente Speicher 408 ein magnetisches Festplattenlaufwerk. Alternativ oder zusätzlich zu einem magnetischen Festplattenlaufwerk kann der permanente Speicher 408 einen Halbleiterdatenträger, eine Halbleiterspeichereinheit, einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einen Flash-Speicher und beliebige andere durch einen Computer lesbare Speichermedien enthalten, die Programmanweisungen oder digitale Informationen speichern können.
  • Die vom permanenten Speicher 408 verwendeten Medien können auch wechselbar sein. Für den permanenten Speicher 408 kann beispielsweise eine wechselbare Festplatte verwendet werden. Zu anderen Beispielen gehören optische und magnetische Platten, USB-Speichersticks und Chipkarten, die für die Übertragung auf ein anderes durch einen Computer lesbares Speichermedium, das ebenfalls Teil des permanenten Speichers 408 ist, in einen Datenträger eingesteckt werden.
  • Die Datenübertragungseinheit 410 stellt in diesen Beispielen Datenübertragungen mit anderen Datenverarbeitungssystemen oder-einheiten bereit, darunter die Ressourcen der verteilten Datenverarbeitungsumgebung 100. In diesen Beispielen enthält die Datenübertragungseinheit 410 eine oder mehrere Netzwerkschnittstellenkarten. Die Datenübertragungseinheit 410 kann Datenübertragungen über physische und drahtlose Datenübertragungsverbindungen bereitstellen, und zwar über eine von beiden oder aber über beide. Das Programm 300 zum Lokalisieren von Defekten kann über die Datenübertragungseinheit 410 in den permanenten Speicher 408 heruntergeladen werden.
  • Die E/A-Schnittstelle(n) 412 ermöglicht/ermöglichen eine Ein- und Ausgabe von Daten in Verbindung mit anderen Einheiten, die mit dem Datenverarbeitungssystem 400 verbunden sein können. So kann beispielsweise die E/A-Schnittstelle 412 eine Verbindung zu den externen Einheiten 418 wie beispielsweise einer Tastatur, einem Tastenfeld, einem Touchscreen und/oder einer anderen geeigneten Eingabeeinheit bereitstellen. Die externen Einheiten 418 können auch tragbare, durch einen Computer lesbare Speichermedien wie z.B. USB-Speichersticks, tragbare optische oder magnetische Platten und Speicherkarten umfassen. Software und Daten, die zum Ausführen von Ausführungsformen der vorliegenden Erfindung verwendet werden, z.B. das Programm 300 zum Lokalisieren von Defekten, können auf solchen tragbaren, durch einen Computer lesbare Speichermedien gespeichert und über die E/A-Schnittstelle(n) 412 in den permanenten Speicher 408 geladen werden. Die E/A-Schnittstelle(n) 412 ist/sind auch mit einer Anzeige 420 verbunden.
  • Die Anzeige 420 stellt einen Mechanismus bereit, um einem Benutzer Daten anzuzeigen, dabei kann es sich zum Beispiel um einen Computermonitor handeln.
  • Die hierin beschriebenen Programme werden auf Grundlage der Anmeldung identifiziert, für die sie in einer bestimmten Ausführungsform der Erfindung umgesetzt werden. Es ist jedoch zu beachten, dass eine bestimmte Programmnomenklatur hierin nur aus Gründen der Zweckmäßigkeit verwendet wird, daher sollte die Erfindung nicht darauf beschränkt sein, nur in einer bestimmten Anwendung verwendet zu werden, die durch diese Nomenklatur bezeichnet und/oder impliziert wird.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jedem möglichen technischen Detaillierungsgrad der Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o. ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hier unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder den anderen Einheiten zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit als ein Schritt ausgeführt, gleichzeitig ausgeführt, im Wesentlich gleichzeitig ausgeführt, ganz oder teilweise zeitlich überlappend ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.

Claims (20)

  1. Verfahren zum Lokalisieren eines Defekts in einer neuen Version eines Softwareprogramms, wobei das Verfahren aufweist: Empfangen, durch einen oder mehrere Prozessoren, des Quellcodes eines Programms der goldenen Version und des Quellcodes eines Programms der nächsten Version, die beide so modifiziert wurden, dass sie Prozeduraufrufe innerhalb der jeweiligen Programme an Indexnummern in einer Eingangspunkttabelle (EPT) leiten, wobei jede Indexnummer einer jeweiligen Prozedurspeicheradresse entspricht; Empfangen einer ausführbaren Form des Programms der nächsten Version und einer ausführbaren Form des Programms der goldenen Version durch den einen oder mehrere Prozessoren, wobei das Programm der nächsten Version mindestens einen Defekt enthält und das Programm der goldenen Version defektfrei ist; Erzeugen einer ersten Eingangspunkttabelle (erste EPT) für das Programm der neuen Version und einer zweiten Eingangspunkttabelle (zweite EPT) für das Programm der goldenen Version durch den einen oder mehrere Prozessoren; Durchführen einer Reihe von Ersetzungen von Prozedursätzen zwischen der zweiten EPT des Programms der goldenen Version und der ersten EPT des Programms der neuen Version durch den einen oder mehrere Prozessoren, wobei die ersetzten Prozeduren jeweils durch übereinstimmende Indexnummern in entsprechenden Eingangspunkttabellen identifiziert werden; und Identifizieren einer einzelnen Prozedur, bei der ermittelt wurde, dass sie den Defekt erzeugt, durch den einen oder mehrere Prozessoren, indem ein Ersetzen durchgeführt wird, bis eine Änderung des Vorhandenseins des Defekts ermittelt wird, und andernfalls Fortfahren zu einem nächsten Ersetzen.
  2. Verfahren nach Anspruch 1, wobei es sich bei dem Programm der neuen Version um ein nächstes nachfolgendes Programm handelt, das ausgehend von dem Programm der goldenen Version aktualisiert wurde.
  3. Verfahren nach Anspruch 1, wobei eine Indexnummer einer Prozedur der zweiten EPT einer gleichen Indexnummer einer ähnlichen Prozedur der ersten EPT entspricht und die Prozeduren der Module der ersten EPT Prozeduren und Modulen der zweiten EPT entsprechen und entsprechende Indexnummern umfassen.
  4. Verfahren nach Anspruch 1, wobei die erste EPT und die zweite EPT auf der Grundlage einer EPT-Anwendungsprogrammierschnittstelle (API) erzeugt werden, die eine Installation des Programms der neuen Version und des Programms der goldenen Version in einer Testumgebung erkennt.
  5. Verfahren nach Anspruch 1, wobei die Prozedursätze des Programms der neuen Version ermittelt werden, indem ein Sequenzbaum von Modulen und ein Sequenzbaum von Prozeduren, die in den jeweiligen Modulen enthalten sind, von einem Ablaufverfolgungstool empfangen werden.
  6. Verfahren nach Anspruch 1, wobei es sich bei den Ersetzungen der Prozedursätze um Prozeduren von der zweiten EPT des Programms der goldenen Version in die erste EPT des Programms der neuen Version handelt, und das Programm der neuen Version ausgeführt wird, um zu ermitteln, ob der Defekt nicht mehr beobachtet wird.
  7. Verfahren nach Anspruch 1, wobei es sich bei den Ersetzungen der Prozedursätze um Prozeduren von der ersten EPT des Programms der neuen Version in die zweite EPT des Programms der goldenen Version handelt, und das Programm der goldenen Version ausgeführt wird, um zu ermitteln, ob der Defekt auftritt.
  8. Verfahren nach Anspruch 1, das weiterhin aufweist: Zuweisen einer Prioritätsgewichtung durch den einen oder mehrere Prozessoren auf der Grundlage eines oder mehrerer Faktoren, die einem möglichen Auftreten des Defekts zugehörig sind; und Durchführen eines Auswählens von Modulen und Prozeduren durch den einen oder mehrere Prozessoren in einer Ersetzungsreihenfolge durch Auswählen entsprechender Module und Prozeduren auf der Grundlage der Prioritätsgewichtung.
  9. Verfahren nach Anspruch 1, wobei die Reihe von Ersetzungen von Prozeduren eine Reihenfolge eines Modulsatzes, eines einzelnen Moduls des Modulsatzes, eines Prozedursatzes des einzelnen Moduls und einer einzelnen Prozedur des Prozedursatzes umfasst.
  10. Verfahren für eine Ersetzungsreihenfolge von Prozeduren eines Programms einer neuen Version, das einen Defekt erzeugt, wobei das Verfahren aufweist: Ermitteln von Faktoren durch einen oder mehrere Prozessoren, die einem Programm einer neuen Version zugehörig sind und mit dem Auftreten eines Defekts in Zusammenhang stehen; Ermitteln eines Ersetzungsprioritätswerts für jeweilige Module und jeweilige Prozeduren der jeweiligen Module des Programms der neuen Version durch den einen oder mehrere Prozessoren auf der Grundlage einer Gewichtung der Faktoren, die den jeweiligen Modulen und den jeweiligen Prozeduren zugewiesen sind; Empfangen eines Modulaufrufbaums und eines Prozeduraufrufbaums des Programms der neuen Version durch den einen oder mehrere Prozessoren; Ersetzen von Komponenten aus einem Programm einer goldenen Version, das defektfrei ist, durch einen oder mehrere durch einen Aufrufbaum identifizierter Modulsätze im Programm der neuen Version durch den einen oder mehrere Prozessoren, bis der Defekt nicht mehr vorhanden ist; Ersetzen einzelner Module des Modulsatzes, die aus dem Programm der goldenen Version ein defektfreies Ergebnis erzeugt haben, durch den einen oder mehrere Prozessoren in einer ursprünglichen Instanz des Programms der neuen Version, bis der Defekt nicht mehr vorhanden ist; Ersetzen von Prozedursätzen des einzelnen Moduls, das aus dem Programm der goldenen Version ein defektfreies Ergebnis erzeugt hat, durch den einen oder mehrere Prozessoren in der ursprünglichen Instanz des Programms der neuen Version, bis der Defekt nicht mehr vorhanden ist; Ersetzen einzelner Prozeduren des Prozedursatzes, die aus dem Programm der goldenen Version ein defektfreies Ergebnis erzeugt haben, durch den einen oder mehrere Prozessoren in der ursprünglichen Instanz des Programms der neuen Version, bis der Defekt nicht mehr vorhanden ist; und wobei Ersetzen von Auswahlen auf der Grundlage einer Ersetzungsreihenfolge vom höchsten Prioritätswert zum niedrigsten Prioritätswert erfolgt; Identifizieren der Prozedur aus dem Prozedursatz, die den Defekt erzeugt.
  11. Verfahren nach Anspruch 10, wobei der Modulaufrufbaum und der Prozeduraufrufbaum, der empfangen wird, durch ein Programmablaufverfolgungstool erzeugt wird.
  12. Verfahren nach Anspruch 10, das weiterhin aufweist: Ermitteln der Faktoren, die zum Auftreten des Defekts beitragen, durch den einen oder mehrere Prozessoren; Ermitteln der Gewichtung jedes Faktors für jedes Modul und jede Prozedur durch den einen oder mehrere Prozessoren; Ermitteln des Prioritätswertes durch den einen oder mehrere Prozessoren durch Summieren der Gewichtungen jedes Faktors für die jeweiligen Module und die jeweiligen Prozeduren; und Ermitteln des Prioritätswertes des Modulsatzes und des Prozedursatzes durch den einen oder mehrere Prozessoren durch Summieren von Prioritätswerten einzelner Module des Modulsatzes und von Prioritätswerten einzelner Prozeduren des Prozedursatzes.
  13. Verfahren nach Anspruch 10, wobei die Faktoren, die den jeweiligen Modulen und den jeweiligen Prozeduren der jeweiligen Module des Programms der neuen Version zugehörig sind, eine Komponente oder eine Kombination aus Komponenten umfassen, die aus einer Gruppe ausgewählt wurden, die besteht aus: einer Anzahl geänderter Codezeilen; einer Anzahl von Instanzen von Defekten, die aus der Programmhistorie ermittelt wurden; einem Vorhandensein innerhalb eines Aufrufstapels beim Auftreten des Defekts; und einer Anzahl von Instanzen, in denen eine Prozedur von anderen Prozeduren aufgerufen wird.
  14. Verfahren nach Anspruch 10, wobei die bei einem Ermitteln der Prioritätswerte für Module und Prozeduren des Programms der neuen Version verwendeten Gewichtungen mithilfe eines Entropie-Gewichtungsverfahrens erzeugt werden.
  15. Verfahren nach Anspruch 10, wobei der Modulaufrufbaum und der Prozeduraufrufbaum eine Reihenfolge angeben, in der die jeweiligen Module und die jeweiligen Prozeduren der jeweiligen Module während des Ausführens des Programms der neuen Version aufgerufen werden.
  16. Computersystem zum Lokalisieren eines Defekts in einer neuen Version eines Softwareprogramms, wobei das Computersystem aufweist: einen oder mehrere Computerprozessoren; ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen, die auf dem einen oder mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisungen aufweisen: Programmanweisungen zum Empfangen des Quellcodes eines Programms der goldenen Version und des Quellcodes eines Programms der nächsten Version, die so modifiziert wurden, dass sie Prozeduraufrufe innerhalb der jeweiligen Programme an Indexnummern in einer Eingangspunkttabelle (EPT) leiten, wobei jede Indexnummer einer jeweiligen Prozedurspeicheradresse entspricht; Programmanweisungen zum Empfangen einer ausführbaren Form des Programms der nächsten Version und einer ausführbaren Form des Programms der goldenen Version, wobei das Programm der nächsten Version mindestens einen Defekt enthält und das Programm der goldenen Version defektfrei ist; Programmanweisungen zum Erzeugen einer ersten Eingangspunkttabelle (erste EPT) für das Programm der neuen Version und einer zweiten Eingangspunkttabelle (zweite EPT) für das Programm der goldenen Version; Programmanweisungen zum Durchführen einer Reihe von Ersetzungen von Prozedursätzen zwischen der zweiten EPT des Programms der goldenen Version und der ersten EPT des Programms der neuen Version, wobei die ersetzten Prozeduren jeweils durch übereinstimmende Indexnummern in entsprechenden Eingangspunkttabellen identifiziert werden; und Programmanweisungen zum Identifizieren einer einzelnen Prozedur, bei der festgestellt wurde, dass sie den Defekt erzeugt, indem eine Ersetzung durchgeführt wird, bis eine Änderung des Vorhandenseins des Defekts ermittelt wird, und andernfalls Fortfahren zu einer nächsten Ersetzung.
  17. Computersystem nach Anspruch 16, wobei die Prozedursätze des Programms der neuen Version durch Programmanweisungen ermittelt werden, um eine Modulaufrufbaumsequenz und eine Prozeduraufrufbaumsequenz von Prozeduren, die in entsprechenden Modulen enthalten sind, von einem Ablaufverfolgungstool zu empfangen.
  18. Computersystem nach Anspruch 16, das weiterhin aufweist: Programmanweisungen zum Zuweisen einer Prioritätsgewichtung auf der Grundlage eines oder mehrerer Faktoren, die einem möglichen Auftreten des Defekts zugehörig sind; und Programmanweisungen zum Durchführen eines Auswählens von Modulen und Prozeduren in einer Ersetzungsreihenfolge durch Auswählen entsprechender Module und Prozeduren auf der Grundlage der Prioritätsgewichtung.
  19. Computersystem nach Anspruch 16, wobei die Reihe von Ersetzungen von Prozeduren eine Reihenfolge eines Modulsatzes, eines einzelnen Moduls des Modulsatzes, eines Prozedursatzes des einzelnen Moduls und einer einzelnen Prozedur des Prozedursatzes umfasst.
  20. Computersystem nach Anspruch 16, das weiterhin Programmanweisungen aufweist, die auf dem durch einen Computer lesbaren Speichermedien zum Ausführen durch mindestens einen des einen oder der mehreren Prozessoren gespeichert sind, um: Faktoren zu ermitteln, die dem Programm der neuen Version zugehörig sind und mit dem Auftreten des Defekts in Zusammenhang stehen; einen Ersetzungsprioritätswert für jeweilige Module und jeweilige Prozeduren der jeweiligen Module des Programms der neuen Version auf der Grundlage einer Gewichtung der Faktoren zu ermitteln, die den jeweiligen Modulen und den jeweiligen Prozeduren der jeweiligen Module zugewiesen sind; einen Modulaufrufbaum und einen Prozeduraufrufbaum des Programms der neuen Version zu empfangen; einen oder mehrere Modulsätze aus dem Programm der goldenen Version, der bzw. die durch einen Modulaufrufbaum identifiziert wurde(n), im Programm der neuen Version zu ersetzen, bis der Defekt nicht mehr vorhanden ist; in einer ursprünglichen Instanz des Programms der neuen Version einzelne Module des Modulsatzes, die aus dem Programm der goldenen Version ein defektfreies Ergebnis erzeugt haben, zu ersetzen, bis der Defekt nicht mehr vorhanden ist; in einer ursprünglichen Instanz des Programms der neuen Version Prozedursätze des einzelnen Moduls, die aus dem Programm der goldenen Version das defektfreie Ergebnis erzeugt haben, zu ersetzen, bis der Defekt nicht mehr vorhanden ist; in einer ursprünglichen Instanz des Programms der neuen Version einzelne Prozeduren des Prozedursatzes, die aus dem Programm der goldenen Version das defektfreie Ergebnis erzeugt haben, zu ersetzen, bis der Defekt nicht mehr vorhanden ist; wobei Ersetzen von Auswahlen auf der Grundlage einer Ersetzungsreihenfolge vom höchsten Prioritätswert zum niedrigsten Prioritätswert erfolgt; und Identifizieren der Prozedur aus dem Prozedursatz, die den Defekt erzeugt.
DE102021128521.6A 2020-12-03 2021-11-03 Effiziente defektlokalisierung in neuen codeversionen Pending DE102021128521A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/111,260 US11288041B1 (en) 2020-12-03 2020-12-03 Efficient defect location in new code versions
US17/111,260 2020-12-03

Publications (1)

Publication Number Publication Date
DE102021128521A1 true DE102021128521A1 (de) 2022-06-09

Family

ID=79163987

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021128521.6A Pending DE102021128521A1 (de) 2020-12-03 2021-11-03 Effiziente defektlokalisierung in neuen codeversionen

Country Status (4)

Country Link
US (2) US11288041B1 (de)
JP (1) JP2022089180A (de)
DE (1) DE102021128521A1 (de)
GB (1) GB2603259A (de)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016474A (en) * 1995-09-11 2000-01-18 Compaq Computer Corporation Tool and method for diagnosing and correcting errors in a computer program
US6634026B1 (en) * 1999-06-10 2003-10-14 General Electric Company Method and apparatus for correcting common errors in multiple versions of a computer program
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US7325227B2 (en) * 2003-11-12 2008-01-29 Siemens Product Lifecycle Management Software System, method, and computer program product for identifying code development errors
US7281243B2 (en) * 2003-12-29 2007-10-09 Intel Corporation System and method to enable seamless diffusion of platform-based optimized routines via a network
US7640532B2 (en) * 2004-08-25 2009-12-29 International Business Machines Corporation Mapping software code to business logic
US7530056B1 (en) * 2008-03-31 2009-05-05 International Business Machines Corporation Method and system for detecting runtime defects in a program by comparing correct and incorrect runs
US8572580B2 (en) * 2008-07-28 2013-10-29 Microsoft Corporation Computer application packages with customizations
CN102446134B (zh) * 2010-10-13 2015-04-08 无锡江南计算技术研究所 一种实现编译器错误的自动定位方法和装置
US8473484B2 (en) * 2011-06-01 2013-06-25 International Business Machines Corporation Identifying impact of installing a database patch
US20170212829A1 (en) 2016-01-21 2017-07-27 American Software Safety Reliability Company Deep Learning Source Code Analyzer and Repairer
CN106446691B (zh) 2016-11-24 2019-07-05 工业和信息化部电信研究院 检测软件中集成或定制的开源项目漏洞的方法和装置
CN109388551A (zh) 2017-08-07 2019-02-26 北京京东尚科信息技术有限公司 预测代码存在漏洞概率的方法、漏洞检测方法、相关装置
US10459695B2 (en) * 2017-10-05 2019-10-29 Sap Se Correction of code errors using machine learning
US10642716B1 (en) 2019-02-07 2020-05-05 Fujitsu Limited Automated software program repair

Also Published As

Publication number Publication date
US11288041B1 (en) 2022-03-29
US20220179623A1 (en) 2022-06-09
JP2022089180A (ja) 2022-06-15
GB202116632D0 (en) 2022-01-05
US11645045B2 (en) 2023-05-09
GB2603259A (en) 2022-08-03

Similar Documents

Publication Publication Date Title
DE69720821T2 (de) Fehlersuchsystem für Programme mit einer graphischen Benutzerschnittstelle
DE69932371T2 (de) Verschiebbare Instrumentationskennzeichen für die Prüfung und die Fehlerbeseitigung eines Computerprogramms
US8966449B2 (en) Test case pattern matching
DE112010003932B4 (de) Automatische Korrektur einer Anwendung auf der Grundlage des Laufzeitverhaltens
DE60021066T2 (de) Prüfung eines Softwarepakets
DE102012101089A1 (de) Verfahren, Geräte und Erzeugnisse zum Testen von Chargenkonfiguration
DE10127170A1 (de) Fehlersuchverfahren und Fehlersuchvorrichtung
DE102014102551A1 (de) Maschine und Verfahren zum Evaluieren von fehlschlagenden Softwareprogrammen
DE112014002960T5 (de) Ableitung verallgemeinerter Testfälle
DE112016002814T5 (de) Verfahren und Vorrichtung zum Erzeugen, Erfassen, Speichern und Laden von Debug-Informationen für fehlgeschlagene Test-Skripts
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE102021130630A1 (de) Testen von software-anwendungskomponenten
DE112021003677T5 (de) Automatisierte unterstützte schaltkreisvalidierung
US11132286B1 (en) Dynamic reordering of test case execution
DE102006040794A1 (de) Softwareprogramm mit alternativen Funktionsbibliotheken
DE102021128521A1 (de) Effiziente defektlokalisierung in neuen codeversionen
EP3770766A1 (de) Verfahren zum testen eines systems
DE112021000240T5 (de) Ausführen von tests in deterministischer reihenfolge
DE4110896C2 (de) Verfahren zum Ermitteln eines redundanten Schaltkreises und zum Optimieren eines Logikschaltkreises und Vorrichtungen zum Durchführen der Verfahren sowie Vorrichtung zum Erfassen der Daten eines redundaten Schaltkreises
Dixit et al. FormTester: effective integration of model-based and manually specified test cases
DE102013113745A1 (de) Testschaltung und verfahren zur durchführung eines testdurchlaufs
DE102010032765B4 (de) Automatische Verifizierung von Übersetzungen
EP3828655B1 (de) Verfahren und vorrichtung zur fehlerursachenbestimmung eines fehlers in einer elektrischen schaltung
DE102022115532A1 (de) Computerimplementiertes verfahren, computerprogramm und/oder computerlesbares medium und datenverarbeitungsvorrichtung
DE102021130822A1 (de) Automatisches erstellen und ausführen eines testsystems für arbeitsabläufe

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0008710000

Ipc: G06F0008700000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0008700000

Ipc: G06F0011360000

R084 Declaration of willingness to licence