Wikipedia article:
In summary, DCI architectures tend to be characterized by the following properties:
The Data model reflects the domain structure rather than partitions of its behavior;
Objects dynamically take on Roles during use case enactments;
Every Role of a use case is played by an object determined by the Context at the start of the use case enactment;
The network of Interactions between Roles in the code (i.e., at coding time) is the same as the corresponding network of objects at run time;
These networks are potentially re-created on every use case enactment;
Roles come in and out of scope with use case lifetimes, but objects that may play these Roles may persist across multiple use case lifetimes and may potentially play many roles over their own lifetime.