Pfe 1
Pfe 1
ET DE LA RECHERCHE SCIENTIFIQUE
UNIVERSITÉ DE SOUSSE
المعهد العالي للعإلماية و تاقنيات التاصال بحمام سوسة
Réalisé par :
AMRI Amine
Encadré par :
ET DE LA RECHERCHE SCIENTIFIQUE
UNIVERSITÉ DE SOUSSE
المعهد العالي للعإلماية و تاقنيات التاصال بحمام سوسة
Réalisé par :
AMRI Amine
Profitant par la même occasion pour remercier tous les enseignants de l’ISITCom et
spécifiquement mes enseignants tout au long de mes trois années de formation, veuillez trouver ici
l’expression de ma respectueuse considération et ma profonde admiration pour toutes vos qualités
scientifiques et humaines.
AMRI Amine
Table des matières
Introduction Générale..............................................................................................................................12
Chapitre 1: Étude préalable.....................................................................................................................13
1 Introduction....................................................................................................................................14
2 Cadre général du projet:.................................................................................................................14
3 Présentation du projet :...................................................................................................................14
3.1 Problématique :.......................................................................................................................14
3.2 L’existant :..............................................................................................................................14
3.2.1 Waze :..............................................................................................................................15
3.2.2 Google Traffic :...............................................................................................................16
3.2.3 RTS Trafic:......................................................................................................................17
3.3 Critique de l’existant :............................................................................................................17
4 Solution proposée :.........................................................................................................................17
5 Conclusion :....................................................................................................................................17
Chapitre 2 : Analyse et spécification des besoins....................................................................................18
1 Introduction....................................................................................................................................19
2 Spécification des besoins :.............................................................................................................19
2.1 Identification des acteurs :......................................................................................................19
2.2 Spécification des besoins fonctionnels :.................................................................................19
3 Modélisation des fonctionnalités :..................................................................................................20
3.1 UML, définition:.....................................................................................................................20
3.2 Diagrammes de cas d’utilisation “Use Case” :.......................................................................21
3.2.1 Définition :......................................................................................................................21
3.2.2 Les cas d’utilisation de l’application :............................................................................21
3.2.2.1 Diagramme cas d’utilisation « vue globale » :........................................................21
3.2.2.2 Diagrammes détaillés par acteur :...........................................................................22
3.2.2.2.1 Diagramme de cas d’utilisation du Conducteur :............................................22
3.2.2.2.2 Diagrammes des cas d’utilisation du Conducteur_Enregistré :.......................23
4 Conclusion :....................................................................................................................................31
Chapitre 3 : Étude conceptuelle...............................................................................................................32
1 Introduction :..................................................................................................................................33
2 Conception générale :.....................................................................................................................33
2.1.1 L’architecture physique :.................................................................................................33
2.1.1.1 Les architectures physiques courantes :..................................................................34
2.1.1.2 L’architecture physique 3-tiers :..............................................................................39
2.2 La conception détaillée de la solution :..................................................................................40
2.3 Vues statiques :.......................................................................................................................40
2.3.1 Diagrammes des classes :................................................................................................40
Diagrammes des classes de l’application mobile :................................................................42
2.3.1.1 Diagrammes des classes du Backend:.....................................................................44
2.3.2 Conception de la base des données :...............................................................................47
2.4 Aspect dynamique :.................................................................................................................49
2.4.1 Diagrammes d’activité :..................................................................................................49
2.4.1.1 Diagramme d’activité de l’utilisateur :....................................................................49
2.4.2 Diagramme des séquences :............................................................................................52
2.4.2.1 Diagramme des séquences « Enregistrement » :.....................................................52
2.4.2.2 Diagramme des séquences « Authentification » :...................................................54
2.4.2.3 Diagramme des séquences « ChoisirDestination » :...............................................57
3 Conclusion:.....................................................................................................................................59
Chapitre 4 :Étude de l’environnement de développement.......................................................................60
1 Introduction....................................................................................................................................61
2 L’environnement de développement :............................................................................................61
2.1 L’environnement matériel :.....................................................................................................61
2.2 L’environnement logiciel :......................................................................................................61
2.3 Les outils de développement du Backend :............................................................................62
2.3.1 Python :...........................................................................................................................62
2.3.2 Web.py............................................................................................................................68
2.3.3 JSON :.............................................................................................................................70
2.4 Les outils de développement de l’application mobile :..........................................................73
2.4.1 Java :...............................................................................................................................73
2.4.2 Le SDK Android :...........................................................................................................73
2.4.3 AsyncHttpClient :............................................................................................................74
2.4.4 Les services Google Play :..............................................................................................74
2.4.5 L’API v3 Google Maps :.................................................................................................75
3 Conclusion:.....................................................................................................................................75
Phase de réalisation, évaluation et critique des limitations:.....................................................................76
1 Introduction:...................................................................................................................................77
2 Travail réalisé:................................................................................................................................77
2.1 Authentification :....................................................................................................................77
2.2 Créer compte :.........................................................................................................................80
2.3 L’interface du carte :...............................................................................................................81
2.4 Le Backend :...........................................................................................................................90
3 Évaluation et critique :...................................................................................................................90
4 Conclusion :....................................................................................................................................91
Conclusion Générale................................................................................................................................92
Table des figures
Logo de Waze...........................................................................................................................................16
Interface Waze..........................................................................................................................................16
Interface Google Traffic...........................................................................................................................17
Logo du RTS Trafic..................................................................................................................................18
Types des diagrammes UML version 2.0.................................................................................................22
Diagramme de cas d'utilisation global.....................................................................................................23
Cas d'utilisation "Créer compte"..............................................................................................................24
Cas d'utilisation Gérer compte.................................................................................................................24
Cas d'utilisation Gérer destination...........................................................................................................25
Cas d'utilisation Suivre position...............................................................................................................25
Architecture générale de la solution.........................................................................................................28
Architecture 2-tiers..................................................................................................................................29
Architecture 3-tiers..................................................................................................................................31
Architecture 3-tiers..................................................................................................................................32
Diagramme des classe de l'application mobile........................................................................................34
Diagramme de classe du Backend............................................................................................................37
Diagramme relationnel de la base des données........................................................................................41
Diagramme d'activité...............................................................................................................................46
Diagramme des séquences "Enregistrement"...........................................................................................48
Diagramme des séquences "Authentification".........................................................................................51
Diagramme des séquences "ChoisirDestination".....................................................................................54
Exemple d'une classe avec ses méthodes.................................................................................................58
Mots réservés au langage.........................................................................................................................59
"Hello world! en web.py"........................................................................................................................61
Objet en JSON.........................................................................................................................................62
Tableau en JSON......................................................................................................................................63
Types des valeurs.....................................................................................................................................63
Exemple JSON.........................................................................................................................................64
"Hello world!" en Java.............................................................................................................................65
Code AsyncHttpClient.............................................................................................................................66
Exemple du reverse geocoding................................................................................................................67
L'interface d'authentification....................................................................................................................69
Mot de passe vide.....................................................................................................................................70
Mot de passe de longueur inférieure à six caractères...............................................................................71
Interface de l'activité "Créer compte"......................................................................................................72
Interface initiale du carte..........................................................................................................................74
Carte centrée sur la position courante......................................................................................................75
La destination est marquée et le trajet est en rouge.................................................................................76
Embouteillage sur la carte........................................................................................................................77
La fonctionnalité du recherche.................................................................................................................78
Choix d'un autre trajet lors d'un embouteillage........................................................................................79
Un trajet alternatif....................................................................................................................................80
Le Backend en écoute..............................................................................................................................81
Requête d'authentification par l'application.............................................................................................81
Liste des tableaux
Tableau 1: Besoins fonctionnels par acteur..............................................................................................20
Tableau 1: Caractéristiques matérielles de l’environnement du production............................................47
Tableau 2: Outils logiciels........................................................................................................................47
Introduction Générale
Le smartphone est devenu un élément essentiel de communication, de connexion, du jeu vidéo et
de navigation. Ceci a permis de développer des solutions à des problèmes diverses et complexes.
Android est couramment la plateforme dominante dans le marché mobile avec une pourcentage de
88 % au troisième trimestre de l’année 2016. Et avec un besoin de navigation rapide à travers du trafic
routier embouteillé, un smartphone Android devient une cible de développement des solutions de tel type
de navigation routière.
Dans ce contexte, s’inscrit notre projet qui s’intitule « Conception et développement d’une
application mobile pour la détection des embouteillages » qui a comme but de permettre à un individu de
savoir en temps réel où il y a des embouteillages et si possible de trouver un trajet plus rapide que le trajet
initiale embouteillé.
Notre application sera destinée au smartphones Android et s’appuyant sur l’API Google Maps,
l’API Google Maps Directions et un web service RESTful comme étant le Backend qui fait les calcules
complexes et gère l’authentification et les données concernant l’état du trafic, il est basé sur le framework
web.py.
Ce rapport est un synthèse des taches réalisées tout au long de la période de développement de la
solution. Il est découpé en cinq chapitres :
2. Présentation du projet
3. Solution proposée
4. Conclusion
1 Introduction
Dans ce chapitre, nous allons clarifier le contexte de notre projet. Nous introduisons
premièrement, le cadre général du projet. Par suite, nous donnons une présentation générale du projet en
expliquant la problématique lui donnant besoin. Pour mieux planifier notre travail, nous abordons dans
une étape subséquente à décrire et critiquer l'existant ainsi que la solution proposée. Nous terminons à la
fin par la présentation de l'approche de développement utilisée et nous présentons la démarche suivie pour
l'accomplissement de notre travail.
3 Présentation du projet :
Nous présentons dans cette partie le contexte de notre projet. Puis, nous expliquons la
problématique suivie par la critique de l’existant et à la fin citer la solution proposée.
3.1 Problématique :
Il est difficile de choisir un trajet rapide pour le transport. Ceci fait naître la nécessité de concevoir
une application qui assurera :
3.2 L’existant :
Il existe des applications qui répondes à la problématique. Elles sont :
3.2.1 Waze :
Waze est l’application qui a le plus grand nomber des utilisateurs. Elle fournit le chemin le plus
court avec des notifications de l’état routière (embouteillage, accident, etc ..).
4 Solution proposée :
Pour résoudre le problème, nous avons pensé à concevoir une application mobile sur la plateforme
Android qui permettra à un conducteur de trouve le chemin le plus court vers sa destination et de
contourner le trajets embouteillés.
5 Conclusion :
Ce chapitre a présenté la problématique et le besoins que notre solution doit les remplir. Le
chapitre qui suit fait décrire l’analyse et la spécification des besoins.
Chapitre 2 : Analyse et spécification des besoins
1. Introduction
5. Conclusion
1 Introduction
Suite à la proposition d’une solution théorique, nous allons aborder dans ce chapitre la phase de
spécification des besoins. Cette phase consiste à analyser le projet et exprimer ses exigences et ses besoins
pour assurer le développement d’une solution satisfaisante et utilisable d’où le succès du projet.
Dans ce chapitre, nous présentons la spécification des besoins auxquels doit répondre notre
application en tenant compte des acteurs qui l'utilisent. Puis, nous faisons une analyse compréhensive de
ces besoins fonctionnels et non fonctionnels, en utilisant la modélisation par les diagrammes de cas
d'utilisation.
Pour achever ces deux étapes nous allons rédiger un description contextuelle claire de besoins
fonctionnelles et non fonctionnelles de l’application.
UML 2.0 définie treize types de diagrammes répartis sur trois catégories :
3.2.1 Définition :
Un diagramme de cas d’utilisation donne un vision globale du comportement d’un système donné.
▪ Créer compte
▪ Gérer compte
▪ Gérer destination
▪ Suivre position : C’est un cas d’utilisation qui répond à un besoin non fonctionnel.
Il s’agit de permettre à l’utilisateur de suivre sa position en temps réel.
Gérer Compte :
Un utilisateur ne peut supprimer une destination que s’il a choisi une destination à priori.
S’il y a un embouteillage sur le trajet, l’utilisateur a la possibilité de choisir un trajet alternatif s’il
est fourni de l’API GoogleMaps.
Suivre position :
2. Conception générale
3. Conception détaillé
4. Conclusion
1 Introduction :
La conception est une phase vitale du développement de l’application. Elle permet de définir les
différents modules de l’application et de clarifier l’architecture de cette dernière.
Nous allons présenter l’architecture générale de l’application. Puis nous justifierons nos choix
architecturales. Enfin, nous présenterons l’abstraction orientée objet de l’application et du Backend, les
diagrammes entité-relation de la base des données, les diagrammes de séquence et les diagrammes
d’activités.
2 Conception générale :
La solution est structurée sur deux composantes :
▪ Le service web (RESTful backend) : fournit les données, assure l’authentification et fait les
calculs nécessaires.
▪ L’architecture 1-tiers :
En une architecture 1-tiers, les couches logicielles tournent sur une seule
composante matérielle. Alors on parle d’un système centralisé.
▪ L’architecture 2-tiers :
En une architecture 2-tiers, les composantes logicielles sont distribuées sur deux
tiers matériels, un tiers client et un tiers de données. Alors on parle d’un système distribué.
En une architecture 3-tiers, les composantes logicielles sont distribuées sur trois
tiers matériels :
▪ Vues statiques :
• Diagrammes d’activité.
• Les attribues d’une entité : Ils modélisent les propriétés d’un objet (ie, couleur de voiture).
• Les méthodes d’une entité : Ils modélisent les opérations qui peuvent être effectuées sur
une instance d’un objet.
• Les relations entre les entités : une entité peut être une généralisation des autres entités
filles(héritage) ou un élément composant d’une autre entité(agrégation/composition) ou
peut communiquer des avec des autres entités (association).
Diagrammes des classes de l’application mobile :
Le diagramme contient les classes les plus importantes, le plus possible indépendamment du
plateforme Android.
• Map : Présente la carte GoogleMaps sur laquelle sera affiché la position courante de l’utilisateur
(en utilisant le système GPS du mobile), la destination, le trajet entre la position courante et la
destination et tout embouteillage éventuelle.
• Point: C’est un point en espace qui a des coordonnées (type LatLng qui convient à un objet
représentant une latitude et une longitude du point).
• PolyLine: C’est la structure géométrique désigné par l’API GoogleMaps comme un ensemble des
points.
• Trajet: Le trajet est le chemin le plus convenable (plus rapide) entre la position courante de
l’utilisateur et la destination désirée il n’est qu’une abstraction autour d’un PolyLine.
• Embouteillage: Présente un embouteillage du trafic sur un chemin.
• SendCords : C’est la classe qui envoie à l’application mobile les coordonnées d’un embouteillage.
• Coordonnées : C’est la classe qui présente les coordonnées d’un embouteillage (longitude,
latitude).
Dans ce qui suit, nous allons présenter le diagramme d’activité pour un utilisateur de l’application.
• Après l’application entre une boucle de mise à jour du position de l’utilisateur et du trajet
entre la position courante et la destination
Chaque instance d’un classe, ou notamment un objet a une ligne de vie qui permet d’organiser
chronologiquement les messages envoyés ou reçus par un objet. Un message convient à un l’exécution
d’une méthode.
Le diagramme doit être lue de haut en bas. Au cours du vie d’un objet, il peut être activé ou
désactivé par la réception ou l’envoie d’un message.
▪ Authentification
▪ ChoisirDestination
• Pré-Condition : Rien
• Scénario nominal :
• Enchaînement alternatif:
• Pré-Condition : Rien
• Scénario nominal :
4. Si les champs sont valides la carte centrée sur la position courante de l’utilisateur s’affiche.
• Enchaînement alternatif:
• Scénario nominal :
• Enchaînement alternatif:
4.5 Une alerte s’affiche et l’acteur peut choisir un trajet alternatif s’il existe.
• Post-condition : Rien.
2. L’environnement du développement
3. Conclusion
1 Introduction
La phase de réalisation est celle qui met en œuvre l’étape du conception. Le choix des outils est
très important et il influence la qualité du produit final. Donc il faut bien choisir les outils adéquats selon
les besoins de production et le résultat qu’on désire achever.
Ce chapitre commence par la description de l’environnement matériel et des outils logiciels utilisés
utilisés pour implémenter l’application mobile et le Backend.
2 L’environnement de développement :
Nous allons présenter la configuration matérielle et logicielle de notre environnement de
production.
La figure si dessous représente un exemple de deux classes qui servent à faire l’addition, la
soustraction, la multiplication et la division.
‘nom_objet1’ : valeur,
[valeur],
……….. }
• Un autre objet
• Un tableau
• Un nombre
• Vrai / Faux
• null
Un objet, qui est un ensemble de couples nom/valeur non ordonnés. Un objet commence par
{ (accolade gauche) et se termine par } (accolade droite). Chaque nom est suivi de : (deux-points) et les couples
nom/valeur sont séparés par , (virgule).
Une valeur peut être soit une chaîne de caractères entre guillemets, soit un nombre, soit true ou
false ou null, soit un objet soit un tableau. Ces structures peuvent être imbriquées.
L’API Android est implémenté en Java et nous avons utilisé la version 8 du JDK.
3 Conclusion:
Nous avons présenté l’environnement de développement matériel et logiciel et les outils que nous
avons utilisé pour implémenté l’application mobile et le Backend.
Nous allons aborder le dernier chapitre qui expose le travail réalisé et une évaluation critique du
produit final.
Phase de réalisation, évaluation et critique des
limitations:
1. Introduction
2. Travail réalisé
3. Évaluation et critique
4. Conclusion
1 Introduction:
Ce chapitre présente le produit final et l’expose à l’aide des imprimes écrans. À la fin du chapitre,
nous allons faire une évaluation et un critique des limitations du produit final.
2 Travail réalisé:
L’interface de l’application mobile doit être le plus simple possible et le plus intuitive pour que
l’utilisateur ne trouve pas une difficulté d’utilisation.
2.1 Authentification :
L’interface de l’authentification contient le champ de Login et du mot de passe, l’utilisateur peut
choisir de rester connecté ou de créer un compte. La figure si dessous présente la vue d’authentification :
▪ Une case à cocher qui permet de suive la position courante avec le caméra.
http://addresse_backend/page
3 Évaluation et critique :
Nous avons réussi à créer une interface simple et intuitive pour l’utilisation mais malheureusement
le manque d’une source des données GPS (plusieurs utilisateur en mouvement) nous a obligé d’émuler un
embouteillage aléatoire à un rayon donnée de l’utilisateur courant.
La limite journalière des requêtes permises par l’API Google nous a obligé d’émuler seulement
deux embouteillages. Pourtant que nous sommes débutant en développement Android, nous avons essayé
le plus possible d’implémenter une application fonctionnelle.
4 Conclusion :
Dans ce chapitre nous avons présenté notre travail réalisé à l’aide des imprimes écrans. Nous
avons implémenté une interface basique qui aide l’utilisateur à choisir une destination et changer le trajet
s’il est possible lors d’un embouteillage. Malheureusement à cause de l’absence des outils de simulation du
mouvement de plusieurs utilisateurs sur une carte nous avons utilisé une simple émulation.
Conclusion Générale
Ce rapport fait un synthèse du travail réalisé dans le cadre du projet de fin des études en licence
appliquée en informatique. Le projet avait comme but de concevoir et développer une application mobile
qui aide un utilisateur (conducteur) de naviguer son chemin à travers les embouteillages.
Nous sommes arrivés à accomplir les principales fonctionnalités de l’application mobile mais
malheureusement le manque des données GPS nous a limité à une émulation de l’embouteillage d’où
l’absence des fonctionnalités de prédictions des ces derniers. Notre application est limité par l’API
GoogleMaps.
Ce projet a été une opportunité pour mieux comprendre le processus de développement d’une
application mobile. En effet, il nous a permis d’approfondir nos connaissances en développement orientée
objet, au développement des services web RESTful et la une meilleur compréhension des taches
asynchrones.
Notre application n’est qu’à sa première version. Il y a pleinement de fenêtre pour l’amélioration
et le développement incrémental. Nous envisageons comme perspectives de développer un outil de
simulation des mouvements des terminaux mobiles sur une carte, l’ajout un interface du commande vocale
et l’amélioration de l’interface de l’application.
Notre projet peut évoluer tant que nous sommes capables d’imaginer !