Only when the product is in operation, the anomalies are disclosed, operating environments keep on changing and, new user requirements pop up.
This is where product maintenance process comes in.
What is Product Maintenance?
Product maintenance can be termed as the sum of activities that are needed to administer cost-effective support to a software system or an enterprise. These activities are executed during the pre-delivery stage as well as the post-delivery stage.
The pre-delivery activities consist of planning for the post-delivery operations that include but are not limited to supportability, and logistics determination.
On the other hand, post-delivery activities comprise of software modification, training, and operating a help desk.
How should Software Maintenance be done?
The initial software development can be learnt from the development effort put in by the programmers. Early involvement by the maintainer of the software helps the overall maintenance effort.
But what if the developers are no longer around or are available when a discrepancy arises? In a Software Maintenance process, one must take the products of the development, viz, code, documentation, and evolve or maintain them over the entire life cycle.
B. Swanson of UCLA was one of the pioneers who examined the process of what happens during evolution and maintenance. He used the empirical data from industry maintainers.
According to Swanson, studying the maintenance phase of the life cycle provides a better insight into the maintenance phase. He then created three different categories of maintenance: Corrective, Adaptive, and Perfective.
Corrective Maintenance
Corrective maintenance is a model of maintenance which is a reactive modification of a software product. It is performed after the delivery in order to correct newly discovered problems.
Adaptive Maintenance
Adaptive maintenance is the modification of a software product which is performed after the delivery to keep a software product usable and adaptive in an already changed or dynamically changing environment.
Perfective maintenance
Perfective maintenance is the modification of a software product after the delivery which is done to improve the performance or maintainability of the delivered product.
How Software Maintenance helps an organization?
In most of the cases, the documentation pertaining to some specific software measures taken up by the organization is not published or made public.
One may find that only generic software engineering measures are used and in cases when the problem is very specific the maintainer determines which ones are appropriate for the organization.
Interestingly, there was a paper which suggested a list of software maintenance measures used at NASA’s Mission Operations Directorate. Even though one may think that the paper mostly contains astronomy specific terms and jargons, one thing is pretty important here: the general corrective, adaptive, and preventive measures still remain the same and resonate well with almost any industry.
Some of those maintenance processes include:
Software size
Software staffing
Maintenance request number/status
Computer resource utilization
Fault type distribution
Fault density
Software volatility
Software enhancement numbers/status
Discrepancy report open duration
Break/fix ratio
Software reliability
Design complexity
Conclusion
Product maintenance process is crucial to an organization, it cannot. The software life cycle is the cyclic series of phases through which a software system goes.
Improving the maturity of the product maintenance processes, software product developers and maintainers move from ad-hoc, ill-defined processes where success is largely a matter of chance towards a situation of predictable and repeatable project outcomes.
Imbibing a product maintenance process into the organization is as inevitable as the product itself.