SlideShare a Scribd company logo
2
Most read
4
Most read
6
Most read
Software Engineering Tutorial
91
Software maintenance is widely accepted part of SDLC now a days. It stands for
all the modifications and updations done after the delivery of software product.
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.
Types of maintenance
In a software lifetime, type of maintenance may vary based on its nature. It may
be just a routine maintenance tasks as some bug discovered by some user or it
may be a large event in itself based on maintenance size or nature. Following are
some types of maintenance based on their characteristics:
 Corrective Maintenance - This includes modifications and updations done
in order to correct or fix problems, which are either discovered by user or
concluded by user error reports.
 Adaptive Maintenance - This includes modifications and updations
applied to keep the software product up-to date and tuned to the ever
changing world of technology and business environment.
Software Maintenance Overview
11
Prepared By: Ghayour Abbas
Software Engineering Tutorial
88
 Perfective Maintenance - This includes modifications and updates done
in order to keep the software usable over long period of time. It includes
new features, new user requirements for refining the software and improve
its reliability and performance.
 Preventive Maintenance - This includes modifications and updations to
prevent future problems of the software. It aims 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:
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.
Software Engineering Tutorial
89
 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.
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.
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
Software Engineering Tutorial
90
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.
 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.
 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.
 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
When we need to update the software to keep it to the current market, without
impacting its functionality, it is called software re-engineering. It is a thorough
process where the design of software is changed and programs are re-written.
Software Engineering Tutorial
91
Legacy software cannot keep tuning with the latest technology available in the
market. As the hardware become obsolete, updating of software becomes a
headache. Even if software grows old with time, its functionality does not.
For example, initially Unix was developed in assembly language. When language
C came into existence, Unix was re-engineered in C, because working in assembly
language was difficult.
Other than this, sometimes programmers notice that few parts of software need
more maintenance than others and they also need re-engineering.
Re-Engineering Process
 Decide what to re-engineer. Is it whole software or a part of it?
 Perform Reverse Engineering, in order to obtain specifications of existing
software.
 Restructure Program if required. For example, changing function-
oriented programs into object-oriented programs.
 Re-structure data as required.
 Apply Forward engineering concepts in order to get re-engineered
software.
There are few important terms used in Software re-engineering
Software Engineering Tutorial
92
Reverse Engineering
It is a process to achieve system specification by thoroughly analyzing,
understanding the existing system. This process can be seen as reverse SDLC
model, i.e. we try to get higher abstraction level by analyzing lower abstraction
levels.
An existing system is previously implemented design, about which we know
nothing. Designers then do reverse engineering by looking at the code and try to
get the design. With design in hand, they try to conclude the specifications. Thus,
going in reverse from code to system specification.
Program Restructuring
It is a process to re-structure and re-construct the existing software. It is all about
re-arranging the source code, either in same programming language or from one
programming language to a different one. Restructuring can have either source
code-restructuring and data-restructuring or both.
Re-structuring does not impact the functionality of the software but enhance
reliability and maintainability. Program components, which cause errors very
frequently can be changed, or updated with re-structuring.
The dependability of software on obsolete hardware platform can be removed via
re-structuring.
Forward Engineering
Forward engineering is a process of obtaining desired software from the
specifications in hand which were brought down by means of reverse engineering.
It assumes that there was some software engineering already done in the past.
Forward engineering is same as software engineering process with only one
difference – it is carried out always after reverse engineering.
Software Engineering Tutorial
93
Component reusability
A component is a part of software program code, which executes an independent
task in the system. It can be a small module or sub-system itself.
Example
The login procedures used on the web can be considered as components, printing
system in software can be seen as a component of the software.
Components have high cohesion of functionality and lower rate of coupling, i.e.
they work independently and can perform tasks without depending on other
modules.
In OOP, the objects are designed are very specific to their concern and have fewer
chances to be used in some other software.
In modular programming, the modules are coded to perform specific tasks which
can be used across number of other software programs.
There is a whole new vertical, which is based on re-use of software component,
and is known as Component Based Software Engineering (CBSE).
Re-use can be done at various levels
 Application level - Where an entire application is used as sub-system of
new software.
 Component level - Where sub-system of an application is used.
 Modules level - Where functional modules are re-used.
Software components provide interfaces, which can be used to establish
communication among different components.
Reuse Process
Two kinds of method that can be adopted: either by keeping requirements same
and adjusting components or by keeping components same and modifying
requirements.
Software Engineering Tutorial
94
 Requirement Specification - The functional and non-functional
requirements are specified, which a software product must comply to, with
the help of existing system, user input or both.
 Design - This is also a standard SDLC process step, where requirements
are defined in terms of software parlance. Basic architecture of system as
a whole and its sub-systems are created.
 Specify Components - By studying the software design, the designers
segregate the entire system into smaller components or sub-systems. One
complete software design turns into a collection of a huge set of
components working together.
 Search Suitable Components - The software component repository is
referred by designers to search for the matching component, on the basis
of functionality and intended software requirements..
 Incorporate Components - All matched components are packed together
to shape them as complete software.

More Related Content

PPTX
Why should you learn Selenium?
PDF
Types of operating system
PDF
Software Engineering CS-504 Handouts
PPTX
Introduction to Software Engineering
PDF
The Importance of System Software
DOCX
Software engineering
PPTX
Software engineering tutorial
Why should you learn Selenium?
Types of operating system
Software Engineering CS-504 Handouts
Introduction to Software Engineering
The Importance of System Software
Software engineering
Software engineering tutorial

What's hot (20)

PPT
962 sech04
PPT
Lecture 1-intro-to-software-development
PDF
software engineering ch-1
PPTX
Software (Application and System Software)
PPT
Software Prototyping
PPTX
Greate Introduction to Software Engineering @ Track IT Academy
PPT
Lecture 1 introduction to software engineering 1
PPTX
Software reliability tools and common software errors
PDF
What is software development life cycle
DOCX
Software Engineering Assignment
DOCX
Swe notes
PDF
The Importance of Software Development
PDF
SWE-401 - 2. Software Development life cycle (SDLC)
PPTX
Software process
PPT
Software engineering
PPT
Fault tolerance
PPT
Introduction to Software Engineering
PPT
Pressman ch-1-software
PPT
Slides chapter 1
962 sech04
Lecture 1-intro-to-software-development
software engineering ch-1
Software (Application and System Software)
Software Prototyping
Greate Introduction to Software Engineering @ Track IT Academy
Lecture 1 introduction to software engineering 1
Software reliability tools and common software errors
What is software development life cycle
Software Engineering Assignment
Swe notes
The Importance of Software Development
SWE-401 - 2. Software Development life cycle (SDLC)
Software process
Software engineering
Fault tolerance
Introduction to Software Engineering
Pressman ch-1-software
Slides chapter 1
Ad

Similar to SWE-401 - 11. Software maintenance overview (20)

PPTX
Software maintenance real world maintenance cost
PPTX
lecture 7ppt.pptx knowledge engineering.
PPT
Software Maintenance with detailed description
PPTX
SE - Lecture 13 - Software Evolution and Tech Trends.pptx
PPTX
Software maintenance Unit5
PPTX
Unit5.pptx
PPTX
Software maintaince.pptx
PDF
CH. 4.pdf
PPTX
Week 1 SREE.pptx face 1 Software re engineering ucp
PPTX
Software engineering concept reengineeri
PDF
Software maintenance and Re-Engineering concepts
PPTX
Software evolution and maintenance basic concepts and preliminaries
DOCX
Software maintenance service strategies
PPT
Software Engineering (Requirements Engineering & Software Maintenance)
DOCX
Software maintenance
PPTX
5 chap - MAINTENANCE
PPT
Software Maintenance.ppt in Software Engineering
PDF
Lecture 12 Software Engineering Evolution
PPT
Slides chapter 1
PPTX
Introduction to Software Engineering
Software maintenance real world maintenance cost
lecture 7ppt.pptx knowledge engineering.
Software Maintenance with detailed description
SE - Lecture 13 - Software Evolution and Tech Trends.pptx
Software maintenance Unit5
Unit5.pptx
Software maintaince.pptx
CH. 4.pdf
Week 1 SREE.pptx face 1 Software re engineering ucp
Software engineering concept reengineeri
Software maintenance and Re-Engineering concepts
Software evolution and maintenance basic concepts and preliminaries
Software maintenance service strategies
Software Engineering (Requirements Engineering & Software Maintenance)
Software maintenance
5 chap - MAINTENANCE
Software Maintenance.ppt in Software Engineering
Lecture 12 Software Engineering Evolution
Slides chapter 1
Introduction to Software Engineering
Ad

More from ghayour abbas (20)

PDF
TCP/IP & UDP
PDF
Web Development 5
PDF
Web Development 4
PDF
Web Development 4 (HTML & CSS)
PDF
Web Development 3 (HTML & CSS)
PDF
Lab Manual CSI-321
PDF
Web Development 2 (HTML & CSS)
PDF
Web Development 1 (HTML & CSS)
PDF
CSI-503 - 13. Scheduler and Dispatcher
PDF
CSI-503 - 11.Distributed Operating System
PDF
SWE-401 - 10. Software Testing Overview
PDF
SWE-401 - 9. Software Implementation
PDF
SWE-401 - 8. Software User Interface Design
PDF
SWE-401 - 7. Software Design Strategies
PDF
SWE-401 - 5. Software Design Basics
PDF
SWE-401 - 6. Software Analysis and Design Tools
PDF
SWE-401 - 4. Software Requirement Specifications
PDF
SWE-401 - 3. Software Project Management
PDF
CSI-503 - 6. Memory Management
PDF
CSI-503 - 4. Process synchronization
TCP/IP & UDP
Web Development 5
Web Development 4
Web Development 4 (HTML & CSS)
Web Development 3 (HTML & CSS)
Lab Manual CSI-321
Web Development 2 (HTML & CSS)
Web Development 1 (HTML & CSS)
CSI-503 - 13. Scheduler and Dispatcher
CSI-503 - 11.Distributed Operating System
SWE-401 - 10. Software Testing Overview
SWE-401 - 9. Software Implementation
SWE-401 - 8. Software User Interface Design
SWE-401 - 7. Software Design Strategies
SWE-401 - 5. Software Design Basics
SWE-401 - 6. Software Analysis and Design Tools
SWE-401 - 4. Software Requirement Specifications
SWE-401 - 3. Software Project Management
CSI-503 - 6. Memory Management
CSI-503 - 4. Process synchronization

Recently uploaded (20)

PDF
1_English_Language_Set_2.pdf probationary
PDF
Classroom Observation Tools for Teachers
PPTX
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
LNK 2025 (2).pdf MWEHEHEHEHEHEHEHEHEHEHE
PPTX
Radiologic_Anatomy_of_the_Brachial_plexus [final].pptx
PDF
Paper A Mock Exam 9_ Attempt review.pdf.
PDF
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
PDF
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PDF
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
PPTX
A powerpoint presentation on the Revised K-10 Science Shaping Paper
PPTX
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
PDF
What if we spent less time fighting change, and more time building what’s rig...
PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PPTX
UNIT III MENTAL HEALTH NURSING ASSESSMENT
1_English_Language_Set_2.pdf probationary
Classroom Observation Tools for Teachers
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
LNK 2025 (2).pdf MWEHEHEHEHEHEHEHEHEHEHE
Radiologic_Anatomy_of_the_Brachial_plexus [final].pptx
Paper A Mock Exam 9_ Attempt review.pdf.
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
SOIL: Factor, Horizon, Process, Classification, Degradation, Conservation
Chinmaya Tiranga quiz Grand Finale.pdf
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
Final Presentation General Medicine 03-08-2024.pptx
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
A powerpoint presentation on the Revised K-10 Science Shaping Paper
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
What if we spent less time fighting change, and more time building what’s rig...
202450812 BayCHI UCSC-SV 20250812 v17.pptx
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
UNIT III MENTAL HEALTH NURSING ASSESSMENT

SWE-401 - 11. Software maintenance overview

  • 1. Software Engineering Tutorial 91 Software maintenance is widely accepted part of SDLC now a days. It stands for all the modifications and updations done after the delivery of software product. 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. Types of maintenance In a software lifetime, type of maintenance may vary based on its nature. It may be just a routine maintenance tasks as some bug discovered by some user or it may be a large event in itself based on maintenance size or nature. Following are some types of maintenance based on their characteristics:  Corrective Maintenance - This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.  Adaptive Maintenance - This includes modifications and updations applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment. Software Maintenance Overview 11 Prepared By: Ghayour Abbas
  • 2. Software Engineering Tutorial 88  Perfective Maintenance - This includes modifications and updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.  Preventive Maintenance - This includes modifications and updations to prevent future problems of the software. It aims 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: 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.
  • 3. Software Engineering Tutorial 89  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. 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. 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
  • 4. Software Engineering Tutorial 90 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.  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.  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.  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 When we need to update the software to keep it to the current market, without impacting its functionality, it is called software re-engineering. It is a thorough process where the design of software is changed and programs are re-written.
  • 5. Software Engineering Tutorial 91 Legacy software cannot keep tuning with the latest technology available in the market. As the hardware become obsolete, updating of software becomes a headache. Even if software grows old with time, its functionality does not. For example, initially Unix was developed in assembly language. When language C came into existence, Unix was re-engineered in C, because working in assembly language was difficult. Other than this, sometimes programmers notice that few parts of software need more maintenance than others and they also need re-engineering. Re-Engineering Process  Decide what to re-engineer. Is it whole software or a part of it?  Perform Reverse Engineering, in order to obtain specifications of existing software.  Restructure Program if required. For example, changing function- oriented programs into object-oriented programs.  Re-structure data as required.  Apply Forward engineering concepts in order to get re-engineered software. There are few important terms used in Software re-engineering
  • 6. Software Engineering Tutorial 92 Reverse Engineering It is a process to achieve system specification by thoroughly analyzing, understanding the existing system. This process can be seen as reverse SDLC model, i.e. we try to get higher abstraction level by analyzing lower abstraction levels. An existing system is previously implemented design, about which we know nothing. Designers then do reverse engineering by looking at the code and try to get the design. With design in hand, they try to conclude the specifications. Thus, going in reverse from code to system specification. Program Restructuring It is a process to re-structure and re-construct the existing software. It is all about re-arranging the source code, either in same programming language or from one programming language to a different one. Restructuring can have either source code-restructuring and data-restructuring or both. Re-structuring does not impact the functionality of the software but enhance reliability and maintainability. Program components, which cause errors very frequently can be changed, or updated with re-structuring. The dependability of software on obsolete hardware platform can be removed via re-structuring. Forward Engineering Forward engineering is a process of obtaining desired software from the specifications in hand which were brought down by means of reverse engineering. It assumes that there was some software engineering already done in the past. Forward engineering is same as software engineering process with only one difference – it is carried out always after reverse engineering.
  • 7. Software Engineering Tutorial 93 Component reusability A component is a part of software program code, which executes an independent task in the system. It can be a small module or sub-system itself. Example The login procedures used on the web can be considered as components, printing system in software can be seen as a component of the software. Components have high cohesion of functionality and lower rate of coupling, i.e. they work independently and can perform tasks without depending on other modules. In OOP, the objects are designed are very specific to their concern and have fewer chances to be used in some other software. In modular programming, the modules are coded to perform specific tasks which can be used across number of other software programs. There is a whole new vertical, which is based on re-use of software component, and is known as Component Based Software Engineering (CBSE). Re-use can be done at various levels  Application level - Where an entire application is used as sub-system of new software.  Component level - Where sub-system of an application is used.  Modules level - Where functional modules are re-used. Software components provide interfaces, which can be used to establish communication among different components. Reuse Process Two kinds of method that can be adopted: either by keeping requirements same and adjusting components or by keeping components same and modifying requirements.
  • 8. Software Engineering Tutorial 94  Requirement Specification - The functional and non-functional requirements are specified, which a software product must comply to, with the help of existing system, user input or both.  Design - This is also a standard SDLC process step, where requirements are defined in terms of software parlance. Basic architecture of system as a whole and its sub-systems are created.  Specify Components - By studying the software design, the designers segregate the entire system into smaller components or sub-systems. One complete software design turns into a collection of a huge set of components working together.  Search Suitable Components - The software component repository is referred by designers to search for the matching component, on the basis of functionality and intended software requirements..  Incorporate Components - All matched components are packed together to shape them as complete software.