DCI piqued my interest when I first heard about it. It seemed to solve some problems I was seeing in the typical model structure of MVC apps. In the end while I still agree with the principles behind context (keeping the primary workflow of a code module linear and organized in one place) I found interactions (mixing in behaviour with data) to be largely unnecessary in actual practice.<p>The problem DCI purports to solve with OOP is in fact largely caused by failing top apply OOP properly (yeah, yeah no true Scotsman...). Issues like overloading objects with too many responsibilities (MVC models do this almost always), relying on inheritance when composition is what is needed, not defining and enforcing module or transactional boundaries and naively applying DRY to everything all lead to high coupling and low cohesion and ultimately cause the problems that DCI attempts to solve. However they can be solved by simple avoiding the above and using simple principled objects with clear dependency trees and boundaries.<p>Bottom line: Follow the basic principles of OOP and SOLID instead of just paying them lip service and no secret sauce is required.
Another vision of Object-Oriented Programming that has gotten quite a bit of traction. (Especially in the game development community.) Is the Entity-Component-System model:
<a href="https://en.wikipedia.org/wiki/Entity%E2%80%93component%E2%80%93system" rel="nofollow">https://en.wikipedia.org/wiki/Entity%E2%80%93component%E2%80...</a><p>If you want to play Entity-Component-System. I'd suggest you check out A-Frame, a WebVR framework that uses and promotes Entity-Component-System:
<a href="https://aframe.io/" rel="nofollow">https://aframe.io/</a>
DCI despite its claims, simply cannot be easily understood by its target audience. It claims to represent a better mental model, but it mostly succeeds in alienating those looking for a better way to model concepts in the world, abstract and real. The arrogance and condescension shown to newcomers by adherents like Jim Coplien, doesn't help.