Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 9

BASIC CONCEPTS

OF
SOFTWARE
REENGINEERING
PREVIOUS LECTURE
Change impact analysis
Traceability links
Dependency analysis
Ripple effect analysis
Change propagation
REFACTORING
Refactoring means performing changes to the structure of software to make it
easier to comprehend and cheaper to make subsequent changes without
changing the “observable behavior” of the system
Refactoring is achieved through removal of duplicate code, simplification of
code, and moving code to a different class
Without continual refactoring, the internal structure of software will
eventually deform beyond comprehension, due to periodic maintenance
Therefore, regular refactoring helps the system to retain its basic structure
PROGRAM COMPREHENSION
The purpose of program comprehension is to understand an existing software system
for planning, designing, coding, and testing changes
program comprehension accounts for 50% of the total effort expended throughout
the life cycle of a software system
good understanding of the software is key to raising its quality by means of
maintenance at a lower cost
program comprehension involves building mental models of an underlying system
at different levels of abstractions
�varying from low-level models of the code to very high-level models of the underlying application
SOFTWARE REUSE
Software reuse means using existing software knowledge or artifacts during the
development of a new system
Reusable assets can include both artifacts and software knowledge. Note that reuse is
not constrained to source code fragments.
Data reuse
�This involves a standardization of data formats. Reusable functions imply a standard data interchange
format. Therefore, one of the critical precursors to full reusable software is that of reusable data.

Architectural reuse
�This consists of standardizing a set of design and programming conventions dealing with the logical
organization of software. The goal is to define a complete set of functional elements which will be
needed to create new systems from standard components.
SOFTWARE REUSE
Design reuse
�This deals with the reuse of abstract designs that do not include implementation details. These are
then implemented specifically to fit the application requirements

Program reuse
�This deals with reusing running code. The software units that are reused may be of different sizes.
The whole of software system may be reused by incorporating it without change into other system
DIFFERENCE BETWEEN SOFTWARE
MAINTENANCE AND DEVELOPMENT
A process for software development begins with the objective of designing and
implementing a system to deliver certain functional and nonfunctional requirements.
a maintenance task is scheduled in response to an event
�Reception of a change request from a customer
�Recognition of the needs to fix a set of bugs is considered another kind of event

�Intention-Based Classification of Software Maintenance


INTENTION-BASED CLASSIFICATION
OF SOFTWARE MAINTENANCE
Corrective maintenance
�The purpose of corrective maintenance is to correct failures: processing failures and
performance failures
Adaptive maintenance
�The purpose of adaptive maintenance is to enable the system to adapt to changes in its data
environment or processing environment
�(i) changing the system to support new hardware configuration
�(ii) converting the system from batch to online operation
�(iii) changing the system to be compatible with other applications
�an application software on a smartphone can be enhanced to support WiFi-based
communication in addition to its present Third Generation (3G) cellular communication
CLASSIFICATION OF
SOFTWARE MAINTENANCE
Perfective maintenance
�to make a variety of improvements, namely, user experience, processing efficiency, and maintainability
�the program outputs can be made more readable for better user Experience
�the program can be modified to make it faster, thereby increasing the processing efficiency
�the program can be restructured to improve its readability, thereby increasing its
maintainability

Preventive maintenance
�to prevent problems from occurring by modifying software products
�the program can be restructured to achieve good styles to make later program comprehension
easier
�The concept of “software rejuvenation” is a preventive maintenance measure to prevent, or at
least postpone, the occurrences of failures due to continuously running the software system

You might also like