According to an old adage in the IT industry, it’s impossible to manage something that you are unable to measure. With knowledge into the complexity an organization’s application portfolio comes a greater ability to manage the same. Posing a challenge is the fact that the issues comprising software complexity – antiquated code, the integration of formerly proprietary applications, etc. – are the exact same elements that make its measurement arduous.
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. Software complexity can thrive in completed projects if left unchecked, and the result are bloated, unmanageable applications. Experts would even say that the act of maintaining software itself comes with some extent of 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. It’s more difficult to understand programs that run with more conditional logic, but by measuring its cyclomatic complexity, it becomes clear how much needs to be managed.
However, using cyclomatic complexity alone can lead to inaccurate results. No matter how complex a module is, it can still have minimal interactions with modules on the outside. 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 seem to be better, but the result will be incorrect. 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:
By knowing the level of complexity of the code, it becomes easier to know how much maintenance will be required for a program.
Software Risk Reduction
With software complexity management comes less risk of bringing defects into production.
It is important to be proactive when preventing excessive or unnecessary software complexity as this lessens maintenance costs when an organization is ready for eventualities.
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.
There are codes that are so complex that they’re just not worth saving. Proving the costs of a rewrite, it can be decided whether existing code must be kept or a new code must be written altogether.