April 2009

Model

A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.

Life Cycle

A sequence of states an object can take on between creation and deletion, typically with constraints to ensure integrity when changing from one state to another. May include migration of an Entity between systems and different Bounded Contexts.

Layered Architecture

Excerpted from Domain-Driven Design Book

Definition: A technique for separating the concerns of a software system, isolating a domain layer, among other things.

Problem: In an object-oriented program, UI, database, and other support code often gets written directly into the business objects. Additional business logic is embedded in the behavior of UI widgets and database scripts. This happens because it is the easiest way to make things work, in the short run.

Large-Scale Structure

A set of high-level concepts, rules, or both that establishes a pattern of design for an entire system. A language that allows the system to be discussed and understood in broad strokes.

Iteration

A process in which a program is repeatedly improved in small steps. Also, one of those steps.

Invariant

An Assertion about some design element that must be true at all times, except during specifically transient situations such as the middle of the execution of a method, or the middle of an uncommitted database transaction.

Assertion

A statement of the correct state of a program at some point, independent of how it does it. Typically, an ASSERTION specifies the result of an operation or an invariant of a design element.

Intention-Revealing Interface

Excerpted from Domain-Driven Design Book

Definition: A design in which the names of classes, methods, and other elements convey both the original developer's purpose in creating them and their value to a client developer.

Immutable

The property of never changing observable state after creation. implicit concept A concept that is necessary to understand the meaning of a model or design but is never mentioned.

See also: Value Object

Function

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