DE102011014830A1 - Verfahren und vorrichtung zum analysieren vonsoftware - Google Patents

Verfahren und vorrichtung zum analysieren vonsoftware Download PDF

Info

Publication number
DE102011014830A1
DE102011014830A1 DE102011014830A DE102011014830A DE102011014830A1 DE 102011014830 A1 DE102011014830 A1 DE 102011014830A1 DE 102011014830 A DE102011014830 A DE 102011014830A DE 102011014830 A DE102011014830 A DE 102011014830A DE 102011014830 A1 DE102011014830 A1 DE 102011014830A1
Authority
DE
Germany
Prior art keywords
variable
dependency graph
elements
selected elements
node
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.)
Withdrawn
Application number
DE102011014830A
Other languages
English (en)
Inventor
Srihari Sukumaran
Ramesh Sethu
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.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
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 GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of DE102011014830A1 publication Critical patent/DE102011014830A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • 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

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)
  • Stored Programmes (AREA)

Abstract

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 Kantkeitsgraphen bewertet. Die Bewertung des Systemabhängigkeitsgraphen umfasst ein Auswählens einer Variable, die in der Softwarecodespezifikation modifiziert wird, ein Durchlaufen zu ausgewählten Elementen des Systemabhängigkeitsgraphen, wobei die ausgewählten Elemente mit der ausgewählten Variable in Verbindung stehen, ein Bewerten nur der ausgewählten Elemente des Systemabhängigkeitsgraphen und ein Identifizieren jener der ausgewählten Elemente, bei denen ein Zustand der ausgewählten Variable modifiziert wird.

Description

  • 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 Teilmerige 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, wobei der Computer den Systemabhängigkeitsgraphen bewertet. Die Bewertung des Systemabhängigkeitsgraphen umfasst ein Auswählen einer Variable, die in der Softwarecodespezifikation modifiziert wird, ein Durchlaufen zu ausgewählten Elementen des Systemabhängigkeitsgraphen, wobei die ausgewählten Elemente mit der ausgewählten Variable in Verbindung stehen, ein Bewerten nur der ausgewählten Elemente des Systemabhängigkeitsgraphen und ein Identifizieren 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 aktualisiert wird (240). Das nachfolgende Element, das mit der ausgewählten Variable V in Verbindung steht, wird zu dem aktuellen Element, d. h. dem aktuellen Knoten und den in Verbindung stehenden aktuellen Kanten, die für die Analyse in Betracht gezogen werden (215). 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. 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
    Figure 00160001
    Figure 00170001
  • 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 3A3E 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 modifziert 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.
  • 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 Softwarecode mit if/then/else-Zweigen umfasst, die als Elemente 810, 820 und 830 in 3D gezeigt und in Tabelle 1 in den Zeilen 16–20 ausgeführt sind, und die somit ausgewählt werden, wie es in Bezug auf das Ausführen eines Abschnitts (225A, 225B) der in Bezug auf 2 beschriebenen Abhängigkeitsanalyse (220) beschrieben ist.
  • Wie gezeigt läuft der Auswahlanalyseprozess von den Elementen 820 und 830 über die Elemente 840 und 845 zu Element 850, das ein Aufruf für read_sensor() ist. Auf den Aufruf für read_sensor 850 wird nicht eingegangen, allerdings wird ein Rückgabewert verwendet, und somit wird er ignoriert. Diese Entscheidung wird getroffen, da die aufgerufene Prozedur oder Funktion die ausgewählte Variable Ve_f_dat1 oder eine in Beziehung stehende Variable 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.
  • Ferner sind die in Beziehung stehenden Variablen, die berichtet werden, gezeigt, und sie umfassen Be_f_dat2 und Ke_b_call (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, 229) 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.
  • 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 bestirmmte(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. BEZUGSZEICHENLISTE ZU FIG. 4
    Descriptor DESKRIPTOR
    expression AUSDRUCK
    CLICK FOR PREDS FÜR VORBEST. KLICKEN
    declaration DEKLARATION
    actual-out for call to func2 TÄTSÄCHLICH-AUS FÜR AUFRUF FÜR func2
    actual-in for call to func2 TATSÄCHLICH-EIN FÜR AUFRUF FÜR func2
    global-actual-in for call to func2 GLOBAL-TATSÄCHLICH-EIN FÜR AUFRUF FÜR func2
    global-actual-out for call to func1 GLOBAL-TATSÄCHLICH-AUS FÜR AUFRUF FÜR func1
    global-format-out for procedure func1 GLOBAL-FORMAL-AUS FÜR PROZEDUR func1
    control-point KONTROLLPUNKT
    actual-out for call to read_sensor TATSÄCHLICH-AUS FÜR AUFRUF FÜR read_sensor
    call-site SEITE AUFRUFEN
    entry EINTRITT
    Skipping schedualing part (data deps across elements of a schedule willbe missed AUSLASSEN VON PLANUNGSTEIL (DATENABH. ÜBER ELEMENTEN EINES PLANS WERDEN NICHT ERHALTEN
    Dates Item DATENELEMENT
    File DATEI
    Line No ZEILENNR
    Killed: GELÖSCHT:
    Used: VERWENDET:
    Vars: VARS:
    Toggle Variable View SCHALTE VARIABLENANSICHT UM
    Control KONTROLLE
    Dates DATEN

Claims (10)

  1. Computerrealisiertes Verfahren zum Bewerten einer maschinenausführbaren Softwarecodespezifikation, das umfasst, dass: der Computer zum Erzeugen eines Systemabhängigkeitsgraphen, der der Softwarecodespezifikation entspricht, verwendet wird, wobei der Systemabhängigkeitsgraph Elemente umfasst, die Knoten und Kanten umfassen, wobei der Computer den Systemabhängigkeitsgraphen bewertet, wobei die Bewertung des Systemabhängigkeitsgraphen umfasst, dass: eine Variable ausgewählt wird, die in der Softwarecodespezifikation modifiziert wird; ein Durchlaufen zu ausgewählten Elementen des Systemabhängigkeitsgraphen stattfindet, wobei die ausgewählten Elemente mit der ausgewählten Variable in Verbindung stehen; lediglich die ausgewählten Elemente des Systemabhängigkeitsgraphen bewertet werden; und jene der ausgewählten Elemente identifiziert werden, bei denen ein Zustand der ausgewählten Variable modifiziert wird.
  2. Verfahren nach Anspruch 1, das ferner umfasst, dass jene der ausgewählten Elemente identifiziert werden, bei denen ein Zustand der ausgewählten Variable oder einer in Beziehung stehenden Variable modifiziert wird.
  3. Verfahren nach Anspruch 1, wobei das Bewerten lediglich der ausgewählten Elemente des Systemabhängigkeitsgraphen ferner umfasst, dass nicht ausgewählte Elemente des Systemabhängigkeitsgraphen ignoriert werden.
  4. Verfahren nach Anspruch 1, wobei das Durchlaufen zu ausgewählten Elementen des Systemabhängigkeitsgraphen, wobei die ausgewählten Elemente mit der ausgewählten Variable in Verbindung stehen, umfasst, dass eine Abhängigkeitsanalyse zum Auswählen der ausgewählten Elemente ausgeführt wird.
  5. Verfahren nach Anspruch 4, wobei das Ausführen der Abhängigkeitsanalyse zum Auswählen der ausgewählten Elemente umfasst, dass: Variablen, die mit jedem Element, das einen Knoten umfasst, in Verbindung stehen, als globale Variable oder lokale Variable identifiziert werden; und das Element, das den Knoten mit der globalen Variable umfasst, ausgewählt wird.
  6. Verfahren nach Anspruch 5, das ferner umfasst, dass das Element, das den Knoten mit der lokalen Variable umfasst, übergangen wird.
  7. Verfahren nach Anspruch 4, wobei das Ausführen der Abhängigkeitsanalyse zum Auswählen der Elemente umfasst, dass: ein Element, das einen Knoten mit einer aufgerufenen Prozedur umfasst, identifiziert wird; und das Element, das den Knoten mit der aufgerufenen Prozedur umfasst, nur ausgewählt wird, wenn die aufgerufene Prozedur die ausgewählte Variable modifiziert.
  8. Verfahren nach Anspruch 7, das ferner umfasst, dass das Element, das den Knoten mit der aufgerufenen Prozedur umfasst, übergangen wird, wenn die aufgerufene Prozedur die ausgewählte Variable nicht modifiziert.
  9. Computerrealisiertes Verfahren zum statistischen Bewerten einer maschinenausführbaren Softwarecodespezifikation, die in einem eingebetteten System ausgeführt werden kann, das umfasst, dass: der Computer zum Erzeugen eines Systemabhängigkeitsgraphen verwendet wird, der der Softwarecodespezifikation entspricht und mehrere Elemente umfasst, die Knoten und Kanten umfassen, wobei der Computer den Systemabhängigkeitsgraphen bewertet, wobei die Bewertung des Systemabhängigkeitsgraphen umfasst, dass: eine Variable in der Softwarecodespezifikation ausgewählt wird; ein Durchlaufen zu ausgewählten Elementen des Systemabhängigkeitsgraphen stattfindet, wobei die ausgewählten Elemente mit der ausgewählten Variable in Verbindung stehen; nur die ausgewählten Elemente des Systemabhängigkeitsgraphen bewertet werden, um jene der ausgewählten Elemente zu identifizieren, bei denen ein Zustand der ausgewählten Variable modifiziert wird; und Ausgangsdaten erzeugt werden, die die identifizierten der ausgewählten Elemente des Systemabhängigkeitsgraphen angeben, bei denen der Zustand der ausgewählten Variable modifiziert wird.
  10. Verfahren nach Anspruch 9, wobei das Durchlaufen zu ausgewählten Elementen des Systemabhängigkeitsgraphen, wobei die ausgewählten Elemente mit der ausgewählten Variable in Verbindung stehen, umfasst, dass eine Abhängigkeitsanalyse zum Auswählen der ausgewählten Elemente ausgeführt wird.
DE102011014830A 2010-03-29 2011-03-23 Verfahren und vorrichtung zum analysieren vonsoftware Withdrawn DE102011014830A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/748,537 2010-03-29
US12/748,537 US8584108B2 (en) 2010-03-29 2010-03-29 Method and apparatus for analyzing software

Publications (1)

Publication Number Publication Date
DE102011014830A1 true DE102011014830A1 (de) 2011-11-10

Family

ID=44657825

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102011014830A Withdrawn DE102011014830A1 (de) 2010-03-29 2011-03-23 Verfahren und vorrichtung zum analysieren vonsoftware

Country Status (3)

Country Link
US (1) US8584108B2 (de)
CN (1) CN102207901B (de)
DE (1) DE102011014830A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412668B2 (en) * 2009-10-14 2013-04-02 GM Global Technology Operations LLC Offline formal verification of executable models
EP2597566B1 (de) * 2010-07-20 2019-04-03 Hitachi, Ltd. Vorrichtung zur unterstützung von softwarewartung und damit verifizierte elektronische steuervorrichtung
CN102968372B (zh) * 2012-11-29 2016-05-11 中国矿业大学 具有程序分析功能的程序调试系统
CN103902273B (zh) * 2012-12-28 2017-07-07 华为技术有限公司 一种无损压缩系统依赖图的方法及装置
US20140195208A1 (en) * 2013-01-09 2014-07-10 GM Global Technology Operations LLC Efficient partition refinement based reachability checking for simulinks/stateflow models
US9569334B2 (en) * 2013-03-14 2017-02-14 Whitehat Security, Inc. Techniques for traversing representations of source code
US9710264B2 (en) * 2013-10-28 2017-07-18 International Business Machines Corporation Screen oriented data flow analysis
CN105700893A (zh) * 2016-02-23 2016-06-22 南京邮电大学 基于改进系统依赖图的llvm ir程序切片方法
US10268568B2 (en) 2016-03-29 2019-04-23 Infosys Limited System and method for data element tracing
CN106095663B (zh) * 2016-05-26 2017-06-27 西安交通大学 基于切片模型的程序回归错误定位方法
CN106203113B (zh) * 2016-07-08 2018-11-16 西安电子科技大学 安卓应用文件的隐私泄露监控方法
US9690553B1 (en) 2016-09-26 2017-06-27 International Business Machines Corporation Identifying software dependency relationships
CN107066256B (zh) * 2017-02-24 2020-08-04 中国人民解放军海军大连舰艇学院 一种基于时态的对象变更模型的建模方法
WO2020128655A1 (en) * 2018-12-21 2020-06-25 Abb Schweiz Ag System and method for effort estimation
US20200359652A1 (en) 2019-05-17 2020-11-19 Agri-King, Inc. Bacterial strain compositions and methods of using same

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5161216A (en) 1989-03-08 1992-11-03 Wisconsin Alumni Research Foundation Interprocedural slicing of computer programs using dependence graphs
US7302707B1 (en) 2002-01-18 2007-11-27 Cigital, Inc. Systems and methods for detecting software buffer security vulnerabilities
US7620946B2 (en) 2003-05-05 2009-11-17 Jeffry Thomas Russell Program slicing for codesign of embedded systems
US7631304B2 (en) * 2005-01-14 2009-12-08 Bearman Ian M Software tool with modeling of asynchronous program flow
CN1908893A (zh) * 2005-08-01 2007-02-07 王彤 程序逻辑结构图示方法及程序路径统计方法
US20070214391A1 (en) 2006-03-10 2007-09-13 International Business Machines Corporation Method and apparatus for testing software
JP5042315B2 (ja) * 2006-10-19 2012-10-03 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出

Also Published As

Publication number Publication date
CN102207901A (zh) 2011-10-05
US20110239204A1 (en) 2011-09-29
US8584108B2 (en) 2013-11-12
CN102207901B (zh) 2014-06-18

Similar Documents

Publication Publication Date Title
DE102011014830A1 (de) Verfahren und vorrichtung zum analysieren vonsoftware
DE102011014831A1 (de) Verfahren und vorrichtung zum analysieren vonsoftware mit einem kalibrierten wert
DE69932371T2 (de) Verschiebbare Instrumentationskennzeichen für die Prüfung und die Fehlerbeseitigung eines Computerprogramms
DE69826659T2 (de) Billige, leicht anzuwendende software für ein automatisches testsystem
DE69931004T2 (de) Verfahren und Vorrichtung zur Datenverarbeitung
DE102005042126A1 (de) Verfahren und Vorrichtung zum automatisierten Bewerten der Qualität eines Software-Quellcodes
DE102005031913A1 (de) Verfahren, System und Programm zur Modell-basierten Softwareentwicklung mit Testfallerzeugung und Bewertung
DE102004024262A1 (de) Wissensbasiertes Diagnosesystem für ein komplexes technisches System mit zwei getrennten Wissensbasen zur Verarbeitung technischer Systemdaten und zur Verarbeitung von Kundenbeanstandungen
DE102005046388A1 (de) Modellgestützte Diagnose und Reparatur mittels Ereignisprotokollierung
DE112011102727T5 (de) Steuerprogramm-Erzeugungsvorrichtung, Steuerprogramm-Erzeugungsprogramm und Steuerprogramm-Erzeugungsverfahren
DE102014102551A1 (de) Maschine und Verfahren zum Evaluieren von fehlschlagenden Softwareprogrammen
DE102015016413A1 (de) Leiterprogrammabrufvorrichtung, die dazu fähig ist, Leiterschaltungen basierend auf vorgegebenen Signaloperationsbedingungen abzurufen
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE102010033861A1 (de) Auf einer formellen Analyse basierte Entwicklung von Anforderungsspezifikationen
DE112015006551T5 (de) Speicherprogrammierbare Steuerung, Entwicklungswerkzeug und Entwicklungswerkzeugprogramm
EP2363809B1 (de) Verfahren zur Optimierung eines Steuerprogramms für Aktuatoren
EP3812949A1 (de) Konfigurierbarer digitaler zwilling
DE102022111835A1 (de) Verfahren und system zum bestimmen einer vorhergesagten vorgangszeit für einen fertigungsvorgang unter verwendung eines zeitvorhersagemodells
EP3340250B1 (de) Bauteilidentifikation bei der fehlerbehandlung von medizinischen geräten
DE102018117509A1 (de) Verfahren, Vorrichtung, Computerprogramm und Computerprogrammprodukt zum Überwachen einer Wirkkette eines Wirknetzes eines Fahrzeuges
EP4016307A1 (de) Computersystem, verfahren und computerprogramm zur auditierung komplexer informationen
DE112004001955T5 (de) Benutzeroberflächensoftware-Entwurfssystem
DE60213786T2 (de) System und verfahren zur automatischen erfassung von aussagen in einer java-kompatibilitätsprüfumgebung
DE10325513B4 (de) Verfahren und Vorrichtung zum Erstellen eines Verhaltensaspekts einer Schaltung zur formalen Verifikation
DE102005018063A1 (de) Verfahren zum Empfangen und Zuordnen von bedingten abhängigen Testergebnissen

Legal Events

Date Code Title Description
R012 Request for examination validly filed

Effective date: 20110323

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20131001