• Keine Ergebnisse gefunden

Modell-basierte Programmgenerierung und Methoden des Übersetzerbaus - Zwei Seiten derselben Medaille?

N/A
N/A
Protected

Academic year: 2022

Aktie "Modell-basierte Programmgenerierung und Methoden des Übersetzerbaus - Zwei Seiten derselben Medaille?"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Modell-basierte Programmgenerierung und Methoden des

¨Ubersetzerbaus — Zwei Seiten derselben Medaille?

Wolf Zimmermann Institut f¨ur Informatik

Martin-Luther-Universit¨at Halle-Wittenberg Von-Seckendorff-Platz 1

06120 Halle (Saale), Germany wolf.zimmermann@informatik.uni-halle.de

In der vergangenen Dekade hat Modell-basierte Entwicklung in der Softwaretechnik zu- nehmende Bedeutung gewonnen, vgl. z.B. [TS07, SRC+12, JLM+12]. Aus Modellen, die in einer formalen Sprache definiert sind (Dom¨anen-spezifische Sprache) wird Code generiert, der die Modelle implementiert. Da Dom¨anen-spezifische Sprachen nicht sel- ten starken ¨Anderungen und Erweiterungen unterworfen sind, haben sich Werkzeugk¨asten wie beispielsweise das Eclipse Modeling Framework (kurz: EMF) etabliert [SBMP08], mit deren Hilfe die Codegeneratoren selbst generiert werden k¨onnen. Zur Spezifika- tion Dom¨anen-spezifischer Sprachen wird ein Metamodell definiert, aus dem dann mit- tels Modelltransformationen die Transformationsregeln in die Zielsprache spezifiziert wer- den. Neben dem Codegenerator f¨ur eine Dom¨anen-spezifische Sprache werden beispiels- weise mit der EMF-Technologie Editoren f¨ur die Dom¨anen-spezifische Sprache generiert, die auch durch die Eclipse-Technologie in Programmier- und Anwendungsumgebungen eingebettet werden k¨onnen.

Als grundlegende Technologie werden Metamodelle meist in graphischer Form (z.B. UML- Klassendiagrammen) oder durch eine kontextfreie Grammatik [EEK+12] definiert. Mit- tels OCL k¨onnen Konsistenzbedingungen angegeben werden, die alle Modelle einer Do- m¨anen-spezifischen Sprache erf¨ullen m¨ussen. Meist f¨uhren diese zu Laufzeitpr¨ufungen.

Oft werden zus¨atzlich im Code des Modell-basierten Codegenerators noch manuelle Er- g¨anzungen und ¨Anderungen vorgenommen. Gr¨unde k¨onnen Effizienzsteigerungen in der Codegenerierung oder weitere ¨Uberpr¨ufungen sein. Eine Weiterentwicklung einer Do- m¨anen-spezifischen Sprache erfordert daher nicht selten eine grunds¨atzliche Revision und

¨Uberarbeitung des Codegenerators.

Die Aufgabenstellung f¨ur ¨Ubersetzer ist nahezu identisch: ein Programm in h¨oherer Pro- grammiersprache wird in ein Programm einer Maschinensprache oder einer anderen Hoch- sprache (Cross-Compiler) transformiert. In einem ¨Ubersetzer wird der Quelltext auf kor- rekte Syntax hin analysiert und in eine interne Datenstruktur, den abstrakten Syntaxbaum transformiert. Anschließend werden Konsistenzbedingungen wie beispielsweise Typkor- rektheit analysiert. Im Falle eines Cross-Compilers wird der abstrakte Syntaxbaum in das Zielprogramm transformiert, ansonsten in eine Zwischensprache, die weiter in den

23

(2)

Maschinencode ¨ubersetzt wird. Hier haben sich z.T. seit Mitte der 1970er Jahre Werkzeuge [Joh75, KHZ82, DUP+82] und Werkzeugk¨asten zur Generierung von ¨Ubersetzern etabliert.

Aktuelle Werkzeugk¨asten sind beispielsweise ANTLRv3 [Par07] oder Eli [KWS07]. Die Syntaxanalyse wird durch Angabe der Lexik als regul¨are Ausdr¨ucke, durch eine kon- textfreie Grammatik f¨ur die konkrete Syntax und der Datenstruktur f¨ur die abstrakte Syn- tax angegeben. Die Konsistenzpr¨ufungen k¨onnen aus geordneten Attributierten Gram- matiken generiert werden, die Transformation in die Zielsprache bzw. Zwischensprache wird aus Baumtransformationen generiert. Im generierten ¨Ubersetzer m¨ussen keine ¨An- derungen mehr vorgenommen werden, da Hilfsfunktionen Bestandteil der Spezifikationen sind. Hilfsfunktionen sind bereits in der Wirtssprache (der Sprache, in der der ¨Ubersetzer implementiert ist) definiert. Sie k¨onnen deshalb problemlos eingebunden und ge¨andert werden. Dadurch ist es nicht notwendig, den generierten Code anzufassen, und man kann agil einen ¨Ubersetzer Sprachkonzept um Sprachkonzept anreichern.

Als Fazit ergibt sich eine deutliche Korrespondenz zwischen der Generierung Modell- basierter Codegeneratoren und der Generierung von ¨Ubersetzern (vgl. auch [J¨or11]): Die Begriffe Metamodell und Abstrakte Syntax sind konzeptuell identisch. Konsistenzbedin- gungen werden durch unterschiedliche Technologien wie OCL bzw. attributierte Gram- matiken definiert und Modelltransformationen entsprechen konzeptuell Baumtransforma- tionen. F¨ur die praktische Entwicklung von Modell-basierten Codegeneratoren kann da- her ohne Weiteres ¨Ubersetzerbautechnologie verwendet werden. Ein m¨oglicher Vorteil durch die Verwendung von attributierten Grammatiken an Stelle von OCL w¨are eine stati- sche Pr¨ufung der Konsistenz der Modelle anstatt dies auf Laufzeitpr¨ufungen zu verlagern.

Durch die Definition von Hilfsfunktionen in der Wirtssprache anstelle derer nachtr¨aglichen manuellen Integration in den Codegenerator w¨are eine agilere und kosteng¨unstigere En- twicklung von Modell-basierten Codegeneratoren m¨oglich. Die f¨ur die industrielle Praxis wichtige Generierung der Editoren f¨ur Dom¨anen-spezifische Sprachen und deren Einbet- tung in Programmier- und Anwendungsumgebungen m¨usste allerdings noch erfolgen, da dies durch ¨Ubersetzertechnologie bisher wenig Beachtung gefunden hat.

References

[DUP+82] S. Drossopoulou, J. Uhl, G. Persch, G. Goos, M. Dausmann, and G. Winterstein. An attribute grammar for Ada.ACM SIGPLAN Notices, 17(6):334, 1982.

[EEK+12] S. Efftinge, M. Eysholdt, J. K¨ohnlein, S. Zarnekow, R. von Massow, W. Hasselbring, and M. Hanus. Xbase: implementing domain-specific languages for Java. InProceed- ings of the 11th International Conference on Generative Programming and Component Engineering, pages 112–121. ACM, 2012.

[JLM+12] S. J¨orges, A.L. Lamprecht, T. Margaria, I. Schaefer, and B. Steffen. A constraint-based variability modeling framework. International Journal on Software Tools for Technol- ogy Transfer (STTT), 14:511–530, 2012.

[Joh75] S.C. Johnson.Yacc: Yet another compiler-compiler. Bell Laboratories, 1975.

24

(3)

[J¨or11] S. J¨orges. Genesys: A Model-Driven and Service-Oriented Approach to the Construc- tion and Evolution of Code Generators. PhD thesis, Technical University of Dortmund, 2011.

[KHZ82] U. Kastens, B. Hutt, and E. Zimmermann.GAG: A practical compiler generator. Lec- ture Notes in Computer Science 141. Springer, 1982.

[KWS07] U. Kastens, W.M.C. Waite, and A.M. Sloane.Generating Software from Specifications.

Jones & Bartlett Learning, 2007.

[Par07] T. Parr.The definitive ANTLR reference: building domain-specific languages. 2007.

[SBMP08] D. Steinberg, F. Budinsky, E. Merks, and M. Paternostro.EMF: eclipse modeling frame- work. Addison-Wesley Professional, 2008.

[SRC+12] I. Schaefer, R. Rabiser, D. Clarke, L. Bettini, D. Benavides, G. Botterweck, A. Pathak, S. Trujillo, and K. Villela. Software diversity: state of the art and perspectives.Interna- tional Journal on Software Tools for Technology Transfer (STTT), 14:477–495, 2012.

[TS07] Sven Efftinge und Arno Hasse Thomas Stahl, Markus V¨olter.Modellgetriebene Softwa- reentwicklung: Techniken, Engineering, Management. dpunkt.verlag, 2007.

25

(4)

Referenzen

ÄHNLICHE DOKUMENTE

jeq tar 54 tar jump if equal: Springe zu Adresse, wenn Akku gleich war 3 jgt tar 56 tar jump if greater than:. Springe zu Adresse, wenn Akku größer war 3 end 60 00 end:

Der bandförmige Riemen von der Breite 1) und der Dicke 13 wird gemäss 5. 264 im führenden Trum durch die Anspannung T beansprucht und ist danach zu berechnen. Hiernach hat man, wenn

1. Eine vorhandene Dampfmaschine***) von 60 PS über- trägt diese Arbeitsstärlcé durch fünf Seile von 50 mm Dicke bei 45 minut- lichen Umdrehungen und 3,44m Rollendurchmesser. In

Der Reibungsmodul @ stellt sich etwas höher als beim Riementn'eb, indem nämlich a stets nahe at und der Reibungskoéffizient f wegen Besetzung der Rolle mit quer stehenden

Sehr viel geringer als bei der dünnen Stahlgurte sind diese bei der dicken Gusseisengurte, welche in Adyman’s Kupplung, Fig. Unsere Figur stellt eine Ausführung der grösseren Sorte

Wendet man eine Gegenrolle (Fig. 795) und mit deren Hülfe drei halbe Umschläge an, setzt aber ausserdem @ der Abnutzung wegen klein, und zwar : 3Icg, so kommt

Schmiedeisen und namentlich Stahl, wenn nach dem Mannesmann’schen Verfahren zum Rohr verwendet (S. 987), lassen hohe Spannungen zu; für Schmiedeisen kann.man gut bis 12, für

Die Baustoffmenge, welche ein Ferntrieb für den hauptsächlichsten Kraftträger erfordert, lässt sich vergleichsweise durch die Zahl der PS ausdrücken, welche lkg des Baustoffes bei