April 2009

DDD-es Group Announced

DDD-es is a recently announced Google Group formed by José Manuel Beas with the goal of discussing and learning about Domain-Driven Design in Spanish.

Join the group

TimeAndMoney

This is a project to develop code for manipulating basic concepts in recurring domains such as time and money. The design principles followed here are explained in Part III of the book Domain-Driven Design.

FAQ

This is a Wiki page. You are welcome to log in and contribute. Be bold!

Questions frequently asked on the DDD Yahoo! Group.

You are welcome to contribute: if you follow the DDD Yahoo! Groups discussion and find a thread particularly interesting, this is the place to share it.

Since discussion threads can be long, we recommend that you don't put it here in its entirety but distill its first - this will make it so much more valuable. 

Glossary of Domain-Driven Design Terms

Excerpted from Domain-Driven Design Book

Aggregate A cluster of associated objects that are treated as a unit for the purpose of data changes. External references are restricted to one member of the AGGREGATE, designated as the root. A set of consistency rules applies within the AGGREGATE'S boundaries.

Analysis Pattern A group of concepts that represents a common construction in business modeling. It may be relevant to only one domain or may span many domains (Fowler 1997, p. 8).

Whole Value

An object that models a single, complete concept.

Also see Value Object.

Entities

See Entity.

Value Object

Excerpted from Domain-Driven Design Book

Definition: A Value Object is an object that describes some characteristic or attribute but carries no concept of identity.

Problem:
Tracking the identity of Entities is essential, but attaching identity to other objects can hurt system performance, add analytical work, and muddle the model by making all objects look the same.

Test-Driven Development

Test-Driven Development

TDD is a lightweight programming methodology that emphasizes fast, incremental development and especially writing tests before writing code. Ideally these follow one another in cycles measured in minutes.

Unification

The internal consistency of a model such that each term is unambiguous and no rules contradict.

Ubiquitous Language

Excerpted from Domain-Driven Design Book

Definition: A language structured around the domain model and used by all team members to connect all the activities of the team with the software.

Problem:
A project faces serious problems when its language is fractured. Domain experts use their jargon while technical team members have their own language tuned for discussing the domain in terms of design.