====== Is there any situation where DCI isn't appropriate to use? ====== Operations that are atomic and scoped to an object don't need DCI, for example simple [[https://en.wikipedia.org/wiki/Create,_read,_update_and_delete|CRUD]] functionality. DCI works best with system operations involving multiple objects. See for example how the [[http://www.amazon.com/Lean-Architecture-Agile-Software-Development/dp/0470684208/ref=sr_1_1_bnp_1_pap?s=books&ie=UTF8&qid=1390152840&sr=1-1&keywords=lean+architecture+for+agile+software+development|Lean Architecture book]] distinguishes between Atomic Event Architectures and DCI architectures. Another case is if the Context is very simple. For example, if your analysis shows that there is only one RoleMethod per Role, it suggests that in this case Roles don't have much expressive power. A simple procedural version would be much more readable then - and readability is the goal here.