A proverb in the IT world says that if you can’t measure something, there is no way you can manage it. With knowledge into the complexity an organization’s application portfolio comes a greater ability to manage the same. The problem lies in the fact that the elements composing software complexity – legacy system remnants, overwritten and rewritten code, etc. – are the same factors that make it difficult to measure.
With several system interfaces and complicated requirements, the complexity of software systems sometimes goes out of control, making applications and portfolios too expensive to keep and too risky to improve. If left unchecked, software complexity can run wild in delivered projects, creating inflated, unwieldy applications. In fact, as IT experts would say, software maintenance necessarily comes with degradation.
Metrics of Complexity
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.
However, the use of cyclomatic complexity by itself can turn in wrong results. A module may be complicated but have fewer interactions with external modules. A module may be comparatively simple too, and yet it can be highly coupled with a lot of other modules, which then increases the full complexity of the codebase to a substantial extent. Complexity metrics will be bad in the first scenario. 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 Reduction
Software complexity management reduces the chances of issues being introduced into production.
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. By controlling complexity, organizations can preserve the value of their software assets as well as sustain their utility.
Codes can sometimes be overly complex that saving them comes with more harm than good. Showing how much a rewrite would cost, a choice can be made between maintaining the current code or rewriting it all over.