A proverb in the IT world says that if you can’t measure something, there is no way you can manage it. Understanding the complexity of an organization’s application portfolio offers insight into how it can be managed best. 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.
Fortunately, there have been a lot of methods created to measure software complexity, and among the most widely used is cyclomatic complexity, which measures the amount of 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. 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. Complexity metrics will be bad in the first scenario. In the second, they will appear to be good, and yet the result will be misleading. 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.
On this information, organizations can capitalize in many different ways, including:
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.
Keeping software complexity from being excessive or unnecessary should be done with a proactive approach, which works to control costs as an organization is able to prepare for possibilities.
As shown in recent years, excessively complex applications breed 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. Proving the costs of a rewrite, it can be decided whether existing code must be kept or a new code must be written altogether.