Domain Driven Design (DDD)
Domain Driven Design [DDD] is a software development methodology that focuses on the Domain of a business with the target to establish an accurate model of this Domain and its inherent processes.
Whereas Software Developers usually support a Domain with their technical skills, Domain Driven Design in turn helps Developers to gain a deeper understanding of this Domain. The technical skills then support the Developer who realises a model of this Domain in a software system.
Domain Experts in the form of Stakeholders, Managers and Business Analysts work closely together with the Software Developers and establish an Ubiquitous Language over the time. Constant improvements of the communication in the project, to the model being implemented and appropriate refactorings of the software produce accurately and functional complete business processes. Bounded Contexts make sure that multiple models can be clearly identified given their business processes, and do not overlap.
It suggests architectural structures, agile methodologies (e.g., communication and team management) and various software design patterns (e.g., Repository, Entity) that can help organisations with introducing DDD in their projects.
"Tackling Complexity in the Heart of Software." [DDD]