Model-driven engineering is an approach to software development where models, rather than programs, are the principal output of the development process. The programs that execute on hardware and software platforms are often generated automatically from these models.
Module-Driven Architecture-
Model-driven architecture is a focused approach to software design and implementation.
There are three types of model-driven architecture models:
Computational Independent Model or Domain Model.
Platform Independent Model.
Platform-Specific Model.
Now let us understand each of these model-driven architectures briefly:
Computational Independent Model:- This models the important domain abstractions used in the system. The computational independent model is also called the domain model. It is the highest level of abstraction in the approach and allows for modelling system requirements. CIM describes system conceptuality and can be transferred into a platform-independent model. The purpose of CIM is to capture the requirements and essential functionality of the system in a way that is understandable to stakeholders who may not have technical expertise.
Platform Independent Models:- PIM is an intermediate level of abstraction, which comes after CIM. PIM is a design model that describes the internal structure of a model without regard to the hosting platform. The PIM is independent of the specific technological platform used to implement it. PIM is usually described using UML models that show the static system structure and how it responds to external and internal events.
Platform-Specific Model:- PSM is the lowest level of abstraction in MDA and is closest to the implementation level. In model-driven engineering, a platform-specific model adds details to the platform-independent model about the use of a specific platform or platform. The platform-specific model describes the functionalities defined in the PIM for specific implementation technology.
Executable UML:-
Executable UML allows us to add information to graphical models about the ways in which operations defined in a model are implemented. A subset of UML 2 is called executable UML or XUML.
To create an executable subset of UML, the number of model types has therefore been dramatically reduced to 3 key model types:
Domain models:- identify the principal concerns in the system. These are defined using UML class diagrams that include objects, attributes, and associations.
Class models:- in which classes are defined along with their attributes and operations.
State models:- in which a state diagram is associated with each class and is used to describe the lifecycle of the class.
This is all about model-driven engineering in system modelling.