Professional Documents
Culture Documents
Unit 5
Unit 5
Software Maintenance
1. Unit Outcomes
2. Software Maintenance
3. Software Maintenance Process
4. Maintenance Models
5. Reverse Engineering
6. Softvware Re-engincering
7. Software Configuration Management
8. Agile Method
9. Extreme programming
10. Rapid application development
11. Clean Room Software Development
12. Component-Based Software Development
13. Self-Assessment Questions and Activities
14. Multiple-Choice Questions
15. Keys to Multiple-Choice Questions
16. Summary of the Unit
After the successful completion of this unit, the student will be able to:
1 Understand the software as an evolutionary entity and recognize the need for maintenance.
Classify maintenance and estimate the cost of maintenance.
3 Analyze the features of software re-engincering and reverse engincering.
4 Understand rapid application development.
Discuss agile methods.
Corrective Maintenance: Corrective maintenance is related to correcting the faults and errors of a
software product. After the system is put in use, the customers give reports of the bugs if any. These
errors may be in the requirements, design, or coding of a system.
2. Adaptive Maintenance: Adaptive maintenance is used when the software environment changes. For
example, a customer may use a new operating system, or a new web or mobile app-based platform to
run the product. Adaptive maintenance is necessary when the hardware is included in the existing
system.
3 Perfective Maintenance: Perfective maintenance is required when the requirements and the features
of the system are advanced. The user may realize some new requirements or features that evolve the
developed software. Removing unwanted features and enhancing the system with the user's expericnce
are the goals of this type of maintenance.
4. Preventive Maintenance: Perfective maintenance is required when the requirements and the features
of the system are advanced. The user may realize some new requirements or features that evolve the
developed software. Removing unwanted features and enhancing the system with the user's experience
are the goals of this type of maintenance.
After creating a complex software system, software developers constantly need to be on the lookout to
correct and improve their software to remain competitive and relevant. New changes or modifications can
be included using the maintenance process.
Test
Release new
modified
version
software
Figure 7.1 Maintenance Process
The maintenance process is called Software Maintenance Life Cycle (SMLC). There are seven phases in
SMLC as given below. These phases are executed iteratively, and the phase can be used for developing the
custom product.
1. ldentification Phase: In this phase, a request for modifying software is identified for further
processing. The maintenance activity is finalized using the system itself, via error messages or, by
users.
2. Analysis Phase: In this phase, the scope of the modification is determined, and the plan is prepared
for estimating resources, documentation, and storage information.
3. Design Phase: In this phase, new designs as per modified requirements are prepared. For cach new
design, test cases are prepared. The verification and validation process is followed after revising the
design.
4 Implementation Phase: In this phase, the new code is written as per the modified design. The new
features, configuration, and support for updates are given in this phase.
5. System Testing Phase: System testing is like regression testing. This testing is done for the new
modules to verify whether there are any bugs, errors, or defects.
6 Acceptance Testing Phase: A newly developed software system is reviewed by the user or a third
party. The focus of this step is to check whether all the features are as per the modified requirements.
7. Delivery Phase: In this phase, the modified software is deployed at the user's workplace. This phase
includes guidelines and manuals for using the modified software. The final testing of the system is
done by the client after the system is delivered.
Software process maintenance is represented as an abstraction using various models as given below.
1) Maintenance Process Model 1: The first model is used when small changes are required in the
code and are documented. In this process model, a few team members collect the requirements,
analyze them, and formulate the strategy. The existing system is useful for modification and
debugging of errors. This is shown in Figure 7.2.
collect changes
in requirements
Analyze the
changes
Update Integrate
Document and Test
2) Maintenance Process Model 2: When the requiremnent changes considerably, the amount of
rework is more. The modification in the software is done by combining reverse and forward
engincering. This process is known as software re-engineering. The legacy products are reverse
engincered to get module specifications. The specifications are further used to generate the design.
The design is then explored to produce requirements and new requirements are added. Thus, a
combination of processes such as software reverse and forward engincering, reconstructing, etc. is
known as software reengineering. Different models are given below.
Quick-Fix Models: In this model, a quick method is used to fix the problem after identifying the
defect. This work is low-cost, and the modification does not have a large influence on the overall
software system structure.
Boehm's Model: In this model, the maintenance process is performed in a closed loop based on
the cconomic model and risks.
Iterative Development Model: In this model, the maintenance process is iterative. The existing
system is analyzed, and changes are included to form a new system. The system changes are
documented from the beginning, a good design is maintained, and the complexity is reduced.
Re-use oriented Model: In this model, existing componcnts are re-used. These parts are modificd
or enhanced based on the new requirements. Modified parts are combincd to form a new system.
Computer-aided software engincering (CASE) tools are commonly used in re-use-oriented models
for maintenance.
7.5. Reverse Engineering
The maintenance of the software can be efficiently achieved by a good understanding of a system. A well
documented legacy system can be casily maintaincd. A legacy system is outdated computing software
and/or hardware that is still in use. The system still meets the needs it was originally designed for but doesn't
allow for growth. For example, Windows 7 officially became a legacy operating system in January 2020
after Microsoft stopped security updates and support for it. Common Business-Oriented Language or
COBOL is still used 55 years after its development. Several legacy systems are not well structured or there
may be wear and tear in the software due to continuous maintenance efforts or lack of documentation.
Reverse engineering helps in such cases with the maintenance of the software. A reverse engineering
process can be used in such situations. Reversc engincering is the process of recovering the design,
requirement specification, and functions of a product from the analysis of code. The Reverse Engineering
process is presented as shown in Figure 7.3.
Requirement
Specification
Design
Mocdule
Sp ation
Code
In reverse engineering, the code is improved for better readability, understanding, and structure.
In many legacy software, the programs are not in proper structure. With the help of reverse
cngincering, identifiers, and data structures, are given meaningful names.
In the reverse enginecering process, the functionality is not changed.
Complex statements are simplified, and nested loops are replaced with multiple condition
statements. These changes are known as cosmetic changes.
In the reverse engincering process, the code is analyzed completely. The different modules and
their interface are understood.
The design can be cxtracted using tools such as structure charts, DFDs, and control flow diagrams.
In the last step, the SRS is written based on the design.
Requirement Requirement
Specification Specification Forward
Reverse Engineering
Engineering
Design Design
Module
Module pecification
|Specification
Code Code
If there is a major change in the hardware and technology in which the software product is working or the
functionality of the product is drastically changed then the software configuration is revised. For example,
the new version of Android updates for supporting new features, Version Windows 95, Windows 2000,
Windows XP, Windows 10, etc. is the version of theWindows Operating system. The software also requires
revision. If there are minor bugs or errors, then the software is revised in its configuration. For example,
revision in the typesetting features in MS Office. This release, version, and revision lead to software
configuration management.
In the carly 90s, software development was done using systematic planning including project planning,
quality control, requirement analysis, design, usage of CASE tools, etc. This software process was suitable
for large and complex projects handled by team members working across the country in different teams. In
this plan-driven approach, there was an overhead of managing many people, excess documentation, and
delays in planning and designing. This type of approach was not suitable for small and medium-sized
projects, because more time was spent on how the software development process rather than on actual
design and development. The plan-driven approach was also unsuitable for the system with frequently
changing requirements. The different drawbacks of the heavyweight plan-driven development approach
must lead to the development of agile methods
Agile methods focus more on software than design, planning, and documentation. Agile methods are based
on an incremental development approach and are suitable for developing projccts with rapidly changing
requirements. Important features of agile methods are as follows:
DQuick delivery of softwarc products.
2)Long-term software activities and documentation are avoided.
3)Individuals interact over software tools and processes.
4)Focus is on the development of software than documentation.
5)Clients are involved in the process.
6)Responses are given to the changes than following a plan.
Agile methods are used in small or medium-sized teams, but it is difficult to expand for large systems.
Software systems need safety and security features. Agile methods require a lot of modification. For
critical systems like chemical plants, security alarms, medical applications, etc. agile methods nced to be
scaled. In practice, some of the difficulties faced in agile systems are:
1. Client's participation in the software process may not be possible due to the client's interest and
participation. Clients may not be able to spare time with the development team.
2. Some of the team members may not be able to do intense work in agile systems. Due to more pressure,
they may not be able to interact with other team members.
3. Ifthe priorities of the work to be done change frequently, then there may bea delay in the software
process.
4. Simplicity requires extra work. Every team member may not be able to simplify the system.
In practice, agile and plan-driven development methods can be used in a hybrid approach.
7.9. Extreme Programming
Extreme programming (XP) is the commonly known agile development method. It was namcd extreme
because the activiics in the agile methods are pushed to an extreme level. The different phases of XP are
shown in Figure 7.2.
Collect User
Divide scenarios into Plan product
scenarios for a
number of tasks release
product release
Construction: In this step. the prototype is refined using automated powerful tools to get a final product.
is also checked in this
Cutover: The interconnection of different modules is verified. User acceptance
step.
Gather
Requirements
Plan
Requirements
Analyze
Design
Code
Team
Test
Team 2
Integrate
Modules
Test the
Sofrware
Product
Figure 7.6: Rapid Application Development
7.11. Clean Room Software Development
Cleanroom software development is a software development method that uses the formal method to
overcome defects in the software. The word 'Cleanroom' is used in semiconductor fabrication units where
the environment is ultraclean. This approach aims to develop zero-defect software. This method is different
from traditional software development. Cleanroom software development leads to several benefits such as
improved quality, increased productivity, and improved software maintainability.
System
Specification using
Formal Method
Determine Prepare Verify Code)
Integrate
Software
Increments
Structured >using Formal Increments
Program Method
Identify
Operations Design Test
Statistical Inegrated
Test System
A clean room software development is presented in Figure 7.7. The Cleanroom approach to software
development is bascd on five key strategies:
1. Formal specification: The software under development is specified using a formal method. One
commonly uscd method is a state-transition model that shows system responses to stimuli. The
stimulitrigger the changes in the states as per the spccification.
2. Incremental development: The cleanroom process is used for the parts of the software. The software
is considered a set of increments and cach increment is developed separately. Each increment is
validated to check whether it is meeting the customer's requirements.
3. Structured programming: The requirement specification is implemented using a limited number of
abstract methods. The requirements are converted into a set of steps so that there is a correct
transformation into a program code.
4. Static verification: Code inspection and review methods are used for static verification. Here the
software testing methods are not used.
5. Statistical testing of the system: The testing of the integrated software increments is done
statistically. This will help to determine the reliability of the software.
Coding Project
Support Management Prototyping|
Consistent Configuration
Analysis Management
Central
Document
Repository Structured
Generation diagram
facilities
2. Toolset
3. Object management system (OMS)
Users can learn how to access the different tools with the help of the interface. This helps in reducing the
overhead of learning efforts for a CASE tool. OMS is used to map the different entities of software such as
requirements, design, code, text data, and project plans to the storage management system or repository.
E.g., in the relational database management system, the relationships between cntities, attribute declaration,
initialization, types of relationships, ete. can be mapped using the OMS.
The repository consists of di fferent CASE tools used in the requirements, design, coding, and testing phases
of software. CASE Tools Classification is shown in Figure 7.9.
Planning
Design Integrated
CASE
Implementation
Lower CASE
Testing
Maintenance