Modernization of Sports Competition Management App for a Major German Sports Organization
About Our Client
The Client is one of the most prominent and influential sports organizations in Germany. It has over 100 years of history and an impressive membership base, with over 2,000 affiliated clubs and more than 1 million individual members. The organization is renowned for organizing and hosting numerous high-profile events, competitions, and championships at regional, national, and international levels. Its long-standing tradition and commitment to excellence have earned it a distinguished reputation.
Extra Skills Needed to Modernize Legacy Sports Competition Management App
The Client has a proprietary desktop application designed to organize and manage sports competitions, particularly within educational institutions. The application streamlines the entire process from competitor registration to result computation and certificate generation.
To set a strong foundation for future growth and innovation, the Client decided to port the application from Qt 4 to Qt 5 and transition it from raw SQL queries to the model-repository pattern. However, after the Client’s in-house IT team uploaded the legacy code to a repository and made several changes, the ported application became non-functional, stalling the modernization process. To address the challenge, the Client sought a reliable IT partner skilled in legacy software refactoring who would be able to complete the app modernization project.
Team Augmentation with C++ Engineer Proficient in App Refactoring and Modernization
ScienceSoft’s senior C++ engineer, who had 7+ years of experience, took charge of the project. The engineer's primary objectives were to make the application functional again, complete the porting to Qt 5, and implement the model-repository pattern.
Addressing build issues and completing the porting to Qt 5
ScienceSoft's engineer examined the legacy application’s code and business logic to identify issues preventing it from running. He discovered compilation problems due to deprecated functions and API changes between Qt 4 and Qt 5, as well as runtime errors.
To resolve the compilation issues, he updated method calls, modified class structures, replaced unsupported functions, and updated configurations. Once the code compiled successfully with Qt 5, he also addressed runtime errors such as out-of-range access, null pointer dereferences, and typos in field and property names.
Furthermore, ScienceSoft’s engineer updated relevant documentation and added comprehensive code comments to ensure that future developers could easily understand and maintain the updated codebase.
Adopting the model-repository pattern
The model-repository pattern relies on clearly defined entities. Our engineer identified and separated key entities from the existing codebase: Athletes, Teams, Competitions, Equipment, and Disciplines. For each entity, ScienceSoft’s engineer developed corresponding model and repository classes. The model classes represented the data structure of each entity, while the repository classes managed database interactions. The engineer replaced extensive raw SQL queries with equivalent repository methods. The separation of concerns enabled a cleaner app architecture and improved its maintainability. Throughout this process, ScienceSoft’s engineer also ensured that all new code was well-documented and included detailed comments to facilitate future evolution.
App Modernization Completed in 3 Months
Within three months, ScienceSoft's team helped a prominent German sports organization restore the functionality of its sports competition management app and finish the app modernization. Now, the Client has a future-proofed application running on Qt 5, with better maintainability and scalability achieved through a model-repository pattern. As ScienceSoft cleaned the codebase and fixed all runtime errors, the app has become more stable and easier to evolve.
Technologies and Tools
Qt 5.15.2, C++, Qmake (as a build system), PostgreSQL