Software Maintenance: Version 2 CSE IIT, Kharagpur
Software Maintenance: Version 2 CSE IIT, Kharagpur
14
Software Maintenance
After the cosmetic changes have been carried out on a legacy software, the
process of extracting the code, design, and the requirements specification can
begin. These activities are schematically shown in fig. 14.2. In order to extract
the design, a full understanding of the code is needed. Some automatic tools can
be used to derive the data flow and control flow diagram from the code. The
structure chart (module invocation sequence and data interchange among
modules) should also be extracted. The SRS document can be written once the
full code has been thoroughly understood and the design extracted.
When the changes needed to a software product are minor and straightforward,
the code can be directly modified and the changes appropriately reflected in all
The second process model for software maintenance is preferred for projects
where the amount of rework required is significant. This approach can be
represented by a reverse engineering cycle followed by a forward engineering
cycle. Such an approach is also known as software reengineering. This process
model is depicted in fig. 14.4. The reverse engineering cycle is required for
legacy products. During the reverse engineering, the old code is analyzed
(abstracted) to extract the module specifications. The module specifications are
then analyzed to produce the design. The design is analyzed (abstracted) to
produce the original requirements specification. The change requests are then
applied to this requirements specification to arrive at the new requirements
specification. At the design, module specification, and coding a substantial reuse
is made from the reverse engineered products. An important advantage of this
approach is that it produces a more structured design compared to what the
original product had, produces good documentation, and very often results in
increased efficiency. The efficiency improvements are brought about by a more
efficient design. However, this approach is more costly than the first approach.
An empirical study indicates that process 1 is preferable when the amount of
Software reengineering
Software reengineering is a combination of two consecutive processes i.e.
software reverse engineering and software forward engineering as shown in the
fig. 14.4.
KLOC + KLOC
ACT = added deleted
KLOC
total
2. What are the different types of maintenance that a software product might
need? Why are these maintenance required?
6. What are the different factors upon which software maintenance activities
depend?
□ correct errors
□ enhance features
□ port to new platforms
□ overcome wear and tear caused by use
□ correct errors
□ enhance features
□ port to new platforms
□ overcome wear and tear caused by use
4. Legacy software products having poor design and code structure are
maintained by performing which task?
□ about 90%
□ about 70%
□ about 60%
□ about 40%
5. Legacy products are those products which have been developed long
time back.