Back

Software quality analysis and refactoring for a financial services firm

Client

  • Industry:
Financial Services
  • Revenue:
€90 Million
  • Employees:
400
  • Location:
United Kingdom

Project

Refactoring of contract-management software for a financial services firm, a core system that has constantly grown over the past decade and runs critical business operations.

Objectives

  • Run a deep analysis of J2EE software to evaluate the reasons behind its poor performances and high volume of bugs
  • Propose a plan to fix the issues

Challenges

  • No automated test at all; no technical documentation; outdated business requirements documentation
  • No access to running environments
  • No support from the development team and even hostility from leads

Solution

I ran two complementary analyses. On one the hand, I used SonarQube to provide impartial measures, and on the other hand, I dove into the code to evaluate the potential design issues.
As a result, I provided an aggregated summary of the issues detected on both evaluations and a detailed plan to refactor the software with clear goals: removing all dead code and most duplicates, lowering the coupling, and increasing the consistency and reusability of the components as well as the overall testability of the software.
The plan described how to refactor the software based upon a domain-driven strategy and gave a clear step-by-step workflow to achieve it. The expected resulting architecture was composed of modules to isolate the responsibilities and force the usage of abstraction. Some technical components had to be replaced by state-of-the-art solutions and libraries.
I also set up automated integration tests to support the refactoring and prevent future potential regressions.

Results

The execution of the plan massively reduced the number of lines of code and drastically improved the overall performances as well as the effectiveness of the developers in fixing bugs. The coverage of unit tests rose from 0% to 65%, during the refactoring period alone.

Technologies Supported

  • Maven and Jenkins for the build and tests automation
  • Selenium and JMeter for the integration tests
  • SonarQube for the static code analysis

Key Success Factors

  • Long experience in the financial services sector and with similar software to better evaluate the responsibilities and behavior of the software
  • Good knowledge of the technical stack and its state-of-the-art status
  • Strong determination to succeed