model-driven development

What is model-driven development?

Model-driven development (MDD) is a format to write and implement software quickly, effectively and at minimum cost. The methodology is also known as model-driven software development, model-driven engineering and model-driven architecture.

The MDD approach focuses on the construction of a software model. The model is a diagram that specifies how the software system should work before the code is generated. Once the software is created, it can be tested using model-based testing and then deployed.

Benefits of model-driven development

The MDD approach provides advantages in productivity over other development methods because the model simplifies the engineering process. It represents the intended behaviors or actions of a software product before coding begins.

A comparison of the benefits of low-code and traditional app development.
Model-driven development lets teams plan software using low-code/no-code tools before building the application.

The individuals and teams that work on the software construct models collaboratively. Communication between developers and a product manager, for example, provides clear definitions of what the software is and how it works. Tests, rebuilds and redeployments can be faster when developing multiple applications with MDD than with traditional development.

Core concepts of model-driven development

Model-driven development is more in-depth than just having a model of the software in development, which makes it different from model-based development. Abstraction and automation are key concepts of MDD. Abstraction means to organize complex software systems. In MDD, complex software gets abstracted, which lets developers extract easy-to-define code.

Once developers transform the abstraction, a working version of the software model gets automated. This automation stage uses a domain-specific language (DSL), such as HTML, and scripting languages, such as ColdFusion, which can integrate other programming languages and services -- .NET, C++, File Transfer Protocol -- for use in websites. A DSL is a language specialized to an application domain. Developers write the model in a DSL and transform the coding language from the model to working software.

Agile software development methods are often paired with MDD. The Agile development approach enables short sprints where the project scope can change. Agile model-driven development establishes short development iterations, where changes can be designed and shown on the model.

Model-driven development tools

Several software tools can be used to create models for an MDD approach to software design. Some examples include:

  • Rational Software Architect. IBM's Rational Software Architect is a modeling and development tool that uses Unified Modeling Language to design models for C++ and Java Platform, Enterprise Edition, applications and web services.
  • Simulink. Simulink, developed by MathWorks, is a programming environment for modeling. With Simulink, a user can model and simulate software, test code and automatically generate code. Code is automatically created based on the model in Simulink and with Simulink Coder, an additional MathWorks program.
  • Sirius. Sirius is an open source graphic modeling tool from the Eclipse Foundation. Sirius creates models using diagrams, data trees and data tables. The user does not need expansive technical knowledge to create these models, and no code generation is involved. Sirius is primarily used to design complex systems.
This was last updated in April 2024

Continue Reading About model-driven development

Dig Deeper on Software design and development

Cloud Computing
App Architecture