Refonte d'une application historique développée il y a plus de 10 ans, dont l'objectif est de devenir une application référençant l'entièreté des procédures collectives liées aux entreprises.
Le projet PROCOL est une refonte complète d'une application legacy développée il y a plus de 10 ans. Cette application historique nécessitait une modernisation urgente pour faciliter les montées de version futures, améliorer la maintenabilité, et se conformer aux nouvelles normes de développement.
L'objectif principal était de résoudre les problèmes d'obsolescence technique tout en conservant la fonctionnalité métier essentielle : référencer l'entièreté des procédures collectives liées aux entreprises. Cette refonte s'est inscrite dans une démarche d'amélioration continue de la qualité logicielle au sein de la DGFiP (Direction Générale des Finances Publiques).
J'ai mené une analyse approfondie de l'application existante pour identifier les obsolescences techniques et définir les objectifs de la refonte. Cette phase a permis de prioriser les interventions et d'établir un plan d'action réaliste.
Points identifiés : Dépendances obsolètes, non-conformité aux nouvelles normes de développement, difficultés de maintenance, et risques pour la continuité de service.
J'ai adopté une approche de migration par étapes successives pour maîtriser les risques et assurer la continuité de service. Chaque étape a été validée avant de passer à la suivante, minimisant ainsi les impacts sur les utilisateurs.
Étapes clés : Migration des dépendances JPA, mise à jour des cadriciels, refactoring du code existant, et mise en place des tests d'intégration.
Défi : Migration de l'ancienne nomenclature javax.persistence vers la nouvelle jakarta.persistence, avec risque de rupture de compatibilité et d'impact sur le code existant.
Solution : Approche progressive de migration avec documentation précise de chaque changement (diff des imports), validation à chaque étape, et mise en place de tests de régression pour garantir la continuité de service.
Défi : Réduire significativement les 41 mauvaises pratiques détectées par SonarQube tout en maintenant la fonctionnalité métier et sans introduire de régressions.
Solution : Analyse systématique des rapports SonarQube, priorisation des corrections, refactoring méthodique du code, et mise en place d'une couverture de tests élevée (72.3%) pour valider chaque modification.
Défi : Documenter de manière complète et accessible les changements techniques pour faciliter la prise en main par l'équipe et assurer la pérennité des connaissances.
Solution : Création d'un wiki GitLab structuré avec 21 pages thématiques (API REST, BDD, Tests, Diagrammes), incluant des explications pédagogiques, des diagrammes UML, et des exemples concrets d'utilisation.
Défi : Mettre en place des tests d'intégration qui reflètent fidèlement l'environnement de production pour valider le code refactoré sans risquer d'introduire des régressions.
Solution : Utilisation de Testcontainers avec PostgreSQL plutôt que des bases embarquées, création d'une hiérarchie de classes de test robuste, et initialisation automatique du schéma via des scripts SQL.
J'ai créé une documentation technique collaborative complète sous forme de wiki GitLab avec 21 pages organisées thématiquement :
Cette documentation facilite l'adoption des nouvelles technologies par l'équipe et assure la pérennité des connaissances acquises lors de la refonte.
J'ai tenu un journal de bord détaillé documentant chaque étape de la refonte :
Ce journal constitue un outil de communication projet essentiel, permettant aux parties prenantes de suivre l'avancement et de comprendre les enjeux techniques de la refonte.