Sunday, 17 October 2010

A pattern language for emergence in systems architecture

(Disclaimer: Published 2012, Written 2009, from Thesis handed in 2010)

To create architecture is to put in order.
Put what in order? Functions and objects.

Le Corbusier’s quote from his Precisions No. 68 could be taken out of any software engineering book. Apparently there is a certain common sense between natural and digital architecture. Two of my thesis’ most important components are Design Patterns and Web Services. What do their prophets[1], the “Gang of Four”[2] and Roy Fielding, have in common?

Both reference the architecture theorist Christopher Alexander in their most important works. In doing so, they reference building architecture as important source of inspiration.

Referencing Alexander is a practice used by a majority of software engineering evangelists. As the name defined by the NATO suggests, software creation is interpreted rather as engineering process as opposed to a creative process (Pree 1995, p. 3). Control over software, like a construction engineer has control over a building, is the divine aim (Barbacci 1998, Kruchten et al. 2006). This implies a taxonomic approach[3] where all knowledge is inherent – a view of the world that goes back to the enlightenment and Cartesian ideals, when meta-spiritual societies like the Freemasons where founded. Their rationalism goes along with an architectural symbolism. And their rationalism eventually turns in to the field of cybernetics, which in turn, created information science[4]. This trunk of ideas, originating from a historicized view of architecture, turned out to be Pandora’s box of software engineering.

Baber (1982) uses a similar analogy referencing the major figure of cybernetics, Norbert Wiener, when he sets his famous fable of the city of “Moc”. The collapse of its infrastructure is used to explain a vicious circle of inadequate knowledge transfer. In his opinion, software designers need as much education as real architects: “The term software engineering was used [...] in a provocative than in a descriptive manner.” (p. 14). Since Donald Knuth’s, Frederick Brooks (1986) and Baber’s manifestos, computer science sought help in becoming an organized, designed taxonomy. This may be the reason “patterns have taken root in software” (Coplien 1995, p. xi). With patterns, Alexander’s ideas from architecture (Coad 1992) have also been adopted.

Information Science has since adopted a huge vocabulary from architecture. The mounting of an application’s building blocks, including compiling and linking[5], is called building. Admittedly, a compiler assembles – a reference to industrialized construction techniques. This thesis, of course, deals with frameworks. Furthermore, many metaphors regarding three-dimensional composed objects can be found in the pattern language of software engineering, e.g. stacks, platforms and pages (or even libraries). Finally, we constantly use space of a runtime environment. Consequently, software engineering could be seen as design of digital space – or architecture. To use the semantic scope of architecture was not compulsory. It merely was considered common knowledge – in contrast to mathematics. It opened, like Fielding (2000 p.18) mentions also a view, an interpretation to things. Like everything perceived in space. A common illustration of this case is the use of “table” instead of the term “relation” for database systems (Codd 1970). The use of language in these pictorial terms, as a process of semantics, is one of Wittgenstein’s main ideas. We will come back to this later – but keep in mind that process is an antonym to timeless.

It is important to point out that Alexander’s The timeless way of building has been released in 1979. According to Portugali (2000, p. 31-33) at this time architecture realized, that neither Le Corbusier’s utopian nor Friedmann’s epistemological nor Bertalanffy’s system theoretical approach to planning was going to work out in real life. In the quest for the ratification of order, the philosophy by Michael Foucault was considered useful. Forty (2000, p. 248) accredits Foucault’s idea of “space […] in the form of pattern and ordering” to this new perception of order as abstract scheme. The link to information science is obvious with Carole Brooke (2002, p. 54) pointing out that Foucault’s critical analysis questions the source of any ontology in regards to the power that lead to its order. Power here is a precondition for adoption, also in information systems (Conway 1999, p. 71). Lefebvre uses this aspect of power to criticize the modus operandi of “privilege[ing] a single concept, and make everything else to fit hat concept” (2000, p. 248). This critique resulted in a new architecture considering a designed space only one out of many possible manifestations of order. Soon the pattern ideal was considered a failure in building architecture (Alexander 2008), but flourished in its digital twin.

The era of post-structuralism was Alexander’s context. As he describes the idea of the pattern (1979, p. 147): “each pattern is a generic solution to some system of forces in the world. But the forces are never quite the same”. He still believed in a higher-order system, though a living one, with patterns as memes. He created a pattern language[6], a terminology to index force-configurations and solutions to resolve those forces, “morphological laws” (p. 90). In my opinion, the temptation to use Alexander’s approach in information science is founded in the holistic nature of patterns and a traditionally strong positivism in computer science. Patterns are generic solutions that exist similarly to a platonic idea; something that is rather discovered than invented (Coad 1992). In combination with calculation, it becomes un-questionable (Barry 2004, p. 87). Perception, however, always limits discovery. Ladyman (2002, p. 254) summarizes this as “Physics cannot explain the universe” (see Interlude 1). Alexander created a common language –in Wittgenstein’s sense of a language as expression of experience. A language translating a perception of being in time rather than a universal grammar[7]. Thus, the question if semantics are still the same for a sentence cannot always be answered. Debates in Philosophy of Science, like the discussion Habermas contra Foucault (Brooke 2002), underline this.

How did architecture move on after realizing a constant adaption is necessary?

Alexander considers Le Corbusier’s pragmatically totalitarian order inappropriate when he states “the radiant city [...] makes us feel bad” (p. 284). He believes that technically supported iterations can never be “actual” (Alexander 2008), hence frightening in an “uncanny” (Mori 1970) way. He implicitly favours Frank Llyod Wrights approach (p. 203) of an individualised romanticised[8] city, a common ground, more of a “bottom up” approach as Scheurer (2009, p. 49) put it. In the way he contrasts them, however, he approves the general idea of the city a structure inherently harmonious (Fishman 1982, p. 13) – although not centrally planned but evolved out of a “law” system of patterns. Later, according to Portugali (2000, pp. 9) the insight of the network structure of cities emerged. Instead of a system of complex patterns Wittgenstein’s Ideas were used to create interconnected concepts and categories, finally leading to the idea of self-organisation and the synergetic (2000, p. 261)[9]. Deleuze and Guattari went further and “in place of totalizing unity, [...] advocate locality, situatedness, rhizomic strategies [...] and assemblages” (Picon 2002, p. 1).

In software engineering, Alexanders’ idea of patterns is somewhat largely applied to object-oriented aspects (Fielding 2000, p. 16), whereas it should be applied to a more abstract level, virtuously viewing all “engineering principles and architectural style” (Perry & Wolf 1992, p. 42). In mobility context, IT architecture takes local aspects into consideration (Nyir 2005 or Interlude 3) – but how does locality, as a time-space defined context, a domain, affect patterns? What could we take out of this analysis? Patterns are inevitably connected[10] in a network. More importantly, patterns constantly evolve in the same way as technology and culture (Law 1991, p. 17). Only by using and critically questioning them they become useful. Patterns are a language that does not provide a generic solution but rather explains a certain context. Wittgenstein uses the “builders language” to draw an example of a simple, yet complete language. Complete, because it is in use and thus can evolve[11]. Blair (2006, p. 146) quotes Wittgenstein’s famous city analogy which brings us back to architecture theory:

...for these are, so to speak, suburbs of our language. (And how many houses or streets does it take before a town begins to be a town?) Our language can be seen as an ancient city: a maze of little streets and squares, of old and new houses...

Coming from fragmented artefacts, building architecture turns back to its roots by incorporating evolution. To the extent of Friedman’s “structure that would incorporate the unforeseeable”[12], Philip Johnson’s diffusion between glass walls and nature or architectural warfare as Weizman’s calls it “walking through walls”[13]. The layers become a grid which allows alignment rather than limiting movement. In the same way as in building architecture back in the day, digital architecture still wants to create order; at last local, domain-specific ones. Yet only in rearranging these orders, a system is kept alive.
The misconception in my opinion is that patterns represent divine ideas that can, if stacked properly, still form a perfect timeless system[14]. On the pro side, evangelists like Goodliffe (2009, p.25) state “The quality of your software city is directly related to how much town planning went into it”. He is supported by e.g. Keller (2005), who argues that perfect order can never be achieved, but recursively applied patterns can be used in enterprise architecture to lead this way. On the contrary, Monson-Haefel (2009, p. 186) provokes “It’s simply not possible to future-proof an architecture”, Carr (2005) sees IT as commodity and Hohmann (2003, p. 3) believes that “architectural "goodness," [...] can only be explored through actual use of the system”. The latter follows the path of building architecture, where Cartesian ideals have been replaced by a holistic view. An approach accepting change of semantics (or call it uncertainty in architecture)[15], yet taking temporary Nash equilibrium into consideration, of course.

In everyday use, architecture mostly refers to the process of design in regards to physical structures, in particular buildings. This is the classic definition by Vitruvius, Alberti, etc (Forty 2000, p. 240f.). In recent years, however, the architecture schools focused on a much wider approach, taking into consideration the whole experience of space (Bachelard 1958, Böhme 2006) and time. Architecture is creating space, particularly environments. This process includes designing, constructing, reshaping/refactoring and defining spaces – regardless of their size and structure, including feelings and emotions (Pallasmaa 2005). Therefore, we probably have to take the mentioned quote by Le Corbusier back into consideration and see the act of ordering(Law 1992), although post-structural, as an ideal. One that can actually help create dynamic solutions and systems of systems (Boehm 2006), like Foucault and Habermas developed in their dance-like debate (Conway 1999). If we want, we can make use of an appropriate domain language to ease configuration and standardization, hence reusability – this domain-specific language could be called A Pattern Language.

I see the task of architecture as the defense of the authenticity of human experience
Juhani Pallasmaa, Encounters

[1] I am aware of the fact that those personalities have not been the first prophets. Morville (2005, p.26) mentiones Kevin Lynch as inventor of patterns in building architecture, Pree (1995, p. 62) accredits Bruce Anderson of the transformation to IT.
[2] Shorthand for the 1994s  “Design patterns” book authors: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
[3] See for example Foote 1998, p. xi “So patterns people can play not only Adam and Eve, and Carolus Linnaeus, but Luther Burbank as well” (Carolus Linnaeus was the inventor of a taxonomic system for biology) or Meyer 1996.
[4] According to AMS 1996, p. 1159 „ Information sciences originated in cybernetics” or, more in depth, Mahoney 1989
[5] Both terms derived from linguistics and mathematics rather than from architecture hence from the earlier times of computer science as Kohanski (1998, p. 89ff.) shows.. See Irons (1961) for one of the first descriptions of the definition of a compiling language or, for a more in-depth reference list Wexelblat (1981)
[6] The term was mentioned before to show the common use it arguably reached since its introduction. However, several other suggestions have been made in the similar directions, see Lakoff (1980) or Wake (2000)
[7] in Chomsky’s terms. Another famous discussion, see e.g. Good (2006) p. 57 and Livingston (2002) p. 341: “metaphysical interpretation according to which beings are submitted to a unified regime of explanation insofar as they are rule-bound fails to accomplish its goal, because it conceals its own origin in more ordinary uses of the concept of a rule”
[8] Romanticised in terms of referring to medieval, spiritual times. Coyne (1999, p. 6) shows that “Although antagonistic, the rationalist and romantic legacies are not so far from each other”
[9] Self-organisation is the other, even more cybernetic, Pandora’s box: Artificial Intelligence. See  “What computers cannot do” by Dreyfus (1972). Another approach is “crowd sourcing”, again taken from the architectural concept of desire paths (Morville 2005, p. 26).
[10] Actually, Alexander points this out, too, e.g. “each of these parts, if taken by itself, will produce chaos” (p. 163), the network/relationship meta-concept is also referred to in the “Software Pattern Series” e.g. Zimmer (1995, p. 355) and as a constraint in Perry and Wolf’s (1992, p. 43) definition of architectural style as “particular codification of [...] elements”
[11] This can also be applied to the current discussion about generic vs. domain-specific languages in IT context. Wittgenstein argues any language is complete as long as it fulfils the assigned task. A language is valid even if not Turing-complete
[12] In 032c magazine, Maak 2004, p. 113, Yona Friedman’s architecture is compared to Koolhaas’ analysis of chaotic structures
[13] Weizman 2007, p. 186 describes the “movement itself that produces space around it”
[14] A very common example of the divine solution problem is the story of J2EE (Scalability vs. transparency (Bass et a. (2003) p. 420)) as a programming pattern or MVC as an architectural pattern (see Coplien 1995, p. 59). An upcoming discussion in the same area is “convention over configuration”, again merely a problem of defining a language. I am, however, fully aware of the fact that a system change and feedback are always possible as Brown (1998), Fowler (1999) and Feathers (2002) have shown in far more details than I could annotate here.
[15] In information architecture, scholars become more aware of the field of uncertainty in agility as Kalbach (2009) shows.