-
Die
Erfindung betrifft allgemein das Gebiet des automatischen Erzeugens
von Quellcodes von Computerprogrammen. Die Erfindung betrifft insbesondere
ein Verfahren zum Herstellen eines konsistenten Zustands einer Programmkomponentenmenge
eines Computerprogramms.
-
Stand der Technik
-
Die
DE 10 2004 043 788
A1 betrifft eine Vorrichtung zum Erstellen ausführbarer
Programme. Die Vorrichtung enthält
eine Benutzeroberfläche
zur Eingabe eines einem Programm zugrunde liegenden Modells und
einen Generator zur Erzeugung von individuellem Programmcode aus
dem Modell.
-
Die
DE 198 37 871 C2 betrifft
ein Verfahren zum automatischen Erzeugen eines zustandsbasierten
Programms für
eine Komponente eines aus mehreren miteinander kommunizierenden
Komponenten bestehenden Systems. Die Spezifikation des Systems dient
als Eingabe für
einen Rechner, der als Ausgabe jeweils ein zustandsbasiertes Programm
für jede
der Komponenten erzeugt.
-
Gemäß dem Stand
der Technik ist es üblich, dass
der Generator bzw der Rechner, der den Programmcode bzw das Programm
automatisch erzeugt, nach einer fest vorgegebenen Strukturbeschreibung
arbeitet, dh die Art und Weise, wie aus dem Modell bzw der Spezifikation
der Programmcode erzeugt wird, ist in dem Generator fest implementiert.
Als Programmkomponenten gespeichert werden hier lediglich die Modellinformationen
und der Code. Ein weiteres Beispiel ist die Software Matlab-Simulink,
bei welcher aus Domänendaten
Code generiert wird und keine kombinierte Verarbeitung dieser beiden
Darstellungen stattfindet.
-
Aus
der Praxis ist es ferner bekannt, Änderungen, die direkt an genau
spezifizierten Stellen im Quellcode gemacht wurde, zu konservieren
und bei einer erneuten automatischen Programmerzeugung wieder an
die spezifizierte Stelle einzusetzen.
-
Neben
Verfahren zur Vorwärtsgenerierung von
Programmcode sind auch Refactoring-Werkzeuge (Refactoring = Umstrukturierung
des Programmcodes), wie sie die Eclipse Entwicklungsumgebung (www.eclipse.org)
bietet, bekannt, die allerdings nur den Programmcode verwenden,
um syntaktische Veränderungen
darin vorzunehmen.
-
Offenbarung der Erfindung
-
Es
ist Aufgabe der vorliegenden Erfindung, sicherzustellen, dass beliebige Änderungen,
die direkt in einem aus Modellinformationen und einer Strukturbeschreibung
automatisch erzeugten Quellcode durchgeführt wurden, auch bei einer
nachfolgenden Änderung
der Modellinformationen und der daran anschließenden erneuten automatischen
Erzeugung des Quellcodes bewahrt werden.
-
Diese
Aufgabe wird durch ein Verfahren nach Anspruch 1 gelöst.
-
Ein
wesentlicher Punkt der Erfindung besteht dabei darin, dass neben
den Modellinformationen und dem Quellcode auch die Strukturbeschreibung gespeichert
und/oder verarbeitet wird, gemäß welcher
sich der Quellcode aus den Modellinformationen automatisch erzeugen
lässt.
In diesem Sinne werden die Modellinformationen, die Strukturbeschreibung und
der Quellcode gemeinsam verarbeitet und/oder gespeichert.
-
Ein
wesentlicher Punkt des erfindungsgemäßen Verfahrens ist, dass unter
Verwendung von Modellinformationen und Strukturbeschreibung händische
Veränderungen
am Programm, die durch einen Anwender/Programmierer durchgeführt werden,
erkannt, klassifiziert und in Modell und Strukturbeschreibung zurückgeführt.
-
Eine
Programmkomponentenmenge im Sinne der Erfindung besteht aus oder
umfasst den Quellcode sowie eine Menge von zu speichernden Komponenten,
die für
die automatische Erzeugung des Quellcodes erforderlich sind. Das
heißt,
die Programmkomponentenmenge enthält mindestens die Modellinformationen,
die Strukturbeschreibung und den Quellcode.
-
Durch
die Integration der Strukturbeschreibung in die Programmkomponentenmenge
ist es möglich,
unter Verwendung von Modellinformationen und der Strukturbeschreibung Änderungen
in dem Quellcode zu erkennen, zu klassifizieren und in die Modellinformationen
und die Strukturbeschreibung zurückzuführen. Insbesondere
stellt das erfindungsgemäße Verfahren
eine Methodik zur Detektion und Klassifikation von Änderungen
bei der automatischen Erstellung von Programmen zur Verfügung.
-
Vorteilhafte
Weiterbildungen des erfindungsgemäßen Verfahrens sind in den
Unteransprüchen
2 bis 7 angegeben.
-
Durch
die zusätzliche
Speicherung und Verwendung der Strukturbeschreibung können der Quellcode
und die Modellinformationen, beispielsweise Domänendaten, besser zueinander
in Beziehung gesetzt werden. Dies ermöglicht beispielsweise konsistente
Veränderungen
an den Modellen.
-
Durch
die Rückführung von Änderungen
am Quellcode in die Modellinformationen und die Strukturbeschreibung
wird sichergestellt, dass die am Quellcode durchgeführten Änderungen,
auch bei einer nachfolgenden Änderung
der Modellinformationen und der daran anschließenden erneuten automatischen
Erzeugung des Quellcodes bewahrt werden.
-
Im
Gegensatz zu bekannten Techniken kann die Anreicherung der Modellinformationen
und Strukturbeschreibung nicht nur durch eigene dezidierte Werkzeuge
erfolgen. Der Anwender/Programmierer kann die Modellebenen durch
normales Programmieren (Quellcodemanipulation) anreichern. Außerdem gehen
auch Veränderungen,
die das Modell (noch) nicht vorsieht, bei einem erneuten Generierungsschritt
nicht verloren und werden immer an der korrekten Stelle eingefügt.
-
Die
vorstehenden Ausführungen
und Definitionen gelten auch für
die nachfolgende Beschreibung der Zeichnungen und umgekehrt.
-
Kurze Beschreibung der Zeichnungen
-
Die
Erfindung wird im folgenden anhand eines Ausführungsbeispiels näher erläutert. Es
zeigt:
-
1 schematisch
Zustandsänderungen
einer Programmkomponentenmenge bei der Durchführung einer Ausführungsform
eines Verfahrens nach der Erfindung;
-
2 eine
Ausführungsform
einer Programmkomponentenmenge gemäß der Erfindung, und
-
3 eine
weitere Ausführungsform
einer Programmkomponentenmenge gemäß der Erfindung.
-
Ausführungsformen
der Erfindung
-
Eine
erfindungsgemäße Programmkomponentenmenge 2 eines
Computerprogramms enthält Modellinformationen 4 des
dem Computerprogramm zugrunde liegenden Modells.
-
Die
Modellinformationen 4 können
beispielsweise Domänendaten
sein. Eine Domäne
bezeichnet hier ein konkretes Anwendungsgebiet, zB eine speicherprogrammierbare
Steuerung (SPS). Domänendaten
sind dabei variable Daten, über
die sich in Verbindung mit der Kenntnis der Domäne ein Projekt besonders einfach
definieren lässt.
-
Ein
Computerprogramm kann beispielsweise ein Programm für eine speicherprogrammierbare Steuerung
(SPS), eine Bedienoberfläche
(HMI) oder eine Software für
Antriebe (NC), oder ein beliebiges anderes Computerprogramm sein.
-
Die
Programmkomponentenmenge 2 enthält ferner einen Quellcode 6,
welcher gemäß einer Strukturbeschreibung 8 aus
den Modellinformationen 4 automatisch erzeugbar ist. Gemäß einer
Ausführungsform
der Erfindung ist der Quellcode 6 direkt ausführbar. Gemäß einer
weiteren Ausführungsform kann
der Quellcode 6 in ein ausführbares Programm kompilierbar
sein. Gemäß einer
nochmals weiteren Ausführungsform
kann der Quellcode 6 von einem Interpreter interpretierbar
sein.
-
Erfindungsgemäß enthält die Programmkomponentenmenge 2 ferner
die Strukturbeschreibung 8 gemäß welcher der Quellcode 6 aus
den Modellinformationen 4 automatisch erzeugbar ist. Das heißt, die
Strukturbeschreibung 8 gibt an, wie aus den Modellinformationen 4 der
Quellcode 6 zu erzeugen ist. In diesem Sinne ist die Strukturbeschreibung 8 mit
den Modellinformationen 4 verknüpft. Gemäß der Erfindung kann die Strukturbeschreibung 8 ebenso
wie die Modellinformationen 4 veränderbar sein; insbesondere
kann die Strukturbeschreibung 8 variable Daten enthalten.
-
Die
Strukturbeschreibung 8 kann im einfachsten Fall ähnlich einem
Lückentext
aufgebaut sein, wobei die Lücken
mit den Modellinformationen 4 gefüllt werden. Ferner kann die
Strukturbeschreibung 8 beispielsweise angeben, mit welchen
Methoden die Modellinformationen 4 verarbeitet werden.
-
Während beim
Stand der Technik die Modellinformationen 4 starren Vorgaben
des verwendeten Code-Generators entsprechen müssen, stellen gemäß der Erfindung
die drei Komponenten 'Modellinformationen 4', 'Strukturbeschreibung 8' und 'Quellcode 6' vorzugsweise gleichwertige
Komponenten der Programmkomponentenmenge 2 dar, die gemeinsam
das betreffende Computerprogramm repräsentieren. Insbesondere werden
die drei Komponenten vorzugsweise gemeinsam gespeichert bzw gemeinsam
verarbeitet.
-
Die
drei Komponenten 'Modellinformationen 4', 'Strukturbeschreibung 8' und 'Quellcode 6' der Programmkomponentenmenge 2 sind
vorzugsweise so ausgebildet, dass aus jeweils zwei der Komponenten
die dritte Komponente ableitbar ist.
-
Das
erfindungsgemäße Verfahren
betrifft das Herstellen eines konsistenten Zustands der Programmkomponentenmenge 2 eines
Computerprogramms bei manuellen Änderungen
im Quellcode 6.
-
Beim
Stand der Technik gehen manuelle Änderungen im Quellcode 6 verloren,
da diese nicht in die Modellinformationen 4 zurückgeführt werden.
-
Die 1 zeigt
die zeitliche Abfolge der Zustände
der Programmkomponentenmenge 2 bei der Durchführung einer
Ausführungsform
des erfindungsgemäßen Verfahrens.
-
Ausgangspunkt
für das
erfindungsgemäße Verfahren
bildet eine konsistente Ausgangs-Programmkomponentenmenge 2-1 enthaltend
Ausgangs-Modellinformationen 4-1, eine Ausgangs- Strukturbeschreibung 8-1 und
einen Ausgangs-Quellcode 6-1, wie sie in 1 mit 'A' bezeichnet ist. Da die Ausgangs-Programmkomponentenmenge 2-1 sich
in einem konsistenten Zustand befindet, ist der Ausgangs-Quellcode 6-1 ist
aus den Ausgangs-Modellinformationen 4-1 gemäß der Ausgangs-Strukturbeschreibung 8-1 erzeugbar.
Die Pfeile 9 in 1 geben die Richtung der Abfolge
der Zustände
an.
-
Werden
nun Änderungen
in dem Ausgangs-Quellcode 6-1 durchgeführt und somit eine neuer Quellcode 6-2 erzeugt,
so befindet sich die resultierende Ausgangs-Programmkomponentenmenge 2-2 in
einem inkonsistenten Zustand, dh der neue Quellcode 6 lässt sich
nicht aus den Ausgangs-Modellinformationen 6-1 und
der Ausgangs-Strukturbeschreibung 8-1 erzeugen. Dieser
Zustand ist in 1 mit 'B' bezeichnet.
-
Um
die Programmkomponentenmenge 2-2 wieder in einen konsistenten
Zustand zu überführen enthält das erfindungsgemäße Verfahren
die folgenden Schritte: Vergleichen von mindestens einem Teil der
Ausgangs-Programmkomponentenmenge 2-1 mit
dem neuen Quellcode 6; und Erzeugen einer neuen Strukturbeschreibung 8-2 und
neuen Modellinformationen 4-2 auf Grundlage des Vergleichs
von mindestens einem Teil der Ausgangs-Programmkomponentenmenge 2-1 mit
dem neuen Quellcode 6-2, wobei der neue Quellcode 6-2 aus
den neuen Modellinformationen 4-2 gemäß der neuen Strukturbeschreibung 8-2 automatisch
erzeugbar ist.
-
Die
auf diese Weise erzeugte (neue) Programmkomponentenmenge 2-4 mit
den neuen Modellinformationen 4-2, der neuen Strukturbeschreibung 8-2 und
dem neuen Quellcode 6-2 befindet sich wieder in einem konsistenten
Zustand. Das heißt, nachfolgende Änderungen
in den neuen Modellinformationen 4-2 berücksichtigen
automatisch die vorangegangenen Änderungen
im Ausgangs-Quellcode 6-1. Sehr vorteilhaft ist hierbei,
dass nach der Herstellung des konsistenten Zustands der Programmkomponentenmenge 2 keine
Quellcodeteile berücksichtigt
werden müssen,
wenn Änderungen
im Modell, dh in den Modellinformationen 4 vorgenommen werden.
-
Gemäß einer
bevorzugten Ausführungsform der
Erfindung ist der Vergleich des neuen Quellcodes 6-2 mit
mindestens einem Teil der Ausgangs-Programmkomponentenmenge 2-1 ein
Vergleich des neuen Quellcodes 6-2 mit der Ausgangs-Modellinformationen 4-1 und
der Ausgangsstrukturbeschreibung 8-1.
-
Zum
Vergleich des neuen Quellcodes 6-2 mit den Ausgangs-Modellinformationen 4-1 und
der Ausgangs-Strukturbeschreibung 8-1 kann aus dem neuen
Quellcode 6-2 eine erste Baumstruktur aufgebaut werden,
wobei diese erste Baumstruktur auf eine den Ausgangs-Modellinformationen 4-1 und
der Ausgangs-Strukturbeschreibung 8-1 entsprechende zweite
Baumstruktur abgebildet wird. Der Aufbau der ersten Baumstruktur
aus dem neuen Quellcode 6-2 kann mit den üblichen
Compilerbautechniken erfolgen.
-
Vorzugsweise
erfolgt das Erzeugen der neuen Strukturbeschreibung 8-2 und
der neuen Modellinformationen 4-2 unter Verwendung der Ausgangs-Modellinformationen 4-1,
der Ausgangs-Strukturbeschreibung 8-1 und des neuen Quellcodes 6-2 automatisch.
-
Bei
Konstellationen, in welchen der neue Quellcode 6-2 nicht
eindeutig auf die neuen Modellinformationen 4-2 und die
neue Strukturbeschreibung 8-2 zurückgeführt werden kann, ist vorgesehen,
dass eine Benutzerabfrage erfolgt, und somit das Erzeugen der neuen
Strukturbeschreibung 8-2 und der neuen Modellinformationen 4-2 unter
Verwendung der Ausgangs-Modellinformationen 4-1,
der Ausgangs-Strukturbeschreibung 8-1, des neuen Quellcodes 6-2 und
einer Benutzerinteraktion erfolgt.
-
Das
Erzeugen der neuen Strukturbeschreibung 8-2 und der neuen
Modellinformationen 4-1 kann in zwei Schritten erfolgen:
Erstens,
Erzeugen der neuen Strukturbeschreibung 8-2 auf Grundlage
eines ersten Vergleichs von dem mindestens einen Teil der Komponenten
der Ausgangs-Programmkomponentenmenge 2-1 mit dem neuen Quellcode 6-2.
Dies ist in 1 exemplarisch im Zustand 'C' dargestellt. Der Vergleich erfolgt
hier durch Vergleich der Ausgangs-Modellinformationen 4-1 und
der Ausgangs-Strukturbeschreibung 8-1 mit dem neuen Quellcode 6-2,
dh der mindestens eine Teil der Komponenten der Ausgangs-Programmkomponentenmenge 2-1 besteht
in der dargestellten Ausführungsform
aus der Ausgangs-Modellinformationen 4-1 und
der Ausgangs-Strukturbeschreibung 8-1. In der in 1 dargestellten
Ausführungsform wird
an neuen Komponenten nur der neue Quellcode 6-2 zur Bestimmung
der neuen Strukturbeschreibung 8-2 herangezogen (Pfeil 13).
-
Zweitens,
Erzeugen der neuen Modellinformationen 4-2 auf Grundlage
eines zweiten Vergleichs von einem zweiten Teil der Ausgangs-Programmkomponentenmenge 2-1 mit
dem neuen Quellcode 6-2 und der neuen Strukturbeschreibung 8-2,
wobei die neuen Modellinformationen 4-2 die strukturell
nicht darstellbaren Unterschiede zwischen der Ausgangs-Programmkomponentenmenge 2-1 und
dem neuen Quellcode 6-2 umfasst. Dies ist in 1 im
Zustand 'D' dargestellt. In
der dargestellten Ausführungsform
besteht der zweite Teil der Ausgangs-Programmkomponentenmenge 2-1 aus
den Ausgangs-Modellinformationen 4-1.
In der in 1 dargestellten Ausführungsform
wird an neuen Komponenten der neue Quellcode 6-2 (Pfeil 15)
und die neue Strukturbeschreibung 8-2 (Pfeil 17)
zur Bestimmung der neuen Modellinformationen 4-2 herangezogen.
-
Im
Ergebnis führt
das erfindungsgemäße Verfahren
wieder zu einem konsistenten Zustand der neuen Programmkomponentenmenge 2-4,
welche die neuen Modellinformationen 4-2, die neue Strukturbeschreibung 8-2 und
den neuen Quellcode 6-2 umfasst. Der zeitliche Ablauf gemäß der dargestellten
Ausführungsform
des Verfahrens ist 'A' → 'B' → 'C' → 'D'. Die neue Programmkomponentenmenge 2-4 kann
selbst wieder Ausgangs-Programmkomponentenmenge
für eine
erneute Durchführung
des erfindungsgemäßen Verfahrens
sein, was in 1 durch den Pfeil 11 zwischen
Zustand 'D' und Zustand 'A' symbolisiert ist. Ferner kann die neue
Programmkomponentenmenge 2-4 Ausgangspunkt für eine Änderung
in den neuen Modellinformationen 4-2 und/oder in der Strukturbeschreibung 8-2 sein,
wobei die vorher im Quellcode 6-1 durchgeführten Änderungen
(die zum neuen Quellcode 6-2 geführt haben) bewahrt werden,
da diese Änderungen
im Quellcode erfindungsgemäß auf die
Modellebene 4 und die Strukturebene 8 angehoben
wurden.
-
Nach
dem Erzeugen einer der neuen Strukturbeschreibung 8-2 und
der neuen Modellinformationen 4-2 kann der neue Quellcode 6-2 aus
den neuen Modellinformationen 4-2 gemäß der neuen Strukturbeschreibung 8-2 automatisch
erzeugt werden.
-
Die
Modellinformationen 4, die Strukturbeschreibung 8 und
der Quellcode 6 können
in einer einzigen Datei gespeichert sein. Insbesondere können die
Modellinformationen 4, die Strukturbeschreibung 8 und
der Quellcode 6 in jeweils verschiedenen Teilbäumen 10 einer
einzigen XML-Datei 12 gespeichert sein, wie in 2 dargestellt.
-
Alternativ
können
die Modellinformationen 4, die Strukturbeschreibung 8 und
der Quellcode 6 in jeweils einer eigenen Datei 14 gespeichert
sein, wie in 3 dargestellt.
-
Die
Datei 12 bzw die Dateien 14 können in üblicher Weise auf einem Speichermedium 16,
beispielsweise einem zusammenhängenden
Speichermedium, wie beispielsweise einer CD (2) oder auf
einem verteilten Speichermedium, wie beispielsweise einem Netzwerk
(3) gespeichert sein. Insbesondere umfasst die
Erfindung ein Speichermedium 16 mit mindestens einer darauf
gespeicherten Programmkomponentenmenge 2. Die Darstellung
in den Zeichnungen ist hier lediglich beispielhaft. Beliebige andere
Arten der Speicherung auf Speichermedien sind möglich. Ein Verfahren zum Speichern
einer erfindungsgemäßen Programmkomponentenmenge 2 kann
den Schritt des Speicherns der Strukturbeschreibung 8 umfassen
und kann ferner den Schritt des Speicherns der Modellinformationen
enthalten und/oder den Schritt des Speicherns des Quellcodes enthalten.
-
Die
Verarbeitung einer erfindungsgemäßen Programmkomponentenmenge 2 kann
gemäß einem Verfahren
erfolgen, welches den Schritt des Aufnehmens der Strukturbeschreibung 8 als
variable Eingabegröße umfasst.
Das Programm kann ferner das Aufnehmen von mindestens einer weiteren
der übrigen
Komponenten der Programmkomponentenmenge 2, insbesondere 'Modellinformationen 4' und 'Quellcode 6' umfassen.
-
Ein
Verfahren zum Verarbeiten einer erfindungsgemäßen Programmkomponentenmenge 2 eines
Computerprogramms kann beispielsweise ein Verfahren zum automatischen
Erzeugen eines Quellcodes des Computerprogramms sein, wobei das
Verfahren in diesem Fall die folgenden Schritte umfasst:
Aufnehmen
von Modellinformationen 4 des dem Computerprogramm zugrunde
liegenden Modells als variable Eingabegröße;
Aufnehmen der Strukturbeschreibung 8 als
variable Eingabegröße; und
automatisches
Erzeugen des Quellcodes 6 aus den Modellinformationen 4 gemäß der Strukturbeschreibung 8 mittels
eines Codegenerators.
-
'Aufnehmen' in diesem Sinne
kann beispielsweise ein 'Einlesen
von einem Speichermedium' sein.
-
Die
Erfindung ist nicht auf die in den Zeichnungen dargestellten Ausführungsformen
beschränkt.
Sie ergibt sich vielmehr aus einer fachmännischen Gesamtbetrachtung
der Beschreibung, der Zeichnungen und der Patentansprüche.