|
Software Reuse
Recycling The Code
Reuse is the process of implementing or updating software
systems using existing software assets. Assets can be specifications,
design, code, or user documentation. Reuse may occur within
a software system (e.g., common data and operations for all
objects of a particular subclass), across similar software
systems (e.g., report generators for database management systems),
or in widely different software systems (e.g., WYSIWYG user
interfaces for thousands of different application packages).
Reuse is an integral part of every engineering discipline
and enables organizations to reduce the development time and
risk
Software reuse provides a basis for dramatic improvements
in quality and reliability - and reduced costs for software
development and maintenance. Demands for reliable, scalable
systems are a challenge for both the management and technologists
of the organization. Integration of software reuse principles
into the software engineering process has proven to be extremely
successful.
Software reuse provides a basis for dramatic improvement
in the way software-intensive systems are developed and maintained
over their lifecycle. Improvements manifest themselves in
increased quality and reliability and in long-term decreased
costs for software development and maintenance. Other benefits
of adopting reuse include improved interoperability and support
for rapid prototyping activities. Since reuse is merely a
by-product of disciplined software engineering, there is less
initial risk for development, maintenance and acquisition
activities.
Software reuse principles have been demonstrated to provide
one of the greatest returns on investment for reducing cost,
time and effort throughout the software lifecycle. Customers
in the Federal Government and Commercial Industry have stressed
the importance of reducing the cost, time, and effort required
to build and maintain software systems.
Considering that coding consumes only 10-15% of the time
and effort on a project, it is astounding that almost all
reuse efforts have been directed at code reuse. Blueprint
emphasises a broader approach, advocating the reuse of all
software product items (e.g., designs, specifications, concepts
of operation, user documentation).
It is estimated that the introduction of reuse processes
into early development and maintenance activities, specification
and design (for development), and scope of impact/sphere of
influence for functions and data identified through reverse
engineering (for maintenance), will produce ripple effects
throughout the project and return greater benefits in increased
productivity and cost savings.
|