What you need to know about the maintenance stage of software development

The last stage of the software development cycle is at the forefront of our conversation today. While many firms focus all of their attention on the design and implementation phases of a custom software development project, the maintenance phase is equally as important. While a software application will spend initial months (perhaps years) in the design and development phase, after deployment it may see many years of service.  Due to changing business requirements, user feedback and infrastructure updates, owners of custom software should expect to perform periodic modifications to their applications.

Let’s take a look at what you need to know about the vital maintenance phase to see how it will support your overall software solution.

Selecting the right vendor is essential

Yes, it all starts here. Selecting the wrong vendor can make the maintenance of your solution infinitely more difficult.

Let’s begin with your solution’s architecture. A properly constructed solution  will be easier and cheaper to update with new features and patches that don’t disrupt business operations or introduce bugs in peripheral modules. This, in turn, reduces the overall cost of development, testing and the risk that bugs will be introduced into a given module’s functionality when the module is added or changed. This process is known as encapsulation and a developer trained in software development best practices will implement that concept as part of their software development process, to limit the risk of unexpected dependencies during future maintenance releases.

Your developer should use industry best dev ops practices to minimize overhead costs and disruption risks associated with maintenance actions.

Finally, expect that your solution is developed using the latest technologies and frameworks and upgrades. This will ward off a need for upgrades to your solution for a longer period of time as your existing frameworks and operating systems will continue to enjoy industry support.

Understanding maintenance phase length

The maintenance phase lasts the longest of any phase in the lifecycle of your software project. Once your project has been developed and implemented, it will remain in production/ maintenance mode until it is replaced by a newer solution. A need to replace your current solution could be triggered by a radical change in business focus or, more likely, by a slow drift towards technical obsolescence as the base technologies supporting your application become deprecated.  But this process usually occurs over many years or even decades.

What work is done during the maintenance phase?

The maintenance phase is a broad term that typically  includes several processes such as functional updates,  refreshed user interfaces, updates to supporting frameworks and operating systems which may require refactoring of some of the code base.

Software maintenance in four distinct changes

When we think of the ongoing changes that are part of a successful software maintenance plan, they generally fall into four categories: corrective, adaptive, perfective and preventive.

Corrective software change is the one most of us think of when we think software maintenance. This relates to the issue of fixing bugs and other errors. It can also include enhancements or any other change that will simply make the solution operate more efficiently. Corrective changes commonly occur after a user finds an error and submits it to the developer to make the change or the improvement.  If the software was developed using an agile process methodology that incorporates unit and functional QA testing, most of the bugs will have been discovered and corrected during the development phase.

An adaptive change is one brought on by the environment surrounding your software solution. This could be your company’s operating system, its hardware or other supporting software frameworks/dependencies. It can also include items outside the software world such as changes to your business requirements.

Perfective changes are adjustments made in response to new features or requirements in the system. This can include new ideas from users utilizing your system or in response to new company needs or regulatory requirements. Similarly, the removal of features no longer necessary can be seen as a perfective change as well.

Finally, we reach preventive changes. Similar to preventive medicine, preventive change seeks to prepare your solution for the long run and head off a problem before it arises. This solution is also focused on maintaining your solution’s applicability and reducing deterioration. Common preventive change strategies can include needs to address a security threat, documentation updates and code optimization.

The maintenance phase is a joint effort

Maintenance actions are addressed in much the same may as tasking and issues during the development phase.  From the above discussion, maintenance actions can be driven by the application owner or maintainer.  For instance, the need for functional modifications would typically be raised by the application owner, whereas the need for environmental updates would be raised by the maintainer (developer).  In either case, the good agile processes, tools and relationships that were established during the development phase can be leveraged during the maintenance phase. The bulk of the work necessary during the software maintenance phase should be led by your software developer. This work will usually include patches to address errors discovered during usage.

You are part of the maintenance phase

From the initial formation of a maintenance plan to the day your software solution becomes obsolete, your company should always expect to play a vital role in your software solution. A partnership between you and your developer will allow the solution to shine and for maintenance improvements to be added seamlessly.

To learn more about the maintenance phase of your custom software development project and to get your questions answered, contact us today.

About Saturn Systems

Saturn SystemsSaturn Systems is an entirely U.S. based software engineering firm that provides a broad range of services, from project-based development and quality assurance testing to fully integrated staff augmentation teams. Saturn's Rural Outsourcing model couples the lower cost of doing business in Duluth, MN, with an experienced engineering team - making Saturn an attractive alternative to high-priced metro firms and the inherent difficulties of offshore services.

Leave a Reply

Your email address will not be published.