Software application maintenance might be perceived as a thoroughly technical activity, but has many managerial implications. While technical aspects include performance testing, error correction, capability enhancement and reliability measurement, the managerial aspects include cost estimation, licensing, and modification management. The maintainability of a software application is calculated based on the ease with which it can be reinstated to functional state following a malfunction.
As per the survey conducted by Lientz and Swanson, maintenance activities were categorized into four classes-
This type of maintenance is performed to adjust the system running the software application to deal with the changes being introduced in software and business environment. Software environment refers to the external factors or conditions influencing the system, and usually includes a change in hardware, OS or DBMS. This means the software is optimized with measured changes to run on different operating system, or/and the Database Management System. Adaptive maintenance also includes changes to the application based on business environment where changes are introduced in the application due to modifications in company/government policies, business rules or work patterns. For instance, if the Federal Reserve changes the interest rate, all the banks then have to make alterations to their system and software, which is a kind of adaptive maintenance.
In this type, modifications in user requirements related to functional enhancements are implemented. This essentially means optimizing the software in terms of performance to achieve the level of perfection. The functional enhancements being introduced are not essentially driven by errors. One of the examples can be of implementing new optimized database management algorithms that can help retrieve records faster and/or sort them in a better way. The perfective maintenance is important when the business aims to use the application to achieve competitive edge in the market.
This type of maintenance includes bugs-identification, error-fixing, and various diagnosing activities. While common perception of overall software maintenance is about finding and fixing defects, Corrective maintenance in reality accounts for just 20% of all the maintenance activities. The error-finding mechanism is a continuous process. It mainly deals with faults that can affect the standard everyday-functions of the application software. The faults can be related to logic, design or code.
Faults in design transpire when the application starts handling critical business functions incorrectly. This can be a result of miscommunication or misinterpretation of business requirements at the initial stage of requirement analysis.
Logical-errors can occur due to flawed logic flows, inappropriate conclusions of the functions, faulty or incomplete data testing, etc.
Coding errors are programming errors where simple actions by the user can result in frequent stoppages or crashes.
These errors are jointly referred as residual errors which prevent the application from performing normally to match the defined specifications. Corrective maintenance activities are aimed at identifying and fixing these residual errors, and commonly initiated by reports created by the end-users.
This is a type of maintenance activity that focuses on maintainability or reliability to prevent future problems. It comprises of code optimization and restructuring along with documentation updates. It aims at issues like efficient usage of storage and quicker execution of programs, and is limited to maintenance organization.
Though software maintenance step appears at the fag-end of the Software Development Life Cycle, it is by no means of least importance. On the contrary, it is of primary significance to make the software conform to specified requirements.
From thorough inspections that includes Malware Detection, Bug Fixing, Testing and Validation, Software Maintenance entails various environment driven changes concerning to hardware and system software. By using various Analytics Performance Metrics, Software Maintenance can extend the efficiency and functionalism to improve the maintainability of the software application.