How Important is Post-Launch Software Maintenance?
The following is an excerpt from our latest Continuation Engineering eBook. For an in-depth look at the importance of software support services, download the eBook in its entirety here.
Caring For Your Entire Software Ecosystem
Modern software is rarely built as a stand-alone singular application. Typically, the piece of software that an end-user is interacting with is only one course of a very balanced meal. It’s part of an entire software ecosystem made up of many moving parts. There’s a frontend, a backend, and a database and its underlying infrastructure. All of these components are powered and controlled by an admin portal of some sort.
As with any other type of ecosystem, if one piece isn’t operating properly, the entire system is at risk of not performing at its best. Multiple factors contribute to this but the most common are bugs and updates or patches. With so many moving parts, these updates and patches occur on a fairly regular schedule so keeping up with them is crucial to a software product’s continued success.
Software ecosystems are very rarely developed entirely from scratch. Usually, they rely on readily-available libraries or databases, open-source products, templates, or services. Additionally, software systems rely on operating systems like Linux or Windows. What does all of this mean for your product? It means that any time there’s an operating system update or a change to one of those products, there’s a chance that it can affect your software’s performance unless you address it in your own code right away.
Software maintenance, therefore, requires constant vigilance. You not only need to monitor and maintain your own software’s code but need to be aware of changes to the software your product is built with and on. Maintenance isn’t only defensive though. It also includes things like adding new features or enhancements based on feedback from users or competitive demands.
Why do smart businesses plan on post-launch maintenance?
Continuation engineering, as it’s often called, serves three main functions. It enables:
Product Enhancement
Continue to optimize experience around market trends, interactions, user feedback and user expectations that have become normative since launch. Additionally, the success of your product brings its own set of challenges. The more users you have means more traffic, more transactions, and more data. Unless these increases are properly monitored and planned for, your system won’t be able to support them and will become slow and unusable or even crash.
Prevention
Having a maintenance strategy in place will help you identify and address defects and vulnerabilities before they cause damage to your solution’s reputation, experience or security.
Predict Expenses
Establish a budget for solution maintenance, and save money by addressing fixes and enhancements in predictable increments.
The Who’s Who of Continuation Engineering
Product Manager
During maintenance, a product manager takes input from various stakeholders and prioritizes tasks. A successful product manager balances the needs of internal (user unseen) and external (user) requirements. Prior to that though, they prepare the product roadmap. This document outlines new features, deferred features, and proposed update release.
The roadmapping process should begin pre-launch and be thorough but flexible with room for unexpected changes based off of user requests and feedback as well as any defects that occur. It also includes a determination of how that user feedback is collected; contact form, help desk, email, Twitter, etc. The roadmap needs to consider updates to all of the platforms and products used to create the greater ecosystem.
Post-launch, the product manager determines if and how maintenance is provided by establishing a maintenance plan.
Stakeholders
Stakeholders are anyone involved in your project who is giving or receiving user feedback, managing the budget, or implementing changes. This includes customers, company management, engineers, and system admins.
Maintenance Plan
While obviously not a person, the maintenance plan is an important enough character in your software’s maintenance success that it warrants a place on this list. The plan dictates how often you’re updating your software by taking into account things like user tolerance, allowable downtime, and various updates and patches that your components require.
A maintenance plan includes strategy around update and patch release as well as how your team addresses security vulnerabilities.
It should also take into account how defects and issues will be prioritized. What is deemed user critical vs a nuisance? How will the number of users affected impact the severity and priority? A set of criteria defined upfront can prevent hours of discussions further down the road.
Patches
Code fixes for a problem or defect. These can also include a small feature correction. Specific code changes are released and applied on a regular maintenance release schedule.
Updates
Revisions of the software. Updates include recent patches and larger-scale changes. With updates, the entire code base is released all at once.
But how do you plan for patches and updates? What’s your strategy around timing and impact to the customer? Are there DevOps considerations?
Let’s take a look at an example of what a maintenance plan could look like:
- Individual patches get released on an as-needed basis to fix critical bugs. This only includes bugs that create a security vulnerability. Patches are contained in a library for customers to access and apply if they encounter the problem.
- Maintenance releases are done on a quarterly basis. These are patches made up of all individual fixes that have been tested together and released as one big patch.
- Updates occur every six months. They include everything from the most recent maintenance release as well as any new features that have been added.
- When a security vulnerability occurs, the community of users is notified and provided a patch or maintenance release as soon as possible. (These can also be automatically pushed if you have planned that capability into your product.)
To continue reading and learning how to keep your software ecosystem running smoothly, download our latest Continuation Engineering eBook here.
Original post can be found here.
Authored by Liz Spolyar and Joel Swenson.
Liz Spolyar:
According to her First Grade teacher, Liz Spolyar started her career in planning projects and organizing people at an early age. She has applied these skills to successfully lead and deliver new product development for both hardware and software companies. Liz enjoys variety in roles, technology, cultures and people and has a hard time turning down a challenge.
Liz has a BS degree in Mechanical Engineering from Michigan State University.
Joel Swenson:
Joel’s writing career has its roots in his childhood. Growing up, if he didn’t have his nose in a book, he could be found penning short stories and bootleg comics for friends. Joel joined MentorMate after nearly a decade in the bicycle industry where he worked as a Copywriter across multiple brand teams. He brings a wealth of experience crafting brand voices, writing blogs, and producing video content. When he’s not writing, you’ll likely find him biking, attempting to make the perfect ravioli, and/or scheming camping trips to remote places around the world.