0% found this document useful (0 votes)
3 views

Lecture 1

Uploaded by

Armaan Armaan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Lecture 1

Uploaded by

Armaan Armaan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 22

University Institute of Engineering

DEPARTMENT OF COMPUTER SCIENCE


& ENGINEERING
Bachelor of Engineering (Computer Science & Engineering)
Subject Name: Software Engineering
Subject Code: 22CST-313
Prepared by:
Er. Puneet Kaur(E6913)

Software Maintenance and Reuse DISCOVER . LEARN . EMPOWER


1
Chapter-9
Software Maintenance and
Reuse
• Software Maintenance

• Types of Maintenance

• Software Maintenance Models

2
Software Maintenance

• Software Maintenance is the process of modifying a software product


after it has been delivered to the customer.

• The main purpose of software maintenance is to modify and update


software application after delivery to correct faults and to improve
performance.

3
Need for Maintenance
• Software Maintenance must be performed in order to:
• Correct faults.
• Improve the design.
• Implement enhancements.
• Interface with other systems.
• Accommodate programs so that different hardware, software, system
features, and telecommunications facilities can be used.
• Migrate legacy software.
• Retire software.
4
Why are modifications required?
• There are number of reasons, why modifications are required, some of them are
briefly mentioned below:
• Market Conditions - Policies, which changes over the time, such as taxation and
newly introduced constraints like, how to maintain bookkeeping, may trigger need for
modification.
• Client Requirements - Over the time, customer may ask for new features or functions
in the software.
• Host Modifications - If any of the hardware and/or platform (such as operating
system) of the target host changes, software changes are needed to keep adaptability.
• Organization Changes - If there is any business level change at client end, such as
reduction of organization strength, acquiring another company, organization
venturing into new business, need to modify in the original software may arise.

5
Categories of Software
Maintenance
• Maintenance can be divided into the following:
• Corrective maintenance:
Corrective maintenance of a software product may be essential either
to rectify some bugs observed while the system is in use, or to
enhance the performance of the system.
• Adaptive maintenance:
This includes modifications and updations when the customers need
the product to run on new platforms, on new operating systems, or
when they need the product to interface with new hardware and
software.

6
Categories of Software
Maintenance
• Perfective maintenance:
A software product needs maintenance to support the new features
that the users want or to change different types of functionalities of
the system according to the customer demands.
• Preventive maintenance:
This type of maintenance includes modifications and updations to
prevent future problems of the software. It goals to attend problems,
which are not significant at this moment but may cause serious issues
in future.

7
Cost of Maintenance

• On an average, the cost of software maintenance is more than 50% of


all SDLC phases. There are various factors, which trigger maintenance
cost go high.

8
Real-world factors affecting
Maintenance Cost
• The standard age of any software is considered up to 10 to 15 years.
• Older software's, which were meant to work on slow machines with less
memory and storage capacity cannot keep themselves challenging against
newly coming enhanced software on modern hardware.
• As technology advances, it becomes costly to maintain old software.
• Most maintenance engineers are newbie and use trial and error method to
rectify problem.
• Often, changes made can easily hurt the original structure of the software,
making it hard for any subsequent changes.
• Changes are often left undocumented which may cause more conflicts in
future.
9
Software-end factors affecting Maintenance Cost

• Structure of Software Program


• Programming Language
• Dependence on external environment
• Staff reliability and availability

10
Maintenance Activities

11
Maintenance Activities

• These activities go hand-in-hand with each of the following phase:


• Identification & Tracing - It involves activities pertaining to
identification of requirement of modification or maintenance. It is
generated by user or system may itself report via logs or error
messages. Here, the maintenance type is classified also.
• Analysis - The modification is analyzed for its impact on the system
including safety and security implications. If probable impact is severe,
alternative solution is looked for. A set of required modifications is then
materialized into requirement specifications. The cost of
modification/maintenance is analyzed and estimation is concluded.

12
Maintenance Activities

• Design - New modules, which need to be replaced or modified, are


designed against requirement specifications set in the previous stage.
Test cases are created for validation and verification.
• Implementation - The new modules are coded with the help of
structured design created in the design step. Every programmer is
expected to do unit testing in parallel.

13
Maintenance Activities

• System Testing - Integration testing is done among newly created


modules. Integration testing is also carried out between new modules
and the system. Finally the system is tested as a whole, following
regressive testing procedures.
• Acceptance Testing - After testing the system internally, it is tested for
acceptance with the help of users. If at this state, user complaints
some issues they are addressed or noted to address in next iteration.

14
Maintenance Activities

• Delivery - After acceptance test, the system is deployed all over the
organization either by small update package or fresh installation of
the system. The final testing takes place at client end after the
software is delivered.
• Training facility is provided if required, in addition to the hard copy of
user manual.
• Maintenance management - Configuration management is an
essential part of system maintenance. It is aided with version control
tools to control versions, semi-version or patch management.

15
Software Maintenance Process
Models
• The activities involved in a software maintenance project are not unique and
depend upon several factors like extent of modification required, conditions of
existing product, resource availability to maintenance team, expected project risks
etc.
• The following maintenance models have been proposed:
• Quick-fix Model
• It is an adhoc approach to maintain the software. It is a fire fighting approach,
waiting for the problem to occur and then trying to fix it as quickly as possible.

16
Software Maintenance Process
Models
• Iterative Enhancement Model
• The iterative enhancement model, which was originally proposed as a process
model, can be easily adapted for maintaining a software system. It considers that
the changes made to the software system are iterative in nature.
• It involves following stages:
a) Requirement analysis
• The requirements for change are analyzed to begin the software maintenance
process
b) Classification of requested modifications
• After analysis, the requested modifications are classified according to the
complexity, technical issues, and identification of modules that will be affected.
17
Software Maintenance Process
Models
c)Implementation of requested modifications
• At the end, the software is modified to implement the
modification request. At each stage, the documentation is updated
to accommodate changes of requirements analysis, design, coding
and testing phases. It is essential to have a complete
documentation before implementation of iterative enhancement
model begins.

18
Software Maintenance Process
Models
• Reuse-oriented Model
• The reuse-oriented model assumes that the existing program components can be
reused to perform maintenance. This approach can be represented by a reverse
engineering cycle followed by a forward engineering cycle. It is also known as
software reengineering.
• The old code is analyzed 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 generate
new requirements specification. Then forward engineering is applied to finally
apply the changes to the code.
19
Software Maintenance Process
Models

20
References

• https://www.javatpoint.com/software-engineering-software-mainten
ance
• https://www.tutorialspoint.com/software_engineering/software_mai
ntenance_overview.htm
• https://www.geeksforgeeks.org/software-engineering-software-maint
enance/

21
THANK YOU

22

You might also like