# Sprint Planning – Projet PIF ## Légende AD → Algassimou AA → Ayoub YB → Youness 🟥 TODO = À faire 🟨 DOING = En cours 🟩 DONE = Terminé # --------------------------------------- # SPRINT 1 (13–20 décembre 2025) # --------------------------------------- Objectif : Mise en place des fondations techniques (image, binaire, Huffman, canoniques) | US | Assigné | Statut | | Description | |----------|---------|--------|-----|-------------| | US-D1 | AD | TODO | 🟥 | Implémenter BitInputStream (lecture bit par bit) | | US-D2 | AD | TODO | 🟥 | Implémenter BitOutputStream (écriture bit par bit) | | US-D3 | AD | TODO | 🟥 | Générer les tables de fréquences RGB | | US-D4 | AD | TODO | 🟥 | Construire l’arbre Huffman | | US-D5 | AA | TODO | 🟥 | Générer les codes Huffman | | US-D6 | AA | TODO | 🟥 | Générer les codes canoniques | | US-U5 | YB | TODO | 🟥 | Chargement d’image via ImageIO | | US-D8 | YB | TODO | 🟥 | Structure RGBImage + Pixel | | US-P1 | AA | TODO | 🟥 | Interface simple d’affichage des fréquences | | US-P2 | AD | TODO | 🟥 | Interface simple d’affichage Huffman | | US-P3 | AA | TODO | 🟥 | Interface simple d’affichage canoniques | ## Fichiers à créer – Sprint 1 ### `src/mimage/` | Nom du fichier | Rôle | |----------------|-------| | `Pixel.java` | Représente un pixel (r, g, b) | | `RGBImage.java` | Matrice de pixels + utilitaires | ### `src/mhuffman/` | Nom du fichier | Rôle | |----------------|-------| | `FrequencyTable.java` | Stocke les fréquences R/G/B | | `HuffmanNode.java` | Nœud d’arbre Huffman | | `HuffmanTree.java` | Construction de l’arbre + génération des codes | | `CanonicalCode.java` | Génération des codes canoniques | ### `src/util/` | Nom du fichier | Rôle | |----------------|-------| | `BitInputStream.java` | Lecture bit par bit | | `BitOutputStream.java` | Écriture bit par bit | | `ByteUtils.java` | Conversions entiers ↔ octets | | `FileUtils.java` | Méthodes utilitaires fichiers | ### `src/vconverter/` | Nom du fichier | Rôle | |----------------|-------| | `ConverterWindow.java` | Fenêtre du convertisseur | | `PreviewPanel.java` | Aperçu de l’image chargée | | `FrequencyTablePanel.java` | Affichage fréquences RGB | | `CodeTablePanel.java` | Affichage Huffman + canoniques | ### `src/` (racine) | Nom du fichier | Rôle | |----------------|-------| | `ConverterController.java` | Contrôleur du convertisseur | | `Main.java` | Lancement du convertisseur (Sprint 1) | --- ### Résultat attendu Sprint 1 - Compression entièrement fonctionnelle - Import d’image opérationnel - GUI minimaliste affichant fréquences / Huffman / canoniques - Aucun fichier `.pif` encore écrit # --------------------------------------- # SPRINT 2 (20–27 décembre 2025) # --------------------------------------- Objectif : Écriture du format `.pif` + finalisation convertisseur | US | Assigné | Statut | | Description | |------------|---------|--------|-----|-------------| | US-D2 | AD | TODO | 🟥 | Vérifier BitOutputStream avec flux réel | | US-C5 | AD | TODO | 🟥 | Implémenter PIFWriter (header + tables + pixels compressés) | | US-U6 | AD | TODO | 🟥 | Exporter une image en `.pif` | | US-P1 | AA | TODO | 🟥 | Finaliser affichage des fréquences | | US-P2 | YB | TODO | 🟥 | Finaliser affichage codes Huffman | | US-P3 | AA | TODO | 🟥 | Finaliser affichage codes canoniques | | US-U7 | YB | TODO | 🟥 | Implémenter l’aperçu (PreviewPanel) | | US-D3..D6 | YB | TODO | 🟥 | Lier interface convertisseur ↔ compression | ## Fichiers à créer – Sprint 2 ### `src/mpif/` | Nom du fichier | Rôle | |----------------|-------| | `PIFWriter.java` | Écriture du fichier `.pif` | ### `src/vconverter/` (complément) | Nom du fichier | Rôle | |----------------|-------| | `SavePanel.java` (optionnel) | UI pour sauvegarde `.pif` | ### `src/` | Nom du fichier | Rôle | |----------------|-------| | *(aucun nouveau fichier obligatoire)* | Le reste se fait dans les fichiers existants | --- ### Résultat attendu Sprint 2 - `.pif` généré correctement - Convertisseur fonctionnel à 80 % - UI complète pour la consultation des tables - Aperçu image fonctionnel # --------------------------------------- # SPRINT 3 (27 décembre 2025 – 3 janvier 2026) # --------------------------------------- Objectif : Lecture du fichier `.pif` + visualisateur opérationnel | US | Assigné | Statut | | Description | |----------|---------|--------|-----|-------------| | US-D7 | AD | TODO | 🟥 | Reconstruire les codes canoniques depuis fichier | | US-D8 | AD | TODO | 🟥 | Décoder pixels (implémenter PIFReader) | | US-U1 | YB | TODO | 🟥 | Ouvrir `.pif` via argument ou JFileChooser | | US-U2 | AA | TODO | 🟥 | Afficher l’image dans une fenêtre | | US-U3 | AA | TODO | 🟥 | Centrer l’image si elle est petite | | US-U4 | AD | TODO | 🟥 | Déplacement de l’image à la souris | | US-P6 | AA | TODO | 🟥 | Préparer diagrammes UML | ## Fichiers à créer – Sprint 3 ### `src/mpif/` | Nom du fichier | Rôle | |----------------|-------| | `PIFReader.java` | Lecture et décodage du `.pif` | ### `src/vviewer/` | Nom du fichier | Rôle | |----------------|-------| | `ViewerWindow.java` | Fenêtre principale | | `ImagePanel.java` | Affichage + déplacement de l’image | ### `src/` | Nom du fichier | Rôle | |----------------|-------| | `ViewerController.java` | Contrôleur du visualisateur | | `MainViewer.java` | Programme principal visualisateur | --- ### Résultat attendu Sprint 3 - Visualisateur 100 % fonctionnel - Lecture complète du format `.pif` - Image affichée, centrée, déplaçable - UML structurel prêt pour rapport # --------------------------------------- # SPRINT 4 (3–10 janvier 2026) # --------------------------------------- Objectif : Finalisation complète + livrable final | US | Assigné | Statut | | Description | |------------|---------|--------|-----|-------------| | US-P5 | AD | TODO | 🟥 | Javadoc complète | | US-P7 | AD | TODO | 🟥 | Makefile (compilation + jar + exécution) | | US-P6 | AA | TODO | 🟥 | Finalisation des diagrammes UML | | Tests | YB | TODO | 🟥 | Tests convertisseur + visualisateur | | Rapport | AD/AA/YB| TODO | 🟥 | Rédaction rapport complet | | Livraison | AD/AA/YB| TODO | 🟥 | Vérification dépôt Gitea + JAR exécutables | ## Fichiers à créer – Sprint 4 ### Racine creee tout au long | Nom du fichier | Rôle | |----------------|-------| | `Makefile` | Compilation + génération `.jar` | ### `/doc` (optionnel) | Nom du fichier | Rôle | |----------------|-------| | `rapport.pdf` | Livrable final | | `uml.puml` | Sources de diagrammes | --- ### Résultat attendu Sprint 4 - Rapport PDF validé - Diagrammes UML terminés - Makefile opérationnel - Projet soumis proprement sur Gitea