As an old saying in the IT industry goes, you can’t manage what you can’t measure. Understanding the complexity of an organization’s application portfolio offers insight into how it can be managed best. The biggest problem is that the things that make up software complexity – overwritten and rewritten code, legacy system remnants, etc. – are the very same things that make measuring it a feat.
In some cases, with so many system interfaces and compound requirements, the complexity of software systems can spiral out of control, leading to soaring costs and risks. Software complexity can thrive in completed projects if left unchecked, and the result are bloated, unmanageable applications. In fact, as IT experts would say, software maintenance necessarily comes with degradation.
Good thing a number of methods have been devised for software complexity measurement, including cyclomatic complexity, which quantifies control flow in a program. A program that has more conditional logic is more challenging to understand, but by measuring cyclomatic complexity, it is easier to see how much will require management.
Using cyclomatic complexity on its own can bring incorrect results, however. No matter how complex a module is, it can still have minimal interactions with modules on the outside. On the other hand, a module can be relatively simple yet be highly coupled with several other modules, which raising the general complexity of the codebase to no measure. In the first illustration, complexity metrics will seem bad. In the second, they will look good, but the result will be inaccurate. In other words, measuring the coupling and cohesion of the modules in the codebase is necessary as well if a true system-level, software complexity measure is to be attained.
There’s a number of ways organizations can take advantage of this information, and the following are the top five:
Once a code’s level of maintenance complexity is determined, it becomes easier to determine the level of maintenance that will be needed for it.
Software Risk Management
When software complexity is well-managed, the risk of introducing problems into production is also reduced.
Being proactive in terms of avoiding too much or less important software complexity can reduce costs as an organization as able to prepare for what is to come.
As seen in past years, too complex applications lead to issues. Organizations can maintain their software assets’ value and extend their usefulness by maintaining reasonable complexity.
Some codes tend to be extremely complex and thus not worth the save. Showing how much a rewrite would cost, a choice can be made between maintaining the current code or rewriting it all over.