Business">
Une Pepite-2
Une Pepite-2
Une Pepite-2
Thème
Réalisé par
Nous remercions également nos familles et amis pour leur soutien permanent qui
nous a été bien utile.
Nous remercions tout particulièrement Monsieur BELAID Yacine pour nous avoir
consacré de son temps, afin de nous aider dans la réalisation de la pointeuse biomé-
trique.
Dans l’impossibilité de citer tous les noms, que tous ceux qui ont contribué de
près ou de loin à la réalisation de ce travail trouvent ici l’expression de notre sincère
gratitude.
Table des matières
Introduction générale 1
1 Contexte du projet et méthodologie de conception 3
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Contexte du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Les applications Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 Quelle est la différence entre les applications Web et les applications natives ? 4
1.4.3 Pourquoi une application Web ? . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Empreinte digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5.1 Caractéristique d’une empreinte digitale . . . . . . . . . . . . . . . . . . . . 6
1.5.2 Pourquoi l’empreinte digitale ? . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Processus de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.1 Processus unifié (UP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.2 Les méthodes agiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6.3 Le processus choisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
i
2.5.3 Diagramme de cas d’utilisation du responsable . . . . . . . . . . . . . . . . . 16
2.5.4 Diagramme de cas d’utilisation de l’administrateur . . . . . . . . . . . . . . 17
2.6 Descriptions des cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.7 Diagrammes de séquence système DSS . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.7.1 Cas d’utilisation « Se pointer » . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.7.2 Cas d’utilisation « Consulter mon profil » . . . . . . . . . . . . . . . . . . . 25
2.7.3 Cas d’utilisation « Consulter ma fiche de pointage » . . . . . . . . . . . . . . 26
2.7.4 Cas d’utilisation « Consulter tableau de bord manager » . . . . . . . . . . . 26
2.7.5 Cas d’utilisation « Ajouter membre » . . . . . . . . . . . . . . . . . . . . . . 27
2.7.6 Cas d’utilisation « Ajouter planning » . . . . . . . . . . . . . . . . . . . . . 28
2.7.7 Cas d’utilisation « Ajouter équipe » . . . . . . . . . . . . . . . . . . . . . . . 28
2.7.8 Cas d’utilisation « Ajouter employé » . . . . . . . . . . . . . . . . . . . . . . 29
2.7.9 Cas d’utilisation « Consulter le profil d’un employé » . . . . . . . . . . . . . 30
2.8 Les maquettes IHM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.8.1 Employé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.8.2 Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.8.3 Responsable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.8.4 La navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3 Conception 37
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Modèle de domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3 Diagrammes de classes participantes . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.1 Définitions et formalisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4 Diagrammes de séquence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 Diagramme de classes conception préliminaire . . . . . . . . . . . . . . . . . . . . . 63
3.6 Diagramme de classes de conception . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.7 Modèle relationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4 Réalisations de la pointeuse 70
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.1.1 Logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2 ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2.1 Caractéristiques techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3 Capteur d’empreinte DY 50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.3.1 Principe de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.3.2 Caractéristiques techniques du capteur optique . . . . . . . . . . . . . . . . . 74
4.4 Schémas et branchement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.5 Prototype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.6 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.6.1 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.6.2 Code et fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
ii
5 Implémentations, mise en service et test 86
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2 Environnement de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2.1 Plateformes utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2.2 Logiciels utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2.3 Technologie utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.4 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.5 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.6 Sass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.7 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.2.8 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.2.9 Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3 Persistance des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.1 MySql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.2 ORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.4 Les librairies utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4.1 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4.2 JQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4.3 Crispy forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4.4 Pillow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4.5 Django import/export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4.6 Popper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4.7 Font Awesome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.4.8 Chart.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.5 Architecture du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.6 Présentation de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.6.1 Nom et logo de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.6.2 Palette de couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.6.3 Typographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.6.4 Squelette de l’application web . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.7 Présentation des interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.7.1 Espace employé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.7.2 Espace manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.7.3 Espace responsable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.7.4 Espace administrateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.8 Sécurité de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.8.1 Protection contre Cross Site Scripting . . . . . . . . . . . . . . . . . . . . . . 105
5.8.2 Protection contre Cross site request forgery . . . . . . . . . . . . . . . . . . 105
5.8.3 Protection contre SQL injection . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.8.4 Protection contre le Clickjacking . . . . . . . . . . . . . . . . . . . . . . . . 105
5.9 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
iii
Conclusion générale et perspectives 107
Bibliographie 109
Annexe A 112
Annexe B 131
iv
Table des figures
v
3.16 Diagrammes de classes participantes « Consulter tableau de bord manager » . . . . 49
3.17 Diagrammes de classes participantes « Ajouter planning » . . . . . . . . . . . . . . 50
3.18 Diagrammes de classes participantes « Ajouter équipe » . . . . . . . . . . . . . . . . 51
3.19 Diagrammes de classes participantes « Ajouter membre » . . . . . . . . . . . . . . . 52
3.20 Diagrammes de classes participantes « Ajouter employé » . . . . . . . . . . . . . . . 53
3.21 Diagrammes de classes participantes « Consulter profil employé » . . . . . . . . . . 53
3.22 Formalisme du diagramme de séquence . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.23 Diagramme d’interaction « Se pointer » . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.24 Diagramme d’interaction « Consulter mon profil » . . . . . . . . . . . . . . . . . . . 56
3.25 Diagramme d’interaction « Consulter ma fiche de pointage » . . . . . . . . . . . . . 57
3.26 Diagramme d’interaction « Consulter tableau de bord manager » . . . . . . . . . . 58
3.27 Diagramme d’interaction « Ajouter équipe » . . . . . . . . . . . . . . . . . . . . . . 59
3.28 Diagramme d’interaction « Ajouter planning » . . . . . . . . . . . . . . . . . . . . . 60
3.29 Diagramme d’interaction « Ajouter membre » . . . . . . . . . . . . . . . . . . . . . 61
3.30 Diagramme d’interaction « Ajouter employé » . . . . . . . . . . . . . . . . . . . . . 62
3.31 Diagramme d’interaction « Consulter profil d’un employé » . . . . . . . . . . . . . . 63
3.32 Diagramme de classes conception préliminaire « Consulter ma fiche de pointage » . 64
3.33 Diagramme de classes conception préliminaire « Ajouter une équipe » . . . . . . . . 65
3.34 Diagramme de classes conception préliminaire « Ajouter un planning» . . . . . . . . 65
3.35 Diagramme de classes conception préliminaire « Ajouter un employé» . . . . . . . . 66
3.36 Diagramme de classes conception préliminaire « Consulter profil d’un employé» . . 66
3.37 Diagramme de classes de conception . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.38 Le père du modèle relationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
vi
5.11 Interface ma fiche de pointage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.12 Interface consulter mon profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.13 User flow du manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.14 Interface dashbord manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.15 Interface résumé d’une équipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.16 User flow du responsable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.17 interface créer un planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.18 Interface affecter un employé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.19 User flow de l’administrateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.20 Diagramme de séquence système « Consulter résumé de pointage des collaborateur »131
5.21 Diagramme de séquence système « Consulter la liste des collaborateurs » . . . . . . 132
5.22 Diagramme de séquence système « Consulter mes équipes » . . . . . . . . . . . . . 132
5.23 Diagramme de séquence système « Consulter mon profil » . . . . . . . . . . . . . . 133
5.24 Diagramme de séquence système « Modifier mon profil » . . . . . . . . . . . . . . . 134
5.25 Diagramme de séquence système « Affectation d’un planning » . . . . . . . . . . . . 135
5.26 Diagramme de séquence système « Consulter liste des équipes » . . . . . . . . . . . 136
5.27 Diagramme de séquence système « Ajouter empreinte » . . . . . . . . . . . . . . . . 137
5.28 Diagramme de séquence système « Supprimer empreinte » . . . . . . . . . . . . . . 138
vii
Liste des tableaux
viii
5.23 Description du cas d’utilisation « Supprimer équipe » . . . . . . . . . . . . . . . . . 125
5.24 Description du cas d’utilisation « Supprimer membre » . . . . . . . . . . . . . . . . 125
5.25 Description du cas d’utilisation « Consulter liste des plannings » . . . . . . . . . . . 126
5.26 Description du cas d’utilisation « Consulter mon planning » . . . . . . . . . . . . . 126
5.27 Description du cas d’utilisation « Consulter planning d’un collaborateur » . . . . . 127
5.28 Description du cas d’utilisation « Consulter planning d’un employé » . . . . . . . . 127
5.29 Description du cas d’utilisation « Modifier un planning » . . . . . . . . . . . . . . . 128
5.30 Description du cas d’utilisation « Supprimer un planning» . . . . . . . . . . . . . . 129
5.31 Description du cas d’utilisation « Affectation d’un planning » . . . . . . . . . . . . 129
5.32 Description du cas d’utilisation « Consulter le journal des affectations » . . . . . . . 130
5.33 Description du cas d’utilisation « Importer/Exporter » . . . . . . . . . . . . . . . . 130
ix
Liste des abréviations
3D 3 Dimensions
API Application Programming Interface
AES Advanced Encryption Standard
CAN Controller Area Network
CRUD Create, Read, Update, Delete
CSRF Cross Site Request Forgery
CSS Cascading Style Sheets
CPU Central Processing Unit
DCC Diagramme de Classe Conception
DCP Diagramme de Classe Participante
DSS Diagramme de Séquence Système
HTML HyperText Markup Language
IDE Integrated Development Environment
IEEE Institute of Electrical and Electronics Engineers
IHM Interface Homme-Machine
LED Light-Emitting Diode
MAC Media Access Control
MDD Modèle Du Domaine
MVT Model View Template
NTIC Nouvelles Technologies de l’Information et de la Communication
ORM Object Relational Mapping
PWM Pulse Width Modulation
PDG Président-Directeur Général
PME Petites et Moyennes Entreprise
SASS Syntactically Awesome StyleSheets
SHA Secure Hash Algorithm
x
Liste des abréviations
xi
Introduction générale
Une entreprise est une organisation qui rassemble des moyens matériels ainsi que des personnes
qui mobilisent leurs talents et leurs énergies afin de fournir un service ou un produit à ses clients.
Avec l’avènement des Nouvelles Technologies de l’information et de la Communication (NTIC), de
plus en plus d’entreprises font appel aux nouvelles technologies pour rester dans l’air du temps et
faire face à la concurrence.
En effet avec leurs anciennes méthodes de gestion, les entreprises sont dans l’obligation de
déployer des moyens humains et financiers pour faire face à des taches répétitives, mais nécessaires.
Dans cette optique, ce projet a pour but d’offrir un système de gestion de pointage qui sera
composé d’une application Web disposant de fonctionnalités très étendues destinées à différents
types d’employés, et d’une pointeuse biométrique afin d’automatiser l’une des tâches centrales de
toute entreprise, et ce en gardant l’heure de pointage.
Le premier chapitre introduit le contexte du projet et sa problématique, ainsi que les concepts
clés tels que les applications Web et les empreintes digitales. Par la suite, nous définirons la
méthodologie avec laquelle nous avons organisé notre projet de façon rationalisée et structurée
pour nous aider à accomplir chaque étape du projet, de la planification à la mise en œuvre de
façon efficace.
Le deuxième chapitre qui s’intitule spécification et analyse des besoins, permettra d’identifier
les différents acteurs et leurs cas d’utilisation respectifs afin de modéliser leurs diagrammes et de
les décrire de façon détaillée ainsi qu’exprimer les exigences fonctionnelles et non fonctionnelles.
Nous modéliserons, ensuite, les diagrammes de séquence système pour enfin réaliser le prototype
de l’application Web.
Le troisième chapitre a pour but de détailler la phase de conception de notre système. Nous
élaborerons d’abord les modèles du domaine, puis les diagrammes de classes participantes afin de
détailler les diagrammes de séquence système réalisés dans le chapitre précèdent. Ensuite, nous
passerons aux diagrammes de classes de conception préliminaire qui nous permettront de réaliser
le diagramme de classe de conception. Pour enfin implémenter notre base de données à l’aide du
modèle relationnel.
Dans le quatrième chapitre, nous aborderons l’aspect matériel et logiciel qui nous permettra
de réaliser la pointeuse biométrique, puis nous présenterons le prototype et le fonctionnement de
cette dernière.
Introduction générale
Quant au dernier chapitre, il expose l’environnement de travail qui est composé des plateformes,
logiciels, et technologies utilisés pour la réalisation de l’application Web. Nous clôturerons ce
chapitre par la présentation de cette dernière.
Enfin, nous conclurons ce travail en résumant les connaissances acquises durant la réalisation
de ce projet et nous dégagerons quelques perspectives.
2
Chapitre 1
1.1 Introduction
Dans ce premier chapitre, nous exposerons le contexte du projet et la problématique à résoudre.
Ensuite, nous aborderons quelques définitions sur les applications Web et les empreintes digitales.
Enfin nous définirons le processus de développement entrepris afin de faciliter l’élaboration du
projet.
3
Contexte du projet et Méthodologie de conception
ces tâches, nous avons choisi de traiter la gestion de pointage des employés ainsi que leurs temps
de travail.
1.3 Problématique
Le contexte du projet étant établi, dans cette section nous allons décrire la problématique de
notre projet afin de poser les conditions-cadres ainsi que les attentes de ce dernier.
Afin de répondre aux besoins des différentes PME et offrir une solution adapter à ces dernières,
nous avons pour but de concevoir et de réaliser une application Web qui permet une gestion précise
du pointage des employés et de leurs temps de travail, grâce à une pointeuse biométrique que nous
allons réaliser et qui sera capable d’identifier de manière unique un individu déjà enregistré et de
communiquer avec l’application Web.
Nous espérons une fois ce projet à terme, inciter les entreprises à abandonner leurs anciennes
méthodes de pointage et de gestion des plannings pour gagner en efficacité et réduire les ressources
allouées à ces tâches. Cela en offrant, un outil de supervision simple et ergonomique et en collectant
les informations qui sont primordiales pour faciliter l’utilisation aux responsables, ainsi qu’un
espace individuel dédié à chaque employé dans le but d’avoir son planning et ses informations de
pointage de manière transparente.
1.4.2 Quelle est la différence entre les applications Web et les applica-
tions natives ?
Une application Web fonctionne généralement comme une application native installée sur votre
machine à la différence que celle-ci s’exécute directement sur le navigateur Web, ce qui lui permet
d’être disponible partout avec des données synchronisées, le tableau 1.1 présente une comparaison
entre les deux types d’application [1] :
4
Contexte du projet et Méthodologie de conception
• Accessibilité optimisée : Les applications Web n’ont pas besoin d’être installées, cela
permet un accès universel depuis n’importe quel type de poste.
• Développement rentable : Il n’est pas nécessaire de programmer et de tester sur toutes les
versions et configurations des systèmes d’exploitation possibles, cela rend le développement
moins coûteux et réduit les délais.
• Installation et maintenance simplifiées : Avec l’approche basée sur le Web, l’installation
et la maintenance deviennent également moins compliquées. Une fois qu’une nouvelle version
ou mise à niveau est installée sur le serveur, elle sera accessible sur n’importe quel type de
poste.
• Technologies de base flexibles : Chacune des technologies de base peut être utilisée pour
créer des applications Web, en fonction des exigences de l’application.
5
Contexte du projet et Méthodologie de conception
6
Contexte du projet et Méthodologie de conception
7
Contexte du projet et Méthodologie de conception
client tout au long du projet. Les premières releases du logiciel vont souvent provoquer des
demandes d’évolution.
Les besoins sont modélisés en cas d’utilisation UML pour être représentés de façon plus concrète
par des maquettes IHM, dans le but de les présenter aux futurs utilisateurs. Puis nous allons
produire des digrammes de séquence système pour décrire le système comme une boite noire tout
en représentant graphiquement la chronologie des interactions entre les acteurs et le système dans
le cadre d’un scénario nominal. Grâce aux diagrammes de cas d’utilisation ainsi qu’aux maquettes,
on pourra modéliser les diagrammes de classes participantes qui décriront les cas d’utilisation, en
ayant recours aux trois principales classes d’analyse : les classes dialogues, contrôles, entités ainsi
que leurs relations.
À la suite de cela, nous modéliserons les différents diagrammes d’interactions où chaque cas
d’utilisation est décrit en détail dans le but de mettre en évidence l’allocation de responsabilités
de chaque objet intervenant dans le cas d’utilisations traité dans les différents scénarios possibles
(nominale/erreur). Enfin, nous pourrons définir les diagrammes de classes de conception qui re-
présentent la structure statique du code par le biais des attributs et des relations entre classes,
ainsi que des opérations décrivant la responsabilité dynamique des classes logicielle. La figure 1.1
suivante résume la totalité des diagrammes à modéliser dans le processus choisi.
8
Contexte du projet et Méthodologie de conception
1.7 Conclusion
Ce premier chapitre nous a permis de présenter le cadre général du projet, à savoir le contexte
et la problématique en élaborant une solution à cette dernière. Nous avons aussi brièvement défini
les applications Web et les empreintes digitales. Nous avons conclu par la description du processus
de développement à suivre tout au long du projet.
9
Chapitre 2
2.1 Introduction
Ce chapitre sera consacré à la phase de spécification et d’analyse des besoins. Dans cette étape,
nous allons tout d’abord identifier les différents acteurs du système, ainsi que leurs actions qui
seront représentées en cas d’utilisation, puis nous allons décrire les spécifications des exigences
fonctionnelles et non fonctionnelles, ainsi que leurs contraintes. Ceci nous permettra de modéliser
les diagrammes de cas d’utilisation.
10
Spécification et analyse des besoins
11
Spécification et analyse des besoins
30 Importer/exporter
31 Ajouter une empreinte
32 Supprimer une empreinte
Responsable/Administrateur
Ajouter un employé
33 Gérer les employés Modifier un employé
Supprimer un employé
34 S’authentifier Administrateur
• Employé : Accès à son profil ainsi qu’aux informations de pointage et au planning qui le
concerne, ainsi qu’aux informations publiques et aux statuts de présence des collaborateurs
faisant partie de la même équipe que lui.
• Manager : En plus des informations accessibles à l’employé, le manager doit avoir accès aux
informations des équipes dont il est responsable ainsi qu’aux informations des membres qui
les composent, aux plannings et aux informations de pointage y compris.
• Responsable : Celui-ci doit avoir accès à la totalité des informations du système concernant
tous les employés, quels que soient leurs statuts. Il doit être capable d’ajouter, modifier,
supprimer des équipes ou des plannings, affecter un manager à une équipe, un planning à un
employé, ajouter ou supprimer un employé à une équipe. Importer/exporter des informations
de pointage est une fonctionnalité primordiale que doit avoir ce rôle.
• Administrateur : La personne responsable de maintenir le système et de veiller à son bon
fonctionnement a naturellement accès à l’espace d’administration du système à partir duquel
elle pourra gérer les comptes des différents utilisateurs et leur assigner le bon rôle. En cas
d’incohérences ou d’erreurs, ce dernier devrait avoir la possibilité d’intervenir de manière
directe sur la base de données afin de résoudre ces cas. Ce dernier doit pouvoir aussi gérer
les empreintes (ajout et suppression).
12
Spécification et analyse des besoins
En plus des besoins précédemment cités, il existe des besoins partagés entre tous les acteurs
tels que :
• Performance : l’application doit assurer un temps de réponse minime, tout en répondant aux
exigences de l’utilisateur.
• Sécurité : aucune opération ne doit être possible sans authentification préalable. Une protec-
tion contre CSRF est impérative. Les informations doivent être accessibles aux utilisateurs
possédant les bons droits d’accès seulement. Les mots de passe doivent être hashés puis sto-
ckés et jamais stockés en clair. Le système doit identifier la pointeuse afin d’accepter les
informations reçues.
• Ergonomie : les informations doivent être lisibles et facilement interprétables. Des graphiques
résumant les informations pertinentes doivent être présentés à l’utilisateur. Une navigation
simple et efficace. L’utilisation d’icônes explicites permettant de comprendre le sens des
actions que l’utilisateur s’apprête à effectuer. Les actions critiques doivent toujours être
confirmées avant leurs exécutions. Le système ne doit pas nécessiter une formation longue
durée pour être utilisé, il doit offrir une prise en main rapide et facile sans beaucoup d’efforts.
• Modularité du code : compte tenu du contexte et de la problématique traitée. On se doit de
penser à l’évolution potentielle du système. Dans cette optique, il est primordial d’écrire un
code lisible, modulaire et bien documenté pour faciliter la maintenance, la personnalisation,
et l’évolutivité de la solution proposée.
13
Spécification et analyse des besoins
14
Spécification et analyse des besoins
15
Spécification et analyse des besoins
16
Spécification et analyse des besoins
17
Spécification et analyse des besoins
Bien qu’éxecutés par des acteurs différents, les objectifs de certains cas d’utilisation sont iden-
tiques. Ceci peut être illustré par les cas d’utillisation « Consulter mon profil », « Consulter profil
d’un collaborateur » et « Consulter Profil d’un employé »
Le premier cas concerne un employé qui consulte son propre profil en ayant la possibilité de
modifier certaines informations. Le deuxième cas est déclenché par le manager pour consulter le
profil d’un collaborateur sans pouvoir le modifier. Le troisième est utilisé par un administrateur
pour consulter le profil d’un employé (quel que soit son rôle) avec la possibilité de modifier toutes
les informations.
Sommaire d’identification
Titre S’authentifier
Acteur Employé, Manager, Responsable, Administrateur
Résumé L’acteur doit s’identifier en saisissant son nom d’utilisateur et mot
de passe pour accéder à son espace personnel.
Description des scénarios
Pré-conditions L’utilisateur doit être créé par l’administrateur.
Scénario nominal 1. Le système affiche le formulaire d’authentification.
2. L’acteur saisit le nom d’utilisateur ainsi que son mot de passe.
3. Le système vérifie si les identifiants saisis sont corrects.
4. Le système affiche le tableau de bord (voir le cas d’utilisations «
Consulter mon tableau de bord »)
Enchaînement alter- 2a. Les identifiants saisis par l’acteur sont incorrects.
natif 1. Le système affiche un message d’erreur pour signaler que les
identifiants sont incorrects.
2. Le cas d’utilisation reprend de l’étape 1 du scénario nominale.
Postconditions L’utilisateur est authentfié et accède aux fonctionnalités qui lui sont
dédiées.
18
Spécification et analyse des besoins
Sommaire d’identification
Titre Se pointer
Acteur Employé, Manager, Responsable, Pointeuse
Résumé Un acteur signale son entrée ou sa sortie de l’entreprise en posant
son index sur la pointeuse.
Description des scénarios
Pré-conditions Être enregistré dans le système (empreinte et profil)
Scénario nominal 1. L’acteur pose son index sur le lecteur d’empreinte.
2. La pointeuse reconnait l’acteur et envoie un signal au système.
3. Le système accuse la réception du signal.
4. La pointeuse reçoit un accusé de réception et fait clignoter une
LED, pour signaler le bon déroulement de l’opération de poin-
tage.
Enchaînement alter- 2a La pointeuse ne reconnait pas l’acteur.
natif 1. La LED de la pointeuse ne clignotera pas.
2. Le cas d’utilisation reprend de l’étape 1 du scénario nominale.
Sommaire d’identification
Titre Consulter mon profil
Acteur Employé, Manager, Responsable
Résumé L’acteur accède aux informations qui constitue son profil.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. Les différentes informations du profil sont affichées.
Enchaînement alter- 1a. L’employé peut modifier ses informations (voir le cas d’utilisa-
natif tions « modifier mon profil »)
Postconditions
19
Spécification et analyse des besoins
Sommaire d’identification
Titre Consulter ma fiche de pointage
Acteur Employé, Manager, Responsable
Résumé L’acteur accède aux informations relatives à son pointage (Heures
d’arrivée et de sortie)
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. Le système affiche les informations de pointage de l’acteur
concerné pour une semaine.
Sommaire d’identification
Titre Consulter tableau de bord manager
Acteur Manager
Résumé Le manager consulte son tableau de bord, qui est constitué de deux
parties. La première représente le tableau de bord du manager en
tant qu’employé tandis que la deuxième est un récapitulatif des
informations de pointage de son/ses équipes et de tous ses collabo-
rateurs.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le système affiche un résumé des informations de pointage
concernant le manager et son planning du jour.
Enchaînement alter- 1a. Le manager décide de consulter la deuxième partie de son ta-
natif bleau de bord.
1. Le système affiche la partie qui concerne ses équipes ainsi que
les collaborateurs encadrés par le manager en question.
Postconditions
20
Spécification et analyse des besoins
Sommaire d’identification
Titre Ajouter membre
Acteur Responsable, Administrateur
Résumé L’acteur accède à une interface qui lui permet d’affecter des em-
ployés à l’équipe.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. L’acteur recherche un employé (voir le cas d’utilisations
Recherche employé ).
2. Le système retourne une liste d’employés.
3. L’acteur sélectionne un employé et l’ajoute.
4. Le système affiche l’interface d’affectation avec les données mise
à jour.
Sommaire d’identification
Titre Ajouter planning
Acteur Responsable, Administrateur
Résumé L’acteur accède à une interface qui lui permet la création d’un nou-
veau planning.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. Le système affiche le formulaire.
2. L’acteur saisit le nom du planning ainsi que la description et les
horaires de travail.
3. Le système vérifie la conformité des informations saisies.
4. Le système affiche la liste des plannings (voir cas d’utilisations
Consulter liste des plannings.)
21
Spécification et analyse des besoins
Postconditions
Sommaire d’identification
Titre Ajouter équipe
Acteur Responsable, Administrateur
Résumé L’acteur accède à une interface qui lui permet la création d’une
nouvelle équipe.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. Le système affiche le formulaire.
2. L’acteur saisit le nom de l’équipe ainsi que la description et
sélectionne le manager de cette dernière.
3. Le système vérifie la conformité des informations saisies.
4. Le système affiche l’interface d’affectation des membres de
l’équipe (voir le cas d’utilisations « affectation des membres »).
Postconditions
Sommaire d’identification
Titre Ajouter un employé
Acteur Administrateur
22
Spécification et analyse des besoins
Sommaire d’identification
Titre Consulter profil d’un employé
Acteur Responsable
Résumé Le responsable consulte le profil d’un employé.
Description des scénarios
Pré-conditions Le responsable doit être authentifié.
Scénario nominal 1. L’acteur sélectionne un employé (Cas d’utilisation
Consulter liste des employés).
2. Le système affiche le profil de l’employé sélectionné.
3. L’acteur peut modifier le profil (Cas d’utilisation
Modifier profil).
Enchaînement alter-
natif
Postconditions
Nous avons établi la totalité des descriptions des cas d’utilisation, mais nous avons décidé
de ne pas inclure tous les tableaux afin de ne pas encombrer le lecteur. Néanmoins, le reste des
descriptions est cité dans l’annexe A.
23
Spécification et analyse des besoins
24
Spécification et analyse des besoins
25
Spécification et analyse des besoins
26
Spécification et analyse des besoins
27
Spécification et analyse des besoins
28
Spécification et analyse des besoins
29
Spécification et analyse des besoins
30
Spécification et analyse des besoins
Dans un souci de lisibilité, nous avons déplacé le reste des diagrammes de séquence système
vers l’annexe B.
31
Spécification et analyse des besoins
32
Spécification et analyse des besoins
2.8.2 Manager
La figure 2.16 : représente le tableau de bord du manager qui est composé de deux onglets.
Le premier onglet est identique au tableau de bord de l’employé simple, tandis que l’onglet « Mes
équipes » récapitule l’ensemble des informations concernant les équipes sous sa responsabilité. Il
met en évidence le nombre total des équipes et des collaborateurs, le récapitulatif de présence de
ces derniers sous forme de graphe, ainsi qu’une liste des employés avec leurs derniers pointages
La figure 2.17 : cette interface affiche les informations qui concernent une équipe sélectionnée
au préalable par le manager. On peut y voir le titre, la description de l’équipe ainsi que des
statistiques. Dans la partie inférieure, on liste l’ensemble des employés appartenant à cette équipe
avec la possibilité d’un accès direct vers le profil de chacun d’eux.
33
Spécification et analyse des besoins
2.8.3 Responsable
La figure 2.18 : représente l’interface dans laquelle le responsable crée un planning en lui
attribuant un nom et une description et les horaires de début et de fin des périodes de travail tout
au long de la semaine, avec chaque jour étant composé de deux parties.
La figure 2.19 : représente l’interface avec laquelle un responsable affecte un planning à un ou
des employés en effectuant une recherche par lettre qui affiche une liste des employés ayant un nom
ou un prénom correspondant aux caractères saisis, et un bouton qui permet d’affecter l’employé
sélectionné. L’interface comporte aussi une liste des employés ayant déjà été affectés à ce planning
avec la possibilité de détacher un employé du planning.
34
Spécification et analyse des besoins
35
Spécification et analyse des besoins
À travers ces quelques maquettes, nous avons essayé de vous transmettre notre vision générale
du projet sur son aspect graphique, et la composition globale de certaines interfaces. Le reste des
maquettes sera présenté de manière détaillée dans l’annexe.
2.8.4 La navigation
L’outil utilisé pour réaliser les maquettes offre la possibilité de créer un prototype complet et
très représentatif du résultat final. Ci-dessous, des liens vers les prototypes réalisés comportant
toutes les interfaces et les liens de navigations.
2.9 Conclusion
Ce chapitre nous a permis d’exprimer et d’analyser les besoins permettant de décrire les fonc-
tionnalités du système de manière globale. Aussi, grâce à l’identification des acteurs et des cas
d’utilisations, nous avons formalisé les différents besoins fonctionnels et non fonctionnels, défini
les digrammes de cas d’utilisations, réalisé les maquettes IHM et la navigation. Tout ceci nous
permettra, dans le chapitre suivant, de réaliser les différents modèles de la phase de conception.
36
Chapitre 3
Conception
3.1 Introduction
Dans ce chapitre, nous allons nous intéresser à la conception de notre système. Le but est de
définir et de mettre en place les choix d’architecture technique, et de compléter la description du
système sous l’angle technique. Nous étendrons donc la représentation des diagrammes effectuée
au niveau de l’analyse en y intégrant les aspects techniques les plus proches des préoccupations
physiques.
Comment identifier les concepts du domaine ? Plutôt que de partir à l’aveugle et nous heurter
à la taille du problème à résoudre, nous allons prendre les cas d’utilisation un par un et nous
poser pour chacun la question suivante : quels sont les concepts métier qui participent à ce cas
37
Conception
d’utilisation ? En suivant cette méthode, nous avons sélectionné des cas d’utilisation différents afin
d’avoir une vue globale sur les différentes entités qui composent le système sans répétition.
38
Conception
39
Conception
40
Conception
41
Conception
42
Conception
43
Conception
44
Conception
Ces classes permettent les interactions entre l’IHM et les utilisateurs. Il s’agit typiquement
des écrans proposés à l’utilisateur : les formulaires de saisie, les résultats de recherche, etc. En
général, les dialogues vivent seulement le temps du déroulement du cas d’utilisation concerné, afin
de modéliser une classe de dialogue nous allons utiliser le modèle de la figure3.9.
Les classes qui modélisent la cinématique de l’application sont appelées contrôles. Elles font
la jonction entre les dialogues et les classes métier en permettant aux différentes vues de l’appli-
cation de manipuler des informations détenues par des objets métier. Elles contiennent les règles
applicatives et les isolent à la fois des dialogues et des entités, elles seront représentées comme sur
la figure3.10.
Les classes métier, qui proviennent directement du modèle du domaine sont qualifiées d’entités.
Ces classes sont généralement persistantes, c’est à dire qu’elles survivent à l’exécution d’un cas
d’utilisation particulier et qu’elles permettent à des données et à des relations d’être stockées dans
des fichiers ou des bases de données. Elles seront représentées comme sur la figure3.11.
45
Conception
Afin d’établir un DCP, nous ajouterons des associations entre les classes tout en respectant les
règles ci-après : [5]
• Les dialogues ne peuvent être reliés qu’aux contrôles ou à d’autres dialogues, mais pas direc-
tement aux entités.
• Les entités ne peuvent être reliées qu’aux contrôles ou à d’autres entités.
• Les contrôles ont accès à tous les types de classes, y compris d’autres contrôles.
• Enfin, un acteur ne peut être lié qu’à un dialogue.
46
Conception
47
Conception
48
Conception
49
Conception
50
Conception
51
Conception
52
Conception
53
Conception
• Les acteurs ne peuvent interagir (envoyer des messages) qu’avec les dialogues.
• Les dialogues peuvent interagir avec les contrôles.
• Les contrôles peuvent interagir avec les dialogues, les entités, ou d’autres contrôles.
• Les entités ne peuvent interagir qu’entre elles.
54
Conception
55
Conception
56
Conception
57
Conception
58
Conception
59
Conception
60
Conception
61
Conception
62
Conception
• Ajouter ou préciser les opérations dans les classes (un message ne peut être reçu par un objet
que si sa classe a déclaré l’opération publique correspondante).
• Ajouter des types aux attributs et aux paramètres et retours des opérations.
• Affiner les relations entre classes : associations (avec indication de navigabilité), généralisa-
tions ou dépendances.[5]
63
Conception
64
Conception
65
Conception
Figure 3.36 – Diagramme de classes conception préliminaire « Consulter profil d’un employé»
66
Conception
67
Conception
Ce modèle de données est construit principalement autour des concepts suivants [11] :
• Relation : structure de données qui préfigure la table qui sera créée à l’aide du langage SQL.
• Attribut : représentation d’une information atomique qui préfigure une colonne d’une table.
Un domaine de valeurs devrait être défini ainsi que d’éventuelles règles de validation (contraintes).
• Clé primaire : attribut(s) identifiant une relation qui préfigure(nt) la primary Key de la table.
• Clé étrangère : attribut(s) qui référence(nt) une tierce relation, préfigure(nt) une foreign Key
de la table.
Afin de pouvoir implémenter une base de données, il faut pouvoir traduire le modèle conceptuel
en modèle logique. Cela signifie qu’il faut pouvoir convertir un modèle UML en modèle relationnel.
Les modèles conceptuels sont suffisamment formels pour que ce passage soit systématisé dans la
plupart des cas. En appliquant les règles de passage[12], nous obtenons les relations suivantes :
• Employé(id_employé, nom, prénom, genre, username, email,pwd, date_naissance,lieu-naissance,
adresse, présence, rôle, poste, observations, tél_professionnel, tél_personnel, photo, type,
#ggid_équipe, #ggid_planning, #id_empreinte).
• Planning(id_planning, intitulé, description).
• Jour(id_jour, h_entrée1, h_sortie1, h_entrée2, h_sortie2, #ggid_planning).
• Équipe(id_équipe, intitulé, description, #ggid_employé).
• Affectation(id_affectation, rejoint_jour, quitté_jour, #ggid_équipe, #id_employé).
• Shift(id_shift,num_séquence, h_entrée, h_sortien, #ggid_employé ).
• Administrateur(id_administrateur, username, email, pwd).
68
Conception
3.8 Conclusion
Au cours de ce chapitre, nous avons en premier lieu identifié les modèles du domaine pour
avoir une vue globale sur les différentes entités de notre système, puis nous avons modélisé les dia-
grammes de classes participantes et d’interactions qui permettent l’enrichissement des diagrammes
de séquences système. Par la suite, en modélisant les diagrammes de classes conception prélimi-
naire, nous avons pu établir le diagramme de classes conception. Enfin, pour avoir une vue plus
structurée et implémenter une base de données nous avons traduit ce dernier diagramme en un
modèle relationnel.
69
Chapitre 4
Réalisations de la pointeuse
4.1 Introduction
Dans ce chapitre, nous aborderons l’aspect matériel du projet ; en l’occurrence la pointeuse
biométrique à réaliser. En premier lieu, nous allons décrire Arduino en tant que plateforme, puis
nous décrirons en détail le microcontrôleur choisi en justifiant le choix de ce dernier. Par la suite,
nous citerons les caractéristiques du capteur d’empreinte. Une fois assemblés, ils formeront notre
dispositif de pointage. Nous exposerons les différents schémas de branchement et réaliserons un
prototype en 3D pour avoir un aperçu de l’équipement à concevoir.
La dernière section de ce chapitre concerne la communication entre la pointeuse et le système
de gestions de pointage.
4.1.1 Logiciel
Le logiciel de programmation des modules Arduino, dont l’interface est appelée Arduino IDE,
est une application Java libre et multiplateforme dérivée de Processing servant d’éditeur de code
et de compilateur, et qui peut transférer le firmware et le programme au travers de la liaison série
(RS-232, Bluetooth ou USB selon le module). Il est également possible de se passer de l’interface
Arduino, et de compiler et téléverser les programmes via l’interface en ligne de commande. Le
langage de programmation utilisé est le C++, compilé avec avr.-g++ 8, et lié à la bibliothèque
de développement Arduino, permettant d’utiliser la carte et ses entrées/sorties. La mise en place
de ce langage standard rend aisé le développement de programmes sur les plateformes Arduino à
toute personne maîtrisant le C ou le C++ [31].
4.2 ESP32
ESP32 est une série de microcontrôleurs de type système sur une puce (SoC) d’Espressif Sys-
tems, basé sur l’architecture Xtensa LX6 de Tensilica, intégrant la gestion du Wi-Fi et du Bluetooth
(jusqu’à LE 5.0 et 5.11) en mode double, et un DSP. C’est une évolution d’ESP8266. Son support
Wi-Fi et Bluetooth, en fait un système apprécié dans le domaine de l’internet des objets. Ce SoC
70
Réalisations et programmation de la pointeuse
rencontre un certain succès depuis quelques années à la fois pour son coût, ses capacités et son
intégration dans un nombre croissant de systèmes [32].
71
Réalisations et programmation de la pointeuse
Le choix du module ESP32 Devkit est justifié par sa petite taille (57mm*28mm*3m), ainsi que
ses caractéristiques techniques, notamment les connectivités sans-fil, la sécurité, et la gestion de
l’énergie[33].
72
Réalisations et programmation de la pointeuse
Pour les besoins de notre projet, nous avons choisi le capteur DY50 de type optique en raison de
son coût, sa taille, et du fait d’avoir une image précise de l’empreinte tout en étant intrinsèquement
protégé contre les décharges électrostatiques.
73
Réalisations et programmation de la pointeuse
74
Réalisations et programmation de la pointeuse
75
Réalisations et programmation de la pointeuse
Le schéma 4.4 révèle la manière dont le module ESP32 Devkit ainsi que le capteur d’empreinte
DY50 ont été connectés, ainsi qu’une LED pour signaler à l’utilisateur la réussite ou l’échec des
différentes opérations.
Branchement :
Afin d’améliorer l’expérience utilisateur, nous avons rajouté un écran qui permettra d’afficher les
différents messages comme la réussite ou l’échec du pointage ou le nombre d’empreintes enregistrer.
Branchement :
• GPIO21 (ESP32) -> SLC (OLED Display)
• GPIO22 (ESP32) -> SDA (OLED Display)
• GND (ESP32) -> GND (OLED Display)
• 3.3v (ESP32) -> VCC (OLED Display)
Compte tenu du contexte actuel (crise sanitaire due au virus COVID-19) et afin de limiter la
propagation du virus des gestes barrières sont recommandés. Par ailleurs, le fait de toucher une
surface ayant était en contact avec plusieurs individus sans que cette dernière ne soit désinfectée au
préalable constitue un risque sanitaire. Pour remédier à ce problème, nous avons eu l’idée d’équiper
notre pointeuse d’une LED UV-C (lampe germicide). Néanmoins, ce composant doit faire l’objet
76
Réalisations et programmation de la pointeuse
d’une recherche plus approfondie pour confirmer la possibilité de l’installer, car la longueur d’onde
de ce type de lumière peut avoir des effets secondaires indésirables en cas de fortes expositions.
Pour garantir la disponibilité et l’accessibilité du service de pointage, la pointeuse doit être
fonctionnelle même en cas d’absence de courant. Afin de remédier à cette contrainte, nous avons
décidé d’inclure une source d’alimentation secondaire (batterie) qui alimentera tout le dispositif de
pointage en cas de coupure de courant —ceci en supposant que le serveur hébergeant le système
dispose lui aussi d’une alimentation d’urgence en cas de coupure.
4.5 Prototype
Le prototype matérialise une étape d’évolution d’un projet, souvent pour démontrer ou infir-
mer le bien-fondé d’un ou plusieurs concepts mis en jeu dans ce projet avant toute valorisation
commerciale.
Nous avons décidé de réaliser un prototype en 3D du dispositif de pointage afin d’avoir une
idée du résultat final.
Figure 4.6 – Pointeuse vue de face Figure 4.7 – Pointeuse vue de haut
77
Réalisations et programmation de la pointeuse
Figure 4.8 – Côté gauche extérieure Figure 4.9 – Côté gauche intérieure
78
Réalisations et programmation de la pointeuse
Les images précédentes représentent la disposition des différents composants dans un boîtier.
Elles nous donnent un aperçu sur l’aspect extérieur de la pointeuse et de sa forme. Il est utile de
préciser que le lecteur dispose d’un cache rétractable, une manœuvre obligatoire lorsque :
• la LED UV-C est utilisée pour désinfecter la surface de lecture d’empreinte du capteur. Afin
de protéger les utilisateurs des effets indésirables des rayonnements ultraviolets.
• Le dispositif est transporté ou déplacé afin de protéger la surface en verre de toute dégra-
dation ou égratignure qui pourraient affecter les performances de la pointeuse ou la rendre
complètement défectueuse.
4.6 Programmation
Une fois les parties matérielles correctement assemblées, nous allons passer à la partie program-
mation de la pointeuse. En premier lieu, nous allons définir le rôle de chaque composant ainsi que
son champ d’action.
Le logiciel de programmation des cartes Arduino est une application Java libre et multiplate-
forme, servant d’éditeur de code et de compilateur qui peut transférer le programme au travers de
la liaison série (RS-232, Bluetooth ou USB selon le module). Il est également possible de se passer
de l’interface Arduino, et de compiler les programmes via l’interface en ligne de commande.
79
Réalisations et programmation de la pointeuse
Figure 4.12 – interface Arduino IDE et un programme qui clignote une LED
Langage de programmation C
80
Réalisations et programmation de la pointeuse
Esspresif/arduino-esp32 library
Une librairie écrite et maintenue par le constructeur Esspresif. Cette dernière doit être installée
au niveau de l’IDE Arduino pour pouvoir téléverser les programmes écrits sur le module ESP32
Devkit. Elle est disponible sur : <https ://github.com/espressif/arduino-esp32>
Pour pouvoir interagir avec le capteur d’empreinte cette librairie est nécessaire, car elle implé-
mente les différentes méthodes et fonctions qui régissent le fonctionnement de capteur d’empreinte
DY50 on peut citer :
• une partie pour la déclaration des librairies utilisées et des variables globales
#include <Adafruit_Fingerprint.h>
#include <HardwareSerial.h>
#include <WiFi.h>
#include <HTTPClient.h>
81
Réalisations et programmation de la pointeuse
le code précédent représente la partie déclarative de notre programme où nous avons inclus
les librairies nécessaires (<Adafruit_Fingerprint.h>, <HardwareSerial.h>, <WiFi.h>, <HTTP-
Client.h>) au fonctionnement de la pointeuse ainsi que les variables globales utilisées (postData,
postData, linkee, id).
• une partie void setup() : qui ne s’exécute qu’une seule fois est la partie où nous initialisons
et configurons nos entrées/sorties et variables
void setup(){
pinMode(2, OUTPUT);
Serial.begin(115200);
connectToWiFi();
82
Réalisations et programmation de la pointeuse
//---------------------------------------------
finger.getTemplateCount();
Serial.print("Sensor contains ");
Serial.print(finger.templateCount);
Serial.println(" templates");
//SendFingerprintID( FingerID );
//-------------* deleting all templates"-----------
//emptyDataBase();
Dans cette section du code, nous avons initialisé la fréquence de transmission des différents
modules. Ouvrir une connexion au point d’accès déclaré précédemment, tester la liaison entre
l’ESP32 et le capteur, et afficher le nombre d’empreintes enregistrer dans le capteur (lors de la
phase de test).
• une partie void loop() : est la partie principale où se déroule le programme. Tout ce qui va
être écrit dans cette zone sera exécuté par la carte en boucle.
void loop(){
//check if there's a connection to WiFi or not
if (WiFi.status() != WL_CONNECTED){
connectToWiFi();
}
//The ID start form 1 to 127
// Get the Fingerprint ID from the Scanner
FingerID = getFingerprintID();
//don't need to run this at full speed.
Serial.println(FingerID);
delay(50);
checkfinger();
if (FingerID == 1){
Serial.println("mode Enregistrement/Suppression ");
checkToDelete();
delay(5000);
checkToAdd();
}
}
83
Réalisations et programmation de la pointeuse
Cette partie qui sera exécutée en boucle, englobe le comportement que va adopter la pointeuse
Aprés la connexion au point d’accès établie et le capteur correctement connecté.
• une partie pour les différentes procédures et méthodes utilisées
void checkToAdd(){
HTTPClient http; //Declare object of class HTTPClient
//Post Data
// Add the Fingerprint ID to the Post array in order to send it
postData = "Get_Fingerid=get_id";
// Post methode
//initiate HTTP request, put your Website URL or Your Computer IP
http.begin(linkee);
//Specify content-type header
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
if (payload.substring(0, 6) == "add-id"){
// Serial.println("j’ai reçu une réponse qui contient add id");
String add_id = payload.substring(6);
Serial.println(add_id);
id = add_id.toInt();
if (id != 0){
Serial.println("posez votre empreinte ");
getFingerprintEnroll();
}
}
//Close connection
http.end();
}
Cette partie du code représente une des nombreuses fonctions déclarées au niveau de la qua-
trième partie de notre programme. La méthode checkToAdd() a pour rôle de vérifier si une em-
preinte est en attente d’enregistrement après avoir consulté la base de données du système. Dans le
cas d’une réponse « add-idN°empreinte » le capteur enclenche le processus d’enregistrement d’une
nouvelle empreinte.
Il existe plusieurs fonctions dans le programme qui sont destinées à la pointeuse (sendFinger-
PrintID, confirmAdding, checkFinger, etc.) nous avons décidé de présenter celle-ci à titre d’exemple.
84
Réalisations et programmation de la pointeuse
4.7 Conclusion
Dans ce chapitre, nous avons présenté les différentes phases de la réalisation de la pointeuse ainsi
que les différents composants la constituant et les outils utilisés. Après avoir brièvement présenté
la plateforme Arduino, nous avons exposé les caractéristiques du module ESP32 Devkit ainsi que
du capteur d’empreinte DY50. Ensuite, nous avons illustré le branchement des différentes parties.
À l’aide du prototype, on a modélisé en 3D la pointeuse. Maintenant qu’on peut concrètement
identifier chaque individu grâce à son empreinte, on peut passer à l’étape suivante qui est la
réalisation du système responsable d’exploiter cette information.
85
Chapitre 5
5.1 Introduction
Ce chapitre sera d’abord consacré à la présentation de l’environnent de développement et
des librairies utilisées. Ensuite, nous expliquerons l’architecture globale du système ainsi que son
principe de fonctionnement. La deuxième partie sera réservée à la présentation de l’application
dans ses différents aspects en commençant par sa charte graphique et la hiérarchie des pages
de l’application web. Enfin, nous illustrerons quelques interfaces issues de l’application et nous
aborderons brièvement le côté sécurité de l’application réalisée.
86
implémentations mise en service et test
Trello
Trello est un outil de gestion de projet en ligne, lancé en septembre 2011. Il repose
sur une organisation des projets en planches listant des cartes, chacune représentant
des tâches. Les cartes sont assignables à des utilisateurs et sont mobiles d’une planche à
l’autre, traduisant leur avancement. Il permet donc d’organiser les projets et de définir
leur ordre de priorité de façon amusante, souple et enrichissante[38].
Github
Discord
Discord est une plateforme gratuite qui offre un service de communication par chat
vidéo, vocal et textuel, il est donc utile et nécessaire de l’utiliser pour une communication
en continu surtout en temps de pandémie[40].
Visual Studio Code (VSCode) est un éditeur de code source, développé par Micro-
soft en tant que projet open source. Il s’agit de l’outil d’environnement de développe-
ment le plus populaire au monde selon un sondage auprès des développeurs réalisé par
Stackoverflow[13]. En plus d’être un éditeur open source, il dispose d’un contrôle de
gestion intégrée et d’un grand nombre d’extensions[41].
Git
Git est un logiciel de gestion de versions décentralisé. C’est un logiciel libre créé
par Linus Torvalds, auteur du noyau Linux en 2016. Il s’agit du logiciel de gestion de
versions le plus populaire qui est utilisé par plus de douze millions de personnes[43].
Conda
87
implémentations mise en service et test
Adobe XD
C’est une solution d’UX/UI design complète pour la conception de sites web, d’ap-
plications mobiles, etc.
C’est un outil performant pour créer des flux utilisateur, des wireframes, des ma-
quettes extrêmement fidèles, des prototypes interactifs, des animations. Il permet aussi
de modifier et de partager facilement des prototypes interactifs avec des collaborateurs sur l’en-
semble des appareils et des plates-formes[45].
5.2.4 HTML
C’est un langage de balisage principal du World Wide Web. À l’origine, HTML était
principalement conçu comme un langage pour décrire sémantiquement des documents
scientifiques. Sa conception générale lui a toutefois permis de s’adapter, au cours des
années suivantes, pour décrire un certain nombre d’autres types de documents et même
d’applications[14].
5.2.5 CSS
Les feuilles de style en cascade sont un mécanisme simple pour ajouter du style
(par exemple, polices, couleurs, espacement) aux documents Web. Les standards le
définissant sont publiés par le World Wide Web Consortium (W3C)[15].
5.2.6 Sass
Sass est un langage de feuille de style compilé en CSS. Il permet d’utiliser des
variables, des règles imbriquées, des mixins, des fonctions, etc., Le tout avec une syntaxe
entièrement compatible CSS. Il permet aussi de garder les feuilles de style bien organisées
et facilite le partage de la conception au sein et entre les projets[46].
88
implémentations mise en service et test
5.2.7 JavaScript
JavaScript est un langage de programmation de scripts principalement employé dans
les pages web interactives et à ce titre est une partie essentielle des applications web.
Avec les technologies HTML et CSS, JavaScript est parfois considéré comme l’une des
technologies cœur du World Wide Web[16].
5.2.8 Python
Python est un langage de programmation puissant et facile à apprendre. Il a des
structures de données de haut niveau efficaces et une approche simple, mais efficace
de la programmation orientée objet. La syntaxe élégante et le typage dynamique de
Python, ainsi que sa nature interprétée, en font un langage idéal pour la création de
scripts et le développement rapide d’applications dans de nombreux domaines sur la plupart des
plates-formes[17].
5.2.9 Django
Django est un framework Web Python de haut niveau open source qui encourage
un développement rapide et une conception propre et pragmatique. Conçu par des
développeurs expérimentés, il prend en charge une grande partie des tracas du déve-
loppement Web. Il permet l’écriture des applications web sans avoir à réinventer la
roue[18].
Il est basé sur l’ architecture MVT, qui est un modèle de conception de logiciel composé des 3
parties suivantes :
Model : Un modèle est la source d’information unique et définitive à propos des données. Il
contient les champs et le comportement essentiels des données stockées. Généralement, chaque
modèle correspond à une seule table de base de données[19].
View : Une vue, pour faire simple, est une fonction Python acceptant une requête Web et ren-
voyant une réponse Web. Cette réponse peut contenir le contenu HTML d’une page Web,
une redirection, une erreur 404, un document XML, une image. . . ou vraiment n’importe
quoi d’autre. La vue elle-même contient la logique nécessaire pour renvoyer une réponse[20].
Template : Par sa nature liée au Web, Django a besoin d’un procédé agile de génération dyna-
mique de HTML. L’approche la plus couramment utilisée est de se baser sur des templates.
Un template contient la partie statique du résultat HTML souhaité ainsi qu’une certaine
syntaxe particulière définissant comment insérer le contenu dynamique[21].
89
implémentations mise en service et test
5.3.1 MySql
MySQL est un système de gestion de bases de données relationnelles SQL open
source développé et supporté par Oracle. Son approche relationnelle permet d’or-
ganiser les données dans des tableaux à deux dimensions appelés des relations ou
tables[47].
5.3.2 ORM
Django ORM est l’un des principaux piliers de Django. Il offre une couche d’abstraction qui
permet de travailler avec des bases de données, de manière indépendante. Il combine la facilité
d’utilisation en offrant une puissante API qui permet les opérations de base pour la persistance
des données : créer, récupérer, mettre à jour, et supprimer facilement des objets. Ainsi, il garde
les choses simples faciles et les choses difficiles possibles en offrant la possibilité d’exécuter des
requêtes SQL brutes[48].
90
implémentations mise en service et test
5.4.2 JQuery
jQuery est une bibliothèque JavaScript rapide, petite, et riche en fonctionnalités.
Il simplifie considérablement le parcours et la manipulation de documents HTML, la
gestion des événements, l’animation grâce à une API facile à utiliser qui fonctionne sur
une multitude de navigateurs[23].
5.4.4 Pillow
C’est une bibliothèque de traitement d’images pour le langage de programmation
Python. Elle permet d’ouvrir, de manipuler, et de sauvegarder différents formats de
fichiers graphiques[25].
5.4.6 Popper
Popper facilite le positionnement des infobulles et des popovers, il positionnera tout
élément d’interface utilisateur qui sort du flux d’un document et flotte près d’un élément
cible. L’exemple le plus courant est une infobulle. Mais elle comprend également des
popovers, des listes déroulantes, etc. Tous ces éléments peuvent être décrits de manière
générique comme un élément popper[27].
91
implémentations mise en service et test
5.4.8 Chart.js
Chart.js est une bibliothèque JavaScript open-source gratuite créée par le dévelop-
peur Web londonien Nick Downie en 2013. Elle est maintenant maintenue par la com-
munauté, et permet la visualisation de données sur plusieurs types de graphiques tout
en étant facile et flexible[29].
La deuxième partie c’est l’application web, qui est accessible via un navigateur web, et présentée
en détail dans la section suivante.
92
implémentations mise en service et test
Pour le logo, nous avons pensé à une forme qui combine une empreinte et une horloge deux
concepts primordiaux du projet.
Figure 5.4 – Logo avec couleur uniforme Figure 5.5 – Logo sur fond bleu
93
implémentations mise en service et test
5.6.3 Typographie
Le choix de la typographie de notre application repose sur le besoin d’avoir un rendu optimal
du texte sur chaque appareil et système d’exploitation. Dans cette démarche, nous avons décidé
de garder les polices web par défaut du framework bootstrap.
94
Figure 5.8 – Squelette de l’application web
implémentations mise en service et test
96
implémentations mise en service et test
Une fois que l’employé s’authentifie, il sera redirigé vers l’interface Dashbord employé sur la-
quelle il retrouve :
Après avoir consulté le dashbord il pourra utiliser le menu qui se trouve à gauche afin de
naviguer à travers les différentes interfaces.
Depuis cette interface, l’employé aura la possibilité de consulter la liste de ses pointages effectués
depuis son recrutement au sein de l’entreprise et qui seront regroupés par date. Afin de faciliter
la recherche, il aura la possibilité de les filtrer par semaine/mois ainsi que de faire une recherche
précise par période.
97
implémentations mise en service et test
Cette interface permet à l’employé de consulter son profil qui est constitué d’informations
d’identification de base pour le bon fonctionnement du système, ainsi que de diverses informations
le concernant et qui peuvent être renseignées par l’employé lui-même en accédant à l’interface de
modification.
98
implémentations mise en service et test
99
implémentations mise en service et test
Une fois que le manager s’authentifie il sera redirigé vers l’interface dashbord manager qui
contient deux onglets, le 1er onglet est identique à celui de l’employé, le deuxiième onglet «Mes
équipes» résume les informations des collaborateurs de ses différentes équipes.
100
implémentations mise en service et test
Après avoir sélectionné une équipe, le manager est redirigé vers l’interface ci-dessous qui lui
permet d’avoir une vue d’ensemble, afin de superviser les membres de cette dernière.
101
implémentations mise en service et test
La figure 5.17 présente l’interface qui permet au responsable de créer un planning. C’est un
formulaire qui comporte le nom et une description du planning ainsi que les horaires de travail
durant la semaine.
102
implémentations mise en service et test
Une fois que le responsable sélectionne une équipe, il sera redirigé vers l’interface qui est présen-
tée dans la figure 5.18, elle lui permet de consulter les informations de l’équipe ainsi que d’affecter
un employé à cette dernière en effectuant une recherche avec son nom et prénom dans le champ
correspondant.
103
implémentations mise en service et test
104
implémentations mise en service et test
Django suppose que toutes les données de contexte sont non sécurisées, sauf sur indication
contraire. Cela signifie que la plupart des formes d’attaque XSS ne fonctionnent pas avec les
modèles Django [18].
5.9 Tests
La phase de test est une partie fondamentale du processus de développement d’application.
Afin de nous assurer de la qualité et fiabilité de notre application, nous avons effectué des tests
105
implémentations mise en service et test
tout au long du développement ce qui nous a permis d’avoir une détection précoce des erreurs et
de les corriger dès que possible.
5.10 Conclusion
Dans ce chapitre nous avons énoncé les différents logiciels, plateformes, librairies utilisés pour
la réalisation de notre application. À savoir le framework Django, et le langage de programmation
Python et ses différents packages. Suite à cela, nous avons présenté notre application sous différentes
facettes que ce soit le côté persistance de données, la charte graphique, la hiérarchie des pages, les
interfaces, et la sécurité.
106
Conclusion générale et perspectives
Ce travail a été réalisé dans le cadre de notre projet de fin de cycle master en Génie logiciel.
Il consiste en l’élaboration d’un système de pointage à empreinte biométrique constitué d’une
application web et d’une pointeuse biométrique. Ce système est destiné aux PME voulant avoir
un système de gestion de pointage automatisé afin de réduire le coût et le taux d’erreurs liés à la
gestion des heures de travaille des employés.
Grâce à un processus de développement, nous avons pu effectuer une spécification et une ana-
lyse des besoins des utilisateurs, et dégager les principaux acteurs et cas d’utilisation pour réaliser
les différents diagrammes, à savoir les diagrammes de cas d’utilisation et de séquence système.
Ensuite, nous avons conclu cette phase en produisant des maquettes du système à réaliser. La
phase de conception une fois terminée, nous a permis de générer l’ensemble des diagrammes et
la documentation nécessaire pour commencer la réalisation de l’application ; à savoir les modèles
du domaine, les digrammes de classes participantes, les diagrammes de séquence, les diagrammes
de classes conception, ainsi que le modèle relationnel. Enfin, nous avons abordé la dernière phase
aisément grâce au travail effectué dans les phases précédentes. Nous avons pu ainsi utiliser dif-
férents outils et plateformes (python, C, Django, MySQL, Bootstrap, SASS, Arduino, etc.) pour
implémenter notre solution que nous avons dotée d’une identité graphique reflétant le domaine
d’activité de celle-ci.
La réalisation de la partie matérielle s’est faite au fur et à mesure de l’avancement du projet.
N’étant pas des professionnels du domaine électronique, nous avons consacré beaucoup de temps
pour la maîtrise et l’apprentissage des bases de ce domaine pour élaborer une pointeuse biométrique
en combinant différents composants (module ESP32, capteur d’empreinte DY50, écran OLED, etc.)
’AT²ime’, est une application web qui permet non seulement au responsable d’avoir accès aux
informations de pointages et de présences des employés en temps réel, mais elle permet aussi
d’établir des plannings de façon dynamique et de les affecter aux collaborateurs concernés, de
déléguer la supervision d’un groupe d’employés grâce au rôle de manager, et d’avoir une base
de données contenant toutes les informations pertinentes à propos du personnel en plus de leurs
informations de pointage. Tout ceci en identifiant de manière unique et infaillible chaque individu
lors de son entrée ou sortie de l’entreprise grâce à la pointeuse.
Malgré tout le travail fourni, nous sommes conscients que plusieurs aspects de notre système
peuvent et doivent être améliorés. On peut citer à titre d’exemple l’optimisation du code pour
permettre une meilleure exploitation des ressources matérielles. En guise de perspectives, nous
aspirons à enrichir l’application web avec d’autres fonctionnalités telles que la génération des bul-
107
Conclusion générale et perspectives
letins de salaire en fonction des heures de travails, et un système de ticket multicanal. Concernant
la pointeuse biométrique, nous souhaitons pouvoir la rendre totalement mobile en y intégrant une
batterie rechargeable, et un traqueur GPS dans le but de pouvoir enregistrer la position du poin-
tage en plus de l’identifiant de l’employé ainsi que son horodatage. Ceci serait spécialement utile
pour les entreprises ayant des employés mobiles ou des lieux de travail temporaires tels que les
chantiers par exemple.
108
Bibliographie
[1] IONOS, Qu’est-ce qu’une application Web ? Définition et exemples, 07 mars 2019, Disponible
sur <https ://www.ionos.fr>, (consulté le 2 juin 2020).
[2] The benefits of web-based applications, Disponible sur <https ://www.magicwebsolutions.co.uk>,
(consulté le 2 juin 2020).
[3] Fabien Parrain, Capteur intégré tactile d’empreintes digitales à microstructures piezorésis-
tives 2002/12/02, (consulté le 3 juin 2020).
[4] Bhuvan Unhelkar, Software Engineering with UML, 1e Auerbach Publications, CRC
PRESS, 2018.
[5] P. Roques, UML 2 Modéliser une Application Web, 4e édition, Eyrolles, Paris, 2008.
[6] Pascal Roques & Frank Valléé, UML 2 en action de l’analyse des besoins à la conception
, 4e Eyrolles,2007.
[7] UML 2 De l’apprentissage à la pratique, Disponible sur : https ://laurent-
audibert.developpez.com/Cours-UML/ ?page=mise-en-oeuvre-uml#L9-3-1, (consulté le
19 juin 2020).
[8] Bouchlaghem S, Cherifi F, Khanouche F, Maouche L, Zebboudj s, Application Web
JAVA EE pour la gestion d’un laboratoire de recherche scientifique, licence en informatique
générale,Béjaia,Univérsité A/Mira,2014,200p.
[9] Joseph Gabay, David Gabay, UML 2 Analyse et conception, Dunod, Paris, 2008.
[10] Bernhard Rumpe, Agile Modeling with UML, Springer, Aachen, Germany, 2012.
[11] Christian Soutou, Frédéric Brouard, UML 2 pour les bases de données, 2e édition,
EYROLLES, Paris, France.
[12] Stéphane Crozat, Modélisation avancée en UML et en relationnel, 25 janvier 2018.
[13] StackOverFlow, Résultats du sondage auprès des développeurs 2019, Disponible sur : <in-
sights.stackoverflow.com/survey/2019>,(consulter le 4 mars 2020).
[14] world wide web, HTML 5.2, Disponible sur <https ://www.w3.org/TR/2017/REC-
html52-20171214/introduction.html#a-quick-introduction-to-html>, (consulter le 6 mars
2020).
[15] world wide web, WHAT IS CSS ?, Disponible sur < https ://www.w3.org/Style/CSS/>
[16] JavaScript, Disponible sur <https ://developer.mozilla.org/fr/docs/Web/JavaScript>, (con
-sulté le 6 mars 2020).
109
Bibliographie
110
Bibliographie
[34] DY50 Datasheet, Adafruit Optical Fingerprint Sensor, Disponible sur <https ://cdn-
learn.adafruit.com/downloads/pdf/adafruit-optical-fingerprint-sensor.pdf> (consulté le
10/07/2020).
[35] Brian Kernighan, Dennis Ritchie(trad.Thierry Buffenoir, Le langage C [« The C Pro-
gramming Language »], Masson, Paris, 1983, 1er éd, 218 p.
[36] ladyada, AdafruitFingerprint Library Documentation, Release 1.0, Disponible sur
<https ://readthedocs.org/projects/adafruit-circuitpython-fingerprint/downloads/pdf/latest/>
(consulté le 15/07/2020).
[37] Slack, Disponible sur <https ://slack.com/intl/fr-dz/features> (consulter le 12/04/2020).
[38] Trello, Disponible sur <https ://trello.com/fr> (consulté le 12/04/2020).
[40] Github, Disponible sur <https ://github.com> (consulté le 12/04/2020).
[41] Discord, Disponible sur <https ://discord.com> (consulté le 12/04/2020).
[42] Visual Code, Disponible sur <https ://code.visualstudio.com> (consulté le 12/04/2020).
[43] Git, Disponible sur <https ://git-scm.com> (consulté le 12/04/2020).
[44] Conda, Disponible sur <https ://docs.conda.io/en/latest/> (consulté le 12/04/2020).
[45] AdobeXD, Disponible sur <https ://www.adobe.com/fr/products/xd.html> (consulté le
12/04/2020).
[46] SASS, Disponible sur <https ://sass-lang.com> (consulté le 12/04/2020).
[47] MySql, Disponible sur <https ://www.mysql.com/fr/> (consulté le 12/04/2020).
[48] ORM, Disponible sur <https ://docs.djangoproject.com/fr/3.1/topics/db/queries/>
(consulté le 12/04/2020).
[49] Les bases de données et Django, Disponible sur <https ://zestedesavoir.com/tutoriels/598/developpez-
votre-site-web-avec-le-framework-django/262_presentation-de-django/1519_les-bases-de-
donnees-et-django/> (consulté le 13/04/2020).
111
Annexe A
Sommaire d’identification
Titre Consulter mon tableau de bord
Acteur Employé, Manager, Responsable
Résumer L’acteur accède au tableau de bord qui affiche son pointage et le
planning du jour, ainsi qu’une liste des collaborateurs faisant partis
de la même équipe que lui.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. Le système affiche le tableau de bord avec les informations cor-
respondantes.
Enchaînement alter-
natif
Postconditions
Sommaire d’identification
Titre Consulter le tableau de bord responsable
Acteur Responsable
Résumer Permet d’afficher un tableau de bord récapitulatif des informations
de pointage (du responsable lui-même, des équipes de l’entreprise,
de tous les employés).
Description des scénarios
Pré-conditions Être authentifié
Scénario nominal 1. Le système affiche un résumé des informations de pointage
concernant le responsable.
112
Annexe A
Enchainement alter- 1. Le responsable peut avoir une vue par équipe ou il a accès au
natif résumé de pointage de chaque équipe.
2. Le responsable peut avoir une vue par collaborateur dans la-
quelle on affiche le résumé de pointage de chaque collaborateur.
Postconditions
Sommaire d’identification
Titre Rechercher période
Acteur Employé, Manager, Responsable
Résumer L’acteur peut faire une recherche sur les données qui sont liées à
une période donnée, en sélectionnant la date du début et de fin de
cette dernière.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. l’acteur choisi une date de début
2. l’acteur choisi une date de fin
3. le système retourne les informations liées a cette période
Enchainement alter- 3a. Le système ne retrouve aucun résultat lié a cette période
natif 1. le système notifie l’acteur qu’aucun résultat n’a été trouvé.
Postconditions
Sommaire d’identification
Titre Rechercher employé
Acteur Manager, Responsable
Résumer L’acteur peut faire une recherche pour trouver un employé (sous
réserve de droit d’accès).
Description des scénarios
Pré-conditions Être authentifié.
113
Annexe A
Sommaire d’identification
Titre Modifier mon profil
Acteur Employé, Manager, Responsable
Résumer L’acteur accède à une interface qui lui permet de modifier les infor-
mations présentes sur son profil (pas toutes les informations)
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. L’acteur modifie les informations.
2. L’acteur valide les modifications.
3. Le système vérifie la conformité des informations saisie.
4. Le système confirme la modification des informations à l’acteur.
Enchainement alter- 2a. L’employé ne valide pas les modifications.
natif 1. Le système redirige l’employé vers le cas d’utilisations «
Consulter mon profil ».
3a. L’employé a saisi des informations non conformes à celle exigée
par le système.
1. Le système met en évidence les champs non valides et de-
mande à l’utilisateur de les modifier , le cas d’utilisations re-
prend de l’étape 1 du scénario nominale.
Postconditions Les informations de l’employé sont mises à jour dans la base de
données.
Sommaire d’identification
Titre Consulter profil d’un collaborateur
Acteur Manager
Résumer Le manager consulte le profil d’un collaborateur(un employé affecter
à une équipe dont le manager est responsable.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. L’acteur sélectionne un collaborateur (cas d’utilisation
Consulter liste des collaborateurs).
2. Le système affiche le profil d’un collaborateur.
Enchainement alter-
natif
Postconditions
Sommaire d’identification
Titre Consulter le résumé de pointage des collaborateurs
Acteur Manager
Résumer Le manager accède a une interface qui affiche la liste des collabora-
teurs ainsi que l’heure du dernier pointage ,le temps en poste depuis
ce dernier.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le système affiche une liste des collaborateurs appartenant
à l’équipe du manager avec leurs informations de pointage
le plus récent .
Enchainement alter- 1a Le manager n’a pas été affecté à une équipe.
natif 1. Le système signale au manager qu’il n’est pas responsable
d’une équipe.
Postconditions
115
Annexe A
Sommaire d’identification
Titre Consulter feuille de pointage d’un collaborateur
Acteur Manager
Résumer Le manager consulte la feuille de pointage d’un collaborateur ap-
partenant à son équipe.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le manager sélectionne un collaborateur (cas d’utilisation
Consulter le résumé de pointage des collaborateurs).
2. Le système affiche les informations de pointage du jour actuel et
des 6 derniers jours.
Enchainement alter- 2 Le manager souhaite afficher les informations de pointage par
natif mois.
1. Le manager sélectionne le mode d’affichage par mois.
2. Le système affiche les informations de pointage du mois.
Postconditions
Table 5.9 – Description du cas d’utilisation « Consulter feuille de pointage d’un collaborateur
»
Sommaire d’identification
Titre Consulter résumer de pointage des employés
Acteur Responsable
Résumer Le responsable accède a un résumer de pointage du jour des tous
les employés.
Description des scénarios
Pré-conditions Être authentifié
Scénario nominal 1. Le système affiche un tableau des employés ordonné par ordre
alphabétique qui contient les informations de pointage du jour.
Enchainement alter- 1. le responsable peut cliquer sur une ligne du tableau pour afficher
natif les informations de pointage relatives à un employé, voir cas
d’utilisations « consulter feuille de pointage individuelle » .
Postconditions
Table 5.10 – Description du cas d’utilisation « Consulter résumer de pointage des employés »
116
Annexe A
Sommaire d’identification
Titre Consulter feuille de pointage d’un employé
Acteur Responsable
Résumer Le responsable consulte la feuille de pointage d’un employé.
Description des scénarios
Pré-conditions Le responsable doit être authentifié.
Scénario nominal 1. Le responsable sélectionne un employé (Cas d’utilisation
Consulter résumer de pointage des employés).
2. Le système affiche les informations de pointage du jour actuel et
des 6 derniers jours.
Enchainement alter- 2a Le resaponsable souhaite afficher les informations de pointage
natif par mois.
1. Le manager sélectionne le mode d’affichage par mois.
2. Le système affiche les informations de pointage par mois.
Postconditions
Table 5.11 – Description du cas d’utilisation « Consulter feuille de pointage d’un employé »
Sommaire d’identification
Titre Consulter la liste des collaborateurs
Acteur Manager
Résumer Le manager consulte la liste des collaborateurs appartenant à
son/ses équipe(s) qui contient les informations les plus perti-
nentes(nom d’utilisateur, nom, prénom, statut de présence).
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le système affiche la liste des collaborateurs avec leurs informa-
tions.
117
Annexe A
Sommaire d’identification
Titre Consulter la liste des employés
Acteur Responsable
Résumer Le responsable consulte une liste de tous les employés qui contient
les informations les plus pertinentes sur ces derniers.
Description des scénarios
Pré-conditions Être authentifié
Scénario nominal 1. Le système affiche la liste de tous les employés avec leurs infor-
mations.
Enchainement alter- 2a Le responsable souhaite afficher les employés présents.
natif 1. Le responsable sélectionne l’onglet présent.
2. Le système affiche la liste des employés avec leurs informa-
tions.
2b Le responsable souhaite afficher les employés sortis.
1. Le responsable sélectionne l’onglet sortie.
2. Le système affiche la liste des employés avec leurs informa-
tions.
2c Le responsable décide d’afficher le profil d’un employé
1. On déclenche le cas d’utilisations « Consulter profil d’un em-
ployé ».
Postconditions
118
Annexe A
Sommaire d’identification
Titre Modifier employé
Acteur Responsable, Administrateur
Résumer L’acteur accède à une interface qui lui permet de modifié les infor-
mations d’un employé.
Description des scénarios
Pré-conditions Être authentifier.
Scénario nominal 1. Le système affiche le formulaire avec les informations de l’em-
ployé.
2. L’acteur modifie les informations.
3. Le système vérifie la conformité des informations saisie et de-
mande une confirmation.
4. L’acteur confirme la modification.
5. Le systéme met à jours les informations de l’employé dans la
base de données.
Sommaire d’identification
Titre Supprimer un employé
Acteur Administrateur
Résumer L’administrateur supprime un employé.
Description des scénarios
Pré-conditions Être authentifié
119
Annexe A
Sommaire d’identification
Titre Ajouter une empreinte
Acteur Administrateur, Employé, Pointeuse.
Résumer L’administrateur ajoute l’empreinte d’un employé.
Description des scénarios
Pré-conditions Être authentifier/L’administrateur dois avoir saisie les informations
de l’employé.
Scénario nominal 1. L’administrateur active la pointeuse en mode enregistrement.
2. L’employé pose son empreinte sur la pointeuse, qui la scanne.
3. La pointeuse demande de scanner une 2ème fois l’empreinte.
4. L’employé pose son empreinte de nouveau .
5. La pointeuse enregistre l’empreinte.
6. La pointeuse envoie l’identifiant de l’empreinte au système.
7. Le système ajoute l’identifiant à l’employé.
Enchainement alter- 4a Échec du scan.
natif 1. La pointeuse affiche un message d’erreur.
2. Le cas d’utilisation reprend de l’étape 3 du scénario nominal.
Postconditions Mise à jour des données présentes dans la base de données, ainsi
que dans la pointeuse.
120
Annexe A
Sommaire d’identification
Titre Supprimer une empreinte
Acteur Administrateur, Employé, Pointeuse.
Résumer L’administrateur supprime l’empreinte d’un employé.
Description des scénarios
Pré-conditions Être authentifier/empreinte déjà ajouté.
Scénario nominal 1. L’administrateur active la pointeuse en mode suppression.
2. L’administrateur sélectionne l’employé.
3. Le système envoie l’identifiant de l’empreinte.
4. La pointeuse supprime l’empreinte.
5. La pointeuse renvoie une confirmation.
6. Le système confirme la suppression.
Enchainement alter- 5a Le système renvoi un message d’erreur
natif 1. Le cas d’utilisation reprend de l’étape numéro 3 du scénario
nominal.
Postconditions Mise à jour des données présente dans la base de données, ainsi que
dans la pointeuse.
Sommaire d’identification
Titre Consulter la liste de mes équipes
Acteur Manager
Résumer Le manager consulte la liste des équipes dont il est responsable.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le système affiche la liste des ses équipes avec pour chaque
équipe le nombre des collaborateurs ainsi que le nombre des col-
laborateurs présents.
121
Annexe A
Enchainement alter- 1 Le manager décide de sélectionner une équipe afin d’avoir les
natif informations détaillés grâce au cas d’utilisation "Consulter résumer
de mon équipe" .
1 Le manager n’est responsable d’aucune équipe pour le moment .
1. Le système notifie le manager que il n’a aucune équipe sous
sa responsabilité.
Postconditions
Sommaire d’identification
Titre Consulter le résumé de mon équipe
Acteur Manager
Résumer Le manager accède a une interface affichant des informations dé-
taillés sur son équipe.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le système affiche le nom de l’équipe, sa description , le nombre
de collaborateurs .
2. Le système affiche la liste des membres de l’équipe.
Enchainement alter-
natif
Postconditions
Sommaire d’identification
Titre Consulter la liste des équipes
Acteur Responsable
Résumer Le responsable consulte une liste de toutes les équipes existantes
dans le système.
Description des scénarios
Pré-conditions Être authentifié
122
Annexe A
Scénario nominal 1. Le système affiche la liste des équipes existantes ainsi que les
informations pertinentes de chaque équipe comme le titre de
l’équipe et le manager ainsi que le nombre d’employés apparte-
nant a cette équipe.
Enchainement alter- 2a Le responsable souhaite afficher les informations d’une équipe
natif en détail.
1. Le responsable sélectionne une équipe.
2. Le système affiche une interface contenant les informations dé-
taillées de l’équipe sélectionnée, cas d’utilisations « Consulter
résumé d’une équipe ».
Postconditions
Sommaire d’identification
Titre Consulter le résumé d’une équipe
Acteur Responsable
Résumer Le responsable accède a une interface affichant des informations
détaillés sur une équipe.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le système affiche le nom de l’équipe, sa description , le nombre
de collaborateurs .
2. Le système affiche la liste des membres de l’équipe.
Enchainement alter- 3 Le responsable décide de supprimer l’équipe en question.
natif 1. Voir le cas d’utilisation « supprimer une équipe »
Postconditions
Sommaire d’identification
Titre Modifier équipe
Acteur Responsable, Administrateur
123
Annexe A
Résumer L’acteur accède à une interface qui lui permet de modifié les infor-
mations d’une équipe.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. Le système affiche le formulaire avec les informations de l’équipe.
2. L’acteur modifie les informations.
3. Le système vérifie la conformité des informations saisie et de-
mande une confirmation.
4. L’acteur confirme la modification.
5. Le système affiche l’interface qui permet d’ajouter des membres
à l’équipe (voir le cas d’utilisations Ajouter membre).
Sommaire d’identification
Titre Supprimer équipe
Acteur Responsable, Administrateur
Résumer L’acteur supprime une équipe.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. L’acteur sélectionne une équipe.
2. L’acteur supprime l’équipe sélectionnée.
3. Le système demande une confirmation de suppression.
4. L’acteur confirme la suppression.
5. Le système affiche l’interface liste des équipes (voir le cas
d’utilisations Consulter liste des équipes).
124
Annexe A
Sommaire d’identification
Titre Supprimer membre
Acteur Responsable, Administrateur
Résumer L’acteur accède à une interface qui lui permet de supprimer des
employés de l’équipe’.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. L’acteur sélectionne une équipe.
2. L’acteur sélectionne un employé et le supprime.
3. le système demande un confirmation de suppression.
4. l’acteur confirme la suppression.
5. Le système affiche l’interface de suppression avec les données
mis à jours.
Sommaire d’identification
Titre Consulter liste des plannings
Acteur Responsable
Résumer Le responsable consulte la liste des plannings, avec un résumé des
informations pour chaque planning (Nom, nombre d’heures, nombre
d’employés affectés).
Description des scénarios
125
Annexe A
Sommaire d’identification
Titre Consulter mon planning
Acteur Employé, Manager, Responsable
Résumer L’acteur accède aux informations relatives à son planning (Heures
supposé d’arrivée et de sortie prévue par l’entreprise )
Description des scénarios
Pré-conditions Être authentifier.
Scénario nominal 1. Le système affiche le planning de l’acteur concerné pour une
semaine, ce dernier comporte les jours de travail et de congé
ainsi que les horaires d’entrée , sortie et pauses.
Enchainement alter- 1a. L’acteur ne possède pas un planning.
natif 1. Le système notifie l’acteur qu’aucun planning ne lui a était
attribué.
Postconditions
Sommaire d’identification
Titre Consulter planning d’un collaborateur
126
Annexe A
Acteur Manager
Résumer Le manager consulte le planning d’un collaborateur.
Description des scénarios
Pré-conditions Le manager doit être authentifié.
Scénario nominal 1. Le système affiche le planning d’un collaborateur (les jours de
travail et de repos pendant une semaine ainsi que les horaires
supposé d’arriver et de sortis .
Enchainement alter-
natif
Postconditions
Sommaire d’identification
Titre Consulter planning
Acteur Responsable
Résumer Le responsable consulte le planning.
Description des scénarios
Pré-conditions Le responsable doit être authentifié.
Scénario nominal 1. Le système affiche le planning (les jours de travail et de repos
pendant une semaine ainsi que les horaires supposé d’arriver et
de sortis.
2. L’acteur peut modifier le planning (voir le cas d’utilisations
Modifier planning).
Enchainement alter-
natif
Postconditions
Sommaire d’identification
Titre Modifier un planning
Acteur Responsable, Administrateur
127
Annexe A
Résumer L’acteur accède à une interface qui lui permet de modifié le plan-
ning.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. Le système affiche le formulaire avec les informations du plan-
ning.
2. L’acteur modifie les informations.
3. Le système vérifie la conformité des informations saisie et de-
mande une confirmation.
4. L’acteur confirme la modification.
5. Le système affiche un message pour confirmer la modification
6. Le system affiche la liste des plannings voir cas d’utilisation
Consulter liste des plannings
Sommaire d’identification
Titre Supprimer un planning
Acteur Responsable, Administrateur
Résumer L’acteur supprime une équipe.
Description des scénarios
Pré-conditions Être authentifié.
128
Annexe A
Sommaire d’identification
Titre Affectation d’un planning
Acteur Responsable, Administrateur
Résumer L’acteur accède à une interface qui lui permet d’affecter le planning
à un employé’.
Description des scénarios
Pré-conditions Être authentifié.
Scénario nominal 1. L’acteur recherche un employé (voir le cas d’utilisations « Re-
cherche employés »).
2. Le systéme retourne une liste d’employés.
3. L’acteur séléctionne un employé et l’ajoute.
4. Le systéme affiche l’interface d’affectation avec les données mis
à jours.
Enchaînement alter-
natif
Postconditions
129
Annexe A
Sommaire d’identification
Titre Consulter le journal des affectations
Acteur Responsable
Résumer Permet d’afficher un tableau regroupant les changements d’équipe
pour les employés.
Description des scénarios
Pré-conditions Être authentifier
Scénario nominal 1. Le système affiche les différentes affectations des employés selon
les équipes, ainsi on peut savoir si un employé a changé d’équipe
à travers sa carrière dans l’entreprise.
Enchainement alter-
natif
Postconditions
Sommaire d’identification
Titre Importer/Exporter
Acteur Responsable
Résumer Permet au responsable d’importer ou d’exporter des informations
de pointage.
Description des scénarios
Pré-conditions Être authentifier
Scénario nominal 1. Le responsable choisit d’importer/exporter
2. Le responsable choisit le format.
3. Importation ou exportations des données selon le format choisi.
Enchainement alter- 1 Erreur dans les données sélectionnées lors de l’importation
natif 1. Le système signale l’erreur.
2. Le cas d’utilisation redémarre de l’étape numéro 2.
Postconditions Mise à jour de la BDD en cas d’importations / Création d’un fichier
contenant les donnés exporter dans le format voulu.
130
Annexe B
Figure 5.20 – Diagramme de séquence système « Consulter résumé de pointage des collaborateur
»
131
Annexe B
132
Annexe B
133
Annexe B
134
Annexe B
135
Annexe B
136
Annexe B
137
Annexe B
138
Résumé
Ce document a été rédigé en vue de l’obtention du diplôme de Master en Génie Logiciel. La
problématique traitée est la gestion des heures de travail des employés ainsi que leurs pointages au
sein d’une entreprise. À la suite d’une analyse de la problématique, une solution a été proposée.
Composée d’une application web et d’une pointeuse biométrique, cette alternative offrira aux
PMEs la possibilité de répondre à ce besoin de gestion de manière plus fiable et plus efficace.
Pour concrétiser cela, nous avons eu recours à un processus de développement et au langage de
modélisations UML pour les phases d’analyse et de conceptions. Pour ce qui est de la phase de
réalisation, elle s’est caractérisée par l’utilisation de Django, qui est un framwork Python, ainsi
que d’autres librairies pour l’implémentation de l’application web. Quant à la pointeuse, elle est
composée du module ESP32 (dans lequel nous avons injecté un programme en C tel que pratiqué
sur la plateforme Arduino) et d’un capteur d’empreinte biométrique DY50.
Mots clés : empreinte biométrique, pointage, entreprise, UP, UML, agile, web, Python Django,
ESP32
Abstract
This document was written for a Master’s degree in Software Engineering. It revolves around
the management of working hours and employees clocking within a company. After this issue was
analysed, the realization of a timekeeping and working hours management system was proposed.
This system, consisting of a web application and a biometric timekeeper, could fulfil SMEs’ needs
for a better and more reliable management system. For this project, our methodology consisted
of the usage of the Unified Modelling Language (UML) for the analysis and the design activities.
Moreover, the web application was developed using Python and the Django framework, as well as
other libraries. The timekeeping device, for its part, consists of an ESP32 module (in which we
imported a program coded in C using the Arduino platform) and a DY50 biometric fingerprint
sensor.
Keywords :biometric fingerprint, attendance, business, UP, UML, agile, web, Python Django,
ESP32