Architecture is the stuff of the wires. That buzz you hear is the sound of imagination in motion. It is not science or technology. Architecture is the sound of builders collaborating. It is the convergence of design, form, craft, media and software, the creation of n-dimensional living and breathing info-spaces. Wired communities linked via electronic boulevards into virtual cities of the final frontier. Architecture is art and meaning, without it the techno-babble makes no sense. The wires are whispering and if you listen closely you will hear the songs that they are singing. They are the songs of a new form of urban planning.
What is software architecture? I am often asked this question whenever I tell people that my company is an “Internet consulting company that focuses on architecture.” I find it quite interesting that I get this question equally as often from technology people as from people outside the industry. My elevator pitch is not yet perfected so I find myself stumbling for a few seconds before saying something like “architecture concerns itself with making sure that the various parts of a complex system (e.g. an eCommerce site) work well together.” Invariably the response I get is “so your company does web pages?” To which I respond, “yeah, well, that is part of it. But we also make sure that the web server, the application server, the database, the front end, and any required middleware work in tandem.”
In other words the question is not an easy or straightforward one to answer. We have a 2000-year history of architecture as it relates to the built world, and still the general public has only a vague understanding of its first principles. In the distributed computing universe, as least with respect to anything that could be called computing for the masses, we have at most a twelve year history (circa 2002), therefore it should not come as a surprise that even many practitioners within the technology industry are also confused when the word is used. Why twelve years? Because prior to the client-server revolution, most, if not all, of the architectural considerations came pre-packaged in the box. Application developers working on IBM mainframes paid scant attention to architecture. There was no need. It was a done deal.
Little wonder that mainframes were extremely successful machines, despite the fact that they became everyone’s whipping boy. They allowed developers to get busy with the task at hand, instead of worrying about the myriad of details required to ensure that the underlying infrastructure and plumbing worked to everyone’s satisfaction. Client-server computing in the early 1990’s changed all that. Architectural concerns became front and center.
I would like to propose the following succinct description (i.e. as opposed to definition) of software architecture:
Software architecture relates to constructs required to ensure that the parts of a complex system work together in a coherent manner. These constructs must ensure that the system scales and that it continues to function even though individual components may fail.
While not defining software architecture, it nonetheless captures the essence of its meaning. More formal and rigorous definitions mostly add obtuseness without providing additional clarification. One of the “three amigos” provides the following definition:
Architecture is the set of significant decisions about the organization of a software system, the selection of structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaboration of these elements into progressively larger subsystems, and the architectural style that guides this organization—these elements and their interfaces, their collaboration and their composition. Software architecture is not only concerned with structure and behavior, but also with usage, functionality, performance, resilience, reuse, comprehensibility, economic and technology constraints and trade-offs, and aesthetic concerns. [Booch 1999]
With all due respect to brother Booch, someone I have great admiration for, I think I will stick to my short description just the same.