ABSTRACT
Software development is often a major cost in the total cost of
development and distribution of a new technology. Further, the
development of software is incremental and evolutionary in nature
with new requirements and features requested by users incorporated
into it over time. This in turn requires that the software model be
based on a reusable and extensible architecture that can be evolved
over time.