As an old saying in the IT industry goes, you can’t manage what you can’t measure. 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 a number of system interfaces and intricate requirements, software systems can become too complex that applications and portfolios become too pricey to maintain and too unsafe to enhance. 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.
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 look good, but the result will be inaccurate. Therefore, it is also a must to measure the module’s coupling and cohesion in the codebase before a true system-level, software complexity measure is achieved.
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.
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. By controlling complexity, organizations can preserve the value of their software assets as well as sustain their utility.
There are codes that are so complex that they’re just not worth saving. With evidence of what it would cost to rewrite, IT managers can decide whether to maintain existing code or just write a new code.