Linkedin: How does architecture ensure system flexibility?

Continue from http://improving-bpm-systems.blogspot.com/2010/01/linkedin-how-does-architecture-ensure.html

A few comments:

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”.


No comments: