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 (MDSD), model-driven engineering (MDE) and model-driven architecture (MDA).
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 (MBT) 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.
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 then extracts 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, like ColdFusion, which can integrate other programming languages and services -- .NET, C++, FTP and more -- for use in websites. DSL is a language specialized to an application domain. A model is written in a DSL language and is utilized for transformation in 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 (AMDD) establishes short development iterations, while changes can be redesigned and shown on the model. In AMDD, design efforts are split between modeling in both sprints and coding.
Software tools, such as Rational Software Architect, Simulink and Sirius, create models for an MDD approach to software design.
IBM's Rational Software Architect is a modeling and development tool that uses Unified Modeling Language (UML) to design models for C++ and Java Platform, Enterprise Edition (Java EE) applications and web services.
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 an additional MathWorks program, Simulink Coder.
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.