DE19717630A1 - Verfahren zur automatischen Darstellung mindestens eines Automaten - Google Patents

Verfahren zur automatischen Darstellung mindestens eines Automaten

Info

Publication number
DE19717630A1
DE19717630A1 DE19717630A DE19717630A DE19717630A1 DE 19717630 A1 DE19717630 A1 DE 19717630A1 DE 19717630 A DE19717630 A DE 19717630A DE 19717630 A DE19717630 A DE 19717630A DE 19717630 A1 DE19717630 A1 DE 19717630A1
Authority
DE
Germany
Prior art keywords
variable
source code
state
machine
automat
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
DE19717630A
Other languages
English (en)
Inventor
Erwin Dr Thurner
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Priority to DE19717630A priority Critical patent/DE19717630A1/de
Publication of DE19717630A1 publication Critical patent/DE19717630A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Description

Die Erfindung betrifft die automatische Darstellung mindestens eines Automaten aus dem Source-Code einer strukturierten Programmiersprache durch einen Rechner.
Heutzutage ist es in zunehmendem Maße üblich, eine Spezifikationen eines Protokolls, einer Schnittstelle u. a. in Source-Code, beispielsweise in der Programmiersprache C, vorzunehmen. Eine textuelle Spezifikation (Beschreibung) ist mit erheblichem zusätzlichen Aufwand verbunden und kann oftmals nicht mit der Weiterentwicklung des Source-Codes Schritt halten. Dabei ist eine textuelle Spezifikation oft fehlerhaft und unvollständig.
Wenn man ein nur als Source-Code spezifiziertes Produkt benutzen will, ist es unvermeidlich, eine detaillierte Analyse des Source-Codes vorzunehmen, um das Produkt den eigenen Bedürfnissen anzupassen.
Der Aufwand für solch eine Untersuchung ist groß, da im Beispiel des SCT-Protokolls ca. 1MByte Source-Code der Programmiersprache C betrachtet werden muß.
Ein endlicher Automat ist bekannt z. B. aus H.-J.Schneider, Lexikon der Informatik und Datenverarbeitung, 2. Auflage, Oldenbourg Verlag, München 1986, TSBN 3-486-22662-2, S. 51-54.
Die der Erfindung zugrundeliegende Aufgabe besteht darin, ein Verfahren anzugeben, das es ermöglicht, mindestens einen Automaten, der in einem Source-Code (Programmcode, Quellcode) enthalten ist, aus diesem Source-Code zu extrahieren und somit die durch diesen mindestens einen Automaten spezifizierte Funktionalität des Source-Codes in übersichtlicher Form aufzuzeigen, beispielsweise als eine Automatentabelle.
Diese Aufgabe wird gemäß den Merkmalen des Patentanspruchs 1 gelöst.
Die Erfindung ermöglicht die automatische Darstellung mindestens eines Automaten aus einem mindestens eine Variable enthaltenden Source-Code einer strukturierten Programmiersprache durch einen Rechner. Dazu wird eine mindestens eine Variable, die die betrachteten Automatenzustände ganz oder teilweise darstellt, ausgewählt und es wird in dem Source-Code nach dieser mindestens einen Variablen gesucht. Eine aus dem Source-Code resultierende Veränderung der mindestens einen Variablen wird als Zustandsübergang in einen Zustand dargestellt. Ist der Source-Code vollständig analysiert worden, kann der Automat in einer vorgebbaren Weise dargestellt werden.
Die Darstellung des Automaten bezieht sich sowohl auf eine Darstellung im Speicher des Rechners als auch auf andere Möglichkeiten der Darstellung, z. B. auf einem Massenspeicher oder einem Anzeigegerät.
Es ist somit ersichtlich, daß durch die Erfindung der implizit in dem Source-Code vorliegende mindestens eine Automat dargestellt wird, indem Veränderungen der mindestens einen Variable in dem durch den Source-Code definierten Ablauf dargestellt werden. Diese Darstellung bezieht sich auf die automatentypische Form, also Zustände für mögliche Werte der mindestens einen Variablen und Zustandsübergänge für Veränderungen der mindestens einen Variablen, die von einem Zustand in einen anderen Zustand führen.
Die Veränderung der mindestens einen Variablen erfolgt nach typischen Sprachkonstrukten einer strukturierten Programmiersprache. So vollzieht sich eine spontane Veränderung der mindestens einen Variablen bei einer Zuweisung, z. B. a=a+3 (mit a als Variable). Eine weitere mögliche Veränderung geschieht bei einer bedingten Zuweisung, typischerweise bei einer strukturierten Programmiersprache als IF-THEN-ELSE-Sprachkonstrukt realisiert. Eine, in der Programmiersprache C übliche SWITCH-Anweisung fällt ebenfalls in diese Sprachkonstrukt-Kategorie, da es sich um eine geschachtelte IF-THEN-ELSE-Anweisung handelt. Schließlich gibt es noch ein GOTO-Sprachkonstrukt, das ebenfalls für strukturierte Programmiersprachen eigentümlich ist und eine Veränderung einleiten kann.
Die gesuchte mindestens eine Variable kann in verschiedenen Unterprogrammen oder verschiedenen Dateien unterschiedliche Namen annehmen. Es handelt sich aber immer um dieselbe Variable, die durch Analyse der Sprachkonstrukte, z. B. Funktionsaufrufe, der strukturierten Programmiersprache eindeutig zugeordnet werden kann. Es ist beispielsweise möglich, daß die Variable an eine Funktion übergeben wird, aber innerhalb der Funktion einen anderen Namen hat, als außerhalb der Funktion. Eine globale Darstellung in dem Automaten ist durch Verfolgung der Veränderung des Namens über Funktionen und auch über Dateien hinaus möglich. Die Umsetzung dieser Verfolgung ist dem Fachmann aus der Sprachdefinition der jeweiligen strukturierten Programmiersprache hinreichend bekannt.
Ein Automat, der durch die Erfindung dargestellt wird, wird vorzugsweise mit einer formalen Spezifikation, die dem Source-Code entspricht, verglichen. Dadurch wird der Automat verifiziert und überprüft, ob der Source-Code wirklich der Spezifikation entspricht.
Eine Verwendungsmöglichkeit der Erfindung besteht in der Synthese von Hardware aus der Automatenbeschreibung.
Um Nebenläufigkeit eines Systems, das mehreren Automaten entspricht, zu erfassen, werden mehrere kommunizierende Automaten als Petri-Netz dargestellt.
Weiterbildungen ergeben sich aus den abhängigen Ansprüchen.
Ausführungsbeispiele der Erfindung werden nachfolgend anhand der Zeichnungen dargestellt und erläutert.
Es zeigen
Fig. 1 ein Blockdiagramm, das Schritte eines Verfahrens zur Darstellung eines Automaten enthält,
Fig. 2 ein Blockdiagramm, das Sprachkonstrukte einer strukturierten Programmiersprache zeigt, die im Zusammenhang mit einer Veränderung einer Variable stehen,
Fig. 3 einen Programmcode in der Programmiersprache C,
Fig. 4 eine Darstellung eines Automaten, der dem Programmcode aus Fig. 3 entspricht,
Fig. 5 zwei Automaten mit Kommunikationsbeziehungen,
Fig. 6 gemeinsame formale Darstellung der beiden Automaten aus Fig. 5 in einem Petri-Netz unter Berücksichtigung der jeweiligen Kommunikationsbeziehungen zwischen den Automaten.
In Fig. 1 sind Schritte eines Verfahrens in Form eines Blockdiagramms dargestellt. In einem Schritt 1a wird mindestens eine Variable ausgewählt, in Schritt 1b nach dieser mindestens einen Variablen im Source-Code gesucht und in Schritt 1c die Veränderung dieser mindestens einen Variablen in Form eines Zustandsübergangs in einen Zustand dargestellt. In Schritt 1d wird geprüft, ob der Source-Code vollständig analysiert wurde. . Wenn dies der Fall ist, so wird mit Schritt 1e fortgefahren und der Automat dargestellt, ansonsten wird zu Schritt 1b gesprungen und das Verfahren, wie beschrieben, iteriert.
In Fig. 2 sind Sprachkonstrukte einer strukturierten Programmiersprache aufgezeigt die im Zusammenhang mit einer Veränderung der mindestens einen Variablen stehen (siehe Block 2a).
Im Block 2b ist die Zuweisung aufgeführt, bei der eine Variable einen Wert erhält. In den Blöcken 2c und 2d sind die Abfragebedingung (IF-THEN-ELSE-Anweisung oder SWITCH- Anweisung) und die Sprunganweisung (GOTO-Anweisung) aufgeführt.
Eine Veränderung kann demnach spontan (siehe Block 2b), nach einer IF-THEN-ELSE-Anweisung oder innerhalb einer SWITCH- Anweisung (Block 2c) oder mit Hilfe einer GOTO-Anweisung (Block 2d) erfolgen.
Fig. 3 zeigt beispielhaft einen Ausschnitt aus einem Programmcode, geschrieben in der Programmiersprache C. Innerhalb der Funktion "FullStore" wird eine SWITCH-Anweisung gezeigt, die abhängig vom Zustand der Variablen "cTagState" unterschiedliche Aktion bewirkt. Es gibt zwei mögliche Zustände CLEAN und "DIRTY", die die Variable "cTagState" im hier dargestellten Beispiel annehmen kann. Befindet sich die Variable "cTagState" im Zustand "CLEAN", so erfolgt ein Zustandsübergang in den Zustand "DIRTY", wenn die Variable "mods" den Wert "1" enthält, ansonsten findet kein Zustandsübergang statt. Ist die Variable "cTagState" hingegen im Zustand "DIRTY", erfolgt kein Zustandsübergang.
In Fig. 4 ist der aus der Analyse des Programmcodes von Fig. 3 gewonnene Automat dargestellt. Es gibt einen Zustand "CLEAN" 4a und einen Zustand "DIRTY" 4d, der hier als Endzustand angenommen ist. Ein Zustandsübergang 4b von Zustand 4a nach Zustand 4d erfolgt abhängig vom Wert der Variable "mods". Im Zustand 4d erfolgt kein Zustandsübergang in einen anderen Zustand, der Automat bleibt im Zustand 4d, angedeutet durch die Schleife 4c.
In Fig. 5 sind zwei Automaten AI und A2 in üblicher Notation mit Zuständen und entsprechenden Zustandsübergängen dargestellt. Der Automat A1 umfaßt hierbei die Zustände 1, 2, 3 und 4, der Automat A2 umfaßt die Zustände 5, 6 und 7. Als Anfangszustände sind der Zustand 1 im Automaten A1 und der Zustand 5 im Automaten A2 festgelegt.
Für die Kommunikationsbeziehung zwischen den beiden Automaten A1 und A2 gibt es keine formale Beschreibung. Hilfsweise angedeutet ist diese Kommunikationsbeziehung in Fig. 5 mit den beiden Verbindungen K1 und K2. Wenn sich der Automat A2 im Zustand 6 befindet, geht der Automat A1 vom Zustand 2 in den Zustand 3 über (siehe Kommunikationskanal K2). Befindet sich der Automat A2 hingegen im Zustand 7, geht der Automat A1 vom Zustand 2 in den Zustand 4 über (siehe Kommunikationskanal K1).
In Fig. 6 wird eine formale Beschreibung der Kommunikationsbeziehung, wie in Fig. 5 angedeutet, zwischen verschiedenen Automaten dargestellt anhand eines Petri- Netzes. Ein Petri-Netz enthält Zustandsknoten, in Fig. 6 gezeigt durch die Zustandsknoten 1 bis 9, die entweder besetzt (siehe Zustandsknoten 1 und 5, angedeutet durch den kleineren schwarzen Kreis) oder frei (alle anderen Zustandsknoten 2 bis 4 und 6 bis 9) sein können, und Übergangsknoten (auch: Transition, Zustandsübergang), in Fig. 6 angedeutet durch die Übergangsknoten t1 bis t7.
Die Kommunikationsbeziehung aus Fig. 5 wird in Form eines Petri-Netzes derart aufgelöst, daß zwei zusätzliche Zustandsknoten 8 und 9 eingefügt werden. Bei einem Übergang von Zustandsknoten 6 nach Zustandsknoten 7 erfolgt gleichermaßen eine "besetzt"-Belegung der Zustandsknoten 7 und 9. Jetzt erst kann ein Übergang von Zustandsknoten 2 nach 4 erfolgen, da Zustandsknoten 9 besetzt ist. Dies entspricht einer Synchronisation, der Automat A2 kommuniziert mit dem Automaten A1.
Mit der Petri-Netz-Darstellung ist es also möglich, mehrere Automaten, z. B. für jeweils eine Variable, miteinander in Wechselwirkung zu setzen und somit das Gesamtsystem darzustellen. Das Petri-Netz stellt die formale Voraussetzung für die Beschreibung eines solchen Gesamtsystems bereit.

Claims (4)

1. Verfahren zur automatischen Darstellung mindestens eines Automaten aus einem mindestens eine Variable enthaltenen Source-Code einer strukturierten Programmiersprache durch einen Rechner,
  • a) bei dem die mindestens eine Variable ausgewählt wird,
  • b) bei dem in dem Source-Code nach der mindestens einen Variablen gesucht wird,
  • c) bei dem eine Veränderung der mindestens einen Variablen als ein Zustandsübergang in einen Zustand dargestellt wird,
  • d) bei dem, wenn der Source-Code noch nicht vollständig analysiert worden ist, zu Schritt b) verzweigt wird,
  • e) bei dem aus den ermittelten Zustandsübergängen und Zuständen der Automat dargestellt wird.
2. Verfahren nach Anspruch 1, bei dem die Veränderung im Zusammenhang mit einem der folgenden Sprachkonstrukte der strukturierten Programmiersprache definiert ist:
  • a) implizite Veränderung durch Zuweisung (a=a+b),
  • b) Zuweisung abhängig von einer Bedingung (IF-THEN-ELSE oder SWITCH),
  • c) Sprunganweisung (GOTO).
3. Verfahren nach Anspruch 1 oder 2, bei dem der Automat verifiziert wird, indem der Automat mit einer dem Source-Code entsprechenden formalen Spezifikation verglichen wird.
4. Verfahren nach einem der Ansprüche 1 bis 3, bei dem ein weiterer Automat aus dem Source-Code dargestellt wird, wobei Kommunikationsbeziehungen zwischen den Automaten dadurch registriert werden, daß die Automaten als Petri-Netz dargestellt werden.
DE19717630A 1997-04-25 1997-04-25 Verfahren zur automatischen Darstellung mindestens eines Automaten Withdrawn DE19717630A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19717630A DE19717630A1 (de) 1997-04-25 1997-04-25 Verfahren zur automatischen Darstellung mindestens eines Automaten

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19717630A DE19717630A1 (de) 1997-04-25 1997-04-25 Verfahren zur automatischen Darstellung mindestens eines Automaten

Publications (1)

Publication Number Publication Date
DE19717630A1 true DE19717630A1 (de) 1998-11-05

Family

ID=7827806

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19717630A Withdrawn DE19717630A1 (de) 1997-04-25 1997-04-25 Verfahren zur automatischen Darstellung mindestens eines Automaten

Country Status (1)

Country Link
DE (1) DE19717630A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750283A (zh) * 2019-10-15 2020-02-04 青岛易触科技有限公司 一种自动售货机驱动程序远程升级方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SCHNEIDER, H.-J.: Lexikon der Informatik und Datenverarbeitung, 2. Aufl., Oldenbourg Verlag, München 1986, S. 51-54 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750283A (zh) * 2019-10-15 2020-02-04 青岛易触科技有限公司 一种自动售货机驱动程序远程升级方法及系统

Similar Documents

Publication Publication Date Title
EP0268285B1 (de) Verfahren und Schaltungsanordnung zum Urladen eines Zweitrechners
DE19837871C2 (de) Verfahren zum automatischen Erzeugen eines Programms
DE19581754B4 (de) System und Verfahren zum bedingten Kompilieren einer Software-Kompiliereinheit
DE10043905A1 (de) Stromkopplung bei der gemischten Simulation von Schaltungen
EP0838054B1 (de) Verfahren und steuereinrichtung für eine graphische steuerung von abläufen in einem netzwerkmanagementsystem
EP1005216A2 (de) Verfahren und Vorrichtung zur Validierung von Konfigurationsdaten für Telekommunikationssysteme
DE19717630A1 (de) Verfahren zur automatischen Darstellung mindestens eines Automaten
EP3812949A1 (de) Konfigurierbarer digitaler zwilling
WO2001086402A2 (de) Anzeigesteuerung mit aktiven hypertextdokumenten
DE10325513B4 (de) Verfahren und Vorrichtung zum Erstellen eines Verhaltensaspekts einer Schaltung zur formalen Verifikation
EP0603228B1 (de) Verfahren zum suchen nach einem mit einem suchobjekt identischen oder ähnlichen objekt in einer objektbibliothek----------------
DE10328237A1 (de) Verfahren zum Erzeugen von Testdaten zum Austesten der Funktionsfähigkeit einer datenverarbeitenden Schaltung
DE102004023634B4 (de) Verfahren zur Vollständigkeits- und Konsistenzprüfung einer Informationsbibliothek
DE2613703A1 (de) Schaltungsanordnung zum uebersetzen von programmtexten
WO2000068789A2 (de) Verfahren, anordnung und computerprogramm zum vergleich einer ersten spezifikation mit einer zweiten spezifikation
WO2004072850A2 (de) Verfahren und vorrichtung zum modifizieren von modular aufgebauten nachrichten
EP2026202A1 (de) Verfahren zur Visualisierung von Selektionskontexten in einem Automatisierungsumfeld
DE102021201658A1 (de) Testausführungssystem, Testspezifikationsvorrichtung und Verfahren zum Betreiben eines Testausführungssystems
EP1079306B1 (de) Verfahren zum Testen eines Programmsystems sowie zugehörige Datenverarbeitungsanlage und zugehöriges Programm
DE10313589A1 (de) Verfahren und Vorrichtung zum Modifizieren von modular aufgebauten Nachrichten
WO2005124588A1 (de) Verfahren zur automatischen synchronisierung eines computergestützten dateisystems auf einer mehrzahl von computern
DE102006014348A1 (de) Verfahren zur Suche nach Datensätzen in einem Datenbestand
DE102004006089A1 (de) Testfälle für eine Testvorrichtung
DE102019135542A1 (de) Verfahren zum Erzeugen einer Graphen-Datenbank
DE10254530A1 (de) Verfahren und System zur wissensbasierten Transformation von textuellen Programmen, die sich auf die Softwarekonfiguration eines verteilten Leitsystems beziehen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal
8165 Unexamined publication of following application revoked