<< back to topics
Agile Model-Based Software Engineering
Summary of Selected Papers
Many developers and project managers think that the use of models in software development yields heavy-weight, tedious development processes. They believe that sooner or later, the models are outdated, not co-evolved, buggy and, ultimately, no longer helpful, but they believe that agility means to concentrate on the program as a core artifact without much extra documentation. Agility enables efficient evolution, correction and extension. As such, it seems to conflict with modeling.
One of our research hypotheses [Rum04c], hence, can be phrased like this: "Using an executable, yet abstract and multi-view modeling language for modeling, designing, and programming supports agile development process."
We found that modeling will be used in development projects much more, when its benefits become evident early. Therefore, generation or synthesis of code from the models needs to be among the first steps of a model-based development process. Other beneficial techniques, such as test synthesis or high level analysis techniques, are less important. Consequently, executability of modeling languages is crucial.
Execution of UML and DSLs
We discussed the question whether UML should be executable in [Rum02]. We found code generation a promising approach for larger subsets of the UML language, but also identified a number of challenges. We therefore started our research agenda to solve these challenges in order to make model-based software engineering (MBSE) truly successful in the agile software development. We explored in detail, how UML fits for that purpose. Not only the deficiencies of existing UML tools, but also the UML language itself need to be adapted to fit the needs of an agile software development process.
In [Rum03] we discussed how modeling of tests helps to increase reuse and efficiency. In [GKR+06b], for example, we concentrate on the integration of models and ordinary programming language code.
![]() |
![]() |
![]() |
![]() |
In [Rum12], [Rum11], [Rum16], and [Rum17] (online versions available here), the UML/P, a variant of the UML especially designed for programming, refactoring and evolution, is defined. The UML/P embodies class, object, sequence diagrams, Statecharts and OCL in combination with Java to model code as well as tests as sketched in the following figure.

Detailed discussions on how to use the UML/P for code generation, testing and on how to refactor structural models such as class diagrams, as well as behavioral models such as Statecharts, can be found in [Rum12], [Rum11], [Rum17], and [Rum16]. Integrated use of UML/P languages demands forms of language integration, such as, using object diagrams in the OCL to describe desired or unwanted object structures. These language integration mechanisms are presented there as well.
In the last decade, we implemented a language workbench called MontiCore which is initially described in [GKR+06a]. On top of that, we realized most of the language components of the UML/P in [Sch12]. This includes a precise definition of the textual languages, type checks, checks for other context conditions within and between UML sub-languages and a framework for the implementation of code generators.
Specific Concepts Assisting Agile Development
Agile development requires many specific activities, techniques and concepts. Links to further research can be found below. Some of this research, e.g., includes a general discussion of how to manage and evolve models [LRS+10] or a precise definition for model composition as well as model languages [HKR+09]. Compositionality is particularly important and must be designed carefully as it allows the tools to analyze and generate incrementally, thus being much more agile than today's modeling tools. We also discussed in detail what refactoring means and how refactoring looks like in the various modeling and programming languages [PR03]. The UML/P is implemented in such a way that models can be specified free of redundancies even in different levels of abstraction, which enhances refactoring and evolution techniques on models. To better understand the effect of an evolved design, we discuss the need for semantic differencing in [MRR10].
When models are the central notation, model quality becomes an important issue. Therefore, we have described a set of general requirements for model quality in [FHR08]. We distinguished between internal and external quality. External quality refers to the correctness and completeness of a model with respect to the original that it describes, while internal quality refers to the model presentation and thus plays the same role as coding guidelines for programming languages.
We assume that the use of models at runtime will become a pretty agile and efficient development technique. It allows developers to delay design decisions to runtime adaptation and configuration of systems. However, reliability then becomes an issue. In [CEG+14] we have therefore discussed how to improve reliability while retaining adaptivity.
Summary
- Model-based development becomes interesting, when the model language is the central notation and thus replacing the programming language.
- Tooling for MBSE must include code and test generation as well as type and context condition checking already on models. These techniques must be quick and thus modular and incremental.
- Agile concepts, such as refactoring, evolution, and automatic testing can be established with UML/P.
- Executable UML/P is an extension of UML with Java, implemented using the MontiCore language workbench.
Related Topics
- Evolution & Transformation of Models
- Generative Software Engineering
- MontiCore - Language Workbench
- UML/P
- Unified Modeling Language (UML)
- Variability & Software Product Lines (SPL)
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. -
[CEG+14]
B. Cheng, K. Eder, M. Gogolla, L. Grunske, M. Litoiu, H. Müller, P. Pelliccione,
A. Perini, N. Qureshi, B. Rumpe, D. Schneider, F. Trollmann, N. Villegas:
Using Models at Runtime to Address Assurance for Self-Adaptive Systems
In: Models@run.time, LNCS 8378, pp. 101-136, Springer Publisher, 2014. - [Rum12]
B. Rumpe.
Agile Modellierung mit UML : Codegenerierung, Testfälle, Refactoring.
2nd Edition, Springer Berlin, June 2012.
(html version available here) - [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 - [Rum11]
B. Rumpe.
Modellierung mit UML.
2nd Edition, Springer Berlin, September 2011.
(html version available here) - [Kra10]
H. Krahn.
MontiCore: Agile Entwicklung von domänenspezifischen Sprachen im Software Engineering.
Shaker Verlag, ISBN 978-3-8322-8948-5. Aachener Informatik-Berichte, Software Engineering Band 1. 2010 - [LRS+10]
T. Levendovszky, B. Rumpe, B. Schätz, J. Sprinkle.
Model Evolution and Management.
In: MBEERTS: Model-Based Engineering of Embedded Real-Time Systems, p. 241 - 270
International Dagstuhl Workshop
Dagstuhl Castle, Germany, LNCS 6100, Springer Berlin, October 2010 - [MRR10]
S. Maoz, J. O. Ringert and B. Rumpe:
A Manifesto for Semantic Model Differencing.
In: Proceedings Int. Workshop on Models and Evolution (ME'10), co-located with MoDELS'10. J. Dingel and A. Solberg (Eds.): MoDELS Workshops, LNCS 6627, pp. 194 - 203, 2010. - [HKR+09]
C. Herrmann, H. Krahn, B. Rumpe, M. Schindler, S. Völkel.
Scaling-Up Model-Based-Development for Large Heterogeneous Systems with Compositional Modeling.
In: Proceedings of the 2009 International Conference on Software Engineeering in Research and Practice, Vol. 1.
Ed.: H. Arabnia, H. Reza. July 13-16. Las Vegas, Nevada, USA. 2009 - [FHR08]
F. Fieber, M. Huhn, B. Rumpe.
Modellqualität als Indikator für Softwarequalität: eine Taxonomie.
In: Informatik-Spektrum. Springer Verlag.
Band 31, Heft 5, Oktober 2008 - [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 - [PR03]
J. Philipps, B. Rumpe.
Refactoring of Programs and Specifications.
In: Practical foundations of business and system specifications. H.Kilov and K.Baclawski (eds.), pg. 281-297,
Kluwer Academic Publishers, 2003 - [Rum02]
B. 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 >>