Last updated at 6:56 pm UTC on 15 November 2018
Object-oriented programming was supposed
to unify the perspectives of the programmer and the end user in computer code: a boon both to usability and program comprehension.
While objects capture structure well, they fail to capture system action.
DCI is a vision to capture the end user cognitive model of roles and interactions between them.
- The data lives in the domain objects that are rooted in domain classes;
- The context brings live objects into their positions in a scenario on demand;
- The interactions describe end-user algorithms in terms of the roles, both of which can be found in end users' heads.
NEXT: Collaboration between objects (DCI)
Source: The DCI Architecture: A New Vision of Object-Oriented Programming
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.