Introduction
Many software development clients misunderstand the costs they will incur, thinking software development services are a one-time payment. However, there have been some cases when software maintenance cost made up to 90% of the whole software development cost. Due to the fact that the costs were underestimated, the budget was violated, and in some cases, the project had to be shut down.
Modern software is challenging and complex, so it requires regular maintenance and support. This troubleshooting process is often time-consuming and convoluted. To simplify it, a dedicated team and proper documentation are a must.
Maintenance Costs Breakdown
Software maintenance is defined in the IEEE Standard for Software Maintenance (IEEE 14764-2006 – ISO/IEC) as the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment.
The software maintenance process consists of many different services that depend on the needs of the company and the prevailing market conditions. These services can be divided into four groups:
Corrective
These services include all of the work being done to eliminate the problems that the program or software may face after their delivery to the user. For example, the user cannot enter the system using social networks after starting the program. As it turns out, there is an authentication code that is connected to this social network. This code has a defect and needs to be updated to function correctly.
Adaptive
This group of services is driven by the need to modify the product to adapt to a changing environment. It can occur when a piece of software needs to run on a new platform or operating system, meet new hardware requirements, adapt to some novelties in its environment, or combat new security threats. For example, users successfully signed in through a social network, but after a few days, the login problem returned. After analyzing the problem, it turns out that the social network has changed the way they authenticate using their API, so the software needs to be updated to fix the problem. This example features a change in a third-party system, so it belongs specifically to the group of adaptive services.
Perfective
This type of service is usually based on user feedback and is aimed at improving productivity or convenience. Let’s go back to our example. There are no more problems with logging in using a social network, however, users have begun telling you that another problem had arisen or some functionality could be improved. After discussing the feedback received with the developers, a decision is made to fix the error or improve the functionality.
Preventive
This group of services aims to identify and eliminate potential problems or defects before they even have time to appear. These services can include code optimization for the sake of efficiency or ease of maintenance, or keeping all documentation up to date. Let’s continue to follow the example. The developers have made changes to the software and expect an increase in the number of users. In order for the server to cope with the load and not crash at the most crucial moment, you need to make sure that it can withstand this flow of users and take preventive measures to avoid disaster. So, the hosting environment is made more scalable. This would be pointless if your system had lower traffic, but when you expect increased user loads, doing so is critical to success.
Factors Affecting Software Maintenance Cost
The factors affecting software maintenance cost are divided into two groups.
Technical
- Module independence. The ability to change any of the system’s program blocks without affecting the others;
- Programming language. Programs that are written in a high-level programming language are easier to understand than those in a low-level language. High-level languages include C ++, C #, Delphi, Fortran, Java, JavaScript, Lisp, Pascal, PHP, Ruby, Python, Perl. Low-level languages include bytecode, IL, assembly language, and CIL;
- Programming style. The ease of modifying and understanding a program is determined by the programmer’s writing method;
- Validation and testing the program. The more time is spent on checking the design and testing the program, the fewer errors are found in the program and the lower the software maintenance cost. Error correction costs are governed by the type of fault. Software requirement errors are the most costly;
- Documentation. Maintenance costs will be lower with clear and complete documentation;
- Configuration management techniques. One of the costs involved has to do with keeping track of system documents and ensuring their consistency. It means that effective configuration management can help reduce these costs.
Non-Technical
- Scope. When a software application is well-defined, system requirements are less likely to change over time, so maintenance due to changing needs is minimal. If the app something completely new, you should be prepared for significant support costs due to frequent changes in conditions as the user gets more experience with the software;
- Stable team. When the composition of the software development team changes, new team members will take some time to get the hang of everything. Because of this, making any changes to the software becomes more difficult;
- Software lifecycle. When software becomes obsolete, the original hardware is replaced, and the conversion costs exceed the rewrite costs;
- The external environment. When software depends on the external environment, modification is necessary at the slightest external change;
- Stability of hardware. If the software is executed on a specific hardware configuration that does not change during the entire lifetime of the software, then maintenance costs are reduced to zero. However, this situation is quite rare due to constant hardware development.
How to Estimate Software Maintenance Cost
Estimating software maintenance cost is often very complicated because of the numerous factors and components one needs to keep in mind. The first thing you have to do is make a clear plan of the actions that must be performed during the maintenance process. Then the IT department does the analytics. They will estimate the time necessary to complete each task and give you developer rates. The final step is making calculations based on the information received. If done properly, you’ll get your software maintenance cost.
Some time ago we released a post about Android app development costs. Feel free to read it!
There are some things you should consider when making a plan for costs estimation:
- All the fees involved in hosting services, purchasing and prolonging software licenses, and any SaaS accounts;
- iOS and Android account fees, if you are developing a mobile application;
- The cost of debugging: the number of bugs times the cost of one bug;
- Possible design updates;
- Plugin updates, third-party software support;
- Code refactoring.
It’s not the full list of the things to keep in mind, but it does contain the most crucial points you can’t miss under any circumstances.
Now imagine that we have a mobile app to maintain. Let’s try to calculate the approximate budget.
- An app hosting server can cost anywhere from $70 per month up to $320 per month, which largely depends on such factors as the app’s content, the number of active users, and its projected growth;
- The fees for iOS and Android accounts are 99$ and 25$ respectively;
- Software licenses can be free (say, for using iTunes) or cost up to tens of thousands of dollars (say, for using EDA tools);
- SaaS account fees can be up to a thousand dollars;
- Let’s say your developers’ rate is 55$/hour and the time needed to eliminate one bug is 1 hour. If the average amount of bugs per month is 20, you will need to spend 1100$ on debugging;
- According to Upwork, the average hourly rate of a designer is 25$. For example, a quick design update requires about half a week of work. So, designer services will cost you 500$ a month;
- In a perfect world, there is no need for code refactoring because everything is ready long before the app’s release. But in reality, there are situations when developers have to write code very quickly. As a result, the code often ends up being pretty messy, so it requires some refactoring. A developer needs up to 3 hours to finish this task. According to the mentioned rates, it will cost about 150$.
Of course, other expenses may arise. In fact, there are so many possible unforeseen costs, that it’s really hard to consider all of them. There are several main factors that make up the total software maintenance cost. Let’s make some calculations with those factors.
According to our calculations, the software maintenance cost for a mobile application is about 5.600$ per month or 66.900$ per year.
How to Reduce Software Maintenance Cost
DevOps is a highly efficient programming technique that helps minimize maintenance costs. Using this practice can make software development continuous, where existing modules are still functional and can be used by the company during the modification process. DevOps helps you achieve a smoother transition after making the necessary changes.
Some time ago we released an article “Who is a DevOps Engineer?” where we talked about DevOps engineers and how they could improve your business.
Automatic site monitoring tools can save you the time and resources it takes to regularly check for errors. Examples of such services: Monitis, Site24x7, UptimeRobot, etc. They can help you configure the monitoring of various site errors and facilitate the process of finding and eliminating them.
Do not forget that you can reduce software maintenance cost by considering all the possible factors and having a clear maintenance plan.
Conclusion
There is no universal formula for calculating the exact costs of software maintenance yet. Many authors argue over this issue and cannot come to a consensus. Maintenance costs can make up to 90% of a software project’s total cost. It varies on a case by case basis.
In our article, we talked about the various factors affecting software maintenance cost, as well as the groups of services involved. If you want to avoid wasting resources and make sure that the maintenance of your software will meet the needs of your users and business as much as possible, consider the support of a reliable company. Bamboo Agile can become your great partner in software maintenance and support. Contact us to get a free consultation and put your software in competent hands!