home babyIDE

DCI - A new Role Based Paradigm for specifying collaborating objects

The essence of object orientation is that networks of collaborating objects work together to achieve a common goal. The common sense of object oriented programming should reflect this essence with code that specifies how the objects collaborate. Our industry has, unfortunately, chosen differently and code is commonly written in terms of classes. A class tells us everything about the properties of the individual objects that are its instances. It does not tell us anything about how these instances work together to achieve the system behavior.

The result is that our code does not reveal everything about how a system will work. This is clearly not satisfactory, and we need a new paradigm as the foundation for more expressive code. The DCI (Data-Context-Interaction) is such a paradigm. DCI separates a program into different perspectives where each perspective focuses on certain system properties. Code in the Data perspective specifies how information is represented by stand-alone objects. Code in the Context perspective specifies runtime networks of interconnected objects as similar structures of interconnected roles. Code in the Interaction perspective specifies how the networked objects collaborate to achieve the system behavior.

I am deeply indebted to Jim Coplien for his contributions to and interest in DCI. He is its prime mover and a leading contributor in the hard work needed to advance DCI from early theory to practice. Jim's DCI page is at



Also see the DCI mailing list object-composition (at) googlegroups.com.


More details about the DCI project in these pages:


BabyIDE Examples


BabyIDE is an interactive development environment that supports the DCI paradigm with specialized browsers for each perspective. These browsers are placed in overlays within a common window so that the programmer can switch quickly between them. DCI with BabyIDE marks a new departure for object oriented programming technology.


ArrowsAnimation video

BabyShapes4 is an animation program that visualizes networks of communicating objects. The objects are shown as shapes, the communication as arrows that grow from sender object to receiver object. Click the image to see a low quality video of the animation, or run the QuickTime or MPEG video file manually:

Note the different shapes, they symbolize that the objects are of different classes. Also note that the object configurations remains the same through the repeated animations, yet objects and classes differ from animation to animation.

The challenge is to find concepts that are suitable for describing what we see. The answer is the DCI paradigm. You find more details in the BabyShapes4 program, see the Documentation page.