Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 22

Introduction

 Software is becoming very


expensive:
 a possible way to reduce cost:
 reuse parts from previously made
software.
 assemble software from off-the-shelf
components.
1
Introduction
 Advantages of reuse also
include:
 reduced number of defects:
 standard and well-tested
components are reused.
 reduced development time:
 provide early market access for
products.
2
Software reuse
 Software development with
reuse:
 similar to an electronic engineer
building an electronic circuit:
 uses standard types of
electronic ICs and other
components.
3
What can be reused?

 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

 Extracting reusable knowledge


from past projects:
 presents difficulties not
encountered in working with a
current project
 typically original developers are
no longer available for consultation.

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

You might also like