2010-01-19

RE: <The better question would have been - "How much am I willing to spend to ensure flexibility of my systems?".>

The first consideration – it is known that

“80 % of software lifecycle costs occur during the maintenance phase”, and

“80 % of maintenance is due to unmet or unforeseen user requirements; only 20 % is due to bugs or reliability problems”.

These values were reported in 1992 as an average for the IT industry; the current situation for some enterprises is worse – the development and deployment of an application can be only 5 % of the total cost of its ownership. What is also disturbing is that these values are not widely known to many people from the IT industry, and IT staff typically estimate these values completely differently – see below http://www.samarin.biz/misc/EPI-TCO-c.png

The second consideration: A desired level of agility / flexibility may be different in different industries and, moreover, it may change over the time. For this reason, I prefer to talk (see the already mentioned presentation) about “optimal agility”.

RE: < One answer is: by using appropriate design patterns. >
Also architectural principles are useful – my list is the following:

A few definitions can be useful

Endorse the “building block” architectural concept from TOGAF

Avoid modification of shrink-wrapped commercial or freely available software

Danger of premature optimization

Avoid the trap of the selection of “top-down” vs. “bottom up”– use the “pinball” style

Explicit is better than implicit

The big picture

Horizontal and vertical coordination

Long-running processes

Avoid dispersion of the business logic

The importance of business events

Visibility of artefacts

You may break any principle provided that you master it

RE: < Overall flexibility is a too generic concept to drive an architecture effort.>
As usually, we deal with a system of systems (or even with more “nested” structures) then the architecture of each system should address flexibility in its own way. So, the architecture of the top system of systems may provide “overall flexibility”.