Tuesday, April 22, 2008

Architectural Styles and inspirations

The road of abstractions has infinite milestones. The infiniteness is a consequence of human thought, which finds patterns, commonalities, higher plane of unification at almost infinite levels. This writeup is about the abstractions as far as software architecture is concerned.

In "Architectural Styles and the Design of Network-based Software Architectures" thesis, author talks of Architectural Styles.

An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style.

The styles are categorized into five categories,

1. Data-flow styles
  • a. Pipe and Filter (PF)
  • b. Uniform Pipe and Filter (UPF)
2. Replication styles
  • a. Replicated Repository (RR)
  • b. Cache ($)
3. Hierarchial styles
  • a. Client-Server (CS)
  • b. Layered System (LS) and Layered Client-Server (LCS)
  • c. Client-Stateless-Server (CSS)
  • d. Client-Cache-Stateless-Server (C$SS)
  • e. Layered-Client-Cache-Stateless-Server (LC$SS)
  • f. Remote Session (RS)
  • g. Remote Data Access (RDA)
4. Mobile code styles
  • a. Virtual Machine (VM)
  • b. Remote Evaluation (REV)
  • c. Code on Demand (COD)
  • d. Layered-Code-on-Demand-Client-Cache-Stateless-Server (LCODC$SS)
  • e. Mobile Agent (MA)
5. Peer-to-Peer styles
  • a. Event-based Integration (EBI)
  • b. C2
  • c. Distributed Objects
  • d. Brokered Distributed Objects

However this is not the only abstraction. Lifetime Objectives and Lifetime design is another abstraction practiced by some. These are set of objectives and architectural concerns that are assumed to be true for entire lifetime of the architecture being created. Could we categorize architectures based on this? This is for a future writeup.

In many cases and mostly with me, the architecture comes with a simple underlying thought/strategy. A very simple statement that defines not the architecture but the direction of architecture. Let me call that as architectural inspiration. This is an overly simplified of universe in discourse, the domain world. Some of the architectural inspirations are, (replace world with everything)
1. World consists of objects. Objects have behavior and data.
2. World is made up of resources. Resources can be identified by URIs and accessed by a protocol.
3. World is only about services. Discover a service, use it and forget it.
4. World is a language. The language is understood by a platform and job of software development is to describe problem in the language.

No comments: