Define Domain-Driven Design (DDD). What problem does it aim to solve in software development?
DDD is an approach to software development focused on modeling the core business domain and aligning the code structure with that model.
DDD manages the complexity in large software systems by:
What is the difference between an Entity and a Value Object in DDD? Provide an example of each
Entity:
Defined by a unique id. Has an ID. Is mutable
Tracked across time by its identifier, even if all its attributes change its the same entity
Value object:
Defined by all attributes values, does not have an ID. Is immutable
Example:
Entity: A customer tracked by customer_id. If a customer changes their name or address, they’re still the same customer
Value object: An address defined by street, city and eircode. If you need a different address you create a new one rather than modifying an existing one
Explain the concept of Strategic Design in DDD.
Strategic design is the high level aspect of DDD focused on structuring and integrating multiple models across a large system.
Core concepts:
What activities might strategic design entail?