The Maintenance is the final part of the software development life cycle, which involves the ‘maintenance’ of the existing software that was created and initially finished in the stages Implementation through to Deployment. Although it was not originally considered to be part of the software development life cycle due to it originally only holding a minor amount of yearly completed software projects, as at that time very few required further ongoing maintenance for software often only needing a one-stop solution to a problem. Nowadays the exact opposite is now more common as with modern technology increasing in efficiency software also has to update with the now especially since we now live in a day and age where software and websites will update as soon as there is a shift in a particular industry. Because of the aforementioned there are now many reasons as to why software would require updating that include reasons from the industry and possible changes with the client. For example if the client wanted new features to be included within the software maintenance would be used as although it involves the creation of new functions and features, the end result involves a pre-existing system that was created by the software developers themselves (hence they are just adding on to something made prior).
However despite the facts previously mentioned above there is one other significant factor that can influence how long the Maintenance stage occurs for the total lifespan of the project from beginning to end. That is the cost of the maintenance since it has the potential to be stretched out for a longer period than the rest of the software development life cycle combined, for example through reviewing different sources which discuss the topic there is a general consensus that the cost of maintenance can cost between 40% and 80% (Tutorialspoint.com listed the highest as 67%) of the total cost for the entire lifetime of the software which in itself tends to average between 10 to 15 years after the software is initially finished. Although this does not affect the large percentage of websites based on the average lifespan of software it does still has some conflicts in the future due to both the stage and the world we live in. Firstly, with how the stage itself can affect the cost of the maintenance. One major factor that is often seen with the stage is that due to it combining elements of the other stages (i.e, Testing, Requirements Analysis, Design) into a much smaller package it means that certain areas are often left empty, an example of this is that in comparison to a full project life cycle there is very little documentation created about the additions/improvements made to software that often leaves crucial areas distinctly empty. This means that if a function added during maintenance was hindering something planned in the future with the lack of in depth documentation it would create a unique self-conflict as it would be brought about by the software developers. Secondly, for the factor within the real world is to be simply put advancements. What that means is that no matter how much a piece of software is updated and improved to better cope with the constantly changing times there will always be something that can have all of the bells and whistles of existing software be included within the first version and more. This is a problem especially since clients realistically want to make use of their product for as long as possible meaning that over time there becomes a line between the improvements being made to the amount of money that is likely being wasted in the long run.
When it comes to the different aspects of maintenance it is often seen where depending on the reason/benefit you can easily place a softwares maintenance into one of four categories based on the latter. Which are listed below in the most common order.
Corrective Maintenance: This involves the standard modifying of functions and features in order to fix a problem that are often found in the normal day-today functionalities of the software.
Adaptive Maintenance: This maintenance type involves the implementation of new changes/fixes into a specific part of the software system, the most common reasoning as to using this is because of a possible side-effect that has occurred from changes present in another area of the software. Of course as the name implies the other way in which this type can be used is to allow for software to be adaptable with external changes as to maintain relevancy or efficiency. This type of maintenance can occur for a variety of reasons within the aforementioned areas, for example if a product was losing relevance in comparison to competitors their would be further maintenance in order to create and implement additional features that would encourage existing and new consumers to utilise their brand over an alternative. There is however a disadvantage with how Adaptive can be utilised as with a central point of this type of maintenance being to prolong the life of a product/software there can be issues further on in the life cycle of a product centred around the benefits versus the costs. Especially since no matter what industry that uses Adaptive there will always be some new method that does everything the preexisting can do and more with better reliability, ETC. With this it makes it a matter of when rather than how, this does mean that from the maintenance side the length of time devoted to maintaining a product/software can vary greatly depending on the market, alternatives, environment, policies (resulting in varying possible financial gains after a project is completed due to how long a client requires maintenance).
Perfective Maintenance: This can be defined as the additions of new requirements into an existing product/software as to increase the performance of the software, maintain usability over a long period of time, and improving of reliability. Despite it’s noticeable similarity to Adaptive it is different with how the maintenance occurs to being with as unlike Adaptive there does not have to be an initial reason as to why maintenance is required, often times it will occur without the motivation from either external or internal factors (discovered issues). Though it still holds the same central goal of enhancing or adding onto the product/software for the purpose of improving it for use by the client or other stakeholders.
Preventive Maintenance: As the name implies this form of maintenance acts as a prevention strategy that is meant to deter any future events that involve other issues from arising at a later date. A reasoning behind Preventive is to negate plausible issues from occurring that might be considered significant yet unlikely at that particular time, an example of this throughout the web industry and even expanding into standard software is the looming threat with security to software. This could be done with the modifying or updating of existing functions and features with the implementation of new ones as to squander the problems that exist with other variables.