Retour aux projets

PROCOL - Procédures Collectives

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.

Aperçu du projet

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).

Technologies utilisées
Java Spring Boot JPA PostgreSQL SonarQube GitLab Testcontainers

Démarche de refonte

Analyse préalable

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.

Migration progressive

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.

Résultats obtenus

85 %
de mauvaises pratiques corrigées
(Réduction de 41 à 6)
72.3%
Couverture de tests
(Sur les nouvelles lignes)
0%
Duplication de code
(Code DRY respecté)
Statut qualité
(Failed → Passed)

Défis techniques et solutions

Migration des dépendances JPA

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.

Amélioration de la qualité du code

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.

Documentation technique exhaustive

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.

Tests d'intégration fidèles

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.

Documentation technique

Wiki GitLab

J'ai créé une documentation technique collaborative complète sous forme de wiki GitLab avec 21 pages organisées thématiquement :

  • API REST : Documentation des endpoints et schémas de données
  • Base de données : Schéma, relations, et optimisations
  • Tests : Stratégies de test et exemples d'implémentation
  • Diagrammes : Représentations UML et architectures
  • Anatomie des tests : Explication détaillée des patterns utilisés

Cette documentation facilite l'adoption des nouvelles technologies par l'équipe et assure la pérennité des connaissances acquises lors de la refonte.

Journal de bord technique

J'ai tenu un journal de bord détaillé documentant chaque étape de la refonte :

  • Migration JPA : Documentation précise des changements de dépendances
  • Refactoring : Justification des choix techniques et métiers
  • Qualité : Suivi des métriques SonarQube et améliorations
  • Tests : Mise en place des nouvelles stratégies de test

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.