Dossier de Conception Système - Site d'annonces

Voici le Dossier de Conception Système du projet ECOM 2016-2017 : Site d'annonces.

Page d'accueil du projet

= Équipe =
 * NOUGUIER Thibaut (Chef de projet)
 * RAMEL Régis (Scrum Master)
 * HATTINGUAIS Julian
 * NIOGRET Edwin

= Architecture du Système =

Diagramme de contexte
Description des acteurs :
 * Les administrateurs sont chargés de la gestion du site, que ce soit la maintenance, ou la modération des annonces. L’interaction avec le système consiste en une interaction avec les composants de contrôle du site grâce à un compte administrateur, qui comporte des privilèges supplémentaires comme, la suppression d’annonces.
 * Un vendeur est un utilisateur du site qui a déposé une ou plusieurs annonces. Son interaction avec le site consiste en une création d’un profil avec ses coordonnées, et de la gestion de ses annonces (dépôt, suppression). Il peut aussi éditer son profil. Un acheteur peut aussi être un client.
 * Un acheteur est un utilisateur du site qui vient pour chercher des annonces. Son interaction avec le site consiste en une consultation des annonces du site. Il peut aussi éditer son profil. Un client peut aussi être un client.
 * L’acteur Agence publicitaire représente les agences de publicités qui peuvent ajouter des pubs sur le site.

Interface Web
Le composant Interface Web contient toutes les fonctions d’affichage des pages web pour les utilisateurs (vendeurs et acheteurs). Ce composant comporte les fonctions qui affichent les annonces, qui permettent aux utilisateurs d’éditer leurs profils et leurs annonces, et d’afficher les coordonnées des propriétaires des annonces.

Cardinalités :
 * L'interface Web utilisateur est associée à un contrôleur. Cette relation est bidirectionnelle : L'interface utilisateur fournit les informations saisies par l'utilisateur, et le contrôleur fournit les informations de la base de données Utilisateurs et annonces.

Méthodes :
 * Création d'un compte utilisateur : Permet aux utilisateurs ne possédant pas de compte personnel de s'en créer un. Le composant affiche la page de création de compte, puis appelle la méthode Création de compte du composant contrôleur pour ajouter le compte dans la base de données.
 * Édition du compte utilisateur : Permet à l'utilisateur d'éditer son profil, de modifier ses coordonnées. Le composant affiche la page du profil avec les paramètres modifiables (adresse, numéro de téléphone, adresse mail, ...), puis appelle la méthode Modification de compte du contrôleur pour mettre à jour la base de données.
 * Connexion de l'utilisateur : Permet à l'utilisateur de se connecter à son compte. Le composant affiche la page d'authentification (login et mot de passe), puis appelle la méthode Vérification d'authentification du contrôleur pour vérifier le login et le mot de passe. Si l'authentification est correcte, le composant redirige l'utilisateur vers la page d'accueil de son profil.
 * Dépôt d'une annonce : Permet à l'utilisateur d'ajouter une annonce sur le site. Le composant affiche la page de dépôt d'une annonce, puis appelle la méthode Dépôt d'une annonce du contrôleur avec les renseignements qu'a entrés l'utilisateur.
 * Édition d'une annonce : Permet à un vendeur de modifier une annonce qu'il a déposé. Le composant affiche la page de modification d'une annonce, puis appelle la méthode Modification d'une annonce du contrôleur avec les renseignements qu'a entrés le vendeur pour mettre à jour l'annonce.
 * Suppression d'une annonce : Permet à un vendeur de supprimer une annonce qu'il a déposé. Le composant demande la confirmation de la suppression, puis appelle la méthode Suppression d'une annonce du contrôleur pour enlever l'annonce du site.
 * Recherche d'une annonce : Permet à l'utilisateur de chercher une annonce sur le site grâce à des mots clés. Le composant importe les annonces qui correspondent aux mots clés qu'a entrés l'utilisateur grâce à la méthode Recherche des annonces du contrôleur, puis affiche les résultats dans une liste. L'utilisateur peut alors filtrer ou trier les annonces selon plusieurs critères (prix, lieux, ...), et le composant ordonne les annonces selon ces critères.
 * Sélection des annonces : Permet à l'utilisateur d'afficher les détails d'une annonce. Le composant appelle la méthode Détails d'une annonce du contrôleur pour importer les détails de l'annonce, puis affiche l'annonce avec les détails dans une nouvelle page.
 * Obtention des coordonnées du propriétaire : Permet à l'utilisateur d'obtenir les coordonnées du propriétaire d'une annonce. Le composant appelle la méthode Obtenir coordonnées du contrôleur, puis affiche les coordonnées du propriétaire de l'annonce.

Interface Administrateur
Le composant Interface Administrateur correspond à la gestion des connexions des administrateurs pour la maintenance et la gestion du site, en particulier l’accès aux bases de données.

Cardinalités :
 * L'interface Administrateur est associée à un contrôleur. Cette relation est bidirectionnelle : l'interface commande le contrôleur, et le contrôleur fournit un feedback à l'administrateur.

Méthodes :
 * Démarrage du site : Permet à l'administrateur de démarrer le site. Le composant appelle le script de démarrage du site et de ses composants.
 * Arrêt du site : Permet à l'administrateur d'arrêter le site.
 * Édition annonce : Permet à l'administrateur de modifier une annonce (pour non respect des conditions par exemple. Le composant appelle la méthode Modification d'une annonce du contrôleur pour mettre à jour l'annonce.
 * Suppression annonce : Permet à l'administrateur de supprimer une annonce (pour non respect des conditions par exemple). Le composant appelle la méthode Suppression d'une annonce du contrôleur pour supprimer l'annonce.
 * Édition compte utilisateur : Permet à l'administrateur d'éditer le compte d'un utilisateur (pour redéfinir un mot de passe sur demande de l'utilisateur par exemple). Le composant appelle la méthode Modification de compte du contrôleur avec les renseignements que l'administrateur a rentrés pour mettre à jour le compte de l'utilisateur.
 * Suppression compte utilisateur : Permet à l'administrateur de supprimer le compte d'un utilisateur (pour non respect des conditions par exemple). Le composant appelle la méthode Suppression de compte du contrôleur supprimer le compte de l'utilisateur.

Base de données Utilisateurs et Annonces
La base de données Utilisateurs et annonces contient toutes informations des profils des utilisateurs (login, hash de mot de passe, coordonnées), ainsi que la liste des annonces avec le propriétaire, la localisation et les détails.

Cardinalités :
 * La base de données Utilisateurs et annonces est associée à un contrôleur. Cette relation est bidirectionnelle : le contrôleur peut modifier la base, et la base fournit des données au contrôleur.

Base de données Metrics
La base de données Metrics contient l'ensemble de mesures obtenu avec InfluxDB. C'est grâce à cette base que le site peut être supervisé avec les outils de monitoring Grafana.

Cardinalités :
 * La base de données Metrics est associée à un contrôleur. Cette relation est unidirectionnelle : le contrôleur ne peut pas modifier la base, et la base fournit des données au contrôleur.

Contrôleur
Le contrôleur est le composant au cœur du système. C'est celui qui gère toutes les interactions entre les composants ainsi que les accès aux base de données.

Cardinalités :
 * Le contrôleur est associé à une base de données Utilisateurs et Annonces. Cette relation est bidirectionnelle : le contrôleur peut modifier la base, et la base fournit des données au contrôleur.
 * Le contrôleur est associé à une base de données Metrics. Cette relation est unidirectionnelle : le contrôleur ne peut pas modifier la base, et la base fournit des données au contrôleur.
 * Le contrôleur est associé à une interface pour les administrateurs. Cette relation est bidirectionnelle : l'interface commande le contrôleur, et le contrôleur fournit un feedback à l'administrateur.
 * Le contrôleur est associé à une ou plusieurs interfaces utilisateurs. Cette relation est bidirectionnelle : L'interface utilisateur fournit les informations saisies par l'utilisateur, et le contrôleur fournit les informations de la base de données Utilisateurs et annonces.

Méthodes :
 * Création de compte : Ajoute un compte utilisateur dans la base de données Utilisateurs (Login, hash de mot de passe, Nom, Prénom).
 * Modification de compte : Modifie un compte utilisateur dans la base de données Utilisateur.
 * Suppression de compte : Supprime un compte utilisateur dans la base de données Utilisateur.
 * Vérification d'authentification : Compare les informations d'authentification envoyé par l'interface utilisateur avec les informations dans la base de données.
 * Dépôt d'une annonce : Ajoute une annonce dans la base de données des annonces.
 * Modification d'une annonce : Modifie une annonce dans la base de données annonces.
 * Suppression d'une annonce : Supprime une annonce dans la base de données annonces.
 * Recherche des annonces : Cherche dans la base de données les annonces correspondant aux mots clés envoyés par l'interface utilisateur.
 * Détails d'une annonce : Cherche dans la base de données des annonces les détails et la description de l'annonce sélectionnée dans l'interface utilisateur.
 * Obtenir les coordonnées : Cherche dans la base de données des annonces les coordonnées du propriétaire de l'annonce.

Schéma d'implémentation


Le composant HA Proxy représente l'interface avec le client web de l'utilisateur. C'est par là que passent les connexions sécurisées vers le site.

Le composant Glassfish représente le contrôleur. C'est sur ce composant que tourne le site web, c'est à dire le code qui va interagir avec les interface des clients, ainsi que les bases de données. Pour plus de sécurité/disponibilité, ce composant est dupliqué.

Le serveur MySQL représente la base de données des Utilisateurs et des annonces. C'est içi que sont stockées les informations nécessaires au fonctionnement du site. Pour plus de sécurité/disponibilité, ce composant est dupliqué.

Le composant Grafana sert à l'interaction avec les administrateurs pour le monitoring du site web. Les mesures sont importées depuis le serveur InfluxDB.

Le serveur InfluxDb contient le mesures des metrics relatives au fonctionnement du site. Les valeurs sont fournies par le composant Glassfish.

Déposer une annonce
Le vendeur accède à la page de dépôt d'annonce en cliquant sur "Déposer une annonce". Les renseignements saisis sont ensuite envoyés au contrôleur pour être vérifiés avant d'être envoyés et ajoutés dans la base de données. Si l'ajout est réussi, un message de confirmation est renvoyé jusqu'à l'utilisateur.



Chercher une annonce
L'utilisateur saisit des mots clés dans la barre de recherche pour trouver des annonces. Ces mots clés sont transmis via le contrôleur à la base de données annonces qui renvoie les annonces correspondantes à la recherche. Une fois les annonces affichées dans l'interface, l'utilisateur peut les parcourir, et peut choisir de les filtrer ou de les trier. Les critères de tri sont appliqués par l'interface Web qui change l'affichage de annonces. Lorsqu'un utilisateur choisit une annonce, l'interface affiche les détails de l'annonce (description). Si l'utilisateur veut contacter le propriétaire de l'annonce, il peut demander les coordonnées. Une requête est alors faite sur la base de données via le contrôleur pour obtenir les coordonnées qui sont ensuite affichés sur l'interface Web.



S'authentifier sur le site
L'utilisateur clique sur le bouton connexion en haut à droite d'une des pages du site. Le site affiche la page d'authentification sur laquelle l'utilisateur saisit son login et son mot de passe. Ces informations sont ensuite envoyées à la base de données via le contrôleur pour être vérifiées. Dans le cas ou les informations sont correctes, le site renvoi un message de confirmation, et renvoie l'utilisateur connecté à sa page précédente.