Вы находитесь на странице: 1из 6

Software Maintenance

Software maintenance is a part of Software Development Life Cycle. Its main purpose is to
modify and update software application after delivery to correct faults and to improve performance.
Software is a model of the real world. Software maintenance is a vast activity which includes
optimization, error correction, deletion of discarded features and enhancement of existing features. Since
these changes are necessary, a mechanism must be created for estimation, controlling and making
modifications. The essential part of software maintenance requires preparation of an accurate plan during
the development cycle. Typically, maintenance takes up about 40-80% of the project cost, usually closer
to the higher pole. Hence, a focus on maintenance definitely helps keep costs down.

Advantage of Software Maintenance

The best 4 advantages of software maintenance are:

 Performance Improvement

Majority of the software maintenance programs will include up gradation of the program. A
maintenance program for software entitles the user to a full year of free upgrades the upgrades are
designed in order to address and fix issues encountered by users of the application. These
upgrades improve the overall performance and functionality of the application. Moreover, they
enable the software to last longer by increasing its life cycle.

 Fixes Various Bugs

The software maintenance packages that are provided by the vendors at the time of software
purchase keep you covered from all the bugs and various software issues. Since they are in a
warranty period for a particular time period, these fixes are free of cost. However, post expiration
of the warranty period, the owner needs to shell out the maintenance charges from one’s own
pocket.

 Up To Date With Current Trends

Technology and the business depended on technology are the two most fast paced aspects
that change on an everyday basis. Therefore, in order to keep your business in line with the recent
technologies, it gets necessary to keep your software apps updated. This is exactly what the
software application maintenance does. It keeps you in pace with the present technological trends
and make sure that your organization gets to leverage all the benefits of the new technologies.

 No Need To Spend Extra Cash

The last but not the least benefit is from the financial point of view. The software
maintenance programs enable the users to maintain a control over their expenditure on the
software. Since every software maintenance program keeps the users covered for a period of
nearly one year, it reduces the investment of an organization for its IT department to a huge
extent. In case you are using cloud-based applications, the maintenance fee is usually included in
the monthly charges that a user pays for the services.

Categories of Software Maintenance


 Corrective Change

Corrective change, most commonly referred to as “bugs,” is the most typical change
associated with maintenance work. Corrective changes address errors and faults in your software
that could affect various areas of your software; design, logic or code. Most commonly, these
changes are sprung by bug reports created by users. It is important to note that sometimes
problem reports submitted by users are actually enhancements of the system not bugs.

 Adaptive Change

Adaptive change is triggered by changes in the environment your software lives in. An
adaptive change can be triggered by changes to the operating system, hardware, software
dependencies and even organizational business rules and policies. These modifications to the
environment can trigger changes within other parts of your software. For example, updating the
server, compilers, etc or modifications to shipping carriers and payment processors can affect
functionality in your software.

 Perfective Change

Perfective changes refers to the evolution of requirements and features in your existing
system. As your software gets exposed to users they will think of different ways to expand the
system or suggest new features that they would like to see as part of the software, which in turn
can become future enhancements to the system. Perfective changes also includes removing
features from a system that are not effective and functional to the end goal of the system.
Surprisingly, 50-55% of most maintenance work is attributed to perfective changes.

 Preventive Change

Preventive changes refer to changes made to increase the understanding and maintainability
of your software in the long run. Preventive changes are focused in decreasing the deterioration of
your software in the long run. Restructuring, optimizing code and updating documentation are
common preventive changes. Executing preventive changes reduces the amount of unpredictable
effects a software can have in the long term and helps it become scalable, stable, understandable
and maintainable.

Key Issues in Software Maintenance

The key software maintenance issues are both managerial and technical. Key
management issues are: alignment with customer priorities, staffing, which organization does
maintenance, estimating costs. Key technical issues are: limited understanding, impact analysis,
testing, and maintainability measurement.

Software maintenance is a very broad activity that includes error correction,


enhancements of capabilities, deletion of obsolete capabilities, and optimization. Because change
is inevitable, mechanisms must be developed for evaluation, controlling and making
modifications.

Lehman’s laws of Software Evolution


In software engineering, the laws of software evolution refer to a series of laws
that Lehman and Belady formulated starting in 1974 with respect to software evolution. The laws
describe a balance between forces driving new developments on one hand, and forces that slow
down progress on the other hand. Over the past decades the laws have been revised and extended
several times.

All told, eight laws were formulated:

1. (1974) "Continuing Change" — an E-type system must be continually adapted or it becomes


progressively less satisfactory.
2. (1974) "Increasing Complexity" — as an E-type system evolves, its complexity increases unless
work is done to maintain or reduce it.
3. (1974) "Self Regulation" — E-type system evolution processes are self-regulating with the
distribution of product and process measures close to normal.
4. (1978) "Conservation of Organisational Stability (invariant work rate)" — the average effective
global activity rate in an evolving E-type system is invariant over the product's lifetime.
5. (1978) "Conservation of Familiarity" — as an E-type system evolves, all associated with it,
developers, sales personnel and users, for example, must maintain mastery of its content and
behaviour to achieve satisfactory evolution. Excessive growth diminishes that mastery. Hence
the average incremental growth remains invariant as the system evolves.
6. (1991) "Continuing Growth" — the functional content of an E-type system must be continually
increased to maintain user satisfaction over its lifetime.
7. (1996) "Declining Quality" — the quality of an E-type system will appear to be declining unless
it is rigorously maintained and adapted to operational environment changes.
8. (1996) "Feedback System" (first stated 1974, formalised as law 1996) — E-type evolution
processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as
such to achieve significant improvement over any reasonable

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.
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.

 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 Process Models

 Quick fix Model- The quick-fix model is an ad hoc approach used for maintaining the
software system. The objective of this model is to identify the problem and then fix it as
quickly as possible. The advantage is that it performs its work quickly and at a low cost. This
model is an approach to modify the software code with little consideration for its impact on
the overall structure of the software system.
 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. The iterative enhancement model comprises three
stages, namely, analysis of software system, classification of requested modifications, and
implementation of requested modifications.

 Reuse-oriented Model-The reuse-oriented model assumes that the existing program


components can be reused to perform maintenance.

It consists of the following steps:


1. Identifying the components of the old system which can be reused
2. Understanding these components
3. Modifying the old system components so that they can be used in the new system
4. Integrating the modified components into the new system.

 Boehm’s Model
 Taute Maintenance Model

Software Reverse Engineering

Reverse engineering is taking apart an object to see how it works in order to duplicate or
enhance the object. The practice, taken from older industries, is now frequently used on computer
hardware and software. Software reverse engineering involves reversing a program's machine
code (the string of 0s and 1s that are sent to the logic processor) back into the source code that it
was written in, using program language statements.

Software reverse engineering is done to retrieve the source code of a program because the
source code was lost, to study how the program performs certain operations, to improve the
performance of a program, to fix a bug (correct an error in the program when the source code is
not available), to identify malicious content in a program such as a virus or to adapt a program
written for use with one microprocessor for use with another. Reverse engineering for the purpose
of copying or duplicating programs may constitute a copyright violation. In some cases, the
licensed use of software specifically prohibits reverse engineering.

Software Re-engineering

It is a process of software development which is done to improve the maintainability of a


software system. Technical Definition: Software 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 such as reverse engineering, restructuring, redocumentation, forward engineering,
and retargeting.

It is sometimes a cost-effective option for software system evolution. Applicable when


some (but not all) subsystems of a larger system require frequent maintenance. It involves putting
in the effort to make it easier to maintain.

Re-engineering a software system has two key advantages: Reduced risk: As the software
is already existing, the risk is less as compared to developing a new software. Reduced cost: The
cost of re-engineering is significantly less than the costs of developing a new software.

Вам также может понравиться