You are on page 1of 9

BASIC CONCEPTS

OF
SOFTWARE
REENGINEERING
PREVIOUS LECTURE
Legacy Software
Software Maintenance and evolution
Laws of software evolution
Software Reengineering
IMPACT ANALYSIS
Traceability analysis
 high-level artifacts, such as requirements, design, code, and test cases related to the feature to be
changed, are identified
 A model of associations among artifacts, such that each artifact links to other artifacts, is constructed
 This helps in locating the corresponding portions of the design, code, and test cases that need to be
maintained.

Dependency analysis
 Attempts to assess the effects of a change on the semantic dependencies between program entities
 Dependency analysis is also known as source code analysis.
IMPACT ANALYSIS
Ripple effect analysis
 Ripple effect analysis emphasizes the tracing repercussions in source code
when the code is changed. It measures the impact of a change to a particular
module on the rest of the program
 Measurement of ripple effect can provide knowledge about the system as a
whole through its evolution
 (i) theamount of increase or decrease of its complexity since the previous version
 (ii) the levels of complexity of individual parts of a system in relation to other parts of the
system; and
 (iii) the effect that a new module has on the complexity of a system as a whole when it is
added.
IMPACT ANALYSIS
Change propagation
 activities ensure that a change made in one component is propagated
properly throughout the entire system
 reasons for failing to propagate changes throughout the development and
maintenance cycles of source code
 Misunderstanding
 Lack of experience
 Unexpected dependencies
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
In terms of concrete activities, 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

You might also like