|
Software maintenance does
not involve just fixing problems but should address
upgradation needs as well, says
Dr R Srinivasan
A SOFTWARE development project
comprises mainly of three distinct phases, concentrating
on the definition of the requirements, subsequent
planning and development, followed by delivery
of the product and support. A very good description
of these phases is given by Roger Pressman in,
"Software Engineering - a Practitioner's Approach
(Fifth Edition)". During the definition phase,
the information to be processed is identified
specifying the required functions and performance,
the nature of the behavior of the system, types
of interfaces needed, the risks involved, constraints
in the design, and the necessary testing and validation
required to define a successful system.
The development phase is one
where the actual implementation, of what has been
planned in the definition phase, takes place.
The main tasks during this phase are design, coding
and testing leading to the delivery of the product
to the customer, with every stage of development
under the strict implementation of software engineering
standards and processes. The next phase is to
provide customer support and maintenance during
which not only fault occurring in the usage of
the product is corrected but also effect changes
as per customer requirements, viz. enhancements
towards the next version as dictated by market
needs.
Having seen the first two phases
in earlier articles, let us take the support phase
involving maintenance. According to Roger Pressman,
a system development is deemed to be complete
when the system is being used by users in an actual
production environment. Any work to change the
system after it is in operation is considered
to be maintenance. Canning in his paper on, "The
Maintenance Iceberg" (Ref: EDA Analyser, Vol.10,
No. 10, Oct. 1972) says that software maintenance
was characterized as an "iceberg". He adds that,
in the early 1970's, the maintenance iceberg was
big enough to sink an aircraft carrier; today
it could easily sink an entire navy. It is the
effective maintenance and support provided by
an organization that brings in more confidence
in the customer and the end-user. To quote Manna
from his paper in Datamation April '93 on, "Maintenance
Burden Beginning for a Remedy", the maintenance
of existing software can account for over 60%
of all effort expected by a development organization,
and this percentage will continue to rise as more
and more software is produced by the organization.
Software maintenance/support
does not mean just fixing the faults because support
includes the need for providing the changes identified
by the customer due to market requirements, competition
with other vendors of similar products, changes
needed due to deployment of the software in the
new environment and conditions, reengineering
the application for future use, etc., New products
may be forced to work in different environments.
The real world contains uncertainties and concepts
which cannot be understood easily. So, the more
dependent a system is on the real world for its
requirements, the more likely it is to change
(Ref: Shari Pfleeger). In today's world in software
development, only 20% of all maintenance work
is spent in fixing faults whereas the remaining
80% is spent in implementing the changes identified.
It is therefore essential to realize, right at
the beginning of the Project Plan that, mechanisms
must be planned for evaluating, controlling, and
making modifications i.e., the ultimate software
product developed must be easily maintainable.
So, in contrast to the hardware systems, software
systems are necessarily built to be amenable for
changes.
The methods and the associated
tools in software engineering, if adopted carefully,
lead to making the changes with ease. Every book
and the references illustrate four types of changes;
they are corrective, adaptive, enhancement and
preventive maintenance. Corrective maintenance
takes care of the necessary effort to correct
the defects identified by the customer/user. To
accommodate the changes in external environmental
conditions, adaptive maintenance deploys modifications
to the software. As per the customer's request,
enhancement or perfective maintenance extends
the capability and characteristics of the software
beyond its original functional requirements that
have been approved upon in the SRS. Finally, preventive
maintenance is conducted periodically to enable
the software to serve the needs of the end user
so that no faults occur in a given period of running
periodical preventive maintenance, it is possible
that the software product can be more easily corrected,
adapted and enhanced. It should be borne in mind
that, in order to establish a good maintenance
activity, the software program must be easily
understandable, because the one developed today
by a team of people may have to be maintained
by a completely different set of people in the
future.
(to be continued)
(The
author is Chief Technology Officer, Internet Component
Management Group, Bangalore and can be contacted
at: r.srinivasan@iCMGworld.com)
|