Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
PS02CINT22 SE Software Maintenance
1. Software Maintenance
Name Kavankumar Nileshkumar Solanki
Department MSc.IT Roll No. 03
Semester 2nd Subject Code PS02CINT22
Institute Name Shree P.M.Patel Institute of PG Studies and Research in Applied
Science
Managed By Anand People’s Medicare Society, Anand
Presentation Title
3. Introduction
Once the software is delivered and installed at
the customer’s premises, the process of
maintenance begins.
It has been found that software maintenance
take up most of the SDLC costs and hence
total cost of software maintenance is quite
huge.
4. Definitions
“Set of activities undertaken on a software system
following its release for operational use.”
(According to B.W.Boehm in “Software
Engineering Economics”, published by Prentice
Hall, NJ,1981).
According to standard for software maintenance-
1992, ”Software Maintenance is modification of
software product after delivery to correct faults, to
improve performance of other attributes or to
adopt the products to a modified environment.”
5. Reasons for Maintaining The
Software
• Over a period of time, software’s original
requirements may change to reflect the
customer’s need.
• Errors undetected during software development
may be found during use and require correction.
• With time new technologies are introduced such
as new hardware, operating system etc.
– The software therefore must be modified to adopt the
new operating environment.
6. Advantages of Maintenance
Better documentation of the software.
Establishment of proper procedures for
incorporating changes.
Identification of weak and strong points of
system by the maintenance programmers.
7. Laws of Software Evolution
1. Law of Continuing Change
2. Law of Increasing Complexity
3. Law of Program Evolution
4. Law of Conservation of Organization
Stability
5. Law of Conservation of Familiarity
8. Types of Software Maintenance
a) Corrective Maintenance
b) Adaptive Maintenance
c) Perfective Maintenance
d) Preventative Maintenance
9. Corrective Maintenance
• Reporting errors can be
– Coding errors
– Designing errors
– Requirements errors i.e., incomplete specifications.
• Requirements related errors are most expensive to correct
because of the expensive redesigning involved.
• The Corrective Maintenance sometimes also includes
temporary patches and workarounds which can cause great
problems for subsequent maintenance work.
This type of maintenance is also called Bug Fixing and deals
with fixing the reporting errors while the software is in use.
10. Adaptive Maintenance
• This type of maintenance concerns external changes.
• Even if the software is error free, it is possible that the
environment in which the software system works will often
change.
• The changes can be introduction of new version of operating
systems, new hardware or removing support for existing
facilities.
• As a result the software must be ported to this new changed
environment and made operational.
The modification made to the software as a result of changes to
external environment is called Adaptive Maintenance.
11. Perfective Maintenance
• This type of maintenance concerns improving
the delivered software as a result of change in
user requirements or efficiency improvements.
12. Preventative Maintenance
• This type of maintenance is done to anticipate
future problems and to improve the
maintainability using techniques like
documenting, commenting or even re-
implementing some part of software using
modern software engineering tools and
techniques.
13. Software Maintenance Models
• Overview
– A number of software maintenance models are proposed
since 1970’s.
– All of these models focus on three main activities
• Understanding the software structure
• Modifying and changing the software
• Revalidating the software
– Since 1980’s a class of process oriented maintenance
models are proposed.
– These maintenance models viewed the maintenance process
in terms of activities performed and the order of these
activities.
14. Quick-fix Model
• This is one of the simplest and ad hoc model used
for maintenance software.
• In this model changes are made at the code level
as early as possible without anticipating future
maintenance model.
• As a result the structure of the software degrades
rapidly.
• This model isn’t suitable for large software
systems, but it can be used if the software is small
and maintained by single person.
15. Iterative Enhancement Model
• This model incorporates changes in the software
based on the analysis of the existing system and
assumed that the complete documentation of the
software is available in the beginning.
• The model attempts to control complexity and
tries to maintain good design as a result of
changes made,
• The document of each software life cycle phases
are also modified so as to successful support the
next iteration.
16. Full-reuse Model
• This model of software maintenance is based
on reuse of existing software components.
• This model starts with defining requirements
for the new system and reusing parts of the old
system as much as possible.
17. Yau and Collofello’s Model
• (Yau80) proposed a more specific maintenance model
consisting of several phases and belonged to category
of process oriented maintenance models.
• The main steps/phases of the model are
– Identification of maintenance object.
– Understanding the program structure.
– Generating the maintenance change.
– Account for the ripple effect as a result of maintenance
change.
– Conducting the regression testing.
• In this model changes of having long term problems is
reduced substantially.
18. Software Maintenance Standards
• Two standards which are used for maintenance
of software in the organizations are:
1. Standard for software maintenance (1993)
developed by P1219 Software Maintenance
Standard Working Group under the IEEE
Computer Society.
2. Standard for Software Quality Metrics
Methodology (1992) developed by Software
Engineering Standards subcommittee of IEEE
Computer Society.
19. Bibliography
• K.H.Bennett, “Automated Support Of Software
Maintenance“, Information and Software
Technology, Vol. 33, No. 1, Jan./Feb. 1991, Page
No. 74-85.
• S.Yau and J.S.Collofello, “Some Stability
Measures for Software Maintenance“, IEEE
Transactions on Software Engineering, SE-6(6),
1980, Page No. 545-552.
• Sangeeta Sabharwal, “Software Engineering“,
New Age International Publishers, 2008, 285-292