<< back to topics
Generative Software Engineering
Summary of Selected Papers
In Agile Model-Based Software Engineering, we clarify that generating software is crucial to successfully integrated modeling in development processed. Modeling will only become an integral to industrial software engineering, if automated derivation of executable code and smooth integration with handwritten code become commonplace.
We therefore examined various aspects of code generation. For instance, in [Rum12], [Rum11], [Rum16], and [Rum17] we define the language family UML/P (a reduced and semantically sound derivate of the UML) which is designed specifically for product and test code generation from class diagrams, object diagrams, Statecharts, and sequence diagrams as shown in the following figure.

In [Sch12], we developed a flexible, modular and reusable code generator for the UML/P based on the MontiCore language workbench ([KRV10], [GKR+06a]). With MontiCore, we can easily define extensions of languages as well as new language combinations. Thus, we can reuse the defined UML/P sublanguages and generation techniques in various projects.
Our architectural analysis and design language MontiArc is also based on this generation technology. As described in [HRR12] it can be used for the cloud systems, as well as cyber-physical systems, such as cars or robotics. MontiArc also has been applied to various projects.
Tooling and especially generators will only be successful in practical projects, if they have an appropriate impact on the development process, i.e., development processes need to be adapted or completely reshaped according to the availability of a generator. In [KRV06], we discuss additional roles necessary in a model-based software development project (while other roles either vanish or their workload can greatly be reduced).
The generation gap problem is addressed in [GKR+06b]. There, we discuss mechanisms to keep generated and handwritten code separated, while integrating them in the product and enabling the repetitive generation (which is much more valuable than one-shot generation).
For various purposes, including preparation of a model for generation, it is helpful to define model transformations. We can create transformation languages in concrete syntax, that reuse the underlying language concepts. In [Wei12] we show how this looks like. Even more important we describe how to systematically derive a transformation language in concrete syntax. Since then we have applied this technique successfully for several UML sub-languages and domain-specific languages.
Sometimes executability can be a disadvantageous characteristics for a modeling language, especially when people start modeling concrete algorithms instead of abstract properties. We therefore discuss needs and advantages of executable modeling with UML in agile projects in [Rum04c], how to apply UML for testing in [Rum03] as well as the advantages and perils of using modeling languages for programming in [Rum02].
Summary
- Generation of code and tests is a core capability for model-based software engineering (MBSE).
- Generators depend on the source modeling language, a precise clarification of semantic variants and the target infrastructure, including frameworks that are generated against.
- A generator consists of a transformation engine (model source to code) and a runtime environment.
- A domain specific generator can add a high amount of functionality to the target that was not "modeled" in the source.
- Agile projects require generators to be incremental, compositional and therefore quick. Thus, big monolithic tools (storing all in one model) cannot be used in agile projects.
- The MontiCore language workbench provides infrastructure for generative software development.
Related Topics
- Agile Model-Based Software Engineering
- Compositionality/Modularity of Models & Languages
- Domain-Specific Languages (DSLs)
- Evolution & Transformation of Models
- Software Language Engineering (SLE)
- MontiArc - Architectural Modeling
- MontiCore - Language Workbench
- UML/P
- Unified Modeling Language (UML)
Selected Related Publications
- [Rum17]
B. Rumpe:
Agile Modeling with UML: Code Generation, Testing, Refactoring.
Springer International, May 2017. - [Rum16] B. Rumpe:
Modeling with UML: Language, Concepts, Methods.
Springer International, July 2016. - [Rum12]
B. Rumpe
Agile Modellierung mit UML : Codegenerierung, Testfälle, Refactoring
2nd Edition, Springer Berlin, June 2012.
(html version available here) - [Wei12]
I. Weisemöller
Generierung domänenspezifischer Transformationssprachen
Shaker Verlag, ISBN 978-3-8440-1191-3.
Aachener Informatik-Berichte, Software Engineering, Band 12. 2012. - [Sch12]
M. Schindler
Eine Werkzeuginfrastruktur zur agilen Entwicklung mit der UML⁄P
Shaker Verlag, ISBN 978-3-8440-0864-7.
Aachener Informatik-Berichte, Software Engineering Band 11. 2012. - [HRR12]
A. Haber, J. O. Ringert, B. Rumpe
MontiArc - Architectural Modeling of Interactive Distributed and Cyber-Physical Systems
RWTH Aachen University, Technical Report.
AIB-2012-03. February 2012.
- [Rum11]
B. Rumpe
Modellierung mit UML
2nd Edition, Springer Berlin, September 2011.
(html version available here) - [KRV10]
H. Krahn, B. Rumpe, S. Völkel
MontiCore: a Framework for Compositional Development of Domain Specific Languages.
In: International Journal on Software Tools for Technology Transfer (STTT), Volume 12, Issue 5, pp. 353-372, September 2010
- [KRV06]
H. Krahn, B. Rumpe, S. Völkel.
Roles in Software Development using Domain Specific Modeling Languages.
In: Proceedings of the 6th OOPSLA Workshop on Domain-Specific Modeling (DSM' 06), Portland, Oregon USA
Technical Report TR-37, Jyväskylä University, Finland, 2006 - [GKR+06a]
H. Grönniger, H. Krahn, B. Rumpe, M. Schindler, S. Völkel.
MontiCore 1.0 - Ein Framework zur Erstellung und Verarbeitung domänenspezifischer Sprachen.
Informatik-Bericht 2006-04
Technische Universität Braunschweig, Carl-Friedrich-Gauss-Fakultät für Mathematik und Informatik, 2006.
- [GKR+06b]
H. Grönniger, H. Krahn, B. Rumpe, M. Schindler.
Integration von Modellen in einen codebasierten Softwareentwicklungsprozess..
In: Proceedings der Modellierung 2006. 22.-24. März 2006, Innsbruck.
GI-Edition - Lecture Notes in Informatics, LNI P-82,
ISBN 3-88579-176-5, 2006. - [Rum04c]
B. Rumpe.
Agile Modeling with the UML.
Ed.: M. Wirsing, A. Knapp, S. Balsamo. In: Radical Innovations of Software and Systems Engineering in the Future.
9th International Workshop, RISSEF 2002. Venice, Italy, October 2002.
LNCS 2941. Springer Verlag 2004. - [Rum03]
B. Rumpe.
Model-Based Testing of Object-Oriented Systems
In: Formal Methods for Components and Objects
F. de Boer, M.Bonsangue, S. Graf, W.-P. de Roever (eds.)
International Symposium, FMCO 2002. Leiden, November 2002, Revised Lectures. LNCS 2852,
Springer Publisher, 2003
- [Rum02]
Bernhard Rumpe.
Executable Modeling with UML. A Vision or a Nightmare?
In: Issues & Trends of Information Technology Management in Contemporary Associations, Seattle. Idea Group Publishing, Hershey, London, pp. 697-701. 2002.
<< list of all topics list of all publications >>