The more I study software architecture, the more I come to understand the extend of what I don't know.
One of the biggest things that currently nags at my ignorance is the lack of a suitable vocabulary for naming the architectural styles that I encounter. Mary Shaw and David Garlan, in their seminal book Software Architecture
, posit the existence of a handful of architectural patterns: batch sequential and pipes/filters for dataflow systems, main program/subroutine, object-oriented, and hierarchical for call-and-return systems, and communicating sequential processes and event systems for systems of nearly independent components. I think these are all quite useful, but I don't have enough data that leads me to assert that they are sufficient, necessary, and independent. My intuition says that they are not, but I can't yet enumerate the patterns that are.
One quick aside: the move from algorithmically-decomposed systems to object-oriented ones in software is akin to the shift in materials found in civil engineering: bridges made of wood then stone then steel and now gossamer cables each exhibit different architectural styles, enabled and constrained by the physics of the underlying components.
Anyway, I'm diagnosably into classifying things (The Order of Things
by Kipfer is my idea of good bedtime reading). One enumeration I have made a stab at is an identification of the generations of web-centric software architectures (a topic I lectured on at the last week's SDForum
In order of oldest to most recent:
- Simple documents
- Colorful clients
- Simple scripting
- Rise of middleware
- Rise of simple frameworks
- Emergence of dynamic frameworks
- Semantic web
Simple document web-centric systems are like those that Tim Berners-Lee first created: they have hyperlinks and simple formatting, but little more. The second generation - colorful clients - had more engaging content and more precise formatting, but were often little more than eye candy (does anyone use the
As with the naming of cats
, finding these ineffable, effable, effanineffable, deep and inscruitable, singular names is hard. So, stay tuned.[Read More