MontiCore - Language Workbench

Introduction

MontiCore is a language workbench for the efficient development of domain-specific languages. MontiCore is used as a basic vehicle for our ongoing research in the area of model-based software engineering. The MontiCore Language Workbench and Library Handbook [HKR21] features agile and compositional development of domain-specific (modeling) languages (DSLs). These concepts have the potential to greatly impact the software engineering process by enabling easy development of high-quality, custom-tailored languages to express software models. Such models can be analyzed, interpreted, and, in the end, potentially transformed into a running software product.

The MontiCore framework provides necessary application programming interfaces along with a special language definition format based on grammars.

MontiCore has been realized particularly with respect to modularity both concerning the implementation and the development of DSLs. As such, DSLs can be realized in a compositional way, reusing, for example, common language definitions. This allows the creation of language libraries which make it even easier to create the desired DSL. Modularity and compositionality of MontiCore’s language component is based on (1) compositional concrete and abstract syntax, (2) compositional definition of context conditions, (3) clear definition of model interfaces using symbols of various symbol kinds (far beyond any restrictions of programming languages), and (4) compositional analysis and generation infrastructure enabling black-box reuse of algorithms on sub-languages.

Therefore, MontiCore comes with a large library of language components containing various forms of expressions, statements, and literals. A second level of language components defines constituents for modeling languages, such as StateCharts, Class Diagrams, Object Diagrams, Sequence Diagrams, BDDs and IBDs from UML and SysML as well as Feature Diagrams, etc. The library of language components also provides possibilities to specify in first-order logic (i.e., an extension of the OCL), with specific emphasis on sets, physical units (SI units), both as literals and as types including automatic conversions. It provides regular expressions as language elements defining subtypes for strings providing typesafe processing of strings beyond standard programming language capabilities. Each of the provided language components comes with locally defined symbol kinds that can be exported and mapped to symbol kinds of other languages.

MontiCore has successfully been deployed in a variety of industrial and research projects. Among many other general and domain-specific languages, the UML/P family of modeling languages has been realized with MontiCore, and various forms of structured text languages for requirements, norms, and even legal texts were defined.

Based on the facilities the MontiCore Language Workbench provides, automatic derivation of a transformation language for a given modeling language, variability of the languages, adding tagging to a given language, or even smart analysis techniques, such as semantic differences have been constructed and successfully realized. Below we provide a selection of relevant publications about MontiCore and related topics that are based on the MontiCore framework. Please also note the MontiCore Website for technical details as well as access to MontiCore itself.

Videos in this playlist:

  • MontiCore - Allgemeine Informationen (Deutsch)
  • MontiCore - General Information (English)
  • and 20 videos about specific topics in MontiCore’s tooling

MontiCore’s History

MontiCore has been developed since 2004 [GKR+08] [HKR21]. We started its development because at that time the available tools for model management where often very poor in functionality and also not extensible, but closed shops. In 2004 the first version of UML/P was published (and is now available as [Rum16] [Rum17]) demonstrating that the conglomerate of languages - that the UML is made of - can be substantiated with useful transformation, refinement and refactoring techniques (cf. Evolution & Transformation of Models). We were mainly interested in model-based techniques for code and test code generation as well as flexible combination of language fragments, such as OCL within Statechart or class Diagrams for typing in Component and Connector Diagrams. However, hard coded modeling tools where not helpful in realizing these techniques. This original motivation for providing a flexible and adaptable toolset through MontiCore can also be found in the foundational PhD theses of MontiCore [Kra10] [Voe11].

Later, it became apparent that UML will be complemented by several DSLs that will be connected to software development or execution in various ways. The definition of DSLs encounters the same difficulties as the definition of UML has faced, i.e., they are often built from scratch, reuse is difficult or not supported, and the same concepts get different syntactic shapes. Thus, combining DSLs is rather impossible. We therefore extended the focus of MontiCore to become a general language workbench that allows to define languages and language fragments and to derive as much as possible from an integrated, compact definition.

MontiCore provides sophisticated techniques to generate transformation languages and their transformation engines based on DSLs [HRW15], [AHRW17], [RRW15] [HHR+15] [Wei12], we have explored tagging languages [Loo17] [MRRW16] [GLRR15], various forms of the UML and its derivatives [Sch12] [Wor16] [Hab16] [Rei16] [Rot17] and a variety DSLs. Despite MontiCore being an academic tool to explore modeling and meta-modeling techniques, after so years of development, it has reached an extraordinary strength and is thus increasingly used in industrial projects, like energy management [Pin14], as well as in scientific projects of entirely different nature, such as the simulation of urban scenarios for autonomous driving [Ber10] or human brain modeling [PBI+16].

MontiCore, however, does not primarily focus comfort, e.g., graphical editing, but advanced functionality for model-based analysis or synthesis of software intensive systems as well as efficient textual editing for experienced users.

Selected Topic-Specific Publications

  1. [AHRW17]
    K. Adam, K. Hölldobler, B. Rumpe, A. Wortmann:
    In: International Conference on Robotic Computing (IRC’17), pp. 172-179, IEEE, Apr. 2017.
  1. [BDL+18]
    A. Butting, M. Dalibor, G. Leonhardt, B. Rumpe, A. Wortmann:
    In: International Conference on Software Language Engineering (SLE’18), pp. 187-199, ACM, 2018.
  1. [BEH+20]
    A. Butting, R. Eikermann, K. Hölldobler, N. Jansen, B. Rumpe, A. Wortmann:
    In: Special Issue dedicated to Martin Gogolla on his 65th Birthday, Journal of Object Technology, L. Hamann, R. Paige, A. Pierantonio, B. Rumpe, A. Vallecillo (Eds.), Volume 19(3), pp. 3:1-16, AITO - Association Internationale pour les Technologies Objets, Oct. 2020. Special Issue dedicated to Martin Gogolla on his 65th Birthday.
  1. [BEK+18b]
    A. Butting, R. Eikermann, O. Kautz, B. Rumpe, A. Wortmann:
    In: International Conference on Systems and Software Product Line (SPLC’18), ACM, Sep. 2018.
  1. [BEK+19]
    A. Butting, R. Eikermann, O. Kautz, B. Rumpe, A. Wortmann:
    In: Journal of Systems and Software, R. C. Sevilla, L. Fuentes, M. Lochau (Eds.), Volume 152, pp. 50-69, Elsevier, Jun. 2019.
  1. [BHR+21]
    A. Butting, K. Hölldobler, B. Rumpe, A. Wortmann:
    In: Composing Model-Based Analysis Tools, Heinrich, Robert and Duran, Francisco and Talcott, Carolyn and Zschaler, Steffen (Eds.), pp. 217-234, ISBN 978-3-030-81914-9, Springer, Jul. 2021.
  1. [BPR+20]
    A. Butting, J. Pfeiffer, B. Rumpe, A. Wortmann:
    In: Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, pp. 35-46, ACM, Oct. 2020.
  1. [BPR+20]
    A. Butting, J. Pfeiffer, B. Rumpe, A. Wortmann:
    In: Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, pp. 35-46, ACM, Oct. 2020.
  1. [Ber10]
    C. Berger:
    Aachener Informatik-Berichte, Software Engineering, Band 6, ISBN 978-3-8322-9378-9, Shaker Verlag, 2010.
  1. [GKR+06]
    H. Grönniger, H. Krahn, B. Rumpe, M. Schindler, S. Völkel:
    CFG-Fakultät, TU Braunschweig, 2006-04, Informatik-Bericht, Aug. 2006.
  1. [GKR+07]
    H. Grönniger, H. Krahn, B. Rumpe, M. Schindler, S. Völkel:
    In: 4th International Workshop on Software Language Engineering, Nashville, Informatik-Bericht 4/2007, Johannes-Gutenberg-Universität Mainz, 2007.
  1. [GKR+08]
    H. Grönniger, H. Krahn, B. Rumpe, M. Schindler, S. Völkel:
    In: 30th International Conference on Software Engineering (ICSE 2008), Leipzig, Germany, May 10-18, 2008, Companion Volume, pp. 925-926, 2008.
  1. [GLRR15]
    T. Greifenberg, M. Look, S. Roidl, B. Rumpe:
    In: Conference on Model Driven Engineering Languages and Systems (MODELS’15), pp. 34-43, ACM/IEEE, 2015.
  1. [HHR+15]
    L. Hermerschmidt, K. Hölldobler, B. Rumpe, A. Wortmann:
    In: Workshop on Model-Driven Engineering for Component-Based Software Systems (ModComp’15), Volume 1463, pp. 18-23, CEUR Workshop Proceedings, 2015.
  1. [HJRW20]
    K. Hölldobler, N. Jansen, B. Rumpe, A. Wortmann:
    In: Modellierung 2020, D. Bork, D. Karagiannis, H. C. Mayr (Eds.), pp. 189-190, Gesellschaft für Informatik e.V., Feb. 2020.
  1. [HKR21]
    K. Hölldobler, O. Kautz, B. Rumpe:
    Aachener Informatik-Berichte, Software Engineering, Band 48, ISBN 978-3-8440-8010-0, Shaker Verlag, May 2021.
  1. [HMR+19]
    K. Hölldobler, J. Michael, J. O. Ringert, B. Rumpe, A. Wortmann:
    In: The Journal of Object Technology, A. Pierantonio, M. van den Brand, B. Combemale (Eds.), Volume 18(1), pp. 1-60, AITO - Association Internationale pour les Technologies Objets, Jul. 2019.
  1. [HR17]
    K. Hölldobler, B. Rumpe:
    Aachener Informatik-Berichte, Software Engineering, Band 32, ISBN 978-3-8440-5713-3, Shaker Verlag, Dec. 2017.
  1. [HRR12]
    A. Haber, J. O. Ringert, B. Rumpe:
    RWTH Aachen University, AIB-2012-03, Technical Report, Feb. 2012.
  1. [HRW15]
    K. Hölldobler, B. Rumpe, I. Weisemöller:
    In: Conference on Model Driven Engineering Languages and Systems (MODELS’15), pp. 136-145, ACM/IEEE, 2015.
  1. [HRW18]
    K. Hölldobler, B. Rumpe, A. Wortmann:
    In: Computer Languages, Systems & Structures, Volume 54, pp. 386-405, Elsevier, 2018.
  1. [Hab16]
    A. Haber:
    Aachener Informatik-Berichte, Software Engineering, Band 24, Shaker Verlag, Sep. 2016.
  1. [Her19]
    L. Hermerschmidt:
    Aachener Informatik-Berichte, Software Engineering, Band 41, ISBN 978-3-8440-6707-1, Shaker Verlag, Jun. 2019.
  1. [Hoe18]
    K. Hölldobler:
    Aachener Informatik-Berichte, Software Engineering, Band 36, ISBN 978-3-8440-6322-6, Shaker Verlag, Dec. 2018.
  1. [KRV07a]
    H. Krahn, B. Rumpe, S. Völkel:
    In: Domain-Specific Modeling Workshop (DSM’07), Technical Reports TR-38, ISBN 978-951-39-2915-2, Jyväskylä University, Finland, 2007.
  1. [KRV07b]
    H. Krahn, B. Rumpe, S. Völkel:
    In: Conference on Model Driven Engineering Languages and Systems (MODELS’07), pp. 286-300, LNCS 4735, Springer, 2007.
  1. [KRV08]
    H. Krahn, B. Rumpe, S. Völkel:
    In: Conference on Objects, Models, Components, Patterns (TOOLS-Europe’08), pp. 297-315, LNBIP 11, Springer, 2008.
  1. [KRV10]
    H. Krahn, B. Rumpe, S. Völkel:
    In: International Journal on Software Tools for Technology Transfer (STTT), Volume 12(5), pp. 353-372, Springer, Sep. 2010.
  1. [Kra10]
    H. Krahn:
    Aachener Informatik-Berichte, Software Engineering, Band 1, ISBN 978-3-8322-8948-5, Shaker Verlag, März. 2010.
  1. [Kra10]
    H. Krahn:
    Aachener Informatik-Berichte, Software Engineering, Band 1, ISBN 978-3-8322-8948-5, Shaker Verlag, März. 2010.
  1. [Kus21]
    E. Kusmenko:
    Aachener Informatik-Berichte, Software Engineering, Band 49, ISBN 978-3-8440-8286-9, Shaker Verlag, Nov. 2021.
  1. [Loo17]
    M. Look:
    Aachener Informatik-Berichte, Software Engineering, Band 27, ISBN 978-3-8440-5131-5, Shaker Verlag, Mar. 2017.
  1. [MRRW16]
    S. Maoz, J. O. Ringert, B. Rumpe, M. v. Wenckstern:
    In: Workshop on Model-Driven Engineering for Component-Based Software Systems (ModComp’16), Volume 1723, pp. 19-24, CEUR Workshop Proceedings, Oct. 2016.
  1. [PBI+16]
    D. Plotnikov, I. Blundell, T. Ippen, J. M. Eppler, A. Morrison, B. Rumpe:
    In: Modellierung 2016 Conference, Volume 254, pp. 93-108, LNI, Bonner Köllen Verlag, Mar. 2016.
  1. [Pin14]
    C. Pinkernell:
    Aachener Informatik-Berichte, Software Engineering, Band 17, ISBN 978-3-8440-2876-8, Shaker Verlag, 2014.
  1. [Plo18]
    D. Plotnikov:
    Aachener Informatik-Berichte, Software Engineering, Band 33, ISBN 978-3-8440-5779-9, Shaker Verlag, Feb. 2018.
  1. [RRW15]
    J. O. Ringert, B. Rumpe, A. Wortmann:
    In: MORSE/VAO Workshop on Model-Driven Robot Software Engineering and View-based Software-Engineering, pp. 41-47, ACM, 2015.
  1. [Rei16]
    D. Reiß:
    Aachener Informatik-Berichte, Software Engineering, Band 22, ISBN 978-3-8440-4446-1, Shaker Verlag, May 2016.
  1. [Rot17]
    A. Roth:
    Aachener Informatik-Berichte, Software Engineering, Band 31, ISBN 978-3-8440-5688-4, Shaker Verlag, Dec. 2017.
  1. [Rum16]
    B. Rumpe:
    Springer International, Jul. 2016.
  1. [Rum17]
    B. Rumpe:
    Springer International, May 2017.
  1. [Sch12]
    M. Schindler:
    Aachener Informatik-Berichte, Software Engineering, Band 11, ISBN 978-3-8440-0864-7, Shaker Verlag, 2012.
  1. [Voe11]
    S. Völkel:
    Aachener Informatik-Berichte, Software Engineering, Band 9, ISBN 978-3-8440-0328-4, Shaker Verlag, 2011.
  1. [Wei12]
    I. Weisemöller:
    Aachener Informatik-Berichte, Software Engineering, Band 12, ISBN 978-3-8440-1191-3, Shaker Verlag, 2012.
  1. [Wor16]
    A. Wortmann:
    Aachener Informatik-Berichte, Software Engineering, Band 25, Shaker Verlag, Nov. 2016.