Boky Nambinina
Boky Nambinina
PROFESSIONNELLE
Mention : INFORMATIQUE
Parcours : Génie logiciel et Base de Données
Intitulé :
CONCEPTION ET REALISATION DU
MODULE D’ACHAT D’UNE SUPER
APPLICATION
Présenté le mercredi 18 Janvier 2023 par :
Monsieur RAZAFINJATOVO Nambinina
Membre du Jury :
- Président : Monsieur RAKOTOASIMBAHOAKA Cyprien Robert, Maitre de
conférences
ETAT CIVIL
RAZAFINJATOVO Nambinina
Né le 26 Mars 2000 a Fianarantsoa
Lot : 294 II/ 3706
Téléphone : 0341518895
E-mail : [email protected]
FORMATIONS ET DIPLOMES :
2020-2021 : Etudiant en troisième année de formation en Licence professionnelle à
l’Ecole Nationale de l’informatique, Université de Fianarantsoa.
2019-2020 : Deuxième année de formation en Licence professionnelle à l’Ecole
Nationale de l’informatique, Université de Fianarantsoa.
2018-2019 : Première année de formation en Licence professionnelle à l’Ecole
Nationale de l’informatique, Université de Fianarantsoa.
EXPERICENCE ET FORMATIONS PROFESSIONNELLES
2021-2022 : Stagiaire au sein de RELIA consulting Ambohimiandra Antananarivo.
Thème : Conception et réalisation du module d’achat d’une super application.
Aout 2022 : Réalisation d’un projet au sein de l’ENI sur le thème « Gestion des
Loyers » (Android).
Février 2022 : Réalisation d’un projet au sein de l’ENI sur le thème « Gestion des
notes » (Java).
2020-2021 : Stagiaire au sein de la Bank Of Africa (BOA) Agence Antsirabe
Thème : Conception et réalisation d’un projet Gestion des tickets
Janvier 2021 : Réalisation d’un projet au sein de l’ENI sur le thème « Gestion
d’hôtel » (PHP).
Décembre 2019 : Réalisation d’un projet au sein de l’ENI sur le theme « Gestion de
train » (Qt).
Mai 2019 : Réalisation d’un site web au sein de l’ENI comme mini-projet (HTML,
CSS, JavaScript et Jquerry)
COMPETENCE EN INFORMATIQUE :
Systemes d’exploitation : Windows, Linux.
Langages de programmation : C, Java, python, JavaScript
Framework : Angular Js, Next Js, Nest Js, Laravel
Librairie : React Js
Méthode de conception : MERISE, 2TUP
Langage de conception : UML.
I
Système de gestion de base de données : Mongo DB, MySQL, Laragon.
Outils bureautique : Collection Microsoft office.
CONNAISSANCES LINGUISTIQUES
Malagasy : langue maternelle
Français : lu, écrit, parlé
Anglais : lu, écrit, parlé
CENTRE D’INTERET
Sport : Foot, Natation.
Loisir : Chanter, Jeux vidéo, jeux de carte
II
SOMMAIRE GENERALE
CURRICULUM VITE................................................................................................................................... I
SOMMAIRE GENERALE ........................................................................................................................... III
REMERCIEMENTS .................................................................................................................................... V
LISTE DES FIGURES................................................................................................................................. VII
LISTE DES TABLEAUX ............................................................................................................................ VIII
LISTE DES ABREVIATIONS ....................................................................................................................... IX
INTRODUCTION GENERALE ..................................................................................................................... 1
PARTIE I : PRESENTATION GENERALE ...................................................................................................... 2
Chapitre 1. Présentation de l'Ecole Nationale d’Informatique ...................................................... 3
1.1. Information d’ordre général................................................................................................ 3
1.2. Missions et historique ......................................................................................................... 3
1.3. Organigramme institutionnel de l’ENI ................................................................................. 6
1.4. Domaine de spécialisation................................................................................................... 8
1.5. Architecture des formations pédagogiques ........................................................................ 8
1.6. Relations de l’ENI avec les entreprises et les organismes ................................................. 12
1.7. Partenariat au niveau international .................................................................................. 13
1.8. Débouchés professionnels avec des diplômés .................................................................. 15
1.9. Ressources humaines ........................................................................................................ 17
Chapitre 2. Présentation de la société d’accueil .......................................................................... 18
2.1. Historique de RELIA ........................................................................................................... 18
2.2. Situation géographique de RELIA ...................................................................................... 18
2.3. Mission de RELIA ............................................................................................................... 19
2.4. Organisation et fonctionnement de RELIA ........................................................................ 19
Chapitre 3. Description du projet................................................................................................. 21
3.1. Formulation ....................................................................................................................... 21
3.2. Objectif et besoins de l'utilisateur..................................................................................... 21
3.3. Moyens nécessaires à la réalisation du projet .................................................................. 22
3.4. Résultats attendus ............................................................................................................. 23
3.5. Chronogramme du projet .................................................................................................. 23
PARTIE II : ANALYSE ET CONCEPTION .................................................................................................... 25
Chapitre 4. Analyse préalable ...................................................................................................... 26
4.1. Analyse de l'existant .......................................................................................................... 26
4.2. Critique de l'existant.......................................................................................................... 27
III
4.3. Conception avant-projet ................................................................................................... 27
Chapitre 5. Analyse Conceptuelle ................................................................................................ 57
5.1. Dictionnaire des données .................................................................................................. 57
5.2. Règles de gestion ............................................................................................................... 57
5.3. Représentation et spécification des besoins ..................................................................... 58
5.4. Spécification des besoins techniques ................................................................................ 65
5.5. Modélisation du domaine ................................................................................................. 67
Chapitre 6. Conception détaillée ................................................................................................. 69
6.1. Architecture du système ................................................................................................... 69
6.2. Diagramme de séquence de conception pour chaque cas d'utilisation ........................... 70
6.3. Diagramme de classe de conception pour chaque cas d'utilisation ................................. 72
6.4. Diagramme de classe de conception global ...................................................................... 77
6.5. Diagramme de paquetages ............................................................................................... 78
6.6. Diagramme de déploiement.............................................................................................. 80
PARTIE III : REALISATION ....................................................................................................................... 81
Chapitre 7. Mise en place de l'environnement de développement ............................................ 82
7.1. Installation et configuration des outils .............................................................................. 82
7.2. Architecture de l'application ............................................................................................. 84
Chapitre 8. Développement de l'application ............................................................................... 85
8.1. Création de la base de données ........................................................................................ 85
8.2. Codage de l'application ..................................................................................................... 85
8.3. Présentation de l'application............................................................................................. 93
CONCLUSION .......................................................................................................................................... XI
BIBLIOGRAPHIE ...................................................................................................................................... XII
WEBOGRAPHIE ..................................................................................................................................... XIII
GLOSSAIRE ............................................................................................................................................ XIV
ANNEXES................................................................................................................................................ XV
TABLE DS MATIERES ............................................................................................................................. XVI
RESUME .............................................................................................................................................. XVIII
ABSTRACT ........................................................................................................................................... XVIII
IV
REMERCIEMENTS
Je tiens à exprimer ma reconnaissance et mon profond respect à Dieu, qui a guidé mes
pas tout au long de cette étude et m'a donné la force et la persévérance nécessaires
pour mener à bien ce projet. Sans sa bénédiction et sa grâce, je n'aurais pas pu arriver
jusqu'ici.
Monsieur HAJALALAINA Aimée Richard, Docteur HDR, Président de
l’Université de Fianarantsoa qui a bien organise l’année universitaire.
Tous les membres du corps professoral au sein de l’ENI pour toutes les
connaissances qu’ils m’ont transmises durant ces trois années de formations au
sein de l’école ;
V
les connaissances qu’ils nous ont transmis durant notre
formation théorique.
VI
LISTE DES FIGURES
Figure 1. Organigramme de l’Ecole Nationale d’Informatique .............................................................. 7
Figure 2: Localisation de RELIA .......................................................................................................... 18
Figure 3 Méthode Agile ........................................................................................................................ 31
Figure 4 Le processus de développement en Y ..................................................................................... 33
Figure 5 Interaction entre acteur et cas d'utilisation .............................................................................. 59
Figure 6 Relations entre cas d'utilisation ............................................................................................... 60
Figure 7 Cas d'utilisation du système .................................................................................................... 61
Figure 8 Formalisme du système ........................................................................................................... 64
Figure 9 Diagramme de séquences "voir les listes des produits" .......................................................... 64
Figure 10 Diagramme de séquence "ajouter au panier" ....................................................................... 65
Figure 11 Diagramme de séquence "supprimer un produit au panier" .................................................. 65
Figure 12 Modèle de domaine ............................................................................................................... 68
Figure 13 Architecture du système[4] ................................................................................................... 70
Figure 14 Diagramme de séquence de conception "voir les listes des produits" ................................. 71
Figure 15 Diagramme de séquence de conception "ajouter au panier" ................................................ 72
Figure 16 Diagramme de séquence de conception "supprimer un produit du panier" .......................... 72
Figure 17 Diagramme de classe du futur système "voir les listes des produits" ................................... 74
Figure 18 Diagramme de classe du futur système "ajouter un produit au panier" ................................ 75
Figure 19 Diagramme de classe du futur système "supprimer un produit du panier" ........................... 76
Figure 20 Diagramme de paquetages[1]................................................................................................ 79
Figure 21 Diagramme de déploiement .................................................................................................. 80
Figure 22 Mongo DB compass ............................................................................................................... 85
Figure 23 Page d'accueil ........................................................................................................................ 93
Figure 24 Détails d'un produit ............................................................................................................... 94
Figure 25 Page panier ............................................................................................................................ 95
VII
LISTE DES TABLEAUX
VIII
LISTE DES ABREVIATIONS
2TUP : Two Track Unified Process
BDM : Business Development Manager
BTS : Brevet de Technicien Supérieur
CEO : Chief Executive Officer
CNH : Commission Nationale d’Habilitation
CPU : Central Processing Unit
CSRF : Cross-Site Request Forgery
CSS : Cascading Style Sheets
CSSF : Commission de Surveillance du Secteur Financier
CTO : Chief Technology Officer
CUR : Centre Universitaire Régional
DEA : Diplôme d’Etudes Approfondies
DI : Dependancies Injection
DOM : Document Object Model
DTS : Diplôme de Technicien Supérieur
DUT : Diplôme Universitaire de Technologie
HP : Hewlett Packard
HTML : HyperText Markup Language
IDE : Integrated Development Environment
L1 : Licence 1
L2 : Licence 2
L3 : Licence 3
LMD : Licence Master Doctorat
M1 : Master 1
M2 : Master 2
MIT : Massachusetts Institute of Technology
IX
MVC : Model View Controller
NIF : Numéro d’Identification Fiscale
ORM : Object-Relational Mapping
OS : Operating System
RAM : Random Access Memory
RG : Règle de gestion
SGBD : Système de Gestion de Base de Données
TCP/IP : Transmission Control Protocol / Internet Protocol
X
III
INTRODUCTION GENERALE
L'informatique est une discipline très large qui englobe de nombreux domaines, tels
que le développement de logiciels, la gestion de réseaux informatiques, la gestion de bases de
données, l'analyse de données, l'intelligence artificielle, la robotique et bien d'autres encore.
Ici on va présenter le module d’achat d’une application. L'achat peut se faire en ligne,
en utilisant un module d'achat intégré à une application. Un module d'achat est une partie
d'une application qui permet aux utilisateurs d’effectuer des achats en ligne de produits ou de
services. Cela peut inclure la sélection et l'ajout de produits au panier, la saisie des
informations de paiement, la vérification des disponibilités et la finalisation de l'achat.
Le module d'achat est généralement conçu pour être intuitif et facile à utiliser afin que
les utilisateurs puissent passer des commandes rapidement et sans frustration. Cependant, il
est important de s'assurer d’avoir les bons outils et de pratiquer une bonne méthode pour
concevoir l’application. Et choisir le langage de programmation adapté aux besoins.
Pour que cela puisse se faire nous allons divise ce mémoire en trois grandes parties. La
présentation générale, l’analyse et conception pour finir la partie réalisation.
1
PARTIE I : PRESENTATION GENERALE
2
Chapitre 1. Présentation de l'Ecole Nationale d’Informatique
1.1. Information d’ordre général
L’Ecole Nationale d’Informatique, en abrégé ENI, est un établissement
d’enseignement supérieur rattaché académiquement et administrativement à l’Université de
Fianarantsoa.
Le siège de l’Ecole se trouve à Tanambao- Antaninarenina à Fianarantsoa.
L’adresse pour la prise de contact avec l’Ecole est la suivante : Ecole Nationale
d’Informatique (ENI) Tanambao, Fianarantsoa. Le numéro de sa boîte postale est 1487
avec le code postal 301. Téléphone : 034 05 733 36 ou 033 42 302 02. Son adresse
électronique est la suivante :
site : www.eni.mg
adresse e-mail : [email protected]
De façon formelle, l’ENI était constituée et créée au sein du (CUR) par le décret
N° 83185 du 24 Mai 1983, comme étant le seul établissement Universitaire
Professionnalisé au niveau national, destiné à former des techniciens et des Ingénieurs de
haut niveau, aptes à répondre aux besoins et exigences d’Informatisation des entreprises,
des sociétés et des organes implantés à Madagascar.
3
• En leur transmettant le savoir-faire requis, à travers la professionnalisation des
formations dispensées et en essayant une meilleure adéquation des formations par
rapport aux besoins évolutifs des sociétés et des entreprises ;
• En initiant les étudiants aux activités de recherche dans les différents domaines
des technologies de l’information et de la communication (TIC).
L’implantation de cette Ecole Supérieure de technologie de pointe dans un pays en
développement et dans une Province (ou Faritany) à tissu économique et industriel
faiblement développé ne l’a pourtant pas défavorisée, ni empêchée de former des
spécialistes informaticiens de bon niveau, qui sont recherchés par les entreprises, les
sociétés et les organismes publics et privés sur le marché de l’emploi.
Une formation de troisième cycle a été ouverte à l’Ecole a été ouverte à l’Ecole depuis
l’année 2003 – 2004 grâce à la coopération académique et scientifique entre l’Université de
4
Pendant l’année 2007-2008, la formation en vue de l’obtention du diplôme de
Licence Professionnelle en Informatique a été mise en place à l’ENI avec les deux
options suivantes de formation :
5
La mise en place à l’Ecole de ces deux options de formation devait répondre au
besoin de basculement vers le système Licence – Master – Doctorat (LMD).
L’ENI est administrée par un conseil d’Ecole, et dirigée par un directeur nommé par un décret
adopté en conseil des Ministres.
6
Conseil d'école
Conseil Direction
Collège des enseignants
Scientifique
Secrétariat Service
Principal Pédagogique
7
chefs des Départements ont été ainsi remplacés par des responsables des mentions et les
responsables des parcours.
D’une manière plus générale, les programmes des formations sont basés sur
l’informatique de gestion et sur l’informatique des Systèmes et Réseaux. Et les modules de
formation intègrent aussi bien des éléments d’Informatique fondamentale que des éléments
d’Informatique appliquée.
8
Les offres de formation organisées à l’Ecole ont été validées par la Commission
MASTER RECHERCHE.
9
BTS : Brevet de Technicien Supérieur
LICENCE MASTER
PROFESSIONNELLE ET
HYBRIDE
10
Condition Bac de série C, D ou Technique Etre titulaire de licence
d’accès professionnelle
Diplôme de Master
Recherche
11
L’accès en première année de MASTER se fait automatiquement pour les étudiants de
l’Ecole qui ont obtenu le diplôme de Licence Professionnelle.
Les Ecoles Doctorales jouissent d’une autonomie de gestion par rapport aux Etablissements
de formation universitaire.
Bien qu’il n’existe pas encore au niveau international de reconnaissance écrite et formelle
des diplômes délivrés par l’ENI, les étudiants diplômés de l’Ecole sont plutôt bien
accueillis dans les instituts universitaires étrangères (CANADA, Suisse, France…)
12
scientifiques, techniques et humaines reconnues, capables d’évoluer professionnellement
dans des secteurs d’activité variés intégrant l’informatique.
Les stages en milieu professionnel permettent de favoriser une meilleure adéquation entre les
formations à l’Ecole et les besoins évolutifs du marché de l’emploi.
Les principaux débouchés professionnels des diplômés de l’Ecole concernent les
domaines suivants :
✔ L’informatique de gestion d’entreprise
✔ Les technologies de l’information et de la communication (TIC)
✔ La sécurité informatique des réseaux
✔ L’administration des réseaux et des systèmes
✔ Les services bancaires et financiers, notamment le Mobile Banking
✔ Les télécommunications et la téléphonie mobile
✔ Les Big Data
✔ Le commerce, la vente et l’achat, le Marketing
✔ L’ingénierie informatique appliquée
✔ L’écologie et le développement durable Parmi les sociétés, entreprises et organismes
partenaires de l’Ecole, on peut citer : ACCENTURE Mauritius, Air Madagascar,
Ambre Associates, Airtel, Agence Universitaire de la Francophonie (AUF), B2B,
Banque Centrale, BFG-SG, BIANCO, BLUELINE, CNaPS, Bureau National de
Gestion des Risques et des Catastrophes (BNGRC), CEDII-Fianarantsoa,
Data Consulting, Central Test, Centre National Antiacridien, CNRE, CHU, CNRIT,
COLAS, Direction Générale des Douanes, DLC, DTS/Moov, FID, FTM, GNOSYS,
IBONIA, INGENOSIA, INSTAT, IOGA, JIRAMA, JOUVE, MADADEV, MAEP,
MEF, MEN, MESupRES, MFB, MIC, MNINTER, Min des postes/Télécommunications
et du Développement Numérique, NEOV MAD, Ny Havana, Madagascar National Parks,
OMNITEC, ORANGE, OTME, PRACCESS, QMM Fort-Dauphin, SMMC, SNEDADRS
Antsirabe, Sénat, Société d’Exploitation du Port de Toamasina (SEPT), SOFTWELL,
Strategy Consulting, TELMA, VIVETEC, Société LAZAN’I BETSILEO, WWF …
L’organisation de stage en entreprise continue non seulement à renforcer la
professionnalisation des formations dispensées, mais elle continue surtout à accroître de
façon exceptionnelle les opportunités d’embauche pour les diplômés de l’Ecole.
13
Renforcement de l’Enseignement Supérieur (PRESUP) consacré à l’Ecole a notamment
porté sur :
• Une dotation en logiciels, micro-ordinateurs, équipements de laboratoire de
maintenance et de matériels didactiques
• La réactualisation des programmes de formation assortie du renouvellement du fonds
de la bibliothèque
• L’appui à la formation des formateurs
• L’affectation à l’Ecole d’Assistants techniques français
De 2000 à 2004, l’ENI avait fait partie des membres du bureau de la Conférence
Internationale des Ecoles de formation d’Ingénieurs et Technicien d’Expression
Française (CITEF).
Les Enseignants-Chercheurs de l’Ecole participent régulièrement aux activités organisées
dans le cadre du Colloque Africain sur la Recherche en Informatique (CARI).
L’ENI avait également signé un accord de coopération interuniversitaire avec l’Institut
de Recherche en Mathématiques et Informatique Appliquées (IREMIA) de l’Université
de la Réunion, l’Université de Rennes 1, l’INSA de Rennes, l’Institut National
Polytechnique de Grenoble (INPG).
A partir du mois de Juillet 2001, l’ENI avait abrité le Centre de Réseau Opérationnel
(Network Operating Center) du point d’accès à Internet de l’Ecole ainsi que de
l’Université de Fianarantsoa. Grâce à ce projet américain qui a été financé par l’USAID
Madagascar, l’ENI de l’Université de Fianarantsoa avait été dotées d’une ligne
spécialisée d’accès permanent au réseau Internet.
L’ENI avait de même noué des relations de coopération avec l’Institut de Recherche pour le
Développement (IRD).
L’objet du projet de coopération avait porté sur la modélisation environnementale du
Corridor forestier de Fandriana jusqu’à Vondrozo (COFAV). Dans ce cadre, un atelier
scientifique international avait été organisé à l’ENI en Septembre 2008. Cet atelier
scientifique avait eu pour thème de modélisation des paysages.
Et dans le cadre du programme scientifique PARRUR, l’IRD avait financé depuis 2010
le projet intitulé « Forêts, Parcs et Pauvreté dans le Sud de Madagascar (FPPSM). Des
étudiants en DEA et des Doctorants issus de l’ENI avaient participé à ce Programme.
Par ailleurs, depuis toujours la même année 2010, l’ENI de Fianarantsoa avait été
sélectionnée pour faire partie des organismes partenaires de l’Université de Savoie dans
le cadre du projet TICEVAL relatif à la certification des compétences en TIC ;
14
Le projet TICEVAL avait été financé par le Fonds Francophone des Inforoutes pour la
période allant de 2010 à 2012, et il avait eu pour objectif de généraliser la certification
des compétences en Informatique et Internet du type C2i2e et C2imi.
Dans le cadre du projet TICEVAL, une convention de coopération avec l’Université de
Savoie avait été signée par les deux parties concernées. La mise en œuvre de la
Convention de Coopération avait permis d’envoyer des étudiants de l’ENI à Chambéry
pour poursuivre des études supérieures en Informatique.
Enfin et non des moindres, l’ENI avait signé en Septembre 2009 un protocole de
collaboration scientifique avec l’ESIROI – STIM de l’Université de la Réunion.
Comme l’ENI constitue une pépinière incubatrice de technologie de pointe, d’emplois et
d’entreprises, elle peut très bien servir d’instrument efficace pour renforcer la croissance
économique du pays, et pour lutter contre la Pauvreté.
De même que le statut de l’Ecole devrait permettre de renforcer la position concurrentielle de
la Grande Ile sir l’orbite de la modélisation grâce au développement des nouvelles
technologies.
15
L’Ecole est fière de collaborer de façon régulière avec un nombre croissant
d’entreprises, de sociétés et d’organismes publics et privés à travers les stages des
étudiants. Les formations dispensées à l’Ecole sont ainsi orientées vers le besoin et les
attentes des entreprises et des sociétés.
L’Ecole fournit à ses étudiants de niveau LICENCE et MASTER des compétences
professionnelles et métiers indispensables pour les intégrer sur le marché du travail.
L’Ecole s’efforce de proposer à ses étudiants une double compétence à la fois
technologique et managériale combinant l’informatique de gestion ainsi que
l’administration des réseaux et systèmes.
16
d’applications
- Directeur du système de formation
- Directeur de projet informatique
- Chef de projet informatique
- Responsable de sécurité
informatique
- Consultant ou freelance
17
Chapitre 2. Présentation de la société d’accueil
2.1. Historique de RELIA
RELIA est une entreprise de service numérique spécialisée dans le développement
web, mobile et logiciel sur mesure.
Relia visionne de devenir une ESN de référence à Madagascar en vivant dans la valeur
de partage, proximité et excellence au sein de son équipe en interne ainsi que ses clients et
partenaires.
Chez RELIA nous travaillons avec des clients locaux ainsi que des clients partout dans
le monde. Parmi ses visions, RELIA envisage de divulguer la technologie dans tous les
domaines à Madagascar comme l’Education, la santé, le commerce, le transport, l’hôtellerie et
tourisme... etc.
Si jeune qu’elle soit, née en 2020, RELIA a connu une forte croissance dû à ses succès
auprès des clients et les valeurs partagés en interne avec ses collaborateurs. La société compte
actuellement une trentaine de collaborateurs .
18
2.3. Mission de RELIA
Relia a pour but de :
- Apporter de nouvelles technologies dans tous les domaines à Madagascar d’ici 5 ans
- Créer des sites web, applications et logiciels selon les demandes existantes
Ces principes mettent en avant la valeur du produit délivré au client, ainsi que la
relation.
Il existe des animateurs et qui facilitent la communication avec le client, et qui sont
chargés de résoudre les problèmes de compréhension entre les deux entités. De courtes
réunions se font régulièrement pour valider les avancées et communiques la progression du
projet selon des termes acceptables.
Les rôles sont repartis pour assurer le bon fonctionnement de l’entreprise, et des
projets qu’elle reçoit. Il y a les responsables de la compréhension, de l’adhésion et de la mise
en œuvre de la méthode appropriée applicable aux divers projets. Ils veillent à ce que les
principes et les valeurs de la méthode suivie soient respectés. Ils facilitent la communication
au sein de l’équipe et cherchent à maximise la productivité.
Les propriétaires de projets qui portent la vision du produit à réaliser. Ils travaillent en
interaction avec l’équipe de développement qui doit suivre leurs instructions. C’est eux qui
établissent la priorité des fonctionnalités à développer ou à corriger, et qui valident les
fonctionnalités terminées.
19
Les équipes de développement qui se chargent de réaliser les demandes exprimées par les
propriétaires de projets
20
Chapitre 3. Description du projet
3.1. Formulation
Une super application est une application qui propose un large éventail de fonctionnalités et
de services. Le module achat d’une super application est une fonctionnalité qui permet aux
utilisateurs d’acheter un produit ou des services en ligne, directement vers l’application.
Explorer les produits : voir les produits récemment ajoutes, les produits qui peuvent
intéresser les utilisateurs, voir les détails d’un produit et les informations sur le produit
sélectionne.
Ajouter un produit au panier en un seul clic.
Supprimer un produit du panier.
Voir le nombre total de produits au panier.
Voir le montant total du produit au panier.
L’application doit être facile à comprendre et à manipuler pour les utilisateurs même
pour ce qui n’ont pas encore des notions sur l’application.
L’application doit être rapide et performante.
L’application doit être sécurise.
L’application doit avoir de l’esthétique, agréable à manipuler.
21
3.3. Moyens nécessaires à la réalisation du projet
Pour la réalisation du projet ; on dispose des moyens humains, matériels et logiciels afin
qu’on puisse répondre aux attentes des utilisateurs
Désignation Rôles
Encadreur professionnel Qui est le chef de projet chargé de mener le
projet et de gérer son bon fonctionnement
Product Owner (PO) Qui est le chef de projet en mode agile qui
supervise et coordonne le développement.
Stagiaire Concepteur et réalisateur du projet en
analysant, en étudiant et en ensuite en le
développant.
22
- Node 14.20.1
- Next
- Nest
23
Rétrospective des 3 30/11/2022 01/12/2022
points positifs et
points faibles du
sprint 1 et sprint
planing meeting 2
Réalisation du sprint 11 02/12/2022 16/12/2022
2
points faibles du 2 19/12/2022 20/12/2022
sprint 1 et sprint
planing meeting 2
Maintenance et 2 18/12/2022 19/12/2022
validation
24
PARTIE II : ANALYSE ET CONCEPTION
25
Chapitre 4. Analyse préalable
4.1. Analyse de l'existant
L’analyse de l’existant consiste à étudier et à évaluer les éléments existants qui ont un
lien avec le projet.
Les moyens logiciels consistent sur des matériels utilisés pour le déploiement.
SGBD : Mongo DB
26
4.2. Critique de l'existant
Il existe déjà plusieurs sites e-commerce qui proposent des achats en ligne. Mais parfois le
processus d’achat est longue et ne donne pas les produits que l’on veut voir vraiment. Et qui
ne sont pas accessible pour tous.
Points forts : Accessibilité, pratique (les utilisateurs n’ont pas besoin de se déplacer)
Point faibles : Manque de contact physique, manipulation du site difficile
Le tableau 8 représente la comparaison des deux solutions par rapport aux besoins des
utilisateurs.
Tableau 8 Solutions proposées
Sur le tableau, les deux solutions ont des avantages et des inconvénients. On constate que la
solution 2 serait plus envisageable pour résoudre les problèmes « La conception et réalisation
27
du module d’achat d’une super application ». Avoir une application qui sera mieux que les
antécédents.
Elle a été développée dans les années 1990 en réponses aux méthodes plus rigides de
développement de logiciels telles que la méthode en cascade.
Les individus et les interactions sont plus importants que les processus et les outils
Les logiciels fonctionnels sont plus importants que la documentation exhaustive
La collaboration avec les clients est essentielle
Les changements de besoins sont naturels et bienvenus, même tars dans le
développement
Les projets se déroulent en cycles de développement rapides, appelés sprints
Il existe plusieurs framework d’implémentation pour la méthode Agile, dont les plus
connus sont Scrum, Kanban, Lean Developement… Chacun de ces frameworks met en
place des pratiques et des rôles spécifiques pour aider les équipes à travailler de manière
Agile. Cette approche permet aux equipes de s’adapter rapidement aux changements de
besoins et aux incertitudes, tout en garantissant que les utilisateurs finaux ont un logiciel
opérationnel dès que possible.
28
Agile et modélisation
L’utilisation d’UML ;
La modélisation en groupe ;
29
Thème Approche traditionnelle Approche agile
On a choisi la méthode agile Scrum pour satisfaire les clients en leurs donnant une bonne
qualité de développement.
Le Product Owner : Il est responsable de définir les besoins et les objectifs du projet,
de prioriser les fonctionnalités à développer et de décider de la livraison.
30
L'équipe de développement : C'est l'équipe qui est chargée de développer le logiciel.
Elle est composée d'un ensemble de compétences diverses, telles que les
développeurs, les testeurs, les designers, etc.
Le Scrum Master : Il est chargé de faciliter la mise en œuvre de Scrum au sein de
l'équipe, de résoudre les problèmes qui pourraient perturber l'avancement du projet et
de garantir que les règles de Scrum sont respectées.
Sprint : Période de temps fixe (généralement entre 1 à 4 semaines) pendant lequel
l'équipe travaille sur une sélection de fonctionnalités pour livrer une version
incrémentielle.
Réunion quotidienne de l'équipe : Une courte réunion quotidienne au cours de laquelle
les membres de l'équipe se réunissent pour discuter de leur avancement, de leurs
blocages et de leurs besoins en termes de ressources.
Réunion de planification : Réunion qui se déroule en début de sprint et au cours de
laquelle l'équipe planifie les fonctionnalités à développer pendant le sprint à venir.
Réunion de revue : Réunion qui se déroule en fin de sprint et au cours de laquelle
l'équipe présente les fonctionnalités développées pendant le sprint et recueille les
commentaires des clients.
Réunion de rétrospective : Réunion qui se déroule en fin de sprint et au cours de
laquelle l'équipe discute de ce qui s'est bien passé et de ce qui a moins bien fonctionné
pendant le sprint et décide des actions à prendre pour améliorer les processus.
31
4.3.2.2. Choix de méthode de conception
Une méthode de conception est un procédé permettant de construire un modèle le plus
correct et efficacement possible. Une méthode d’analyse et de conception a pour objectif
de permettre de formaliser les étapes préliminaires du développement d’un système
d’information afin de rendre le développement plus fidèle aux besoins du client.
Nous avons utilisé 2TUP car elle est souvent utilisée pour les projets de grande envergure et
de haute complexité, il peut être adapté selon les besoins, et il est crucial de bien évaluer si
l'utilisation de cette méthode est la plus adaptée pour les projets de l'entreprise.
Présentation de 2TUP
Il s'agit d’une méthode de développement de logiciels qui est basé sur l'UP (Unified Process)
qui ajoute une seconde voie parallèle à celle de l'équipe de développement. Cette seconde
32
voie se concentre sur l'exploration de nouvelles idées et la recherche de nouvelles
opportunités pour le projet.
En suivant les deux chemins simultanément, le 2TUP permet aux entreprises de mieux
répondre aux besoins changeants des clients, de mieux anticiper les tendances et les
opportunités futures, et de maximiser les avantages de l'équipe de développement, tout en
maintenant un haut niveau de qualité dans le produit final. Il renforce également le contrôle
sur les capacités d’évolution et de correction des systèmes d'information de l'entreprise, afin
de mieux gérer les contraintes de changement continuel imposées.
33
spécifications et en vérifie la cohérence et l’exhaustivité l’analyse, qui consiste à
étudier précisément la spécification fonctionnelle de manière à obtenir une idée de ce
que va réaliser le système en termes de métier. Les résultats de l’analyse ne dépendent
d’aucune technologie particulière.
La capture des besoins techniques, qui recense toutes les contraintes et les
choix dimensionnant la conception du système. Les outils et les matériels sélectionnés
ainsi que la prise en compte de contraintes d’intégration avec l’existant conditionnent
généralement des prérequis d’architecture technique ;
La conception générique, qui définit ensuite les composants nécessaires à la
construction de l’architecture technique. Cette conception est la moins dépendante
possible des aspects fonctionnels. Elle a pour objectif d’uniformiser et de réutiliser les
mêmes mécanismes pour tout un système.
La conception préliminaire, qui représente une étape délicate, car elle intègre le
modèle d’analyse dans l’architecture technique de manière à tracer la cartographie des
composants du système à développer ;
La conception détaillée, qui étudie ensuite comment réaliser chaque composant ;
L’étape de codage, qui produit ces composants et teste au fur et à mesure les unités de
code réalisées ;
L’étape de recette, qui consiste enfin à valider les fonctions du système développé.
2TUP et UML
Il nous paraît difficile d’envisager le processus 2TUP sans recourir à UML comme
support.
Certes, les concepts présentés jusqu’à présent ne sont pas spécifiquement liés à une notation
particulière. Nous avons cependant omis de préciser le rôle central et fondamental de la
modélisation objet tout au long du développement d’une solution logicielle.
34
Le recours à la modélisation est depuis longtemps une pratique indispensable au
développement, car un modèle est prévu pour anticiper les résultats du développement.
Un modèle est en effet une abstraction du résultat, dont le but est de documenter, de
prévoir, d’étudier, de collecter ou d’estimer les informations d’un système.
Le modèle sert donc des objectifs différents suivant l’étape de développement et sera
construit avec des points de vue de plus en plus détaillés.
Présentation d’UML
UML unifie à la fois les notations et les concepts orientés objet. Il ne s’agit pas d’une
simple notation, mais les concepts transmis par un diagramme ont une sémantique précise et
sont porteurs de sens au même titre que les mots d’un langage. UML a une dimension
symbolique et ouvre une nouvelle voie d’échange de visions systémiques précises. Ce
langage est certes issu du développement logiciel, mais pourrait être appliqué à toute science
fondée sur la description d’un système. Dans l’immédiat, UML intéresse fortement les
spécialistes de l’ingénierie système.
UML unifie également les notations nécessaires aux différentes activités d’un
processus de développement et offre, par ce biais, le moyen d’établir le suivi des décisions
prises, depuis la spécification jusqu’au codage. Dans ce cadre, un concept appartenant aux
besoins des utilisateurs projette sa réalité dans le modèle de conception et dans le codage. Le
35
fil tendu entre les différentes étapes de construction permet alors de remonter du code aux
besoins et d’en comprendre les tenants et les aboutissants. En d’autres termes, on peut
retrouver la nécessité d’un bloc de codes en se référant à son origine dans le modèle des
besoins.
UML dans sa version [3] 2 propose treize diagrammes qui peuvent être utilisés dans la
description d’un système. Ces diagrammes sont regroupés dans deux grands ensembles :
Les diagrammes structurels : Ces diagrammes, au nombre de six, ont vocation à représenter
l’aspect statique d’un système (classes, objets, composants…).
36
o Diagramme d’état-transition (machine d’état) : Ce diagramme montre les
différents états des objets en réaction aux événements.
o Diagramme d’activités : Ce diagramme donne une vision des enchaînements des
activités propres à une opération ou à un cas d’utilisation. Il permet aussi de
représenter les flots de contrôle et les flots de données.
o Diagramme de séquence : Ce diagramme permet de décrire les scénarios de
chaque cas d’utilisation en mettant l’accent sur la chronologie des opérations en
interaction avec les objets.
o Diagramme de communication (anciennement appelé collaboration) : Ce
diagramme est une autre représentation des scénarios des cas d’utilisation qui met
plus l’accent sur les objets et les messages échangés.
o Diagramme global d’interaction : Ce diagramme fournit une vue générale des
interactions décrites dans le diagramme de séquence et des flots de contrôle
décrits dans le diagramme d’activités.
o Diagramme de temps : Ce diagramme permet de représenter les états et les
interactions d’objets dans un contexte où le temps a une forte influence sur le
comportement du système à gérer.
4.3.2.3. Choix de langage de programmation
Un langage de programmation est un moyen de communiquer avec un ordinateur n utilisant
une notion conventionnelle. Il offre des outils tels que des instructions, des variables, des
types de données et des procédures pour écrire qui peut être exécutés par un ordinateur pour
résoudre des problèmes. Il existe de nombreux langages de programmation différents qui
peuvent être utilisés pour différents types de projets et de plateformes.
37
serveurs et rendre nombreuses
l’application plus bibliothèques et
rapides et plus frameworks
réactives. Forte communauté de
Compatible avec de développeurs.
nombreux framework
Un langage
multiplateforme
inconvénients Difficile à apprendre Complexité en raison
pour les débutants en de sa syntaxe et de sa
programmation, grande quantité de
surtout en raison de classes et de
flexibilité bibliothèques
Problème de sécurité Exigence de
si les développeurs ne ressource requis
prennent pas les Gestion de la
précautions mémoire peut parfois
appropriées causer des problemes
de performances
D’après le tableau comparatif ci-dessus nous avons utilisé JavaScript comme langage de
programmation pour le développement du projet.
Présentation du JavaScript
Il est souvent utilisé conjointement avec HTML et CSS pour créer des pages web dynamiques
et interactives. Il permet aux développeurs d'ajouter des fonctionnalités telles que des
animations, des formulaires interactifs et des scripts côté client à des pages web statiques.
38
JavaScript est un langage de script côté client, cela signifie qu'il s'exécute directement dans le
navigateur de l'utilisateur, cela permet de réduire la charge sur les serveurs et de rendre les
applications plus rapides et plus réactives. Il est également utilisé pour développer des
applications côté serveur en utilisant des frameworks tels que Node.js, qui permettent
d'exécuter du JavaScript sur le serveur.
JavaScript est un langage à type dynamique, cela signifie qu'il n'a pas de types de données
déclarés pour les variables. Il supporte des concepts de programmation tels que la
programmation orientée objet, les fonctions anonymes et les closures. Il existe de nombreux
frameworks et bibliothèques populaires disponibles pour JavaScript, tels que jQuery,
AngularJS, ReactJS et VueJS, qui facilitent la création d'applications web plus complexes.
En résumé, JavaScript est un langage de programmation populaire et puissant qui est utilisé
pour créer des applications web interactives et des expériences utilisateur riches. Il présente
de nombreux avantages, tels que sa facilité d'utilisation, sa flexibilité et sa compatibilité
multiplateforme. Cependant, il peut également présenter des inconvénients tels que la sécurité
et les problèmes de performance si il n'est pas utilisé correctement.
39
développement • Les applications
mobile. React.js nécessitent
• La performance généralement un peu
accrue grâce à un plus de configuration
mécanisme de mise à et de planification
jour de rendu efficace que les autres
appelé la « frameworks pour
vérification de obtenir les meilleurs
différence de résultats.
composant » (ou • il y a un certain
"diffing" en anglais). nombre de concepts
• La communauté et de terminologies à
active et en maîtriser pour utiliser
croissance, avec de React efficacement
nombreux paquets et (comme les «
bibliothèques composants », «
disponibles pour propriétés » et « état
étendre les »)
fonctionnalités de
base de React.js
• La facilité de mise en • Une certaine
place de serveur de complexité
Next JS
rendu côté serveur supplémentaire par
(SSR) pour les rapport à d'autres
applications React.js. bibliothèques ou
• La prise en charge frameworks pour la
des applications à gestion de l'état et la
page unique (SPA) mise à jour du rendu.
avec une gestion • Une certaine courbe
automatique de la d'apprentissage pour
navigation. les développeurs qui
• La possibilité de n'ont pas l'expérience
développer des de développer avec
applications côté des SSR.
serveur et côté client • Les applications
avec un seul Next.js nécessitent
codebase. généralement un peu
• Intégration facile plus de configuration
avec les outils de et de planification
développement que les autres
modernes tels que frameworks pour
Webpack, Babel, et obtenir les meilleurs
les outils résultats.
d'authentification. • Il peut y avoir une
• Le support des certaine complexité
fonctionnalités de débogage en cas
40
avancées telles que la de problème, en
précharge de raison des différents
données, la contextes (côté
génération de pages serveur et côté client)
statiques. dans lesquels
• La communauté l'application peut être
active et en exécutée.
croissance, avec de
nombreux paquets et
bibliothèques
disponibles pour
étendre
lefonctionnalités de
base de Next.js.
• Architecture solide : • Apprentissage :
Angular utilise une Angular a une courbe
Angular JS
architecture de d'apprentissage assez
composants qui raide, il peut donc
permet de être difficile pour les
décomposer une développeurs de s'y
application en petites adapter rapidement.
parties indépendantes
et réutilisables. • Taille de l'application
: Les applications
• MVC intégré : Angular peuvent
Angular intègre le devenir très lourdes si
modèle de conception elles sont mal
MVC (modèle-vue- conçues, cela peut
contrôleur), ce qui ralentir les temps de
facilite la séparation chargement.
des responsabilités et
la gestion de l'état de • Le coût : angular
l'application. étant un framework
complexe, peut
• Outils de prendre un temps de
développement : développement plus
Angular fournit une long, il peut donc être
série d'outils et de plus coûteux de
bibliothèques pour construire une
aider les application en
développeurs à créer utilisant Angular.
des applications de
qualité. • Apprentissage
continu : Angular est
• Communauté active : un framework en
Angular est un projet constante évolution, il
41
open-source qui est donc nécessaire
bénéficie d'une pour les développeurs
communauté active de rester à jour avec
de développeurs. Cela les nouvelles versions
signifie qu'il y a une et les nouvelles
forte probabilité que fonctionnalités pour
vous trouviez de pouvoir en tirer
l'aide pour résoudre pleinement parti.
les problèmes que
vous rencontrez.
• Meilleures
performances :
Angular offre de
meilleures
performances que les
frameworks de même
catégorie grâce à son
utilisation de zone
d'angulaire et son
système de change
détection
• Facilité d'utilisation : • Moins de ressources :
Vue.js a une courbe Vue.js est un
Vue JS
d'apprentissage framework
relativement faible, il relativement jeune
est donc facile pour comparé à d'autres
les développeurs de framework populaire
commencer à utiliser tel qu’Angular ou
le framework. React, il y a donc
moins de ressources
• Taille légère : Le disponibles pour les
coeur de Vue.js est développeurs qui
très petit, ce qui rencontrent des
permet de charger problèmes.
rapidement les
applications et de • Moins de
conserver de bonnes bibliothèques : Vue.js
performances même a une communauté
lorsque l'application moins développée par
est devenue plus rapport à d'autres
complexe. frameworks, il y a
donc moins de
• Composants bibliothèques et de
réutilisables : Vue.js plugins disponibles
utilise des pour les
42
composants pour développeurs.
construire des
applications, ce qui • Manque de
permet une meilleure standardisation :
réutilisation du code. Vue.js n'a pas de
conventions établies
• Intégration facile : pour la gestion des
Vue.js peut être états et des
facilement intégré à composants, cela peut
des applications rendre difficile pour
existantes, ce qui en les développeurs de
fait un choix travailler sur des
populaire pour les projets en équipe et
développeurs qui de maintenir une
souhaitent ajouter des application complexe.
fonctionnalités
interactives à des • Apprentissage
sites existants. continu : Vue.js est
en constante
• Flexibilité : Vue.js évolution, il est donc
vous donne la nécessaire pour les
possibilité de choisir développeurs de
la façon dont vous rester à jour avec les
voulez structurer nouvelles versions et
votre application, les nouvelles
vous avez une liberté fonctionnalités pour
pour choisir pouvoir en tirer
l'architecture de votre pleinement parti.
projet
Next.js est un framework open-source basé sur React qui vous permet de créer des
applications web universeles (SSR) en utilisant JavaScript. Il est développé par Vercel
(anciennement connu sous le nom de ZEIT). Il est conçu pour faciliter la mise en place de
serveur-side rendering (SSR) pour vos applications React, et offre une variété de
fonctionnalités pour vous aider à créer des applications web rapides et performantes.
43
Server-Side Rendering (SSR) : Next.js permet de rendre vos composants React côté serveur,
ce qui améliore considérablement les performances de votre application en réduisant les
temps de chargement pour les utilisateurs.
Routage automatique : Next.js utilise un système de routage automatique qui vous permet de
définir facilement les routes pour vos pages. Il gère également la navigation entre les pages de
manière transparente.
Code splitting : Next.js utilise un système de "code splitting" automatique pour charger
uniquement les composants nécessaires pour chaque page, ce qui permet de réduire la taille de
l'application et de charger les pages plus rapidement.
Outils de développement : Next.js fournit un ensemble complet d'outils pour vous aider à
développer, déboguer et déployer des applications web rapidement.
Intégration facile avec des bibliothèques existantes : Next.js est facilement intégrable avec
d'autres bibliothèques et outils couramment utilisés dans le développement web, tels que
React Router, Redux, etc.
Déploiement simple : Next.js est intégré à l'écosystème de Vercel, ce qui permet des
déploiements rapides et faciles. Il est possible de déployer sur les serveurs de Vercel ou en
utilisant un serveur personnalisé ou sur des services cloud comme AWS ou GCP.
En résumé, Next.js est un framework puissant et polyvalent pour créer des applications web
universeles avec React. Il facilite la mise en place de SSR, fournit un système de routage
automatique et de Code Splitting, de nombreux outils de développement et une intégration
facile avec les bibliothèques couramment utilisées, ce qui en fait un choix populaire pour les
développeurs web.
Backend :
44
de programmation de peut être difficile à
Microsoft qui ajoute des comprendre pour les
fonctionnalités de développeurs qui n'ont pas
programmation orientée l'expérience avec les
objet à JavaScript. Cela architectures en couches.
permet une meilleure
productivité et une • Taille de l'application : Les
meilleure qualité du applications Nest.js
code. peuvent devenir lourdes si
elles sont mal conçues,
• Architecture en couches : cela peut ralentir les temps
Nest.js utilise une de chargement.
architecture en couches
qui permet de • Apprentissage continu :
décomposer une Nest.js est un framework
application en petites en constante évolution, il
parties indépendantes et est donc nécessaire pour
réutilisables. Cela facilite les développeurs de rester
la maintenance et la mise à jour avec les nouvelles
à échelle de l'application. versions et les nouvelles
fonctionnalités pour
• Support pour les pouvoir en tirer pleinement
dernières technologies : parti.
Nest.js prend en charge
les dernières • La dépendance à
technologies telles que TypeScript : Nest.js est
WebSockets, GraphQL, basé sur TypeScript, il est
et microservices. Cela donc nécessaire de
permet aux développeurs comprendre les concepts
de créer des applications de TypeScript pour
modernes et évolutives. pouvoir utiliser pleinement
les fonctionnalités de
• Intégration facile avec Nest.js, cela peut causer
45
d'autres technologies : des difficultés pour les
Nest.js est facilement développeurs qui ne sont
intégrable avec d'autres pas familier avec
technologies populaires TypeScript.
telles que MongoDB,
Express, et GraphQL.
• Communauté active:
Nest.js est un projet
open-source qui
bénéficie d'une
communauté active de
développeurs. Cela
signifie qu'il y a une forte
probabilité que vous
trouviez de l'aide pour
résoudre les problèmes
que vous rencontrez.
Express.js • Flexibilité : Express.js • Pas d'architecture définie :
est un framework Comme Express.js est un
minimaliste qui vous framework minimaliste, il
donne une grande liberté n'a pas d'architecture
pour organiser votre code définie. Cela peut rendre
et construire des difficile la maintenance et
applications de la la mise à échelle de
manière qui vous l'application si elle devient
convient le mieux. complexe.
46
communauté de développeurs de travailler
développeurs qui peuvent en équipe et de maintenir
aider à résoudre les une application complexe.
problèmes et fournir des
outils et des • La sécurité : Express.js ne
bibliothèques fournit pas de
supplémentaires. fonctionnalités de sécurité
intégrées, il est donc
• Intégration facile avec nécessaire pour les
d'autres technologies : développeurs de mettre en
Express.js est facilement place des mesures de
intégrable avec d'autres sécurité supplémentaires
technologies populaires ou d'utiliser des
telles que MongoDB, bibliothèques tierces.
Socket.io, et GraphQL.
• Performance : Certaines
• Simplicité : Express.js opérations de Express.js
est conçu pour être peuvent entraîner des
simple à utiliser, il est performances réduites pour
donc facile de démarrer des utilisations à grande
rapidement et de créer échelle. Il est donc
des applications web important de surveiller et
performantes. de mettre en place des
améliorations pour
Le Middleware : maintenir les
Express.js utilise le performances.
concept de middleware
qui permet de créer des
fonctionnalités
modulaires et
réutilisables qui
s'exécutent à différents
moments d'une requête
47
HTTP
Nous avons opté d’utiliser Nest.js en tenant compte de ces avantages ci-dessus.
Nest.js est un framework open-source basé sur Node.js pour créer des applications web
modernes. Il est basé sur TypeScript, un sur-ensemble de JavaScript qui ajoute des
fonctionnalités de programmation orientée objet, et est influencé par Angular. Il vise à fournir
une architecture robuste pour les applications à grande échelle, en combinant les avantages
des bibliothèques et des frameworks existants avec les dernières tendances en matière
d'architecture d'applications.
Support pour TypeScript : Nest.js est basé sur TypeScript, ce qui permet un meilleur contrôle
du type, une meilleure qualité du code et une meilleure productivité pour les développeurs.
Support des dernières technologies : Nest.js prend en charge les dernières technologies telles
que WebSockets, GraphQL, et les microservices.
Intégration facile avec d'autres technologies : Nest.js est facilement intégrable avec d'autres
technologies populaires telles que MongoDB, Express, et GraphQL.
Pattern Modulable : Nest.js utilise un pattern modulable pour construire ses applications,
permettant d'organiser efficacement son code et de le rendre facile à maintenir.
Ecosysteme complet : Nest.js inclut un ensemble complet d'outils pour vous aider à
développer, déboguer et déployer des applications web rapidement.
48
En résumé, Nest.js est un framework puissant pour créer des applications web modernes en
utilisant Node.js. Il utilise TypeScript pour ajouter des fonctionnalités de programmation
orientée objet et une architecture en couches pour faciliter la maintenance et la mise à échelle
de l'application. Il prend en charge les dernières technologies et est facilement intégrable avec
d'autres technologies populaires. Nest.js est également soutenu par une communauté active et
possède un écosystème complet pour faciliter le développement d'application.
4.3.2.5. SGBD
SGBD signifie Système de Gestion de Base de Données, ou Database Management System
(DBMS) en anglais. Il s'agit d'un logiciel qui permet de créer, de gérer et de maintenir des
bases de données. Les SGBD permettent aux utilisateurs de stocker, de récupérer et de gérer
des informations de manière efficace et sécurisée. Les exemples de SGBD sont MySQL, SQL
Server, Oracle, PostgreSQL and SQLite.
49
• MySQL est stable, correctement les
fiable et rapide, ce paramètres de
qui en fait un bon sécurité.
choix pour les • Les transactions
grandes bases de distribuées sont plus
données. compliquées à mettre
• Il est compatible avec en place
de nombreux • A moins de prévoir
systèmes de gestion un support adéquat, le
de contenu (CMS) et support technique est
systèmes de gestion limité par rapport à
d'entreprise (ERP) des solutions
populaires. propriétaires
commerciales
• Il fournit un grand
nombre de
fonctionnalités
avancées telles que
les vues, les
procédures stockées
et les déclencheurs.
Mongo DB • Mongo DB est un • Mongo DB ne
système de gestion de supporte pas les
base de données transactions multi-
NoSQL qui permet de documents
stocker des données atomiques, cela peut
sous forme de poser des problèmes
documents JSON, ce pour les applications
qui est souvent plus nécessitant des
facile à utiliser pour transactions très
les développeurs. précises
• Il supporte un grand • Mongo DB est moins
50
nombre d'opérations mature que les
en parallèle et offre systèmes de gestion
une haute de base de données
performance pour les relationnels
grandes bases de traditionnels, il y a
données. donc moins de
• Il est adapté pour les fonctionnalités
applications web, les disponibles
jeux en ligne, les • Mongo DB n'est pas
applications mobiles, toujours adapté pour
les analyses de les besoins de
données, les outils de données très
développement IoT. structurées, comme
• Mongo DB offre des les systèmes ERP, les
fonctionnalités systèmes de gestion
avancées telles que de la chaîne
les agrégations, les d'approvisionnement
indexes, la réplication • Il peut y avoir un
et la haute apprentissage en
disponibilité. cours pour les
• Mongo DB est développeurs
évolutif et peut être habitués aux bases de
étendu pour prendre données
en charge des charges relationnelles
de travail de plus en • La sécurité des
plus importantes données peut être
limitée si les
utilisateurs ne
configurent pas
correctement les
paramètres de
sécurité
51
Nous avons utilisé Mongo DB en prenant compte de ces avantages.
Présentation de Mongo DB :
52
structurées, mais reste un outil populaire pour les applications nécessitant une flexibilité et
une scalabilité élevées.
Ces outils permettent aux utilisateurs de créer des diagrammes UML tels que des
diagrammes de classes, des diagrammes de séquence, des diagrammes d'activité, des
diagrammes de cas d'utilisation, des diagrammes de déploiement et des diagrammes de
composants. Les outils de modélisation UML ont des fonctionnalités avancées telles que la
génération automatique de code, l'intégration avec des outils de gestion de versions et la
possibilité de partager et de collaborer sur des modèles.
53
déploiement, etc. • Il peut y avoir des
• Il supporte un grand problèmes de
nombre de langages performance pour les
de programmation, projets de très grande
permettant un code envergure.
génération • Il est moins populaire
• Il offre une que les autres outils
fonctionnalité de de modélisation UML
gestion des exigences tels que IBM Rational
qui permet de gérer Software Architect ou
les besoins des Visual Paradigm,
utilisateurs. donc il peut être
• Il est compatible avec difficile de trouver de
de nombreux la documentation ou
systèmes des utilisateurs
d'exploitation, y expérimentés.
compris Windows,
Linux et macOS.
• Il est facile à utiliser
pour les utilisateurs
déjà familiarisés avec
les outils de
modélisation UML.
Visual Paradigm • Il est facile à utiliser, • Il peut être un peu
même pour les coûteux pour les
débutants qui n'ont utilisateurs
pas d'expérience en individuels.
modélisation. • Il peut être un peu
• Il offre une grande complexe pour les
variété d'options de utilisateurs qui n'ont
personnalisation pour pas beaucoup
les diagrammes. d'expérience en
• Il prend en charge de modélisation.
54
nombreux types de • Il peut être un peu
diagrammes lourd pour les
couramment utilisés. utilisateurs avec des
• Il intègre des ordinateurs à faible
fonctionnalités de puissance.
collaboration pour les
équipes de
développement.
• Il offre une
intégration avec de
nombreux outils de
développement tels
que Eclipse,
NetBeans, et Visual
Studio.
Nous avons choisi Visual Paradigm for UML comme outils de conception car il offre déjà
tant de fonctionnalités. Cette version est largement suffisante pour établir les différents types
de diagrammes nécessaires au bon déroulement de notre projet.
Visual Paradigm est un outil de développement logiciel qui fournit une suite d'applications
pour créer et gérer des projets de développement logiciel. L'outil comprend une variété de
fonctionnalités pour la modélisation logicielle, telles que des diagrammes de classes, des
diagrammes de cas d'utilisation et des diagrammes d'activités, ainsi que des fonctionnalités
pour la gestion de projet, telles que la gestion des exigences, les tests et la collaboration
d'équipe.
Prise en charge de plusieurs langages de modélisation, notamment UML, BPMN, ERD, etc.
Un générateur de code intégré qui peut créer du code dans une variété de langages de
programmation, y compris Java, C# et C++.
55
Un environnement collaboratif permettant aux membres de l'équipe de travailler ensemble sur
le même projet.
Un système de contrôle de version qui vous permet de suivre les modifications apportées à
votre projet au fil du temps.
Une large gamme d'outils de création de diagrammes pour visualiser et concevoir des
systèmes logiciels.
56
Chapitre 5. Analyse Conceptuelle
5.1. Dictionnaire des données
57
RG3: un produit est affiché par plusieurs bannières
Un cas d'utilisation peut être divisé en diagrammes de séquence qui détaillent les différentes
fonctions du cas d'utilisation. Il permet d'identifier les possibilités d'interaction entre le
système et les acteurs (intervenants extérieurs au système), c'est-à-dire toutes les
fonctionnalités que doit fournir le système.
- 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é.
- L’interaction : Une interaction permet de décrire les échanges entre un acteur et un
cas d’utilisation. L’interaction entre un acteur et un cas d’utilisation se représente
comme une association. Elle peut comporter des multiplicités comme toute association
entre classes.
- Cas d’utilisation : représente un ensemble de séquences d'actions qui sont réalisées
par le système et qui produisent un résultat observable intéressant pour un acteur
particulier. Un cas d'utilisation est une description du système étudié privilégiant le
point de vue de l'utilisateur. Il permet une meilleure structuration des besoins des
utilisateurs qui définissent clairement la manière dont ils interagissent avec le système.
Les cas d'utilisation sont liés par des relations de plusieurs types.
la figure 5 représente la formalisation d’interaction entre un acteur et un cas d’utilisation.
58
Figure 5 Interaction entre acteur et cas d'utilisation
Dans le développement de logiciels, les cas d'utilisation sont utilisés pour décrire les
interactions entre un utilisateur et un système. Ils sont un moyen de capturer les exigences
d'un système d'une manière à la fois facilement compréhensible et testable. Un cas
d'utilisation décrit un scénario spécifique dans lequel un utilisateur interagit avec le système
pour atteindre un objectif spécifique.
Plusieurs types de relations peuvent exister entre les cas d'utilisation, notamment :
- Relation d'inclusion : ce type de relation indique qu'un cas d'utilisation inclut un autre
cas d'utilisation dans le cadre de son flux. Une relation d'inclusion est indiquée par une
flèche pointant du cas d'utilisation inclus vers le cas d'utilisation inclus avec l'étiquette
<<include>> ;
- Relation d'extension : ce type de relation indique qu'un cas d'utilisation peut étendre le
flux d'un autre cas d'utilisation. Une relation d'extension est indiquée par une flèche
pointant du cas d'utilisation étendu vers le cas d'utilisation étendu avec l'étiquette "<
<extend> >" ;
- Relation de généralisation : ce type de relation indique qu'un cas d'utilisation est une
forme plus générale d'un autre cas d'utilisation. Une relation de généralisation est
indiquée par une flèche pointant du cas d'utilisation spécialisé vers le cas d'utilisation
général avec une pointe de flèche ouverte.
- Relation d'association : ce type de relation indique qu'un cas d'utilisation est associé à
un autre cas d'utilisation. Une relation d'association est indiquée par une ligne continue
reliant deux cas d'utilisation.
59
Figure 6 Relations entre cas d'utilisation
5.3.1.2. Identification des acteurs
L’acteur de notre système est :
Le client
Tableau 16 Identificateurs des acteurs
Acteur Description
- Voir les listes des produits
Client - Ajouter un produit au panier
- Supprimer un produit du panier
60
Figure 7 Cas d'utilisation du système
Acteur Client
Objectif facilite d’explorer les produits sans pertes
de temps
Précondition ouvrir la page d’accueil de l’application.
61
Scenario normal : 1 L’acteur ouvre l’application
2 Le système affiche la page
d’accueil
Acteur Client
Objectif réussir l’ajout de produit
Précondition sélectionné un produit
Post-condition le client reçois une notification de réussie
62
5.3.2.3. Le cas d'utilisation « supprimer un produit du panier »
Ici le client va supprimer un produit du panier.
Tableau 20 Cas d'utilisation supprimer un produit du panier
Acteur Client
Objectif réussir la suppression d’un produit.
Précondition avoir un produit au panier
Post-condition suppression d’un produit avec succès.
Scenario normal : 1 L’acteur clique sur le bouton panier
2 Le système affiche la page du panier
3 L’acteur supprime le produit
Le système enregistre l’action et envoi une
notification
Scenario alternative : l’acteur peut revenir au page précédant sans
faire de suppression.
Les objets ou les composants : représentés par des boîtes horizontales qui contiennent le nom
de l'objet ou du composant.
Les messages : représentés par des flèches qui indiquent les interactions entre les objets ou les
composants.
Les moments : représentés par des marques verticales le long du temps sur la ligne du bas du
diagramme.
63
Figure 8 Formalisme du système
Pour les cas plus complexes, on peut intégrer des algorithmes dans les diagrammes de
séquences. Par le biais des cadres d'interaction, on peut préciser les spécificités de l’ensemble
des messages :
alt : fragment multiple alternatifs (si, alors, sinon)
opt : fragment optionnel
par : fragment parallèle (traitements concurrents)
loop : le fragment s’exécute plusieurs fois
region : région critique (un seul thread à la fois)
neg : une interaction non valable
ref : référence à une interaction dans un autre diagramme
sd : fragment du diagramme de séquence en entier
64
5.3.3.2. Diagramme de séquence de cas d’utilisation « ajouter au panier »
Voici le diagramme de séquence :
65
système, mais plutôt les caractéristiques qui contribuent à la qualité globale du système. Ces
exigences peuvent être classées en différentes catégories :
Ces besoins non fonctionnels sont souvent exprimés en termes qualitatifs ou quantitatifs
et peuvent être difficiles à mesurer ou à vérifier. Il est donc important de définir clairement
ces exigences dans la spécification des besoins techniques, pour s'assurer que le système
répond à tous ces besoins pour garantir la qualité attendue.
66
5.5. Modélisation du domaine
- La modélisation orientée objet (UML, Merise...) : utilise des classes, des objets et des
relations pour représenter les concepts et les relations du domaine.
- La modélisation des données : utilise des schémas conceptuels pour représenter les
structures de données et les relations entre elles.
- La modélisation des processus : utilise des diagrammes pour représenter les différents
processus d'affaires et les flux de données.
- Les modèles ainsi créés permettent de décrire les concepts, les règles métier, les
relations entre les concepts, les cas d'utilisation et les besoins. Ils sont souvent utilisés
pour communiquer les exigences avec les développeurs, pour définir les tests et pour
la documentation du système.
- L'utilisation de ces méthodes de modélisation permet de mieux comprendre les besoins
des utilisateurs et de développer des solutions plus efficaces. Elle permet également de
s'assurer que les concepts et les relations représentés dans les modèles sont cohérents
et respectent les règles métier.
67
Figure 12 Modèle de domaine
68
Chapitre 6. Conception détaillée
Le modèle représente les données de l'application et les règles métier qui s'appliquent à
ces données. Il est généralement indépendant de la vue et du contrôleur, et peut être utilisé par
plusieurs vues différentes.
La vue représente la présentation des données pour l'utilisateur. Elle est responsable de
l'affichage des données et de la réception des entrées utilisateur. Elle est généralement
indépendante du modèle et du contrôleur.
69
Figure 13 Architecture du système[4]
70
Figure 14 Diagramme de séquence de conception "voir les listes des produits"
71
6.2.2. Diagramme de séquence de conception de CU « ajouter au panier »
72
classes dans un système. Il est souvent utilisé pour décrire les concepts et les relations dans
une application en utilisant une notation graphique, pour faciliter la compréhension de la
structure du système.
Les classes: qui représentent les différents types d'objets dans le système.
Les méthodes: qui représentent les actions que peut réaliser une classe.
Les relations: qui représentent les liens entre les différentes classes, comme l'héritage,
l'agrégation ou la composition.
73
Voir les listes des produits
Figure 17 Diagramme de classe du futur système "voir les listes des produits"
74
Ajouter un produit au panier
75
Supprimer un produit au panier
76
6.4. Diagramme de classe de conception global
6.4.1. Réalisation du diagramme de classe du future système
77
6.5. Diagramme de paquetages
Un diagramme de package, également appelé diagramme de paquetage, est un outil de
modélisation utilisé pour représenter les différents composants d'un système en utilisant des
paquets ou des modules logiques. Il permet de montrer les relations de dépendance et les
interactions entre les différents paquets ou modules d'un système. Il est souvent utilisé pour
décrire la structure de l'application et la manière dont les différents composants sont organisés
et interagissent.
Les paquets : qui représentent les différents composants d'un système groupés par
fonctionnalité ou par niveau de granularité.
Les classes: qui représentent les différents types d'objets dans le système.
Les relations : qui représentent les déchanges de données et les déchanges de contrôle entre
les différents paquets.
78
Figure 20 Diagramme de paquetages[1]
79
6.6. Diagramme de déploiement
Un diagramme de déploiement est un outil de modélisation utilisé pour représenter
la configuration physique des différents composants d'un système, ainsi que les
interactions entre eux. Il permet de montrer comment les différents composants d'un
système sont disposés et configurés dans un environnement donné. Il est souvent utilisé
pour décrire la topologie physique des composants d'un système et comment ils sont
connectés entre eux.
80
PARTIE III : REALISATION
81
Chapitre 7. Mise en place de l'environnement de développement
7.1. Installation et configuration des outils
7.1.1. Installation de Visual code studio
Pour installer Visual Studio Code (VS Code) sur votre ordinateur, vous devez suivre les
étapes suivantes :
Téléchargez le fichier d'installation approprié pour votre système d'exploitation à partir du site
web de VS Code : https://code.visualstudio.com/download
Suivez les instructions de l'assistant d'installation pour installer VS Code sur votre ordinateur.
Il vous demandera de choisir l'emplacement d'installation et les options d'intégration avec le
système.
Après l'installation, lancez VS Code à partir du menu Démarrer ou du raccourci sur votre
bureau.
Vous pouvez personnaliser les préférences de VS Code en utilisant l'onglet des paramètres en
ouvrant le menu Préférences. Il est possible d'ajouter des extensions pour ajouter des
fonctionnalités supplémentaires
Vous pouvez maintenant commencer à utiliser VS Code pour écrire, déboguer et déployer
votre code.
Une fois Node.js et npm installés, vous pouvez utiliser npm pour installer NestJS en
ouvrant une fenêtre de commande (ou un terminal) et en tapant la commande suivante :
Cela installera la CLI (interface en ligne de commande) de NestJS qui vous permettra
de créer et gérer des projets NestJS à partir de la ligne de commande.
82
Pour installer Next.js, vous devez utiliser npm pour installer le package next.js. Vous
pouvez le faire en tapant la commande suivante dans votre terminal :
Ensuite, pour initialiser un nouveau projet Next.js, vous pouvez utiliser la commande :
Ouvrez une invite de commande et accédez au répertoire dans lequel vous avez extrait les
fichiers MongoDB.
Mac OS :
Vous pouvez utiliser Homebrew pour installer MongoDB sur macOS. Tout d'abord, ouvrez un
terminal et exécutez la commande : "brew tap mongodb/brew".
Linux :
Vous pouvez installer MongoDB sur Linux en utilisant le gestionnaire de packages de votre
distribution. Par exemple, sur Ubuntu, vous pouvez utiliser la commande suivante pour
installer MongoDB : "sudo apt install mongodb"
Une fois l'installation terminée, vous pouvez démarrer le serveur MongoDB en lançant la
commande : "sudo service mongod start"
83
Téléchargez le programme d'installation Windows de Visual Paradigm sur le site officiel.
Double-cliquez sur le programme d'installation pour lancer le processus d'installation.
Suivez les invites pour installer Visual Paradigm sur votre système.
Mac OS :
Téléchargez le programme d'installation macOS de Visual Paradigm sur le site officiel.
Double-cliquez sur le programme d'installation pour lancer le processus d'installation.
Faites glisser Visual Paradigm dans le dossier Applications
Suivez les invites pour installer Visual Paradigm sur votre système.
Linux :
Téléchargez le programme d'installation Linux de Visual Paradigm sur le site officiel.
Ouvrez un terminal, accédez au répertoire où vous avez téléchargé le programme
d'installation, puis exécutez la commande "chmod +x <installer_file_name>"
Exécutez le programme d'installation en exécutant "./<installer_file_name>"
Suivez les invites pour installer Visual Paradigm sur votre système.
Les micro services sont une approche d'architecture logicielle qui consiste à décomposer
une application en plusieurs services indépendants, chacun gérant une fonctionnalité
spécifique. Ces services communiquent entre eux via des API pour offrir des fonctionnalités
plus complexes.
84
Chapitre 8. Développement de l'application
8.1. Création de la base de données
Pour la creation de base de donnees avec Mongo DB compass :
1. Assurez-vous que MongoDB Compass est installé sur votre système. Si ce n'est pas le
cas, vous pouvez le télécharger et l'installer à partir du site web de MongoDB.
2. Lancez MongoDB Compass
3. Connectez-vous à un serveur MongoDB en saisissant les informations de connexion
appropriées (adresse IP, port, nom d'utilisateur, mot de passe) dans les champs de
connexion.
4. Une fois connecté, vous verrez une liste de toutes les bases de données existantes sur
le serveur.
5. Cliquez sur le bouton "Create Database" pour créer une nouvelle base de données.
6. Entrez un nom pour la nouvelle base de données dans la boîte de dialogue qui
s'affiche, puis cliquez sur "Create"
85
8.2. Codage de l'application
Extrait de codes :
@ApiTags('Categories Module')
@Controller('category')
export class CategoryController {
constructor(private readonly categoryService: CategoryService) {}
@Get('/all_categories')
@ApiOperation({ summary: 'Get all categories' })
@ApiResponse({
status: 200,
description: 'All categories',
})
@ApiResponse({
status: 403,
description: 'Forbidden',
})
@ApiResponse({
status: 500,
description: 'Internal Server Error',
})
async findall() {
try {
const listOfAllCategories = await
this.categoryService.getAllCategories();
return {
data: listOfAllCategories,
status: true,
message: 'All categories list',
};
} catch (error) {
return {
data: null,
status: true,
message: 'An error occured',
};
}
}
86
@Get('/top_categories')
@ApiOperation({ summary: 'Get the top categories, Or Random of 10 ' })
@ApiResponse({
status: 200,
description: 'All Top categories',
})
@ApiResponse({
status: 403,
description: 'Forbidden',
})
@ApiResponse({
status: 500,
description: 'Internal Server Error',
})
async getTopCategories() {
try {
const listTopCategories = await this.categoryService.getTopCategories();
return {
data: listTopCategories,
status: true,
message: 'All top categories list',
};
} catch (error) {
return {
data: null,
status: false,
message: 'An error occured',
};
}
}
@Get('/all_subcategories/:parent_id')
@ApiOperation({
summary: 'Get the subcategories of a category or of a subcategory',
})
@ApiResponse({
status: 200,
description: 'All subcategories of a category or of a subcategory',
})
@ApiResponse({
status: 403,
description: 'Forbidden',
})
@ApiResponse({
status: 500,
description: 'Internal Server Error',
})
async getAllSubcategories(@Param('parent_id') parentId: string) {
// eslint-disable-next-line prettier/prettier
87
// const categoryName = await
this.categoryService.getCategoryDescriptionById(parentId);
try {
// eslint-disable-next-line prettier/prettier
const listSubcategories = await
this.categoryService.getAllSubcategories(parentId);
return {
data: listSubcategories,
status: true,
message: 'All subcategories list ',
};
} catch (error) {
return {
data: null,
status: false,
message:
'An error occured while fetching subcategories ',
};
}
}
@Get('get_one_category/:idCategory')
async getOneCategoriesByLabel(@Param('idCategory') idCategory: string) {
// eslint-disable-next-line prettier/prettier
// const categoryName = await
this.categoryService.getCategoryDescriptionById(parentId);
try {
// eslint-disable-next-line prettier/prettier
const listSubcategories = await
this.categoryService.getOneLabelCategorie(idCategory);
return {
data: listSubcategories,
status: true,
message: 'find Category by label succes ',
};
} catch (error) {
return {
data: null,
status: false,
message:
'An error occured while find category by label ',
};
}
88
@Get('search_category/:label')
async searchCategoriesByLabel(@Param('label') myLabel: string) {
try {
const listSubcategories = await
this.categoryService.searchCategorie(myLabel);
return {
data: listSubcategories,
status: true,
message: 'find Category succes ',
};
} catch (error) {
return {
data: null,
status: false,
message:
'An error occured while find category by label ',
};
}
}
@Get('search_sub_category/:label/:idCategory')
async searchSubCategoriesByLabel(@Param('label')
label:string,@Param('idCategory') categoryParentId:string) {
try {
const listSubcategories = await
this.categoryService.searchSousCategorie(label,categoryParentId);
return {
data: listSubcategories,
status: true,
message: 'find subCategory succes ',
};
} catch (error) {
return {
data: null,
status: false,
message:
'An error occured while find subcategory',
};
}
}
@Get('get_caracteristic_by_category/:idCategory')
async getCaracteristic(@Param('idCategory') idCategory:string) {
try {
const listSubcategories = await
this.categoryService.getCaracteristicByCategory(idCategory);
return {
89
data: listSubcategories,
status: true,
message: 'find caracteristic succes ',
};
} catch (error) {
return {
data: null,
status: false,
message:
'An error occured while find category',
};
}
}
}
import "swiper/css";
import "swiper/css/pagination";
import "swiper/css/navigation";
import { Pagination, Navigation } from "swiper";
import config from "../../configs/api.config.json";
import Link from "next/link";
useEffect(() => {
setLoading(true);
fetch(`${config.apiUrl}/product/can_interest`)
.then((res) => res.json())
.then((response) => {
setProducts(response.data);
setLoading(false);
});
}, []);
return (
<>
<div className="container">
<div className={styles.titleCategory}>
90
Susceptible de vous intéresser
<div className={styles.line}> </div>
</div>
<div>
<Swiper
slidesPerGroup={1}
slidesPerView="auto"
breakpoints={{
374: {
slidesPerView: 2,
spaceBetween: 20,
},
620: {
slidesPerView: 3,
spaceBetween: 30,
},
750: {
slidesPerView: 4,
spaceBetween: 30,
},
975: {
slidesPerView: 5,
spaceBetween: 40,
},
1184: {
slidesPerView: 6,
spaceBetween: 30,
},
}}
loop={true}
loopFillGroupWithBlank={true}
navigation={true}
modules={[Pagination, Navigation]}
className={styles.mySwiper + " categorySwiper"}
>
{loading ? (
<p>Loading</p>
) : (
<>
{products?.map((product, index) => {
return (
<SwiperSlide key={index}>
<div>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/bootstr
ap-icons/1.10.2/font/bootstrap-icons.min.css"
></link>
<div className={`${styles.card} card`}>
91
<Link
href={{
pathname: `/product/${product?._id}`,
}}
>
<Image
src={P}
className={`${styles.cardimage} card-img-top`}
alt="..."
/>
</Link>
92
})}
</>
)}
</Swiper>
</div>
</div>
</>
);
};
93
Detail produit
94
Page Panier
95
CONCLUSION
La mise en place d'un module d'achat dans une application peut apporter de nombreux
avantages pour les utilisateurs et les développeurs.
Du coté utilisateur, un module d'achat permet d'acheter des produits ou des services de
manière simple et rapide, via un processus d'achat intuitif. Il peut également offrir des
fonctionnalités telles que la gestion des paniers d'achat, la sauvegarde des informations de
paiement, et les suggestions de produits similaires ou complémentaires.
Cependant, il est important de noter qu’on a utilisé les bons outils pour concevoir ce projet
comme le choix de SGBD : Mongo DB, langage de programmation : Javascrpit, et surtout la
méthode de conception UML.
En conclusion, un module d'achat peut être un ajout très utile pour une application, à
condition de le mettre en place de manière sécurisée et de s'assurer que l'expérience utilisateur
est satisfaisante. Il est nécessaire de bien comprendre les avantages et les défis liés à la mise
en place d'un module d'achat avant de le développer pour une application.
XI
BIBLIOGRAPHIE
[1] Joseph Gabay – David Gabay, 2008. UML 2 ANALYSE ET CONCEPTION. Paris, DUNOD,
242 p.
[2] Pascal Roques, 2006. UML 2. Modéliser une application web. Paris, Eyrolles, 236 pages.
[3] Pascal Roques – Franck Vallée, 2007. UML2 en action. Paris, Eyrolles, 394 pages.
[4] Pascal Roques, 4ième Edition, « Les cahiers du programmeur UML 2, Modéliser une
application Web », Groupe Eyrolles 2008, 247p.
[5] Pascal Roques, 5ième Edition, « UML 2 Par la pratique », Groupe Eyrolles 2006, 357p.
XII
WEBOGRAPHIE
[9] https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-
container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-
pattern consulte 19 Octobre 2022
[10] https://www.codemag.com/Article/2203081/A-Deep-Dive-into-the-Back-End-for-Front-
End-Pattern consulte le 24 Octobre 2022
[11] https://www.npmjs.com/package/oidc-provider consulte le 15 Octobre 2022
XIII
GLOSSAIRE
Super Application : Une super application web est une application qui répond aux besoins
des utilisateurs de manière efficace, qui est facile à utiliser, qui est performante, qui est
esthétique, qui est innovante et qui s'adapte aux différents types d'écrans. Elle peut offrir des
fonctionnalités avancées telles que l'intégration d'IA, des fonctions de personnalisation, une
sécurité renforcée, une facilité de maintenance, une scalabilité et une disponibilité élevée. En
général, une application web super est une application qui est conçue pour offrir une
expérience utilisateur exceptionnelle, qui est facile à utiliser et qui est constamment mise à
jour pour répondre aux besoins des utilisateurs.
Middleware : Un middleware est un logiciel qui sert d'intermédiaire entre une application
cliente et un système d'information serveur. Dans Nest.js, les middlewares sont utilisés pour
ajouter des fonctionnalités telles que l'authentification et la validation de données à une
application. :
SSR : SSR signifie Rendu côté serveur. Il s'agit d'une technique permettant de rendre les
pages web côté serveur avant de les envoyer au navigateur web du client. Cela permet
d'améliorer les performances et le référencement, ainsi que la possibilité de fournir du contenu
aux clients sans JavaScript.
Banner : Un "banner" est une bannière publicitaire, c'est un format de publicité en ligne qui
est souvent utilisé pour promouvoir un produit ou un service. Il est généralement utilisé pour
attirer l'attention des utilisateurs sur un site web ou une application. Les bannières sont
généralement des images ou des animations qui peuvent être cliquées pour accéder à une page
de destination. Les formats de bannières varient en taille et en apparence, mais ils ont tous
pour objectif de promouvoir une entreprise ou une marque.
XIV
ANNEXES
XV
TABLE DS MATIERES
CURRICULUM VITE................................................................................................................................... I
SOMMAIRE GENERALE ........................................................................................................................... III
REMERCIEMENTS .................................................................................................................................... V
LISTE DES FIGURES................................................................................................................................. VII
LISTE DES TABLEAUX ............................................................................................................................ VIII
LISTE DES ABREVIATIONS ....................................................................................................................... IX
INTRODUCTION GENERALE ..................................................................................................................... 1
PARTIE I : PRESENTATION GENERALE ...................................................................................................... 2
Chapitre 1. Présentation de l'Ecole Nationale d’Informatique ...................................................... 3
1.1. Information d’ordre général................................................................................................ 3
1.2. Missions et historique ......................................................................................................... 3
1.3. Organigramme institutionnel de l’ENI................................................................................. 6
1.4. Domaine de spécialisation................................................................................................... 8
1.5. Architecture des formations pédagogiques ........................................................................ 8
1.6. Relations de l’ENI avec les entreprises et les organismes ................................................. 12
1.7. Partenariat au niveau international .................................................................................. 13
1.8. Débouchés professionnels avec des diplômés .................................................................. 15
1.9. Ressources humaines ........................................................................................................ 17
Chapitre 2. Présentation de la société d’accueil .......................................................................... 18
2.1. Historique de RELIA ........................................................................................................... 18
2.2. Situation géographique de RELIA ...................................................................................... 18
2.3. Mission de RELIA ............................................................................................................... 19
2.4. Organisation et fonctionnement de RELIA ........................................................................ 19
Chapitre 3. Description du projet................................................................................................. 21
3.1. Formulation ....................................................................................................................... 21
3.2. Objectif et besoins de l'utilisateur..................................................................................... 21
3.3. Moyens nécessaires à la réalisation du projet .................................................................. 22
3.4. Résultats attendus ............................................................................................................. 23
3.5. Chronogramme du projet .................................................................................................. 23
PARTIE II : ANALYSE ET CONCEPTION .................................................................................................... 25
Chapitre 4. Analyse préalable ...................................................................................................... 26
4.1. Analyse de l'existant .......................................................................................................... 26
4.2. Critique de l'existant.......................................................................................................... 27
XVI
4.3. Conception avant-projet ................................................................................................... 27
Chapitre 5. Analyse Conceptuelle ................................................................................................ 57
5.1. Dictionnaire des données .................................................................................................. 57
5.2. Règles de gestion ............................................................................................................... 57
5.3. Représentation et spécification des besoins ..................................................................... 58
5.4. Spécification des besoins techniques ................................................................................ 65
5.5. Modélisation du domaine ................................................................................................. 67
Chapitre 6. Conception détaillée ................................................................................................. 69
6.1. Architecture du système ................................................................................................... 69
6.2. Diagramme de séquence de conception pour chaque cas d'utilisation ........................... 70
6.3. Diagramme de classe de conception pour chaque cas d'utilisation ................................. 72
6.4. Diagramme de classe de conception global ...................................................................... 77
6.5. Diagramme de paquetages ............................................................................................... 78
6.6. Diagramme de déploiement.............................................................................................. 80
PARTIE III : REALISATION ....................................................................................................................... 81
Chapitre 7. Mise en place de l'environnement de développement ............................................ 82
7.1. Installation et configuration des outils.............................................................................. 82
7.2. Architecture de l'application ............................................................................................. 84
Chapitre 8. Développement de l'application ............................................................................... 85
8.1. Création de la base de données ........................................................................................ 85
8.2. Codage de l'application ..................................................................................................... 85
8.3. Présentation de l'application............................................................................................. 93
CONCLUSION .......................................................................................................................................... XI
BIBLIOGRAPHIE ...................................................................................................................................... XII
WEBOGRAPHIE ..................................................................................................................................... XIII
GLOSSAIRE ............................................................................................................................................ XIV
ANNEXES................................................................................................................................................ XV
TABLE DS MATIERES ............................................................................................................................. XVI
RESUME .............................................................................................................................................. XVIII
ABSTRACT ........................................................................................................................................... XVIII
XVII
RESUME
Le stage effectue au sein de RELIA Consulting a permis la conception et la réalisation du
module d’achat d’un super application web de gérer dynamiquement l’exploration des
produits et de gestion de panier.
ABSTRACT
The internship carried out within RELIA Consulting allowed the design and the realization of
the purchase module of a super web application to dynamically manage the exploration of
products and basket management.
The application was developed by practicing an AGILE Scrum project management method
by associating it with the 2TUP design method which is based on UML, the JavaScript
programming language recognized for its performance, the Nest.js and Next frameworks. js,
the Mongo DB DBMS recognized by its power, Visual Studio Code as a text editor.
For the moment the application is still in the development phase so we cannot yet say if it
meets the expectations of the user at this time.
XVIII