MontiGem - Generating Enterprise Management Systems
Summary of Most Relevant Topic Papers
MontiGem [AMN+20a] is a generator for data-centric applications. To a large extent, it uses standard models from UML/P as sources, namely, Class Diagrams and OCL. While the standard semantics of these modeling languages remains untouched, the generator produces a lot more functionality around these models, because it is well integrated into the target framework and target infrastructure which is used to execute the enterprise management system. The generator thus knows the backend technology stack, with an application core in Java, storage using a relational database and the frontend consisting of Typescript components based on Angular and thus running in the browser.
The generator creates custom data structures based on the input models and domain dependent target code within each layer of the three tier architecture of the target application. The generated source code includes database configurations for the persistence tier, permission checks and APIs for the application tier and user interfaces for the presentation tier. As a highlight, the storage paradigm is based on the command pattern that allows to merge current changes much better and thus allows an optimistic update scheme.
As an extension, a DSL is used to describe the graphical layout of the user interface in a comfortable way. The GUI sub-language is well integrated with the class diagram models allowing to directly describe what to visualize based on the storage structure in the database.
The internal architecture of the MontiGem generator includes the three typical main processes: reading, transformation and generation, while generation produces a lot of resulting Java classes, Typescript and HTML files and related artifacts.
The whole generation is designed in a very extensible way: First, a generator target itself is written in a modular way allowing to reuse parts in a rather independent way. Secondly, templates are used allowing developers to add functionality in the systematic manner. They can, e.g., add additional methods to all generated classes of certain kind. Thirdly, the TOP mechanism created in MontiCore [HKR21] is applied for all kinds of creative classes allowing to efficiently add handwritten code extensions to the generated classes, while fully retaining the ability to intentionally re-generate everything every time. For that purpose, all classes are also equipped with builders, which can be replaced using the TOP mechanism if required.
Thus, handwritten and generated code pieces are well integrated [GHK+15a]. This enables the continuous regeneration of the application with changing models and thus the co-evolution of the models and the handwritten additional functionality during the entire development process.
The input of the generator for such enterprise management systems can be expanded to allow the tagging of existing models [GLRR15], e.g., for the definition of roles and rights, as well as model-based testing [DGH+18].
We have developed an extension for MontiGem called CD2GUI [GMN+20] which can be used before code synthesis: The generation process takes only one class diagram as input and generates data and GUI models which are further processed by the MontiGem generator framework into a running application.
MontiGem builds on earlier versions of generators for information systems. Together with MontiGem, they are already in use for generating various applications, such as a library system and an development artifact overview system. MontiGem is used since several years in a real-world project for financial management [GHK+20], where we apply an agile model-based software engineering approach. We use it in research projects on privacy-preserving information systems [MNRV19], for energy management systems, for creating digital twin cockpits [DMR+20] and process-aware digital twin cockpits [BMR+22], for the parameter management during the engineering process of wind turbines, and goal modeling in assistive systems [MRV20]. Current extensions adapt and extend MontiGem for mobile applications, further graphical representation components as well as the development of information portals in the Internet of Things domain.
We have investigated how to retrofit model-driven methods into brown-field applications, so applications which already exist [DGM+21]. Our 16-step methodology can be applied throughout the 3 phases of the development process: problem analysis, language engineering, and application engineering.
Key Statements
- We can generate data-centric applications from UML/P class diagrams
- Such generators are well usable in agile development approaches and for real-world applications
- Generators for information systems are highly reusable for a large variety of domains
Selected Topic-Specific Publications
-
[BMR+22]In: Journal of Computer Languages (COLA), Volume 70, Art. 101121, Elsevier, Jun. 2022.
-
[DGM+21]In: Journal of Object Technology (JOT), A. Pierantonio (Eds.), Volume 20, pp. 1-24, AITO - Association Internationale pour les Technologies Objets, Nov. 2021.
-
[HKR21]Aachener Informatik-Berichte, Software Engineering, Band 48, ISBN 978-3-8440-8010-0, Shaker Verlag, May 2021.
-
[DMR+20]In: Conceptual Modeling, G. Dobbie, U. Frank, G. Kappel, S. W. Liddle, H. C. Mayr (Eds.), pp. 377-387, Springer International Publishing, Oct. 2020.
-
[GMN+20]In: 25th Americas Conference on Information Systems (AMCIS 2020), B. Anderson, J. Thatcher, R. Meservy (Eds.), pp. 1-10, AIS Electronic Library (AISeL), Association for Information Systems (AIS), Aug. 2020.
-
[MRV20]In: Enterprise Modeling and Information Systems Architectures (EMSIA 2020), A. Koschmider, J. Michael, B. Thalheim (Eds.), Volume 2628, pp. 11-18, CEUR Workshop Proceedings, Jun. 2020.
-
[AMN+20a]In: 40 Years EMISA: Digital Ecosystems of the Future: Methodology, Techniques and Applications (EMISA’19), Volume P-304, pp. 59-66, LNI, Gesellschaft für Informatik e.V., May 2020.
-
[GHK+20]In: Companion Proceedings of Modellierung 2020 Short, Workshop and Tools & Demo Papers, J. Michael, D. Bork (Eds.), pp. 22-30, CEUR Workshop Proceedings, Feb. 2020.
-
[MNRV19]In: Proceedings of MODELS 2019. Workshop MDE4IoT, N. Ferry, A. Cicchetti, F. Ciccozzi, A. Solberg, M. Wimmer, A. Wortmann (Eds.), pp. 595-614, CEUR Workshop Proceedings, Sep. 2019.
-
[DGH+18]In: Conference on Software Engineering and Advanced Applications (SEAA’18), pp. 146-153, Aug. 2018.
-
[GHK+15a]In: Model-Driven Engineering and Software Development, Volume 580, pp. 112-132, Communications in Computer and Information Science, Springer, 2015.
-
[GLRR15]In: Conference on Model Driven Engineering Languages and Systems (MODELS’15), pp. 34-43, ACM/IEEE, 2015.
Related Topics
- Agile Model-Based Software Engineering
- Generative Software Engineering
- MontiCore - Language Workbench
- UML/P
- Unified Modeling Language (UML)
- Model-Based Assistive Systems
- Models in Enterprise Information System Development
- Digital Twins and Digital Shadows in Engineering, Operation and Production