Data, context and interaction (DCI) is a paradigm used in computer software to program systems of communicating objects. Its goals are:
To improve the readability of object-oriented code by giving system behavior first-class status;
To cleanly separate code for rapidly changing system behavior (what a system does) versus slowly changing domain knowledge (what a system is), instead of combining both in one class interface;
To help software developers reason about system-level state and behavior instead of only object state and behavior;
To support an object style of thinking that is close to programmers' mental models, rather than the class style of thinking that overshadowed object thinking early in the history of object-oriented programming languages.