Refactor

Overview

We define a migration as a refactor as when we change the application code of an application, but we don’t change the base functionality that is presented to the user or through interfaces. In some cases, the application code changes are combined with a platform change in order that also make use of the additional capabilities made possible by the new platform.

In the vast majority of cases, a refactor implies a significant degree of replatforming. A pure refactor where only application code is changed are relatively rare.

Benefits

Time to migrate Score
Technical difficulty Score
Strategic Value Score

The benefit drivers for refactoring are, similarly for a replatform, mostly non-functional :

Of these. for refactoring, performance and scalability are probably the most likely drivers of change.

This category might also include some cases where significant changes to the application code framework are changed, and so we start to approach a more development style of project. An example might be if some specific functionality within a system is replaced with a new platform or architecture.

Challenges

The core challenge 0f any refactor is that changes are being made to application code, and so thorough regression testing becomes essential.

It’s likely that automated regression testing will be insufficient - and this will necessitate end-user testing and a business sign-off. Whilst this will depend on the extent of the code changes being made, it is recommended that careful user based testing is performed to ensure that core functionality has not been compromised by the refactoring process.

Use Cases

For example, scalability - e.g. with the growth of the internet, many applications such as holiday sites have experienced a huge increase in demand for search functions and so moving out the search function from the core system to a de-coupled and new more scalable technology is the best approach.