Académique Documents
Professionnel Documents
Culture Documents
MGI AA2022 23 IraM MEMOIRE 24 09 2023
MGI AA2022 23 IraM MEMOIRE 24 09 2023
République du Burundi
Ministère de l’Enseignement
Supérieur et de la Recherche Mastère en Génie
Informatique
Scientifique
Année Académique:
Université du Burundi
2021-2023
Faculté des Sciences de l’Ingénieur
Présentée Par
IRAMBONA Méthode
à la
MASTER
en
Génie Informatique
Soutenu le /10/2023, devant le jury composé
de :
Dr. NDAYISABA Longin Président
Dr. MUKESHIMANA Michèle Vice-Président
Dr. NKUNZIMANA Hilaire Secrétaire
Pr. Jérémie NDIKUMAGENGE Directeur
Dr. SAHINGUVU William Membre
Mise en place d’une application web avec mode d’authentification « One Time PasseWord » de
gestion des stagiaires.
DEDICACES
REMERCIEMENTS
IG : Informatique de Gestion
IM : Informatique de Maintenance
IT : Informatique de Télécommunication
JS : Javascript
RESUME
ABSTRACT
The world is very active and continuously evolving, it needs efficient and reliable
means of management, communication and information exchange for its best
evolution. It is in this context that a digital/digital revolution centered/based on the
availability of data and access to information in real time remains relevant. Thus,
the use of the Internet is accentuated in the smooth running of the digital/digital
revolution.
The security of data/information of companies and/or organizations remains a
challenge to be met despite the management and exchange of these on the network.
It is in this perspective that our work will focus on the implementation of a
software tool for managing trainees with the integration of an OTP authentication
mode in order to protect against any usurpation of system data.
Our work will be detailed according to the different phases of implementation of
the new tool, including the conceptualization, development and presentation of the
results obtained with a view to achieving a satisfactory tool.
TABLE DE MATIER
DEDICACES.....................................................................................................i
REMERCIEMENTS.........................................................................................ii
RESUME........................................................................................................vii
ABSTRACT...................................................................................................viii
TABLE DE MATIERE...................................................................................ix
INTRODUCTION GENERALE.......................................................................1
conlusion.........................................................................................................10
ANNEXES......................................................................................................76
INTRODUCTION GENERALE
I.1 Généralité
Les mots de passe à usage unique sont basés sur un algorithme qui crée un
nouveau code aléatoire chaque fois qu'un mot de passe est demandé. Mais
pour bien comprendre le fonctionnement d’OTP, il faut tenir compte de deux
éléments : le générateur OTP et le serveur d'authentification. Nous allons
nous pencher plus en détail sur ces deux composants.
Le générateur OTP fournira à l'utilisateur un mot de passe unique généré sur :
quelque chose que l'utilisateur possède (un jeton d'authentification) ;
Un mot de passe unique basé sur le temps (TOTP), il s'agit d'un mot de passe
OTP dont le facteur de déplacement est basé sur le temps ;Un algorithme de
mot de passe à usage unique basé sur HMAC (HOTP) qui est un algorithme
basé sur les événements OTP où le facteur de déplacement est basé sur les
compteurs plutôt que sur le temps.
En fonction de la solution MFA qui est à l'origine d’OTP, le générateur OTP
peut également inclure un élément connu de l'utilisateur. C'est pourquoi il est
important de vérifier soigneusement si votre solution MFA est basée sur
plusieurs facteurs ou sur un seul.
Le serveur d’authentification : Une fois que le générateur OTP a fourni à
l'utilisateur un mot de passe unique, comme indiqué ci-dessus, le serveur
d'authentification doit vérifier l’OTP. [13]
L’objectif principal est de mettre en place une application web avec mode
d’authentification « One Time Password » de gestion des stagiaires dans le
Centre de Nouvelle Technologie de Cibitoke
I.3. Problématique
Notre étude porte essentiellement sur la gestion des stagiaires dans CNTC. En
effet la gestion des stagiaires consiste à faciliter la recherche des stagiaires, la
traçabilité des stages, l'impression des attestations du stagiaire ainsi que la
définition des profils des stagiaires. Il est donc important pour la CNTC de
mettre sur pied un système compétent pour palier à ce problème, un système
I.9 Methodologies
PHP (HyperText Preprocessor), plus connu sous son sigle PHP, est un
langage de programmation libre, principalement utilisé pour produire des
pages Web dynamiques via un serveur HTTP. PHP est un langage impératif
orienté objet. Il s'agit d'un langage de script interprété côté serveur. Même s'il
peut être utilisé en ligne de commande, PHP est principalement associé à un
serveur Web utilisant le protocole HTTP dans le cadre d'une architecture
client/serveur.
HTML signifie « HyperText Markup Language » qu'on peut traduire par
« langage de balises pour l'hypertexte ». Il est utilisé afin de créer et de
représenter le contenu d'une page web et sa structure.
CSS (Cascading Style Sheets : feuilles de style en cascade) est un langage
informatique qui sert à décrire la présentation des documents HTML et XML.
Les standards définissant CSS sont publiés par le World Wide Web
Consortium (W3C).
JavaScript (souvent abrégé JS) est un langage de programmation de scripts
principalement utilisé dans les pages web interactives
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.
conlusion
Après avoir évoqué les généralités sur la gestion des stagiaires et décrit le
problème dans le cadre de notre étude, nous nous intéresserons dans le
chapitre suivant à l'analyse et à la conception du système de gestion des
stagiaires où nous présentons tout d'abord le langage de modélisation, ensuite
la démarche de développement et enfin la modélisation du système.
II.1.1 Historique
Pour faire face à ces problèmes, il a envisagé de mettre en place un centre qui
permettra à la population de cette localité d’apprendre et accroitre l’utilisation
des nouvelles technologies et qui permettra aussi aux élèves des écoles
techniques de cette province qu’ailleurs, de trouver un milieu adéquat des
Notre projet est bénéfique non seulement pour nous, mais aussi pour la
population locale puisque notre centre constitue un environnement adéquat
pour la manipulation de la machine ordinateur et ainsi, offre des satisfactions
aux divers besoins de la population en rapport avec l’information et la
communication.
Nous rémunérons nos travailleurs.
Le siège social dudit centre se situe entre une pharmacie vétérinaire et le local
de l’ATRABU-Cibitoke.
Par rapport aux quatre points cardinaux et les points stratégiques :
- Au Nord, se trouve le Bar-Guest house HOME SAINT JOSEPH des
Frères BENEYOZEFU de Cibitoke;
- Au Nord-Ouest, se trouve la station KOBIL de Cibitoke ;
- A l’Ouest, se trouve le Quartier social A;
- Au Sud, se trouve la Paroisse Catholique Christ-Roi de Cibitoke ;
- Et en fin, à l’Est, se trouve l’ECOFO Cibitoke.
Les objectifs à atteindre à long terme sont: Arriver à créer les agences du
centre dans les communes de la province Cibitoke ainsi qu’ailleurs ;
Développer un site web de notre centre pour faire connaître plus loin le dit
centre et ainsi accéder à concourir à des marchés nationaux, interrégionaux et
même internationaux surtout en programmation et de diverses formations (cas
des séminaires et ateliers, etc.).
III.1. Introduction
Le cycle de vie d'un logiciel (en anglais software lifecycle), désigne toutes les
étapes du développement d'un logiciel, de sa conception à sa disparition.
L'objectif d'un tel découpage est de permettre de définir des jalons
intermédiaires permettant la validation du développement logiciel, c'est-à-dire
la conformité du logiciel avec les besoins exprimés, et la vérification du
processus de développement, c'est-à-dire l'adéquation des méthodes mises en
œuvre.
L'origine de ce découpage provient du constat que les erreurs ont un coût
d'autant plus élevé qu'elles sont détectées tardivement dans le processus de
réalisation. Le cycle de vie permet de détecter les erreurs au plus tôt et ainsi
de maîtriser la qualité du logiciel, les délais de sa réalisation et les coûts
associés.
Le cycle de vie du logiciel comprend généralement au minimum les étapes
suivantes :
Analyse des besoins et faisabilité signifie l'expression, le recueil et la
formalisation des besoins du demandeur (le client) et de l'ensemble des
contraintes, puis l'estimation de la faisabilité de ces besoins ;
Spécifications ou conception générale c’est une élaboration des
spécifications de l'architecture générale du logiciel ;
Conception détaillée est une étape qui consiste à définir précisément chaque
sous-ensemble du logiciel ;
Codage (Implémentation ou programmation) :c'est la traduction dans un
langage de programmation des fonctionnalités définies lors de phases de
conception ;
Tests unitaires : ils permettent de vérifier individuellement que chaque sous-
ensemble du logiciel est implémenté conformément aux spécifications ;
Intégration : l'objectif est de s'assurer de l'interfaçage des différents éléments
(modules) du logiciel. Elle fait l'objet de tests d'intégration consignés dans un
document ;
Qualification (ou recette) : c'est-à-dire la vérification de la conformité du
logiciel aux spécifications initiales ;
Documentation : elle vise à produire les informations nécessaires pour
l'utilisation du logiciel et pour des développements ultérieurs ;
Les classes sont regroupées pour créer des diagrammes de classe lors de la
modélisation de systèmes de grande taille.
Diagramme de composants : Représente la relation structurelle entre les
éléments d'un système logiciel, le plus souvent utilisé avec des systèmes
complexes disposant de multiples composants. Les composants
communiquent à l'aide d'interfaces.
Diagramme de structure composite : Les diagrammes de structure composite
sont utilisés pour présenter la structure interne d'une classe.
Diagramme de déploiement : Illustre les infrastructures physique et logicielle
d'un système. Ils sont utiles lorsqu'une solution logicielle est déployée sur de
nombreuses machines avec des configurations uniques.
Diagramme d'objets: Montre les relations entre des objets à travers des
exemples tirés du monde réel et permet de voir l'apparence d'un système à
n'importe quel instant donné. Les données sont disponibles à l'intérieur des
objets, elles peuvent donc être utilisées pour clarifier les relations entre des
objets.
Diagramme de paquetages : Il existe deux types de dépendances spéciales
entre les paquetages : l'importation de paquetages et la fusion de paquetages.
Les paquetages peuvent représenter les différents niveaux d'un système pour
en révéler l'architecture. Les dépendances des paquetages peuvent être
marquées pour mettre en avant le mécanisme de communication entre les
différents niveaux. [1][14]
- Un objet est caractérisé par les valeurs de ses propriétés qui lui
confèrent des états significatifs suivant les instants considérés.
- Concept de classe.
- Une classe décrit un groupe d’objets ayant les mêmes propriétés
(attributs), un même comportement (opérations), et une sémantique
commune (domaine de définition).
- Un objet est une instance d’une classe. La classe représente
l’abstraction de ses objets. Au niveau de l’implémentation, c’est-à-dire
au cours de l’exécution d’un programme, l’identificateur d’un objet
correspond une adresse mémoire [10].
Une classe se représente à l’aide d’un rectangle comportant plusieurs
compartiments.
-Les trois compartiments de base sont : La désignation de la classe ; La
description des attributs ; La description des opérations.
-Deux autres compartiments peuvent être aussi indiqués : La description des
responsabilités de la classe ; La description des exceptions traitées par la
classe.
Cependant Il est possible de manipuler les classes en limitant le niveau de
description à un nombre réduit de compartiments selon les objectifs
poursuivis par le modélisateur.
Ainsi les situations suivantes sont possibles pour la manipulation d’une
description restreinte de classe: description uniquement du nom et des
caractéristiques générales de la classe ; description du nom de la classe et de
la liste d’attributs.
La figure suivante montre le formalisme général des comportements d’une
classe:
Nom de la classe
Attributs
Operations
Attributs est une propriété élémentaire d’une classe. Pour chaque objet d’une
classe, l’attribut prend une valeur (sauf cas d’attributs multivalués).
La description complète des attributs d’une classe comporte un certain
nombre de caractéristiques qui doivent respecter le formalisme suivant :
Visibilité/Nom attribut : type [= valeur initiale {propriétés}]
Visibilité : Chaque attribut d’une classe peut être de type public, protégé,
privé ou paquetage ;
Nom d’attribut : nom unique dans sa classe ;
Type: type primitif (entier, chaîne de caractères…) dépendant des types
disponibles dans le langage d’implémentation ou type classe matérialisant un
lien avec une autre classe.
Valeur initiale : valeur facultative donnée à l’initialisation d’un objet de la
classe.
Propriétés : valeurs marquées facultatives (ex. : « interdit » pour mise à jour
interdite).
Opération : Une opération est une fonction applicable aux objets d’une
classe. Une opération permet de décrire le comportement d’un objet. Une
méthode est l’implémentation d’une opération.
-Caractéristiques d’une opération:
Visibilité : Chaque opération d’une classe peut être de type public, protégé,
privé ou paquetage.
Nom d’opération : utiliser un verbe représentant l’action à réaliser.
Paramètres : liste de paramètres (chaque paramètre peut être décrit, en plus de
son nom, par son type et sa valeur par défaut). L’absence de paramètre est
indiquée par ( ).
Type résultat : type de (s) valeur(s) retourné(s) dépendant des types
disponibles dans le langage d’implémentation.
Propriétés : valeurs facultatives applicables (ex. : {query} pour un
comportement sans influence sur l’état du système).
Visibilité des attributs et opérations
Nous avons vu que chaque attribut ou opération d’une classe peut être de type
public, protégé, privé ou paquetage.
Stagiaire
-Idstagr : int
-Nomstgr : String
-Prenomstgr :String
+ Enregistrer() :void
+Modifier() : void
+Supprimer() : void
Elle spécifie le nombre d'instances pouvant être associées (liées) avec une
seule instance source de la relation. Exemple : Une personne peut posséder
plusieurs voitures (entre zéro et un nombre quelconque) ; une voiture est
possédée par une seule personne.
Les associations comportent des cardinalités : Cette notion est identique à
celle contenue dans Merise. Dans UML, on parle de valeurs de multiplicité.
Interprétation : Une revue est disponible dans un ou plusieurs points de vente.
Un point de vente distribue de une à plusieurs revues.
Commentaire: Le nombre de classes participant à l'association définissent
l'arité de l'association. L’exemple précédent montre une association d'arité 2,
Ceci sera le plus fréquent.
Valeurs de multiplicité :
Tableau 1: valeurs de multiplicité
1..1 Un et un seul
1 Un et un seul
0..1 Zéro ou un
m..n De m à n
* De zéro à plusieurs
1..* De un à plusieurs
Relation de spécialisation/généralisation
Relation d'héritage, dans laquelle les objets de l'élément spécialisé (classe
enfant) peuvent remplacer les objets de l'élément général (classe parent).
Notation UML : Un trait plein, orienté de la classe spécialisée (enfant) vers
son modèle (parent) et se terminant par une flèche fermée.
utilisateur Encadreur
Acteurs
secondaires
Scénario d'erreur
ajouté.
Nom Authentification
Acteurs
secondaires
Acteurs
secondaires
Scénario alternatif
Scénario d'erreur
Acteurs
secondaire
s
Scénario
d'erreur
Acteurs
secondaires
Scénario
d'erreur
IV.1 Définition
IV.2 Introduction
Les opérateurs unaires (Sélection, Projection) :ce sont les opérateurs les plus
simples, ils permettent de produire une nouvelle table à partir d'une autre
table.
Les opérateurs binaires ensemblistes (Union, Intersection Différence) :ces
opérateurs permettent de produire une nouvelle relation à partir de deux
relations de même degré et de même domaine.
Les opérateurs binaires ou n-aires (Produit cartésien, Jointure, Division). Ils
permettent de produire une nouvelle table à partir de deux ou plusieurs autres
tables.
OPERATEUR
S SYNTAXE EN SQL
1. Sélection ou Restriction
La restriction est une opération unaire (c'est à dire portant sur une seule
relation). La restriction de R1, étant donnée une condition C, produit une
relation R2 de même schéma que R1 et dont les tuples sont les tuples de R1
vérifiant la condition C : R = Restriction (R1, condition)
Elle est notée : σpredicat (R)
2. Projection
La projection est une opération unaire (c'est à dire portant sur une seule
relation). La projection de R1 sur une partie de ses attributs {A1, A2, ...}
produit une relation R2 dont le schéma est restreint aux attributs mentionnés
en opérande, comportant les mêmes tuples que R1, et dont les doublons sont
éliminés.
R = Projection (R1, a1, a2, ...)
Elle est notée : πa 1, a 2 … , akπ ( R)
3. Union
4. Différence
5. Produit cartésien
Le produit cartésien est une opération binaire (c'est à dire portant sur deux
relations). Le produit de R1 par R2 (équivalent au produit de R2 par R1)
produit une relation R3 ayant pour schéma la juxtaposition de ceux des
relations R1 et R2 et pour tuples l'ensemble des combinaisons possibles entre
les tuples de R1 et ceux de R2.
R = Produit (R1, R2)
Elle se note : R 1× R 2
6. Renommage
Le renommage est une opération qui permet de redéfinir les noms des
attributs d'une relation R
Syntaxe :
R = Renommage (R1, a1, a2, ...)
Elle est notée : ∝[nomattr 1 : nouveaunom pour attr 1 , …]R
7. Intersection
L'intersection de deux relations R1 et R2 de même schéma produit une
relation R3 de même schéma constituée de l'ensemble des tuples appartenant
à la fois à R1 et à R2. Notons que l'intersection n'est pas une opération de
base, car elle est équivalente à deux opérations de différence successives.
R = Intersection (R1, R2)
Elle se note : R∩S
8. Jointure
La jointure est une opération binaire (c'est à dire portant sur deux relations).
La jointure de R1 et R2, étant donné une condition C portant sur des attributs
de R1 et de R2, de même domaine, produit une relation R3 ayant pour
schéma la juxtaposition de ceux des relations R1 et R2 et pour tuples
l'ensemble de ceux obtenus par concaténation des tuples de R1 et de R2, et
qui vérifient la condition C.
R = Jointure (R1, R2, condition) ;
Elle est notee : R ⋈ S∨θ
R=R 1 ⋈ ( condition ) R 2
11. Division
La division est une opération binaire (c'est à dire portant sur deux relations).
La division de RD par Rd a pour résultat RQ tel que RQ comporte le plus
grand ensemble possible de tuples qui concaténés à ceux de Rd donnent
toujours un tuple de RD.
Fondamental :
RQ=RD ÷ RD Si et seulement si :
Rd × RQ ⊆dans RD
Le but pour cette partie était de choisir une forme très simpliste de la requête
SQL en l’analysant sous l’angle algèbre relationnelle.
Nous pouvons présenter d’autres requêtes SQL avec leurs expressions
équivalentes en algèbre relationnel de la manière suivante :
– Sélection
1. affichage de tous les stagiaires qui ont une note inferieur à 80%
SELECT * FROM `tbl_affectation` WHERE cotation <80;
σ cotation <80 (tblaffectation )
– Projection
– Union
Exemple : Affichage les services qui ont les memes nons ques les
département :
SQL:SELECT DISTINCT nomservice FROM tbl_service WHERE
nomservice IN (SELECT nomdepartement FROM tbl_departement
π nomservice ¿
Différence
Si les deux tables n'ont pas la même structure, vous pouvez utiliser l'opérateur
EXCEPT. L'opérateur EXCEPT fonctionne de la même manière que
l'opérateur MINUS, mais il prend en charge les tables qui n'ont pas la même
structure.
Exemple : Affichage du nom, prénom, grade des utilisateurs dont le niveau
n’est pas bachelier
SELECT nom, prenom, telephone, nomgrade FROM
tbl_inscription,tbl_grade EXCEPT WHERE nomgrade = 'bachelier';
Ou, SELECT nom, prenom, telephone, nomgrade FROM
– Renommage
– Division
Pour optimiser les requêtes SQL, on peut suivre certaines bonnes pratiques et
utiliser des techniques spécifiques pour améliorer les performances de vos
requêtes. Voici quelques conseils d'optimisation et des exemples : [5]
1. Utiliser des index :
Utilisez des index : Les index permettent d'accélérer les requêtes en
fournissant un accès plus rapide aux données.
Les index accélèrent les recherches dans une table en créant une copie triée
des données, permettant ainsi d'accéder rapidement aux enregistrements. Il est
essentiel d'indexer les colonnes utilisées fréquemment dans les clauses
WHERE, JOIN et ORDER BY. [6][20]
Exemple :
Utilisez la INDEX()fonction pour créer un index sur les colonnes nom
et prénom
CREATE INDEX idx_nom_prenom ON tbl_inscription (nom, prénom);
2. Éviter les étoiles (*) dans la clause SELECT : Spécifiez explicitement
les colonnes dont vous avez besoin pour éviter de récupérer des données
inutiles.
Exemple :
Sql optimisé
Exemple : affichage des services qui ont les mêmes noms que les
départements
Sql optimisé
Sql optimisé
Requête optimisée :
IV.5.2 Optimisation OR
Requête optimisée :
Les prédicats servent très souvent à spécifier quelles lignes sont incluses dans
une sélection de données, via une clause Where dans une instruction SQL
Select, Update, ou Delete.
Les prédicats sont utilisés dans la condition de recherche des clauses WHERE
et HAVING, dans les conditions de jointure des clauses FROM ainsi que dans
d'autres constructions où une valeur booléenne est nécessaire.
L'optimiseur réorganise l'évaluation des prédicats dans une clause WHERE
selon le coût d'exécution qui leur est affecté. Si le premier prédicat d'une
optimisation OR est défini sur TRUE, les prédicats suivants n'ont pas besoin
d'être définis. De même, dans une optimisation AND, si le premier prédicat
est défini sur FALSE, les prédicats suivants n'ont pas besoin d'être définis. [5]
Le coût d'exécution affecté dans l'ordre croissant est le suivant :
1. True/False
2. Comparaison d'entier
3. Comparaison de chaîne
4. Entier ANY/ALL/IN
5. Chaîne ANY/ALL/IN
6. Sous-requête : il s'agit d'une instruction SELECT imbriquée
Exemple d’optimisation AND (a AND b AND c)
Requette reorganisee
Exemple d’optimisation OR (a OR b OR c)
Redgate SQL Monitor est un outil d’optimisation des requêtes qui propose
des alertes personnalisables, des rapports personnalisés et un tableau de bord
pour surveiller les performances SQL.
Idera DB Optimizer est un optimiseur de base de données compatible avec
SQL Server, Oracle, DB2 et Sybase, et il est excellent pour les entreprises de
taille moyenne.
Microsoft SMSS est un outil de base de données relationnelle gratuit pour
Microsoft SQL Server.
AppOptics APM est un outil de surveillance des performances basé sur le
cloud qui propose des utilitaires d’optimisation de base de données.
AppOptics APM se concentre sur les systèmes de gestion de bases de
données MySQL, Microsoft SQL Server, Oracle, Postgres et Apache.
Conclusion
Toutes les fonctionnalités du système se traduisent par une sorte des requêtes
à construire. Dans ce chapitre nous avons présenté les opérateurs de l’algèbre
relationnelle et montrer son importance dans la construction des requêtes
SQL.
Le code SQL est traduit dans le code relationnel avec son exécution dans ces
environnements. La plupart des solutions que nous préconisons dans ce
présent travail consiste à l’élaboration des requêtes SQL. C’est pourquoi, il
nous a été utile de les construire en utilisant l’algèbre relationnelle. Ainsi,
Nous avions présenté dans ce chapitre les opérateurs de l’algèbre
relationnelle, l’optimisation des requêtes SQL et enfin la manière dont
nous avions réalisé nos propres requêtes en vue de minimiser le temps
d’exécution et d’obtenir les résultats dans un moment réduit.
L’application que nous avons mis en place a pour objectif de gérer les
demandes des stages en linge et le suivi des stagiaires dans le centre
technique de Cibitoke; elle permet aussi d’approuver ou de refuser les
demande si c’est le cas du profil non demande ,et d’attribuer l’encadreur aux
stagiaires selon les services auxquels sont affectés .
Cette interface permet à l’utilisateur de saisir son adresse mail et mot de passe
correspondant à celui qui se trouve dans la base de données pour qu’il puisse
recevoir l’OTP générer aléatoirement par le système.
Cette interface permet à l’utilisateur d’entrer le code envoyer sur son mail
pour accéder à la page d’accueil
La liste de présence des stagiaire montre les heures que le stagiaires ont
travaillés dès l’heure d’arrivée jusqu’ à l’heure de départ.
Cette liste contienne des stagiaires qui ont terminés leur période de stage
Figure 30: Liste des stagiaires qui ont terminés le stage (archivés)
Conclusion générale
Au terme de notre travail, nous avons apporté une solution informatique aux
problèmes de gestion des stagiaires au sein du CNTC.
Nous avons mis en place une application fiable et apte à atteindre les objectifs
fixés .L'application va permettre de réaliser les tâches suivantes : Assurer une
authentification avec mode OTP ;Attribuer les droits d’accès aux données à
chaque utilisateur du système ;Sécuriser les donnes contre les accès non
autorisé ;Réduire la multiplication des supports papier ;Automatiser
l’acquisition des demandes des stages ;la recherche automatique des
informations ; l’attribution en ligne des stages ; générer et l’envoyer des
attestations à l’encadreur et aux stagiaires ; stocker des données ;Archiver
électroniquement des données relatives aux stagiaires. De ce fait nous
pouvons dire que les objectifs de notre projet ont été atteints.
Recommandations
[17]https://www.techno-science.net/definition/2880.html,consulte
le31/08/2023
[18] MOHAMAD.NEMICHE,Algèbre Relationnelle, Faculté
Polydisciplinaire de Ouarzazate Filière: Informatique et Gestion d’Entreprises
2012-2013, consulte le 03/09/2023
[19] Elisabetta De Maria, Cours de Base de Données ´ Cours n.3 Algèbre
relationnelle ` L2 Informatique - Portail Sciences et Technologies, DS4H et
Laboratoire I3S, Université Côte d’Azur, CNRS 2022-2023, consulte le
03/09/2023
[20] Jeffreya nd Jennifer Widom, A First Course_in_Database_Systems_3ed_
ANNEXES