Ouarzy's Blog

Ouarzy's Blog

DDD, Tackling complexity in the heart of software

Dans la série “must read”, je ne pouvais pas passer à côté du livre d’Eric Evans: Domain Driven Design.

 domain-driven-design-book-cover.jpg

 

Vous pensez être bon en code?  La programmation Objet n’a plus de secret pour vous? Vous êtes capable de produire des logiciels testés, maintenable et dans les délais? Alors ce livre est fait pour vous, car vous avez encore beaucoup à apprendre.

 

En plus de tout ça, apprenez à intégrer les problématiques du métier. Car oui, quand on écrit un logiciel, l’objectif n’est pas de tester les dernières technologies à la mode ou même d’avoir un code techniquement parfait. Ce ne sont que des moyens.

 

Le but c’est de répondre à un problème pour un métier. J’en veux pour preuve qu’un logiciel techniquement mauvais mais répondant à un vrai problème se vendra bien, contrairement à un logiciel techniquement bon qui ne répond à aucun besoin.

 

Alors comment fait-on?

J’aimerais pouvoir le décrire en un article, mais ça manquerait clairement de subtilité. C'est un travail quotidien et complexe. On peut cependant  dégager les grandes idées de ce livre:

=> utilisation d’un langage commun  (Ubiquitous Language)

=> création d’un modèle métier qui doit aussi bien être compréhensible par les développeurs que les experts métier

=> lier le métier et l’implémentation du modèle (utiliser le même vocabulaire et reproduire les interactions du métier entre les objets du modèle)

 

Voilà les grandes idées, mais à la limite on aurait pu s’en douter (c’est comme le fait qu’il ne faut plus de guerre, que l’économie aille bien et qu’il n’y ait pas d’enfants battus, tant qu’on enfonce des portes ouvertes, tout le monde est d'accord). La vraie valeur ajoutée de ce livre c’est les concepts très techniques au service de ces idées.

 

Notamment la notion de « building blocks ». Comment structurer vos objets (entity, value object, services, modules), comment gérer leur cycle de vie (factory, repository),  comment  les organiser (modules, aggregats)? Comment gérer l’amélioration continue de votre modèle (rendre les concepts implicites explicite, garder un design souple, intégration continue), et enfin comment gérer un tel modèle sur des gros projets (les design stratégiques) ?

 

En bref

Kent Beck le résume bien en couverture : « Ce livre devrait être dans la bibliothèque de tous les développeurs passionnés ».


Un livre qui me hante désormais pendant que je programme, à la manière d’un « clean code », mais avec plus de concepts techniques qui représentent un vrai challenge à mettre en place au quotidien.

 

« La complexité la plus significative de la plupart des applications n'est pas technique. C'est le domaine lui même, l'activité ou le métier des utilisateurs qui concentre cette complexité». -Eric Evans

 



04/11/2013
0 Poster un commentaire
Ces blogs de Informatique & Internet pourraient vous intéresser