====== Domain Driven Design ====== //Domain Driven Design// ist eine konzeptuelle Herangehensweise um Business Logik zu implementieren. Die Domäne ist der Kern dieses Entwicklungskonzeptes. Man muss Domänenexperten in den Prozess integrieren, eine gemeinsame Sprache((Ubiquituous language)) finden, und die Domäne in verdaubare Kontexte((Bounded Context)) aufteleilen, in denen der Sprachgebrauch der Begriffe jeweils eindeutig ist((Ein Begriff muss in einem Kontext immer genau eine Sache bedeuten. Kontextübergreifend muss das nicht der Fall sein)). DDD verwendet diverse Muster, von denen die wichtigsten die folgenden sind * [[technology:domainmodel:entity|Entity]] * [[technology:domainmodel:valueobject|Value Object]] * [[technology:domainmodel:aggregate|Aggregate]] * [[technology:domainmodel:aggregateroot|Aggregate Root]] * [[technology:domainmodel:invariant|Invariant]] * [[technology:domainmodel:repository|Repository]] * [[technology:domainmodel:boundedcontext|Bounded Context]] * [[technology:domainmodel:domainservice|Domain Service]] * [[technology:domainmodel:processmanager|Process Manager]] Ergänzt wird das Domänenmodell durch die Verwendung von [[technology:cqrs|CQRS]] und [[technology:es|Event Sourcing]].