DE19837871A1 - Verfahren zum automatischen Erzeugen eines Programms - Google Patents

Verfahren zum automatischen Erzeugen eines Programms

Info

Publication number
DE19837871A1
DE19837871A1 DE19837871A DE19837871A DE19837871A1 DE 19837871 A1 DE19837871 A1 DE 19837871A1 DE 19837871 A DE19837871 A DE 19837871A DE 19837871 A DE19837871 A DE 19837871A DE 19837871 A1 DE19837871 A1 DE 19837871A1
Authority
DE
Germany
Prior art keywords
component
state
program
condition
iss
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.)
Granted
Application number
DE19837871A
Other languages
English (en)
Other versions
DE19837871C2 (de
Inventor
Manfred Broy
Radu Grosu
Ingolf Krueger
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to DE19837871A priority Critical patent/DE19837871C2/de
Priority to US09/378,204 priority patent/US6405361B1/en
Publication of DE19837871A1 publication Critical patent/DE19837871A1/de
Application granted granted Critical
Publication of DE19837871C2 publication Critical patent/DE19837871C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Ein Verfahren zum automatischen Erzeugen eines zustandsbasierten Programms (14A, 14B, 14C) für eine Komponente (A, B, C) eines aus mehreren miteinander kommunizierenden Komponenten (A, B, C) bestehenden Systems (S) weist die Schritte auf, alle durch die Spezifikation (10) des Systems (S) definierten Ablaufbeschreibungen der Komponente (A, B, C) zu bestimmen, die Ablaufbeschreibungen zu normalisieren, eine zustandsbasierten Spezifikation der Komponente (A, B, C) zu bestimmen, und das zustandsbasierte Programm (14A, 14B, 14C) zu bestimmen. Durch die Erfindung wird der Programmentwicklungsprozeß verkürzt, der erforderliche Aufwand verringert, und mögliche Fehlerquellen werden vermieden.

Description

Die Erfindung betrifft ein Verfahren zum automatischen Er­ zeugen eines zustandsbasierten Programms. Das Programm ist für eine Komponente eines aus mehreren miteinander kommuni­ zierenden Komponenten bestehenden Systems vorgesehen. Eine interaktionsbasierte Spezifikation des Systems bildet die Grundlage für die automatische Programmerzeugung. Die Erfin­ dung dient zum automatischen Erzeugen aller Arten von Pro­ grammen. Insbesondere ist ein Einsatz der Erfindung bei kom­ plexen, interagierenden Programmen, zum Beispiel für Tele­ kommunikationsanwendungen, vorgesehen.
Die Programmentwicklung erfolgt heute im allgemeinen in ei­ nem mehrphasigen Prozeß. Zunächst werden die Anforderungen an das zu entwickelnde System gesammelt und erste Lösungsan­ sätze erstellt. Später werden diese Lösungsansätze schritt­ weise ausgearbeitet, bis schließlich eine ausführbare Imple­ mentierung in Form eines Programms vorliegt.
Zur Spezifikation eines Systems kommunizierender Komponenten in den frühen Entwurfsphasen sind insbesondere interaktions­ basierte Formalismen bekannt. Eine Spezifikation in einem solchen Formalismus enthält Beschreibungen von möglichen Ab­ läufen des Systems, wobei die Kommunikation (Interaktion) zwischen den Systemkomponenten im Vordergrund steht. Bei­ spiele für interaktionsbasierte Ablaufbeschreibungen sind Message Sequence Charts (MSCs) nach der Empfehlung Z.120 der ITU (International Telecommunication Union) sowie Sequenz­ diagramme in der UML (Unified Modeling Language) der OMG (Object Management Group).
Wenn aus einer derartigen interaktionsbasierten Spezifika­ tion des Systems ohne maschinelle Unterstützung ein lauffä­ higes Programm entwickelt werden soll, ist ein sehr hoher Einsatz an menschlicher Arbeitszeit erforderlich. Problema­ tisch sind hierbei sowohl die entstehenden Kosten als auch die lange Entwicklungsdauer, die sich auch durch eine Erhö­ hung der Mitarbeiterzahl nicht beliebig verkürzen läßt. Ins­ besondere bei komplexen, interagierenden Anwendungen, wie sie beispielsweise auf dem Telekommunikationssektor üblich sind, ist der Entwicklungsprozeß ferner sehr fehleranfällig. Ein Großteil der Gesamtkosten entfällt in der Regel auf die Fehlersuche und -beseitigung.
Die Erfindung hat demgemäß die Aufgabe, den Programmentwick­ lungsprozeß zu verkürzen, den erforderlichen Aufwand zu ver­ ringern und mögliche Fehlerquellen zu vermeiden. Insbesonde­ re sollen durch die Erfindung die Phasen der Programment­ wicklung von der interaktionsbasierten Systemspezifikation zum ausführbaren Programm ganz oder zum Teil automatisiert werden.
Erfindungsgemäß wird diese Aufgabe durch ein Verfahren mit den Merkmalen des Anspruchs 1 gelöst. Die abhängigen An­ sprüche betreffen bevorzugte Ausgestaltungen der Erfindung. Durch die Aufzählung der Verfahrensschritte in Anspruch 1 soll keine festgelegte Reihenfolge definiert werden; viel­ mehr können die einzelnen Schritte auch in anderer Reihen­ folge oder (quasi-)parallel oder ineinander oder mit Schrit­ ten anderer Verfahren verzahnt ausgeführt werden. Die Ver­ wendung des unbestimmten Artikels im Ausdruck "Verfahren zum automatischen Erzeugen eines zustandsbasierten Programms" soll den Ball einschließen, daß in einem einzigen Verfah­ rensablauf gemeinsam mehrere zustandsbasierte Programme für je eine Komponente des Systems erzeugt werden.
Die Erfindung geht von der Grundidee aus, durch eine Reihe geeigneter Umsetzungsschritte automatisch ein zustandsba­ siertes Programm aus der Spezifikation des Systems zu erzeu­ gen. Damit erleichtert die Erfindung den Entwurfsprozeß ganz wesentlich, weil die aufwendige, manuelle Umsetzung ent­ fällt. Die Programmierarbeit wird auf das Erstellen der Spe­ zifikation des Systems verlagert. Mit anderen Worten erwei­ tert die Erfindung die Funktionalität bekannter Compiler, weil die automatische Programmgenerierung nicht mehr einen Sourcecode in einer Programmiersprache erfordert, sondern eine bloße Systemspezifikation ausreicht.
Die Erfindung geht von einer Spezifikation eines aus mehre­ ren miteinander kommunizierenden Komponenten bestehenden Sy­ stems aus. Die Komponenten können insbesondere räumlich von­ einander getrennte Datenverarbeitungseinrichtungen sein, wie dies zum Beispiel bei Telekommunikationsanwendungen häufig der Fall ist. Die Komponenten können jedoch auch lediglich logisch voneinander getrennt sein, um beispielsweise das Sy­ stem zu gliedern oder die Komponenten untereinander abzu­ schotten. Die Komponenten können in diesem Fall nebenläufige Prozesse in einer Datenverarbeitungsanlage oder sogar ein­ zelne Module eines größeren Programms sein. Auch Mischformen zwischen den beiden Extremen einer räumlichen und logischen Trennung sind vorgesehen.
Die Kommunikation zwischen den Komponenten ist auf alle Ar­ ten möglich, zum Beispiel über uni- oder bidirektionale Kom­ munikationskanäle oder synchronisierende Kommunikationsme­ chanismen. Die Kommunikation kann über beliebige Protokolle abgewickelt werden. Insbesondere können die Komponenten durch Netzwerke oder geeignete Betriebssystemdienste mitein­ ander verbunden sein. Auch eine Kommunikation über gemeinsa­ me Register oder Speicherbereiche ist möglich.
Die Spezifikation des Systems enthält erfindungsgemäß inter­ aktionsbasierte Ablaufbeschreibungen. Solche Ablaufbeschrei­ bungen sind zum Beispiel die eingangs bereits erwähnten Message Sequence Charts (MSCs) oder UML-Sequenzdiagramme. Für das erfindungsgemäße Verfahren ist nur der Informations­ gehalt dieser Beschreibungen hinsichtlich möglicher System­ abläufe von Bedeutung; die konkrete textuelle und/oder gra­ fische Repräsentation ist unerheblich. Daher können als Sy­ stemspezifikationen alle Beschreibungstechniken eingesetzt werden, in denen Systemkomponenten und deren Interaktion darstellbar sind.
Als Ergebnis des erfindungsgemäßen Verfahrens wird ein zu­ standsbasiertes Programm für je eine Komponente des Systems generiert. Dieses Programm kann ebenfalls eine beliebige textuelle und/oder grafische Repräsentation aufweisen. We­ sentlich ist nur, daß durch das Programm Zustände und Zu­ standsübergänge sowie Kommunikationsaktionen beschrieben werden.
In bevorzugten Ausführungsformen wird das zustandsbasierte Programm durch einen endlichen Automaten (gerichteter Graph mit Anfangszustand und akzeptierenden Endzuständen) oder einen Büchi-Automaten (gerichteter Graph mit Anfangszustand und Akzeptanzkriterium) oder eine SDL-Darstellung (SDL = Specification and Description Language der ITU) oder einen Statechart-Automaten oder einen ROOM-Automaten (ROOM = Real- Time Object-Orientated-Modeling) repräsentiert.
Hinsichtlich endlicher Automaten wird allgemein auf das Buch "Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie" von J. E. Hopcroft und J. D. Ullman, Addison Wesley, 2. korrigierter Nachdruck, 1993, verwiesen. Insbesondere sind auf den Seiten 47ff dieses Buches Verfah­ ren zur Ableitung ausführbarer Programme aus Automatenbe­ schreibungen gezeigt. Das Buch "Real-Time Object-Orientated Modeling" von B. Selic, G. Gullekson und P. T. Ward, Wiley, 1994, enthält eine Beschreibung von ROOM-Automaten sowie von Werkzeugen wie z. B. ObjecTime (http://www.objectime.com), die Automatenbeschreibungen auszuführen und in andere Pro­ gramme umzuformen vermögen. Die an diesen Fundstellen ent­ haltenen Erläuterungen werden hiermit in die vorliegende Be­ schreibung aufgenommen.
In anderen bevorzugten Ausführungsformen sind beliebige an­ dere zustandsorientierte Formalismen und Sprachen für das zustandsbasierte Programm möglich. Das zustandsbasierte Pro­ gramm ist vorzugsweise ein ausführbares Programm. Es kann unmittelbar auf einem Rechner lauffähig sein, oder es kann mittels eines geeigneten Interpreters ausführbar oder mit­ tels eines geeigneten Compilers in einen ausführbaren Kode übersetzbar sein. In Ausführungsalternativen können zusätz­ liche manuelle Verfeinerungsschritte erforderlich sein, um ein ausführbares Programm zu erhalten.
Bevorzugte Anwendungsgebiete der Erfindung finden sich auf den Gebieten der Telekommunikation und der Computernetzwer­ ke, insbesondere bei der Implementierung komplexer Protokol­ le für alle Arten von Vermittlungsanlagen, Zwischenstationen und Endgeräten, um einen flexiblen und gegen Fehlfunktionen abgesicherten Daten- und Nachrichtenaustausch bereitzustel­ len. Ferner ist die Erfindung zum Erzeugen von Programmen für reaktive Systeme, insbesondere Regelungs- und Steue­ rungssysteme als Bestandteile technischer Geräte (etwa im Anlagenbau, in der Automatisierungstechnik, in der Avionik, im KFZ-Bereich, in der Telematik und/oder in der Konsumelek­ tronik) einsetzbar. Weitere Anwendungsgebiete sind die Gene­ rierung von Benutzerschnittstellen, insbesondere für Geräte der genannten technischen Bereiche, sowie die Erzeugung von Datenbankabfrageschemata.
Mehrere Ausführungsbeispiele und -alternativen der Erfindung werden nun unter Hinweis auf die Zeichnungen genauer be­ schrieben. Es stellen dar:
Fig. 1 eine schematische Darstellung der automatischen Pro­ grammerzeugung durch das erfindungsgemäße Verfahren,
Fig. 2a bis Fig. 2d Beispiele für interaktionsbasierte Ab­ laufbeschreibungen,
Fig. 3 ein Beispiel für eine Spezifikation eines Systems,
Fig. 4 ein Flußdiagramm eines Ausführungsbeispiels der Er­ findung,
Fig. 5 eine Ablaufbeschreibung einer Komponente A,
Fig. 6 eine Ablaufbeschreibung der Komponente A mit einge­ fügter Start- und Endbedingung,
Fig. 7a und Fig. 7b je eine normalisierte Ablaufbeschreibung der Komponente A,
Fig. 8 eine zustandsbasierte Spezifikation der Komponente A,
Fig. 9 ein nichtdeterministisches, zustandsbasiertes Pro­ gramm für die Komponente A,
Fig. 10 ein deterministisches, zustandsbasiertes Programm für die Komponente A, und
Fig. 11a und Fig. 11b Darstellungen von optimierbaren bzw. optimierten Zustandsübergängen.
Das in Fig. 1 veranschaulichte Verfahren betrifft ein System S, das drei als eigenständige Computer ausgestaltete Kompo­ nenten A, B, C aufweist. Die Komponenten A, B, C kommunizie­ ren miteinander über unidirektionale Kanäle (in Fig. 1 als durchgezogene Pfeile gezeigt), die durch geeignete Netzwerk­ dienste bereitgestellt werden. Eine Spezifikation 10 des Sy­ stems S beschreibt die möglichen Kommunikationsabläufe (In­ teraktionen) zwischen den Komponenten A, B, C.
Die Spezifikation 10 dient als Eingabe (gepunkteter Pfeil in Fig. 1) für einen Rechner 12, beispielsweise einen üblichen Arbeitsplatzrechner, der das hier beschriebene Verfahren automatisch ausführt. Als Ausgaben (gestrichelte Pfeile in Fig. 1) erzeugt der Rechner 12 je ein zustandsbasiertes Pro­ gramm 14A, 14B, 14C für die drei Komponenten A, B, C. Die Programme 14A, 14B, 14C sind auf den mit einem geeigneten Interpreter ausgestatteten Komponenten A, B, C unmittelbar ablauffähig. Je nach einer Auswahl des Benutzers können in jedem Durchlauf Programme 14A, 14B, 14C für alle Komponenten A, B, C des Systems S oder für nur eine oder einige dieser Komponenten A, B, C erzeugt werden.
Die Spezifikation 10 des Systems S weist mehrere inter­ aktionsbasierte Ablaufbeschreibungen auf, die in dem hier gezeigten Ausführungsbeispiel als Message Sequence Charts (MSCs) nach der Empfehlung Z.120 der ITU ausgestaltet sind. Der Inhalt dieser Empfehlung wird hiermit in die vorliegende Beschreibung aufgenommen. Vier MSCs für die Komponenten A und B sind beispielhaft in Fig. 2a bis Fig. 2d gezeigt und dort mit den Namen ISS, A_ISF, A_TC bzw. A_TE bezeichnet. Bei den MSCs A_ISF, A_TC bzw. A_TE sind die jeweiligen Kom­ munikationspartner der Komponente A der Einfachheit halber weggelassen worden.
Jede Komponente in einer Ablaufbeschreibung ist durch eine senkrechte Achse repräsentiert, die von einem offenen Balken als Startpunkt zu einem geschlossenen Balken als Endpunkt verläuft. Kommunikationsaktionen zwischen den Komponenten sind durch beschriftete Pfeile vom Sender zum Empfänger dar­ gestellt. Die Beschriftung kennzeichnet die Art der Nach­ richt. Beispielsweise sendet in Fig. 2a die Komponente A die Nachricht SREQ an die Komponente B, die nach dem Empfang ih­ rerseits die Nachricht SACK an die Komponente A schickt.
Ferner können mit den Komponenten Bedingungen assoziiert sein. Eine Bedingung kennzeichnet den Zustand der entspre­ chenden Komponente zu dem durch die Position der Bedingung auf der Komponentenachse angegebenen Zeitpunkt vor oder nach dem Senden bzw. Empfangen einer Nachricht. So gilt in Fig. 2a für die Komponente A vor dem Senden der Nachricht SREQ die Bedingung IDLE als Anfangsbedingung und nach dem Empfang der Nachricht SACK die Bedingung SENDING als End­ bedingung.
In Fig. 3 ist die Spezifikation 10 des Systems S veranschau­ licht. Im hier beschriebenen Ausführungsbeispiel enthält die Spezifikation 10 insgesamt vier Ablaufbeschreibungen 16 des Systems S, nämlich die MSCs ISS, A_ISF, A_TC und A_TE (wie in Fig. 2a bis Fig. 2d gezeigt). Ferner sind in der Spezifi­ kation 10 Daten 18 über den Anfangszustand und Daten 20 über die möglichen Endzustände jeder Komponente enthalten, die in mindestens einer der Ablaufbeschreibungen 16 auftritt. Die Daten 18 legen den Startzustand des zu erzeugenden zustands­ basierten Programms für die Komponente fest, und die Daten 20 bestimmen die zulässigen (akzeptierenden) Endzustände. In Ausführungsalternativen kann die Spezifikation 10 weitere Daten aufweisen, die für die Programmgenerierung herangezo­ gen werden.
Anhand des im Flußdiagramm von Fig. 4 gezeigten Verfahrens wird nun die Erzeugung eines zustandsbasierten Programms für die Komponente A erläutert. In einem ersten Schritt 22 wird für jede Ablaufbeschreibung 16 des Systems S, in der die Komponente A enthalten ist, eine auf diese Komponente be­ schränkte Ablaufbeschreibung erzeugt. Mit anderen Worten stellt die erzeugte Komponenten-Ablaufbeschreibung die Pro­ jektion der System-Ablaufbeschreibung 16 auf die Komponente A dar. Diese Projektion entsteht durch Entfernen aller von A verschiedenen Komponentenachsen zusammen mit den daran be­ findlichen Bedingungen, soweit diese Bedingungen nicht auch Bedingungen der Komponente A sind. Ferner werden alle Pfeile (Kommunikationsvorgänge) entfernt, die weder ihren Ursprung noch ihr Ziel bei der Komponente A haben.
Fig. 5 zeigt als Beispiel für den Verfahrensschritt 22 das MSC A_ISS, das eine aus der System-Ablaufbeschreibung ISS (Fig. 2a) gewonnene Ablaufbeschreibung der Komponente A dar­ stellt. Das MSC A_ISS wurde durch Projektion des MSC ISS auf die Komponente A gewonnen, indem die Komponentenachse B ent­ fernt wurde. Die MSCs von Fig. 2b bis Fig. 2d haben bereits die Form einer Ablaufbeschreibung der Komponente A, so daß insoweit keine Umwandlungsschritte mehr erforderlich sind.
In einem zweiten Schritt 24 (Fig. 4) wird jede nun vorlie­ gende Ablaufbeschreibung der Komponente A normalisiert. Eine normalisierte Ablaufbeschreibung weist genau eine Anfangs- und genau eine Endbedingung auf und enthält zwischen diesen beiden Bedingungen ausschließlich Kommunikationsaktionen. Als Anfangsbedingung wird hierbei eine unmittelbar auf den Startpunkt (offener Balken) einer Komponentenachse folgende Bedingung verstanden, und als Endbedingung eine dem Endpunkt (geschlossener Balken) unmittelbar vorhergehende Bedingung.
Der Normalisierungsschritt 24 wird in drei Teilschritten ausgeführt. In einem ersten Teilschritt 26 wird in jede Ab­ laufbeschreibung der Komponente A, die nicht mit einer Be­ dingung beginnt, eine Startbedingung eingefügt. Die Start­ bedingung entspricht dem durch die Daten 18 vorgegebenen Anfangszustand für die Komponente A.
Daraufhin wird in einem zweiten Teilschritt 28 in jede Ab­ laufbeschreibung, die nicht mit einer Bedingung endet, eine geeignete Endbedingung eingefügt. Im hier beschriebenen Aus­ führungsbeispiel ist die eingefügte Endbedingung identisch mit der (bereits ursprünglich vorhandenen oder in Teil­ schritt 26 eingefügten) Startbedingung der Ablaufbeschrei­ bung. In Ausführungsalternativen sind andere Endbedingungen möglich. In weiteren Ausführungsalternativen können in den Teilschritten 26 und 28 aus einer einzigen Ablaufbeschrei­ bung mehrere Ablaufbeschreibungen generiert werden, die sich nur durch die eingefügten Anfangs- und/oder Endbedingung(en) unterscheiden.
Fig. 6 zeigt als Beispiel ein aus dem MSC A_ISF (Fig. 2b) durch Ausführen der ersten beiden Teilschritte 26, 28 er­ haltenes MSC A_ISF1. Die durch die Daten 18 (Fig. 3) für die Komponente A definierte Bedingung IDLE wurde als Start- und als Endbedingung eingefügt. Die MSCs A_ISS (Fig. 5) und A_TC (Fig. 2c) und A_TE (Fig. 2d) weisen bereits je eine Start- und Endbedingung auf, so daß insoweit keine Umformung erfor­ derlich ist.
Als dritter Teilschritt 30 des Normalisierungsschritts 24 werden Ablaufbeschreibungen aufgespalten- die außer der Start- und der Endbedingung weitere Bedingungen aufweisen. Jeder Ausschnitt einer solchen Ablaufbeschreibung, der von je zwei Bedingungen begrenzt wird, bildet eine neue Ablauf­ beschreibung mit diesen beiden Bedingungen als Start- bzw. Endbedingung. In den so erhaltenen normalisierten Ablaufbe­ schreibungen tritt somit jede ursprünglich interne Bedingung je einmal als Start- und einmal als Endbedingung auf.
Das Ergebnis der im dritten Teilschritt 30 vorgenommenen Aufspaltung am Beispiel des MSC A_ISF1 (Fig. 6) ist in Fig. 7a und Fig. 7b gezeigt. Das MSC A_ISF2 entspricht dem Ausschnitt des MSC A_ISF1 von der Startbedingung IDLE zur internen Bedingung (und neuen Endbedingung) CONFL. Der Aus­ schnitt des MSC A_ISF1 von CONFL zur Endbedingung IDLE bil­ det das MSC A_ISF3. Die MSCs A_ISF2 und A_ISF3 sind somit aus dem MSC A_ISF durch Normalisierung entstanden. Die MSCs A_ISS, A_TC und A_TE liegen bereits in Normalform vor, so daß in Teilschritt 30 keine Aufspaltung erfolgt.
Als dritter Verfahrensschritt 32 wird aus den normalisierten Ablaufbeschreibungen der Komponente A eine zustandsbasierte Spezifikation bestimmt. Eine solche Spezifikation ist eine Mischform aus Ablaufbeschreibungen und zustandsbasierten Programmen. Das heißt, daß bereits ein Zustandsbegriff exi­ stiert, während Zustandsübergänge noch durch Ablaufbeschrei­ bungen repräsentiert werden.
Um die Zustandsmenge der zustandsbasierten Spezifikation der Komponente A zu erhalten, wird im hier beschriebenen Ausfüh­ rungsbeispiel die Menge der normalisierten Ablaufbeschrei­ bungen von A so partitioniert, daß alle Ablaufbeschreibungen einer Partition dieselbe Anfangsbedingung aufweisen. Jede solche Partition, die im folgenden einfach mit der entspre­ chenden Anfangsbedingung identifiziert wird, stellt einen Zustand der zustandsbasierten Spezifikation dar. Ferner bil­ det jede in einer normalisierten Ablaufbeschreibung von A auftretende Endbedingung einen Zustand, sofern nicht bereits ein entsprechender Zustand vorhanden ist. Mit anderen Worten kann somit die Zustandsmenge als Menge aller Anfangs- und Endbedingungen in den normalisierten Ablaufbeschreibungen von A angesehen werden, wobei gleiche Bedingungen je einen gemeinsamen Zustand bilden.
Als Zustandsübergänge (Transitionen) in der zustandsbasier­ ten Spezifikation dienen alle normalisierten Ablaufbeschrei­ bungen von A. Jede solche Ablaufbeschreibung definiert eine mögliche Transition von dem der Startbedingung entsprechen­ den Zustand zu demjenigen Zustand, der der Endbedingung zu­ geordnet ist. Der Anfangszustand der zustandsbasierten Spe­ zifikation der Komponente A ist der durch die Daten 18 (Fig. 3) angegebene Anfangszustand, und die durch die Daten 20 definierten Endzustände entsprechen den Endzuständen der zustandsbasierten Spezifikation.
Eine aus den MSCs A_ISS, A_ISF2, A_ISF3, A_TC und A_TE in Schritt 32 abgeleitete zustandsbasierte Spezifikation ist beispielhaft in Fig. 8 gezeigt. Die Partition für die An­ fangsbedingung IDLE enthält die MSCs A_ISS und A_ISF2, die Partition für die Anfangsbedingung SENDING enthält die MSCs A_TC und A_TE, und die Partition für die Anfangsbedingung CONFL enthält das MSC A_ISF3. Entsprechend werden drei Zu­ stände gebildet, die mit den Anfangsbedingungen IDLE, SENDING und CONFL identifiziert werden. Die in Fig. 8 durch Pfeile dargestellten Transitionen sind mit den entsprechen­ den MSCs beschriftet. Als Anfangszustand ist der Zustand IDLE durch einen von einem ausgefüllten Kreis ausgehenden Pfeil angegeben. Der (einzige) Endzustand ist ebenfalls der Zustand IDLE, was in Fig. 8 durch eine doppelte Umrahmung angezeigt ist. Der Endzustand zeigt akzeptierende (erfolg­ reich abgeschlossene) Berechnungen an.
In einem vierten Schritt 34 des in Fig. 4 gezeigten Verfah­ rens wird schließlich ein zustandsbasiertes Programm für die Komponente A bestimmt. Dieses Programm wird im hier be­ schriebenen Ausführungsbeispiel in Form eines endlichen Au­ tomaten erzeugt. Die Zustandsmenge des Automaten sowie der Anfangszustand und die Endzustände stimmen mit denen der zu­ standsbasierten Spezifikation überein. Die Zustandsübergänge des Automaten werden aus den Transitionen der zustandsba­ sierten Spezifikation abgeleitet, indem jede eine Transition bildende Ablaufbeschreibung durch eine entsprechende Folge von (neuen) Zuständen und Übergängen ersetzt wird.
Genauer gesagt, werden zunächst alle Ablaufbeschreibungen, in denen kein Nachrichtenaustausch stattfindet, durch ε- Transitionen ersetzt, um die Möglichkeit eines spontanen Zustandsübergangs anzugeben. Jede andere Ablaufbeschreibung definiert insgesamt k (k < 0) Kommunikationsaktionen, die mit (d1, n1, c1), . . ., (dk, nk, ck) bezeichnet werden sollen. Hierbei geben, für 1 ≦ i ≦ k, jeweils di die Richtung des Nachrichtenaustauschs, ni die Nachricht und ci den Namen der jeweiligen Quell- bzw. Zielkomponente an. Für eine empfange­ ne Nachricht gilt di = "?", und für eine gesendete Nachricht gilt di = "!".
Für k = 1 wird im Automaten die Ablaufbeschreibung durch eine Transition ersetzt, die mit der Kommunikationsaktion (d1, n1, c1) gekennzeichnet ist.
Für k < 1 werden dem Automaten k-1 neue Zustände s1, . . ., sk-1 sowie k Transitionen hinzugefügt. Die erste Transition verläuft vom Startzustand der zugrundeliegenden Ablaufbe­ schreibung zum neuen Zustand s1 und ist mit der Kommunika­ tionsaktion (d1, n1, c1) gekennzeichnet. Die k-te Transition verläuft vom neuen Zustand sk-1 zum Endzustand der zugrunde­ liegenden Ablaufbeschreibung und ist mit (dk, nk, ck) gekenn­ zeichnet. Alle anderen Transitionen verlaufen vom Zustand si-1 zum Zustand si (für 1 < i < k) und sind mit (di, ni, ci) gekennzeichnet.
Nachdem alle Ablaufbeschreibungen der zustandsbasierten Spe­ zifikation auf diese Weise umgewandelt wurden, liegt das zustandsbasierte Programm in Form eines nichtdeterministi­ schen Automaten mit Ein- und Ausgabeaktionen vor. Für die Spezifikation von Fig. 8 ist dieser Automat beispielhaft in Fig. 9 gezeigt. Der Automat ist in Form eines gerichteten Graphen angegeben, bei dem die Knoten Zustände und die Kan­ ten des Graphen erlaubte Zustandswechsel anzeigen. Anfangs- und Endzustände sind ebenso wie in Fig. 8 gekennzeichnet. Die Kanten des Automaten von Fig. 9 sind mit Kommunikations­ aktionen beschriftet, wobei der Einfachheit halber die Quell- bzw. Zielkomponenten weggelassen sind. Dies bedeutet, daß beliebige Quell- und Zielkomponenten zulässig sind.
Beispielsweise wurde beim Übergang von der zustandsorien­ tierten Spezifikation zum zustandsorientierten Programm die mit dem MSC A_ISF2 beschriftete Transition (Fig. 8) in zwei Transitionen umgewandelt, die vom Zustand IDLE über einen neuen Zwischenzustand IC0 und von dort zum Zustand CONFL verlaufen (Fig. 9). Die erste dieser beiden Transitionen ist mit der (vereinfachten) Kommunikationsaktion (!,SREQ) be­ schriftet. Dies zeigt an, daß der Automat seinen Zustand von IDLE nach IC0 verändern kann, wenn er dabei die Nachricht SREQ an eine beliebige Komponente schickt. Entsprechend kann der Automat beim Empfang einer Nachricht SREQ seinen Zustand von IC0 nach CONFL verändern.
Der in Fig. 9 dargestellte, nichtdeterministische Automat kann bereits das Ergebnis des automatischen Programmerzeu­ gungsverfahrens darstellen. In Ausführungsalternativen werden jedoch weitere Transformationsschritte durchgeführt. So kann vorgesehen sein, eventuell in dem Automaten ent­ haltene ε-Transitionen durch ein Verfahren zu entfernen, das beispielsweise aus dem Buch "Einführung in die Automaten­ theorie, Formale Sprachen und Komplexitätstheorie" von J. E. Hopcroft und J. D. Ullman, Addison Wesley, 2. korrigierter Nachdruck, 1993, an sich bekannt ist.
Ferner kann der (ε-freie) Automat in einen deterministischen Automaten umgewandelt werden. Ein geeignetes Teilmengen-Kon­ struktionsverfahren ist auf den Seiten 22 bis 24 des gerade genannten Buches beschrieben. Schließlich ist eine Minimali­ sierung des Zustandsraumes des deterministischen Automaten sinnvoll. Auch dies kann mittels eines an sich bekannten Verfahrens, etwa der Myhill-Nerode-Konstruktion gemäß Seiten 72 bis 76 des gerade genannten Buches, geschehen.
Fig. 10 zeigt beispielhaft einen deterministischen Automa­ ten, der durch die genannte Teilmengen-Konstruktion aus dem in Fig. 9 dargestellten Automaten abgeleitet ist. Dieser Automat ist bereits in Minimalform, so daß ein weiterer Mi­ nimalisierungsschritt nicht mehr erforderlich ist.
Insgesamt wird durch die Verfahrensschritte 32 und 34 (Fig. 4) und die oben angegebenen weiteren Schritte für eine Komponente, zu der mindestens eine Ablaufbeschreibung in Normalform vorliegt, ein minimaler, bezüglich der Eingabe­ nachrichten deterministischer Automat mit Ein- und Ausgabe erzeugt.
In manchen Fällen beschränkt in Schritt 22 (Fig. 4) die Projektion nichtlokaler Bedingungen (das sind Bedingungen, deren Geltungsbereich mehr als eine Komponente umfaßt) auf eine einzelne Komponente den entstehenden Automaten dahin­ gehend, daß er stark von Zuständen der Umgebung abhängt. So kann beispielsweise die Funktion einer Vermittlungskomponen­ te, die Nachrichten von mehreren Sendern weiterleiten soll, von der Verzahnung der Nachrichten der Sender abhängen. In Ausführungsalternativen wird diese Einschränkung dadurch ge­ lockert, daß die Spezifikation 10 ferner je eine surjektive Abbildung von nichtlokalen auf lokale Bedingungen für alle Komponenten aufweist, die in wenigstens einer Ablaufbe­ schreibung vorkommen. Bei der Projektion in Schritt 22 wird die für die jeweilige Komponente vorgesehene Abbildung ver­ wendet, um nicht lokale Bedingungen durch lokale Bedingungen zu ersetzen.
In weiteren Ausführungsalternativen können andere Formalis­ men für das zustandsbasierte Programm verwendet werden. So können die Knoten und/oder die Kanten des Transitionsgraphen mit Ein- und/oder Ausgabeereignissen beschriftet sein.
In anderen Ausführungsalternativen wird das zustandsbasierte Programm durch weitere Umformungsschritte in den Formalismen SDL oder Statecharts oder ROOM ausgedrückt. Diese Umfor­ mungsschritte können von einem Automaten wie in Fig. 10 aus­ gehen. Als mögliche Optimierung werden Zustandsübergänge nach dem in Fig. 11a gezeigten Schema gesucht und durch Übergänge gemäß Fig. 11b ersetzt. Genauer gesagt, werden Zu­ stände T des Automaten identifiziert, deren eingehende Kan­ ten höchstens mit Nachrichten der Form (?,A), ausgehend bei­ spielsweise von einem Zustand S, beschriftet sind. Ferner sollen von dem Zustand T genau N (für N < 0) Transitionen (!,Bi) mit Zielzustand Ui (für 1 ≦ i ≦ N) ihren Ursprung ha­ ben. Hier läßt sich der Zustand T entfernen, indem jede von T ausgehende Transition (!,Bi) mit Zielzustand Ui durch eine Transition von S nach Ui ersetzt wird, die mit (?,A)/(!,Bi) beschriftet ist.
In Ausführungsvarianten können die durch das bisher be­ schriebene Verfahren erzeugten Automaten weiter vereinfacht werden, wenn der Zustandsraum einen Kontroll- und einen Datenzustand aufweist und erweiterte Zustandsmaschinen mit bewachten Zustandsübergängen und Aktionen zur Änderung des Datenzustands verwendet werden. Die Bedingungen der Ablauf­ beschreibungen sind dann Paare aus Kontroll- und Datenzu­ stand. Geeignete Konzepte für solche erweiterte Zustands­ maschinen sind beispielsweise aus den Statecharts- und ROOM- Formalismen an sich bekannt.
In den bisher beschriebenen Ausführungsbeispielen bestanden - die Ablaufbeschreibungen lediglich aus Kommunikationsaktio­ nen und Bedingungen. In Ausführungsalternativen ist das Ver­ fahren jedoch auf mächtigere Formalismen zur Ablauf- und Interaktionsbeschreibung erweitert. Beispielsweise lassen sich Ablaufbeschreibungen, die Auswahl- oder Wiederholungs­ operatoren enthalten, durch schematische Umformungen in die einfacheren Ablaufbeschreibungen umwandeln, für die das Ver­ fahren bisher beschrieben wurde.
Nach den bisher beschriebenen Ausführungsbeispielen wurden in den Teilschritten 26 und 28 (Fig. 4) bei der Normalisie­ rung einer Komponenten-Ablaufbeschreibung fehlende Anfangs- und Endbedingungen jeweils durch die in der Spezifikation 10 (Daten 18) angegebenen Anfangszustände der Komponenten er­ setzt. In Ausführungsvarianten wird jede solche Komponenten- Ablaufbeschreibung durch eine Menge von Ablaufbeschreibungen ersetzt, in denen je eine beliebige in der Komponente vor­ kommende Bedingung an Stelle der fehlenden Bedingung einge­ setzt wird.

Claims (15)

1. Verfahren zum automatischen Erzeugen eines zustands­ basierten Programms (14A, 14B, 14C) für eine Komponente (A, B, C) eines aus mehreren miteinander kommunizierenden Kompo­ nenten (A, B, C) bestehenden Systems (S), wobei das Programm (14A, 14B, 14C) aus einer Spezifikation (10) des Systems (S) erzeugt wird, die interaktionsbasierte Ablaufbeschreibungen (16; SS, A_ISF, A_TC, A_TE) des Systems (S) enthält, mit den Schritten:
  • a) Bestimmen (22) aller durch die Spezifikation (10) des Systems (S) definierten Ablaufbeschreibungen (A_ISS, A_ISF, A_TC, A_TE) der Komponente (A, B, C),
  • b) Normalisieren (24) der Ablaufbeschreibungen der Kompo­ nente (A, B, C), so daß eine normalisierte Ablaufbeschrei­ bung (A_ISS, A_ISF2, A_ISF3, A_TC, A_TE) genau eine Anfangs- und genau eine Endbedingung aufweist und zwischen der An­ fangs- und der Endbedingung ausschließlich Kommunikations­ aktionen enthält,
  • c) Bestimmen (32) einer zustandsbasierten Spezifikation (Fig. 8) der Komponente (A, B, C), indem alle gleichen An­ fangs- und Endbedingungen der normalisierten Ablaufbeschrei­ bungen (A_ISS, A_ISF2, A_ISF3, A_TC, A_TE) der Komponente (A, B, C) in je einem einzigen Zustand identifiziert werden, und
  • d) Bestimmen (34) des zustandsbasierten Programms (14A, 14B, 14C) für die Komponente (A, B, C), wobei jede in der zustandsbasierten Spezifikation (Fig. 8) der Komponente (A, B, C) enthaltene Ablaufbeschreibung (A_ISS, A_ISF2, A_ISF3, A_TC, A_TE) durch eine Folge der Kommunikationsaktionen die­ ser Ablaufbeschreibung, getrennt durch zusätzlich eingefügte Zustände (CI0, IC0, IS0, SI0, SS0), ersetzt wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in Schritt a) jede die Kompo­ nente (A, B, C) betreffende Ablaufbeschreibung (16; ISS, A_ISF, A_TC, A_TE) des Systems (S) auf eine entsprechende Ablaufbeschreibung (A_ISS, A_ISF, A_TC, A_TE) der Komponente (A, B, C) beschränkt wird.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß in Schritt b) die folgenden Teilschritte ausgeführt werden:
b1) Einfügen (26) einer in der Spezifikation (10) des Sy­ stems (S) vorgegebenen Bedingung als Anfangsbedingung in je­ de mit einer Kommunikationsaktion beginnende Ablaufbeschrei­ bung (A_ISF) der Komponente (A, B, C),
b2) Einfügen (28) einer in der Spezifikation (10) des Sy­ stems (S) vorgegebenen Bedingung als Endbedingung in jede mit einer Kommunikationsaktion endende Ablaufbeschreibung (A_ISF) der Komponente (A, B, C), und
b3) Aufspalten (30) aller Ablaufbeschreibungen (A_ISF1) der Komponente (A, B, C), die mehr als zwei Bedingungen aufwei­ sen, in mehrere Ablaufbeschreibungen (A_ISF2, A_ISF3) der Komponente (A, B, C) mit jeweils genau zwei Bedingungen.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß Teilschritt b1) und/oder Teil­ schritt b2) für jede von mehreren einzufügenden Bedingung/en wiederholt werden/wird, um entsprechend viele Ablaufbe­ schreibungen (A_ISF1) der Komponente (A, B, C) zu erhalten.
5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die interaktionsbasierten Ab­ laufbeschreibungen (16; ISS, A_ISF, A_TC, A_TE) des Systems (S) durch Message Sequence Charts oder UML-Sequenzdiagramme repräsentierbar sind.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß das zustandsbasierte Programm (14A, 14B, 14C) für die Komponente (A, B, C) als Automat, insbesondere als SDL- oder Statechart- oder ROOM-Automat repräsentierbar ist.
7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß das zustandsbasierte Programm (14A, 14B, 14C) auf einem erweiterten Zustandsautomaten be­ ruht, dessen Zustandsraum einen Kontroll- und einen Datenzu­ stand aufweist, und daß Zustandsübergänge in Abhängigkeit von dem jeweils aktuellen Datenzustand ausgeführt werden und diesen Datenzustand zu ändern vermögen.
8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß in Schritt d) ferner ε-Transi­ tionen aus dem zustandsbasierten Programm (14A, 14B, 14C) entfernt werden.
9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß in Schritt d) ein deterministi­ sches zustandsbasiertes Programm (14A, 14B, 14C) erzeugt wird.
10. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß das in Schritt d) erzeugte zu­ standsbasierte Programm (14A, 14B, 14C) insbesondere hin­ sichtlich der Anzahl der Zustände optimiert wird.
11. Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß in Schritt a) nichtlokale Bedin­ gungen in den Ablaufbeschreibungen (16; ISS, A_ISF, A_TC, A_TE) des Systems (S) gemäß einer vorgegebenen surjektiven Abbildung durch lokale Bedingungen ersetzt werden.
12. Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß das Verfahren zum Erzeugen eines zustandsbasierten Programms für Telekommunikationsanwendun­ gen, insbesondere zum Bereitstellen eines fehlertoleranten Daten- und Nachrichtenaustauschs, und/oder zum Erzeugen eines Programms für ein reaktives System, insbesondere ein Regelungs- und Steuerungssystem, und/oder zum Erzeugen eines Benutzerschnittstellen-Programms und/oder zum Erzeugen eines Datenbankabfrageschema-Programms dient.
DE19837871A 1998-08-20 1998-08-20 Verfahren zum automatischen Erzeugen eines Programms Expired - Lifetime DE19837871C2 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE19837871A DE19837871C2 (de) 1998-08-20 1998-08-20 Verfahren zum automatischen Erzeugen eines Programms
US09/378,204 US6405361B1 (en) 1998-08-20 1999-08-19 Automatically generating a program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19837871A DE19837871C2 (de) 1998-08-20 1998-08-20 Verfahren zum automatischen Erzeugen eines Programms

Publications (2)

Publication Number Publication Date
DE19837871A1 true DE19837871A1 (de) 2000-03-02
DE19837871C2 DE19837871C2 (de) 2000-06-08

Family

ID=7878195

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19837871A Expired - Lifetime DE19837871C2 (de) 1998-08-20 1998-08-20 Verfahren zum automatischen Erzeugen eines Programms

Country Status (2)

Country Link
US (1) US6405361B1 (de)
DE (1) DE19837871C2 (de)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7210117B2 (en) * 1999-08-19 2007-04-24 National Instruments Corporation System and method for programmatically generating a graphical program in response to program information
US6964037B1 (en) * 1999-09-19 2005-11-08 Kestrel Institute Method and apparatus for determining colimits of hereditary diagrams
US6550052B1 (en) * 1999-11-09 2003-04-15 Daimlerchrysler Corporation Software development framework for constructing embedded vehicle controller software
US6499136B1 (en) * 1999-11-10 2002-12-24 Lucent Technologies Inc. Single-shot entry code for software state transition
US6973639B2 (en) * 2000-01-25 2005-12-06 Fujitsu Limited Automatic program generation technology using data structure resolution unit
EP1330708A2 (de) * 2000-04-16 2003-07-30 Kestrel Institute Vorrichtung und verfahren für selbstanpassenden kode
US6681264B1 (en) * 2000-05-26 2004-01-20 Lucent Technologies Inc. Implied message sequence charts
US6880147B1 (en) * 2000-09-07 2005-04-12 Rockwell Collins System and method for developing software utilizing determinative representations
US6704564B1 (en) * 2000-09-22 2004-03-09 Motorola, Inc. Method and system for controlling message transmission and acceptance by a telecommunications device
US7200838B2 (en) * 2000-12-20 2007-04-03 National Instruments Corporation System and method for automatically generating a graphical program in response to a state diagram
US7730001B2 (en) * 2001-02-09 2010-06-01 International Business Machines Corporation Computer system program and method to characterize each of a plurality of objects used at runtime to determine a lowest cost property among a plurality of potential alternative properties for each of said objects minimizing total cost of interaction among components during program execution
US7406432B1 (en) 2001-06-13 2008-07-29 Ricoh Company, Ltd. Project management over a network with automated task schedule update
US7191141B2 (en) * 2001-06-13 2007-03-13 Ricoh Company, Ltd. Automated management of development project files over a network
US20030088665A1 (en) * 2001-11-02 2003-05-08 Juergen Sauermann Presentation of network traffic as message sequence charts in network analyzers
US20030153998A1 (en) * 2002-02-13 2003-08-14 Micron Technology, Inc. Feature modeling application
EP2385463B1 (de) 2002-11-06 2020-04-29 Code Valley Corp Pty Ltd Codeerzeugung dank Komponenten
US9521209B2 (en) 2002-11-06 2016-12-13 Code Valley Corp Pty Ltd Code generation
US8589861B2 (en) * 2002-11-06 2013-11-19 Code Valley Corp Pty Ltd Code generation
US8832178B2 (en) 2002-11-06 2014-09-09 Noel William Lovisa Service implementation
US7171652B2 (en) * 2002-12-06 2007-01-30 Ricoh Company, Ltd. Software development environment with design specification verification tool
US7308675B2 (en) * 2003-08-28 2007-12-11 Ricoh Company, Ltd. Data structure used for directory structure navigation in a skeleton code creation tool
US7237224B1 (en) * 2003-08-28 2007-06-26 Ricoh Company Ltd. Data structure used for skeleton function of a class in a skeleton code creation tool
US7793257B2 (en) * 2003-08-28 2010-09-07 Ricoh Company, Ltd. Technique for automating code generation in developing software systems
US7437707B2 (en) * 2003-12-12 2008-10-14 International Business Machines Corporation Systems and methods for generating applications that are automatically optimized for network performance
EP1548581A3 (de) * 2003-12-19 2007-08-08 Klockwork Corp. Verfahren, Vorrichtungen und Programme zur Systementwicklung
US7533365B1 (en) 2004-02-03 2009-05-12 Borland Software Corporation Development system with methodology for run-time restoration of UML model from program code
JP2007538321A (ja) * 2004-05-20 2007-12-27 コード バリー ピーティーワイ リィミティッド コード生成方法
AU2005245983B2 (en) * 2004-05-20 2011-07-07 Code Valley Corp Pty Ltd Code generation techniques
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US8020141B2 (en) 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US7600232B2 (en) * 2004-12-07 2009-10-06 Microsoft Corporation Inter-process communications employing bi-directional message conduits
US7451435B2 (en) * 2004-12-07 2008-11-11 Microsoft Corporation Self-describing artifacts and application abstractions
US8849968B2 (en) * 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US8201140B2 (en) 2005-08-30 2012-06-12 The Mathworks, Inc. System and method for creating and using graphical object instances in a statechart environment
US20070094495A1 (en) * 2005-10-26 2007-04-26 Microsoft Corporation Statically Verifiable Inter-Process-Communicative Isolated Processes
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US8799043B2 (en) * 2006-06-07 2014-08-05 Ricoh Company, Ltd. Consolidation of member schedules with a project schedule in a network-based management system
US20070288288A1 (en) * 2006-06-07 2007-12-13 Tetsuro Motoyama Use of schedule editors in a network-based project schedule management system
US8050953B2 (en) * 2006-06-07 2011-11-01 Ricoh Company, Ltd. Use of a database in a network-based project schedule management system
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US20080155455A1 (en) * 2006-08-15 2008-06-26 Swaminathan Balasubramanian Notification of state transition of an out-of-focus application with clustering
US9021375B2 (en) * 2006-08-15 2015-04-28 International Business Machines Corporation Notification of state transition of an out-of-focus application
US8140993B2 (en) * 2006-08-15 2012-03-20 International Business Machines Corporation Notification of state transition of an out-of-focus application with state and notification priority filtering
US20080163258A1 (en) * 2006-08-15 2008-07-03 Swaminathan Balasubramanian Notification of state transition of an out-of-focus application with notification precedence
US20080046832A1 (en) * 2006-08-15 2008-02-21 International Business Machines Corporation Notification of state transition of an out-of-focus application
US8789063B2 (en) * 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US20080244507A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Homogeneous Programming For Heterogeneous Multiprocessor Systems
US8640100B2 (en) * 2007-04-20 2014-01-28 National Instruments Corporation Debugging a statechart using a graphical program
US8214796B2 (en) * 2007-04-20 2012-07-03 National Instruments Corporation Event firing node for asynchronously passing events from a graphical data flow program to a statechart
DE102007031643A1 (de) * 2007-07-06 2009-01-08 Dirnstorfer, Stefan, Dr. Verfahren zur Ableitung eines Zustandsraumes
EP2183690A1 (de) * 2007-09-07 2010-05-12 ABB Technology AG Konfiguration einer intelligenten elektronischen einrichtung
US8458667B2 (en) * 2008-01-30 2013-06-04 National Instruments Corporation Debugging a statechart for a real time target
US8640084B2 (en) * 2009-03-31 2014-01-28 Fujitsu Limited Generating validation test suites
US8495580B2 (en) 2010-04-07 2013-07-23 International Business Machines Corporation Facilitating use of model transformations
US8745594B1 (en) * 2013-05-10 2014-06-03 Technobasics Software Inc. Program flow specification language and system
DE112015003587T5 (de) 2014-09-02 2017-05-11 Ab Initio Technology Llc Spezifizieren von komponenten in graphbasierten programmen
CA2959389A1 (en) * 2014-09-02 2016-03-10 Ab Initio Technology Llc Compilation of graph-based program specifications with automated clustering of graph components based on the identification of particular data port connections

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0049176A1 (de) * 1980-09-26 1982-04-07 The Bendix Corporation Programmentwicklungsverfahren

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ218742A (en) * 1986-06-03 1990-09-26 Fisher & Paykel Programmed logic controller
JP2914664B2 (ja) 1988-05-27 1999-07-05 三菱電機株式会社 自動プログラミング装置
US5721926A (en) * 1993-01-12 1998-02-24 Kabushiki Kaisha Toshiba Correspondence-oriented state-transition-model-based programming systems
JPH08212106A (ja) * 1995-02-01 1996-08-20 Toshiba Corp システム試験支援装置及びシステム試験支援方法
US6282681B1 (en) * 1995-03-06 2001-08-28 Motorola, Inc. Method and apparatus for testing finite state machine (FSM) conformance utilizing unique input/output sequence (UIO) sets
US6029002A (en) * 1995-10-31 2000-02-22 Peritus Software Services, Inc. Method and apparatus for analyzing computer code using weakest precondition
US5842125A (en) * 1995-11-30 1998-11-24 Amsc Subsidiary Corporation Network control center for satellite communication system
US5946490A (en) * 1996-03-22 1999-08-31 Northeastern University Automata-theoretic approach compiler for adaptive software
US6002869A (en) * 1997-02-26 1999-12-14 Novell, Inc. System and method for automatically testing software programs
US6289502B1 (en) * 1997-09-26 2001-09-11 Massachusetts Institute Of Technology Model-based software design and validation
US6260186B1 (en) * 1997-11-13 2001-07-10 Nortel Networks Limited Universal state machine for use with a concurrent state machine space in a telecommunications network
US6163692A (en) * 1998-05-28 2000-12-19 Lucent Technologies, Inc. Telecommunication network with mobile voice conferencing system and method
US6260188B1 (en) * 1998-12-31 2001-07-10 Kimberly-Clark Worldwide, Inc. Control model

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0049176A1 (de) * 1980-09-26 1982-04-07 The Bendix Corporation Programmentwicklungsverfahren

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HOPCROFT, J.E., ULLMAN, J.D.: "Einführung in die Automatentheorie Formale Sprachen und Komplexitätstheorie", Addison Wesley, 2.korr. Nachdruck, 1993 *
SELIC, B., GULLEKSON, G., WARD, P.T.: "Real-Time Object-Orientated Modeling", Wiley 1994 *

Also Published As

Publication number Publication date
DE19837871C2 (de) 2000-06-08
US6405361B1 (en) 2002-06-11

Similar Documents

Publication Publication Date Title
DE19837871C2 (de) Verfahren zum automatischen Erzeugen eines Programms
DE69731614T2 (de) Netzübergreifende einrichtung und verfahren zur herstellung einer solchen einrichtung
DE19810807A1 (de) Gerät und Verfahren zum Umsetzen von Meldungen
EP1430369B1 (de) Dynamischer zugriff auf automatisierungsressourcen
EP2648094B1 (de) Verfahren und system zum erzeugen eines quellcodes für ein computerprogramm zur ausführung und simulation eines prozesses
EP1005215B1 (de) Verfahren und Vorrichtung zum Editieren von Konfigurationsdaten für Telekommunikationssysteme
EP1005216B1 (de) Verfahren und Vorrichtung zur Validierung von Konfigurationsdaten für Telekommunikationssysteme
DE4104568A1 (de) Verfahren und vorrichtung zur programmverarbeitung
EP3441919A1 (de) Verfahren zum austausch von daten zwischen engineering-tools eines engineering-systems sowie engineering-system zur durchführung des verfahrens
EP3028182B1 (de) Verfahren und system zur synchronisation von daten
EP4104422A1 (de) Integrieren einer maschine in ein bestehendes distributed ledger netzwerk
DE10033812A1 (de) Verfahren zum Erzeugen von Informationsmodellen
EP0825525B1 (de) Verfahren zur Unterstützung des Erzeugens eines Objektes
EP1533940A1 (de) Transformation Function eines TMN Systems
DE102015121486B4 (de) Verfahren und Vorrichtung zum Betrieb eines Steuerungs-/Regelungssystems eines Fahrzeuges
DE102004023634B4 (de) Verfahren zur Vollständigkeits- und Konsistenzprüfung einer Informationsbibliothek
DE4427913C2 (de) Verfahren zum Versenden eines Datensatzes in einem Terminalnetz
EP2194457A2 (de) Vorrichtung zum Erzeugen eines markierten Referenzdatenstroms
DE102004050293B3 (de) Verfahren zur Simulation des Betriebs eines Netzwerks
DE4324665C2 (de) Verfahren zur Verarbeitung von zwischen mindestens zwei Datenübertragungssystemen zu übertragenden Datensätzen sowie eine Anwendung
EP1074090B1 (de) Verfahren zur konvertierung baumstrukturierter daten
DE19648432A1 (de) Verfahren zur inkrementellen Synthese eines diskreten technischen Systems
DE102010010035A1 (de) Verfahren zum Erstellen von Objekten einer objektorientierten Datenbank
DE10109876B4 (de) Verfahren und Einrichtung zum Datenmanagement
DE102004039215B4 (de) Netzwerkmanagement mit erweitertem Objektmodell

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
R084 Declaration of willingness to licence
8320 Willingness to grant licences declared (paragraph 23)
R071 Expiry of right