MDSD Agile

Pour le prochain SigmaT qui aura lieu le 12 décembre à Toulouse, je prépare, en collaboration avec Romain Bernard, une présentation intitulée "MDSD Agile". MDSD, ça veut dire "Model Driven Software Development".

Une foultitude d'acronymes a vu le jour depuis l'avènement de la démarche "MDA"
(Model Driven Architecture) préconisée par l'OMG. Nous avons retenu MDSD parce que c'est la définition la plus large qui permet l'utilisation de toute pratique « Model Driven » en vue de produire un système logiciel, du code, quoi...

Le « Model Driven » a de nombreux détracteurs, notamment dans la communauté agile qui replace le code au centre des préoccupations. Et ce n'est guère surprenant si on considère que la majorité des projets qui ont utilisé le Model Driven ces dix dernières années ont largement suivi les recommandations des grands éditeurs logiciels (tous impliqués dans l'OMG et donc dans une philosophie de type RUP-MDA), utilisé leurs outils, leurs profils UML trop techniques et leurs générateurs sur étagère trop rigides...
Notre approche du MDSD est différente. Elle repose sur la mise en oeuvre de langages et de générateurs sur mesure. De ce fait, elle déplace une part non négligeable du travail de codage dans le générateur, qui devient une part du système à produire et propriété collective de l'équipe agile.
Disposer d'un tel générateur sur mesure offre de nombreux avantages : la génération de code en masse permet une plus grande productivité, augmente l'agilité technique et l'acceptation du changement (modifiez le générateur une fois à un endroit et généralisez les évolutions partout dans le code), la capitalisation de solutions techniques (générateurs d'objets métiers, d'ihm, de services, etc...) qui rejoignent la boite à outils MDSD, l'amélioration de la qualité, la génération des tests, la réduction des effets tunnels, etc, etc.

MDSD Agile, ça veut dire qu'on propose une solution qui réconcilie et même démultiplie les avantages des démarches agiles et des principes MDSD. MDSD Agile, ça veut dire qu'on s'autorise, ou plutôt qu'on se donne la chance de faire constamment évoluer un générateur et les métaphores dont on a besoin pour décrire le logiciel (ce qui n'est pas une approche acceptée dans des communautés « non agiles »).

Romain est spécialiste MDSD puisqu'il travaille sur ce type de projet dans des contextes industriels très concrets depuis 10 ans, en appliquant naturellement certains principes agiles. En ce qui me concerne, j'apporte ma connaissance des méthodes Agiles et leur mises en oeuvre en SSII. Je m'intéresse également depuis quelques années à la démarche MD. Ensemble, nous développons des projets pilotes pour mettre en pratique le MDSD Agile et ainsi tenter de promouvoir la méthode.

Voici une idée du plan de notre présentation.

Objectifs

Nous présentons nos expériences et leurs limites puis discutons de l'applicabilité des principes agiles au sein d'une projet MDSD, en assumant les différences fondamentales avec les pratiques classiques de développement et en montrant les limites d'applicabilité.

Les réticences au MDSD

Nous expliquons pourquoi tant d'acteurs du développement logiciel demeurent réticents envers l'approche en énumérant les craintes régulièrement évoquées.

Présentation du MDSD

Notre vision est différente de celle du MDA !
Nous présentons donc notre châine de production, le choix de nos outils, les compétences clefs des participants et les atouts du MDSD, tels que la capitalisation.
Nous préciserons également les différences de notre vision avec celle de "l'Agile Modeling".

Comment MDSD s’inscrit dans les pratiques agiles

Après une brève cartographie des principes et des pratiques agiles, nous passons en revue une à une celles concernées par le MDSD en détaillant leurs mise en oeuvre et leur répartition au sein du cycle de vie.

Conclusions

Nous revenons sur les avantages et les inconvénients du MDSD Agile puis nous rappelons les moyens nécessaires au déploiement de l'approche.