-
TECHNISCHES GEBIET
-
Diese Offenbarung bezieht sich auf die Entwurfsautomatisierung für einen eingebetteten Systementwurf und insbesondere auf eine Strukturanalyse von Softwareprogrammiercodespezifikationen unter Verwendung eines Computers.
-
HINTERGRUND
-
Die Aussagen in diesem Abschnitt stellen lediglich eine Hintergrundinformation in Bezug auf die vorliegende Offenbarung dar und müssen nicht unbedingt Stand der Technik darstellen.
-
Bekannte Steuersysteme umfassen eingebettete Systeme, die Steuermodule aufweisen, die ausgestaltet sind, um eingebettete Softwareprogramme auszuführen, um eine oder mehrere vorgegebene Funktionen zu erreichen. Das Steuermodul und das eingebettete Softwareprogramm können gleichzeitig entworfen und entwickelt werden, was oftmals als Codesign-Prozess bezeichnet wird. Das Steuermodul kann eine programmierbare Verarbeitungseinrichtung umfassen, die einen anwendungsspezifischen integrierten Schaltkreis (ASIC von application-specific integrated circuit), einen elektronischen Schaltkreis oder eine zentrale Verarbeitungseinheit, z. B. einen Mikroprozessor, umfasst. Die programmierbare Verarbeitungseinrichtung umfasst Speichereinrichtungen oder ist über Signale und funktional damit verbunden. Beispielhafte Speichereinrichtungen umfassen z. B. einen Nur-Lese-Speicher (ROM von read only memory), einen programmierbaren Nur-Lese-Speicher (PROM von programmable read only memory), einen Direktzugriffsspeicher (RAM von random access memory) und Festplatten. Die programmierbare Verarbeitungseinrichtung ist ausgestaltet, um ein oder mehrere eingebettete Software- oder Firmwareprogramme auszuführen. Das Steuermodul kann einen Schaltkreis/Schaltkreise einer kombinatorischen Logik, eine(n) Eingabe/Ausgabe-Schaltkreis/Eingabe/Ausgabe-Schaltkreise und -Vorrichtung(en) umfassen, die über Signale und funktional mit dem Prozessor verbunden sind. Das Steuermodul umfasst eine geeignete Signalkonditionierungs- und -pufferschaltung und andere geeignete Komponenten, um die vorgegebene Funktion zu erreichen.
-
Die eingebettete Software kann unter Verwendung einer Programmiersprache entwickelt und spezifiziert werden, die in Maschinencode kompiliert werden kann, der zum Speichern und für eine Ausführung durch die programmierbare Verarbeitungseinrichtung des Steuermoduls geeignet ist. Ein bekanntes Softwareanalyseverfahren umfasst eine Programmstückelung (program slicing), um eine Teilmenge von Programmaussagen zu identifizieren, die die Berechnung an einem bestimmten Punkt in einem Programm beeinflussen können. Dieser Programmpunkt, der als Aussage oder bestimmte an einer Aussage verwendete Variable definiert werden kann, wird Stückelungskriterium genannt. In dem einfachen Fall eines Programms mit einem einzelnen Eingang und einem einzelnen Ausgang (single entry, single-exit program) wird ein Stück (slice) bestimmt, indem alle transitiven Datenfluss- und Kontrollabhängigkeiten gefunden werden, die zu dem Stückelungskriterium führen. Stückelung ist als Wartungs- oder Wiederverwendungswerkzeug für Aktivitäten wie beispielsweise Programmverständnis, Debuggen, Regressionstest und Funktionsextraktion von existierendem Code nützlich. Als interaktives Werkzeug vereinfacht eine Programmstückelungseinrichtung (program slicer) das Verständnis von relevanten Abschnitten der Software durch direktes Transformieren des Quellcodes in eine vereinfachte Spezifikation.
-
Ein Programmstück besteht aus jenen Aussagen, die die Werte von Kriteriumvariablen beeinflussen können, was umfasst, ob die Aussage ausgeführt wird oder nicht. Ein bekanntes Stück wird durch iteratives Auflösen von Daten- und Kontrollflussgleichungen auf der Grundlage einer Kontrollflussgraphdarstellung eines Softwareprogramms berechnet.
-
Ein Kontrollflussgraph ist eine Darstellung eines Programms, die für eine systematische Analyse geeignet ist, und wird von einer Quellcodespezifikation einer imperativen Sprache unter Verwendung von Standardtechniken abgeleitet. Ein Kontrollflussgraph umfasst Operationen, bezeichnet als Knoten, und Kontroll- und Datenpfade zwischen Operationen, bezeichnet als Kanten. Ein Flussgraph ist eine äquivalente Darstellung, die aus Basisprozeduren und Kontrollpfaden zwischen den Basisprozeduren besteht. Eine Basisprozedur ist eine Sequenz von Operationen, die immer als Gruppe ausgeführt werden. Ein Kontrollflussgraph ist eine übliche Darstellung für eine Quellcodeanalyse, und es gibt Standardtechniken, um Kontrollabhängigkeitsbeziehungen und Datenflussabhängigkeitsbeziehungen zu finden.
-
Bei einem kontrollflussgraphbasierten Ansatz fasst ein Systemabhängigkeitsgraph die Kontroll- und Datenabhängigkeiten eines gesamten Programms oder eines Abschnitts hiervon zusammen. Ein Systemabhängigkeitsgraph besteht aus einem oder mehreren Prozedurabhängigkeitsgraphen, wobei jeder Prozedurabhängigkeitsgraph prozedurinterne Kontroll- und Datenflussabhängigkeiten zusammenfasst. Die Prozedurabhängigkeitsgraphen, einer für jede Prozedur in dem Programm, sind in dem Systemabhängigkeitsgraphen mit Kanten verbunden, die Daten- und Kontrollabhängigkeiten zwischen Prozeduren angeben. Ein graphbasierter Ansatz ermöglicht eine genauere Berechnung eines Stücks und umfasst weniger Aussagen. Ein Strangkontrollflussgraph kann so definiert sein, dass alle parallelen Stränge explizit in einem einzelnen Kontrollflussgraphen angegeben sind, der dann analysiert wird, um Interferenzabhängigkeiten, die Datenflussabhängigkeiten zwischen parallelen Softwaresträngen sind, sowie eine machbare Ausführungsreihenfolge für die mehreren Softwarestränge zu finden.
-
ZUSAMMENFASSUNG
-
Ein computerrealisiertes Verfahren zum Bewerten einer maschinenausführbaren Softwarecodespezifikation umfasst das Verwenden des Computers, um einen Systemabhängigkeitsgraphen zu erzeugen, der der Softwarecodespezifikation entspricht. Der Systemabhängigkeitsgraph umfasst Elemente, die Knoten und Kanten umfassen. Der Computer bewertet den Systemabhängigkeitsgraphen einschließlich eines Auswählens einer Variable, die in der Softwarecodespezifikation modifiziert wird, eines Versehens eines Kontrolloperationsknotens des Systemabhängigkeitsgraphen, der einer Kontrollaussage in der Softwarecodespezifikation entspricht, mit einem bevorzugten Kalibrierungszustand, eines Durchlaufens zu ausgewählten Elementen des Systemabhängigkeitsgraphen, wobei die ausgewählten Elemente mit der ausgewählten Variable und dem bevorzugten Kalibrierungszustand des Kontrolloperationsknotens in Verbindung stehen, eines Bewertens nur der ausgewählten Elemente des Systemabhängigkeitsgraphen und eines Identifizierens jener der ausgewählten Elemente, bei denen ein Zustand der ausgewählten Variable modifiziert wird.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Nachstehend werden eine oder mehrere Ausführungsformen beispielhaft und mit Bezug auf die begleitenden Zeichnungen beschrieben, in denen:
-
1 schematisch einen Prozess zum Bewerten einer Spezifikation für Softwarecode, wobei der Softwarecode ausführbar ist, um eine vorgegebene Funktion zu erhalten, gemäß der vorliegenden Erfindung zeigt;
-
2 schematisch einen Prozess zum Durchlaufen von ausgewählten Elementen eines Systemabhängigkeitsgraphen unter Verwendung einer ausgewählten Variable V, um eine Abhängigkeitsanalyse auszuführen, gemäß der vorliegenden Offenbarung zeigt;
-
3 schematisch einen Systemabhängigkeitsgraphen, der für einen Softwarecode erzeugt wurde, um eine vorgegebene Funktion zu erhalten, gemäß der vorliegenden Offenbarung zeigt;
-
3A einen Abschnitt des Systemabhängigkeitsgraphen, der in Bezug auf 3 gezeigt ist und mit einem Hauptabschnitt der Software in Verbindung steht, gemäß der vorliegenden Offenbarung zeigt;
-
3B einen Abschnitt des Systemabhängigkeitsgraphen, der in Bezug auf 3 gezeigt ist und mit einem ersten Prozedurabschnitt der Software in Verbindung steht, gemäß der vorliegenden Offenbarung zeigt;
-
3C einen Abschnitt des Systemabhängigkeitsgraphen, der in Bezug auf 3 gezeigt ist und mit einem zweiten Prozedurabschnitt der Software in Verbindung steht, gemäß der vorliegenden Offenbarung zeigt;
-
3D einen Abschnitt des Systemabhängigkeitsgraphen, der in Bezug auf 3 gezeigt ist und mit einem ersten Funktionsabschnitt der Software in Verbindung steht, gemäß der vorliegenden Offenbarung zeigt;
-
3E einen Abschnitt des Systemabhängigkeitsgraphen, der in Bezug auf 3 gezeigt ist und mit einem zweiten Funktionsabschnitt der Software in Verbindung steht, gemäß der vorliegenden Offenbarung zeigt; und
-
4 ein Diagramm einer beispielhaften Bildschirmanzeige mit einer Ausgabe entsprechend einem Durchlaufen durch ausgewählte Elemente des Softwarecodes unter Verwendung eines in Verbindung stehenden Systemabhängigkeitsgraphen, der in 3 gezeigt ist, gemäß der vorliegenden Offenbarung ist.
-
DETAILLIERTE BESCHREIBUNG
-
Nun auf die Zeichnungen Bezug nehmend, in denen die Darstellungen lediglich dem Zweck des Erläuterns bestimmter beispielhafter Ausführungsformen und nicht dem Zweck des Einschränkens dieser dienen, zeigt 1 schematisch einen Prozess 10 zum bewerten einer Spezifikation für Softwarecodes, wobei der Softwarecode in einem programmierten Steuermodul ausgeführt werden kann, um eine vorgegebene Funktion zu erhalten.
-
Ein Programmierer verwendet einen Computer, um eine Softwarecodespezifikation zu erzeugen, die in einen maschinenausführbaren Code kompiliert wird, der in einem Steuermodul gespeichert und ausgeführt wird, um eine vorbestimmte Funktion zu erhalten (15). Es sei angemerkt, dass die Softwarecodespezifikation unter Verwendung einer Programmiersprache erzeugt wird. Eine bekannte Programmiersprache ist C. Fachleuten sind andere bekannt. Hierin nachstehend ist ein beispielhafter Softwarecode in Bezug auf Tabelle 1 gezeigt. Steuermodul bedeutet jede geeignete Kombination aus einem oder mehreren anwendungsspezifischen integrierten Schaltkreis(en), einem oder mehreren elektronischen Schaltkreis(en), einer oder mehreren zentralen Verarbeitungseinheit(en) (z. B. Mikroprozessor(en)) und zugehörigen Speichereinrichtungen (z. B. Nur-Lese-, programmierbare Nur-Lese-, Direktzugriffs-, Festplatte), die ausgestaltet sind, um den Softwarecode auszuführen, einem oder mehreren Schaltkreis(en) einer kombinatorischen Logik, einem oder mehreren Eingabe/Ausgabe-Schaltkreis(en) und -Einrichtungen, einer geeigneten Signalkonditionierungs- und -pufferschaltung und anderen geeigneten Komponenten, um die beschriebene Funktionalität bereitzustellen. Der Computer ist programmiert, um die folgenden Prozesse zum Bewerten der Softwarecodespezifikation zu realisieren. Dies umfasst das Ausführen einer Abhängigkeitsanalyse zum Identifizieren aller Entitäten, die den Zustand oder Wert einer ausgewählten Variable direkt oder indirekt beeinflussen, und Identifizieren von Codepfaden, durch die die Auswirkungen manifestiert werden, wodurch der Programmierer beim Bewerten der Softwarecodespezifikation unterstützt wird.
-
Es wird ein Systemabhängigkeitsgraph (hierin nachfolgend SDG von system dependence graph) für die Softwarecodespezifikation erzeugt, um die vorgegebene Funktion zu erhalten (20). Der SDG kann einen oder mehrere Prozedurabhängigkeitsgraphen (hierin nachfolgend PDG von procedure dependence graph) umfassen. Ein beispielhafter SDG ist in Bezug auf 3 gezeigt. Ein PDG ist eine graphische Darstellung einer Softwarecodespezifikation, die für eine systematische Analyse geeignet ist, und kann unter Verwendung von bekannten Techniken von einer Quellcodespezifikation einer imperativen Sprache abgeleitet werden. Der PDG ist aus Elementen konstruiert, die Operationen, d. h. Knoten, oder Kontrollpfade zwischen den Operationen, d. h. Kanten, sind. Der PDG ist eine äquivalente Darstellung, die Knoten umfasst, die über Kanten verbunden sind. Es sei angemerkt, dass ein Knoten eine Berechnung zeigt oder darstellt, d. h. einen Ausdruck oder eine Aussage, der oder die in einer Zeile einer Softwarecodespezifikation dargestellt ist, und eine tatsächliche Operation oder eine formale Operation umfassen kann. Lediglich beispielhaft können Typen von Knoten einen Datenknoten, einen formalen Knoten, einen Knoten einer aufgerufenen Prozedur, einen Eintrittsknoten, einen Austrittsknoten umfassen. Ein spezifischer Typ von Knoten ist ein Kontrolloperationsknoten, auch als Kontrollpunkt bezeichnet, der mit einer Softwarecodezeile in Verbindung steht, die eine Kontrollaussage ist, z. B. wo eine Entscheidung getroffen wird. Eine Kontrollaussage liegt in Form einer if/then/else-Aussage vor. Eine weitere Kontrollaussage liegt in Form von switch/case vor. Es sei angemerkt, dass es andere Formen von Kontrollaussagen und in Verbindung stehenden Kontrolloperationsknoten gibt. Eine Kante zeigt eine Kontroll- oder Datenabhängigkeit zwischen ausgewählten Kanten und ist direktional, wobei die Richtung durch einen Pfeil angegeben ist.
-
Der SDG umfasst einen oder mehrere PDGs, die als Basisprozeduren in einer Sequenz von Operationen fungieren, die als Gruppe ausgeführt werden. Eine Kante ist entweder eine Datenkante (Daten) zum Übermitteln von Daten für datenbezogene Abhängigkeiten oder eine Kontrollkante (Kontrolle) zum Übermitteln eines Kontrollsignals für kontrollbezogene Abhängigkeiten. Eine Kante kann auch eine prozedurinterne Kante und eine Kante zwischen Prozeduren umfassen. Ein PDG ist ein bekanntes Werkzeug, das zum Analysieren einer Softwarecodespezifikation nützlich ist, und umfasst bekannte Techniken, um Kontrollabhängigkeitsbeziehungen und Datenflussabhängigkeitsbeziehungen zu identifizieren. Beispielhafte mit dem SDG von 3 in Verbindung stehende PDGs sind in Bezug auf 3A, 3B, 3C, 3D und 3E gezeigt.
-
Die Softwarecodespezifikation umfasst eine oder mehrere Variablen. Jede Variable ist ein Element, das unter Verwendung einer Zeichenfolge bezeichnet ist. Jede Variable ist neben anderen als Zeichen, ganze Zahl oder Gleitkommadezimal, d. h. eine reelle Zahl, definiert. Jede Variable ist eine lokale Variable oder eine globale Variable. Eine lokale Variable ist eine Variable, auf die nur in einer Prozedur zugegriffen wird und die nur in dieser verwendet wird, d. h. eine Operation, die durch einen einzelnen PDG definiert ist. Somit kann der Zustand der lokalen Variable nur in der Prozedur modifiziert werden. Eine globale Variable ist eine Variable, die durch mehrere Basisprozeduren verwendet wird, d. h. mehrere Operationen und jene, die durch mehrere PDGs definiert sind. Somit kann der Zustand der globalen Variable in jeder der mehreren Basisprozeduren modifiziert Werden.
-
Eine der Variablen V, die mit dem SDG in Verbindung stehen, wird für eine Analyse ausgewählt (25). Eine Abhängigkeitsanalyse wird unter Verwendung der ausgewählten Variable V als Basis zum Durchlaufen ausgewählter Elemente des SDG ausgeführt (30). Dies ist ausführlich in Bezug auf 2 beschrieben. Das Ausführen der Abhängigkeitsanalyse identifiziert alle Datenentitäten, die den Zustand oder Wert der ausgewählten Variable V direkt oder indirekt beeinflussen. Die Abhängigkeitsanalyse identifiziert ferner Codepfade, durch die die Auswirkungen manifestiert werden.
-
Die Abhängigkeitsanalyse identifiziert alle Elemente, d. h. Knoten und Kanten, die den Wert der ausgewählten Variable V beeinflussen, indem die ausgewählten Elemente des SDG unter Verwendung der ausgewählten Variable V durchlaufen werden.
-
Die Ergebnisse, die mit dem Verwenden der Abhängigkeitsanalyse zum Durchlaufen der ausgewählten Elemente des SDG unter Verwendung der ausgewählten Variable V in Verbindung stehen, werden erzeugt und gespeichert (40). Die Ergebnisse werden einer praktizierenden Person über ein Anwendungsprogramm. (Anwendung) zur Verfügung gestellt und umfassen eine Identifikation aller Elemente in dem SDG, die den Zustand oder Wert der ausgewählten Variable V direkt oder indirekt beeinflussen (50). Das Beeinflussen des Zustands oder Werts der ausgewählten Variable V kann ein Modifizieren der ausgewählten Variable V, ein Modifizieren einer Variable, die mit der ausgewählten Variable V in Beziehung steht, und ein Verwenden der in Beziehung stehenden Variable umfassen. Erläuternde Ergebnisse, die mit einem Durchlaufen der ausgewählten Elemente eines SDG unter Verwendung einer ausgewählten Variable V in Verbindung stehen, sind in Bezug auf 4 gezeigt.
-
2 zeigt den Prozess des Durchlaufens der ausgewählten Elemente des SDG unter Verwendung der ausgewählten Variable V zum Ausführen einer Abhängigkeitsanalyse. Durchlaufen soll den Prozess des Verfolgens der ausgewählten Variable V von einem Startpunkt, z. B. an dem die ausgewählte Variable V modifiziert wird, und des Arbeitens auf eine Weise einer Rückwärts- oder umgekehrten Analyse den Kanten folgend bis zu einer Ankunft an einem Anfangspunkt beschreiben. Das Durchlaufen von ausgewählten Elementen des SDG umfasst das Verfolgen der ausgewählten Variable V von ihrem Startpunkt und das Arbeiten auf eine Weise einer Rückwärts- oder umgekehrten Analyse ausgewählten Knoten und ausgewählten Kanten folgend bis zu einer Ankunft am Anfangspunkt.
-
Der Knoten, an dem die ausgewählte Variable V modifiziert wird, wird als Startpunkt am SDG für die ausgewählte Variable V identifiziert und ausgewählt (210).
-
Ein aktuelles Element, d. h. ein aktueller Knoten und eine in Verbindung stehende Kante/in Verbindung stehende Kanten werden für eine Analyse in Betracht gezogen (215). Zu Beginn ist das aktuelle Element der Knoten, an dem die ausgewählte Variable V modifiziert wird, und umfasst die in Verbindung stehende Kante/umfassen die in Verbindung stehenden Kanten jede Kante, die zu dem aktuellen Knoten führt. Während nachfolgenden Iterationen ist das aktuelle Element ein weiteres Element des SDG, das durch Verfolgen der ausgewählten Variable V von ihrem Startpunkt und Arbeiten auf eine Weise einer Rückwärts- oder umgekehrten Analyse ausgewählten Knoten und ausgewählten Kanten folgend bis zur Ankunft am Anfangspunkt ermittelt wird.
-
Es wird eine Abhängigkeitsanalyse ausgeführt, um das aktuelle Element unter Verwendung von vorbestimmten Kriterien, die mit der ausgewählten Variable V in Verbindung stehen, zu bewerten (220). Wenn die Bewertung angibt, dass das aktuelle Element mit den vorbestimmten Kriterien konsistent ist, wird das aktuelle Element ausgewählt (230). Die Ergebnisse, die mit dem Durchlaufen zu dem aktuellen Element des SDG in Verbindung stehen, werden erzeugt und gespeichert (235). Die gespeicherten Ergebnisse identifizieren oder geben auf andere Weise an, ob die ausgewählte Variable V oder eine in Beziehung stehende Variable am aktuellen Element des SDG modifiziert wurde oder hier auf sie zugegriffen wurde. Wenn das aktuelle Element nicht ausgewählt ist, oder wenn die Ergebnisse, die mit dem Durchlaufen des ausgewählten Elements des SDG unter Verwendung der ausgewählten Variable V in Verbindung stehen, erzeugt und gespeichert werden, läuft der Prozess zu einem nachfolgenden Element, das mit der ausgewählten Variable V in Verbindung steht, wobei der aktuelle Knoten hinsichtlich des nachfolgenden Elements aktualisiert wird (240).
-
Der aktualisierte aktuelle Knoten wird bewertet, um zu ermitteln, ob es sich um einen Kontrolloperationsknoten handelt, der einen Kontrolloperationsknoten umfasst, der eine Kalibrierung umfasst (245). Unter solchen Umständen wird ein ausgewählter oder bevorzugter Kalibrierungswert in den Kontrolloperationsknoten eingesetzt (250). Somit wird der Kontrollausdruck am betreffenden Kontrolloperationsknoten oder Kontrollpunkt überprüft, um zu ermitteln, welcher Zweig/welche Zweige, d. h. Kante(n) von dem Kontrolloperationsknoten aus, mit dem bevorzugten darin eingesetzten Kalibrierungswert machbar sind. Jeder nicht machbare Zweig/alle nicht machbaren Zweige wird/werden nicht ausgewählt. Diese Auswahl ist ähnlich einem Identifizieren und Auswählen eines spezifischen Typs jedes Knotens und jeder Kante (221A) und einem Ignorieren oder Nichtbetrachten anderer spezifischer Typen von Knoten und in Verbindung stehender Kanten (221B) unter Verwendung einer Überprüfung hinsichtlich der Kontrollbedingung am Kontrollpunktknoten mit einem bevorzugten Kalibrierungswert. Somit kann ein Kontrolloperationsknoten des Systemabhängigkeitsgraphen, der einer Kontrollaussage in der Softwarecodespezifikation entspricht, mit einem bevorzugten Kalibrierungszustand als Teil der Analyse versehen werden. Das aktualisierte aktuelle Element, das mit der ausgewählten Variable V in Verbindung steht, wird für eine Analyse in Betracht gezogen (215), was umfasst, dass es der Abhängigkeitsanalyse wie hierin beschrieben ausgesetzt wird (230).
-
Es sei angemerkt, dass das Durchlaufen zu einem nachfolgenden Element, das mit der ausgewählten Variable V in Verbindung steht, das Auswählen einer benachbarten Kante, die mit einem Knoten in Verbindung steht, umfassen kann, was Fälle umfasst, in denen die zuvor bewertete Kante nicht bewertet wird. Es sei angemerkt, dass das Durchlaufen des SDG zu einem nachfolgenden Element, das mit der ausgewählten Variable V in Verbindung steht, das Auswählen eines nachfolgenden Knotens umfassen kann, der mit einer bewerteten Kante verbunden ist, wenn die zuvor bewertete Kante bewertet wird, was das Verwenden eines beliebigen Kontrolloperationsknotens, der einen ausgewählten oder bevorzugten Kalibrierungswert umfasst, als Basis für ein nachfolgendes Durchlaufen des SDG umfasst. Der Prozess wird vorzugsweise wiederholt, bis alle auswählbaren Elemente, die unter Verwendung der in der Abhängigkeitsanalyse (220) dargelegten vorbestimmten Kriterien bestimmt werden und mit der ausgewählten Variable V in Verbindung stehen, in dem SDG bewertet sind.
-
Die Abhängigkeitsanalyse (220) wird ausgeführt, um jedes aktuelle Element des SDG, das mit der ausgewählten Variable V in Verbindung steht, unter Verwendung von vorbestimmten Kriterien zu bewerten. Spezifische Elemente, d. h. Knoten und Kanten des SDG, die mit der ausgewählten Variable V in Verbindung stehen, werden ausgewählt, ignoriert oder übergangen. Dies umfasst das Ignorieren oder anderweitige Nichtbetrachten von spezifischen Typen von Knoten und in Verbindung stehenden Kanten, das Auswählen von spezifischen Typen von Kanten zum Durchlaufen, das Auswählen oder anderweitige Entscheiden, ob ein Knoten ausgewählt werden soll, der zu einer aufgerufenen Prozedur führt, oder die aufgerufene Prozedur, die mit dem Knoten in Verbindung steht, zusammengefasst werden soll. Dies umfasst auch das Entscheiden über lokale Durchlaufstrategien und das Treffen von Ausgangsentscheidungen auf der Grundlage von spezifischen variablen Speichertypen.
-
Das Bewerten des aktuellen Elements des SDG unter Verwendung von vorbestimmten Kriterien (220) umfasst das Identifizieren und Auswählen eines spezifischen Typs jedes Knotens und jeder Kante (221A) und das Ignorieren oder Nichtbetrachten anderer spezifischer Typen von Knoten und in Verbindung stehender Kanten (221B). Ignorierte Knoten können beispielsweise einen Knoten umfassen, der einen Scheduler umfasst. Es sei angemerkt, dass andere Knoten ignoriert werden können.
-
Das Bewerten des aktuellen Elements des SDG unter Verwendung von vorbestimmten Kriterien (220) umfasst das identifizieren jedes Knotens als einen weiterführenden Knoten oder einen Endknoten (225A) und das ledigliche Auswählen des weiterführenden Knotens, während der Endknoten und in Verbindung stehende Kanten, die zu diesem führen, ignoriert werden (225B). Ein Endknoten ist als Knoten definiert, der eine Kante/Kanten aufweist, die zu ihm führen, wobei keine Kante von ihm wegführt. Ein weiterführender Knoten ist als Knoten definiert, der Kanten aufweist, die zu ihm führen und von ihm wegführen. Eine spezifische Art eines weiterführenden Knotens ist ein Softwarecode mit einer Entscheidungstreffungsfähigkeit, z. B. unter Verwendung von if/then/else-Zweigen.
-
Das Bewerten des aktuellen Elements des SDG unter Verwendung von vorbestimmten Kriterien (220) umfasst das Identifizieren von Variablen, die in einem Knoten als globale Variable oder als lokale Variable verwendet werden (222A). Es werden Elemente, die Knoten sind, die eine globale Variable verwenden, ausgewählt, und es werden Elemente, die Knoten sind, die eine lokale Variable verwenden, übergangen, d. h. das Element wird nicht bewertet (222B). Wenn das Element jedoch ein Knoten ist, der eine lokale Variable verwendet, läuft der selektive Durchlaufprozess zu dem nicht ausgewählten Knoten und fährt er hiervon durch Ausführen der Abhängigkeitsanalyse an den damit verbundenen Kanten fort. Wenn das Element ein Knoten ist, der eine globale Variable verwendet, wird das aktuelle Element als Zeichen, ganze Zahl oder Gleitkommadezimal definiert (223A), und wird es so bewertet (223B). Das Bewerten des aktuellen Elements des SDG unter Verwendung von vorbestimmten Kriterien umfasst auch das Identifizieren von bereichsspezifischen variablen Speichertypen, die Kalibrierungen, Orte eines flüchtigen Speichers, Orte eines lokalen Speichers und Orte eines nichtflüchtigen Speichers umfassen, und Typen, die mit der Variable V in Verbindung stehen.
-
Das Bewerten des aktuellen Elements des SDG unter Verwendung von vorbestimmten Kriterien (220) umfasst das Identifizieren jeder Kante als spezifischen Typ von Kante (227A) und das Auswählen von spezifischen Typen von Kanten, die durchlaufen werden, und das dementsprechende Wählen von spezifischen Typen von Kanten, die ignoriert oder nicht durchlaufen werden (227B). Wie zuvor angemerkt ist eine Kante eine Datenkante zum Übermitteln eines Datensignals oder eine Kontrollkante zum Übermitteln eines Kontrollsignals. Eine Kante kann auch eine prozedurinterne Kante und eine Kante zwischen Prozeduren umfassen. Somit kann das Auswählen von spezifischen Typen von Kanten, die durchlaufen werden sollen, das ledigliche Auswählen von Datenkanten, das ledigliche Auswählen von Kontrollkanten oder das Auswählen von sowohl Daten- als auch Kontrollkanten umfassen. Ferner kann das Auswählen von spezifischen Typen von Kanten, die durchlaufen werden sollen, das ledigliche Ignorieren von Datenkanten und das ledigliche Auswählen von Kontrollkanten für sowohl prozedurinterne Kanten als auch Kanten zwischen Prozeduren umfassen. Ein Fachmann kann andere Kantendurchlaufkombinationen erkennen, die die prozedurinternen Kanten und die Kanten zwischen Prozeduren umfassen.
-
Das Bewerten des aktuellen Elements des SDG unter Verwendung von vorbestimmten Kriterien (220) umfasst das Identifizieren von aufgerufenen Prozeduren, die mit einem Knoten in Verbindung stehen (229A), und das Auswählen lediglich jener Knoten, wobei die aufgerufene Prozedur die identifizierte Variable, die mit dem aktuellen Knoten in Verbindung steht, beeinflusst, d. h., wenn die Variable als globale Variable identifiziert wird (229B). Jene Knoten, bei denen die aufgerufene Prozedur die identifizierte Variable, die mit dem aktuellen Knoten in Verbindung steht, beeinflusst, umfassen jene Knoten, bei denen die identifizierte Variable, die mit dem aktuellen Knoten in Verbindung steht, eine globale Variable ist, wie zuvor identifiziert (222A).
-
Die in Bezug auf
1 und
2 beschriebene Operation ist in Bezug auf eine Softwarecodespezifikation ausführlich dargestellt, die als die folgende Softwareprogrammauflistung in Tabelle 1 und der in Bezug auf
3 gezeigte in Verbindung stehende SDG gezeigt ist. Es sind Zeilennummern umfasst, die mit jeder Zeile der Softwareprogrammauflistung in Verbindung stehen, und in
4 wird auf sie Bezug genommen. Die Softwareprogrammauflistung in Tabelle 1 stellt die Offenbarung dar. Tabelle 1
-
-
3 zeigt einen SDG 300, der der Softwareprogrammauflistung von Tabelle 1 entspricht. Es ist zu erkennen, dass der SDG 300 nach dem Entwerfen und Kompilieren der Softwareprogrammauflistung von Tabelle 1 erzeugt werden kann. Der SDG 300 umfasst mehrere PDGs mit Kontrollabhängigkeitsbeziehungen und Datenflussabhängigkeitsbeziehungen, die in Bezug auf 3A, 3B, 3C, 3D und 3E gezeigt sind. Jeder Knoten ist als ovales Element gezeigt. Jede Kante ist als direktionale Linie gezeigt, wobei Kontroll- und Datenkanten gezeigt sind. Die Kontroll- und Datenkanten umfassen prozedurinterne Kanten und Kanten zwischen Prozeduren.
-
3A zeigt einen Abschnitt des SDG 300, der einem Hauptabschnitt der Software [entry main()] entspricht, gezeigt als ”int main()” und beginnend in Zeile 40 in Tabelle 1. 3B zeigt einen Abschnitt des SDG 300, der mit einem ersten Prozedurabschnitt der Software [entry proc1()] in Verbindung steht, gezeigt als ”void proc1()” und beginnend in Zeile 35 in Tabelle 1. 3C zeigt einen Abschnitt des SDG 300, der einem zweiten Prozedurabschnitt der Software [entry proc2()] entspricht, gezeigt als ”void proc2()” und beginnend in Zeile 27 in Tabelle 1. 3D zeigt einen Abschnitt des SDG 300, der einem ersten Funktionsabschnitt der Software [entry func1()] entspricht, gezeigt als ”void func1()” und beginnend in Zeile 12 in Tabelle 1. 3E zeigt einen Abschnitt des SDG 300, der einem zweiten Funktionsabschnitt der Software [entry func2()] entspricht, gezeigt als ”void func2()” und beginnend in Zeile 21 in Tabelle 1. Die einzelnen in 3A–3E gezeigten Elemente sind in 4 beschrieben.
-
4 ist ein Diagramm einer beispielhaften Bildschirmanzeige, die Ergebnisse darstellt, die mit einem Durchlaufen ausgewählter Elemente eines SDG unter Verwendung einer ausgewählten Variable V in Verbindung stehen, gezeigt in Bezug auf den Softwarecode von Tabelle 1 unter Verwendung des in Bezug auf 3 gezeigten in Verbindung stehenden SDG. Es sei angemerkt, dass 4 die hierin beschriebenen Konzepte zeigt und nicht einschränkend sein soll. Die Bildschirmanzeige gibt Ergebnisse an, die mit der Verwendung der zuvor genannten Abhängigkeitsanalyse in Verbindung stehen, die hierin oben in Bezug auf Element 220 von 2 zum Bewerten einer ausgewählten Variable V beschrieben ist, welche Variable Ve_f_dat1 wie gezeigt ist. Die Abhängigkeitsanalyse wird verwendet, um ausgewählte Elemente des Systemabhängigkeitsgraphen, die mit der ausgewählten Variable in Verbindung stehen, zu durchlaufen, und umfasst das Durchlaufen des Softwarecodes von Tabelle 1, der verwendet wurde, um den in Bezug auf 3 gezeigten in Verbindung stehenden SDG zu erzeugen. Die Elemente in 4, auf die Bezug genommen wird, umfassen einen Deskriptor (Deskriptor) für jeden SDG-Knoten und in Beziehung stehende Elemente, denen während der Auswahl begegnet wird, und Durchlaufdatenelemente, auf die an den SDG-Knoten, denen begegnet wird, Bezug genommen wird, einen Datenausgang (Datenelement), den entsprechenden Dateinamen für den Datenausgang (Datei) und die in Verbindung stehende Softwarecodezeile (Zeilennr.), gezeigt in Spalte 1 der obigen Tabelle 1.
-
Der Datenausgang (Datenelement) liefert eine Bezeichnung zum Beschreiben, wann ein Zustand der ausgewählten Variable V oder einer in Verbindung stehenden Variable während einer Operation geändert oder modifiziert wurde, wobei ein Bezeichner ”Gelöscht” verwendet wird. Beispielsweise umfasst die oberste Zeile des Datenausgangs ein Datenelement, das als Gelöscht: ”Ve_f_dat1” identifiziert wird, was bezeichnet, dass die Variable Ve_f_dat1 als Ergebnis des Ausführens der Prozedur in Zeile 32 des in Tabelle 1 gezeigten Codes geändert wurde.
-
Der Datenausgang (Datenelement) liefert eine Bezeichnung, um zu beschreiben, wann die ausgewählte Variable V oder eine in Beziehung stehende Variable während einer Operation verwendet wurde, wobei die Bezeichner ”Verwendet” und ”Vars.” verwendet werden. Beispielsweise umfasst eine nachfolgende Zeile des Datenausgangs ein Datenelement, das als Verwendet: ”Le_i_var1–16” identifiziert wird, was angibt, dass die in Beziehung stehende Variable Le_i_var1–16 als Ergebnis des Ausführens der Prozedur in Zeile 32 des in Tabelle 1 gezeigten Codes verwendet, jedoch nicht geändert, wurde.
-
Ein Teil des Aufbaus für die Bewertung umfasst das Versehen eines Kontrolloperationsknotens des Systemabhängigkeitsgraphen, der einer Kontrollaussage in der Softwarecodespezifikation entspricht, mit einem bevorzugten Kalibrierungszustand. Bei der beschriebenen Ausführungsform ist der Kontrolloperationsknoten das Element 810 in 3D und wird er für die Bewertung mit einem Kalibrierungswert von 0 versehen.
-
Die Bewertung der Variable Ve_f_dat1 wird an einer Stelle initiiert, an der sie modifiziert wird, gezeigt als Element 610 in 3C. Die als Element 220 in 2 gezeigte Abhängigkeitsanalyse wird verwendet, um jedes aktuelle Element des SDG unter Verwendung von vorbestimmten Kriterien zu bewerten. Die Bewertung eines aktuellen Elements des SDG unter Verwendung von vorbestimmten Kriterien umfasst das Durchlaufen von ausgewählten Elementen des Systemabhängigkeitsgraphen, die mit der ausgewählten Variable in Verbindung stehen, und das Bezeichnen jedes durchlaufenen Elements, das mit der ausgewählten Variable V in Verbindung steht, als ausgewählt, ignoriert oder übergangen.
-
Wie gezeigt läuft der Auswahlanalyseprozess von Element 610 zu Element 612 und dann zu Element 618, das einen Aufruf einer ersten Funktion (func2) angibt. Die aufgerufene Funktion (func2) ist in 3D als Element 700 ausführlich gezeigt. Es wird nicht in die aufgerufene Funktion (func2) 700 eingetreten, d. h. sie wird übergangen, es wird jedoch ein Rückgabewert für Variable Be_f_dat2 verwendet, der als Vars: ”Be_f_dat2” erfasst ist. Diese Entscheidung, nicht in die aufgerufene Funktion (func2) 700 einzutreten, wird getroffen, da die aufgerufene Funktion (func2) 700 die ausgewählte Variable, d. h. Ve_f_dat1 oder eine in Beziehung stehende Variable, die mit dem aktuellen Knoten in Verbindung steht, nicht modifiziert oder verwendet, wie es in Bezug auf das Ausführen eines Abschnitts (229A, 229B) der Abhängigkeitsanalyse (220) beschrieben ist, die in Bezug auf 2 beschrieben ist.
-
Wie gezeigt läuft der Auswahlanalyseprozess auch von Element 612 über Element 620 zu Element 622, das einen Aufruf einer zweiten Funktion (func1) angibt. Die aufgerufene Funktion (func1) ist in 3E als Element 800 ausführlich gezeigt. Es wird in die aufgerufene Funktion (func1) 800 eingetreten, d. h. sie wird ausgewählt und durchlaufen. Diese Entscheidung wird getroffen, da die aufgerufene Funktion (func1) 800 eine globale Variable verwendet, die die in Beziehung stehende Variable Be_f_dat2 modifiziert, wie es in Bezug auf das Ausführen eines Abschnitts (222A, 222B) der Abhängigkeitsanalyse (220) beschrieben ist, die in Bezug auf 2 beschrieben ist.
-
Wie gezeigt durchläuft der Auswahlanalyseprozess die aufgerufene Funktion (func1) 800, die in 3D gezeigt und in Tabelle 1 in den Zeilen 12–20 ausgeführt ist. Die aufgerufene Funktion (func1) 800 umfasst einen Softwarecode mit einem Kontrolloperationsknoten bei Element 810. Der Kontrolloperationsknoten bei Element 810 ist ein if/then/else-Knoten und ist in Tabelle 1 in den Zeilen 16–20 ausgeführt. Es wird in den Kontrolloperationsknoten bei den Elementen 810 und 820 in 3D eingetreten, d. h. er wird ausgewählt und durchlaufen. Diese Entscheidung wird getroffen, da der Kontrolloperationsknoten bei Element 810 kalibriert ist, um zu Element 820 weiterzugehen, wenn die bevorzugte Kalibrierung auf 0 gesetzt ist, wie in der entsprechenden Zeile 16 von Tabelle 1, d. h. if (Ke_b_cal1 ! = 0) gibt ein Weitergehen zu Zeile 17 in Ansprechen auf den kalibrierten Wert an, wie es zuvor beschrieben wurde. In das in Beziehung stehende Element 830 wird wegen des ausgewählten Kalibrierungswerts für Ke_b_cal1 bei Element 810 nicht eingetreten. Somit wird Element 810 ausgewählt, wie es in Bezug auf das Ausführen eines Abschnitts (225A, 225B) der in Bezug auf 2 beschriebenen Abhängigkeitsanalyse (220) beschrieben ist.
-
Ferner sind die in Beziehung stehenden Variablen, die berichtet werden, gezeigt, und sie umfassen Be_f_dat2 und Ke_b_cal1 (430). Ferner wird die Auswahl von sowohl Kontroll- als auch Datenkanten in dem Auswahlanalyseprozess angefordert, wie es in Bezug auf das Ausführen eines Abschnitts (229A, 229B) der Abhängigkeitsanalyse (220) beschrieben ist, die in Bezug auf 2 beschrieben ist (420). Ferner werden Planungsknoten ignoriert, wie es in Bezug auf das Ausführen eines Abschnitts (221A, 221B) der Abhängigkeitsanalyse (220) beschrieben ist, die in Bezug auf 2 beschrieben ist (410).
-
Somit wird ein Verfahren zum statistischen Berechnen oder anderweitigem Ermitteln des Satzes von Datenentitäten bereitgestellt, die den Wert einer ausgewählten Variable oder einer in Beziehung stehenden Variable, die in einem Softwarecode, z. B. einem eingebetteten Softwareprogramm, verwendet wird, modifizieren oder verwenden, und es werden die Codepfade, über die der Wert der ausgewählten Variable beeinflusst wird, identifiziert, was das Durchlaufen eines Kontrolloperationsknotens des Systemabhägigkeitsgraphen, der einer Kontrollaussage in der Softwarecodespezifikation entspricht, unter Verwendung eines bevorzugten Kalibrierungszustands umfasst.
-
Die Offenbarung beschrieb bestimmte bevorzugte Ausführungsformen und Abwandlungen dieser. Weitere Abwandlungen und Änderungen können für Dritte beim Lesen und Verstehen der Beschreibung ersichtlich werden. Daher soll die Offenbarung nicht auf die bestimmte(n) Ausführungsform(en) beschränkt sein, die als die Ausführungsform(en) offenbart ist/sind, die als am geeignetsten zum Ausführen dieser Offenbarung betrachtet wird/werden, sondern die Offenbarung soll alle Ausführungsformen umfassen, die innerhalb des Schutzumfangs der beigefügten Ansprüche liegen.