Frequently Asked Questions
What is DCI?
How does DCI relate to MVC?
What is the relationship between classes, objects, Roles, and Contexts?
What are the typical rules I need to pay attention to when writing DCI code?
Why isn't it DCI if you use a wrapper object to represent the Role?
Why can't I reuse a Role across multiple Contexts?
Can a Role be played by several different objects in a given Context instantiation?
Can I rebind roles to objects multiple times over the lifetime of a Context object?
Can I use DCI in Java?
What is the best DCI language?
Can I use DCI in a system with parallelism or asynchrony?
How do I code recursive system operations in DCI?
Why must roles be stateless? i.e. why are they allowed to contain only methods, and not their own data properties?
What is the advantage of distributing the interaction algorithm in the RoleMethods, as suggested by DCI, instead of centralizing it in a Context method?
When using DCI with MVC, is it ok to let Views and Controllers play Roles in a Context?
Is there a glossary for the DCI terminology?
Isn't DCI just another software design pattern?
Can Roles be unbound in a Context?
Is there any situation where DCI isn't appropriate to use?
I have a Use Case written down, and now I'd like to use DCI for implementing it in code. Where do I start?
I found a library that claims to do DCI, how can I know that it does?
If a DCI Context should map to a User mental model, does it mean that DCI cannot be used for programming at a lower level than what interacts with a User?
Can a Context have state?
I'm missing a DCI implementation for my favorite language! What to do?
It seems like many implementations are using Abstract Syntax Tree rewriting to enable DCI. How does it work?
Should the actors for a Use Case be represented as roles in the DCI Context for that Use Case?
What should I do if different users have different mental models, or one of the stakeholders has a different mental model than an end user?
Another
FAQ
topic