Professional Documents
Culture Documents
11.software Reuse
11.software Reuse
Specification
Design
Code
Test cases
At the most abstract level:
knowledge
4
Reuse of Knowledge
More difficult compared to day-
to-day reuse of knowledge:
developers vary over time and
over projects
difficult to remember details of
potentially reusable development
knowledge.
5
Why almost no software reuse
so far?
Engineers working in industry often
have a frustrated feeling:
current system is similar to last few
systems they have already built
everything is being built from scratch
current system is behind schedule:
no one has time to figure out what this
similarity really means.
6
Another complaint
In spite of having software
components available for reuse:
programmers have preferred to
create their own, because:
available components are difficult to
understand
difficult to adapt to new application
7
Basic Issues in
Software Reuse
Component creation
Component indexing
Search
Understanding
Adaptation
Repository maintenance
8
Basic Issues
Component creation:
Identify reusable components
Component indexing:
classification of reusable components
so that they can be easily searched
when we look for a component to
reuse.
9
Basic Issues
Search:
search for right components
in a database of components
requires a proper method to
describe components
10
Basic Issues
Understanding:
to decide whether we can use
some component
we need a precise and sufficiently
complete understanding of what
the component does.
11
Basic Issues
Adaptation:
A selected component may not
exactly fit the problem at hand
Tinkering with the code is not
satisfactory:
in any case justified only if
thoroughly understood
12
Basic Issues
Repository maintenance:
component entering
tracking faulty components
new applications emerge
older applications become obsolete
components might need changes
obsolete components might have to
be removed
13
Domain analysis
Aim:
identify reusable components
for a problem domain.
identification of right kind of
reusable information is a
difficult problem.
14
Domain analysis
Domain analysis identifies:
objects, operations and
relationship among them.
Consider airline reservation:
objects are
seats, flights, airports, crew, meal
orders
Operations are
scheduling a flight, reserving a seat,
assigning a crew to a flight, etc.
15
Domain analysis
Analysis of an application
domain:
to identify the reusable
components
Actual construction of reusable
components for a domain
is called domain engineering.
16
Reuse at organization level
Reusability should be a standard
part in:
specification, design, implementation,
test, etc.
Ideally there is a steady flow of
reusable components:
in practice, things are not so simple.
17
Reuse at organization level
18
Summary
Basic issues in reuse:
Component creation
Component indexing
Search
Understanding
Adaptation
Repository maintenance
19
Summary
Creation of highly reusable
components is a very difficult
problem
a promising approach is domain
analysis
Domain analysis:
aims to identify reusable
components for a problem domain
20
Summary
Application generators:
translate specifications into
application programs.
facilitate reuse
not very flexible, if new concepts
need to be supported.
21
Summary
Reuse at organization level
assess product’s potential for
reuse
refine product for greater
reusability
integrate product with reuse
repository
22