Theory Flashcards

(4 cards)

1
Q

Define Domain-Driven Design (DDD). What problem does it aim to solve in software development?

A

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:

  1. Bridging the gap between business needs and technical implementation
  2. Establishing a Ubiquitous language for developers and domain experts
  3. Maintaining model consistency across the system by defining clear bounded contexts
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is the difference between an Entity and a Value Object in DDD? Provide an example of each

A

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

  • Has no identity beyond its attributes, two value objects with identical attributes are interchangable.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Explain the concept of Strategic Design in DDD.

A

Strategic design is the high level aspect of DDD focused on structuring and integrating multiple models across a large system.

Core concepts:

  • Bounded Context: A boundary within which one model and its ubiquitous language applies. “Customer” can mean different things in Billing vs Shipping
  • Context map: Shows hoe Bounded Contexts relate and integrate.
  • Subdomains: Core (competitive advantage), Supporting, or Generic— guides where to invest effort.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What activities might strategic design entail?

A
  1. Identifying and defining bounded contexts
  2. Mapping relationships between contexts
  3. Classifying subdomains to prioritize investment
  4. Choosing integration patterns
  5. Aligning teams to contexts
How well did you know this?
1
Not at all
2
3
4
5
Perfectly