And here we are
In the sixth (and contemporary) generation, an interesting bifurcation has taken place. On the edges of Web-centric systems are considerable demand pull and technology push toward rich clients, so technologies such as Ajax have gained traction. At the core of Web-centric systems, service-oriented architectures have taken hold because they provide a solution to the problem of building systems of systems. This is particularly true when some (but not necessarily all) of those systems are already wrapped up in the collateral implications of their Webification (namely, investment in the infrastructure elements of security, universal accessibility, and transparent location).
Were you to take a snapshot of an interesting Web-centric system during any one of these generations, you'd find a distinctly unique architectural style at play. Each generation was complex in its time, but the technology available at that time shaped the accidental architectures that emerged. Only now—in reflection of that time—can we begin to attempt to name and thus make intentional these architectural patterns.
A final point I need to make is that, depending on where you're looking, one person's system is another's subsystem. Thus, you might see the use of intentional architectures at some levels (only because we know how to build them and have built them before) but then accidental on others (because we're striking out on new ground or are assembling systems of systems in novel, heretofore untried ways).
Accidental architectures are not evil things; indeed, they are inevitable in the growth of systems. It's only when we begin to turn these accidental architectures into intentional ones that we advance our understanding of software architecture.
Grady Booch is an IBM Fellow. He's one of the Unified Modeling Language's original authors. He also developed the Booch method of software development, which he presents in Object Oriented Analysis and Design. Contact him at firstname.lastname@example.org.
This article is provided courtesy of IEEE Software Magazine.