Академический Документы
Профессиональный Документы
Культура Документы
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
Programming Language
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.
Boehm’s Model
Taute Maintenance Model
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
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.