Architectural Styles for Distribution Using Macro-Patterns for System Design

This paper highlights the problem of describing the software architecture of a distributed system, and introduces the Architectural Styles proposed by Shaw&Garlan as a possible solution. Using a pattern template, it explores four major styles for distribution architecture: Host-Terminal, Client-Server, Broadcast Data and Batch Communication. Introduction One major problem we find in building large software systems is the problem of talking about their structure. How do we discuss different ways of putting together system components? Currently we lack a sufficiently rich vocabulary. There is a very effective method to build up a vocabulary. We use narrative, examples, similes and references to build up new concepts in the mind of the reader, and then give this concept a name. From then on we can use the name in our discussions and documentation. I am aware of two leading researchers using this kind of approach: [Jackson] describes ‘Problem Frames’ (structures for a system), and uses a narrative approach to describe them and the architectural issues surrounding them. [Shaw&Garlan] describe ‘Architectural Styles’, using approach similar to that of the pattern movement. This paper extends the work of [Shaw&Garlan] to explore styles for the architecture of distributed systems. Shaw&Garlan’s Architectural Styles [Shaw&Garlan] distils the essence of large system design using an approach very similar to the software patterns first promoted by Richard Gabriel and derived from the work of Christopher Alexander. As with a pattern, each architectural style has a simple short descriptive name. However the authors do not use a template for their styles. Instead a narrative description attempts to cover the following items: A short name to use in conversation. What is the design vocabulary (the components and connectors)? What are the allowable structural patterns? What is the underlying computational model? What are the essential invariants of the style? What are common examples of its use? What are the advantages and disadvantages of using that style? What are some of the common specialisations? Table 1: Elements of a Shaw&Garlan Architectural Style Using Styles The book [Shaw&Garlan] goes on to stress that in practice any given system will use a combination of styles, rather than exclusively one. In this respect, architectural styles appear very similar to software patterns ([Gamma+]). I myself have used styles to discuss the overall software architecture for two new software projects. I find, as with patterns, the names and the rules of behaviour implied by each style helps considerably when sketching out options for the high-level design of a system. However the descriptions in [Shaw&Garlan] are limited. Their narrative approach leads to some being explained well; others sketched only in the vaguest detail. My experiments with describing styles in this informal way (see [Weir]) have led me to conclude that a more structured approach, based on the pattern format, is more profitable. This paper uses such a pattern structure to describe several styles commonly used in distribution architectures. Architectural styles differ significantly in content from many of the other types of software pattern, so this paper uses a rather different pattern template. The template preserves the elements of the Shaw&Garlan styles (see Table 1) as follows: