Software maintenance or support is one of the last phases of the software development life cycle. After the software was delivered to the customer, the support began and based on a survey the effort of on maintenance is around 60% of the total work (Kaur and Singh, 2015). Among the different challenges, I found three that I’ve encountered supporting software systems:
For many years I’ve participated in supporting implementations of ERP, and one of the main issues that always faced was supporting upgrades to the software. When a new version was released by the vendor, there were many tasks involved and a lot of effort from the team. We had to analyze what were the impacts of the changes introduced, retrofit the custom developments that were added by the support team as part of new adaptative maintenance and perform regression testing to ensure that nothing was going to break any functionality in production. The upgrade process has usually taken many months, and it was an expensive effort, it was much like re-implementing the system again. As an example to solve this problem is the “One approach” used by Workday, where all the customers are in the same platform, and they perform the patching and upgrades without the customers even noticed. This concept can be applied thanks to cloud architecture.
Documentation and Knowledge transfer
A different situation that I’ve battled during my support experience is the lack of documentation of what was done, how was done, more importantly why it was done, and it’s dependencies. When you have an ERP system that has thousands and thousands of lines of code, it is very challenging if you don’t have the proper documentation to know where the problem was originated, and most of the times the solution was adding a patch on top to solve the problems. The answer to this problem is to ensure that the documentation is required as a deliverable from the implementation project and has to be reviewed as part of the transition from the project team to the support team. Also, it is recommendable to do knowledge transfer sessions between the groups and document them. Another alternative that we used, and it is compelling, was to do job shadowing and reverse shadowing for some time.
Lastly, another main challenge that I’ve encountered was the lack of knowledge of the different users to use the system which causes many issues while using the software. This problem was mainly because during implementation, the training sessions were very few, and the user manuals were not very extensive. Also, caused by the same problem, users were demanding functionality that it was already existing in the system, but they were not aware of it. For the users to have a better understanding of what is delivered, they have to be more involved during the development process and provide better documentation that will reduce the overall maintenance cost.
Kaur, U. and Singh, G. (2015) ‘A Review on Software Maintenance Issues and How to Reduce Maintenance Efforts’, International Journal of Computer Applications, 118(1), pp. 6–11. doi: 10.5120/20707-3021.
Kidambi, P.C.(2003) Maintenance issues in Software Engineering. Available at: http://www2.latech.edu/~box/ase/tp_2003/CS532Termpaper_Kidambi_Praveen%20Chandra.doc (Last Accessed: February 2019)
Swete, S (2011) Five Reasons Why SaaS Updates are Better Than ERP Software Upgrades. Available at: https://blogs.workday.com/five-reasons-why-saas-updates-are-better-than-erp-software-upgrades (Last Accessed: February 2019)