FAQ 4.14 How does an architect make the software architecture flexible?

graphics/new_icon.gif

Intentionally.

The main message here is that flexibility is not something that comes automatically, even with OO. The other message is that it is not possible to create infinitely flexible software without introducing unmanageable complexity, so the only alternative is to rely on knowledge of the problem domain to make wise choices.

Here's a way to do it.

  1. Write down the specific places where the architects and analysts think the software needs to be flexible. Make sure the list isn't too long.

  2. Throw out everything on the list that a user/customer wouldn't pay real money for. Usually this means discarding all the "technical flexibility spots" such as swapping out class libraries, since customers are usually willing to pay only for things that affect the external behavior, not the internal implementation of external behavior. Again, make sure the list isn't too long.

  3. Do a cost/benefit analysis on each of the remaining line items. Get the customer to add whatever survives this analysis to the "Nonfunctional Requirements Specification" or other appropriate document, just to make sure the customer realizes what's going on.

Don't try to create software that's like a rubber band flexible in every conceivable direction. Instead, identify a few specific places where the system needs be flexible and do a good job with those places. If you get this point wrong, you'll end up with massive unnecessary complexity and your project will probably fail.



C++ FAQs
C Programming FAQs: Frequently Asked Questions
ISBN: 0201845199
EAN: 2147483647
Year: 2005
Pages: 566
Authors: Steve Summit

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net