https://github.com/binarymuse/dci-ruby
Playing with DCI in Ruby
https://github.com/binarymuse/dci-ruby
Last synced: about 1 year ago
JSON representation
Playing with DCI in Ruby
- Host: GitHub
- URL: https://github.com/binarymuse/dci-ruby
- Owner: BinaryMuse
- Created: 2012-01-05T17:55:48.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2012-01-07T20:00:47.000Z (over 14 years ago)
- Last Synced: 2025-04-07T02:42:33.347Z (about 1 year ago)
- Language: Ruby
- Homepage:
- Size: 94.7 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
DCI in Ruby
===========
DCI, which stands for "data, context and interaction", is a software design model. This model consists of three types of objects:
* **Data** - describes what the system is. Usually a relatively static data model with relations. They do not contain any application logic, they are only data.
* **Context** - describes a use case for a system. Determines the objects that need to be involved in a use case and ties them to one or more Roles.
* **Interaction** - describes what the system does. Implemented as Roles which are played by objects at run time.
In DCI, an actor in a Context is injected with only enough application logic to get the job done. Thus, DCI cleanly separates what the application is (Data) from what it does (Interactions); this is in contrast to, say, a typical Rails application with a skinny-controller-fat-model paradigm.
For more reading, check out (among many others):
* http://en.wikipedia.org/wiki/Data,_context_and_interaction
* http://blog.firsthand.ca/2011/10/rails-is-not-your-application.html
* http://confreaks.net/videos/759-rubymidwest2011-keynote-architecture-the-lost-years