28 January 2021

8 Best Practices to Apply in Maintenance Projects


Maintenance projects can be used for enhancement or defect fixing.

Enhancement projects are related to implementing new developments. If developers get new requirements, it’s possible to apply the standard Scrum practices with little or no modification.

Defect fixing projects focus on troubleshooting only. And the fixes need to be done as soon as possible.

Many customers don’t think about maintaining the application at the beginning of the project. And that’s a huge mistake. Why do they do that? Because of the “there’s luck in leisure” attitude. However, this is not the way.

So, what practices should we implement?

8 Useful Practices in Maintenance Projects

1. Regression tests, automated if possible

Depending on how “well” it is to be done, all applications should be tested to some extent. Whether you’re going to use Selenium or something else, choose tests that correspond with your desired goal. If there are no tests available for your app, it’s the best idea to create them.

Conducting tests also enables a safer refactor of a legacy code.

So, if you want to maintain the application and bring the value, testing is the only correct path. Every other one is patching holes and asking for more problems.

2. Analytical and design documentation

It is useful to describe how the application should work and look like by providing analytical and design documentation (with diagrams – states, etc.) and defining standards (mainly GUI). The analytical documentation can also come in handy when writing tests.

3. Application main flow tests

If you don’t have documentation and automated regression tests (for various reasons: short project implementation time, lack of such a requirement, limited budget), you should at least test the main application flow.

It’s absolutely necessary to secure the main functionalities of the maintained application before releasing the changes.

So, if you identified the main root blockers, describe them as test cases. It’s an absolute minimum for manual testers.

4. Appointing the coordinator and creating a user manual

A large proportion of the submissions and complaints are due to the user-unfriendly interface. That’s why it’s advisable to employ a coordinator who knows the app very well.
In the meantime, such a coordinator can work on creating a user manual, which describes how to use the application. They can also provide comments and suggestions of improvements proposed by the users to the development team.

5. Customer service training

The purpose of the user manual is to provide the information enabling the users to verify or modify existing maintenance training programs. Besides, the users can use the information from this guide (if it’s well-written) to solve some small problems on their own.

If it is not possible to create a competent user manual, at least train your customer service team to enable them to help your clients.

Creating and developing a maintenance system is a lengthy process. So, adapting the program correctly is key! Provide your team with frequent and solid trainings.

6. User education

It is also worth educating your users. Don’t forget about a bug/defect template:

  • a recurring scenario of triggering this error (as many details as possible)
  • how the application should work (preferably by indicating a piece of documentation)
  • date and time of occurrence,
  • who observed the error,
  • module,
  • version number,
  • environment (test/production)

It may be a good idea to organise workshops for users to help them understand complex features.

7. Implementation mode

The next step is the implementation mode of the application versions and prioritising maintenance tasks.

The current trend is to constantly repair all the issues. Unfortunately, it negatively influences the quality.

Another common problem is setting the iteration length. If the defects occur on an everyday basis, it makes the life of the development team difficult. So, it is important to determine the mode of implementation of subsequent versions of the application.

If it’s not possible to test the whole application automatically, it is worth focusing only on blocking errors in the first place. As the description implies, a blocking error is a huge issue. Then, group the rest as high, medium, and low-priority repair tasks.

A queueing system could be one of the responsibilities of the coordinator.

8. Routine maintenance

Routine maintenance is not dependent on any “broken” parts of code or downtime. It includes some necessary activities such as refactoring and is generally performed on a monthly basis. But once you have a well-grounded Maintenance Checklists, you can determine how often you should perform routine maintenance. The Maintenance Checklists can be useful and should contain the list of commands:

  • Verify if your backups are working
  • Check application updates
  • Check Workflow standard
  • Update the documentation, if needed
  • Update test cases, if needed
  • Inform users about application release
  • Inform users about implemented changes.

Managing Maintenance Projects Like a Pro

Summing up, the software maintenance best practices consist of ensuring competent documentation, creating scenarios to test the results, and having well-trained personnel.

It’s also crucial to include the end-user in the process of execution of the software application and learn from their feedback.

Always remember to track and describe all the issues, to improve your product and to avoid any future problems.

Needing support? Find out more about Extended Teams!

Agnieszka Topczewska-Pińczuk
Scrum Master | Project Manager

I believe that anything I do, I do for the end-user. I maximise value by:

- setting a path to the product's goal, helping developers do what they need to do

- frequently inspecting the result of their work to confront assumptions with reality

- adapting to the changing needs of Stakeholders based on feedback and measurable data.

I manage IT products agilely and know how to make your vision a reality. Would you like to work with me?