Compositionality & Modularity of Models & Languages
Summary of Most Relevant Topic Papers
Complex (software) systems become manageable when divided into modules (horizontally, vertically and/or hierarchically). Modules encapsulate internal details and give us an abstract interface for their usage. Composing these modules as “black boxes” allows us to construct complex systems.
Model-Based Software Engineering (MBSE) uses models to reduce complexity of the system under development. Nevertheless, it has reached a point, where the models themselves are becoming rather complex. This clearly rises the need for suitable mechanisms for modularity within and between models.
A modular approach for MBSE cannot only help us to master complexity, but is also a key enabler for model-based engineering of heterogeneous software systems as discussed in [HKR+09]. In [BR07] and [RW18] we have described such a set of compositional modeling concepts, perfectly suited for modular development of concurrent, but intensively interacting systems.
A compositional approach has to take into account several levels of the entire MBSE process, starting with the respective modeling language in use, the models themselves and, eventually, any generated software components [TAB+21].
We have examined various aspects of model composition in [HKR+07], describing a mathematical view on what model composition should be. It defines the mechanisms of encapsulation, and referencing through externally visible interfaces.
In [KRV10] and [KRV08], we examine modularity and composition for
the definition of Domain-Specific
Languages (DSLs).
As DSLs are becoming more and more popular, the efficient reuse of DSL
fragments (i.e., language components) is vital to achieve an efficient
development process.
[HLN+15] describes effectively working techniques and caveats for an approach to integrate heterogeneous modeling languages such as UML or SysML in the large via extensible and composable language components, which led finally to the methodological approach of the composition of heterogeneous modeling languages in [HLN+15a]. This approach distingushes language embedding, language inheritance, and language aggregation as three different composition techniques that affect concrete and abstract syntax, context conditions aqnd in particular symbol table composition. [NRR16] extends the symbol table infrastructure with generator information for a composable generation approach.
[HNRW16] concentrates on the automatic generation of extensible and type safe composable visitors, which are a core element for compositional synthesis and analysis algorithms and context conditions on models.
But aside from the language definition, the accompanying infrastructure needs to be modular as well (as described in [KRV07b]). Infrastructure such as validation or editor functionality should be reusable if parts of the underlying DSL are reused, e.g., as part of another language.
[Voe11] provides the underlying technology for compositional language development, which we, e.g., applied to Robotics control [RRRW15b] and nowadays investigate under the umbrella term of Software Language Engineering (SLE). Based on the experiences in language design, we also have developed a set of guidelines to estimate the quality of a DSL in [KKP+09].
We have summarized our approach to composition and the challenges that need to be solved in [CBCR15], which describes a conceptual model of the compositional, so called “globalized” use of domain specific languages, which we published together with related topics in [CCF+15a].
Based on the possibility to compose languages from language components, we explored controlled and extensible variability of the concrete and abstract syntax using independent, composable language features in [BEK+18b], [BEK+19] and [BPR+20].
[HRW18] extends the idea of composition with systematic derivation of new languages. As an application of this form of derivation we have developed a new form of decomposition of model information, namely the concept of tagging languages in [GLRR15]. It allows describing additional, e.g., technical information for model elements in extra documents and thus facilitates reuse of the original model in different contexts with individual tag sets, but also of tags on different models. It furthermore allows to type the tags. MontiCore can automatically derive a tagging language for each given base language.
Key Statements
- Modularity and composition are applicable in and desired for the whole life cycle of MBSE - just as for conventional software engineering.
- Modeling language(s) used in a large project must assist modularity and composition to allow reuse of individual models.
- When defining complex DSLs it is also interesting to define the language in a modular way, reusing syntax, semantics, analysis techniques, code synthesis, etc.
- Modularity in DSLs promises to raise the applicability and popularity of solutions based on DSLs.
- If the UML Standard had followed a truly modular way, we would have an even better UML.
Selected Topic-Specific Publications
-
[TAB+21]In: Composing Model-Based Analysis Tools, Heinrich, Robert and Duran, Francisco and Talcott, Carolyn and Zschaler, Steffen (Eds.), pp. 45-70, ISBN 978-3-030-81914-9, Springer, Jul. 2021.
-
[BPR+20]In: Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, pp. 35-46, ACM, Oct. 2020.
-
[BEK+19]In: Journal of Systems and Software (JSS), R. C. Sevilla, L. Fuentes, M. Lochau (Eds.), Volume 152, pp. 50-69, Elsevier, Jun. 2019.
-
[BEK+18b]In: International Conference on Systems and Software Product Line (SPLC’18), ACM, Sep. 2018.
-
[HRW18]In: Journal Computer Languages, Systems & Structures, Volume 54, pp. 386-405, Elsevier, 2018.
-
[RW18]In: Principles of Modeling: Essays Dedicated to Edward A. Lee on the Occasion of His 60th Birthday, Lohstroh, Marten and Derler, Patricia Sirjani, Marjan (Eds.), pp. 383-406, LNCS 10760, ISBN 978-3-319-95246-8, Springer, 2018.
-
[HNRW16]In: Conference on Modelling Foundations and Applications (ECMFA), pp. 67-82, LNCS 9764, Springer, Jul. 2016.
-
[NRR16]In: Modellierung 2016 Conference, Volume 254, pp. 133-140, LNI, Bonner Köllen Verlag, Mar. 2016.
-
[HLN+15a]In: Model-Driven Engineering and Software Development, Volume 580, pp. 45-66, Communications in Computer and Information Science, Springer, 2015.
-
[RRRW15b]In: Journal of Software Engineering for Robotics (JOSER), Volume 6(1), pp. 33-57, 2015.
-
[CBCR15]In: Globalizing Domain-Specific Languages, pp. 7-20, LNCS 9400, Springer, 2015.
-
[CCF+15a]LNCS 9400, Springer, 2015.
-
[GLRR15]In: Conference on Model Driven Engineering Languages and Systems (MODELS’15), pp. 34-43, ACM/IEEE, 2015.
-
[HLN+15]In: Model-Driven Engineering and Software Development Conference (MODELSWARD’15), pp. 19-31, SciTePress, 2015.
-
[Voe11]Aachener Informatik-Berichte, Software Engineering, Band 9, ISBN 978-3-8440-0328-4, Shaker Verlag, 2011.
-
[KRV10]In: International Journal on Software Tools for Technology Transfer (STTT), Volume 12(5), pp. 353-372, Springer, Sep. 2010.
-
[KKP+09]In: Domain-Specific Modeling Workshop (DSM’09), pp. 7-13, Techreport B-108, ISBN 978-952-488-371-9, Helsinki School of Economics, Oct. 2009.
-
[HKR+09]In: Conference on Software Engineeering in Research and Practice (SERP’09), pp. 172-176, Jul. 2009.
-
[KRV08]In: Conference on Objects, Models, Components, Patterns (TOOLS-Europe’08), pp. 297-315, LNBIP 11, Springer, 2008.
-
[BR07]In: Informatik-Spektrum, Band 30(1), pp. 3-18, Springer Berlin, Feb. 2007.
-
[KRV07b]In: Conference on Model Driven Engineering Languages and Systems (MODELS’07), pp. 286-300, LNCS 4735, Springer, 2007.
-
[HKR+07]In: Conference on Model Driven Architecture - Foundations and Applications (ECMDA-FA’07), pp. 99-113, LNCS 4530, Springer, Germany, 2007.
Related Topics
- Agile Model-Based Software Engineering
- Domain-Specific Languages (DSLs)
- Evolution & Transformation of Models
- Generative Software Engineering
- MontiArc - Architectural Modeling
- MontiCore - Language Workbench
- Unified Modeling Language (UML)
- Semantics of Modeling Languages
- Software Language Engineering (SLE)
- UML/P
- Variability & Software Product Lines (SPL)