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 (immeubles de huit logements et moins). Un système de collecte a aussi été mis en place pour récupérer le contenu des bacs à des horaires fixes (varie par quartier).

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 des actions quotidiennes
  • Faciliter la communication entre la municipalité et les résidents
  • Mettre en relation les consommateurs de déchets et les résidents

Étant limité en temps, nous ne vous demandons pas plus qu'une implémentation où l'interaction est en ligne de commande.

Activités

  • Compostage

    Les bacs de résidus alimentaires sont la propriété de la Ville (chaque bac est lié à une adresse) et servent à faire du compostage. Le compostage est un procédé de traitement biologique qui permet la biodégradation des matières organiques, sous l'action de microorganismes aérobies. Dans certains quartiers, des composteurs communautaires sont mis à la disposition des résidents.

  • Recyclage

    Les bacs de recyclage sont aussi la propriété de la ville et chacun est lié à une adresse. De nombreuses matières peuvent être recyclés, telle que le verre, le métal, le papier et carton ainsi que le plastique.

  • Ordures

    Les ordures ne devraient pas contenir de matières recyclables ni de résidus alimentaires. Cette catégorie est un peu moins intéressante que les deux autres, mais elle est importante à surveiller. Ces déchets non recyclables et non compostables doivent être minimisés.

Besoins

Pour le fonctionnement efficace de Bineco, nous assumons la présence d'un mécanisme d'inventorisation du contenu des bacs, tel que l'usage de capteurs (fournis par la municipalité). En utilisant les données collectées sur la composition des bacs de chaque résident, nous pouvons les catégoriser et formuler des ratios ou métriques pour refléter diverses tendances au niveau résidentiel. Pour faciliter le traitement électronique des bacs, ceux-ci seront identifiés par un code QR (imprimé sur les bacs) émis par la municipalité.

Afin de simplifier l'expression des besoins et spécifications, nous utiliserons MunicipInfo pour faire référence au système externe fournissant les informations détenues par la municipalité (ville).

  • S'inscrire comme résident

    Pour s'inscrire comme résident, il faut fournir les informations suivantes: Profil: nom, prénom, adresse courriel, téléphone Adresse de la résidence: permet de l'associer à une municipalité Bac (enregistrement): permet de valider l'authenticité du résident
  • S'inscrire comme consommateur

    Pour s'inscrire comme consommateur, il faut d'abord être enregistré auprès de la ville (prérequis) et fournir: Profil: code, nom, adresse, email, téléphone Type de déchets traités Capacité de traitement Activités d'exploitation
  • Enregistrer un bac

    Chaque résident est habituellement responsable de 2 ou 3 bacs (bac brun, bac de recyclage et bac à ordures). En tout temps, il 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.
  • Afficher l'état des mes bacs

    L'état d'un bac présente sa capacité actuelle (niveau de remplissage), sa composition actuelle (contenu) et son usage (lié aux métriques écologiques). L'usage fait référence à l'évolution (périodique) du contenu des bacs, offrant ainsi une trace (historique). Il est à noter que l'usage des bacs est indépendant du traitement subi par les déchets.
  • Afficher les métriques écologiques

    Les métriques (indicateurs, ratios) écologiques sont réparties entre celles liées à l'usage des bacs (niveau résidentiel) et celles liées au traitement des déchets (niveau municipal). Ces métriques devraient être facilement interprétables par tout utilisateur et significatives (pertinentes) pour mesurer correctement l'activité écologique.
  • Paramétriser les métriques

    Un résident devrait pouvoir pondérer ou configurer les métriques pour les orienter selon certaines préférences (facteurs de calcul). Ces préférences dépendent des métriques choisies.
  • Voir l'état de traitement des déchets municipaux

    Le suivi du traitement des déchets ne considère pas celui de chaque résident individuellement, mais plutôt l'ensemble des déchets de la ville (du résident). Le traitement des déchets est segmenté en points de contrôle (checkpoint) permettant le suivi du processus. Récupération des déchets (passage des camions) Livraison des déchets (date, consommateur ou dépôt, état des déchets) Usage des déchets (consommateur, activité, proportions exploitées) À chaque point de contrôle, nous collectons des données permettant de fabriquer des métriques montrant l'efficacité du traitement des déchets à l'échelle municipale.
  • Signaler un problème à MunicipInfo

    Les bacs étant la propriété de la ville, pour tout problème rencontré avec un bac ou demande de nouveau bac, le résident peut envoyer une requête à MunicipInfo. Pour signaler tout problème, les informations envoyées sont toujours les mêmes (nom du résident, adresse du résident, courriel, type de problème). Le type varie selon la requête envoyée à MunicipInfo. Le suivi est fait à l'externe pour éviter de surcharger Bineco.
  • Trouver un consommateur

    Un résident peut naviguer à travers la liste des consommateurs enregistrés en utilisant un mécanisme de recherche et de filtre facilitant la localisation de consommateur spécifique. Les consommateurs devraient être catégorisés pour faciliter la recherche.
  • Noter un consommateur

    Les résidents peuvent noter un consommateur en offrant un avis sur leurs activités. Pour chaque activité d'un consommateur, un utilisateur peut fournir une note de 1 à 5. L'agrégation de ces notes produira une note générale attribuée au consommateur.
  • Notifier les résidents

    Les consommateurs peuvent notifier l'ensemble des résidents d'un besoin en déchets spécifiques ou pour les sensibiliser au traitement de certains déchets. Une notification de sensibilisation vise à encourager les résidents à porter une attention particulière à certains déchets. Une notification d'accumulation vise à demander aux résidents d'accumuler un type de déchet ou un déchet spécifique.

Spécifications

Dans l'élaboration de votre solution, nous vous demandons de bien vouloir respecter les spécifications suivantes.

Utilisateurs

Les utilisateurs de Bineco sont les résidents et les consommateurs. Un compte distinct est associé à chacun. 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. Lors de l'inscription comme résident, MunicipInfo est utilisé pour valider le bac enregistré. Lors de l'inscription comme consommateur, MunicipInfo est utilisé pour valider le code du consommateur. 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.

Métriques

L'application devrait présenter près de 3 métriques pour chaque niveau (résidentiel et municipal). Afin de réduire le bruit cognitif dû à la surcharge d'information, l'application ne devrait pas présenter plus de 10 métriques. Les métriques peuvent être composées de sous facteurs explorables et configurables par le résident. Certaines de ces métriques doivent s'afficher sur l'écran d'accueil (du résident), pour faciliter une consultation rapide.

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, parent, sous_lots, 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, parent, sous_lots, date_ramassage, date_livraison, statut, qte_total, qte_traite, taux_rejet, cout, consomateurs, activites)
    • 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

Prototype

L'application devrait être initialisée avec plus de 10 consommateurs, plus de 3 résidents avec des bacs en utilisation et des déchets en traitement. Les métriques doivent être pleinement implémentées (formule présent dans le code), mais les données peuvent être fabriquées.
Les actions présentées dans le menu peuvent être imbriquées pour éviter d'afficher trop d'options à l'utilisateur. Cependant, le menu ne devrait pas avoir plus de 3 niveaux d'imbrication. Bien entendu, il devrait toujours être possible de retourner au menu principal sans quitter l'application.

Règles du jeu

Vous avez droit à 2 rencontres avec le client (1 rencontre par semaine).
La semaine commence le lundi et se termine le vendredi à 22h. Les questions doivent être communiquées avant la fin de la semaine Passez ce délai, elles seront attribuées à la prochaine semaine.
Les réponses aux questions (générales) seront ajoutées au corps du texte plus haut. Jusqu'au 6 novembre, des précisions peuvent être rajoutées au texte.
À noter qu' une équipe qui n'a jamais rencontré le client sera pénalisée.

Pour planifier une rencontre ou soumettre vos questions, communiquez avec notre responsable, Louis-Edouard LAFONTANT.

Tâches

Pour ce second jalon, vous devez produire un rapport en HTML présentant votre analyse approfondie du problème, votre conception et une première implémentation.
Il devra aussi présenter les éléments du premier jalon (DM1) mis à jour.

Cadre du projet (mis à jour)

Définition du domaine (mis à jour)

Analyse (mis à jour)

  • Modèle dynamique: Diagrammes d'activités (nouveau)

Conception

  • Modélisation de la structure: Diagramme de classes
  • Modélisation du comportement: Diagrammes de séquence
  • Justification des choix du design: Abstraction, Couplage et cohésion, Encapsulation

Implémentation

  • Implémentation du design: Prototype fonctionnel
  • Manuel d'utilisation: README décrivant comment utiliser l'application

Livrables

  • Cas d'utilisation et scénarios (mis à jour)
  • Diagramme d'activités
    • Couvrir les CUs des résidents uniquement
    • Pas besoin de montrer l'inscription à Bineco
  • Diagramme de classes
  • Diagramme de séquence
    • Afficher l'état du bac de recyclage
    • Demander un nouveau bac à MunicipInfo
    • Trouver un consommateur et noter une activité
    • Notifier les résidents d'un besoin de plastique
  • Prototype fonctionnel
    • Fonctionnalités requises: Tous les CUs du résident devraient être testables
    • Conformité au diagramme de classe: Le code peut différer un peu du diagramme de classe.
    • Fichier et stockage: Pas besoin de sauvegarder les données au-delà d'une session

Évaluation

Ce devoir compte pour 15% de la note final.
Le rapport et tous les artéfacts produits sont à remettre au plus tard le dimanche 20 novembre par le responsable d'équipe.
Des pénalités de 10% par jour de retard seront accordées jusqu'au 22 novembre. Au-delà de cette date, la moitié des points sera transférée au prochain devoir.

Barème

Révision 10%
Diagramme d'activités 20%
Diagramme de classe 25%
Diagramme de séquence 15%
Discussion design 5%
Prototype fonctionnel 20%
Rapports 5%
Bonus: Exploitation de Git 5%

Le Bonus consiste en un usage accru et efficace de Git, démontrant une bonne maitrise.