You are on page 1of 48

Software Maintenance

UNIT VII
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.
Need for Maintenance

Software Maintenance must be performed in


order to:
1. Correct faults.

2. Improve the design.

3. Implement enhancements.

4. Interface with other systems.


Types of Software Maintenance

1. Corrective maintenance

2. Adaptive maintenance

3. Perfective maintenance

4. Preventive maintenance:
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


updates 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.
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.
Cost of Maintenance

 Reports suggest that the cost of maintenance is high. A study on

estimating software maintenance found that the cost of

maintenance is as high as 67% of the cost of entire software

process cycle.

 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, such as:


Cost of Maintenance
Real-world factors affecting Maintenance Cost

 The standard age of any software is considered up to 10


to 15 years.
 Older softwares, which were meant to work on slow
machines with less memory and storage capacity cannot
keep themselves challenging against newly coming
enhanced softwares on modern hardware.
 As technology advances, it becomes costly to maintain
old software.
Real-world factors affecting Maintenance Cost

 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.
Software-end factors affecting Maintenance Cost

 Structure of Software Program

 Programming Language

 Dependence on external environment

 Staff reliability and availability


Maintenance Activities

 IEEE provides a framework for sequential

maintenance process activities. It can be used in


iterative manner and can be extended so that
customized items and processes can be included.

 The activities go hand-in-hand with some of the phases


Maintenance Activities
Maintenance Activities

 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.
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.
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.
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.
Software Re-Engineering

 Software Re-Engineering is the examination and

alteration of a system to reconstitute it in a new form.

 It is a process of software development which is

done to improve the maintainability of a software

system.
Software Re-Engineering

 Software Re-engineering : Re-engineering is the


examination and alteration of a system to reconstitute
it in a new form.

 This process encompasses a combination of sub-


processes like reverse engineering, forward
engineering, reconstructing etc.
Objectives of Re-engineering

 To describe a cost-effective option for system


evolution.
 To describe the activities involved in the software
maintenance process.
 To distinguish between software and data re-
engineering and to explain the problems of data re-
engineering.
The need of software Re-engineering:

 Software re-engineering is an economical process for


software development and quality enhancement of the
product.

 This process enables us to identify the useless


consumption of deployed resources and the constraints
that are restricting the development process so that the
development process could be made easier and cost-
effective (time, financial, direct advantage, optimize
the code, indirect benefits, etc.) and maintainable.
The need of software Re-engineering

1. Boost up productivity: Software reengineering


increase productivity by optimizing the code and
database so that processing gets faster.

2. Processes in continuity: The functionality of


older software product can be still used while the
testing or development of software.
The need of software Re-engineering

3. Improvement opportunity:
 During process of software reengineering, not only
software qualities, features and functionality but
also skills are refined, new ideas hit in person’s
mind.

 This makes the developers mind accustomed to


capturing new opportunities so that more and more
new features can be developed.
The need of software Re-engineering

4. Reduction in risks:
 Instead of developing the software product from

scratch here developers develop the product from its


existing stage

 This enhance some specific features that are brought

in concern by stakeholders or its users.

 Its reduces the chances of faults.


The need of software Re-engineering

5. Saves time: Here the product is developed from


the existing stage rather than the beginning stage
so the it takes very less time in software
engineering.
6. Optimization: This process refines the system
features, functionalities and reduces the complexity
of the product by consistent optimization as
maximum as possible.
Steps involved in Re-engineering

 Inventory Analysis

 Document Reconstruction

 Reverse Engineering

 Code Reconstruction

 Data Reconstruction

 Forward Engineering
Steps involved in Re-engineering

Image Reference https://media.geeksforgeeks.org/wp-


content/uploads/20190429164218/Capture9999.jpg :
Step 1: Inventory Analysis

Every software organisation should have an inventory


of all the applications:

 It is like a spreadsheet model containing


information which gives the detailed idea of every
active application.
 According to business requirements it gets sorted.
 The resource can then be allocated to a candidate
application for re-engineering work.
Step 2: Document reconstructing:

 This explains how system operates or how to use

it.

 Documentation must be updated.

 If system is business-critical then must be fully re-

documented.
Step 3 : Reverse Engineering:

 Reverse engineering is a process of design

recovery.

 Reverse engineering tools extract data,

architectural and procedural design information

from an existing program.


Step 4 : Code Reconstructing:

 To accomplish code reconstructing, the source code


is analysed using a reconstructing tool.

 Violations of structured programming construct are


noted and code is then reconstructed.

 The resultant restructured code is reviewed and


tested to ensure that no anomalies have been
introduced.
Step 5 : Data Restructuring:

 Data restructuring begins with a reverse

engineering activity.

 Current data architecture is dissected, and the

necessary data models are defined.

 Data objects and attributes are identified, and

existing data structure are reviewed for quality.


Step 6 : Forward Engineering:

 Also known as : Renovation or Reclamation

 This recovers design information from existing

software and uses this information to alter or


reconstitute the existing system to improve its
overall quality.
Change Management

 Change Management in software development


refers to transition from an existing state of software
product to another improved state of product.
 It controls, supports and manages changes to
artifacts, such as code changes, process changes or
documentation changes.
 It mainly identifies, documents and authorizes
changes to a software application.
Change Management

 Change Management does not comes under any


phases of SDLC still it has a great importance in the
entire software development process.

 There are various types of change management tools


are used for various purposes like to adopt, control,
represent and effect the change required.

 For example Change management tool for Flow


Charting, Project Planning, Data collection etc.
Process of Change Management

 When any software application/product goes for any changes in an


IT environment, it undergoes a series of sequential processes as
follows:

1. Creating a request for change


2. Reviewing and assessing a request for change
3. Planning the change
4. Testing the change
5. Creating a change proposal
6. Implementing changes
7. Reviewing change performance
8. Closing the process
Importance of Change Management

 For improving performance

 For increasing engagement

 For enhancing innovation

 For including new technologies

 For implementing new requirements

 For reducing cost


Configuration Management

 When we develop software, the product (software)


undergoes many changes in their maintenance
phase; we need to handle these changes effectively.

 Several individuals (programs) works together to


achieve these common goals.
 This individual produces several work product (SC
Items) e.g., Intermediate version of modules or test
data used during debugging, parts of the final
product.
Configuration Management

 The elements that comprise all information


produced as a part of the software process are
collectively called a software configuration.
Need Configuration Management

 Multiple people are working on software which is


consistently updating.
 It may be a method where multiple version,
branches, authors are involved in a software project,
and the team is geographically distributed and works
concurrently.
 It changes in user requirements, and policy, budget,
schedules need to be accommodated.
 It is practical in controlling and managing the access to
various SCIs e.g., by preventing the two members of a
team for checking out the same component for
modification at the same time.

 It provides the tool to ensure that changes are being


properly implemented.

 It has the capability of describing and storing the various


constituent of software.
Maintenance tools and techniques.

 Software maintenance involves modifying the


existing software system and recording all the
modifications made to it.

 For this, various maintenance tools are used.

 One of the commonly used maintenance tool is text


editor.
Maintenance tools and techniques.

 This tool creates a copy of the documentation or the


code.
 The key feature of this tool is that it provides a
medium to roll back (when required) from the
current version of a file to the previous one.

 Several other tools used in software maintenance are


as follows.
Maintenance tools and techniques.
Maintenance tools and techniques.
References

 https://www.tutorialspoint.com/software_engineeri
ng/software_maintenance_overview.html
 https://www.geeksforgeeks.org/software-
engineering-re-engineering/
 https://www.javatpoint.com/software-
configuration-management
 https://ecomputernotes.com/software-
engineering/tools-for-software-maintenance

You might also like