Reengineering a software module typically involves assessing various factors such as code
complexity, maintainability, performance requirements, and the age of the platform. The goal is to
identify modules that are costly to maintain, difficult to understand, or are becoming obsolete due to
platform changes12.
Cyclomatic Complexity: This is a quantitative measure of the number of linearly independent paths
through a program’s source code. A higher cyclomatic complexity indicates a more complex and
potentially less maintainable module2.
Looking at the table provided:
Module A has a version number of 12 and a cyclomatic complexity of 9.
Module B has a version number of 3 and a cyclomatic complexity of 21.
Module C has a version number of 9 and a cyclomatic complexity of 4.
Module D has a version number of 11 and a cyclomatic complexity of 20.
Given these details, Module B stands out as the most likely candidate for reengineering for the
following reasons:
It has the highest cyclomatic complexity (21), which suggests that the code is highly complex and
may be difficult to maintain or extend2.
The version number being 3 indicates that it has undergone fewer iterations of updates or fixes
compared to the other modules, which might imply that it has legacy code that could benefit from
reengineering.