- 1. Importance of software maintenance and support
- 2. How does software maintenance affect software quality?
- 3. How do you estimate maintenance costs
- 4. Maintenance costs estimation in practice at Inetum Poland
- 5. Strategies to enhance software maintenance activities’ effectiveness
- 6. Real-world example – Inetum taking over system maintenance
- 7. How does software maintenance fit into the software development life cycle?
Importance of software maintenance and support
According to a Stripe report on developer efficiency, the average developer spends over 17 hours a week dealing with maintenance issues. The report highlights that over 50% of developers find legacy system maintenance and technical debt to be the biggest obstacles to productivity. Bug fixes and refactoring are key parts of maintenance, but they are not the only tasks.
How does software maintenance affect software quality?
Software quality is challenging for both new and old systems. New systems need optimization, while older systems, like legacy business applications, require work on technical debt, which can cause bugs or affect performance and availability.
How do you estimate software maintenance cost?
The cost of hiring developers or DevOps varies based on seniority and project needs. While hiring full-time staff requires fixed costs, using third-party AMS providers offers a flexible budget. For example, in a Shared Team model, a specialist not currently working on your project can be assigned to another client.
Type of application
Maintaining different enterprise software requires specialists with specific expertise. Custom applications need both development and maintenance. Cloud applications require support from cloud engineers and architects. Enterprise applications, especially critical ones, need high availability and performance, while financial systems require high security.
Additional services and maintenance activities
During maintenance, needs for additional maintenance tasks may arise, such as migrating to the cloud, rewriting the application with newer technology, or implementing AI solutions. These services and maintenance activities will increase costs. Performance optimization might include load testing and improving efficiency.
Type of platform
The platform also matters. A mobile app, for example, requires compatibility and accessibility testing across devices and browsers.
Age of application
New applications (up to 2 years old) often need both development and maintenance. Older applications (over 3 years old) may need work on technical debt, system rewrites, or more testing.
Level of support
There are typically three levels of support: Level 1 for customer contact, Level 2 for log investigation, and Level 3 for complex issues at the code level.
Support time coverage
Support time varies from an 8/5 to a 24/7 model, depending on application criticality and severity. For highly critical systems, SLAs often guarantee 99.999% uptime. It’s wise to estimate the number of incidents and bugs that may require attention.
Integrations
The number of integrations with other systems impacts maintenance costs. More integrations mean more potential issues, which require careful management and possibly specialized tools.
Technology stack
The technology stack plays a crucial role in maintenance costs. Older or less common technologies may require more specialized skills, making maintenance more expensive. Newer technologies can reduce costs due to better availability of developers and tools.
Maintenance cost estimation in practice at Inetum Poland
At Inetum Poland, during due diligence, we categorize each application we acquire for maintenance. This process is key to estimating future costs and involves completing a technical questionnaire with 50 questions. This comprehensive approach helps us consider all risks and estimate costs accurately.
- Business priority affects maintenance costs. High-priority applications need more resources to ensure reliability, security, and alignment with business goals.
- Complexity also impacts costs. Complex applications require specialized skills and tools for effective maintenance.
Business priority refers to the importance of an application in achieving the organization’s strategic objectives. The cost of acquiring and maintaining an application is heavily influenced by its business priority, as higher-priority applications require more resources and attention to ensure they remain reliable, secure, and capable of meeting business needs.
- Support. High-priority applications typically require higher levels of service, including 24/7 support, rapid response times, and dedicated resources. This ensures minimal downtime and immediate resolution of any issues, which is critical for applications that directly impact core business functions.
- Upgrades and improvements. To maintain their competitive edge and meet evolving business requirements, high-priority applications often undergo frequent upgrades and enhancements. These updates ensure that the application remains aligned with business goals and adapts to changing market conditions. However, each update requires development, testing, and deployment efforts, contributing to increased costs.
- Monitoring. Applications deemed high priority often require proactive monitoring and maintenance to prevent disruptions. This involves continuous monitoring, automated alerts, and regular health checks to identify and resolve issues before they impact business operations. The need for advanced monitoring tools and additional manpower to provide ongoing oversight adds to the maintenance costs.
Complexity refers to the technical complexities and functional sophistication of an application. The complexity of an application can significantly affects the cost of both acquiring and maintaining it, due to the specialized resources and extensive efforts required to manage it effectively.
- Skills. Maintaining a complex software product often requires a team with specialized skills and deep expertise in the technologies and frameworks involved. Recruiting, training, and retaining such talent increases operational costs, as these professionals command higher salaries and may require ongoing education to keep up with evolving technologies.
- Complex troubleshooting and problem solving. Complex applications often face more frequent and difficult problems due to their complex interdependencies and advanced functions. Resolving such problems can be time-consuming and require the coordination of multiple teams. Longer troubleshooting times and the need for advanced diagnostic tools increase maintenance costs.
- Integration. Complex applications that handle large volumes of data or integrate with numerous other systems pose additional challenges in data management and system integration. Ensuring data integrity, consistency, and compatibility with new updates or systems can require specialized tools and expertise, driving up both acquisition and maintenance costs.
Strategies to enhance software maintenance activities’ effectiveness
Audit of the software maintenance process
Maintenance work is a labor-intensive and repetitive task. It may be that a company maintains its system by carrying out regular updates and rewriting code. But are you sure everything is running correctly? Is the code of good quality? Are the releases delivered with sufficient frequency? It is worth commissioning an audit to ensure that maintenance work is not sometimes putting a strain on the budget. Or perhaps some processes can be automated (e.g. automation of the CI/CD pipeline).
Delegating software maintenance to an application maintenance company
Access to specialists, maintenance of documentation, and team rotations are not conducive to maintenance work. Companies, in search of alternatives, are turning to professional application maintenance services. It is worth knowing the risks and benefits associated with this model – if the handover of systems follows a set of good practices, such a service can prove to be a hit, freeing up internal resources.
Read also: Best predictive maintenance software solutions for 2024 and beyond
Real world example – Inetum taking over management of systems maintenance
Application Maintenance Services (AMS) for a European telecom leader
The client
Our client is a European leader in wireless telecommunications infrastructure who provides innovative connectivity solutions across the continent. The company has a robust portfolio of telecommunications infrastructure, making it a critical player in the European market.
Objective of cooperation
The main goal was to take over the maintenance and development of 13 critical applications for a period of two years. This included providing second and third-line support with a 12/5 support model, application monitoring, performance management, troubleshooting, and maintaining and updating technical documentation.
Challenges
- Tight Deadline for Application Integration
The client required the applications to be incorporated into the Application Maintenance Services (AMS) of Inetum Poland within a very short timeframe. The quick transition called for rapid onboarding and knowledge transfer, which posed a risk of operational disruption. - Team rotation risks
High turnover within the team could lead to loss of critical knowledge and impact the quality of support. This could result in service interruptions and decreased efficiency. - Long-term strategic partnership
The client had a long-term vision of acquiring 100 applications across various technologies and sought a strategic partner for this journey. Ensuring consistent and high-quality service delivery to secure this long-term partnership was crucial. - Cost estimation for small development tasks
Estimating costs for small development tasks accurately was difficult due to the varied and unpredictable nature of these tasks. Inaccurate estimations could lead to budget overruns or underutilization of resources.
Our solution
- Parallel operation during transition
We implemented a parallel operation model during the transition phase to ensure seamless integration. This allowed the old and new teams to work simultaneously, facilitating knowledge. - The optimal size of the transition team
We defined a transition team of two developers dedicated to the task. This ensured that there were enough resources to handle the transition effectively while maintaining operational continuity. - Industry expertise
We highlighted our experience in the Telecom industry and showcased similar references in the software maintenance area to demonstrate our capability and understanding of the client’s needs - Collaboration across Inetum Group
Also, we demonstrated the technological capabilities of collaboration across the Inetum group, and talents availability. - Defined pool for minor development changes
Inetum introduced a “100 man-days model” to be used specifically for minor development changes. For example, when a change comes in, we price it e.g. for 5 days and take the amount of man-days out of the pot that has already been paid to us beforehand. This provided the client with a flexible and predictable cost structure
Benefits for the client
- Service continuity
The parallel operation during the transition ensured that the service remained uninterrupted. - Mitigated risks
By defining a dedicated transition team and a man-day pool, we mitigated risks associated with team rotation and unpredictable minor software development tasks. - Strategic partnership
Industry expertise of Inetum and collaborative approach positioned us as a strategic partner for the client. - Vast talent pool for flexible solutions
The collaboration across the Inetum Group with 28k specialists on board allowed us to offer scalable and flexible solution with prospects for further growth.
Streamline Your Application Maintenance Leszek Jaros, our Head of Telco and AMS Practice, is here to help you navigate the complexities of Application Maintenance Services. Book a consultation to boost your application's efficiency Schedule a meeting |
How does software maintenance fit into the software development life cycle? The four types of software maintenance
Not every software release turns out to be a success. However, if the software fulfills its function and is useful to users, it will be supported, developed, and maintained for most of its life cycle. In this context, we must mention 4 types of application maintenance.
System maintenance services aim at handling issues and upgrades, providing security patches, and making performance enhancements to ensure the software operates smoothly and efficiently. System maintenance services, if handled properly, will translate into cost savings, improved productivity, better performance, and a more optimized and secure system.
What is corrective maintenance?
Software maintenance is essential for ensuring that applications continue to function effectively over time. There are four main types of maintenance that developers typically engage in. The first is corrective software maintenance, which addresses bugs and issues that arise during the software’s operational phase. This type of maintenance is crucial for keeping the software reliable and functional.
What is adaptive maintenance?
Next, adaptive software maintenance involves making necessary adjustments to the software to accommodate changes in the environment, such as new operating systems or hardware. This ensures compatibility and performance in evolving technological landscapes.
What is perfective maintenance?
Another type is perfective software maintenance, which focuses on enhancing the software’s features and performance based on user feedback and requirements
What is preventive maintenance?
Lastly, preventative software maintenance aims to proactively address potential issues before they escalate, helping to keep the software robust and minimizing future problems. Each of these types of maintenance plays a vital role in sustaining software quality and longevity.
Summary
Software maintenance is crucial for ensuring applications run smoothly and efficiently. By reducing IT resources for maintenance, companies can allocate more resources to improvements and innovation. While maintenance is challenging, with the right strategies, companies can manage costs and improve performance.
- 1. Importance of software maintenance and support
- 2. How does software maintenance affect software quality?
- 3. How do you estimate maintenance costs
- 4. Maintenance costs estimation in practice at Inetum Poland
- 5. Strategies to enhance software maintenance activities' effectiveness
- 6. Real-world example – Inetum taking over system maintenance
- 7. How does software maintenance fit into the software development life cycle?