Whenever you thing about software, there is one thing which rarely (never?) changes – there will be constant need for a change.
And the change itself it comes from two main streams:
- the business which can be very dynamic and bring changes even every day (strong competition), or slightly slower but still very often changing like regulated business (investment banking)
- technology itself, the way to develop software changes, the way to handle scalability, efficiency of costs, best practices – it constantly changes
To handle it well you need something more than traditional methods of architecture – you want really to meet the ever-changing demands of the market.
Architecture agility is the ability to respond quickly to a constantly changing environment – see more on architecture and agility good friends.
Techniques to facilitate the change:
- reduce dependencies (less coordination required – think of release schedules and shorter time to deploy)
- leverage standards (industry, corporate and de-facto standards – better integration)
- create product-agnostic architectures (avoid vendor lock-in)
- create domain-driven architectures (business change will be 1 to 1 with your architecture change)