Académique Documents
Professionnel Documents
Culture Documents
Informatique
Nouhaila El Rhazzaoui
1
Remerciement
Nous tenons à exprimer notre gratitude envers toutes les personnes qui ont contribué à
la réalisation de ce projet. Nos sincères remerciements vont tout d’abord à notre encadrant M.
ASIMI Younes pour ses conseils avisés et son soutien tout au long de la réalisation de cette
application.
Nous souhaitons également remercier toutes les personnes qui ont participés à
l’évaluation de l’application et ont fourni des commentaires précieux. Leurs retours ont été
d’une grande aide pour l’amélioration de l’expérience utilisateur.
Enfin, un grand merci à nos proches, qui nous ont soutenu tout au long de cette
aventures et ont été une source de motivation inépuisable.
Cette application mobile est le fruit d’un travail acharné, mais également de
l’implication et de la collaboration de nombreux acteurs. C’est avec fierté que nous dédions ce
projet à tous ceux qui nous ont accompagnés dans cette aventure.
2
Dédicace
A notre famille
Table de matières
CHAPITRE 1 : SÉCURITÉ INFORMATIQUE SOUS PYTHON..................8
3
I. SÉCURITÉ INFORMATIQUE.............................................................................................8
I.1. Fonctionnalités de python..................................................................................................8
II. CERTIFICAT SSL........................................................................................................8
II.1. Les avantages du certificat SSL.........................................................................................8
II.2. Création d’un certificat SSL..............................................................................................9
III. SYSTÈME DE CRYPTOGRAPHIE PGP.........................................................................10
III.1. Les fonctionnements principaux de PGP.....................................................................11
III.2. Protocole PGP sous Kileopatra....................................................................................11
I. PYTHON........................................................................................................................13
I.1. Installation de Python......................................................................................................13
I.2. Environnements du travail sur Python.............................................................................13
II. TYPES DES APPLICATIONS........................................................................................13
II.1. Applications Natives........................................................................................................13
II.2. Applications Hydriodiques :............................................................................................14
II.3. Application web...............................................................................................................14
II.4. Différences entre les types applications..........................................................................15
4
CHAPITRE 3 : RÉALISATION.....................................................................24
CONCLUSION................................................................................................ 33
5
Liste de figures
6
Figure 22:Pageinsertion des informations de taxi..............................................................29
7
Introduction général
Depuis plusieurs décennies, les transports ont été un enjeu majeur pour les sociétés
modernes, notamment en termes de mobilité, de développement économique, de qualité de vie,
d'environnement et de sécurité routière. Au fil des années, les technologies ont permis des avancées
considérables dans ce domaine, avec notamment l'avènement de l'Internet et des smartphones.
De nos jours, les applications mobiles ont complètement changé la donne dans le secteur du
transport. En effet, ces applications ont révolutionné la manière dont les utilisateurs se déplacent en
leur offrant la possibilité de commander un taxi en quelques clics depuis leur smartphone. Cette
innovation technologique a permis de simplifier et de fluidifier la réservation de taxis, tout en
améliorant la qualité de service offerte par les entreprises de taxi.
Dans ce contexte, ce rapport de projet de fin d'étude s'attarde sur une application mobile
eTaxi, conçue pour faciliter la réservation des taxis à travers une interface intuitive et conviviale.
L'objectif principal de ce projet est de proposer une solution efficace pour répondre aux besoins
croissants de clients en matière de mobilité et de confort, tout en améliorant la qualité de service
offerte par les entreprises de taxi.
8
Chapitre 1 : Sécurité informatique sous python
I. Sécurité informatique
La sécurité informatique est un ensemble de techniques et pratiques visant à protéger les
systèmes, réseaux, données et utilisateurs contre les menaces. Il est important pour les entreprises et
les organisations de mettre en place des mesures de sécurité pour protéger leurs systèmes et données.
Les utilisateurs doivent également prendre des mesures pour protéger leur propre sécurité
informatique.
I.1. Fonctionnalités de python
Python fournit des outils et des fonctionnalités pour assurer la sécurité informatique des scripts
et des applications écrits en Python. Il est important que les développeurs utilisent ces outils et
respectent les bonnes pratiques de sécurité pour écrire des codes sécurisés et protéger les données
sensibles. Il existe plusieurs façons dont Python assure la sécurité informatique :
Vérification de code : Python fournit des outils pour vérifier les scripts et les
applications pour détecter tout code malveillant ou toute vulnérabilité.
Gestion des dépendances : Les développeurs peuvent utiliser des gestionnaires de
paquets tels que pip ou pipenv pour gérer les dépendances utilisées dans leurs projets.
Cryptage des données : Python fournit des bibliothèques de chiffrement pour protéger
les données sensibles stockées ou traitées par les scripts et les applications.
Environnements virtuels : Les environnements virtuels permettent d'isoler les
dépendances et les bibliothèques utilisées dans un projet Python, ce qui limite les risques
de compromission de l'application ou du système.
Analyse de code statique : Il existe des outils d'analyse de code statique pour Python qui
peuvent aider à détecter les vulnérabilités de sécurité dans les scripts et les applications.
9
II.1. Les avantages du certificat SSL
Sécurité des données : Le certificat SSL permet de chiffrer les données échangées entre
le serveur et le navigateur, ce qui les rend illisibles pour les personnes mal intentionnées
qui pourraient tenter de les intercepter.
Confidentialité : En chiffrant les données, le certificat SSL protège également la
confidentialité des informations échangées, telles que les noms d'utilisateur et les mots de
passe.
Confiance : Les certificats SSL sont délivrés par des autorités de certification reconnues,
ce qui renforce la confiance des utilisateurs envers le site web.
Amélioration du référencement : Les moteurs de recherche comme Google ont
tendance à favoriser les sites web qui utilisent des certificats SSL, ce qui peut améliorer
leur référencement.
Respect des normes de conformité : Certaines normes de conformité, comme la norme
PCI DSS pour la sécurité des paiements en ligne, exigent l'utilisation de certificats SSL.
II.2. Création d’un certificat SSL
Pour créer un certificat et une clé privée en Python, nous utilisons le package cryptography et
SSL. Dans l’exemple suivant, nous illustrons les étapes à suivre pour créer ce certificat utilisant la
clef prive et la CSR(certificat singing request) en utilisant la bibliothèque cryptography :
10
Figure 1:Creation d'un certificat SSL
Configurer votre logiciel de serveur web pour utiliser le certificat SSL. Cela variera également
en fonction du logiciel, mais impliquera généralement la modification d'un fichier de configuration
pour spécifier l'emplacement des fichiers de certificat et de clé privée.
11
Figure 3:Configuration de server apache
Note : Il est nécessaire de mettre à jour le code de l'application pour rediriger le trafic HTTP
vers HTTPS,
III. Système de cryptographie PGP
PGP (Pretty Good Privacy) est un système de cryptographie qui utilise des clés publiques et
privées pour chiffrer et déchiffrer les messages et les fichiers. Il permet de garantir la confidentialité,
l'intégrité et l'authenticité des communications. Il est souvent utilisé pour protéger les
communications électroniques sensibles telles que les courriels, les messages instantanés et les
fichiers et est souvent utilisé par les entreprises et les gouvernements pour protéger les
communications confidentielles. Il permet également de signer numériquement les messages pour
garantir l'authenticité de l'expéditeur.
12
possédant la clé privée correspondante pourra déchiffrer les données et les lire.
Signature numérique : PGP permet également de signer numériquement les messages
pour garantir l'authenticité de l'expéditeur. L'expéditeur utilise sa propre clé privée.
III.2. Protocole PGP sous Kileopatra
Kileopatra est un logiciel de chiffrement et de déchiffrement de messages et de fichiers
utilisant le chiffrement à clé publique et le chiffrement à clé privée. Le processus pour chiffre et de
déchiffre d’un message :
1. Ouvrez Kileopatra et créez une nouvelle paire de clés en sélectionnant l'option "Nouvelle
paire de clés" dans le menu "Clés".
2. Enregistrez votre clé publique en sélectionnant l'option "Export" et en choisissant un
emplacement pour enregistrer le fichier.
3. C
o
p
i
e
Figure 4:Générer une clé paire de clés PGP
z
Figure 5:Générer une clé paire de clés PGP
le texte que vous souhaitez chiffrer et collez-le dans un éditeur de texte.
4. Cliquez sur l'icône de chiffrement dans la barre d'outils de Kileopatra, puis sélectionnez
votre clé publique dans la liste déroulante.
5. Cliquez sur "OK" pour chiffrer le texte.
13
Figure 6:Chifrement de text
14
Chapitre 2 : Développement des applications sous python
I. Python
Python est un langage de programmation de haut niveau, facile à apprendre, avec une syntaxe
simple et lisible, utilisé pour un large éventail de projets tels que le développement web, l'analyse de
données, l'IA, avec un grand nombre de bibliothèques et Framework disponibles, soutenu par une
communauté active avec de nombreuses ressources pour l'apprentissage et la résolution des
problèmes.
L'installation de paquets Python peut être effectuée en utilisant un gestionnaire de paquets tel
que pip, qui est inclus avec Python. Pour installer un paquet en utilisant pip, vous pouvez utiliser la
commande pip install nom_du_paquet. Par exemple, pour installer le paquet NumPy, vous utiliseriez
la commande pip install numpy. L'une des meilleures façons de sécuriser votre installation de paquet
et d'éviter les paquets malveillants externes consiste à utiliser un gestionnaire de paquet qui vérifie
les signatures de paquets. L'un des gestionnaires de paquet qui peut le faire s'appelle pipenv. Pipenv
est un gestionnaire de paquet qui s'intègre à pip et vous permet de gérer vos paquets dans un
environnement virtuel. Il prend également en charge la vérification des signatures de paquets.
Une autre façon de sécuriser votre installation de paquet est d'utiliser un environnement virtuel.
Les environnements virtuels vous permettent de créer des environnements isolés pour vos projets
Python, où vous pouvez installer des paquets sans affecter le reste de votre système. Virtualenv est
un outil populaire pour créer des environnements virtuels.
En ce qui concerne l'IDE, vous pouvez utiliser n'importe quel IDE qui prend en charge le
développement Python. Certains des IDEs les plus populaires pour le développement Python
incluent PyCharm, Visual Studio Code et IDLE. Ces IDEs incluent souvent des fonctionnalités telles
que la coloration syntaxique, l'achèvement de code et les outils de débogage pour faciliter le
développement.
15
II. Types des applications
II.1. Applications Natives
Les applications natives sont conçues pour un système d'exploitation spécifique, soit iOS, soit
Android. Les applications hybrides, cependant, sont conçues pour fonctionner sur n'importe quel
système d'exploitation et partagent la même base de code. Les application mobile Native vous
permettent également d'interagir avec l'API et le matériel interne d'un appareil, permettant à
l'application d'accéder à des fonctionnalités telles que :
Appareils photo ;
Listes de contacts d’utilisateurs ;
Le microphone de l'appareil ;
Suivi de l'emplacement de l'appareil.
Avantage :
Performances supérieures ;
Fonctionnalités spécifiques à la plate-forme ;
Interface utilisateur supérieure ;
Visibilité de l'App Store.
II.2. Applications Hydriodiques :
Une application Web est à peu près un site Web qui ressemble plutôt à une application mobile.
À la différence des applications natives, les applications Web peuvent s'exécuter sur différents
16
navigateurs Web, comme Chrome ou Safari, et sont écrites en JavaScript et/ou HTML5. Les
applications Web ont une barrière à l'entrée plus faible que les applications natives en raison de leur
simplicité relative et ont donc tendance à être moins chères et plus faciles à développer. Le
compromis est que les applications Web ont également tendance à être plus lentes et ont des
conceptions moins intuitives pour leur interface utilisateur.
En plus de ces inconvénients, les applications Web ne peuvent pas être présentées dans les
magasins d'applications pour Apple où Android, de sorte que votre application aurait moins de
visibilité et serait plus difficile à découvrir de manière organique. Mais ce que les applications Web
manquent en dé-couvrabilité, elles le compensent en accessibilité.
Avantage :
Maintenance facile :
Accessibilité facile
Moins chères
Pas d'approbation du marché des applications
Les principales différences entre les applications mobiles et les applications web :
En termes d'exécution des paquets : les applications mobiles nécessiteront
généralement des paquets spécifiques qui sont adaptés à la plate-forme sur laquelle elles
s'exécutent, tandis que les applications web nécessiteront des paquets qui sont
indépendants de la plate-forme
En termes de sécurité : les applications mobiles peuvent profiter des fonctionnalités de
sécurité fournies par l'appareil, telles que l'authentification biométrique et le stockage
sécurisé. Cependant, les applications mobiles peuvent également être vulnérables aux
menaces de sécurité telles que la rétro-ingénierie et les logiciels malveillants. Les
applications web, en revanche, sont généralement plus vulnérables aux attaques basées
sur le réseau, telles que l'injection SQL et la faille d'injection de script. Cependant, les
applications web peuvent également être sécurisées par une utilisation appropriée des
mécanismes d'encryptions et d'authentification.
17
Chapitre 3 : Analyse et Conception
I. Analyse fonctionnelle
Il s'agit d'une étape déterminante dans la réalisation d'une application donnée. La mise en place
d’un nouvel outil logiciel dépend beaucoup de cette phase, elle nous permet d'éviter le
développement d'une application non satisfaisante. Dans ce chapitre, nous allons présenter une étude
de l’existant. Ensuite, nous allons créer la problématique basée sur l’étape précédente et enfin nous
terminons ce chapitre par la solution proposée.
I.1. Etude d’existence
En tant que des étudiants nous avons personnellement connu des difficultés pour trouver un
taxi disponible rapidement dans les petites villes. Cette expérience nous a motivés à créer une
solution innovante qui permettrait à chacun de réserver un taxi en quelques clics. Notre application
mobile vise à aider nos clients à trouver rapidement un taxi pour se déplacer d'un point à un autre.
L'application se destine à tous les utilisateurs qui cherchent une solution de transport simple et
efficace.
Il y a plusieurs difficultés que les gens peuvent rencontrer lorsqu'ils cherchent un taxi, y
compris :
Disponibilité : Dans certaines régions, il ne peut pas y avoir beaucoup de taxis
disponibles, ce qui rend difficile d’en trouver un rapidement.
Emplacement : Dans certaines zones, il peut être difficile de trouver un taxi dans la rue.
Cela peut être particulièrement difficile dans les zones avec un fort trafic ou dans les
zones rurales où il y a moins de taxis.
Temps d’attente : Même si un taxi est disponible, le temps d'attente pour qu'il arrive
peut-être long, surtout pendant les heures de pointe ou dans les zones occupées.
I.3. Solution proposée
Suite aux inconvénients précédemment cités, nous proposons la mise en place d'une application
mobile qui fait référence à une version électronique / numérique d'un service de taxi traditionnel. Les
principales raisons d'utiliser une telle application serait la commodité, l'accessibilité et l'efficacité
économique :
18
Accessibilité : eTaxi permet aux utilisateurs de réserver un trajet et de suivre la
localisation du conducteur sur la carte, offrant un moyen facile de trouver le conducteur
le plus proche disponible.
Sécurité : eTaxi permet aux utilisateurs de voir le nom, la photo et les détails du véhicule
du conducteur avant le début du trajet. Cela peut fournir un sentiment de sécurité pour les
passagers.
Suivi en temps réel : eTaxi permet aux utilisateurs de suivre la localisation de leur
conducteur et l'heure d'arrivée estimée, offrant une meilleure expérience utilisateur.
I.4. Taches réalisées dans l’application
I.4.1. Administrateur
Certaines des choses qu'un administrateur dans une application eTaxi peut faire
comprennent :
Gérer les conducteurs : Un administrateur peut ajouter, éditer ou supprimer des profils
de conducteurs, approuver ou rejeter les demandes de conducteurs ;
Gérer les passagers : Un administrateur peut afficher les profils des passagers, suivre
l'historique des passagers et émettre des remboursements ou des crédits ;
Gestion des notifications : Un administrateur peut visionner les notifications, modifier
ou supprimer des notifications ;
I.4.2. Utilisateurs
Certaines des choses qu’un utilisateur dans une application eTaxi peut faire comprennent :
L’utilisateur peut visionner tous les conducteurs ;
L’utilisateur peut faire une recherche sur un taxi ;
L’utilisateur peut visionner tous ses conversations ;
L’utilisateur peut visionner tous ses historiques de notifications ;
I.4.3. Conducteur
Certaines des choses qu’un Conducteur dans une application eTaxi peut faire comprennent :
Un conducteur de taxi peut gérer les informations relatives aux véhicules et aux
conducteurs ;
Un conducteur de taxi peut Suivi GPS pour localiser les passagers à proximité ;
Un conducteur de taxi peut mettre à jour en temps réel sur les demandes de trajet ;
Un conducteur de taxi peut avoir la possibilité d'accepter ou de refuser les demandes de
19
trajet ;
Un conducteur de taxi peut communiquer avec les passagers ;
II. Conception
UML, c’est l’acronyme anglais pour « Unified Modeling Language ». On le traduit par «
Langage de modélisation unifié ». UML est né de la fusion des trois méthodes qui ont influencé la
modélisation objet au mi- lieu des années 90 : OMT, Booch et OOSE.Il est proposé par : Grady
Booch, James Rumbaugh et Ivar Jacobson.UML c’est un langage de modélisation qui permet de
représenter graphiquement les besoins des utilisateurs. On utilise pour cela des diagrammes.UML est
une démarche qui se base sur une approche objet.
Un diagramme de classes UML décrit les structures d'objets et d'informations utilisées, à la fois
en interne et en communication avec ses utilisateurs. Il décrit les informations sans faire référence à
une implémentation particulière. Ses classes et relations peuvent être implémentées nombreuses
manières, comme les tables de bases de données, les nœuds XMLencore les compositions d'objets
logiciels.
20
Figure 7:Diagram de class global
Les rôles des diagrammes de cas d’utilisation sont de recueillir, d’analyser et d’organiser les
besoins, ainsi que de recenser les grandes fonctionnalités d’un système. Il s’agit donc de la première
étape UML pour la conception d’un système. Un diagramme de cas d’utilisation capture le
comportement d’un système, d’un sous-système, d’une classe ou d’un composant tel qu’un
utilisateur extérieur le voit.
Cas d’utilisation d’acteur administrateur
21
Figure 9:Diagram Cas d’utilisation d’acteur utilisateur
Cas d’utilisation d’acteur Conducteur
22
II.1. Diagrammes de séquence
Les diagrammes de séquence sont une solution populaire de modélisation dynamique en
langage UML, car ils se concentrent plus précisément sur les lignes de vie, les processus et les objets
qui vivent simultanément, et les messages qu'ils échangent entre eux pour exercer une fonction avant
la fin de la ligne de vie.
23
Figure 12:Diagramme de séquence d’un Client
24
Figure 13:Diagramme de séquence d’un conducteur de taxi
II.2. Conclusion
25
Chapitre 3 : Réalisation
Ce chapitre contient le dernier volet de ce rapport. Elle a pour objectif d’exposer le travail
achevé. Dans un premier temps, nous présentons les différents outils de développement utilisés.
Dans un second temps, nous illustrons la réalisation de notre travail par des imprimes d’écran des
interfaces les plus importantes de notre application
I. Les outils utilisés
I.1. Les enivrements de travail
26
Dart est un langage de programmation développé par Google pour créer des applica web,
mobiles et côté serveur. I Il est utilisé pour développer des applications Flutter pour les
plateformes mobiles.
27
II. Les interfaces réalisées dans notre application eTaxi
Notre application mobile eTaxi utilise une combinaison de couleurs bleues et blanches pour
créer un design propre et élégant qui est facile à utiliser et agréable à regarder. Les couleurs bleues
sont souvent associées à la confiance, la sécurité et la fiabilité, ce qui peut aider à renforcer la
confiance des utilisateurs dans l'application et à améliorer leur expérience de réservation de taxi.
Figure14:Interface d’accueil 1
28
Figure16:Interface d’accueil 1 Figure 15:Interface d’accueil
29
Cette interface permet de connecter à
l’application
Signup : accéder à l’interface
d’inscription
Login : accéder au compte
30
Cette interface permet à l’utilisateur
de restaurer son mot de passe
31
Cette page pour l’inscription d’un utilisateur
donné ;
32
Cette interface permet d’afficher l’emplacement
actuel de l’utilisateur ;
33
Cet espace interactif permet à nos clients et à nos
chauffeurs de communiquer entre eux
Notre application eTaxi offre une solution innovante pour les utilisateurs
cherchant à se déplacer facilement et rapidement, tout en offrant aux chauffeurs de
taxi une plateforme leur permettant de trouver des courses plus facilement. Nous
espérons que cette application pourra être utile pour de nombreux utilisateurs et
contribuera à améliorer l'efficacité et la commodité des services de transport.
En somme, nous sommes fiers du travail accompli et nous espérons que notre
application contribuera à répondre aux besoins des utilisateurs et à améliorer
l'expérience de transport en ville.
35
36