I've read a few articles about DCI and think it is a good exploration on software design. However some questions arise when I try to wrap my mind around it.<p>Compared to MVC which has been hugely popular and successful, I feel DCI has an inherent issue - Context and Interaction are too tightly related to each other and can not exist as standalone components like each of MVC does. From this perspective, DCI becomes D and CI(Context/Interaction). D is the data layer and contains no logic. The problem becomes how we express business logic in C and I.<p>I know there is Role even though it did not appear in the DCI. We pass data to context as different roles. On each role you can define some operations. Then in context, roles interact. So it is more of RIC (Roles Interact inside Context), or DRIC if you add data layer into the mix.<p>Is my understanding close to the real meaning of DCI? Please feel free to share your opinions or comments.