DE19717630A1 - Verfahren zur automatischen Darstellung mindestens eines Automaten - Google Patents
Verfahren zur automatischen Darstellung mindestens eines AutomatenInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program 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.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750283A (zh) * | 2019-10-15 | 2020-02-04 | 青岛易触科技有限公司 | 一种自动售货机驱动程序远程升级方法及系统 |
-
1997
- 1997-04-25 DE DE19717630A patent/DE19717630A1/de not_active Withdrawn
Non-Patent Citations (1)
Title |
---|
SCHNEIDER, H.-J.: Lexikon der Informatik und Datenverarbeitung, 2. Aufl., Oldenbourg Verlag, München 1986, S. 51-54 * |
Cited By (1)
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 |