Agile Architecture

Building architects were among the first people to use the word 'agile' to mean a flexible space, usually with moving walls, and popular in prefabricated schools etc (ref 'open building'). The word was also often used with respect to flexible manufacturing and as a miltech buzzword.

In the (very) late nineties I promoted this use of the word to software system architectures, since I tend to think they are very similar in intent. Specifically I identified 'agile' as an architectural attribute that combined 'robust' with 'flexible' and 'dynamic', and used it as a justification for certain ideas I have about system lifecycles etc.

Around the same time the XP crew and their friends needed a business-friendly word to attach to their methodology (Xtreme was just a little too teenage) and borrowed 'agile'. I'm not talking about that. Nope. Not at all. Though it is an excellent way of getting things done.

To be agile, something should be robust under change via flexibility. Furthermore it should be able to adapt dynamically. This may be expressed as a system of components which vary their own behaviour and structure at runtime, or it may be expressed by selective replacement of some parts with other parts as circumstances change.

To be stable under such changes requires a form of robustness that is missing from most systems. Specifically one needs pervasive and extended redundancy at both physical and logical levels such that any component can be changed without excessive impact.

The benefits of such a system are that such robustness can be achieved without excessive infrastructure, in an explicit manner (you'll need to trust me on this for now). The standard 'heavy metal' solutions of today rely on massive infrastructure and operate in a rather opaque manner. This leads to risk since the actual behaviour of the system under pressure or change is not well defined.

There you go :). Kind of a taster.

--RichardHenderson. A MicroArchitecture production ('cos I say so :^P).


comment: I've put this page back to its original intent as it was drifting. Such is the way of wiki. Particularly, this has nothing to do with methodology. It is about what we, as software engineers, produce. I had thought it might be a jumping off point ot the detail of what an agile software architecture might look like. So far this hasn't happened, though REST is an example of this kind if thinking. We shall see... RichardHenderson


EditText of this page (last edited November 29, 2009) or FindPage with title or text search