April 2009

Strategic Design

Modeling and design decisions that apply to large parts of the system. Such decisions affect the entire project and have to be decided at team level.

Stateless

The property of a design element that allows a client to use any of its operations without regard to the element's history. A stateless element may use information that is accessible globally and may even change that global information (that is, it may have side effects) but holds no private state that affects its behavior.

Standalone Class

A class that can be understood and tested without reference to any others, except system primitives and basic libraries.

Side Effect Free Function

Excerpted from Domain-Driven Design Book

Definition: An operation that computes and returns a result without observable side effects.

Side Effect

Definition: Any observable change of state resulting from an operation, whether intentional or not, even a deliberate update.

Service

Excerpted from Domain-Driven Design Book

Definition: A Service is an operation offered as an interface that stands alone in the model, with no encapsulated state.

Problem: Some concepts from the domain aren't natural to model as objects. Forcing the required domain functionality to be the responsibility of an Entity or Value Object either distorts the definition of a model-based object or adds meaningless artificial objects.

Responsibility

An obligation to perform a task or know information (Wirfs-Brock et al. 2003, p. 3).

Repository

Excerpted from Domain-Driven Design Book

Definition: A Repository is a mechanism for encapsulating storage, retrieval, and search behavior which emulates a collection of objects.

Modeling Paradigm

A particular style of carving out concepts in a domain, combined with tools to create software analogs of those concepts (for example, object-oriented programming and logic programming).

Model-Driven Design

Excerpted from Domain-Driven Design Book

Definition: A design in which some subset of software elements corresponds closely to elements of a model. Also, a process of codeveloping a model and an implementation that stay aligned with each other.