Model Driven Development (MDD)

MDD is a software development paradigm that emphasizes the importance of using models and model-based techniques to drive the design, implementation, and evolution of the software system. MDD involves the use of models to represent and design system functionality. The models are used to generate code and other artifacts that are required to build the system.

MDD is based on the following practices:

Identify and model the system: In MDD, the first step is to identify and model the system, which refers to the process of representing the structure, behavior, and constraints of the software system in a formal and abstract way. This modeling process may involve using tools and techniques, such as model-driven modeling languages, such as UML and BPMN, and model-driven design patterns, such as the observer pattern, to capture the knowledge and express it in a clear and consistent way.

Transform the models into implementation artifacts: In MDD, the next step is to transform the models into implementation artifacts, which refers to the process of using the models to automatically generate the implementation artifacts, such as source code, configuration files, and database schemas, that are needed to build and deploy the software system. This transformation process may involve using tools and techniques, such as model-driven development frameworks, such as EMF and Xtext, and model-driven transformation languages, such as QVT and ATL, to map the models to the implementation artifacts, and to verify the correctness and completeness of the generated artifacts.

Test and verify the generated artifacts: In MDD, the next step is to test and verify the generated artifacts, which refers to the process of validating the correctness and completeness of the generated artifacts, and ensuring that they meet the specified requirements and constraints of the software system. This testing and verification process may involve using tools and techniques, such as model-driven testing frameworks, such as jQAssistant and JUnit, and model-driven verification languages, such as SPIN and SMT, to automatically generate and execute test cases, and to verify the behavior and properties of the generated artifacts.

Evolve and update the models and artifacts: In MDD, the final step is to evolve and update the models and artifacts, which refers to the process of iteratively and incrementally improving and refining the models and artifacts, based on feedback and learning from the development process. This evolution and update process may involve using tools and techniques, such as model-driven refactoring techniques, such as the generalization refactoring, and model-driven development frameworks, such as MDD4J and MDWorkbench, to incrementally and continuously improve the models and artifacts of the software system.

The principles of MDD include:

  • Separation of concerns: MDD allows developers to focus on different aspects of the system separately, such as the business logic, user interface, and database design.

  • Reusability: MDD enables developers to reuse models and code across different projects, which can save time and improve efficiency.

  • Early validation: Models can be used to validate the design of the system early in the development process, which can help identify and fix issues before they become costly to fix.

  • Automatic code generation: MDD can generate code automatically from the models, which can reduce the need for manual coding and reduce the risk of errors.

When to choose MDD:

  • When the system has a complex architecture or a large number of components that need to be coordinated.

  • When the system needs to be developed quickly and efficiently.

  • When the system needs to be scalable and maintainable over time.

Pros & Cons of MDD

Pros of MDD:

  • Improved efficiency: MDD can reduce the time and effort required to develop a system.

  • Better quality: MDD can help reduce the risk of errors and improve the overall quality of the system.

  • Increased flexibility: MDD allows developers to make changes to the system easily and quickly.

Cons of MDD:

  • High initial investment: MDD requires the development of models and the implementation of tools to support the process, which can be costly.

  • Limited customization: MDD can limit the ability to customize the system to specific requirements.

  • Dependency on tools: MDD relies on tools to generate code, which can create a dependency on those tools and limit the ability to switch to different tools in the future.

People Also Viewed

Previous
Previous

Component Based Development (CBD)

Next
Next

Behavior-driven design (BDD)