Design for Reuse
The software design should anticipate possible changes in the
system over its life-cycle.
New vendor or new technology
   Components are replaced because a supplier goes out of
business, ceases to provide adequate support, increases its
price, etc., or because better software from another sources
provides better functionality, support, pricing, etc.
This can apply to either open-source or vendor-supplied
components.
31