Lecture3 - Software Reuse
Lecture3 - Software Reuse
System reuse
Complete systems, which may include several application programs may be reused.
Application reuse
An application may be reused either by incorporating it without change into other or by
developing application families.
Component reuse
Components of an application from sub-systems to single objects may be reused.
For example, a pattern-matching system developed as part of a text-processing system
may be reused in a database management system
Object and function reuse
Small-scale software components that implement a single well-defined object or function
may be reused.
Benefit Explanation
Accelerated development Bringing a system to market as early as possible is often
more important than overall development costs. Reusing
software can speed up system production because both
development and validation time may be reduced.
Effective use of specialists Instead of doing the same work over and over again,
application specialists can develop reusable software that
encapsulates their knowledge.
Increased dependability Reused software, which has been tried and tested in
working systems, should be more dependable than new
software. Its design and implementation faults should
have been found and fixed.
Benefit Explanation
Lower development Development costs are proportional to the size of the software being
costs developed. Reusing software means that fewer lines of code have to be
written.
Reduced process The cost of existing software is already known, whereas the costs of
risk development are always a matter of judgment. This is an important factor
for project management because it reduces the margin of error in project
cost estimation. This is particularly true when relatively large software
components such as subsystems are reused.
Problem Explanation
Creating, maintaining, Populating a reusable component library and ensuring the software
and using a component developers can use this library can be expensive. Development
library processes have to be adapted to ensure that the library is used.
Increased maintenance If the source code of a reused software system or component is not
costs available then maintenance costs may be higher because the
reused elements of the system may become increasingly
incompatible with system changes.
05/12/2024 Chapter 15 Software reuse 7
Problems with reuse
Problem Explanation
Lack of tool support Some software tools do not support development with reuse. It may
be difficult or impossible to integrate these tools with a component
library system. The software process assumed by these tools may
not take reuse into account. This is particularly true for tools that
support embedded systems engineering, less so for object-oriented
development tools.
Approach Description
Application frameworks Collections of abstract and concrete classes are adapted and extended to
create application systems.
Application system integration Two or more application systems are integrated to provide extended
functionality
Architectural patterns Standard software architectures that support common types of
application system are used as the basis of applications. Described in
Chapters 6, 11 and 17.
Aspect-oriented software Shared components are woven into an application at different places
development when the program is compiled. Described in web chapter 31.
Component-based software Systems are developed by integrating components (collections of
engineering objects) that conform to component-model standards. Described in
Chapter 16.
05/12/2024 Chapter 15 Software reuse 12
Approaches that support software reuse
Approach Description
Configurable application Domain-specific systems are designed so that they can be configured to
systems the needs of specific system customers.
Design patterns Generic abstractions that occur across applications are represented as
design patterns showing abstract and concrete objects and interactions.
Described in Chapter 7.
ERP systems Large-scale systems that encapsulate generic business functionality and
rules are configured for an organization.
Legacy system wrapping Legacy systems (Chapter 9) are ‘wrapped’ by defining a set of interfaces
and providing access to these legacy systems through these interfaces.
Model-driven engineering Software is represented as domain models and implementation
independent models and code is generated from these models. Described
in Chapter 5.
Approach Description
Program generators A generator system embeds knowledge of a type of application and is
used to generate systems in that domain from a user-supplied system
model.
Program libraries Class and function libraries that implement commonly used abstractions
are available for reuse.
Service-oriented systems Systems are developed by linking shared services, which may be
externally provided. Described in Chapter 18.
Software product lines An application type is generalized around a common architecture so that
it can be adapted for different customers.
Systems of systems Two or more distributed systems are integrated to create a new system.
Described in Chapter 20.
Security
WAFs may include classes to help implement user authentication (login) and access.
Dynamic web pages
Classes are provided to help you define web page templates and to populate these dynamically from the
system database.
Database support
The framework may provide classes that provide an abstract interface to different databases.
Session management
Classes to create and manage sessions (a number of interactions with the system by a user) are usually part of
a WAF.
User interaction
Most web frameworks now provide AJAX support (Holdener, 2008), which allows more interactive web pages to
be created.
Frameworks are generic and are extended to create a more specific application
or sub-system. They provide a skeleton architecture for the system.
Extending the framework involves
Adding concrete classes that inherit operations from abstract classes in the
framework;
Adding methods that are called in response to events that are recognised by the
framework.
Problem with frameworks is their complexity which means that it takes a long
time to use them effectively.
Core components that provide infrastructure support. These are not usually
modified when developing a new instance of the product line.
Configurable components that may be modified and configured to specialize
them to a new application. Sometimes, it is possible to reconfigure these
components without changing their code by using a built-in component
configuration language.
Specialized, domain-specific components some or all of which may be
replaced when a new instance of a product line is created.
Platform specialization
Different versions of the application are developed for different platforms.
Environment specialization
Different versions of the application are created to handle different operating
environments e.g. different types of communication equipment.
Functional specialization
Different versions of the application are created for customers with different
requirements.
Process specialization
Different versions of the application are created to support different business
processes.
Component selection, where you select the modules in a system that provide
the required functionality.
Workflow and rule definition, where you define workflows (how information is
processed, stage-by-stage) and validation rules that should apply to
information entered by users or generated by the system.
Parameter definition, where you specify the values of specific system
parameters that reflect the instance of the application that you are creating
As with other types of reuse, more rapid deployment of a reliable system may be possible.
It is possible to see what functionality is provided by the applications and so it is easier to
judge whether or not they are likely to be suitable.
Some development risks are avoided by using existing software. However, this approach
has its own risks, as I discuss below.
Businesses can focus on their core activity without having to devote a lot of resources to IT
systems development.
As operating platforms evolve, technology updates may be simplified as these are the
responsibility of the COTS product vendor rather than the customer.
Single product that provides the functionality Several heterogeneous system products are
required by a customer integrated to provide customized
functionality
Based around a generic solution and Flexible solutions may be developed for
standardized processes customer processes
Development focus is on system Development focus is on system integration
configuration
System vendor is responsible for System owner is responsible for
maintenance maintenance
System vendor provides the platform for the System owner provides the platform for the
system system