Aller au contenu
Retour aux projets
Cover
Étude de cas

Débogage & refactoring Java (Heme Biotech)

Débogage & refactoring Java (Heme Biotech)

Débogage et correction d'une application Java de prédiction des besoins médicaux chez Hemebiotech.

Contexte

Heme Biotech ("Des remèdes pour ceux qu'on aime"), entreprise pharmaceutique spécialisée dans les troubles sanguins, avait confié à Alex, chercheur en chimie, le développement d'un petit outil Java d'analyse de tendances : lire un fichier de symptômes et produire le décompte de chacun, trié alphabétiquement. Alex s'est retrouvé bloqué avec un compteur qui retournait toujours 0. Caroline, directrice technique et cofondatrice, a confié la suite à un stagiaire dev : diagnostiquer le bug, refactoriser vers des standards Java OOP, et documenter le tout en Javadoc pour la reprise en équipe.

Problèmes & Périmètre

  • Compteur de symptômes retournant systématiquement 0, quel que soit le nombre réel d'occurrences dans le fichier (ex. 3 occurrences de "maux de tête" → 0 en sortie)
  • Code monolithique sans séparation des responsabilités entre lecture, comptage et écriture
  • Absence d'interfaces et de patterns OOP
  • Nommage non conforme aux conventions Java (camelCase)
  • Aucune documentation Javadoc disponible pour la reprise par l'équipe

Solution & Livrables

  • Bug résolu par agrégation via TreeMap.merge() : une seule structure de données gère à la fois le comptage exact et l'ordre alphabétique natif — plus besoin d'étape de tri séparée
  • Lecture déléguée à ReadSymptomDataFromFile, qui implémente l'interface ISymptomReader (getSymptoms())
  • Écriture encapsulée dans WriteSymptomDataToFile, qui implémente ISymptomWriter
  • AnalyticsCounter recentrée sur 2 responsabilités : countSymptoms() (agrégation TreeMap) et writeSymptoms() (génération du fichier de sortie)
  • Point d'entrée isolé dans une classe Main dédiée qui orchestre lecture → comptage → écriture
  • Nommage camelCase appliqué sur l'ensemble du code
  • Javadoc complète sur toutes les méthodes publiques
  • Fichier result.out généré avec les symptômes triés alphabétiquement et leur décompte exact

Stack & Technologies

  • Java 8+ — langage principal
  • TreeMap — structure de données pour tri naturel et comptage exact
  • Interfaces Java — ISymptomReader, ISymptomWriter
  • Javadoc — documentation automatique du code
  • Git — workflow dev → main, commits atomiques par étape
  • IntelliJ IDEA — environnement de développement

Étapes du projet

  1. 1
    Analyse & diagnostic
    Lecture du code existant, identification du bug TreeMap et cartographie des violations OOP
  2. 2
    Correction du bug
    Remplacement de la logique de comptage défaillante par une TreeMap pour un tri et un comptage corrects
  3. 3
    Refactorisation OOP
    Création des interfaces, classes séparées, nommage camelCase sur l ensemble du code
  4. 4
    Documentation
    Rédaction de la Javadoc complète sur toutes les méthodes publiques
  5. 5
    Validation & livraison
    Tests manuels, génération du fichier result.out, soutenance validée avec 2/2 compétences

Résultats de la soutenance

2/2
Compétences validées
1 critique
Bugs corrigés
4
Classes créées
2
Interfaces

Captures d'écran

Screenshot 1