As an old saying in the IT industry goes, you can’t manage what you can’t measure. The first step to effective management of an organization’s application portfolio is grasping its complexity. 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. Software complexity can thrive in completed projects if left unchecked, and the result are bloated, unmanageable applications. In fact, IT professionals would say that to maintain software is to degrade it.
A variety of techniques have fortunately been established for measuring software complexity, among which is cyclomatic complexity, which determines a program’s amount of control flow. 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. 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 appear to be good, and yet the result will be misleading. It is thus crucial for the coupling and cohesion of the modules in the codebase to be measured too so get a true system-level, software complexity measure.
Organizations with this information can gain from it in several number ways, the following being the top five:
Knowing the code’s complexity in terms of maintenance means knowing how much maintenance it will actually need.
Software Risk Control
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 reported in the last few years, when applications are too complex, they give rise to various 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.