Académique Documents
Professionnel Documents
Culture Documents
Membres du Jury :
Soutenu le : 06/07/2021
Je dédie ce projet :
Quoi que je fasse ou que je dise, je ne saurai point te remercier comme il se doit. Ton
affection me couvre, ta bienveillance me guide et ta présence à mes côtés a toujours été ma
source de force pour affronter les différents obstacles.
Qui je souhaite une bonne santé, aucune dédicace ne saurait exprimer l’amour, l’estime, le
dévouement et le respect que j’ai toujours eu pour vous.
Rien au monde ne vaut les efforts fournis jour et nuit pour mon éducation et mon bien- être.
Ce travail est le fruit de tes sacrifices que tu as consentis pour mon éducation et ma
formation.
1
Remerciements
Dieu
On remercie dieu le tout puissant de nous avoir donné la santé et la volonté d’entamer et de
terminer ce projet.
Mr Mohammed BOUHORMA
Tout d’abord, ce travail ne serait pas aussi riche et n’aurait pas pu avoir le jour sans l’aide
et l’encadrement de Monsieur Mohamed BOUHORMA, on le remercie pour la qualité de
son encadrement exceptionnel, pour sa patience, sa rigueur et sa disponibilité durant notre
préparation de ce projet.
Noureddine AZOUAGH
Nous tenons aussi à adresser nos profonds remerciements à nos encadrants techniques de
Stage Noureddine AZOUAGH pour ses précieux conseils, la qualité́ de ses suivis durant
toute la période de notre projet et la confiance qu’il nous a témoignés a été́ déterminants dans
la réalisation de notre travail.
2
Résumé
Ce travail s’inscrit dans le cadre du projet de fin d’études réalisé suite à notre stage au
sein de l’entreprise VirtuoCode depuis la fin du février 2021, pour l’obtention du
diplôme de master en systèmes informatiques et mobiles à l’université Abdelmalek
Essaadi et plus précisément à la faculté́ de sciences et techniques de Tanger durant
l’année universitaire 2020/2021.
Durant toute la période de notre stage au sein de VirtuoCode, notre mission principale
c’était le Développement d’une application mobile « My Mobilosoft » permettant de
gérer les avis des clients.
3
Chaque utilisateur peut gérer sa propre liste de favoris en supprimant un avis du
favori ou en effectuant une recherche par le nom d'un magasin, il peut
également aller à l'examen pour répondre.
Chaque utilisateur a un profil pour voir ses propres détails.
Chaque utilisateur a une zone de notifications pour voir les nouveaux avis à
venir il existe deux types de notification le premier lorsque l'application est
ouverte automatiquement les avis à venir seront ajoutés à la zone de notification
et le second si l'application est fermée une notification push apparaîtra.
Chaque utilisateur peut voir toutes les réponses plus anciennes qui ont été
ajoutées à un avis et a la possibilité de mettre à jour chacune d'entre elles
Chaque utilisateur dispose d'une zone de paramètres pour contrôler l'application
à sa guise.
Chaque utilisateur peut voir tous les avis auxquels il a répondu sous forme de
graphique contenant le pourcentage des avis non répondus et la réponse
répondue
Abstract
This report is an illustration of the work carried out within the company VirtuoCode as part
During the entire period of our internship at VirtuoCode, our main mission was the
A user can log into the application and he can view the reviews of the stores
Each user can respond to the reviews of the stores that has the access to them.
Each user can skip the reviews of the stores that belongs to him.
4
A user can filter the reviews by status [Replied – Skipped – Not Replied –
Assign to me].
Each user can filter reviews by magazine name or zip code, also they can
Each store manager can respond to the reviews of his stores, which means the
Each user has the ability to switch between the sites that belongs to him.
Each user has own favorite list of reviews and he can to filter them by the
Each user has a notification area depend by the site to see the new coming
review.
Each user can see all the answer on a review also he can update the older
answers.
Each user can see a chart as a statistic of the review that he replied them.
5
Nom et Prénom de l’Etudiant Stagiaire :
CHLIAH JAAFARI Younes
Intitulé du sujet :
Développement d’une application mobile My
Mobilosoft permettant de gérer les avis des clients.
Etablissement d’accueil :
La société VirtuoCode
Encadrant Pédagogique :
Prof. Mohammed BOUHORMA
Avant-propos
Encadrant Technique de Stage :
Mr. Noureddine AZOUAGH
Période de projet :
Du 15 février 2021 au 15 août 2021
Cadre du Stage :
Projet de Fin d’Etudes présenté en vue de
l’obtention du master systèmes informatiques et
mobiles (SIM).
Filière :
Master en Sciences et Techniques – Système
Informatiques et Mobiles (MST-SIM)
6
Table des abréviations
Abréviation Désignation
7
Table de figures
Figure 1 Ecosystème du groupe Virtuology International ............................................................................. 16
Figure 2 fonctionnement du méthode scrum ...................................................................................................... 20
Figure 3 Aperçu d’Asana .............................................................................................................................................. 24
Figure 4 Aperçu d’application de Skype ................................................................................................................ 26
Figure 5 Aperçu de Google Meet ............................................................................................................................... 27
Figure 6 Exemple de scrum......................................................................................................................................... 29
Figure 7 diagramme de gantt ..................................................................................................................................... 30
Figure 8 Logo Flutter framework ............................................................................................................................. 39
Figure 9 Logo Intilijj...................................................................................................................................................... 40
Figure 10 Logo Spring .................................................................................................................................................. 40
Figure 11 Logo Dart langage ..................................................................................................................................... 41
Figure 12 Logo Maven................................................................................................................................................... 41
Figure 13 Logo Hibernate ............................................................................................................................................ 41
Figure 14 Logo Google My Business ........................................................................................................................ 42
Figure 15 Logo Facebook Graph API ....................................................................................................................... 42
Figure 16 Logo Google Cloud SQL ........................................................................................................................... 43
Figure 17 Logo Git........................................................................................................................................................... 43
Figure 18 Logo StarUML .............................................................................................................................................. 44
Figure 19 Logo GanttProject....................................................................................................................................... 44
Figure 20 Logo java ........................................................................................................................................................ 44
Figure 21 Logo Java EE ................................................................................................................................................. 45
Figure 22 Logo spring boot ......................................................................................................................................... 45
Figure 23 Logo Firebase ............................................................................................................................................... 46
Figure 24 Logo mongoDB ............................................................................................................................................ 47
Figure 25 Logo PostgresSQL....................................................................................................................................... 47
Figure 26 Logo SQLite ................................................................................................................................................... 48
Figure 27 Use case diagram ........................................................................................................................................ 51
Figure 28 Class diagram ............................................................................................................................................... 52
Figure 29 Sequence diagram ...................................................................................................................................... 54
Figure 30 Welcome screen .......................................................................................................................................... 56
Figure 31 Authentication screen .............................................................................................................................. 56
Figure 32 Home screen ................................................................................................................................................. 57
Figure 33 Switch between site .................................................................................................................................. 57
Figure 34 Filter area ...................................................................................................................................................... 58
Figure 35 Filter by status ............................................................................................................................................ 58
Figure 36 Filter by date ................................................................................................................................................ 59
Figure 37 Other filter options .................................................................................................................................... 59
Figure 38 Options area ................................................................................................................................................. 60
Figure 39 Navigation drawer options..................................................................................................................... 60
Figure 40 Profile screen ............................................................................................................................................... 61
Figure 41 Page de sites ................................................................................................................................................. 61
Figure 42 Favourite page ............................................................................................................................................. 62
Figure 43 Notifications page ...................................................................................................................................... 62
8
Figure 44 Settings page ................................................................................................................................................ 63
Figure 45 Fingerprint popup...................................................................................................................................... 63
Figure 46 Statistics page .............................................................................................................................................. 64
Figure 47 Who we are page ........................................................................................................................................ 64
Figure 48 Privacy policy page .................................................................................................................................... 65
Figure 49 Contact us page ........................................................................................................................................... 65
Figure 50 reply page ...................................................................................................................................................... 66
Figure 51 Older answers .............................................................................................................................................. 66
Figure 52 Update answer bottom sheet ................................................................................................................ 67
Figure 53 Canned reply page...................................................................................................................................... 67
9
Table des matières
Dédicaces ................................................................................................................................... 1
Remerciements ......................................................................................................................... 2
Résumé ...................................................................................................................................... 3
Abstract ..................................................................................................................................... 4
I- Introduction .................................................................................................................... 15
I.1 Présentation de l’organisme d’accueil ..................................................................... 15
II- Les Méthodes Agiles : la Méthode SCRUM ................................................................ 16
II.1 Les Méthodologies Agiles.................................................................................... 16
II.1.1 SCRUM ......................................................................................................... 17
II.1.1.1 La méthode SCRUM (pourquoi choisir SCRUM) ............................... 17
II.1.1.2 Implémentation dans notre projet .................................................... 20
II.1.2 Communication entre les membres d’équipe ............................................................. 23
a. Outil Asana ................................................................................................................. 23
b. Outil Skype .............................................................................................................. 26
c. Google Meet ............................................................................................................... 26
II.1.3 Artefacts ...................................................................................................................... 27
II.1.4 Planification du projet ................................................................................................ 30
III- Conclusion .................................................................................................................. 31
I - Introduction ...................................................................................................................... 33
I.1 Les applications mobiles en ligne de gestion des reviews ............................................. 33
I.1.1 LocalClarity .............................................................................................................. 33
I.1.2 Réputation Studio .................................................................................................... 34
I.1.3 Cloutly ....................................................................................................................... 34
10
II. La problématique ............................................................................................................. 35
III. Solution propose ............................................................................................................. 36
III.1 Recueil des besoins du système .................................................................................... 36
III.1.1 Les besoins techniques ......................................................................................... 36
III.1.2 Les besoins fonctionnels ...................................................................................... 36
IV- Conclusion .................................................................................................................. 37
I. Introduction .................................................................................................................... 39
I.1 Les langages de programmation et les logiciels, Framework ..................................... 39
I.1.1 Flutter ........................................................................................................................... 39
I.1.2 IntelliJ IDEA ................................................................................................................. 40
I.1.3 Spring............................................................................................................................ 40
I.1.4 Dart ............................................................................................................................... 41
I.1.5 Maven ........................................................................................................................... 41
I.1.6 Hibernate ...................................................................................................................... 41
I.1.7 Google My Business API .............................................................................................. 42
I.1.8 Facebook Developers API ............................................................................................ 42
I.1.9 Google Cloud SQL pour PostgreSQL .......................................................................... 43
I.1.10 Git & Github ............................................................................................................... 43
I.1.11 Star UML .................................................................................................................... 44
I.1.12 Gantt Project .............................................................................................................. 44
I.1.14 Java ............................................................................................................................. 44
I.1.15 Spring boot ................................................................................................................. 45
I.1.16 Firebase ...................................................................................................................... 46
I.1.17 MongoDB.................................................................................................................... 47
I.1.19 SQLite ......................................................................................................................... 48
III. Conclusion .................................................................................................................. 48
I- Introduction .................................................................................................................... 56
II- Réalisation de l’application Mobile............................................................................ 56
III- Réalisation des APIs ................................................................................................... 68
III.1 Authentification d'utilisateur......................................................................................... 68
III.2 Obtenir les détails de l'utilisateur après authentification ............................................. 69
III.3 Modifier la réponse ....................................................................................................... 69
III.4 Charger les avis ............................................................................................................ 70
III.5 Charger plus des avis.................................................................................................... 70
III.6 Charger les réponses précédentes sur un avis .............................................................. 71
III.7 Charger les réponses prédéfinies.................................................................................. 71
III.8 Mettre à jour le statut d'une notification ...................................................................... 72
III.9 Charger les notifications............................................................................................... 72
III.10 Répondre à un avis...................................................................................................... 73
III.11 Passe à un avis ............................................................................................................ 73
III.12 Envoyer la notification push à l'appareil de l'utilisateur ........................................... 74
III.13 Ajouter des balises à un avis ....................................................................................... 74
III.14 Supprimer des balises à un avis .................................................................................. 75
IV. Conclusion .................................................................................................................. 75
Webographie ........................................................................................................................... 77
12
Introduction générale
Dans le cadre de notre projet de fin d’étude lors de notre deuxième année master en systèmes
informatique et mobiles, on a passé́ une période de stage de 6 mois au sein de l’entreprise
VirtuoCode, où on a pu entamer une expérience pratique et professionnelle dans le monde
informatique en gérant un projet qui se dirige dans le contexte du développement d’une
application mobile.
Une entreprise qui gère sa réputation en ligne aura systématiquement plus d’impact et
de visibilité pour la simple et bonne raison que son positionnement sera meilleur qu’une
entreprise qui néglige son image. Elle s’assure donc d’attirer des nouveaux clients et
laisse moins, voire parfois plus du tout, de marge à la concurrence.
Le contexte de notre projet est de proposer une solution mobile permettant de créer un espace
numérique qui assure la rencontre de deux demandeurs de service : le manager du store qui
peut consulter et voir les reviews des clients, et le client qui peut profiter d’exprimer à son
tour de son point du vue à propos du magasin et faire un review et un commentaire par des
pages Facebook ou Google.
13
Chapitre I
14
Chapitre I : Contexte général du projet
I- Introduction
Tout projet se situe dans un cadre et un contexte bien précis, et le but de cette partie est de
situer le lecteur dans le contexte général de mon stage. Et pour ce faire, on va commencer tout
d’abord par une présentation générale de l’organisme d’accueil. On abordera par la suite la
présentation du projet où on décrira la problématique à traiter et la solution proposée, alors
que, la fin de ce chapitre portera sur la planification et la conduite du projet, ainsi que le
planning de travail adopté.
Les entreprises sont par définition modulaires et habiles dans la coopération, avec un ADN
orienté vers une collaboration aisée avec des équipes extérieures. Le groupe met à disposition
ses méthodologies et ses outils pour faciliter une progression fluide et efficace lorsque
plusieurs talents accompagnent un même projet.
15
Figure 1 Ecosystème du groupe Virtuology International
Une méthodologie agile, quelle qu’elle soit, prévoit le fractionnement des étapes de
développement logiciel. Contrairement à la méthode traditionnelle qui prévoit la planification
totale du projet avant même son développement, le Manifeste Agile préconise plutôt la
fixation d’objectifs à court terme. Le projet est ainsi fragmenté en plusieurs sous-parties que
l’équipe qui en a la charge se doit d’atteindre progressivement en réajustant si nécessaire les
objectifs pour répondre le plus possible aux attentes du client. Les méthodes agiles mettent un
point d’honneur à renforcer les relations entre les membres de l’équipe projet, mais également
entre l’équipe et le client. C’est pour cette raison que la flexibilité́ et la souplesse dans
l’organisation sont deux piliers fondamentaux des méthodes agiles.
16
Une fois qu’une organisation décide d’adopter une gestion de développement Agile, il reste
encore à choisir la méthodologie la plus adaptée à son projet. En effet, les méthodes Agiles
disponibles sont nombreuses et peuvent être source de confusion. , c’est pour cette raison que
le bon choix du processus de développement logiciel conduit à la bonne réalisation du projet,
c’est pour cette raison nous avons fait référence à une étude généraliste sur les principaux
processus de développement, pour pouvoir choisir le meilleur processus correspondant à notre
cas.
II.1.1 SCRUM
La mêlée est donc une phase essentielle au rugby comme dans la gestion de projet. Si les
conditions de réussite ne sont pas remplies, alors il faut réorienter le projet pour repartir sur de
meilleures bases. Le client est étroitement impliqué grâce à la livraison régulière de
prototypes opérationnels permettant de valider les développements. Cette gestion dynamique
permet de s’assurer de la correspondance entre le besoin exprimé et le produit livré, et de
réorienter au besoin les futurs développements.
On propose maintenant de zoomer sur l’une des méthodes Agile existantes afin de vous
montrer plus concrètement le fonctionnement.
Pourquoi traiter de Scrum en particulier ? Tout simplement parce que Scrum est de très loin la
méthodologie la plus utilisée parmi les méthodes Agile existantes. Elle est donc la plus
éprouvée, documentée et supportée. Livres, blogs, formations, vidéos, associations,
conférences traitant de Scrum ne manquent pas et bon nombre de ces ressources sont
17
accessibles gratuitement. On pourrait pratiquement parler d’un standard Agile. Un autre atout
important : Scrum est simple à comprendre. Sa maitrise est en revanche difficile. Les experts
de Scrum, même ses fondateurs, le décrivent comme un « cadre de travail permettant de
répondre à des problèmes complexes et changeants tout en livrant de manière productive et
créative des produits de la plus grande valeur possible », Scrum propose un modèle de
contrôle de processus basé sur l'empirisme. Il s'appuie sur trois piliers :
La transparence : Scrum met l'accent sur le fait d'avoir un langage commun entre l'équipe et
le management, qui doit permettre à tout observateur d'obtenir rapidement une bonne
compréhension du projet.
L'inspection : Scrum propose de faire le point sur les différents artéfacts produits à
intervalle régulier, afin de détecter toute variation indésirable.
L'adaptation : Si une dérive est constatée pendant l'inspection, le processus doit alors être
adapté. Scrum fournit des rituels, durant lesquels cette adaptation est possible. Il s'agit de
sprint planning, de quotidienne Scrum et de sprint review qu’on va détailler dans la section
suivante :
18
Planifier le sprint afin de :
Permettre au product owner d'indiquer à l'équipe les items prioritaires.
Définir la capacité de l'équipe à réaliser ces items (en mesurant sa vélocité).
Choisir les items à intégrer dans le sprint.
Animer un " Scrum " (mêlée) quotidien.
Mesurer l'avancement des tâches qui étaient prévues lors de la mêlée
précédente :
Permettre l'engagement de chaque équipier devant ses pairs, sur le travail
qu'il va réaliser dans la journée.
19
Figure 2 fonctionnement du méthode scrum
En faisant liaison entre l’étude généraliste précédente et notre projet, le choix de Scrum
comme une méthodologie de pilotage pour ce projet s’est basé sur les atouts de ce dernier.
La grande capacité́ d’adaptation au changement grâce à̀ des itérations courtes.
La chose la plus importante, c’est que Scrum rassemble les deux côtes théorique et
pratique et se rapproche beaucoup de la réalité́ .
La nature de cette méthode qui est bien organisé et permet de tester et valider chaque
partie du projet avant de passer à une autre.
Les trois rôles scrum décrivent les principales responsabilités des membres de l'équipe Scrum.
Il ne s'agit pas d'intitulés de poste. N'importe quel intitulé de poste, même existant, peut
remplir l'un des rôles. Parce que l'empirisme, l'auto-organisation et l'amélioration continue
sont au cœur de Scrum, les trois rôles donnent une définition minimale des responsabilités
20
pour permettre aux équipes de travailler efficacement. Les équipes peuvent ainsi assumer la
responsabilité de leur organisation et continuer à s'améliorer.
VirtuoCode
Le sprint : est une période (constante) d'un mois au maximum, au bout de laquelle
l'équipe délivre un incrément du produit, potentiellement livrable. Un nouveau sprint
21
démarre dès la fin du précédent. Chaque sprint est associé à une liste d'éléments du
backlog du produit à réaliser durant ce sprint.
Dans notre projet le déroulement et la planification des sprints a été́ découpé́ en 5 principaux
comme le montre dans ce ci-dessous :
Sprint 2
Conception ET modélisation
Réunion quotidienne : C’est une réunion de planification qui dure 15 minutes et permet aux
développeurs de faire un point de coordination sur les taches en cours et sur les difficultés
rencontrées, dans le cas de notre projet tous nos Daily Scrum été́ fait en ligne à cause des
conditions exigées par l’épidémie du COVID-19 et qui nous a obligé́ de passer toutes nos
réunions en ligne sans un rencontre corporel.
22
Sprint planning Meeting : Toute l'équipe Scrum est présente à cette réunion, qui ne dure plus de
2 heures, dans notre cas pour planifier les user stories du backlog du produit qu'elle a décidé́
de traiter pendant la prochaine itération et comment elle s'organisera pour y parvenir.
Sprint review : À la fin du sprint, l'équipe Scrum et les parties-prenantes invitées se réunissent
pour effectuer la revue de sprint, qui dure au maximum 1 heure, qui a pour objectif de valider
le logiciel qui a été́ produit pendant le sprint. L'équipe fait une démonstration du logiciel
produit, dans le cas de notre projet tous nos Sprint review on été fait aussi en ligne à cause des
conditions exigées par l’épidémie du COVID-19 et virus et qui nous a obligé́ de passer toutes nos
réunions en ligne sans une présence corporelle.
Dans cette section on va évoquer l’un des piliers essentiels de la bonne conduite
de projet, qui est la communication. Cette dernière représente l'ensemble des
interactions et des échanges verbaux ou écrites avec les membres d’équipe afin de
transmettre l’information, et de s’assurer qu’on suit la bonne voie lors la réalisation du
projet, Parmi les outils qu’on a utilisés pour bien établir cette communication, on note
a. Outil Asana
23
Figure 3 Aperçu d’Asana
Sous-tâches : diviser les tâches en plusieurs éléments plus petits ou indiquer les
étapes nécessaires pour les terminer.
24
Échéances : les échéances permettent de veiller à ce que chaque tâche soit
achevée à temps. On peut afficher les tâches dans un calendrier Asana ou même
dans un calendrier professionnel.
Pièces jointes : ajouter des fichiers à tout type de tâche ou discussion depuis
ordinateur, Google Drive, OneDrive, Dropbox ou Box.
Communication
Commentaires sur les tâches : commenter directement une tâche pour préciser le
travail à faire et mentionnez des collègues ou d’autres tâches et projets pour tout
connecter.
Révision : laisser des commentaires précis directement sur les images et fichiers
PDF. Ils se transforment en tâches pour un suivi efficace.
Révision d’image : laisser des commentaires précis sur des images pour que les
créatifs comprennent exactement le travail à effectuer.
Gestion d’équipe
Équipes : créer des équipes pour organiser les projets, et les relier aux collègues
les uns aux autres grâce à un calendrier et des discussions partagés.
Permissions : limiter l’accès aux projets, créer des équipes masquées pour les
informations sensibles ou rendre publics les équipes et projets auxquels toute
l’organisation doit accéder.
25
b. Outil Skype
Skype est un moyen simple, rapide et populaire pour les équipes distantes de rester en
contact et de collaborer. Il permet de passer des appels audio ou vidéo via Internet, ainsi
que le partage d'écran. La messagerie instantanée, le transfert de fichiers et la visioconférence
sont des fonctionnalités que Skype offre pour tous les utilisateurs.
Ce qui est utile pour organiser des réunions, et de joindre tous les membres de l’équipe, là où
ils se trouvent dans le monde.
c. Google Meet
26
Figure 5 Aperçu de Google Meet
II.1.3 Artefacts
Les artefacts sont des informations qu'une équipe Scrum et les parties
prenantes utilisent pour détailler le produit en cours de développement, les actions pour le
produire et les actions effectuées au cours du projet. ... Pourtant, dans le développement de
logiciels, le terme artefact fait référence aux informations clés nécessaires lors du
développement d'un produit, scrum définit trois artefacts :
Product Backlog : L’approche Scrum propose de commencer par lister les exigences du client
afin de produire le Product Backlog sous forme de liste d’item ou User Story, cette liste
contient tout ce qui pourrait être requis dans le produit et est l'unique source des besoins pour
tous les changements à effectuer sur le produit.
Pour le cas de notre projet le backlog produit de notre application contient 17 environs User
Stories comme illustre le tableau suivant :
En tant qu’utilisateur
27
Le backlog est sous la responsabilité́ du product owner. Chacun peut contribuer à
collecté des éléments, mais c'est le product owner qui les accepte finalement et c'est lui qui
définit les priorités.
Sprint Backlog : En début de sprint, un but est décidé́ . Pour atteindre cet objectif, l'équipe de
développement choisit lors de la réunion de planification de sprint quels éléments du Product
Backlog seront réalisés. Ces éléments sont alors groupes dans un backlog dite Sprint Backlog.
28
Outils Scrum :
Le Taskboard est une table de 4 colonnes, dans la première on met toutes fiches représentant les
User Stories du Sprint courant. Les trois autres colonnes représentent les états par lequel chaque
tache doit passer, chaque ligne représente un ensemble de tache associée à une User Story ou
dans certains cas les bugs à corriger.
BurndownChart :
C’est également durant la réunion de Daily Scrum que l’équipe met à jour le BurndownChart, qui
est une courbe qui permet de visualiser l’avancement de l’équipe sur le sprint.
29
La différence entre la ligne qui est en bleu foncé et celle qui est en rouge peut être analysée pour
en soutirer des informations précieuses.
Si la ligne rouge est supérieure à la ligne bleu, cela veut dire que l’effort estimé au
début du travail et inferieur à l’effort actuelle, Contrarient si la ligne rouge est inferieur à la ligne
bleu foncé.
Et pour se faire, on a utilisé le diagramme de Gantt qui est l’un des moyens les plus populaires
et les plus utiles d’afficher les activités (tâches ou événements) en fonction du temps. À gauche du
tableau, on trouve une liste des activités et, à droite, une échelle de temps appropriée. Chaque activité
est représentée par une barre ; la position et la longueur de la barre reflètent la date de début, la durée
et la date de fin de l'activité. Ceci permet donc de voir en un coup d'œil :
30
III- Conclusion
Dans ce chapitre, nous avons présenté l'organisation hôte, VirtuoCode, et sa société mère,
Virtuology International. Ensuite, nous avons trouvé une présentation de mon projet, qui
comprend
Le contexte général, les méthodes utilisées pour développer cette solution et le temps que
je vais consacré au développement incluent la recherche et la préparation de l'environnement et
enfin nous avons parlé de la méthode que nous avons utilisée pour communiquer entre les
membres de l'équipe.
31
Chapitre II
L’étude du marché
Dans ce chapitre, nous allons parler sur des applications qui sont déjà dans le
marché et elles font la même chose que nous voulons faire est de gérer les avis
32
Chapitre II : L’étude du marché
I - Introduction
Dans ce chapitre, je vais parler d'une application qui existe déjà et cela fait la même chose
que nous allons construire dans notre projet et nous faisons une comparaison pour voir si notre
idée existe ou est unique.
LocalClarity collabore avec les entreprises implantées sur plusieurs sites, à travers de
nombreux secteurs. Elle leur permet d'augmenter leur clientèle ainsi que le trafic web vers leur
site Internet, par le biais d'outils de gestion des avis client et de la réputation.
Offrant un rapport qualité-prix plus intéressant que n'importe quelle autre plateforme,
LocalClarity aide les entreprises et les agences à obtenir des informations sur les tendances
associées à l'opinion des clients, à développer des relations en répondant directement aux avis des
clients, à recueillir des informations à travers plusieurs sites ou encore à augmenter le trafic web
local. Gérer les avis de dizaines de sources dans une seule boîte de réception. Programmes
disponibles pour les entreprises de 10 à 10 000 sites et agences de toute taille.
33
I.1.2 Réputation Studio
Pour les grandes marques qui reçoivent des quantités massives d'avis clients, Reputation
Studio est la solution ORM (Mapping objet-relationnel) qui exploite l'IA pour automatiser le
processus encombrant de gestion des avis.
I.1.3 Cloutly
34
Les spécialistes du marketing multisites, les franchises et les entreprises dans des
environnements concurrentiels utilisent Cloutly pour centraliser et amplifier l'impact des avis
clients sur des dizaines de sites d'avis et d'applications.
Cloutly aide à consulter, gérer et suivre les avis client ainsi qu'à y répondre via une
plateforme unique, qu'ils proviennent de Google, Facebook, TrustPilot ou de nombreux autres
sites d'avis.
Personnaliser et envoyer des invitations à laisser des avis personnalisés aux clients par e-
mail et SMS, en leur demandant de noter en ligne sur le site de votre choix. Monter dans le
référencement lors des recherches des utilisateurs en améliorant vos avis Google locaux et
affichez les avis en direct sur votre site grâce à des widgets.
II. La problématique
Selon une étude IFOP réalisée pour le compte de l’entreprise Réputation VIP, 88% des
internautes consultent des avis clients sur des blogs, forums, ou sites web spécialisés, avant
d’effectuer un achat sur un site e-commerce.
L’avis des consommateurs apparaît ainsi comme un élément clé du processus d’achat, à ne
surtout pas négliger.
En effet, si la majorité des avis sont négatifs, ou s’ils sont trop imprécis, 66% de ces
internautes vont choisir de repousser l’acte d’achat pour y réfléchir davantage, alors que 30%
vont décider directement d’aller voir ailleurs.
Autant dire que ne pas intégrer les avis clients à son site e-commerce représente un gros manque
à gagner.
Dans notre cas l’entreprise dispose déjà d'une plateforme pour gérer l'avis des clients mais le
problème est que chaque utilisateur devrait ouvrir son ordinateur et se rendre sur le site web my
Mobilosoft, puis passer à la zone de la boîte de réception pour voir les nouvelles reviews et
devrait faire le filtre pour voir toutes les reviews n'a pas répondu avant, mais si il voulait répondre
à un avis plus tard, il ne peut pas le faire à chaque fois, il devrait aller dans la boîte de réception et
faire des filtres pour obtenir les avis qu'il veut, donc le client a besoin de quelque chose pour
35
l'aider à voir les nouveaux avis à venir et à être capable d'avoir la capacité d'un contrôle total sur
les avis.
Notre application doit pouvoir offrir les différentes fonctions ou services suivant :
Un utilisateur peut se connecter à l’application et il peut visualiser
et répondre aux reviews des magasins qui gèrent.
Chaque utilisateur il peut voir ou répondre aux les reviews des magasins qui
génèrent.
Un utilisateur peut filtrer les reviews par statut.
Un utilisateur peut répondre un review avec une réponse prédéfinie.
En cas de réponse déjà fait en peut faire (update) mise à jour
Chaque store manager peut répondre aux reviews de ses magasins.
36
IV- Conclusion
Dans ce chapitre, nous avons parlé des applications qui nous permettent de gérer des
revues et du problème en général, nous avons également parlé de la solution proposée et pourquoi
nous avons besoin de cette solution dès que possible et nous avons divisé l'exigence en deux
options : besoin technique et besoin fonctionnel.
37
Chapitre III
38
Chapitre III : Les outils utilisés pour la
réalisation du projet
I. Introduction
Dans ce chapitre, je vais énumérer tous les outils et le framework, l'éditeur de
développement intégré (IDE), que j'ai utilisé pour créer l'application, avec une brève description
et comment j'ai utilisé tous ces outils dans l'application.
I.1.1 Flutter
Il reste cependant aussi adapté au développement d’applications web de bureau classiques. Les
applications développées avec Flutter prennent l’aspect d’applications typiques des systèmes
correspondants et se comportent également de manière similaire, sans que le programmeur, c’est-
à-dire vous, n’ait besoin de prêter attention à ces caractéristiques.
Le Flutter SDK se base sur le langage de programmation Dart également développé par Google.
Il se veut le successeur moderne du langage JavaScript classique et, tout comme ce dernier, il
s’exécute directement sur les navigateurs, sous forme d’application web. Les programmes Dart
peuvent aussi être exécutés directement sur un serveur.
Dans le navigateur, ils sont employés avec le trans-compilateur Dart2js dans JavaScript. Les
applications de la nouvelle plateforme Fuchsia de Google sont directement développées avec
Dart, dont la structure s’apparente à celle de langages de programmation orientés objet tels
que Java ou C# ou PHP ….
39
Dans mon application, j'ai utilisé Flutter comme framework pour créer l'interface utilisateur
fluide et comme compilateur de langage Dart. Je n'ai donc qu'à écrire un code de base et le
framework Flutter générera une version multiplateforme de l'application (android, ios …).
IntelliJ IDEA est un IDE Java intelligent qui fournit une combinaison robuste d’outils de
développement. Ses fonctionnalités clés incluent :
De nombreuses factorisations
Les fonctionnalités de IntelliJ IDEA sont continuellement étendues par les utilisateurs et
les tiers via des plugins. IntelliJ IDEA prend en charge Java EE, Spring / Hibernate et
d’autres piles technologiques.
C'est l'éditeur de développement intégré que j'ai utilisé pour écrire l'API via le langage de
démarrage Spring.
I.1.3 Spring
40
Spring est un Framework libre pour construire et définir l'infrastructure des applications
java, dont il facilite le développement et les tests. Le Framework Spring a tout d’abord été écrit
par Rod Johnson et réalisé sous la licence Apache 2.0 en 2003.
I.1.4 Dart
Dart est un langage de programmation conçu pour le développement client, par exemple pour le
Web et les applications mobiles. Il est développé par Google et peut également être utilisé pour
construire des applications serveur et bureautique. Dart est un langage orienté objet, basé sur des
classes et ramassé avec une syntaxe de style C.
C'est le langage de programmation que j'ai utilisé pour développer l'application mobile.
I.1.5 Maven
I.1.6 Hibernate
41
Hibernate une solution open source de type ORM qui facilite le développement de la
couche persistance de l’application.
C’est une interface de programmation d’applications pour automatiser plusieurs tâches sur
Google My Business. Cela permet de gérer plusieurs emplacements et d'utiliser des
fonctionnalités telles que les publications, les réponses aux avis, les photos à grande échelle etc.
A savoir que, Google My Business est un service de référencement destiné aux propriétaires
d'entreprise et exploité par Google. GMB a pour but de donner aux propriétaires d'entreprise
davantage de contrôle sur ce qui apparaît dans les résultats de recherche. Google permet aux
propriétaires d'entreprise de vérifier les données concernant leur établissement en créant une
nouvelle fiche ou en revendiquant une fiche existante
J'ai utilisé Google Api pour lire et écrire les avis des utilisateurs qui ont évalué.
L’API Graph est l’interface principale par laquelle les applications peuvent lire et écrire
sur le graphe social de Facebook. Accéder aux pages, aux publications, aux groupes, aux
évènements et à d’autres sections
42
J'ai utilisé Facebook Api pour lire et écrire les avis des utilisateurs qui ont évalué.
La plateforme sur laquelle on travaille utilise Google Cloud SQL pour PostgreSQL
comme service de gestion de base de données relationnelle. Il facilite la configuration, la gestion
et l'administration des bases de données. Ce cas d'utilisation est un composant fondamental d'une
architecture de micro-services reposant sur un service de stockage indépendant, ce qui permet la
décentralisation de la gestion des données et assure l'évolutivité indépendante de chaque service.
GitHub est une plateforme open source de gestion de versions et de collaboration destinée
aux développeurs de logiciels. Livrée en tant que logiciel à la demande (SaaS, Software as a
Service), la solution GitHub a été lancée en 2008. Elle repose sur Git, un système de gestion de
code open source a pour but d'accélérer le développement logiciel.
Git permet de stocker le code source d'un projet et de suivre l'historique complet de toutes
les modifications apportées à ce code. Grâce aux outils qu'elle fournit pour gérer les conflits
éventuels résultant des changements apportés par plusieurs développeurs, il est possible de
collaborer efficacement sur un même projet. GitHub facilite la programmation collaborative en
mettant une interface Web à disposition du référentiel de code de Git, ainsi que des outils
d'administration favorisant la collaboration.
GitHub fait penser à un site de réseau social sérieux sur lequel se retrouvent les
développeurs de logiciels. Ses membres peuvent suivre les activités et évaluer le travail de
chacun, recevoir des mises à jour pour des projets spécifiques et communiquer de manière
publique ou privée.
43
I.1.11 Star UML
GanttProject est un logiciel libre de gestion de projet écrit en Java, qui permet d'éditer
un diagramme de Gantt. Parmi les fonctionnalités principales de ce projet :
I.1.14 Java
La technologie Java définit à la fois un langage de programmation orienté objet et une plateforme
informatique. Créée par l'entreprise Sun Microsystems (souvent juste appelée "Sun") en 1995, et reprise
depuis par la société Oracle en 2009, la technologie Java est indissociable du domaine de l'informatique
et du Web. On la retrouve donc sur les ordinateurs, mais aussi sur les téléphones mobiles, les consoles
de jeux, etc. L'avènement du smartphone et la puissance croissante des ordinateurs, ont entraîné un
regain d'intérêt pour ce langage de programmation.
Java est orienté objet, ce qui implique, entre autres caractéristiques, qu'un objet tire parti de son
appartenance à une classe d'objets pour hériter du code commun à cette classe. Les objets sont
44
considérés comme des « noms » auxquels un utilisateur peut se rapporter, plutôt qu'à des « verbes
» traditionnellement utilisés dans les procédures. Ainsi, une méthode peut être considérée comme
l'une des fonctionnalités ou l'un des comportements de l'objet La machine virtuelle Java
comprend un compilateur JIT (Just-In-Time), ou compilateur à la volée qui compile
dynamiquement le code source en code exécutable au lieu de l'interpréter instruction par
instruction.
dans notre cas, j'ai utilisé JAVA Enterprise Edition (EE) est un SE Java plus quelques classes et
fonctionnalités pour permettre à Java de devenir un langage de serveur pour nous permettre
d'exécuter un serveur et de communiquer avec lui, est une application structurée avec un couches
client, métier et entreprise. Il est principalement utilisé pour développer des API pour des
applications de bureau telles que des logiciels antivirus, des jeux, etc. Il est principalement utilisé
pour développer des applications Web.
Spring Boot est un framework de développement JAVA. C'est une déclinaison du framework
classique de Spring qui permet essentiellement de réaliser des micro services (ce sont la majeure
partie du temps des services web qui sont regroupés en API).
Le principal avantage de Spring Boot est qu'il permet d'être extraordinairement productif dans la
construction de son API : il se concentre sur la partie métier de son application en laissant de côté
toute la complexité de la création d'une API. Spring se basant sur JAVA comme langage de
développement, vous êtes toujours libre de réaliser n'importe quel type de développement et
n'êtes pas bloqué dans un type de développement spécifique.
Chaque projet SpringBoot est composé de librairies dont votre projet à besoin... et de rien d'autre
! Ainsi, chaque projet Spring Boot embarque uniquement le strict nécessaire. De manière
générale, le framework propose en standard tout ce qui est nécessaire pour :
45
Sécuriser son API
etc.
I.1.16 Firebase
Firebase est le nom d’une plateforme mobile de Google qui facilite la création de back-end à la
fois scalable et performant. En d’autres termes, il s’agit d’une plateforme qui permet de
développer rapidement des applications pour mobile et pour le web.
L’objectif de la création de Firebase.google.com en 2011 par James TAMPLIN et Andrew LEE
est d’éviter aux professionnels et aux particuliers de s’engager dans un processus complexe de
création et de maintenance d’une architecture serveur.
De plus, la plateforme peut être exploitée par plusieurs utilisateurs en même temps sans connaître
un quelconque bug. La praticité est également au rendez-vous grâce à ses fonctionnalités
intuitives. Depuis le rachat de la plateforme par Google en 2014, Firebase SDKs a connu de
nombreuses améliorations et n’a de cesse de satisfaire ses utilisateurs
Firebase met à votre disposition différents services pouvant être répartis en deux catégories :
➤ Les outils de développement et de test de son application ;
46
I.1.17 MongoDB
MONGODB est la 1ère base de données NoSQL OpenSource, elle adopte un modèle de données
de type document qui lui confère une grande souplesse d’utilisation et une vraie évolutivité.
Avec MongoDB les données sont modélisées sous forme de documents JSON, le système permet
de faire évoluer le schéma de la base de données à la volée et de s’abstraire de l’utilisation d’un
ORM.
FONCTIONNALITÉS PRINCIPALES DE MONGODB
La réplication permet de dupliquer les serveurs de base de données pour répondre à une
monté en charge ou une tolérance de panne.
Le Sharding permet de répartir les données sur plusieurs serveurs soit pour simplement
augmenter les performances ou pour répartir les données géographiquement.
Il s'agit de la deuxième base de données que nous avons utilisée pour stocker les avis des
utilisateurs ainsi que les détails d'un magasin et lorsque vous surfez sur le site Web de
votre magasin, nous lisons les détails de cette base de données uniquement pour
augmenter la vitesse de lecture et d'écriture.
3.1.18 PostgreSQL
PostgreSQL gère les transactions, les sous-sélections, les déclencheurs, les vues, et
l'intégrité référentielle de clé étrangère, ainsi que le verrouillage évolué. Il s'exécute sur de
nombreuses plateformes dont Linux, la majorité des offres UNIX, Mac OS-X, Solaris,
Tru64 et Windows. Il gère le texte, les images, le son et la vidéo, et inclut des interfaces de
programmation pour C / C++, Java, Perl, Python, Ruby, Tcl et ODBC (Open DataBase
Connectivity).
C'est la base de données dans laquelle nous stockons tous les avis des utilisateurs.
I.1.19 SQLite
SQLite est un système de gestion de base de données relationnelle contenu dans une bibliothèque
C. Contrairement à de nombreux autres systèmes de gestion de bases de données, SQLite n'est
pas un moteur de base de données client-serveur. Au contraire, il est intégré dans le programme
final. SQLite suit généralement la syntaxe PostgreSQL.
Il s'agit d'une base de données locale que j'ai utilisée pour stocker le favori d'un responsable de
magasin et pour gérer ses statistiques.
III. Conclusion
Ce chapitre décrit tous les outils et les Framework que nous avons utilisés pour créer notre
projet ainsi que les logiciels qui nous aident à gérer et publier ce projet.
48
Chapitre IV
49
Chapitre IV : Analyse et conception du projet
Un acteur est un type stéréotypé représentant une abstraction qui réside juste en dehors du
système à modéliser.
Le cas d’utilisation :
Le cas d’utilisation (ou use case) correspond à un objectif du système, motivé par
un besoin d’un ou plusieurs acteurs. L'ensemble des use cases décrit les objectifs
(le but) du système.
La relation :
L'ensemble des cas d'utilisation décrit les objectifs (le but) du système.
50
4.2.1.2 Les acteurs du système
Un acteur représente un rôle joué par une entité externe (utilisateur humain, dispositif matériel ou
autre système) qui interagit directement avec le système étudié. Il peut consulter et/ou modifier
directement l’état du système. Le seul acteur qui interagisse avec l’application à concevoir est :
4.2.1.3 Diagramme
51
4.2.2 Diagramme de classe
4.2.2.1 Définition
Classe
Attribut
identifiant
4.2.2.2 Diagramme
52
4.2.3.2 Diagramme
53
Figure 29 Sequence diagram
Conclusion
Dans ce chapitre, nous avons décrit le comportement de notre système à Développer. C’est-
à-dire que nous avons effectué une modélisation via les diagrammes de cas d'utilisation et les
diagrammes de séquence et enfin via le diagramme de classes qui mettent en évidence
l'enchaînement des opérations et les relations possibles entre les services. Et à la fin, comme je l'ai
mentionné précédemment via le diagramme de classes, nous effectuons le mappage entre les entités
du système déférent.
54
Chapitre V
Réalisation
Dans ce dernier chapitre, on retrouve les différentes tâches qu’on a intégrées
pour la réalisation et la mise en œuvre de ce projet, en fonction d’une
approche itérative et incrémentale.
55
Chapitre V : Réalisation
I- Introduction
Après avoir mené à bien les phases de la conception des fonctionnalités de l’application, et
nos besoins, nous présentons dans ce chapitre la phase de la réalisation de notre application
mobile et la partie de back-end APIs.
La page d'authentification.
57
58
61
Figure 41 Page de sites
Il s'agit de la page des favoris ici. L'utilisateur peut
regarder toutes les critiques préférées. Il peut également
supprimer toute critique qu'il souhaite ou peut-il accéder
à la page de réponse ou même rechercher s'il y a
beaucoup de favoris.
63
Figure 45 Fingerprint popup
C'est la page des statistiques ici l'utilisateur peut voir un
graphique contenant le nombre d'avis qu'il a traités par
mois et ces détails seront modifiables chaque mois, par
défaut il regardera les données du mois en cours.
64
Figure 47 Who we are page
Notre page de politique de confidentialité contient tout
ce qui concerne notre politique.
66
Figure 51 Older answers
Ici, l'utilisateur peut appuyer longuement sur une réponse
pour la mettre à jour, car il peut également choisir parmi
une réponse prédéfinie ou ajouter son propre message et
cliquer sur Envoyer pour mettre à jour l'ancienne réponse.
67
Figure 53 Canned reply page
III- Réalisation des APIs
Pour l'API, j'ai utilisé Spring Boot pour les écrire, nos points de terminaison nous
permettent d'accéder aux données et de communiquer avec la base de données dans mon back-
end. J'ai 14 points de terminaison, tous les ont utilisés pour gérer les actions de l'utilisateur, je
vais donc les énumérer ci-dessous :
68
III.2 Obtenir les détails de l'utilisateur après authentification
Ici, après qu'un utilisateur se soit déjà connecté à l'application, j'ai utilisé ce point
de terminaison pour valider le jeton (Token) de l'utilisateur s'il est modifié, je dois
le chasser de l'application, sinon je lui donnerai l'accès pour surfer sur l'application.
Swagger : obtenir les détails de l'utilisateur
Dans ce point final, je peux mettre à jour la réponse qui a été ajoutée auparavant
lors d'un examen.
Swagger : modifier la réponse
69
III.4 Charger les avis
Ici, nous demandons au point de terminaison d'obtenir les avis d'un site.
Swagger : obtenir les avis
70
III.6 Charger les réponses précédentes sur un avis
Nous utilisons ce point de terminaison pour charger les réponses précédentes sur un
avis.
Swagger : Charger les réponses précédentes
Ici, nous chargeons les réponses standardisées pour les utiliser comme réponse à un
avis.
Swagger : Charger les réponses prédéfinies
71
III.8 Mettre à jour le statut d'une notification
Lorsqu'un utilisateur clique sur une notification, nous mettons à jour ce statut de
notification de non visible par l'utilisateur à visible, juste pour le supprimer de la
zone de notification plus tard.
Swagger : Mettre à jour le statut d'une notification
Chargez toutes les notifications, ce qui signifie que les avis n'ont pas été traités par
l'utilisateur.
Swagger : Charger les notifications
72
III.10 Répondre à un avis
Ce point final utilisé pour répondre à un avis par votre propre message ou choisir
une réponse standardisée.
Swagger : Répondre à un avis
73
III.12 Envoyer la notification push à l'appareil de l'utilisateur
Nous avons utilisé ce point final pour ajouter les balises à une critique, puis plus
tard, nous pouvons utiliser ces balises pour filtrer nos critiques afin de trouver
rapidement ce que nous voulons.
Swagger : Ajouter des balises
74
III.14 Supprimer des balises à un avis
Nous avons utilisé ce point de terminaison pour supprimer les balises d'un avis.
IV. Conclusion
L'idée principale de ce dernier chapitre était de présenter le résultat de mon
projet, ce qui signifie que je dois extraire une description de la phase de mise en
œuvre du projet. Ensuite, j'ai expliqué les fonctionnalités de la solution faite avec
les images ci-dessus des interfaces d'application.
75
Conclusion générale et perspectives
Le projet de ma fin d'études, réalisé au sein de VirtuoCode, a consisté à
développer une application mobile appelée MyMobilosoft pour gérer les avis des
clients sur facebook et google depuis appareil mobile dans deux plateforme IOS et
Android Pour la réalisation de ce projet, j'ai commencé par une étude fonctionnelle
des besoins spécifiques, ainsi que de l'environnement de déploiement tout en
respectant les exigences techniques car le système back-end existe déjà.
L'expérience que j'ai eu lors de ce stage a été très riche j'ai appris beaucoup
de techniques et d'astuces. Côté technique,
J'ai approfondi mes compétences en technologie et outils. Au niveau relationnel,
j'ai compris que l'esprit d'initiative, le sens des responsabilités et la capacité à
communiquer sont essentiels à la réussite de tout projet informatique. Enfin, sur
Sur le plan personnel, j'ai développé mes capacités d'autonomie, de patience et de
persévérance.
76
Webographie
https://stackoverflow.com/
https://flutter.dev/
https://pub.dev/
https://github.com/
https://www.baeldung.com/
https://spring.io/projects/spring-boot
https://www.sqlite.org/index.html
https://www.mongodb.com/
https://www.postgresql.org/
https://firebase.google.com/docs/firestore/quickstart
77