The Elements of Applications
Forrester’s Mike Gilpin wrote in his blog: –
‘Just as Greek philosophers tried to explain the ancient world in terms of the four classical elements of Earth, Water, Fire, and Air – with the fifth element of Aether defining the invisible context in which they exist – software architects in the digital world work in disciplines that are centered around four basic elements – Process, Service, Event, and Information. However, I think we need a “unifying theory” of the digital world that brings these four elements together more closely……. What’s the problem? Well, a process can also be viewed as a service, an event is also information, etc. Plus, you can’t always say that the layer below is consumed/used by the layer above – sometimes the relationship runs in the opposite direction. So is this a situation akin to wave/particle duality? For you non-Physics types, this is the discovery from quantum physics that light exhibits properties of both waves and particles, and so is really neither, purely – it is what it is, and sometimes it seems like a wave, and other times it seems like a particle.’
I think this is a very good basis for a discussion. Obviously I have a few remarks: On the subject of the wave/particle duality, there is no such thing. Simply because there is no particle. Mass is no more than another form of energy interaction. The duality is created by how you interact with the energy. The receiver is as important as the sender in defining what happens and it has to do with resonance. No resonance, no energy exchange. Scientists describe each of the possible resonances as the nuclear forces or fields. But still it is a good simile to the IT problem. Even taken to a theoretical IT level there is no information content transfer without interpretation on the receiver side.
What the four elements of an application are seen as too depends on how you interact with them. While I agree with the need to structure applications, I personally feel that both BPM and SOA are overrated as flexible means to choose the interaction needed. Both require rigidity in implementation so why should they offer more agility? Just because they are standard? A standard is always a limitation and usually outdated. Yes, maybe they are more flexible than straight Java coding …
Process should not be seen as a rigid procedure but a goal-driven assembly of information (including CONTENT!!) based on meta data (from a repository), interfaced with data federation or backend services (from a registry with SOA or not), controlled by state/event progression (with complex event discovery), and constrained by business rules. That would be the four core elements I see. But you need two more things as a solid base like physics needs the aether (that even Einstein had to come back to). The state/event controlled process container has to be authorized by organizational role/policy (security) definitions and you need presentation services (into GUI and content!) to interact with the user. No role authorization & no presentation = no application!
Mike is right: all these elements need to be related to each other, but that depends on how you want to manage each individual application. In the ISIS Papyrus Platform we solved it by assembling applications in an object-relational database, allowing dynamic changes of relations at any time. There is no single exhaustive model that will work for everything.
We need to give up reductionism in IT as in physics. I go with Nobel laureate Robert B. Laughlin who says that in nature complex systems are emergent and can not be causally predicted from its parts. I do agree with Mike that IT planners can learn something from physics (like everyone) and that is why emergent, chaotic social-computing on the Internet does more than all the hard-coded applications on this planet.
The social-computing thought takes us a step further. While we need to learn from nature, we need to remember at all times that we do applications for humans and not for a business or to create processes. Seen from a human perspective, flow-diagrammed BPM is to agility what communist and socialist governments are to freedom and free markets. Business users need to enjoy the freedom to perform processes any way they see fit to achieve the business goals. Obviously they need to stay inside the game rules of government which therefore requires full auditing and reporting.
Amazingly enough, the above are the development specs (just in less technical terms) for the Papyrus Platform, the first version of which I wrote in 1996.