Département Informatique: Thème Application Mobile de Transport en Commun
Département Informatique: Thème Application Mobile de Transport en Commun
Département Informatique: Thème Application Mobile de Transport en Commun
Filière : Informatique
Thème
M.BOUKALA Président
𝐌𝐦𝐞 . DOUKHA Membre
Je dédie ce travail à mon très cher père, toi qui a toujours été de
bon conseil, toi qui a toujours fait preuve d’une sagesse et d’un
sang-froid à toute épreuve, toi qui m’a appris à réfléchir.
Je tient aussi à remercier tous les enseignants qui m’ont tout ap-
pris depuis mon arrivée à l’USTHB en 2014. Ce fut pour moi un
honneur que d’avoir été un de leurs étudiants.
Table des matières
1 Etude Préliminaire 2
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Description du contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 La Société d’Exploitation des Tramway (SETRAM) . . . . . . . . . . 3
1.2.2 La Société Nationale des Transports Ferroviaires (SNTF) . . . . . . . 3
1.2.3 RATP EL DJAZAÏR . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4 L’Etablissement de Transport Urbain et Suburbain d’Alger (ETUSA) 4
1.2.5 Société de gestion Des Gares Routières d’Algérie (SOGRAL) . . . . . 4
1.2.6 Types de tarification . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Solutions existantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1 Le site web www.sntf.dz . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Le site web www.setram.dz . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.3 Application mobile SNTF . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Solution proposée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Conception 9
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Acteurs et fonctionnalités du système . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Acteurs du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1.2 Acteurs du système . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Cas d’utilisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2.2 Hypothèses de travail . . . . . . . . . . . . . . . . . . . . . 11
2.2.2.3 Diagramme de cas d’utilisation de l’application Mobile . . . 11
2.2.2.4 Diagramme de cas d’utilisation global du site web . . . . . . 12
2.2.2.5 Diagramme de cas d’utilisation de la gestion des stations . . 13
2.2.2.6 Diagramme de cas d’utilisation de la gestion des tronçons . 13
2.2.2.7 Diagramme de cas d’utilisation de la gestion des lignes . . . 14
2.2.2.8 Diagramme de cas d’utilisation de la gestion des horaires . . 14
2.2.2.9 Diagramme de cas d’utilisation de la gestion des alertes . . . 15
2.2.3 Description des fonctionnalités du systèmes . . . . . . . . . . . . . . . 15
2.2.3.1 Definition - Diagramme de séquence . . . . . . . . . . . . . 15
TABLE DES MATIÈRES
3 Réalisation 25
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Environnement de developpement . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1 Langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1.1 HTML (HyperText Markup Language) . . . . . . . . . . . . 26
3.2.1.2 CSS (Cascading Style Sheets ou feuilles de style en cascade) 26
3.2.1.3 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1.4 PHP (PHP : Hypertext Preprocessor) . . . . . . . . . . . . 26
3.2.1.5 SQL (Structured Query Language ou langage de requête struc-
turée) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1.6 Le langage JAVA . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2 bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2.1 JQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3 Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3.1 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3.2 AngularJS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.4 APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.4.1 Maps JavaScript API de Google . . . . . . . . . . . . . . . . 27
3.2.4.2 Maps ANDROID API de Google . . . . . . . . . . . . . . . 27
3.2.5 Outils de développement . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.5.1 IntelliJ IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.5.2 WampServer . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.5.3 Android Studio . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Patron de concéption : Modèle-vue-contrôleur . . . . . . . . . . . . . . . . . 28
3.4 Interfaces du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.1 Interfaces du site web . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
TABLE DES MATIÈRES
Depuis toujours, l’homme n’a eu cesse de vouloir aller plus loin plus vite.
Pour cela, il a conçu des moyens de transport toujours plus rapides et plus sûrs.
L’histoire en témoigne, le transport est un poumon pour la civilisation, son
évolution et sa qualité sont indicateurs d’une société moderne. Le bon fonction-
nement des transports en commun est nécessaire à la productivité de nombreux
autres secteurs tels que : l’industrie, l’enseignement, le tourisme...etc. L’un des
critères de qualité d’un service de transport en commun est la disponibilité de
l’information vis-à-vis des usagers.
D’autre part, l’essor de l’informatique et son développement ont permis son
utilisation dans tous les domaines, elle est aujourd’hui présente dans tous les
aspects de notre vie quotidienne. L’apparition d’Internet et ensuite des smart-
phones ont bouleversé notre quotidien en introduisant une nouvelle manière de
consommer l’information.
Dans le cadre de notre projet de fin d’étude, nous réalisons une application
mobile permettant aux usagers de recevoir des informations concernant diffé-
rents moyens de transport, de consulter des horaires et de trouver des itinéraires
(qui peuvent être intermodaux) pour aller d’un endroit à un autre.
Nous étudierons tout d’abord le domaine des transports en commun en Algé-
rie afin de déceler et de comprendre les problématiques auxquelles nous devons
apporter des solutions. Ensuite, nous concevrons le système qui répond aux be-
soins dégagés dans la première étape. Enfin, nous passerons à la réalisation de
ce système.
1
CHAPITRE 1
Etude Préliminaire
2
CHAPITRE 1. ETUDE PRÉLIMINAIRE 3
1.1 Introduction
Cette étude est d’une importance capitale dans tout type de projet et d’autant plus
dans un projet de développement logiciel car elle permet de comprendre l’environnement du
système à réaliser, de préciser les difficultés qui font de sa réalisation une nécessité et de
le comparer aux solutions existantes. Ainsi, nous décrirons dans ce chapitre le secteur des
transports en commun en Algérie (principalement la capitale Alger), ses principaux acteurs, et
certains problèmes auxquels les usagers font face au quotidien. Ensuite nous illustrerons avec
quelques solutions web et mobiles qui existent déjà et les fonctionnalités qu’elles apportent.
Enfin nous décrirons la solution proposée dans ce projet.
1.3 Problématique
Avec tant d’options, certains usagers, les inhabituels surtout, ont du mal à se retrouver.
En effet, une majeure partie des informations concernant les moyens de transport en commun
telles que les stations desservies, les horaires, les tarifs ne sont disponibles que sur les sites
web de leurs opérateurs respectifs. Ces sites web ne sont accessibles que si l’usager à accès
à internet et le taux d’abonnés au réseau 3G est encore faible (37.5 % en 2015 [2]). Aussi,
la dispersion des informations sur les sites web des opérateurs fait que l’établissement d’un
itinéraire intermodal est une tâche fastidieuse pour l’usager qui doit consulter différents sites
CHAPITRE 1. ETUDE PRÉLIMINAIRE 5
web. D’où la nécessité d’avoir à disposition un outil informatique regroupant les informations
de plusieurs moyens de transport.
De plus, étant donné le nombre de personnes dont l’activité quotidienne dépend des trans-
ports en communs, il est primordial de fournir une information à jour, crédible et disponible
pour tous concernant ces transports pour prévenir en cas de panne, grève ou incident. Or,
l’usager est confronté aux différentes rumeurs sur les réseaux sociaux et ne sait pas à qui se
fier. Souvent, ce n’est qu’une fois sur place qu’on apprend qu’un transport n’est pas dispo-
nible, ce qui ne laisse pas de temps pour prévoir une alternative. Ce manque d’information
durant les périodes de perturbation a un impact considérable sur les travailleurs et sur les
étudiants, ceux-ci se retrouvent en retard et épuisés en début de journée, leur productivité
est alors grandement réduite. Il parait donc nécessaire de mettre à disposition des usagers un
moyen de recevoir cette information directement de la part de l’opérateur concerné.
Figure 1.b – Aperçu d’une recherche d’horaire sans résultat sur www.sntf.dz[1]
1.6 Conclusion
Dans ce chapitre, nous avons étudié le secteur des transports en commun en Algérie, ses
grands acteurs et les difficultés auxquels les usagers font face. Ensuite, nous avons fait un
aperçu des solutions existantes.
Cette étape nous a permis d’avoir une vision globale du travail à réaliser pour résoudre les
problèmes décelés. Dans le chapitre suivant, nous allons concevoir le système devant réaliser
les taches citées précédemment.
CHAPITRE 2
Conception
9
CHAPITRE 2. CONCEPTION 10
2.1 Introduction
Apres avoir étudié le contexte de notre projet et déterminé les problèmes auxquels nous
devons remédier, nous entamons la conception de notre système. Pour cela, nous utilisons le
langage UML.
« Le langage de modélisation unifié, de l’anglais Unified Modeling Language (UML),
est un langage de modélisation graphique à base de pictogrammes conçu pour fournir une
méthode normalisée pour visualiser la conception d’un système. Il est couramment utilisé en
développement logiciel et en conception orientée objet. »[22].
Dans un premier temps, nous identifierons les acteurs du système ainsi que les fonctionna-
lités auxquelles ils auront accès en utilisant des diagrammes de cas d’utilisation. Ensuite nous
détaillerons ces fonctionnalités à l’aide de diagrammes de séquences. Enfin, nous détaillerons
les données que le système devra manipuler à l’aide d’un diagramme de classes.
Description
— La fonctionnalité "Trouver itinéraires vers un lieu donné" permet à l’usager d’avoir
plusieurs itinéraires (s’il en existe), chacun étant optimal du point de vue d’un critère
bien particulier (temps, coût, correspondance...).
— La fonctionnalité "Suivre ligne" permet à l’usager de recevoir les alertes relatives aux
lignes qu’il empreinte souvent.
1. Une station intermodale est proche d’une autre station gérée par une autre entreprise
CHAPITRE 2. CONCEPTION 12
Remarque : Il est à noter que l’accès à toutes les fonctionnalités citées dans le diagramme
ci-dessus requiert une authentification.
CHAPITRE 2. CONCEPTION 13
Description
— Á la création d’une ligne, après la spécification des stations extrémités, les chemins
possibles entre celles-ci sont calculés. S’il existe un seul chemin, les tronçons qui le
constituent sont pris automatiquement. Sinon, ça sera à l’utilisateur de choisir.
— Une ligne étant une suite de tronçons, l’ajout/suppression d’une station à/d’une ligne
s’effectue en manipulant des tronçons tout en conservant le chainage.
Les alertes servent à l’entreprise de transport en commun à informer les usagers quand il
y a un changement de tarif ou d’horaire. Comme elles peuvent être utilisées lors de situations
exceptionnelles (grèves, incidents...etc).
L’itinéraire d’un tronçon est défini comme un ensemble de points geographiques ordonnés.
CHAPITRE 2. CONCEPTION 17
Pour construire une ligne, tous les tronçons doivent être préalablement créés.
Le calcul des chemins entres les extrémités se fait à l’aide d’un parcours en largeur.
Dans une ligne constituée des stations (S1 , ..., Sn ), on ne peut ajouter une station S entre
deux stations Si-1 et Si que si il existe un tronçon reliant S à Si-1 et un tronçon reliant S à Si .
Cette vérification n’est pas explicitée dans le diagramme ci-dessous car l’utilisateur ne peut
accéder à la fonctionnalité si la condition n’est pas déjà vérifiée.
CHAPITRE 2. CONCEPTION 18
Dans une ligne constituée des stations (S1 , ..., Sn ), on ne peut supprimer une station Si
se trouvant entre les deux stations Si-1 et Si+1 que si il existe un tronçon reliant celles-ci.
La suppression d’une ligne n’entraine pas la suppression ni de ses tronçons ni de ses stations.
CHAPITRE 2. CONCEPTION 19
Un tronçon ne peut être supprimé que s’il n’apparait dans aucune ligne. En revanche, la
suppression d’un tronçon n’entraine pas la suppression de ses stations extrémités. En effet,
une station peut être utilisée par plusieurs tronçons.
Une station ne peut être supprimée que si elle n’est contenue dans aucun tronçon.
CHAPITRE 2. CONCEPTION 20
Associations
— Pour les associations avec une cardinalité un à plusieurs, on ajoute à la relation déduite
de la classe avec une cardinalité plusieurs une clé étrangère qui est la clé primaire de
la relation déduite de la classe avec une cardinalité 1.
— Pour les associations avec une cardinalité plusieurs à plusieurs, nous ajoutons une troi-
sième classe dont la clé primaire est la composition des clés primaires des relations
déduites des classes concernées par l’association.
— Pour les associations un-un, on ajoute une clé étrangère dans la relation déduite de la
classe ayant une cardinalités minimale égale à 1. Si les deux cardinalités minimales sont
égales à 1, on fusionne les deux relations en une seule est la clé de l’une d’elle est prise
comme clé primaire.
Héritage
— première méthode : chaque classe concernée par l’héritage va correspondre à une rela-
tion. Une relation déduite d’une sous classe lui est associée une clé étrangère corres-
pondante à la clé primaire de la relation déduite de sa classe mère.
— deuxième méthode : on supprime la relation déduite de la classe mère en faisant migrer
ses attributs dans les relations déduites des classes filles.
— troisième méthode : on supprime les relations déduites des classes filles en faisant migrer
leurs attributs dans la relation déduite de la classe mère. Cette méthode implique une
gestion des nuls pour déterminer la classe de l’objet.
CHAPITRE 2. CONCEPTION 24
Les clés primaires sont soulignées et en gras. Les clés étrangères sont en gras et précédées
par un #.
2.4 Conclusion
A la fin de ce chapitre, nous avons une vision claire de notre système et de ses fonction-
nalités. Ayant détaillé les aspects statiques et dynamiques à l’aide d’UML, nous pouvons
maintenant passer à réalisation. Celle-ci sera développée dans le chapitre suivant dans lequel
nous présenterons les plateformes, outils, langages et frameworks que nous avons utilisé pour
réaliser notre système.
CHAPITRE 3
Réalisation
25
CHAPITRE 3. RÉALISATION 26
3.1 Introduction
Dans ce chapitre, nous allons présenter les outils, plateformes, langages, APIs, librairies
et frameworks avec lesquels nous avons réalisé le système. Nous donnerons aussi un aperçu
de celui-ci avec des illustrations du site web et de l’application mobile.
3.2.1.3 JavaScript
JavaScript est un langage de programmation qui est principalement employé dans les
pages web interactives. Il permet de dynamiser une page web en ajoutant des interactions
avec l’utilisateur, des animations, de l’aide à la navigation...etc. Il est devenu incontournable
dans tout projet de développement web.
3.2.2 bibliothèques
3.2.2.1 JQuery
jQuery est une bibliothèque JavaScript libre et multi-plateforme créée pour faciliter l’écri-
ture de scripts côté client dans le code HTML des pages web. Il est utilisé par plusieurs fra-
meworks tels que Bootstrap et AngularJS. Selon w3techs.com, 91.9% des sites web utilisent
JQuery.
3.2.3 Frameworks
3.2.3.1 Bootstrap
Bootstrap est une collection d’outils utile à la création du design (graphisme, animation
et interactions avec la page dans le navigateur ...etc.) de sites et d’applications web. C’est un
ensemble qui contient des codes HTML et CSS, des formulaires, boutons, outils de navigation
et autres éléments interactifs, ainsi que des extensions JavaScript en option.
3.2.3.2 AngularJS
AngularJS est un framework JavaScript libre et open-source développé par Google. Il
est fondé sur l’idée que la programmation déclarative doit être utilisée pour construire les
interfaces utilisateurs et les composants logiciels de câblage, tandis que la programmation im-
pérative excelle pour exprimer la logique métier. Il permet une synchronisation automatique
des modèles et des vues.
3.2.4 APIs
3.2.4.1 Maps JavaScript API de Google
Cette API permet d’afficher une carte géographique sur une page web, la personnaliser
et contrôler son comportement vis-à-vis de l’utilisateur. La documentation complète de cette
API peut être consultée sur [5].
3.2.5.2 WampServer
WampServer (anciennement WAMP5) est une plateforme de développement Web de type
WAMP, permettant de faire fonctionner localement (sans avoir à se connecter à un serveur
externe) des scripts PHP.
WampServer n’est pas en soi un logiciel, mais un environnement comprenant deux ser-
veurs (Apache et MySQL), un interpréteur de script (PHP), ainsi que phpMyAdmin pour
l’administration Web des bases MySQL [19].
Cette page permet à l’entreprise de transports en commun de gérer les horaires sur ses
différentes lignes. Les horaires sont groupés par ligne. Le formulaire d’ajout permet d’entrer
plusieurs horaires à la fois et de dupliquer un horaire pour plus de souplesse.
Cette page permet à l’entreprise de transports en commun de gérer ses alertes. Les alertes
affichées peuvent être filtrées par ligne ou par validité.
CHAPITRE 3. RÉALISATION 30
Cette page permet à l’entreprise de transports en commun de gérer son profil (modification
du logo affiché aux usagers et du mot de passe d’authentification).
Cette page permet à l’entreprise de transports en commun de gérer ses stations, tronçons
et lignes (ajout, suppression, modification). Nous utilisons une carte qu’on enrichie avec les
données de l’infrastructure propre à l’entreprise en question.
CHAPITRE 3. RÉALISATION 31
3.5 Conclusion
Dans ce chapitre, nous avons décrits l’environnement de travail (outils et langages) qui
nous a permis de réaliser notre système constitué d’un site web et d’une application mobile.
Nous avons aussi donné un aperçu des différentes interfaces du système.
Conclusion Générale
Ce modeste travail avait pour objectif d’aboutir à un système permettant aux usagers des
transports en communs d’avoir accès aux informations les concernant à partir d’un smart-
phone. Pour cela, nous avons d’abord étudié le contexte des transports en communs en Algé-
rie pour en déceler certains inconvénients. Ensuite, nous avons utilisé le langage UML pour
concevoir un système permettant de les résoudre. Enfin nous avons implémenté le système
en une partie web et une partie application mobile.
Ce projet nous a permis de :
— Gagner en expérience en développement web et mobile.
— Acquérir une expérience quant à la réalisation de projets.
— Appliquer les connaissances acquises pour concevoir une solution informatique.
— Appliquer le patron MVC pour un projet de développement.
— Nous initier à la formalisation de problèmes.
— Apprendre à rédiger en LATEX.
Perspectives
Bien évidemment, ce travail est perfectible est plusieurs améliorations peuvent lui être ap-
portées. Nous en citons :
— Prendre en compte d’autres méthodes de tarifications en plus de celles utilisées actuel-
lement tel que les abonnement et les tickets interopérables.
— Prendre en compte les tronçons à sens unique pour mieux répondre aux besoins des
transports à réseau routier.
— Permettre aux entreprises de transport en commun d’avoir accès à des statistiques
concernant l’utilisation de l’application mobile par les usagers.
— Introduire des fonctions de pondération multicritère lors du calcul d’itinéraire.
— Mettre en cache les données de transport sur le smartphone pour éviter de recharger
les données à chaque démarrage et ainsi économiser en ressources réseau.
— Améliorer la sécurité du système.
Bibliographie
Pseudo-code :
Fonction Disjkstra(Graphe, source)
— créer Q une liste de nœuds
— pour tout nœud v ∈ Q faire
— dist[v] ← +∞
— prev[v] ← ∅
— ajouter v à Q
— dist[source] ← 0
— tant que Q non vide faire
— u ← nœud dans Q avec dist[u] minimum
— retirer u de Q
— pour chaque voisin v de u
— alt ← dist[u] + poids(u, v)
— si alt < dist[v] alors
— dist[v] ← alt
— prev[v] ← u
— fsi
— fait
— fait
Résumé
Ce projet consiste en la réalisation d’une application mobile permettant aux usagers de
recevoir des informations concernant différents moyens de transport, de consulter des horaires
et de trouver des itinéraires (qui peuvent être intermodaux) pour aller d’un endroit à un autre.
D’où la nécessité d’accompagner l’application d’un site web permettant aux entreprises gérant
ces transports de l’alimenter en données.
Ce projet a débuté par une étude préliminaire du secteur des transports en communs en
Algérie (plus précisément sur Alger). Par la suite, nous avons suivi une phase conceptuelle
durant laquelle nous avons détaillé et décrit les fonctionnalités du système à l’aide du langage
UML. Enfin, nous avons réalisé le site web et l’application mobile en utilisant différents
langages et outils tel que HTML, PHP et JAVA.
Mots clés
UML, Développement ANDROID, Développement web, JAVA, PHP.