Data, Context, Interactions (DCI) DCI was invented by Professor Trygve Reenskaug to solve a specific problem in OO code; it's very hard to read OO code for a specific use-case since it is often spread across many different classes, and the control flow between the methods of these classes depend on which objects are instantiated to which variables. With DCI Reenskaug proposed a new way of coding for use-cases where each use-case is implemented as a
Data, Context, Interactions (DCI)
DCI was invented by Professor Trygve Reenskaug to solve a specific problem in OO code; it's very hard to read OO code for a specific use-case since it is often spread across many different classes, and the control flow between the methods of these classes depend on which objects are instantiated to which variables.
With DCI Reenskaug proposed a new way of coding for use-cases where each use-case is implemented as a Context and each participating object has a Role in that Context.
Methods can be written for the Context and for the Roles. The Role-Methods are considered instance methods of the object playing the associated Role. A RoleMethod exists only in the scope of a context. When an object no longer plays a role, the RoleMethods are no longer part of the object
This approach allows the code for a given use-case to be organized in the Context construct and can easily be read and understood as a complete artifact.
DCI is not a pattern that can be easily implemented in any OO language, it is more of a suggestion for the next evolution of the OO universe. For most languages new keywords would have to be added. Reenskaug has however done an implementation of DCI in SmallTalk and a language call Marvin has been design and implemented with the support of DCI in mind.
To learn more look at the community site for DCI called fullOO