
Adel Vahdati
Thesis Abstract
Software systems are highly complex and their development requires the interaction and collaboration of various stakeholders. Model-Driven Engineering (MDE) is a popular approach to software engineering in which models play a crucial role. In this approach, models are not only a tool for documentation and communication, but are used throughout the software development life cycle.
In the Model-Driven Development (MDD) approach, the problem domain is first described at a high-level of abstraction, and then we try to generate code and the software solution automatically by using model-to-model and model-to-text transformations.
The Model-Driven Architecture (MDA) proposed by OMG defines models at three levels of abstraction, namely Computation-Independent Models (CIM), Platform-Independent Models and Platform-Specific Models. Models at higher levels of abstraction are transformed into models at lower levels through applying model transformations.
Automatic code generation is one of the main motivations for applying model-driven approaches. In addition, platform-independent models are reusable artifacts that can be used to produce software solutions based on different platforms and technologies. Despite these benefits, the adoption of this approach in the industry is limited. Although existing modeling tools have facilitated model-driven software engineering, there are still serious challenges to effectively apply this approach to large and complex projects.
Scalability in terms of the size of models and the number of work products and modelers involved in modeling projects is one of the main challenges in model-driven development. Collaborative modeling and reusing existing artifacts is another issue in this area. In the Agile era, where agile software development has been widely adopted by the industry, model-phobia in some well-known agile methodologies and the lack of a clear framework and methodology that facilitates the application of model-driven approaches according to agile values and principles is another obstacle.
In this research proposal, we aim to address the challenges of model-driven engineering as to scalability, reusability and collaboration, by employing the service-oriented paradigm and utilizing the best practices and patterns of this area. Accordingly, we propose the idea of"multilevel modeling as a service" and "model transformation as a service", aiming to improve scalability and reusability by using the microservice architecture. In this regard, we have developed a software platform called MDDPlatform that provides the functionality necessary for modeling and model transformation. These services are offered (by utilizing the Language Server Protocol) in the form of a Web API and can be used through a web-based UI in a browser; they can also be integrated with existing IDEs, such as VSCode.
In the Model-Driven Development (MDD) approach, the problem domain is first described at a high-level of abstraction, and then we try to generate code and the software solution automatically by using model-to-model and model-to-text transformations.
The Model-Driven Architecture (MDA) proposed by OMG defines models at three levels of abstraction, namely Computation-Independent Models (CIM), Platform-Independent Models and Platform-Specific Models. Models at higher levels of abstraction are transformed into models at lower levels through applying model transformations.
Automatic code generation is one of the main motivations for applying model-driven approaches. In addition, platform-independent models are reusable artifacts that can be used to produce software solutions based on different platforms and technologies. Despite these benefits, the adoption of this approach in the industry is limited. Although existing modeling tools have facilitated model-driven software engineering, there are still serious challenges to effectively apply this approach to large and complex projects.
Scalability in terms of the size of models and the number of work products and modelers involved in modeling projects is one of the main challenges in model-driven development. Collaborative modeling and reusing existing artifacts is another issue in this area. In the Agile era, where agile software development has been widely adopted by the industry, model-phobia in some well-known agile methodologies and the lack of a clear framework and methodology that facilitates the application of model-driven approaches according to agile values and principles is another obstacle.
In this research proposal, we aim to address the challenges of model-driven engineering as to scalability, reusability and collaboration, by employing the service-oriented paradigm and utilizing the best practices and patterns of this area. Accordingly, we propose the idea of"multilevel modeling as a service" and "model transformation as a service", aiming to improve scalability and reusability by using the microservice architecture. In this regard, we have developed a software platform called MDDPlatform that provides the functionality necessary for modeling and model transformation. These services are offered (by utilizing the Language Server Protocol) in the form of a Web API and can be used through a web-based UI in a browser; they can also be integrated with existing IDEs, such as VSCode.
Keywords
Model-Driven Engineering, Microservice, Model, Model Transformation, Domain-Specific Language