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. 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.
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. Unless corrected, software complexity can run rampant in finished projects, leaving behind puffed, burdensome 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. 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, the use of cyclomatic complexity by itself can turn in wrong results. Even if a module is complex, it doesn’t necessarily have lots of interactions with modules outside. A module can be comparably simple as well and yet highly coupled with a range of other modules, hence dramatically increasing the total complexity of the codebase. In the first illustration, complexity metrics will seem bad. 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:
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 Control
When software complexity is well-managed, the risk of introducing problems into production is also reduced.
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 shown in recent years, excessively complex applications breed 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. With evidence of what it would cost to rewrite, IT managers can decide whether to maintain existing code or just write a new code.