You are on page 1of 38

SOFTWARE

MAINTENANCE
Doc. Dr. Blerta Prevalla
◦ 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 applications after delivery to correct faults and to
improve performance.
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.
Challenges in Software Maintenance:
The various challenges in software maintenance are given below:
 The popular age of any software program is taken into consideration up to
ten to fifteen years. As software program renovation is open ended and
might maintain for decades making it very expensive.

 Older software program’s, which had been intended to paintings on sluggish


machines with much less reminiscence and garage ability can not maintain
themselves tough in opposition to newly coming more advantageous
software program on contemporary-day hardware.
◦ Changes are frequently left undocumented which can also
additionally reason greater conflicts in future.
◦ As era advances, it turns into high priced to preserve vintage
software program.
◦ Often adjustments made can without problems harm the
authentic shape of the software program, making it difficult for
any next adjustments.
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.
◦ 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.
◦Reverse Engineering ?
◦ Reverse Engineering is processes of extracting
knowledge or design information from anything man-
made and reproducing it based on extracted
information.

◦ It is also called back Engineering.


Software Reverse Engineering –

◦ Software Reverse Engineering is the process of recovering the


design and the requirements specification of a product from an
analysis of it’s code.

◦ Reverse Engineering is becoming important, since several existing


software products, lack proper documentation, are highly
unstructured, or their structure has degraded through a series of
maintenance efforts.
Why Reverse Engineering?

◦ Providing proper system documentation.

◦ Recovery of lost information.

◦ Assisting with maintenance.

◦ Facility of software reuse.

◦ Discovering unexpected flaws or faults.


Use of Software Reverse Engineering –

◦ Software Reverse Engineering is used in software design, reverse


engineering enables the developer or programmer to add new
features to the existing software with or without knowing the
source code.

◦ Reverse engineering is also useful in software testing, it helps the


testers to study the virus and other malware code .

Software Maintenance and Various Software
Maintenance Tables
◦ There are two formal definitions of software maintenance, which are as under-
◦ IEEE, 1993 :-
Software maintenance is modification of a software product after delivery to
correct faults, to improve performance or other attributes, or to adapt the
product to a modified environment.
◦ ISO/IEC Standard 12207 :-
A set of software maintenance activities that occur when software undergoes
modifications to the code and associate documentation due to a problem or
need for improvement or adaptation.
◦ The first definition is similar to hardware maintenance, car servicing, where a
product is checked for errors or additional tasks are given after it is sold.
◦ In contrast, the second definition includes software maintenance as an
essential aspect of the entire life cycle of a software product, beginning early
development.

◦ Software maintenance specifies the activities following the delivery of the initial
working version of the software system. Must be maintained in the system from
the beginning i.e., maintenance should be taken into consideration during the
entire development. Although maintenance does not have the most complex
aspect of software production.
◦ Maintenance includes portions of all other stages of the software process. After
receiving a maintenance request, the first step is to identify what type of
maintenance is required. Sometime, the problem is with the user- not the
software.

◦ In the case of software products, one would be more interested in updating


the product so that it would adapt to changes in its environment or hardware,
rather than reducing it and replacing it with another new product. Hence,
software products also require maintenance for keeping them up to date with
their surroundings for their best application.
Problem Identification Phase

Input: Modification request.

Process:Assign change number, Classify modification request, Accept or


reject change, Prioritize.

Control: Uniquely identified modification request, Enter modification request


repository.

Output:Validated modification request, Validated process determinations.


Analysis Phase

Input:Project document, Repository information, Validated modification request.

Process:Feasibility analysis, Detailed analysis.

Control:Conduct technical review, Verify test strategy, Verify whether the


documentation is updated or not, Identify security issues.

Output:Feasibility report, Detailed analysis report, Updated requirements,


Preliminary modification list, Test strategy.
Design phase

Input:Project document, Source code, Databases, Analysis phase


output.

Process:Create test cases, Revise requirements, Revise


implementation plan.

Control:Software inspections/reviews, Verify design.

Output:Revised modification list, revised detailed analysis, Updated


test plans.
Implementation Phase
Input:Source code, system documentation, Results of design phase.

Process:Software code, Unit test, Test preparation review.

Control:Software inspections/review.

Output:Updated software, Updated design documents, Updated test


documents, Updated user documents, Test preparation review report.
System Test Phase

Input:Updated software documentation, Test preparation review
report, Updated system.

Process:Functional test, Interface testing, Test preparation review

Control:Software code listings, Modification request, Test


documentation.

Output:Test system, Test reports.


Acceptance Test Phase
◦ Input:Test preparation review report, Fully integrated system,
Acceptance test plans, Acceptance test cases,
Acceptance test procedures.

Process:Acceptance test, Interoperability test

Control:Acceptance test

Output:Acceptance test report.


Delivery phase
◦ Input:Tested/accepted system.

Process:Installation, Training.

Control:Version description document.

Output:Version description document.


Techniques for reducing need of
Software Maintenance
Pattern-based software Reengineering :

Pattern based software reengineering approach is primarily aimed at improving


the maintainability of software legacy systems. Most of the systems were
developed in imperative languages with traditional design approaches.
Imperative programming languages have the following characteristics :

◦ Emphasis on data types, values and operators.


◦ Emphasis on executable statements.
◦ Emphasis on functions and subroutines.
◦ Instead of continually maintaining these systems in their original
architecture the idea is to engineer them using good design
architecture in order to make them more understandable and easier to
reuse and maintain.
◦ One way of redesigning these systems is using design patterns. Design
patterns are basically design techniques that combine successful and
established design practices and the experience of experts into a set of
components that exhibit known behavior with a better structure.

◦ Ab=n example is object-oriented technologies which are known to


improve the cost saving and quality aspects of software development.
Maintenance oriented approach to
software construction :
◦ Here maintenance is performed not only a software product has
been delivered to a client but also during the actual building of
the product. In fact product requirements frequently change
during development, hence calling for reconstruction of the
artifacts that have been developed to date.
◦ Consequently by adopting an approach that makes addition,
deletion or modification of requirements and artifacts easy at
any stage of the product life, cycle, one is actually improving the
software maintainability.
Disposable Information System :

This refers to the use of COTS software.

◦ COTS describe any software acquired from elsewhere and


usually delivered, in executable format, as opposed to source-
code format i.e., the firm now buys a right to use the software
systems instead of actually building it.

◦ There are several advantages of this technique such as :


◦ Productivity Gain –
Instant productivity gains, as effort is saved in testing and debugging
thousands of lines of code.
◦ Time-to-market –
As a result of software being produced faster the firm is in a position to reach
the market first and beat the competition.
◦ Cost –
Using COTS software as a means of programming is considerably cheaper
than coding from scratch.
◦ Philosophy –
There is a belief that software systems should be built like hardware systems,
i.e., from a set of components that can be selected and acquired from say,
catalogers.
Cost and efforts of software maintenance

◦ Categories of Software Maintenance:


◦ Corrective Maintenance
◦ Adaptive Maintenance
◦ Perfective Maintenance
◦ Preventive Maintenance
◦ The cost of system maintenance represents a large proportion of the
budget of most organizations that use software system. More than 65%
of software lifecycle cost is expanded in the maintenance activities.
◦ Cost of software maintenance can be controlled by
postponing the. development opportunity of software
maintenance but this will cause the following intangible
cost:
◦ Customer dissatisfaction when requests for repair or
modification cannot be addressed in a timely manner.
◦ Reduction in overall software quality as a result of changes
that introduce hidden errors in maintained software.
Software maintenance cost factors:
The key factors that distinguish development and
maintenance and which lead to higher maintenance
cost are divided into two subcategories:

◦ Non-Technical factors
◦ Technical factors
Non-Technical factors:
◦ The Non-Technical factors include:
◦ Application Domain
◦ Staff stability
◦ Program lifetime
◦ Dependence on External Environment
◦ Hardware stability
Technical factors:
◦ Technical factors include the following:
◦ module independence
◦ Programming language
◦ Programming style
◦ Program validation and testing
◦ Documentation
◦ Configuration management techniques
Efforts expanded on maintenance may be divided into productivity activities (for
example analysis and evaluation, design and modification, coding). The following
expression provides a module of maintenance efforts:

M = P + K(C - D)

where,

M: Total effort expanded on the maintenance.


P: Productive effort.
K: An empirical constant.
C: A measure of complexity that can be attributed to a lack of good design and
documentation.
D: A measure of the degree of familiarity with the software.
Advantages and Disadvantages of
Emergency Maintenance (EM)
◦ Emergency, I think all of you are familiar with this word. As name suggests, it is a
serious and unexpected situation that is required to be immediately solved. One
can say that emergency is a dangerous situation that requires immediate and
quick action. Emergencies always occur without any warning. Similarly, in software
engineering, there are certain situations that require immediate actions.
◦ Emergency Maintenance (EM) is an immediate action that is needed to be taken
whenever any unexpected failure of asset occurs or assets get broken down.
These unexpected failures can be dangerous and might cause greater damage
to health, safety as well as working environment. Emergency maintenance is
something that if failed equipment is not repaired immediately after failure, then it
might cause greater damage, affects health, and results in production loss.
Advantages :

◦ One of main advantages of emergency maintenance is that there is no initial


planning involved so initial cost involved to maintain equipment before failure
occurrence is safe.
◦ As no planning is involved, number of team members require to resolve issues
will be less.
◦ EM usually guides technicians to take preventive measures to prevent system
from greater damages.
◦ EM also helps one to immediately identify major cause of failure and then
restore asset or equipment to its normal working condition. In turn, it minimizes
loss.
Disadvantages :

◦ Unpredictability is one of main disadvantages of Emergency maintenance as one does


not when failure is going to occur. This might result in delays in production, decrease in
product quality, increase labor costs, etc.
◦ No planning is involved and no tools and resources are collected that are required to
resolve issues as such issues occur unexpectedly.
◦ Emergency maintenance does not increase lifetime of equipment. In fact, it generally
reduces lifespan of equipment.
◦ It can be more costly than expense of regularly implementing preventive
maintenance.
◦ Everyone’s main priority is not to deal with such type of maintenance. But no matter
what, one has to plan to overcome such emergency situations.

You might also like