Problème

La ville de Montréal a entrepris depuis 2010 de nombreuses initiatives pour encourager le recyclage et réduire le gaspillage des résidus alimentaires. Ceci s'est traduit par l'introduction de poubelle spécialisée (bac de recyclage, bac de compostage) dans la plupart des foyers. Un système de collecte a aussi été mis en place pour récupérer le contenu des bacs à des horaires fixes.

Actuellement, les résidents reçoivent peu d'information sur l'acheminement de leurs déchets et ont peu de controle sur la destination ou l'utilisation de leurs déchets. Cette distance rend difficile toute forme de suivi de la part des résidents et atténue la motivation collective pour soutenir ces actions écologiques.

Proposition

Nous pensons qu'une meilleur communication des activités de recyclage et compostage résultant du travail de tri effectué dans les foyers, et des métriques accessibles à tous réduiront la distance entre les acteurs. Ainsi nous proposons la création d'un outil, “l'outil Bineco qui a pour objectif de:

  • Faire le suivi des recyclables et des déchets organiques
  • Visualiser l'efficacité des activités de réutilisation des déchets
  • Sensibiliser les résidents à l'impact écologique de leurs actions
  • Faciliter la communication entre la municipalité et les résidents
  • Mettre en relation les consommateurs de déchets et les résidents

Exigences

Étant limité en temps, nous ne vous demandons pas plus qu'une implémentation où l'interaction est en ligne de commande.
Dans l'élaboration de votre solution, nous vous demandons de bien vouloir respecter les spécifications suivantes.

Fonctionnalités

  • Créer un compte
  • Se connecter
  • Modifier son profil
  • Enregistrer un bac
  • Supprimer un bac
  • Afficher l'état des bacs
    i Vue général: Afficher le nom, le niveau de remplissage et un indicateur de composition valide.
    i Vue complète: Afficher la composition d'un bac et l'historique.
  • Afficher l'état du traitement d'un lot de déchets
  • Consulter les métriques
  • Paramétriser les métriques
  • Signaler un problème à MunicipInfo
  • Trouver un consommateur
    i Liste/Recherche: Afficher uniquement le nom et les types de déchets traités.
    i Fiche: Afficher toutes les informations (publiques)
  • Noter une activité
  • Ajouter une activité
    ! Post: Envoyer une notification
  • Modifier une activité
    ! Post: Envoyer une notification
  • Supprimer une activité
    ! Post: Envoyer une notification
  • Notifier les résidents d'un besoin

Utilisateurs

  • Résident Utilisateur principal de Bineco faisant le suivi de ses bacs et du traitement des déchets.
  • Consommateur Utilisateur secondaire de Bineco gérant les activités d'exploitant et communiquant diverses besoins aux résidents.

Notes

  • Inscription Lors de la création d'un compte, un lien de confirmation (expirant après 3 jours) est envoyé à l'utilisateur. Passé le délai de confirmation, l'inscription est annulée. Pour un consomateur, MunicipInfo est utilisé pour valider le code du consommateur.
  • Authentification Lors de l'authentification, un utilisateur fournit son adresse courriel et son mot de passe. Si l'authentification réussit, l'utilisateur est amené à l'écran d'accueil propre à son type de compte.
  • Bac En tout temps, un résident devrait pouvoir enregistrer et suivre un nouveau bac. Pour enregistrer un nouveau bac, il faut scanner le code QR du bac et l'identifier par un nom et un type. MunicipInfo est utilisé pour valider le bac. Si un résident n'a pas de bac enregistré à son compte, il ne peut utiliser le reste de l'application.
  • Trouver un consommateur La recherche de consomateur peut se faire, au moins, par nom et par type d'activités. Les accents ne sont pas pris en considération.
  • Métriques L'application devrait présenter près de 3 métriques pour chaque niveau (résidentiel et municipal). Les métriques peuvent être composées de sous facteurs explorables et configurables par le résident.
  • Notification Un résident peut choisir de recevoir ces notifications par courriel.

MunicipInfo

Les requêtes suivantes peuvent être envoyées à MunicipInfo.

  • list-consommateur Récupère la liste des consommateurs
    Réponse
    • LISTE --> Consommateur[] (code, nom, details)
  • get-consommateur params: code Récupère les informations d'un consomateur
    Réponse
    • TROUVE --> Consommateur (code, nom, adresse, email, téléphone, details, type_dechets, capacité)
    • ABSENT --> Aucun consommateur trouvé pour ce code
  • get-bac Récupère les informations d'un bac params: codeqr
    Réponse
    • TROUVE --> Bac (codeqr, adresse, date_emission)
    • ABSENT --> Aucun bac trouvé pour ce code
  • list-lot Récupère la liste des lots de déchets
    Réponse
    • LISTE --> Lot[] (numero, type, date_ramassage, date_livraison, statut)
  • get-lot Récupère les informations d'un lot de déchets params: numero
    Réponse
    • TROUVE --> Lot (numero, type, date_ramassage, date_livraison, statut, qte_total, qte_traite, taux_rejet, cout, consomateurs)
    • ABSENT --> Aucun lot trouvé pour ce numero
  • post-message body: form
    Réponse
    • TRANSMIS --> Le message a été transmis avec succès
    • ERREUR --> Une erreur est survenue lors de la transmissoin du message

Données

L'application devrait être initialisée avec la configuration minimale suivante:

  • 3 comptes résidents
  • 10 comptes consommateurs
  • 2 bacs en utilisation pour chaque résident
  • 5 lots de déchets dont 1 en cours de traitement
  • 3 activités par consommateurs

Règles du jeu

Vous avez droit à 1 rencontre avec le client.
Pour planifier une rencontre ou soumettre vos questions, communiquez avec notre responsable, Louis-Edouard LAFONTANT.

Tâches

Pour ce troisième et dernier jalon, vous devez produire un rapport en HTML présentant votre conception détaillée et livrer l'application complète et documentée.
Il devra présenter tous les éléments produits durant le projet, mis à jour.

Cadre du projet (mis à jour)

Définition du domaine (mis à jour)

Analyse (mis à jour)

Conception (mis à jour)

Implémentation

  • Implémentation du design:
    • Application complète et robuste: Toutes les fonctionnalités sont implémentées et les entrées sont validées
    • Conforme au design: Toutes les classes du diagramme de classe doivent être présent dans le code.
    • Fichier et stockage: Les données doivent être préservées au-delà d'une session
  • Manuel d'utilisation: README décrivant comment utiliser l'application
  • Documentation: Documentation technique du code source (JavaDoc)

Tests

  • Rapport de tests unitaires (JUnit)
    • 3 tests unitaires par membre
    • Méthodes non valides pour les tests: Constructeur, Getter et Setter, Méthode privée
    • Tous les tests doivent passer

Livrables

  • Cas d'utilisation (mis à jour)
  • Diagramme d'activités (mis à jour)
  • Diagramme de classes (mis à jour)
  • Diagramme de séquence (mis à jour)
  • Application: Exécutable JAR
  • Code source
  • Tests
  • Documentation: Génération Javadoc et README

Évaluation

Ce devoir compte pour 25% de la note final.
Le rapport et tous les artéfacts produits sont à remettre au plus tard le vendredi 23 décembre par le responsable d'équipe.

Barème

Analyse 10%
Conception 25%
Application 25%
Code 20%
Tests 20%
Documentation 10%
Bonus: Démonstration 10%

Le Bonus consiste à faire une démonstration de l'application dans une vidéo de 5 minutes.