You are on page 1of 30

CHAPTER 7

Software Reuse
Outline
• Introduction
• Benefits of reuse
• Reuse models
• Factors influencing reuse
• Maturity model
• Reuse maturity model (RMM)
Introduction
• Formal software reuse was first introduced by Dough McIlroy.
• He envisioned an industry for the development of reusable components and the
industrialization of the production of application software from the off-the-shelf
components.
Introduction
The other example of early development of software reuse:

David Parnas • The concept of program families.

• The concept of domain and


Jim Neighbors
domain analysis.
Introduction
• Software reuse involves with two main activities:
1. Software development with reuse
2. Software development for reuse

• Intuitively, software reuse means using existing assets in the development of a


new system.
• Reusable assets can be both reusable artifacts and software knowledge.
Introduction
Architect
• There are four types of reusable artifacts : ural
reuse

Data Types reusable Design


reuse artifacts reuse

Program
reuse
Outline
Data reuse
• It involves a standardization of data formats

Architectural reuse
• Develop:
1. A set of generic design style
2. A set of functional elements and reuse those elements in new systems
Outline
Design reuse
• Deal with the reuse abstract design. A selected abstract design is custom
implemented to meet the application requirements.

Program reuse
• This means reusing executable code.
• For example, one may reuse a pattern matching system, that was developed as
part of a text processing tool, in a database system.
Outline
• The reusability property of a software asset indicates the degree to which the
asset can be reused in another project.
• For a software component to be reusable, it needs to exhibit the following
properties that directly encourage its use in similar situations.

Environmental
High cohesion Low coupling Adaptability
independence

Understandability Reliability Portability


Benefits of Reuse
• The most obvious advantage of reuse is economic benefit.
• Projects become more cost-effective if some existing assets are reused. Other
tangible benefits of reuse are as follows :

Increased Reliability
Reduced Process Risk
Increase Productivity
Compliance With Standards
Accelerated Development
Improve Maintainability
Less Maintenance Effort And Time
Benefits of reuse
1. Increased Reliability
Reusable components tend to reveal more failures because of the extra efforts put
in their design and their extensive usage.

2. Reduced Process Risk


Reusing components can reduce risks inherent in software projects, because a
working , presumed fault-free component is being reused, thereby reducing much
uncertainty.
Benefits of reuse
3. Increase productivity
Software engineers become more productive because their activities, namely,
specification, design, implementation, and testing consume less time and effort.
A reuse library stores reuse assets and provides an interface to search the
repository.

4. Compliance with standards


Reusing code in a software systems being developed can improve its compliance
with standards, thereby raising its quality
Benefits of reuse
5. Accelerated development
Software development time can be reduced by reusing assets.

6. Improved maintainability
Reusability components generally posses some desired characteristics : modularity,
compliance with standards, low coupling and high cohesion, and consistent
programming style.
Not surprisingly, these characteristics are much sought in maintainable programs.
Therefore, any attempt to raise the reusability of an asset will contribute to better
maintenance.
Benefits of reuse
7. Less maintenance effort and time
Reusable components are easy to understand and change during a software
modification. A significant benefit is obtained while executing perfective
maintenance for two reasons :
i. New components needed during perfective maintenance can be obtained from
reuse libraries.
ii. Almost 50% of maintenance cost is attributed to perfective maintenance.
Reuse Models
• Development of assets with the potential to be reused requires additional capital
investment.
• The organization can select one or more reuse models that best meet their
business objectives , engineering realities, and management styles.
• Reuse models are classified as proactive, reactive, and extractive.
Reuse Models
Proactive Approaches
• The system is designed and implemented for all conceivable variations; this
includes design of reusable assets.
• A proactive approach is to product lines what the Waterfall model is to
conventional software.
• This approach might be adopted by organizations that can accurately estimate the
long-term requirements for their product line .
• However this approach faces an investment risk if the future product requirements
are not aligned with the projected requirements.
Reuse Models
Reactive approaches
• In this approach, while developing products, reusable assets are developed if a
reuse opportunity arises.
• This approach works if
i. it is difficult to perform long-term predictions of requirements for product
variations
ii. an organizations needs to maintain an aggressive production schedule with not
much resources to develop reusable assets.
Reuse Models
Extractive approaches
• The extractive approaches fall in between the proactive approaches and the
reactive approaches.
• To make a domain engineering’s initial baseline, an extractive approach reuses
some operational software products.
• Therefore, this approaches applies to organizations that have accumulated both
artifacts and experiences in a domain, and want to rapidly move from traditional
to domain engineering.
Factor Influencing Reuse
Four major factors for systematic software reuse:

Managerial Legal

Economic Technical
Factor Influencing Reuse
Managerial
• Systematic reuse requires upper management support, because :
i. It may need years of investment before it pays off.
ii. It involves changes in organization funding and management structure that can
only be implemented with executive management support.

• The management activities that directly support a reuse program are creating and
managing incentives, educating the personnel, and effecting a change in culture.
Factor Influencing Reuse
Legal
• This factor is linked with cultural, social, and political factors, and it presents very
difficult problems.
• Potential problems include proprietary and copyright issues, liabilities and
responsibilities of reusable software, and contractual requirements involving
reuse.
Factor Influencing Reuse
Economic
• Software reuse will succeed only if it provides economic benefits.
• A study by Favaro found that some artifacts need to be reused more than 13 times
to recoup the extra cost of developing reusable components.
Reuse Models
Technical
• This factor has received much attention from the researchers actively engaged in
library development, object-oriented development paradigm and domain
engineering.
• A reuse library stores reusable assets and provides an interface to search the
repository.
• One can collect library assets in a number of ways :
i. Reengineer the existing system components
ii. Design and build new assets
iii. Purchase assets from other sources
Reuse Models
Technical
• Next, those reusable components are put through a certification process,
including testing and verification , to assure that the components have the desired
attributes.
• Finally, the components are put into various categories for effective searching.
Maturity Model
• The Reuse Maturity Model is a structured framework used to evaluate an
organization's level of maturity in adopting and leveraging software reuse
practices.
• It typically consists of different levels or stages that reflect the organization's
progress in establishing and optimizing processes related to software component
reuse.
• A reuse maturity models (RMM) is an aid for performing planning and self-
assessment to improve an organization’s capability to reuse existing software.
• The reuse maturity models help the organization’s understand their existing and
future goals for reuse activities.
• In other words, such a model can be used in planning systematic reuse.
Reuse Models
Reuse maturity model
• Reuse Maturity Model was presented by Koltun and Hudson in year 1991.
• The model provides a concise form of obtaining information on reuse practices in
organizations.
• The models comprises 5 levels and 10 dimensions of reuse maturity as shown in
the material attached in e learning.
• The columns of the table indicate the different levels of reuse maturity.
• Maturity improves on a scale from 1 to 5, where level 1 corresponds to
Initial/Chaotic state and level 5 corresponds to the Ingrained state.
Reuse Models
Key Characteristics:
Levels or Stages:
The model typically consists of multiple maturity levels or stages. Each level
represents a distinct phase of the organization's journey toward achieving effective
software reuse.

Key Criteria:
Criteria for assessing maturity may include the establishment of a reuse culture, the
development of reusable components, the adoption of reuse processes, and the
integration of reuse practices into the overall software development lifecycle.
Reuse Models
Key Characteristics:
Best Practices:
The model often incorporates best practices associated with software reuse, such as
the identification of reusable assets, documentation of reusable components, and
the creation of a repository for storing and managing reusable elements.
Continuous Improvement:
A key aspect of maturity models is the emphasis on continuous improvement.
Organizations are encouraged to move from lower to higher maturity levels by
enhancing their reuse processes and capabilities.
Reuse Models
Key Characteristics:
Benefits:
The Reuse Maturity Model aims to guide organizations in realizing the benefits of
software reuse, including improved development efficiency, reduced time-to-
market, and increased software quality using proven and tested components.
Case Study: Reuse Model Approaches in
Software Development
You are part of a software development team in a growing tech company. The
organization is undergoing a strategic shift towards a more systematic
approach to software development, with a focus on maximizing the reuse of
software assets. As a team lead, you are tasked with deciding which approach
from the Reuse Model will be most effective for a specific project. The project
involves developing a suite of applications for a dynamic business environment
where requirements may evolve rapidly.

• Discuss the three approaches in the Reuse Model - Proactive, Reactive, and
Extractive. Considering the characteristics and potential challenges associated
with each approach, analyze the unique requirements and constraints of the
current project. Based on your analysis, recommend the most suitable approach
for the project, and provide a rationale for your choice.

You might also like