Student, BCA v semester(Roll – 45)
School of Computer And Systems Sciences
Jaipur National University
Software Reuse - Introduction
Software reuse is the process of creating software
system from existing software rather then building
software system from scratch. [Krueger,1992].
In most engineering disciplines, system are designed
by composition ( building system out of components
that have been used in other system).
Software engineering has focused on custom
development of components.
Benefits Of Reuse
- Components already exercised in working
Reduced process risk:-
- Less uncertainty in development costs.
Effective use of specialists:-
- Reuse components instead of people.
Benefits Of Reuse
- Embed standards in reusable components.
- Avoid custom development and speed up delivery.
Reliability and Safety:-
- Better system reliability is one of the goals of
software reuse. It is argued that reusable
components, because of more careful design and
testing and broader and more extensive usage can be
more reliable that one use equivalents.
Component Based Software
The notion of building software from reused components
the same way electronic circuits are built from
prefabricated ICs was first published in the NATO
conference in 1968. The idea emerged from object-oriented
development failure to support systematic reuse,
which needed more abstract components than detailed
and specific object classes. Component-based
development (CBD) allows the reuse of large and highly
abstract enterprise components so fewer components are
needed to build the application. This reduces the
assembling and integration efforts required when
constructing large applications.
A component should be executable code.
Component functionality should only be accessible
through a consist published interface.
The interface should include an interaction standard
and the components should be connectable to other
components. [Allen and frest,1998]
A component is any artifact produced during
systems development constructed to be reusable. [
Jacobson et al.,1997]
How To Retrieve ?
Component retrieval is in fact a form of information
retrieval. Despite this fact, “dedicated” component
retrieval algorithms are being developed, since
software is more than an ordinary text.
Component retrieval is a complex and heuristic
Typically needs a well-structured repository of
How To Retrieve ?
Methods of retrieval
1. Algorithms based on the meta-data accompanying
2. Algorithms based on the structure of the components.
Exact retrieval versus approximated retrieval
Retrieval by Meta-Data
By meta-data we mean the documentation
accompanying the component.
This method relies on existence and quality of the
documentation and needs some pre-processing.
How to find?
1. Using full-text search on documents and program
files: No cost, but inaccurate
2. By classification of the components either
automatically or manually. (depending on the cost
and accuracy we need)
Retrieval by Structure
Depends on the availability of the structure in some
form (source code, interface, etc)
Depends on the availability of computer language
Some Other Methods
Formal component specification
1. Domain theories: algebraic model, signatures, etc
2. Interface specifications
3. Interface matching (automated theorem proving, etc)
1. Feature-based methods (What possible features can a
Deduction-Based Component Retrieval
1. Is the only method which retrieves proven matches only.
2. Suitable for the development of high-reliability or safety-critical
applications, e.g. space craft control systems.
Increased maintenance costs.
Lack of tool support.
Pervasiveness of the “Not invented here” syndrome.
Need to create and maintain a components library
Finding and adapting reusable components.
Software reuse is a crucial concern in today’s world
of complex software products.
Component-based development model plays an
important role in software reuse.
Component-based model is useful only when an
satisfactory means of retrieval is available.
No definite answer has yet been developed for
description of components in unambiguous
Component retrieval is a difficult problem and more
work is needed to find an efficient solution.