SDL Integrated Tool Environment
Was ist SITE?
Die Forschungsgruppe "Systemanalyse" des Instituts für Informatik
entwickelt Werkzeuge für die Spezifikationssprache SDL.
Specification and Description Language standardisiert durch die
ITU-T (Z.100)
Die SITE-Werkzeuge stellen eine offene Entwicklungsumgebung und Analysekomponenten
für SDL mit diversen Erweiterungen, z.B. die Kombination mit ASN.1
oder IDL, bereit. Alle Werkzeugkomponenten sind zumeist einzeln ausführbare
Programme. Das gestattet sowohl die voneinander unabhängige Entwicklung
der Komponenten, Anpassungen für Kunden, die Integration von Drittanbietern
als auch flexible Experimente mit der SDL-Sprachdefinition selbst.
Hauptlinie der Entwicklung sind Compiler-Komponenten für die Zielsprachen
C++ und Java ausgehend von SDL/PR (die textuelle Darstellung einer Spezifikation).
SITE ist damit eine Ergänzung für (kommerzielle) grafische SDL/GR-Editoren
mit SDL/PR-Ausgabe. Die SITE-Compiler-Strecke wird in verschiedenen Projekten
zur Generierung von Software für Prototypen aber auch unter Produktionsbedingungen
eingesetzt.
Erwähnenswert: SITE realisiert auch einen vollständigen stand-alone
X.208-ASN.1-Compiler mit einigen X.690-Erweiterungen und Basic Encoding
Unterstützung für C++ und Java.
SITE-Technologie
SDL ist eine sehr komplexe Sprache. Deshalb setzen wir in der Compilertechnologie
ausschließlich auf Metawerkzeuge. Die wichtigsten Vertreter sind
hierbei Flex (lexikalische Analyse), Bison (syntaktische Analyse) und
Kimwitu
(Verwaltung des Syntaxbaumes). Normalerweise verwenden wir die
C-Generierung dieser Metawerkzeuge, in Ausnahmefällen wird auch C++
genutzt. Wegen der guten Konformität des generierten Codes zum C-Standard
lassen sich die meisten SITE-Komponenten problemlos auf allen Architekturen
mit entsprechenden C-Compilern (insbesondere auch mit Microsoft-Produkten)
übersetzen.
Darüberhinaus nutzen wir auch diverse andere frei verfügbare
Produkte (perl, gawk) und sowie Eigenentwicklungen, die einerseits den
Programmierer unterstützen und andererseits auch eine korrekte Quelltextmanipulation
zusichern. Grafische Oberflächen sind zumeist mit Python implementiert,
bei der Kommunikation zwischen SITE-Komponenten setzen wir zunehmend auf
CORBA.
SDL-Compilerkomponenten
Die klassischen Compilerkomponenten sind jeweils einzelne SITE-Komponenten,
die sich natürlich in entsprechenden Scripts zu einem SDL-Compiler
zusammenfassen lassen.
Die von der Syntaxanalyse im Speicher aufgebaute Baumstruktur spielt bei
allen SITE-Komponenten eine zentrale Rolle. Die Definition dieser Struktur,
Common Representation (CR) genannt, erfolgt mit Hilfe des Metawerkzeugs
Kimwitu.
Jede SITE-Komponente kennt die CR-Definition (Dateien
data_type.kc
und
osdl.kc) und kann die Speicherstruktur mit automatisch generierten
Funktionen in eine Datei abspeichern bzw. aus einer Datei einlesen. Der
Codegenerator liest also nur die CR-Datei einer SDL-Spezifikation, deren
Konsistenz die Semantikanalyse vorher sichergestellt hat.
Unter Umständen kann die CR auch von einem grafischen SDL-Werkzeug
direkt erzeugt werden. Für uns als Universität ist es sicher
unrealistisch, einen entsprechenden grafischen SDL-Editor zu bauen.
Um trotzdem mit einer nutzerfreundlichen grafischen Editoroberfläche
arbeiten zu können, nutzen wir verschieden Editor-APIs, sofern sie
dokumentiert sind. Die Integration für das kommerzielle Werkzeug Cinderella
ist im Rahmen eines Projekts besonders vorangetrieben worden.
Entsprechende plugin-Module für die aktuelle Cinderella-Version
werden momentan im praktischen Einsatz getestet.
Mit dem Einsatz von CORBA für einzelne SITE-Komponenten wurde auch
über eine universelle Werkzeugschnittstelle nachgedacht. Diese soll
den Namen GHOST (Generic Hierachical Object Storage Tool) tragen.
Bisher sind die Standard-SITE-Komponenten jedoch nicht mit einer GHOST-Schnittstelle
ausgestattet.
Andere SITE-Komponenten
Um die Entwicklung der Compilertechnologie in SITE entstanden auch andere
Arbeiten, die z.T. als weitere Komponenten existieren. In diesem Sinne
ist SITE auch eine
offene Entwicklungsumgebung.
-
Pretty Printer (CR-Dateien nach SDL-Text, PostScript,
HTML, LaTeX, XML)
-
Python basierte Editoren für MSC, SDL/PR (SDL/PR-Tracer yang, (SDL/GR-Entwicklung
ruht)
-
Python basierte Simulatorschnittstelle (siehe auch Simulation
von SDL)
-
ASN.1-Unterstützung entsprechend des ITU-T-Standards Z.105
-
CIF-Syntaxanalyse (SDL/PR-basiertes Austauschformat für grafische
Spezifikationen entsprechend dem ITU-T-Standard Z.106)
-
IDL/ODL-Integration
-
SDL-2000 (Exceptions, objektorientiertes Datenmodell optional unterstützt);
Aktivitäten zur Weiterentwicklung von SDL,
-
Manipulation von Grammatiken (wahlweise Konvertierung von EBNF-Versionen,
YACC nach EBNF, YACC, HTML mit "intelligenten" Umstellungen)
-
Syntax-orientierter Editor / Pretty Printer(keine
Weiterentwicklung wegen Interviewstechnologie)
-
Petrinetz-Analyse (zur Zeit keine Weiterentwicklung)
Entwicklung neuer SITE-Komponenten
Die Entwicklung eigener Komponenten ist mit Hilfe der gut modularisierten
Quellen der anderen Komponenten relativ einfach. Zum allgemeinen Verständnis
des Zusammenspiels der Komponenten gibt es ein dokumentiertes Beispiel,
welches einen
EBNF-PrettyPrinter implementiert
(Parser, Regelanalyse, Vereinfachung, pretty-Ausgabe als Codegenerierung).
Prinzipiell hat eine SITE-Komponente folgenden Aufbau:
- CR-Definition
- Es gibt zwei Python-basierte Erklärungskomponenten, die den Aufbau
der CR als Definition bzw. einer CR-Instanz komfortabel darstellen. Diese
binden sich mit einer CR-spezifischen dynamischen Bibliothek an die jeweils
gültige CR-Definition. Man kann die Python-Komponente auch zum Debuggen
in die Anwendung integrieren. Quellen stellen wir nur auf Anfrage zur Verfügung,
da der Autor an Hand dieser Programme Python erlernt hat. Natürlich
ist auch der SDL-PrettyPrinter ein willkommenes
Entwicklerwerkzeug.
- CR-Ein- und Ausgabe
- Zur Verwaltung und insbesondere die Erkennung von nicht kompatiblen
CR-Versionen nutzen wir die generierten Kimwitu-Funktionen nicht direkt.
Die Datei
cr_io.k der Semantikanalyse
sollte für die meisten Zwecke ausreichend sein.
- Optionsverwaltung
- Alle SITE-Komponenten besitzen eine relativ einheitliche Struktur was
Programmoptionen angeht. Man sollte eine Vorgabe aus vorhandenen Komponenten
nutzen und nicht das Rad neu erfinden.
- Fehlerausgaben
- Das System zur Fehlerausgabe ist sehr komfortabel. Teilkomponenten
der CR-Instanz können mit entsprechenden Formatstrings (analog printf)
an Fehlerfunktionen übergeben werden, die für eine ordentlich
formatierte Ausgabe sorgen. Bei der Positionsbestimmung des Fehlers hat
man die Wahl zwischen der Dateiposition (für den direkten Blick ins
SDL/PR) oder einer etwas ungenaueren Strukturdarstellung (für grafische
Editoren gedacht und prinzipiell auch zur Positionierung nutzbar).
In Cinderella werden SITE-Fehlermeldungen der grafischen Oberfläche
übergeben.
- Programmtests
- Kimwitu ist an sich schon mit diversen automatischen Programmtests
ausgestattet. Mit unserer modifizierten Version lassen sich jedoch auch
eine dynamisch aktivierbare Ablaufverfolgung für den rekursiven Abstieg
im CR-Baum und Funktionsrufe realisieren. Folgt man noch unseren Programmierempfehlungen,
so sind stabile Werkzeuge schnell realisiert.
- Funktionalität
- Das, was die SITE-Komponente ausmacht, sollte schon selbst bereitgestellt
werden. Man hat aber die Wahl, auf weitere Module anderer Komponenten zuzugreifen,
beispielsweise die sehr komplexe Auflösung von Bezeichnern. Die einfache
Funktionalität eines PrettyPrinters für SDL lief nach etwa einer
Woche (Autor war allerdings SDL- und SITE-Experte) als Programm stabil.
- Syntaxänderungen
- Man sollte sich sehr genau überlegen, ob es gut ist, die Syntax
von SDL zu modifizieren, da die Standardkonformität verloren geht.
Bei der Änderung der Grammatik ist es empfehlenswert, sich mit der
nicht öffentlich bereitgestellten Technologie zur Manipulation der
Bison-Quellen auseinandersetzen. Man vermeidet mit Nachfragen viele Fehler
und Arbeit! Syntaktische Einschränkungen sind dagegen kein Problem.
Erreicht man einen Knoten der CR, der nicht unterstützt werden soll,
dann reicht eine Fehlermeldung in der Anwenderkomponente meist aus.
Verfügbarkeit
Unter Beachtung der
Lizenzvereinbahrung
sind die folgenden Werkzeuge mit Quellcode verfügbar:
Ausführbare Programme für verschiedene Architekturen können
von unserem
ftp-Server
heruntergeladen werden. Für weitere technische Informationen kontakten
Sie bitte das Entwicklerteam.
Andere Komponenten gehören zu internen Forschungsprojekten (Studien-
oder Diplomarbeiten) bzw. sind an Projektpartner gebunden. Diese Komponenten
sind aus Gründen der Stabilität, der ungenügenden Dokumentation
oder der projektspezifischen Lizensierung nicht veröffentlicht.
erstellt am 15-Mai-1997
von SITE-Wartungscrew
letzte Änderung am Fre Jun 27 11:27:26 CEST 2003