Académique Documents
Professionnel Documents
Culture Documents
Thème
Soutenu le : 23/07/2020
Remerciements
LAMGARRAJ MOHAMED 1
FPT TAZA Plateforme GIFPT 2019/2020
Abréviation Désignation
CRUD Create, Read, Update, Delete
DI Dependency injection
LAMGARRAJ MOHAMED 2
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 3
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 4
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 5
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 6
FPT TAZA Plateforme GIFPT 2019/2020
Introduction
De nos jours, il est très important d'avoir des outils numériques pour l’enseignement
et l’information des étudiants à distance.
En janvier 2020, et à cause de la crise provoquée par le nouveau corona virus, et pour
arrêter la propagation de l’épidémie, la plupart des pays touchés par ce virus ont déclaré
l’état d’urgence sanitaire et un confinement de 60 à 100 jours, ce qui imposé aux
ministères de l’éducation dans la plupart des pays d’arrêter l’année scolaire et
universitaire avant sa fin.
Au Maroc, depuis le 16 mars, les cours présentiels ont été suspendus dans l’ensemble
des établissements d’enseignement, de formation professionnelle et des universités,
privés et publics. Cette situation a mis le ministère de l’éducation face à un défi de sauver
l'année universitaire et scolaire, ce qui demande des moyens techniques et numériques à
mettre à la disposition des étudiants pour leurs permettre de continuer leurs formations
à distance.
Face à cette situation j’ai remarqué que les universités marocaines manquent de
moyens numériques d’enseignement. Et dans ce cadre je me suis engagé dans mon projet
de fin d’étude à la réalisation d’une plateforme qui contribuera à la formation en ligne des
étudiants de la filière SMI de la FPT, cette plateforme constituer aussi d’une espace
d’information des étudiants et d’échange d’informations entre les étudiants, les lauréats
et les professeurs.
Cette plateforme qui porte le nom GIFPT a été déjà initialisée par des lauréats de notre
filière de la faculté polydisciplinaire de Taza, j’ai pris la mission d’ajouter des
fonctionnalités qui permet suivre les études à distance à partir de cette plateforme, et j’ai
ajouté la couche sécurité pour offrir à l’utilisateur une meilleure expérience d’utilisateur.
Le travail présenté dans ce mémoire s’inscrit dans ce contexte. Mon projet est
composé de trois parties principales qui sont :
Création d’une bibliothèque : permet aux étudiant de trouver des cours, des TDs, des
tps, et des examens en format numérique.
Webconférence : cette partie représente un salon de formation qui permet aux
professeurs de faire des séances de cour en ligne.
La couche sécurité de l’application : assurer l’authentification et les autorisations.
Le projet est une application WEB développée en utilisant des technologies modernes
et très tendantes de nos jours, qui sont capables de répondre aux besoins de l’utilisateur,
qui est dans notre cas l’étudiant de la FPT, plus précisément, les étudiants de la filière
sciences mathématiques informatique.
LAMGARRAJ MOHAMED 7
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 8
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 9
FPT TAZA Plateforme GIFPT 2019/2020
1.1 Introduction
Dans ce chapitre, je vais présenter la problématique qui m’a poussé à réserver mon projet
de fin d’études pour la résoudre, puis je vais présenter la solution que je vais implémenter
dans ce projet, et les objectifs à atteindre dans ce projet.
1.2 Problématique
Malgré les efforts fournis par les universités marocaines en but de numérisation de leurs
services et leurs formations, les évènements récents (confinement provoqué par le virus
corona depuis le 16 mars de cette année) ont prouvé un manque dans les ressources et les
moyennes numériques d’enseignement et d’information des étudiants à distance. La même
situation c’est qui est connu dans notre filière SMI dans la faculté polydisciplinaire de Taza,
puisque les étudiants trouvent encore des difficultés à accéder aux informations
universitaires, sans oublier un manque d’espace de communication avec leurs professeurs ou
d’enseignement à distance, et un manque d’une bibliothèque numérique pour les supports
des cours, TDs et des examens en format numérique.
1.3 Solution
La solution proposée est une plateforme numérique pour les étudiants du filière SMI dans
la faculté polydisciplinaire de Taza. C’est une plateforme qui porte le nom GIFPT et qui a été
déjà initialisée par des lauréats de notre filière de la faculté polydisciplinaire de Taza. Il va
contenir des fonctionnalités offrant à l’étudiant un environnement lui permettant de suivre
toutes les nouveautés, les annonces, son état pédagogique, les cours, et de profiter de contact
continue avec leurs professeurs et mêmes avec des lauréats de cette filière.
Il va aussi aider les étudiants à suivre leurs études à distance au cas exceptionnelles comme
le confinement provoqué par la crise de covid-19, ou suivre des formations et des séances de
cours parallèles au cours présentiels dans les cas normales.
L’objectif de ce projet est la création et la mise en place d’une solution pour aider les
étudiants à suivre leurs études et de profiter des services des professeurs et de scolarité à
distance.
La solution doit assurer en premier lieu l’ensemble des fonctionnalités suivantes :
Un accès aux informations et état de l’étudiant facile et dématérialisé.
Une bibliothèque des Cours des TDs et des Examens.
Une espace de visioconférence pour l’enseignement à distance.
Un accès facilité aux informations des professeurs (mail, site web…)
Une information des étudiants sur les enseignements et les examens (emploi du
temps, horaires d’examens, résultats…)
Un espace d’annonces.
Des services sociaux plus accessibles.
Des informations sur les offres d’emplois, les stages et les concours.
LAMGARRAJ MOHAMED 10
FPT TAZA Plateforme GIFPT 2019/2020
Parmi ces fonctionnalités, il y a ceux qui ont déjà été réalisées ou initialisées par les lauréats
d’anciennes promotions, mon travail consiste à ajouter d’autres services et compléter
d’autres, comme il est expliqué dans la phase de conception.
1.5 Conclusion
Dans ce chapitre j’ai posé la problématique que mon projet va essayer de
résoudre, comme j’ai présenté la solution proposée, puis une définition des objectifs et
services attendu de ce projet.
LAMGARRAJ MOHAMED 11
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 12
FPT TAZA Plateforme GIFPT 2019/2020
2.1 Introduction
Le projet consiste à développer une application web constituée d’un côté serveur ou
couche Back-end et d’un côté client ou couche Front-end. Ce concept s’appelle le
développement Full-Stack.
Pour avoir un projet bien écrit au niveau du code, et bien structuré au niveau d’architecture
logicielle, et capable de répondre à tous les besoins fonctionnelles et non fonctionnelles
attendu, j’ai choisi des Framework et des technologies qui sont compétentes et populaires
dans le marché de développement informatiques de nos jours.
Dans ce chapitre je vais citer et définir le maximum possible des outils et techniques utilisée
dans la réalisation.
Couche Contrôleur
Cette couche regroupe les classes java nécessaires au logique métier. Elle comporte donc
les services offerts par le système à l’utilisateur. Ces services ne sont autres que
l’implémentation des scenarios identifiés lors de la phase de conception.
Lors de l’appel d’un service, ce dernier fait appel aux objets métier nécessaires pour
répondre à la requête de l’utilisateur.
LAMGARRAJ MOHAMED 13
FPT TAZA Plateforme GIFPT 2019/2020
Couche Service
C’est une couche intermédiaire entre les couches contrôleur et la couche DAO (Data
Access Object), son rôle est de gérer les transactions qui seront ouverts à chaque appel de la
base de données.
Elle permet aussi de répartir les ressources entre les différents utilisateurs de l’application
afin de garantir une meilleure performance du serveur (utilisation des ressources seulement
à la demande).
Couche d’accès aux données
C’est la couche qui regroupe les classes Java capables de fournir les données nécessaires
à la couche service, et par la suite aux services demandés par l’utilisateur. Cette couche est
modélisée dans notre système par des composants DAO.
Un DAO est un design pattern (patron de conception) utilisé dans les architectures logicielles
objet visant à isoler la logique de persistance dans des classes d’accès aux données.
Couche stockage
Cette couche est responsable du stockage des données dans une base de données
relationnelles dont le modèle physique est déduit à partir du diagramme de classes du
système. Elle est gérée dans notre cas par le SGBD MySQL.
Couche sécurité
Il s’agit d’une couche dédiée à la sécurité, chargée de vérifier l’authentification et les
autorisations d’accès aux pages et aussi le hachage des mots de passes des utilisateurs. Elle
agit dans deux cas sous forme de :
LAMGARRAJ MOHAMED 14
FPT TAZA Plateforme GIFPT 2019/2020
Utilisateur
LAMGARRAJ MOHAMED 15
FPT TAZA Plateforme GIFPT 2019/2020
3 2 demandes
4 des données
Renvois des
Présentation données
Réponse html 5
Vue Model
2.4 WebRTC
WebRTC web real time communications (communications web en temps réel), est un ensemble
de protocoles, de mécanismes et d'API qui fournissent aux navigateurs et aux applications mobiles
des possibilités de communication en temps réel (RTC) via des connexions Peer to Peer. Il a été conçu
comme une technologie qui permet aux navigateurs de communiquer directement sans la médiation
d'aucune sorte d'infrastructure. Cependant, ce modèle ne suffit que pour créer des applications Web
de base, des fonctionnalités telles que les communications de groupe, l'enregistrement de flux
multimédia, la diffusion multimédia ou le transcodage multimédia sont difficiles à mettre en
œuvre. Pour cette raison, de nombreuses applications nécessitent un serveur multimédia
intermédiaire comme kurento, red5, jitsi, Ant server et d’autres.
Serveur
Serveur
Message Message
LAMGARRAJ MOHAMED 16
FPT TAZA Plateforme GIFPT 2019/2020
2.5 Java EE
Java EE simplifie le développement des applications d'entreprise en les basant sur des
composants standardisés et modulaires, en fournissant un jeu complet de services à ces
composants et en prenant automatiquement en charge un grand nombre des détails du
comportement de l'application, déchargeant le développeur d'un travail complexe de
programmation. Sun et un groupe d'industriels leaders du marché, sous les auspices de la
communauté ouverte JCP, ont permis d'unifier la totalité des standards et des API dans le
cadre de la plate-forme Java EE.
LAMGARRAJ MOHAMED 17
FPT TAZA Plateforme GIFPT 2019/2020
2.6 Spring
Spring est un Framework libre pour construire et définir l’infrastructure d’une application
java, dont il facilite et accélérer le développement et les tests, ce Framework est modulaire
et cela lui confère une certaine facilité pour la conception et la réalisation d'applications JEE.
Il est effectivement un conteneur dit « léger », c'est-à-dire une infrastructure similaire à un
serveur d'application J2EE.
Il prend donc en charge la création d'objets et la mise en relation d'objets par
l'intermédiaire d'un fichier de configuration qui décrit les objets à fabriquer et les relations de
dépendances entre ces objets.
L'efficacité de Spring par rapport à d'autres Framework Java est due à la faite qu'il
se sert des Beans (des simples POJO), de fichiers de configuration (fichiers XML) et
d'annotations (à partir la version 2.0 les annotations Spring se sont renforcées depuis la
version 2.5).
Spring s’appuie principalement sur l’intégration de trois concepts fondamentaux :
Spring propose aussi un ensemble très complet de modules additionnels qui ne cesse de
s'enrichir pour faciliter la mise en œuvre de certaines fonctionnalités dans les applications,
tels que : Spring Extensions, Spring Data, Spring Mobile, Spring Web Services, Spring Tool Suite
(Extension eclipse pour Spring).
LAMGARRAJ MOHAMED 18
FPT TAZA Plateforme GIFPT 2019/2020
Spring Boot est un projet ou un micro Framework java open source développé par le
groupe Pivotal, utilisé pour créer un micro-service. Il a notamment pour but de créer des
applications Spring autonomes, et faciliter la configuration d’un projet Spring et de réduire le
temps alloué au démarrage d’un projet.
Pour arriver à remplir cet objectif, Spring Boot permet de faire :
LAMGARRAJ MOHAMED 19
FPT TAZA Plateforme GIFPT 2019/2020
Spring Security est un Framework qui fournit diverses fonctionnalités de sécurité comme
l’authentification et l'autorisation pour créer des applications JEE sécurisées.
Il s'agit d'un sous-projet du Framework Spring lancé en 2003 par Ben Alex. Plus tard, en
2004, il a été publié sous la licence Apache sous le nom de Spring Security 2.0.0.
Ce cadre cible deux principaux domaines d’application : l'authentification et
l'autorisation. L'authentification est le processus de connaissance et d'identification de
l'utilisateur qui souhaite accéder. Et l'autorisation est le processus permettant à l'autorité
d'effectuer des actions dans l'application et autoriser la demande Web, les méthodes et
l'accès au domaine individuel.
Spring Security présente de nombreux avantages. Certains d'entre eux sont donnés ci-
dessous.
Prise en charge complète de l'authentification et de l'autorisation.
Protection contre les tâches courantes
Intégration de l'API Restful
Intégration avec Spring MVC
Portabilité
Prise en charge de la configuration Java
2.9 Hibernate
Nous allons, cependant, nous intéresser à la couche la plus basse de notre architecture
d’application, c’est la couche d’accès aux données. Celle-ci permet d’interfacer le code métier
avec une source des données. L’intérêt est de pouvoir changer de base de données en n’ayant
besoin de ne modifier que la couche d’accès.
Pour réaliser cette tâche, il existe plusieurs solutions fournies par JEE qui sont appelé Java
Persistance API. Ce mécanisme qui gère la correspondance entre des objets d’une application
et les tables de base des données se nomme ORM (Object-Relationnal Mapping).
Pour cela, j’ai pris la décision d’utiliser Hibernate comme un Framework ORM, car il :
LAMGARRAJ MOHAMED 20
FPT TAZA Plateforme GIFPT 2019/2020
2.10 AJAX
AJAX (Asynchronous Javascript And XML) est une méthode de développement web
basée sur l'utilisation d'un script Javascript pour effectuer des requêtes web à l'intérieur d'une
page web sans recharger la page. AJAX rend plus interactifs les applications web et offre une
meilleure ergonomie ainsi qu’une réactivité améliorée en permettant de modifier
interactivement une partie de l'interface web (client) seulement.
2.11 jQuery
2.12 AngularJS
LAMGARRAJ MOHAMED 21
FPT TAZA Plateforme GIFPT 2019/2020
Au temps que je cherche un Framework qui permet de nous donner une meilleure expérience
utilisateur (User experience), j’ai choisi AngularJS car :
AngularJS est un cadre efficace qui peut créer des applications Internet riches (RIA).
Il permet de créer des applications web de type SPA, une seule page qui s’affiche et
change juste les données à afficher, ce qui donne une vitesse de réponse très élevée.
AngularJS offre aux développeurs une option pour écrire des applications côté client
à l'aide de JavaScript d'une manière propre à MVC (Model View Controller).
AngularJS est livré avec plusieurs service permet de fournir un ensemble de tâches
nécessaires au fonctionnement de notre application.
2.13 Bootstrap
Bootstrap est un Framework destiné aux applications web. Développé par Twitter, et
distribué sous licence Apache 2. C’est un outil à considérer lors du développement rapide
d’applications web. C’est une collection d'outils utile à la création du design (graphisme, et
interactions avec la page dans le navigateur …) des sites et d'applications web. Il fournit des
codes HTML et CSS, des formulaires, boutons, outils de navigation et autres éléments
interactifs, ainsi que des extensions JavaScript en option.
LAMGARRAJ MOHAMED 22
FPT TAZA Plateforme GIFPT 2019/2020
2.14 UML
Dans cette partie, je présenterai l’environnement de travail qui inclut les logiciels utilisés.
2.15.1 IntelliJ IDEA
IntelliJ IDEA est un IDE, autrement dit un ensemble d'outils destinés au développement
logiciel. Il est édité par la société commerciale JetBrains qui en assure le développement et le
support depuis janvier 2001.
IntelliJ IDEA est décliné en deux éditions :
Community : l'édition communautaire, open source, gratuite mais limitée, est le choix
idéal pour travailler sur des applications pures Java / Groovy ou des développements
Swing.
Ultimate : l'édition complète et payante permet entre autres le développement
d'applications Web JEE.
LAMGARRAJ MOHAMED 23
FPT TAZA Plateforme GIFPT 2019/2020
Dans ce projet, j’ai utilisé la version Ultimate puisque JetBrains permet à tous les étudiants
du monde de profiter de ce riche outil Gratuitement. Il suffit d'avoir une adresse mail
académique, et la Faculté Polydisciplinaire de Taza (FPT) fourni à ces étudiants une adresse
mail académique pour telles raisons.
2.15.2 WebStorm
Figure 16 : Tomcat
Apache Tomcat est une implémentation open source d'un conteneur web qui permet
donc d'exécuter des applications web reposant sur les technologies servlets et JSP. Tomcat est
diffusé en open source sous une licence Apache. C'est aussi l'implémentation de référence des
spécifications servlets jusqu'à la version 2.4 et JSP jusqu'à la version 2.0 implémentée dans les
différentes versions de Tomcat.
LAMGARRAJ MOHAMED 24
FPT TAZA Plateforme GIFPT 2019/2020
Kurento est unserveur multimédia WebRTC et un ensemble d'API clientes open source,
publié sous les termes de la licence Apache version 2.0, qui simplifient le développement
d'applications vidéo avancées pour les plates-formes Web et smartphones. Ses
fonctionnalités incluent les communications de groupe, le transcodage, l'enregistrement, le
mixage, la diffusion et le routage des flux audiovisuels. Kurento propose un cadre multimédia
qui facilite la tâche de création d'applications multimédias avec les fonctionnalités suivantes :
Pipelines multimédias WebRTC dynamiques : Kurento autorise les pipelines
multimédias personnalisés connectés à des pairs WebRTC comme les navigateurs Web et les
applications mobiles.
Architecture client / serveur : les applications développées avec Kurento suivent une
architecture client / serveur. Il propose une interface WebSocket implémentant le protocole
Kurento, qui permet aux applications clientes de définir des topologies de pipeline.
Applications client Java et JavaScript : pour notre cas, l'utilisation typique d'un
déploiement KMS consiste en une architecture à trois couches, dans laquelle le navigateur de
l'utilisateur interagit avec le serveur KMS au moyen d'une application client intermédiaire
(GIFPT), suivant le protocole WebSocket. Il existe plusieurs bibliothèques clientes officielles
de Kurento, prenant en charge l'utilisation de Java et JavaScript pour les applications clientes.
LAMGARRAJ MOHAMED 25
FPT TAZA Plateforme GIFPT 2019/2020
2.15.4 WampServer
Figure 19 : WampServer
Il fournit une distribution facile à installer. Ainsi, les développeurs peuvent se lancer
facilement dans le monde d'Apache. Pour le rendre encore plus pratique, WAMPSERVER est
livré avec toutes les fonctionnalités activées. Parmi ses fonctionnalités dont nous avons
besoin :
MySQL : il s'agit du Système de Gestion de Bases de Données (le SGBD), il va permettre
de sauvegarder les données.
PhpMyAdmin : phpMyAdmin est une interface entre nous et nos données, il est fait pour
simplifier l'administration de MySQL grâce à des pages web.
Maven est un outil pour la gestion et l’automatisation de production des projets logiciels
Java en général. Maven utilise une approche déclarative où la structure du projet et son
contenu sont décrits dans un document XML. De plus il convient de se conformer à une
structure de projets standards et de bonnes pratiques. L'observation de ces normes permet
de réduire le temps nécessaire pour écrire et maintenir les scripts.
Il offre entre autres les fonctionnalités suivantes :
Compilation et déploiement des applications Java (JAR, WAR)
Gestion des librairies requises par l'application
Exécution des tests unitaires
Génération des documentations du projet (site web, pdf, Latex)
Intégration dans différents IDE (Eclipse, IntelliJ)
LAMGARRAJ MOHAMED 26
FPT TAZA Plateforme GIFPT 2019/2020
2.15.6 Postman
2.15.7 MS.Visio
Microsoft Visio est un outil de création de diagrammes qui nous permet de créer des
diagrammes (allant de simples à complexes), qui facilitent la visualisation des données et la
modélisation des processus. Visio aide également pour créer des organigrammes détaillés,
des plans d'étage, des diagrammes de pivot, et spécialement des diagrammes d’UML claires
et bien désigné.
2.16 Conclusion
Dans ce chapitre, j’ai présenté une étude technique détaillée du projet. J’ai parlé de
l’architecture logicielle à adopter pour mon projet, j’ai parlé aussi des Frameworks utilisés et
les outils de développement utilisés.
LAMGARRAJ MOHAMED 27
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 28
FPT TAZA Plateforme GIFPT 2019/2020
3.1 Introduction :
La conception est une phase très important dans la réalisation d’un projet , et spécialement
dans le processus de développement logiciel, dans ce chapitre je donnera une visions claire
des objectifs à atteindre du projet et des services que j’aurai ajouté à la plateforme GIFPT en
utilisant les diagrammes UML.je spécifierai les besoins à exploiter pour chaque utilisateur avec
un diagrammes de cas d’utilisation et je décrira la déroulement des actions durant
l’exploitation des services fournis par la plateforme en utilisant les diagrammes de séquence,
puis un diagramme de classes qui représentes les classes qui seront utilisées dans le
développement java des services ajoutés à cette plateforme. Et je finirai par un diagramme de
déploiement.
Après une étude de l’application existante (GIFPT), j’ai cité quelques problèmes à résoudre
et quelques fonctionnalités très importantes qui manquent et qui sont imposées par la
situation courant. Les services que j’ai décidé à jouter a GIFPT sont comme suit :
D’après l’étude fonctionnelle que j’ai faite, la plateforme doit répondre aux besoins
suivants :
Pour les étudiants :
La possibilité d’accéder à des cours, des TDs, des anciens examens et
des fiches de TPs à partir de la plateforme.
La possibilité de rejoindre une séance de cours audio-visuel en ligne.
Pour les enseignantes :
La possibilité de publier, de modifier et de supprimer un fichier de la
bibliothèque.
La possibilité de créer et gérer une séance de cours audio-visuel en
ligne.
LAMGARRAJ MOHAMED 29
FPT TAZA Plateforme GIFPT 2019/2020
Les diagrammes de cas d’utilisation sont des diagrammes UML permettent de donner
une vision statique et globale du comportement fonctionnel d’un système logiciel. Ils sont
utiles pour des présentations auprès de la direction ou des acteurs d’un projet.
LAMGARRAJ MOHAMED 30
FPT TAZA Plateforme GIFPT 2019/2020
publier fichier
suprimer fichier
<<inclure>>
ensignant créer une séance
video
<<inclure>>
<<inclure>>
finir une séance video
<<inclure>>
identification
<<inclure>>
etudiant
consulter fichier
LAMGARRAJ MOHAMED 31
FPT TAZA Plateforme GIFPT 2019/2020
Page d'authentification
[utilisateur exist]
données correctes
page d'acceuil
LAMGARRAJ MOHAMED 32
FPT TAZA Plateforme GIFPT 2019/2020
assert
authentification
alt
role= ensignant
opt
action= publierDocument
demande d'ajout de document
formulaire d'ajout
remplir formulaire
action= suprimerDocument
confirmer
action= LireDocument
demande de document
charger les données de document
document
document
role= etudiant
demande de lecture de document
demande de document
document
document
LAMGARRAJ MOHAMED 33
FPT TAZA Plateforme GIFPT 2019/2020
ref
authentification
etudiant
assert
ref
authentification
verifier id
opt
finir la session
demande de fermer la session
canal fermé
connection perdu
LAMGARRAJ MOHAMED 34
FPT TAZA Plateforme GIFPT 2019/2020
session file
adresse : URL Id : double
* titre : String ;
addUser() Date :String ;
deleteUser() 1 type : String;
nomFichier : String;
1 auteur : String;
compte createFile()
* deleteFile()
nomCompte : String
updateFile()
mdpCompte : String
1 getAllFile()
creat(); getOneFile(id)
dlete();
Séance update();
findAll();
findByID(id);
Id : double
titre : String
*
1
creatLesson()
finishLesson()
updateLesson()
etudiant ensignant
id : entier id : entier
nom :String nom : String
prenom : String prenom : String
CIN : String Mail : String
CNE :: String site : String
tele : String
Mail : String
LAMGARRAJ MOHAMED 35
FPT TAZA Plateforme GIFPT 2019/2020
Serveur Centrale
<<componant>>
spring boot SGBD
include
include
<<componant>>
Hibernate
include
<<componant>>
kurento MS
client
<<componant>>
navigateur web
3.7 Conclusion :
Au cours de ce chapitre, j’ai mis en place la partie conception de l’application, j’ai identifié
les besoins et les analysés avec le diagramme de cas d’utilisations, et j’ai fait une description
des actions durant l’utilisations de l’application avec les diagrammes de séquences, puis j’ai
présenté le diagramme de classes et enfin le digramme de déploiement. Cette partie nous va
aider à bien commencer la réalisation de notre projet, comme je vais décrire dans le chapitre
suivant.
LAMGARRAJ MOHAMED 36
FPT TAZA Plateforme GIFPT 2019/2020
Chapitre 4 : Réalisation
LAMGARRAJ MOHAMED 37
FPT TAZA Plateforme GIFPT 2019/2020
4.1 Introduction
La réalisation d’une application web complet (ou développement Full-Stak) demande de
bien comprendre comment la communication client-serveur ce fait en premier lieu, et en
deuxième lieu de comprendre comment les technologies et les Framework choisis se
comportent durant cette communication, Dans ce projet je vais développer la couche Backend
et la couche Frontend pour répondre aux besoins fonctionnels déterminés, et ceci consiste à
:
Pour que notre architecture soit claire et lisible, je présenterai l’architecture responsable des
services CRUD séparément de l’architecture responsable de visioconférence, Les deux
schémas suivants expliquent bien l’architecture de notre application :
LAMGARRAJ MOHAMED 38
FPT TAZA Plateforme GIFPT 2019/2020
Entit
é
Requête Http
LAMGARRAJ MOHAMED 39
FPT TAZA Plateforme GIFPT 2019/2020
1- Le client Web exécute une des opération CRUD envoyant une requête HTTP à travers
les méthodes d'actions GET, POST, PUT, PATCH, DELETE.
2- Le microservice Spring Boot (dispatcher servlet) détecte l’opération et passe
l’événement au contrôleur du microservice (couche contrôleur). Celui-ci sauvegarde le DTO
passé en paramètre, envoie la requête de création au service (couche métier).
3- Le service fait deux tâches importantes, il exécute la logique métier correspondant au
contrôleur, et converti le DTO a des entités (beans) consommables par la couche suivante.
4- La couche DAO fournir les données nécessaires pour la couche métier, et par la suite aux
services demandes par l’utilisateur.et sauvegarder les données fournies par la couche métier
dans la base de données, pour automatiser cette tache en utilise Hibernate pour le mapping
objet relationnelle. Hibernate fait la correspondance entre les données stockées en base de
données sous formes des tables, et les objets créés à partir des classes entité dans
LAMGARRAJ MOHAMED 40
FPT TAZA Plateforme GIFPT 2019/2020
l’application, on spécifie les colonnes de la table par les variables, on ajoute à sa clé primaire
l’annotation @Id puis s'il y a une clé étrangère on doit la joindre avec @JoinColumn
Définitions :
Pour le Coté client :
View : Ce n’est rien que des lignes de html combiné avec CSS, Bootstrap et des éléments de
AngularJS pour data-binding. Chaque vue fonctionne avec un contrôleur. La vue consomme
les données en data-binding et appelle les méthodes du contrôleur
Model : Les modèles sont dédiés à un type de données. Ils contiennent la donnée et toutes
les méthodes de manipulation de cette dernière.
Controller : Faire des traitements puis utiliser les méthodes de services pour envoyer les
données au serveur. Les services sont des classes d’appels serveurs. Ils contiennent des
méthodes qui gèrent les requêtes http pour communiquer avec la partie backend.
Data binding : Le data-binding bidirectionnel (2 way data-binding) est rendu possible grâce
au scope. Le scope est le “linker” d’une application AngularJS, c’est lui qui contient les
variables et fonctions qui font la liaison entre vues et contrôleurs. Il permet donc aux données
de pouvoir être mises à jour par les vues et par le modèle. L’injection de dépendances permet
de charger certaines parties de l’application seulement quand c’est nécessaire. Et l’un des gros
points fort d’AngularJS vient du fait que les applications écrites sont entièrement testables.
Couche Controller : Des classes responsables de gérer les interactions entre clients Web
et microservice REST (par exemple, les requêtes Web) Un contrôleur sera défini dans notre
application par l'annotation @RestController, placée avant le nom de la classe. Pour décider
qu’il est le contrôleur qui va traiter l’URI en ajout l’annotation @RequestMapping au-dessus
de l'annotation @RestController, pour s'assure que toutes les URI commençant par
"/categories" seront traités par ce contrôleur. Concernant @RequestMapping au-dessus de la
méthode, sa valeur sera concaténée au @RequestMapping du contrôleur
LAMGARRAJ MOHAMED 41
FPT TAZA Plateforme GIFPT 2019/2020
Couche accès aux données : C’est la couche qui regroupe les classes Java capables de
fournir les données nécessaires à la couche métier, et par la suite aux services demandes par
l’utilisateur. Cette couche est modélisée dans notre système par des composants DAO.
Un DAO est un design pattern (patron de conception) utilisé dans les architectures logicielles
objet visant à isoler la logique de persistance dans des classes d’accès aux données.
DTO : Classes responsables de définir les informations requises pour les interactions entre
clients Web et microservice. Il simplifie les transferts de données entre les sous-systèmes
d'une application logicielle. Les objets de transfert de données sont souvent utilisés en
conjonction des objets d'accès aux données
Injection de dépendance : permet "d'échanger" une classe par une autre et d'avoir
plusieurs configurations d'application. Maintenant on peut appeler ces classes « Des Beans ».
Il existe 4 types d'injections de dépendances : Injection par constructeur, Injection par
interface, Injection par mutateur et Injection par champs. On peut faire de l'injection de
dépendance à la main sans utiliser d'outils ou bien utiliser des Framework comme notre cas,
on va utiliser Spring.
LAMGARRAJ MOHAMED 42
FPT TAZA Plateforme GIFPT 2019/2020
Définitions :
WebSocket : est une technologie évoluée qui permet d'ouvrir un canal de communication
bidirectionnelle entre un navigateur (côté client) et un serveur. Avec cette API vous pouvez
envoyer des messages à un serveur et recevoir ses réponses de manière événementielle sans
avoir à aller consulter le serveur pour obtenir une réponse.
JSON-RPC : est un protocole d'appel de procédure distante simple codé en JSON. JSON-
RPC permet l'envoi de notifications et l'envoi de plusieurs appels au serveur auxquels il est
possible de répondre dans le désordre.
LAMGARRAJ MOHAMED 43
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 44
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 45
FPT TAZA Plateforme GIFPT 2019/2020
LAMGARRAJ MOHAMED 46
FPT TAZA Plateforme GIFPT 2019/2020
Figure 38 : visioconférence
4.5 Conclusion
Dans cette dernière partie de mon travail j’ai expliqué comment notre application GIFPT
fonctionner en respectant l’architecture logicielle obtenu par la collaboration de toutes les
sous architectures des outils et des Framework utilisés. J’ai présenté également, notre
plateforme à travers quelques vues de cette dernière.
LAMGARRAJ MOHAMED 47
FPT TAZA Plateforme GIFPT 2019/2020
Conclusion générale
L’immigration vers la numérisation de l’enseignement et l’information des étudiants, est
devenue une solution qui s’impose plus qu’être un choix, et cela devient clair au temps des
crises comme la crise provoquée par le virus corona.
C’est dans ce cadre que s’inscrit ce projet de fin d’études effectué au sein de la faculté
poly-disciplinaire de Taza, en vue de l’obtention du diplôme universitaire : licence en génie
Informatique. Il consiste à continuer le processus de développement d’une plateforme
numérique qui va mettre à disposition des étudiants de la filière SMI toute information
nécessaire, et assurer une communication continue entre les professeurs et les étudiants.
Pour atteindre cet objectif j’ai commencé par une étude préalable qui a permis de décrire
et de comprendre les principaux concepts autour desquels tourne mon projet. Puis j’ai
effectué une étude fonctionnelle où j’ai décidé les fonctionnalités à ajouter à la plateforme
GIFPT, ensuite j’ai fait une étude technique contenant une recherche sur les technologies et
les moyens qui peuvent aider à réaliser ce projet. J’ai choisi des technologies et des Framework
qui ont une bonne réputation dans le domaine de développement informatique. Ensuite j’ai
fait une analyse des besoins et une conception bien détaillée du projet. Enfin, j’ai abordé
l’étape de réalisation au cours de laquelle j’ai traduit la modélisation conceptuelle en code de
deux partie back-end et front-end utilisant les différentes technologies et techniques choisis.
Le choix des technologies a porté ses fruits en poussant les performances de l’application
à des records surprenants. D’autre part, la décomposition en couches permet de bénéficier
d’un maximum de flexibilité et d’extensibilité propice à un développement facile pouvant être
effectuée par des taches séparées.
Les perspectives possibles à la suite du présent projet sont multiples et couvrent plusieurs
aspects, tels que l’hébergement de l’application sur un serveur web et la création d’une
version mobile.
Finalement, cette expérience est une opportunité que j’ai saisie et dans laquel j’ai acquis
énormément des compétences en travaillant avec des technologies récentes et sollicitées sur
le marché, plus particulièrement, le développement des applications avec la spécification Java
EE et en utilisant des Framework très connus à titre exemple Spring, Spring boot, AngularJS,
Spring MVC, Spring Security, Hibernate, Bootstrap…et l’utilisation des techniques de RTC
comme webRTC, kurento… Elle m’a offert l’opportunité d’intégrer le monde de
développement informatique et de mettre en pratique les connaissances théoriques acquises
tout au long de mon cursus universitaire tout en enrichissant ces connaissances et cette
formation théorique et pratique acquise durant mes études à la faculté polydisciplinaire de
Taza.
LAMGARRAJ MOHAMED 48
FPT TAZA Plateforme GIFPT 2019/2020
Webographie
https://spring.io/guides/
https://spring.io/projects/spring-boot/
https://hibernate.org/orm/
https://www.baeldung.com/
https://www.tutorialspoint.com/spring_boot/
https://www.luv2code.com/
https://www.jmdoudoux.fr/
https://WWW.youssfi.net/
https://doc-kurento.readthedocs.io/en/6.14.0/
https://webrtc.org/
https://tutsgalaxy.com/
https://www.websocket.org/aboutwebsocket.html
https://restfulapi.net/
LAMGARRAJ MOHAMED 49