As an old saying in the IT industry goes, you can’t manage what you can’t measure. 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. Unless corrected, software complexity can run rampant in finished projects, leaving behind puffed, burdensome 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. 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, 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 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 example, complexity metrics will look unfavorable. In the second, they will seem to be better, but the result will be incorrect. 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.
Organizations with this information can gain from it in several number ways, the following being the top five:
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 Management
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 seen in past years, too complex applications lead to issues. When complexity is in check, organizations are able to preserve the value of their applications and also lengthen their use.
Some codes tend to be extremely complex and thus not worth the save. With evidence of what it would cost to rewrite, IT managers can decide whether to maintain existing code or just write a new code.