# PRODUCT BACKLOG — Projet PIF # 1. US UTILISATEUR Ce sont les besoins réels d’un utilisateur final qui voudrait simplement visualiser ou convertir une image. --- ### **US-U1 — Ouvrir un fichier PIF** En tant qu’utilisateur, je veux pouvoir ouvrir un fichier `.pif` via un argument ou un sélecteur de fichiers, afin d’afficher l’image. ### **US-U2 — Afficher l’image dans une fenêtre** En tant qu’utilisateur, je veux voir l’image affichée dans une fenêtre redimensionnable. ### **US-U3 — Centrage automatique** En tant qu’utilisateur, je veux que l’image soit centrée si elle est plus petite que la fenêtre, pour une meilleure visibilité. ### **US-U4 — Déplacement de l’image** En tant qu’utilisateur, je veux pouvoir déplacer l’image à la souris si elle dépasse la taille de la fenêtre. ### **US-U5 — Charger une image RGB (PNG/JPEG)** En tant qu’utilisateur, je veux charger une image standard afin de la convertir en `.pif`. ### **US-U6 — Exporter une image au format PIF** En tant qu’utilisateur, je veux enregistrer l’image sous format `.pif`. ### **US-U7 — Aperçu de l’image avant conversion** En tant qu’utilisateur, je veux voir une miniature de l’image chargée. --- # 2. US DÉVELOPPEUR Ce sont les besoins techniques indispensables au fonctionnement interne du format PIF. --- ### **US-D1 — Lire des bits depuis un flux** Le système doit permettre la lecture bit par bit depuis un fichier PIF. ### **US-D2 — Écrire des bits dans un fichier** Le système doit permettre l’écriture de bits pour générer un fichier PIF. ### **US-D3 — Construire les tables de fréquences RGB** Le système doit analyser l’image pour obtenir les fréquences des valeurs R, G, B. ### **US-D4 — Construire un arbre de Huffman** Le système doit créer un arbre à partir des fréquences d’une composante. ### **US-D5 — Générer les codes Huffman** Le système doit produire les codes initiaux à partir de l’arbre. ### **US-D6 — Générer les codes canoniques** Le système doit transformer les codes Huffman en codes canoniques. ### **US-D7 — Reconstruire les codes canoniques en lecture** Le système doit pouvoir reconstruire les codes à partir des longueurs contenues dans le fichier .pif. ### **US-D8 — Décoder un fichier PIF** Le système doit pouvoir reconstituer l’image RGB à partir des données compressées. --- # 3. US PROFESSEUR (PEDAGOGIQUE) Ces fonctionnalités n’ont **aucune utilité pour un utilisateur réel**, mais sont demandées par le professeur pour vérifier le bon fonctionnement de notre projet. --- ### **US-P1 — Affichage des tables de fréquences** En tant que professeur, je veux consulter la table de fréquences R, G et B pour vérifier que le calcul est correct. ### **US-P2 — Affichage des codes Huffman** En tant que professeur, je veux voir les codes Huffman générés afin de valider votre algorithme. ### **US-P3 — Affichage des codes canoniques** En tant que professeur, je veux visualiser les codes canoniques afin d’évaluer votre compréhension de leur construction. ### **US-P4 — Affichage de l’arbre Huffman (optionnel)** En tant que professeur, je veux pouvoir inspecter la structure de l’arbre pour vérifier votre implémentation. ### **US-P5 — Documentation Javadoc pour chaque classe** En tant que professeur, je veux avoir une documentation claire auto-générable. ### **US-P6 — Diagrammes UML dans le rapport** En tant que professeur, je veux retrouver un diagramme de classes et un diagramme d’objets dans le rapport. ### **US-P7 — Makefile complet** En tant que professeur, je veux pouvoir compiler les deux programmes en .jar exécutables avec un Makefile clair.