I haven’t been keeping a close eye on Ralf Westphal’s series on Software Cells, but maybe I should be. This picture is really quite interesting, especially if you take its recursive nature into account.
I like the fact that Ralf hasn’t tried to depict what each circle is supposed to represent. That makes the diagram “zoom” well.
Zoom all the way in and this diagram could represent a call tree, showing a single entry point that calls smaller functions which themselves call even smaller functions. The arrows represent function calls.
Zoom out a little bit and imagine the outer circle as an object library. If you diagram out the interactions between the various parts of Enterprise Library, you’d get a diagram that looked like this.
Zoom out a little bit more and imagine the outer circle as the IT structure of a single enterprise, with the exterior circle reprsenting a business function and the interior circles being the various line-of-business applications that support it. The arrows define integration points.
Zoom out even further and you’re looking at the idea of a metasystem – a loosely coupled system-of-systems that collaborate together using small number of defined connection points.
The point is not to get hung up in applying the details of the analogy at every level to this diagram. The point is that there is a certain degree of self-similarity within software architecture, from the very lowest levels of function calls all the way out to the super-abstract system-of-systems level.
Programmers are used to taking big problems and breaking the down into smaller and smaller chunks until the problem becomes solvable. As technology evolves and makes it easier to connect things together, I think it will become increasingly more important to be able to go the other direction – to start with a set of loosely related problems and generalize them out in order to minimize the number of connection points presented to other systems.
Enterprise integration is “extract superclass” on a system scale.