According to an old adage in the IT industry, it’s impossible to manage something that you are unable to 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.
In some cases, with so many system interfaces and compound requirements, the complexity of software systems can spiral out of control, leading to soaring costs and risks. If left unchecked, software complexity can run wild in delivered projects, creating inflated, unwieldy applications. In fact, IT professionals would say that to maintain software is to degrade it.
Metrics of Complexity
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. Programs that operate with more conditional logic are harder to understand, and measuring its level of cyclomatic complexity reveals how much has to be managed.
However, using cyclomatic complexity alone can lead to inaccurate results. Even if a module is complex, it doesn’t necessarily have lots of interactions with modules 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. In the first example, complexity metrics will look unfavorable. 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.
On this information, organizations can capitalize in many different ways, including:
Knowing the code’s complexity in terms of maintenance means knowing how much maintenance it will actually need.
Software Risk Management
With software complexity management comes less risk of bringing defects 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 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.
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.