Domain Driven Design

Méthodologies

Préambule

De nos jours, la conception logicielle est au centre des débats. Elle met en oeuvre un ensemble d'activité à partir d'une demande d'informatisation d'un processus. En général, elle est composée de 3 grandes étapes :

La phase d'analyse consiste à la récupération des besoins du client. On établit les exigences fonctionnelles et techniques du logiciel. C'est dans cette phase que va s'écrire les spécifications du projet et que l'architecture logicielle doit se définir On utilisera alors les techniques de modélisation. Il en découle la description des bases de données éventuelles à créer et les programmes à écrire et la manière dont tout cela va être intégré.

La phase de développement met en oeuvre la transformation des spécifications en programme. En plus de l'écriture du code, les tests unitaires auront aussi leurs importance pour garantir la qualité du logiciel produit.

La phase de livraison comprends l'intégration des différents modules logiciels ainsi que la validation des éxigences fonctionnelles avec le client (recette). Il ne faudra evidemment pas oublier la documentation du code pour la maintenance du logiciel.

Cycle en V

Le modèle du cycle en V (en comparaison avec les méthodes dites Agile) est un modèle conceptuel de gestion de projet imaginé suite au problème de réactivité du modèle en cascade. Il permet, en cas d'anomalie, de limiter un retour aux étapes précédentes. Les phases de la partie montante doivent renvoyer de l'information sur les phases en vis-à-vis lorsque des défauts sont détectés, afin d'améliorer le logiciel.

Méthodes agiles

Les méthodes agiles sont des groupes de pratiques de projets de développement en informatique (conception de logiciel), pouvant s'appliquer à divers types de projets. Elles ont pour dénominateur commun l'Agile manifesto.
Les méthodes agiles sont basées sur 4 valeurs fondamentales :

Une approche dite « traditionnelle » attend généralement du client une expression détaillée et validée du besoin en entrée de réalisation, laissant peu de place au changement. La réalisation dure le temps qu’il faut et le rendez vous est repris avec le client pour la recette. Cet effet tunnel peut être très néfaste et conflictuel, on constate souvent un déphasage entre le besoin initial et l’application réalisée.

L’approche Agile propose au contraire de réduire considérablement voire complètement cet effet tunnel en donnant davantage de visibilité, en impliquant le client du début à la fin du projet et en adoptant un processus de développement itératif et incrémental. Elle considère que le besoin ne peut être figé et propose au contraire de s’adapter aux changements de ce dernier.

Parmi les méthodes agiles les plus utilées, on retrouve :

Domain Driven Design

Le Domain Driven Design est une approche se situant entre l'approche traditionnelle du cycle en V et les méthodes agiles. En effet, on parle de DDD comme étant une approche de conception par le domaine, c'est à dire que la conception se fera en ayant une connaissance approfondie du domaine visé par le logiciel. DDD va dans un premier temps laisser de côté les technologies innovantes afin de se consacrer pleinement à l'élicitation des besoins clients et à la compréhension du monde du client. La conception logicielle est encore aujourd'hui entâché par de nombreux problèmes de conception entraînant l'échec d'un projet. DDD va permettre de répondre au mieux aux éxigences du client en adoptant un langage identique au sien.