Software Project Health Check: Best Practices and Techniques for Your Product...
Software component reuse repository
1. By :
Sandeep singh
Student, BCA v semester(Roll – 45)
School of Computer And Systems Sciences
Jaipur National University
Jaipur,India
1
2. 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.
2
4. Benefits Of Reuse
Increased reliability:-
- Components already exercised in working
system.
Reduced process risk:-
- Less uncertainty in development costs.
Effective use of specialists:-
- Reuse components instead of people.
4
5. Benefits Of Reuse
Standards compliance:-
- Embed standards in reusable components.
Accelerated development:-
- 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.
5
6.
Reuse Approaches
6
APPROACHES
Design Patterns
Component-Based
Development
Application
Frameworks
Service-Oriented
System
Line
Application Product
COST Integration
Application
Configurable Vertical
Program Libraries
7. Component Based Software
Reuse
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.
8. Definitions Of
Components
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]
8
9. 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
process.
Typically needs a well-structured repository of
components.
9
10. How To Retrieve ?
Methods of retrieval
1. Algorithms based on the meta-data accompanying
software components.
2. Algorithms based on the structure of the components.
Exact retrieval versus approximated retrieval
10
11. 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)
11
12. Retrieval by Structure
Depends on the availability of the structure in some
form (source code, interface, etc)
Depends on the availability of computer language
processors.
12
13. Some Other Methods
Formal component specification
1. Domain theories: algebraic model, signatures, etc
2. Interface specifications
3. Interface matching (automated theorem proving, etc)
Semantic Classification
1. Feature-based methods (What possible features can a
component have?).
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.
13
14. Reuse Problems
Increased maintenance costs.
Lack of tool support.
Pervasiveness of the “Not invented here” syndrome.
Need to create and maintain a components library
(Component Repository).
Finding and adapting reusable components.
14
15. Summary and
Conclusion
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
classifiable terms.
Component retrieval is a difficult problem and more
work is needed to find an efficient solution.
15