Software Reuse: ©ian Sommerville 2004 Slide 1
Software Reuse: ©ian Sommerville 2004 Slide 1
Increased dependability Reused software, that has been tried and tested in working systems,
should be m ore dependable than new software. The initial use of the
software reveals any design and implementation faults. These are then
fixed, thus reducing the number of failures when the software is reused.
Reduced process risk If software exists, there is less uncertainty in the costs of reusing that
software than in the costs of development. This is an important factor
for project management as it reduces the margin of error in project cost
estimation. This is particularly true when relatively large software
components such as sub-systems are reused.
Effective use of specialists Instead of application specialists doing the same work on different
projects, these specialists can develop reusable software that
encapsulate their knowledge.
Creating and maintaining a Populating a reusable component library and ensuring the software
component library developers can use this library can be expensive. Our current techniques
for classifying, cataloguing and retrieving software components are
immature.
Finding, understanding and Software components have to be discovered in a library, understood and,
adapting reusable components sometimes, adapted to work in a n ew environment. Engineers must be
reasonably confident of finding a component in the library before they will
make routinely include a component search as part of their normal
development process.
Design
patterns
Component Application
frameworks product lines Aspect-oriented
software development
Software product lines usually emerge from existing
applications.
Environment specialisation
• Different versions of the application are created to
handle different operating environments
(e.g. System for emergency services may exist in
different versions based on different types of
communication equipment.)
Process specialisation
• Different versions of the application are created to
support different business processes.
(eg. Ordering system may be centralized in one
company and distributed process in another)
COTS products are adapted by using built-in
configuration mechanisms that allow the functionality
of the system to be tailored to specific customer
needs.
COTS –Integrated systems
Involves integrating two or more COTS
systems(perhaps from different vendors) to
create an application system
Single product that provides the functionality
required by a customer
Based around a generic solution and
standardized processes.
Focus is on system configuration
System vendor is responsible for maintenance
System vendor provides platform for the
system.
Several heterogeneous system products are
integrated to provide customized functionality
Flexible solutions may be developed for
customer processes
Development focus is on system integration
System owner is responsible for maintenance
System owner provides the platform for the
system