Software Quality Management and reducing Software TCO
Summary
This article focuses on how IT leaders and executives of organizations that own and/or build their software, can gain if they become more aware of the Total Cost of Ownership (TCO) of their systems and how to reduce it significantly with Software Quality Management (SQM).
Implementing SQM best practices can be key to lowering software TCO. These practices focus on addressing tech debt, minimizing unnecessary costs related to ‘Keeping the Lights On’ (KTLO) activities, enhancing software quality and security, and empowering IT leaders to make more strategic decisions for future investments and improvements.
We’ve identified 6 practical steps to reduce the TCO of your software systems, which are described in more detail below:
- Identify the cost of your software portfolio
- Compare cost spending to your business priorities
- Prioritize systems based on their cost and importance
- Measure and improve code quality
- Set and track quality goals
- Achieve goals through continuous improvement
Total Cost of Ownership in a software quality management context
Let’s first clarify that the term “Total Cost of Ownership” (TCO) is a broad business term used to encompass the true cost of owning something—in other words, not just the initial budget or price tag, but all the associated hidden costs as well.
The term TCO is used in a variety of business situations.
For the sake of clarity, this article will only focus on its relation to software engineering and development for organizations that own the source code of their software systems.
When owning custom software systems—whether developed in-house or through external vendors—the TCO is often more complex than it seems.
Much like an iceberg, the bulk of costs remain hidden beneath the surface. These include not only maintenance, feature enhancements, and code refactoring, but also a range of opportunity costs that are easy to overlook.
Failing to understand the TCO of your software systems can result in overspending or misallocating resources, preventing you from investing in the projects that could accelerate your success.
This is precisely where Software Quality Management (SQM) can be of value.
What is software quality management (SQM)?
In a nutshell, SQM is an ongoing process dedicated to ensuring software meets its intended functions and is built correctly. It incorporates best practices in quality assurance, planning, and control, allowing for comprehensive evaluation of software throughout the Software Development Lifecycle (SDLC).
Much of software quality assurance focuses on what the software does, ensuring it functions correctly, is free of flaws, and provides a great user experience.
While these functional aspects are crucial, they only address part of the overall quality. Often overlooked but equally important are the non-functional requirements.
Functional and non-functional requirements
- Functional requirements define what the system does or must not do, whereas non-functional requirements specify how the system performs these tasks.
- Non-functional requirements, such as build quality, do not affect the basic functionality but are essential for assessing internal quality.
With the total cost of ownership (TCO) of software largely determined by build quality, internal quality is often undervalued.
But did you know that 60% of all bugs come from having poor internal quality?
Getting awareness before creating IT cost-reduction strategies
But even while including the non-functional quality aspect of software, it is still challenging to accurately quantify the true costs and Total Cost of Ownership (TCO) of source code.
Like we mentioned earlier, there are many hidden costs.
In addition, the idea that software continues to cost you once it has been developed is not always taken into consideration. That’s right, let’s show you what we mean.
Code growth and changes during the different software development life cycle phases
Generally speaking, software systems go through distinct life-cycle phases:
- The development phase
- The evolution phase
- The maintenance phase
- The decommissioning phase
- The end-of-life phase
As you can see in the table taken from our 2023 benchmark report, growth and change rates in source code vary across these phases.
Depending on the size of your systems and the teams working on them, you can see that code is being added and changed throughout the life cycle of a system.
The initial development phase is characterized by rapid code growth and frequent changes as a stable, feature-rich product is built.
In the evolution phase, feedback-driven features and scalability improvements are made, leading to the addition and modification of more code.
During the maintenance phase, code growth slows down, while the focus on bug fixes and small updates increases. In many cases, even during the decommissioning phase and the end-of-life phase, some changes to the code are still required.
You can probably already guess what this means for the TCO of your software. More changes and adding new code to a system means more work for developers.
However, to get a good understanding of the TCO of software development and begin establishing IT cost-reduction strategies, it’s important to look beyond the average code growth and changes, or the FTEs required, those are just the basics.
Often, there is more to it. Let’s take a look.
KTLO
The term “Keeping The Lights On” (KTLO) is another one of those terms that is broadly used in a variety of situations. As we promised this article only focuses on the TCO of software development specifically, we will only look at KTLO through that lens.
What is KTLO?
In its essence, KTLO refers to basic systems and infrastructure maintenance, in other words, it refers to all the actions you need to take to stay operational without improving anything.
So, what is KTLO in the context of the software development lifecycle (SDL)?
Essentially, KTLO costs within the SDL are composed of the various ‘maintenance’ costs described above—everything from fixing bugs, to updating and changing code just to keep your systems operational, or in other words, your baseline spend of resources without making anything better.
Maintenance: the hidden base of the iceberg
To keep your software maintenance costs low, ‘maintainability’ becomes key.
Here At Software Improvement Group, we believe the measurement of maintainability, an aspect of software quality as defined by ISO/IEC 25010:2011, is a core element of software assurance.
When we talk about Maintainability, we mean the ease with which you can repair, improve, and understand the source code of your software.
In terms of TCO and ROI, maintainability plays a major factor in keeping software-related costs low, and business agility high.
It may be somewhat shocking to learn that on average maintenance—or KTLO—costs tend to account for around 70% of your entire software TCO. Much of these costs—estimated at around 30% at least—are essentially wasted navigating technical debt.
What is technical debt?
Technical debt, also known as ‘tech debt’ or ‘code debt’, occurs when build quality is sacrificed in lieu of more speedy delivery and improved time-to-market.
Remember the functional and non-functional requirements we spoke about earlier? So, if you only focus on the functional requirements, you may have a working system. However, by ignoring the non-functional requirements, that same system will be a lot less maintainable, reliable, and secure as it will have more technical debt.
Whether we like it or not, technical debt is a part of the technical landscape. The question shouldn’t be if you have it, but how you effectively manage it and how to prevent it from piling up.
Did you know that CIOs estimate that on average between 20-40% of their enterprises’ entire tech budget is diverted to tackling technical debt? Quantified globally, the technical debt generated by old, low-quality code is estimated at a staggering $1.52 trillion.
Managing technical debt throughout the SDL
At our recent IT leadership event, SCOPE 2024, Cor van Herk, IT director at Keylane, the leading European supplier of SaaS platforms to the insurance and pension industry spoke about technical debt and their strategy to effectively manage it throughout the SDL.
When looking at the TCO of software, you can view technical debt as the source of the surplus time and labor costs required to maintain poor code, as well as the source behind the financial and reputational risks of having to deal with potential vulnerabilities and security threats—all of which, can be avoided when prioritizing build quality from the outset; something which, you guessed it, Software Quality Management enables organizations to do.
However, there is another critical component of software TCO that we must not overlook: opportunity costs.
Opportunity costs
Just like some of the other terms in this article, “Opportunity costs” is a commonly used business term. Opportunity costs are used to cover the various potential gains and losses of making one choice versus another.
In some cases, even for software development. This is relatively easy to calculate.
For example: if a software system requires 10 FTEs to build and maintain, the cost for those FTEs reduces your capacity to work on other systems. This is straightforward.
However, if you don’t work on another system, what are you missing out on? These are the opportunity costs.
But here’s where it gets interesting. How do you know which system your development team should be working on?
Without having a clear overview of your software portfolio, it becomes easy to overlook opportunities that other systems hold, and can lead to missed value.
But again, there is even more to it.
There is a specific aspect within software development that has very high opportunity costs yet is extremely hard to quantify: cybersecurity.
Security breaches are on the rise in a world increasingly dependent on ‘digital transformation’.
Opting not to incorporate secure coding practices during development or choosing cheaper, less reliable security measures to cut costs in the short term can result in significant vulnerabilities. When exploited, these can often lead to higher costs in the long run.
The cost of a security breach
The cost of data breaches is increasing annually due to emerging attack methods, vulnerabilities, and risks. IBM’s Cost of a Data Breach Report 2023 indicates that the average cost of a data breach in 2023 was USD $4.45 million.
At Software Improvement Group, we have found that there is a direct relationship between the quality of software and the emergence of vulnerabilities. By integrating software quality throughout the entire software development lifecycle (SDLC), you can not only detect vulnerabilities early but also enhance your business’s defenses against such threats.
Regrettably, 51% of organizations are planning to increase security investments due to a breach.
Knowing what you know now that probably sounds like an expensive choice. So, how can your organization get everything in perspective?
The complexity of software TCO often affects IT cost-reduction strategies
Now that we have looked at some of the different factors influencing the TCO of software systems, it becomes clear that identifying the costs associated with software is –due to their complexity – often poorly understood or at times even overlooked entirely.
Yet, having a clear overview of TCO is fundamental for financial decision-makers in your organization.
Having a fully costed TCO will help financial controllers to better understand where their organization’s money is being spent, as well as how cost cuts in the wrong places could negatively affect the quality of the software and its maintainability.
In a nutshell, conducting a thorough TCO assessment of your software systems can help you identify:
- Necessary hidden costs to better budget for.
- Unnecessary or excessive costs to reduce or eliminate.
The Role of Software Quality Management in reducing Total Cost of Ownership
Having discussed the numerous factors that contribute to the total cost of software ownership, we’ll now take some time to explore the role software quality management plays in helping you to reduce these expenses.
At the most essential level, software quality management helps you to ensure that the source code your organization owns and the software it develops is maintainable and more secure.
By prioritizing quality and security and embedding these characteristics throughout the SDLC, Software Quality Management can minimize the technical debt incurred, optimize KTLO expenditure, and become more resilient against cybersecurity threats. And help you to make better decisions—in other words, SQM reduces your TCO.
Based on our data, here are a few statistical examples of the impact higher-quality software (optimized with SQM) can have on your Total Cost of Ownership:
- High-quality software can cost up to 50% less to maintain (reducing KTLO costs and technical debt)
- High-quality software is up to 5x faster to modify (lowering labor costs and increasing time-to-market)
- High-quality software is 2x more secure (reducing cybersecurity vulnerabilities)
- High-quality software can save up to 17% in energy costs (as above)
- High-quality software significantly improves developer satisfaction (improving employee productivity and retention)
6 practical steps to reducing software TCO with Software Quality Management
Now that we know what affects the Software TCO and that focusing on having better build-quality of software has numerous benefits, let’s dive into some tangible steps your organization can take to begin reducing the TCO of your software.
1) Identify the cost of your software portfolio
First things first, it’s important to have a clear, and up-to-date overview of your current portfolio—the size of your systems, its architecture, and the different teams and technologies involved.
By having this overview, you can start to spot areas of excessive spending, high technical debt, and critical security risks, —all of which will need to be tackled if you are to reduce your software TCO.
2) Compare cost spending to your business priorities
Taking the costs of your portfolio outlined above, the next step would then be to compare these costs with your organizational priorities—i.e., your goals and KPIs.
Apportioning costs to various priorities will quickly highlight those that do not contribute to achieving your goals or add value to your business. These are the costs you can target for reduction or elimination.
3) Prioritize systems based on their cost and importance
With the first two steps taken, as detailed above, you can start to funnel resources away from budget-eating systems and toward those with greater potential.
For example, SQM may help you to identify that 50% of your software development budget is in fact being spent on fixing bugs, navigating spaghetti architecture, and the like—in other words, on repaying your technical debt. This discovery makes it clear that you need to prioritize your software’s maintainability, rather than its turnaround time.
Imagine what you could do with more development capacity? You could focus on creating or improving systems that directly contribute to the success of your organization without needing to increase expenses.
4) Measure and improve code quality
With key, profitable areas for investment identified and reprioritized, you can move on to improving the quality of your software using SQM.
At each stage of the SDLC, SQM helps you and your development team to build software that can be quickly and easily maintained and fixed, now and in the future. SQM also encourages a highly secure level of coding to minimize potential cybersecurity vulnerabilities in your software.
By measuring the quality of code during the entire SDL, you can easily spot where to improve before it becomes an expensive problem.
5) Set and track quality goals
By setting clear goals around software quality, you can improve the quality where it matters most for your business. Do you need to better manage open-source libraries to mitigate security risks? Do you want to prioritize secure coding practices? Do you want to reduce technical debt in critical systems? Set a goal and make it tangible.
6) Achieve quality goals through continuous improvement
After achieving the goals you set out, set new ones, and improve even further. And after that? Repeat.
By continuously controlling the quality of your software portfolio, you will have less costs, be more secure, operate better systems, and have more development capacity to focus their attention on where it matters most for your organization.
Conclusion
Software Quality Management is a means of taking back control of your Total Cost of Ownership.
With a little help, this can be accomplished more easily. Luckily, there are software assurance platforms or specific services out there that can help you implement and execute the 6 steps we described above.
For example. our leading Software assurance platform, Sigrid®, acts as a single source of truth for software excellence and can help you drastically reduce the TCO of your software systems. Visit our website for more information.