Today’s business environment is very dynamic. Things change all the time. Definition of business concepts such as customer or employee changes over a period of time. Business rules change more frequently than business concepts. Think about new federal regulations and rules that have to be adhered to.
Good architectures are flexible such that changes can be incorporated with out too much difficulty. I thought about a set of questions that you should ask about your architecture in order to assess it. Most of them stem mainly from business requirements. Here is my first cut
Apart from supporting well known abilities such as scalability, availability and performance, a Good architecture has following traits.
1) Changes to business concepts can be incorporated easily with out a huge code re-writes. For example, you may want to add few additional attributes to employee for complying with federal regulations. A good architecture allows you to do this in a systematic way.
2) Changes to business rules can be done with in a short period of time (a day to probably a week). Business analysts should be able to view and change business rules.
3) Changes to human workflow can be done with out serious re-architecture.
4) Changes to presentation layer (including changing UI flow) can be done with out serious re-architecture. Can a new channel like voice channel be added with out costly re-write?
5) Changes in security policy can be incorporated with out serious re-architecture.
6) Allows other systems in the enterprise to interact with it easily.
7) Ability to trace/audit activities in the system should be easy
If you have got 6 or more out of 7, then you probably have a good architecture. 3-5 out of 7 means you are getting there. Any thing less than that, you better get your budget aligned for a costly re-write/re-engineering exercise.
These are all business scenarios that enterprise customers demand from their IT system. It’s all about agility and ability to cope up with change.
You don’t get all these features out of box. No amount of tutorials is going to get you there. You really have to ENGINEER for it. It means real hard work. That’s not my comment. That’s John Zachman’s. I believe it is true. His site is http://www.zifa.com
I am sure there should be more to this. Your comments are appreciated.