Skip to content

Meet DDD

If we check the Wikipedia, the Domain Driven Design is defined as "a major software design approach,[1] focusing on modeling software to match a domain according to input from that domain's experts."

The optimal design of domain components contributes to evolutionary architecture of the system you are building. In the environment of agile business, requirements can change anytime, so you must be prepared.

The DDD introduces the vocabulary used by the team (Ubiquitous Language) and the Strategic design and Tactical design approaches to tackle the complexity of a system. The DDD is about design rather than coding.

"The purpose of software engineering is to control complexity, not to create it." (Dr. Pamela Zave, Princeton University)

Decomposition of complex system

There are many approaches how to decompose the system into smaller and better manageable parts. The DDD uses the decomposition by sub-domain, which is discussed in Strategic design module of this course. In short, the system is decomposed into multiple relative independent domain models istead to model whole system as single big model.

Modularization

Modularization involves breaking down a complex system into smaller, independent modules. Each module encapsulates a specific functionality and can be developed, tested, and maintained independently.

pamodularizationrtner