Tuesday, October 07, 2008

Why there is no Web 2.0 Architecture Document

Following my previous post, I received a rash of emails with people generally agreeing, some laughing (they were there and it brought up memories) and thanking me for this article. I also received a couple of emails from people who were generally confused about software architecture and at their urging, I decided to write this follow up post to describe architecture. Specifically, they were asking why there is no architecture for Web 2.0. This is a bit long so bear with it.

Architecture is not always a thing, although the expression of architecture is a thing (like a 'blueprint'). Regardless of the field (software system, commercial building, bridge, airport, etc.), an architect’s job is to describe and document a system or systems and their structure, including the components within the system/structure, their externally visible properties, and the relationships that exist between them. An architect typically describes and documents this in several views to account for static and dynamic behavior during all phases of the system or structure. This is generally supplemented with other artifacts depicting additional aspects of the thing being architected.

In the practice of software architecture, this may include views such as the data model view, the technical infrastructure view, and views from various “actors” who will interface with the system. The term "actors" in this context refers to any “things” that interact with the system, including people, external forces, or even other systems.

So, why is it so difficult to capture the knowledge of Web 2.0 as architecture? After all, everything has architecture. Whether the architecture was developed before or after the thing itself, it still exists. A house has architecture, even if the house was built by illiterate monkeys who never documented their architecture (I once lived in that house). An architect could subsequently capture the architecture for such a house by analyzing it and capturing the knowledge in a standard Architectural Description Language (ADL) or other convention. The value is that others who liked the house might want to view the architecture and build it again with a few changes.

The answer to the Web 2.0 problem is that Web 2.0 itself is generally a collection or class of things. To capture this knowledge successfully, architects require the ability to look beyond a specific implementation and document the concepts and relationships of each component in a system/thing in a manner that others can reuse for their purposes. Architects must look beyond what they see or what is visible and capture the axioms, tenets, and idioms in a manner that conveys the most knowledge possible. Skilled architects have an uncanny ability to note similarities in multiple implementations of a class of thing and capture and convey that knowledge.

To do this job properly, architects may utilize many different types of conventions or formats to preserve knowledge. Some conventions are very familiar to most of us. Blueprints are perhaps one of the most common formats, yet they capture only part of the knowledge of a structure or system of structures. A blueprint for a building usually captures only the static structure. It does not capture how actual humans behave in the system. For example, a blueprint will not allow someone to distinguish the difference between how two or more groups of humans utilize the same building in different manners. One group of people living in a house may only sleep and eat in the house and work somewhere else, for instance, whereas another group might set up a home office and choose to eat, sleep, and work at the house. How can an architect quantify these differences? Sometimes architecture alone cannot sufficiently capture the required level of detail in blueprints, so architects use models and patterns to convey this additional knowledge not captured in normative architectural views.

Patterns of usage might also include a depiction of how people move around within the house and note relevant facts, for example the observation that inhabitants usually sleep at night time.

In the software industry, a blueprint is usually synonymous with a component or technology view. Sometimes there are forces or aspects of a thing that are not immediately visible to the naked eye. The dynamics of how a thing is used are sometimes just as important as the static structure. This information is very valuable to understand in terms of studying Web 2.0. Web 2.0 is not just about a static architecture of the internet; it is about the patterns of usage between a variety of things that use the Internet as a platform, whether they be human or machine.

The upcoming book will document the patterns of Web 2.0.