Domain Driven Design (DDD) est une approche de développement logiciel qui place le domaine métier au cœur de la conception.
Concepts clés :
Building Blocks :
- Entity : Objet avec identité unique
- Value Object : Objet sans identité
- Aggregate : Cluster d'objets
- Repository : Stockage/récupération
- Service : Logique métier
Strategic Design :
- Bounded Context : Frontières du modèle
- Ubiquitous Language : Langage commun
- Context Map : Relations entre contexts
Ubiquitous Language :
Développeurs ET experts métier parlent le même langage
Bounded Context :
Délimitation claire où un modèle s'applique
Exemple :
E-commerce :
- Context "Catalogue" : Product, Category
- Context "Commande" : Order, OrderLine, Payment
- Context "Livraison" : Shipment, Tracking
Avantages :
- Alignement métier/tech
- Code qui reflète le métier
- Maintenabilité long terme
Particulièrement utile pour domaines complexes