A comparison of DCI and SOA, in Java (Version 2).
|Author(s): Dr Ant Kutschera
|Description: DCI is a paradigm used in computer software to program systems of communicating
objects. Its goals are to make code more readable by promoting system behaviour to
first class status by avoiding the code fragmentation of this behaviour as typically seen in
an object oriented solution. This allows the rapidly changing system behaviour code to
be developed and maintained independently of the slower evolving domain model (data
classes). This allows programmers to reason directly about system-level state and
behaviour rather than having to create a map between their mental model, and that of
the user, which leads to more easily maintainable code1.
In DCI, the data model is used for just that, namely data structure. The behaviour is not
partitioned along data class boundaries; rather it is self containing and as such has
boundaries more natural to behaviour rather than data. In DCI, objects can dynamically
take on roles determined by the context. A role is partly the system behaviour which
relates to a particular use case or algorithm, but is also a way of viewing a particular
object within such a use case.
These things make DCI very powerful, and make DCI a paradigm in itself, comparable to
object oriented programming in its time, or service oriented programming. The author
has architected, designed programmed and maintained Service Oriented Architecture
(SOA) solutions for nearly a decade and sees parallels between DCI and SOA. These
parallels are discussed here. The second version was made available on the 20th September 2011. Minor changes were made on the opinion of whether a modified SOA implementation was useful or not.
Available since: 31 Oct 2010
A comparison of DCI and SOA, in Java_004.pdf