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