Modelling is an essential part of any engineering process. Engineers of all disciplines construct models of the systems they intend to build – e.g. software applications, bridges, airplanes – to capture, test, and validate their ideas with other stakeholders before embarking on a long and costly production process. Model Driven Engineering (MDE) is a software engineering methodology that attempts to reduce the accidental complexity of software systems by promoting models that focus on the essential complexity of systems, as first-class artefacts of the software development process. In contrast to traditional software development methodologies where models are mainly used for communication and post-mortem documentation purposes, in MDE models are the main living and evolving artefacts, from which concrete software development artefacts can be produced in an automated fashion through model-to-model and model-to-text transformation.
With object-oriented techniques having reached a point of exhaustion, MDE constitutes the latest paradigm shift in software engineering as it raises the level of abstraction beyond that provided by 3rd generation programming languages. To avoid the pitfalls of one-size-fits-all CASE tools, MDE advocates domain-specific solutions and modern MDE architectures provide the means to implement these using a combination of general purpose languages (e.g. UML), domain specific languages, and languages and tools for automated model management (transformation, validation, comparison, merging, refactoring etc). In recent studies, MDE has been shown to increase productivity by as much as a factor of 10, and significantly enhance important aspects of the software development process such as maintainability, consistency and traceability.
As MDE is increasingly applied to larger and more complex systems, the current generation of modelling and model management technologies are being stressed to their limits in terms of their capacity to accommodate collaborative development, efficient management and persistence of models larger than a few hundreds of megabytes in size. As such, a new line of research is imperative in order to achieve scalability across the MDE technical space and enable MDE to remain relevant and continue delivering its widely-recognised productivity, quality, and maintainability benefits.
Scalability in software engineering has different dimensions: number of software engineers; size of engineering artefacts; size and complexity of languages used; size of engineering tasks that are carried out; managing all engineering artefacts, and so forth.
As illustrated in the figure above, achieving scalability in MDE involves:
MONDO has tackled the challenge of scalability in Model Driven Engineering (MDE) in a comprehensive manner by developing the theoretical foundations and an open-source implementation of a platform for scalable modelling and model management. More specifically, MONDO provides an integrated open-source platform that consists of components that provide scalable model persistence, indexing and retrieval facilities, support for collaborative modelling, and parallel execution of model queries and transformations, and an Eclipse-based developer workbench that includes tooling for developing these queries and transformations, for querying model indexes, and for constructing large models and domain specific languages in a systematic and disciplined manner. To deliver the levels of performance and scalability demanded in applying MDE to larger and more complex systems, the project technologies exploit cloud computing to implement, deploy and scale the MONDO platform.