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.

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.

Supple Design

A design that puts the power inherent in a Deep Model into the hands of a client developer to make clear, flexible expressions that give expected results robustly. Equally important, it leverages that same Deep Model to make the design itself easy for the implementer to mold and reshape to accommodate new insight.