Emergent Architecture, what really is?




What is Emergent Architecture then ?

I start writing down a description, you are welcome to add yours.


  • I begin with a story that in my opinion describe the dynamic of an Emergent Architecture

    In Oregon in 1975 when faced with the decision of where to build footpaths between newly erected student housing, the architect let the authorities first plant grass between the buildings. Students were left free to walk on the grass. Later, the footpaths were placed on the paths the students feet had traced on the lawn.

    (see also The Oregon Experiment and the Desire Path)


  • Gartner suggest and describe Emergent Architecture here: Gartner suggest to use an Emergent Enterprise Architecture


  • Another way to look at Emergent Architecture is to recognize that it is the same phenomenon of both Emergent Design and Software Systems Evolution where the former has a lower granularity than emergent architecture and the latter has a higher granularity. All tree show what is called Fractal Self-Similarity (see the principle of Self-Similarity in Extreme Programming Explained, Kent Beck).

    • From the system evolution point of view I find it interesting the paper Computation in the Wild D. H. Ackley et al. 2002. There I find those quotes:

      To the degree that a software system is large and distributed enough that there is no effective single point of control, we must expect evolutionary forces

      and

      The strategies that we adopt to understand, control, interact with, and influence the design of computational systems will be different once we understand them as ongoing evolutionary processes

    • From the emergent design point of view there is this post by Ron Jeffries: Essential XP: Emergent Design and this experience report I documented: Design Principles and Emergent Properties


  • From a practical point of view I think about Emerging Architecture as the result of many ongoing local 1:1 interactions between many professional software engineers with a certain amount of knowledge, experience and skills on design.

    These local interactions happen verbally and mediated through the shared code-base, data-base and API. Agile practices like Collective code ownership and Shared responsibilities amplify the frequency and the scope of these interactions.

    And the Architecture gradually emerge in a process of co-evolution between the software engineers and the code-base and the architecture itself, this process influence and evolve each other.
    This means that software engineers change the design and architecture locally, enabled and constrained and guided by the local interaction with others engineers, while the system, its code-base and its architecture at work in production is a source for the engineers of learning from feedback . 

 


Print | posted @ domenica 30 settembre 2012 12:50

Comments have been closed on this topic.