Occasionally businesses rewrite application software to retool, enhance performance, or re-platform to the cloud. Rewriting software applications starts with determining the complexity of existing applications. In this blog post, I will highlight the steps to determine software complexity and application re-write project planning.
The first step to determine software complexity is to identify the various parts. These parts can be UI layer, Service layer or Backend (Data storage). Not all application software necessarily have all these layers. Modern applications can have only UI and Service layer, or just a UI layer.
The second step is to identify the complexity variables at each layer. For example in the UI layer, the number of UI controls, the number of validation functions are complexity variables. For the Service layer, the number of classes, the number of functions can be complexity variables.
The third step is to associate weight corresponding to each of the complexity variables identified in step two. The weight is a relative number to determine how complex the variable is. The weight is a multiplier of the complexity variable like x1, x1.25, x1.5, x1.75, x2.
The forth step is to put the complexity variables in a tabular format with the variables as rows and count, complexity weight, total complexity as columns. An example is below.
The last step is to determine the complexity value, either simple/medium/complex, based on the value of the [Total Complexity (count*weight)]. Complexity value determination depends on the nature of the application, the team composition, and the technology or tool chains used.
In conclusion, knowing existing application complexity helps to estimate the effort to rewrite the application, re-platform the application, or migrate the application from one version to another.