DCI webapp archetype
Web application template written using concepts derived from Data Context and Interactions Architecture.
- Spring 3
- Scala compiler
- Database migrations integrated
- REST configuration ready
- JSF-2
- Jetty configured for running
- Compatible with Tomcat 7
- Working with JPA-2
- Configuration based on annotations and minimal XML files
References
OO Problem
OO is defined as a network of objects interacting within each other, this means that all the functionality of an application written in a OO fashion will be separated and partitioned into multiple responsibilities in many different objects.
Now, this doesn't match what developers and users expect from the system, it doesn't map to the end user's goals and as it grows tends to increase complexity, side effects and therefore risks.
For example, having a simple network with objects A, B, C, B performing an operation:
Simple connections, no major issues, now we have a different functionality spread in the same network of objects:
Can you tell by the objects what do they do? or do you need to explore the network of objects and relationships to see what is currently being done here?
There is no functionality in objects, only methods, message passing has been moved to be a second class citizen, this breaks reading, this breaks support tasks and increases complexity.
DCI
DCI is an architectural pattern that brings back objects communication to a first class citizen, moving responsibilities to roles and returning data to its original purposes, mostly domain-specific data structures capturing specific business rules in a defined context.
Using this approach we have with the same example of OO: