Definition

MDD, développement piloté par les modèles

Le développement piloté par les modèles (MDD, model-driven development) est une pratique qui permet d'écrire et de mettre en œuvre des applications, rapidement, efficacement et à moindre coût.

La méthodologie est aussi connue sous les appellations développement de logiciels piloté par les modèles, ou MDSD (Model-Driven Software Development), ingénierie dirigée par les modèles, ou MDE (Model-Driven Engineering) et architecture dirigée par les modèles, ou MDA (Model-Driven Architecture).

L'approche MDD vise à modéliser la construction d'un logiciel. Le modèle n'est autre qu'un diagramme qui explique le fonctionnement du système logiciel avant même la génération du code. Une fois le logiciel créé, il peut faire l'objet d'un test basé sur modèle (MBT pour Model-Based Testing), avant son déploiement.

Avantages du développement piloté par les modèles

Par rapport à d'autres méthodes de génie logiciel, le MDD permet d'accroître la productivité, puisque le modèle simplifie le processus d'ingénierie. Il représente les comportements ou les actes envisagés pour le logiciel avant le début du codage.

Les personnes et les équipes travaillant sur le logiciel élaborent ensemble les modèles. La communication entre les développeurs et, disons, un responsable produit, permet d'avoir une idée précise de ce que doit être le logiciel et de son mode de fonctionnement. Les tests, recompilations et redéploiements se font plus vite lorsque plusieurs applications sont développées avec MDD plutôt qu'avec une méthodologie traditionnelle.

Principes fondamentaux du développement piloté par les modèles

Le développement piloté par les modèles est un travail de fond. Il ne s'agit pas simplement d'élaborer un modèle du logiciel en cours de développement, et c'est en cela qu'il se distingue du développement fondé sur les modèles. L'abstraction et l'automatisation sont au cœur même de l'approche MDD.
L'abstraction consiste à organiser plusieurs systèmes logiciels complexes. Dans le cadre du MDD, elle permet plus précisément de simplifier les processus et d'extraire un code facile à lire.

Une fois que les développeurs interprètent l'abstraction, un prototype fonctionnel est automatiquement créé à partir du modèle. Cette phase d'automatisation utilise un langage dédié à un domaine (DSL), comme HTML, et des langages de script, comme ColdFusion, pour intégrer d'autres langages de programmation et services (.NET, C++, FTP notamment) en vue d'une utilisation dans des sites Internet. Un langage DSL est un langage capable de répondre aux contraintes d'un domaine d'application précis. Ecrit dans un langage DSL, un modèle permet de transformer le langage de programmation utilisé en une version opérationnelle du logiciel.

Les méthodes de développement de logiciels Agile sont souvent associées à l'approche MDD, puisqu'elles permettent d'écourter les sprints en cas de changement de portée du projet. Avec la méthodologie AMDD (Agile model-driven development), il est possible de créer des itérations de développement rapides, tout en reconcevant et présentant les changements sur le modèle. Avec l'AMDD, les efforts de conception se font sentir à deux niveaux : la modélisation au cours des sprints et le codage.

Outils de développement piloté par les modèles

Des outils, tels que Rational Software Architect, Simulink et Sirius, permettent de créer des modèles dans le cadre d'une approche de génie logiciel de type MDD.

Rational Software Architect d'IBM est un outil de modélisation et de développement utilisant le langage de modélisation unifié (UML, Unified Modeling Language) pour concevoir l'architecture d'applications et de services Web écrits en C++ et Java EE, la plateforme Java.

Simulink, développé par MathWorks, est un environnement de programmation dédié à la modélisation. Avec Simulink, un utilisateur peut modéliser et simuler le logiciel, tester le code, puis le générer automatiquement. Le code est automatiquement créé à partir du modèle de Simulink et à l'aide de Simulink Coder, autre programme de MathWorks.

Sirius est un outil de modélisation graphique open source de la Fondation Eclipse. Il permet de créer des modèles sous forme de graphiques, d'arborescences et de tables de données. La création de ces modèles n'exige aucune connaissance technique approfondie de la part de l'utilisateur, et n'implique aucune génération de code. Sirius sert principalement à concevoir des systèmes complexes.

Cette définition a été mise à jour en février 2020

Pour approfondir sur Outils de développement