Supérieur, de la Recherche
Scientifique et des
Technologies de l'Information
et de la Communication
*** * ***
Institut Supérieur des
Etudes
Technologiques de Radés
Encadré par :
Encadreur Entreprise : Mr. Anass Saïd
Encadreur ISET Radés : Mme. Eya Cheikh
1
Dédicaces
"Je vous dois ce que je suis aujourd’hui et ce que je serai demain et je ferai
toujours de mon mieux pour rester votre fierté et ne jamais vous décevoir...»
ma reconnaissance.
cousines…
À toute personne qui a gravé ma vie par un mot qui m’a orienté vers le bon
chemin...
Sondes JAMI
Dédicaces
Rimeh MOUSSI
Remerciements
La révolution mobile transformera la plupart des activités des entreprises au cours des
dix prochaines années. Elle sera le déclencheur d'une transformation encore plus radicale vers
les systèmes d'engagement. La raison clé de ce phénomène est que l'engagement mobile
habilite les personnes à entreprendre l'action prochaine la plus probable dans leur contexte
immédiat et au moment où ils en ont besoin.
Avec la multiplication des plateformes mobiles, la question du développement
multiplateforme s’est rapidement posée, afin de tenter de réduire les couts de développement.
Ces technologies permettant aux utilisateurs un accès rapide et facile à l’information,
c’est dans cette optique qu’intervient notre projet de fin d’études, nous allons donc concevoir
et développer deux applications, une application web et une autre mobile qui doivent
permettre de gérer et de contrôler la réservation des tickets.
Finalement, on peut dire que notre projet est constitué :
D’une part, une application mobile qui doit offrir aux bénéficiaires la possibilité de réserver
un ticket sans se déplacer auprès de l’entreprise qui doit être abonnée dans la plateforme, et de
les notifier à l’arrivée de leur tour.
D’autre part une application web qui permet à l’utilisateur de faire le paramétrage,
l’administration et les statistiques sur l’utilisation de l’application.
Chapitre 1 : Cadre du projet et méthodologie
L'étude préliminaire est la première phase de tout projet réussi ; Ainsi, ce chapitre va
servir dans un premier temps à la présentation de l'organisme d'accueil LYNA ICT. Nous
définissons dans un deuxième temps le sujet et l'objectif principal du projet. La deuxième
partie sera consacrée à la définition de la méthodologie et le formalisme adoptée lors de la
réalisation de ce projet.
2. Etude de l’existant
L'étude de l'existant est une phase importante pour bien comprendre le système actuel. Il a
pour objectif d’étudier et de dégager les lacunes du système existant et de proposer les
solutions adéquates et définir les objectifs à atteindre au titre de perfectionnement.
Il existe deux cas lorsque l’on procède à l’étude de l’existant :
Soit le produit existe déjà, alors il faut l’améliorer.
Soit le produit n’existe pas, il faudra donc le créer.
Nous allons procéder par une approche mixte associant les deux procédés. Dans la
première partie, nous nous focaliserons sur l’analyse de l'existant : Critique et solutions.
Figure 2: file d'attente aux services des douanes des grands aéroports
Les files d'attente peuvent aussi ne pas ordonner les individus dans l'espace, mais
instaurer un ordre par le biais de tickets numérotés. Ce peut être le cas dans la salle
d'attente d'un service public (bureaux de poste, sécurité sociale,…).
3. Critique de l’existant
La critique du système constitue une étape utile et importante. Elle a pour but de porter un
jugement objectif afin de déceler les insuffisances éventuelles rencontrées au cours de l'étude
de l'existant en vue de proposer un système plus fiable que le système ancien.
Pour cela, lister les établissements servant un nombre important de tickets (Municipalité,
Bureau de poste, CNAM…) :
Services L'état civil légalisation Service des Service des affaires sociales,
affaires culturelles, de la jeunesse
économiques et des sports
Nombre des 1053 950 1033 965
clients par jour
4. Solution proposée
Actuellement il n’existe aucune application qui gère notre domaine d’études. En effet
ce besoin touche nos vies quotidiennes, on propose alors une solution pour éviter la perte de
temps dans les salles d'attente d'un service public.
Pour ce faire, on propose de réaliser un système composé d’une application web et une
application mobile pour gérer et surtout pour réserver un ticket pour une agence donnée sans
se déplacer.
SCRUM
Extreme Programming (XP)
Rapid Application Development (RAD)
Crystal clear
Si nous voulons définir l’agilité en quelques mots : c’est l’intelligence organisationnelle et
technologique, associée à de l’énergie de groupe dans le but d’être immédiatement efficients.
Suite à l’étude de plusieurs méthodologies et de leur convenance à notre projet, nous avons
opté pour l’utilisation de la méthode SCRUM.
6.2. SCRUM
La méthode Scrum est une méthode agile, créée en 2002, dont le nom est un terme
emprunté au rugby qui signifie « la mêlée ». Elle s'appuie sur le découpage des projets en
itérations encore nommées « sprints ». [1]
SCRUM correspond plus à une démarche de travail qu’à une méthode. Son avantage
principal est sa capacité à obtenir un résultat final dans un laps de temps court tout en
s’appuyant sur une équipe cohérente. Cette équipe va s’atteler à atteindre un objectif
progressif qui évoluera au cours de cycles successifs et itératifs appelés Sprints. La durée d’un
sprint varie entre 15 et 30 jours, et à sa fin, l’équipe présentera un produit correspondant aux
spécificités énoncées au début du cycle. Parmi les atouts du concept de sprint (court et rapide)
est qu’il permet au propriétaire du produit de changer la priorisation des caractéristiques
demandées au fur et à mesure de l’avancement du développement.
La fin de chaque sprint est une occasion de voir le produit courant fonctionner, et de
prendre la décision de livraison ou du lancement d’un nouveau sprint d’amélioration du
produit.
Scrum est :
Léger
Simple à comprendre
Difficile à maîtriser
Durant un développement d’un projet avec la méthode Scrum il y a plusieurs étapes à suivre
avec une démarche spécifique et une interaction avec plusieurs intervenants.
Figure 8: pratique de SCRUM
Le Product Owner :
C’est le propriétaire du produit et le chef d’orchestre qui valide ou décline le produit délivré.
L’une de sa responsabilité principale est la définition des besoins du produit à développer et la
rédaction des spécifications. Il est le seul gérant du Backlog du produit.
Le Scrum Master :
Il est chargé de veiller au bon déroulement et application de la méthode Scrum et au respect
de ses objectifs. Il veille également à ce que les éventuels obstacles que l’équipe peut
rencontrer soient effacés. Il assure la bonne progression de l’équipe ainsi que sa productivité.
Team Membres :
Ce sont les membres de l’équipe qui ont à leur charge le développement et la réalisation d’un
produit fiable et utilisables. Ses membres sont soit développeur, soit architectes, soit testeurs.
Les principaux artéfacts qu’on peut les générer lors de l’utilisation de la méthode Scrum :
Le « Product Backlog » : (Carnet de produits)
C’est un outil de collecte des fonctionnalités attendues ou exigées par le client (User Story),
et qui évolue à chaque Sprint. [2]
Le « Sprint Backlog » : (Carnet d'itération)
Il contient la liste des tâches qui doit être accomplie pour mettre en œuvre les fonctionnalités
prévues pour un Sprint particulier. Idéalement, chaque tâche dans un sprint est relativement
courte et peut-être captée par un membre de l'équipe plutôt que d'être affecté. [3]
« Burndown charts » : (Graphique d’avancement).
C’est un diagramme qui permet de visualiser l’avancement des sprints et du projet dans sa
globalité, c’est l’indicateur temporel de l’évolution des tâches en cours dans le Sprint. [2]
L’axe vertical présente la quantité de travail à faire et l’axe horizontal les jours de travail.
La durée de vie d’un projet en Scrum est rythmée par un ensemble de réunions clairement
définies et strictement limitées dans le temps.
Planification d'itération « Sprint Planning »
Au cours de cette réunion, l'équipe de développement sélectionne les éléments prioritaires du
« Product Backlog » qu'elle pense pouvoir réaliser au cours du sprint en accord avec le «
Product Owner »
Mêlée quotidienne « Daily Scrum Meeting »
La mêlée quotidienne (Daily Scrum) est un événement limité à 15 minutes au cours duquel
l’équipe de développement synchronise ses activités et crée un plan pour les prochaines 24
heures. Pour ce faire, l’équipe inspecte le travail effectué depuis la dernière mêlée quotidienne
et envisage le travail qui peut être réalisé d’ici à la prochaine. [4]
Chaque membre de l'équipe répond à trois questions :
Qu'as-tu accompli depuis la dernière mêlée ?
Que vas-tu accomplir jusqu'à la prochaine mêlée ?
Est-ce que des éléments te bloquent dans ton avancement ?
Et si on doit obtenir des informations de la part du client, c’est le Product Owner qui doit
s’assurer de le contacter pour obtenir les réponses.
Revue d'itération « Sprint Review »
La revue de l’itération est organisée à chaque fin de cycle de développement. C’est une
présentation des différentes fonctionnalités développée durant le cycle. Le propriétaire du
produit aura l’occasion d’évaluer le produit et de le comparer à ce qui a été spécifié lors de la
séance de planification d’itération. Une fois la revue achevée, un nouveau cycle d’itération
démarre et relance ainsi la boucle : planification, développement et revue. Il s’agit là d’un
point de contrôle journalier pour toute l’équipe, limité à 15 min, dans lequel ils alignent et
synchronisent leur travail pour optimiser la planification des prochaines 24 heures.
Rétrospective de sprint :
La rétrospective de Sprint survient après la revue de Sprint et avant la prochaine réunion de
planification de sprint. C’est une réunion limitée à trois heures pour les sprints d’un mois.
Pour les Sprints moins longs, la réunion dure habituellement moins longtemps. Le Scrum
Master s’assure que la réunion a lieu et que les participants en comprennent le but. [4]
Une fois la méthodologie de conception choisie, il convient maintenant de choisir quel
langage de modélisation on a adopté dans notre projet.
Conclusion
Dans ce premier chapitre, nous avons commencé par présenter notre organisme
d’accueil LYNA-ICT. Ensuite, nous avons décrit le contexte du stage, puis nous avons dressé
la problématique de notre projet, le tout en fournissant les critiques et les solutions
envisageables.
Enfin nous avons étayé le choix de la méthodologie de travail utilisée SCRUM, et par la suite
nous nous dirigerons naturellement vers la planification et architecture.
Chapitre 2 : Planification & architecture
Durant la période de stage la figure suivante conclut la planification qu’on suivra pour la
gestion de notre projet :
Remarque :
La date de fin du sprint est fixée au début du sprint (elle est même définie avant). Elle
ne change pas, même si l’équipe ne réalise pas tout ce qu’elle imaginait faire. L’évaluation de
fin de sprint permettra d’inspecter ce qui a été fait et d’en tirer des conséquences pour la suite.
Maintenant, nous allons présenter les différents besoins fonctionnels de notre application
exprimés précédemment d'une manière informelle en utilisant le digramme de cas d'utilisation
d'UML initial. [6]
Figure 15: Diagramme de cas d'utilisation initial d'une application back office web
Figure 16: Diagramme de cas d'utilisation initial d'une application front office mobile
1..1
1..1
ticket réserver
- id_ticket : int
- QrCode : String
1..* + ticket () : void
+ toString () : String
agence
- id_agence : String 0..*
- libelle : String
- adresse : String
1..*
+ getLibelle () : String
+ getAdresse () : String
+ setLibelle () : void appartenir à
+ setAdresse () : void
1..* + agence () : void 0..1
+ toString () : String
service
- id_service : int
- libelle : String
+ getLibelle () : String
+ setLibelle () : void
+ getID () : int
+ service () : void
+ toString () : String
Conclusion
Toute au long de ce chapitre, nous avons préparé notre planification de travail pendant
laquelle on a identifié l’équipe de projet ainsi qu’on a construit notre Backlog de produit en se
basant sur les besoins fonctionnels et non fonctionnels. Finalement nous avons mentionné le
découpage de notre release en des sprints.
Dans la partie qui suit, Nous allons enchainer à présenter avec notre premier sprint « gestion
des comptes»
Chapitre 3 : Sprint 1 - Sprint Gestion des comptes
Dans le chapitre précédent, nous avons défini ce qu'est un sprint : une succession de
tâches effectuées par les parties prenantes de la méthodologue Scrum afin d'atteindre l'objectif
prédéfini par l'équipe.
Le chapitre en cours quant à lui traiter les "users stories" de notre sprint en les classant
dans des features qui pourront s'intégrer à une release et repartis en users stories. Une question
s’impose avant même d'initier le premier sprint : « Pourquoi faisons-nous ce sprint ?». La
réponse devra être compréhensible, non pas au sein de l'équipe, mais surtout en dehors.
Comme détaillé dans le premier chapitre, le Sprint Backlog est défini au cours de la
réunion de planification : il s’agit de la liste des tâches que l’équipe Scrum doit réaliser durant
le Sprint dans le but de transformer un ensemble d’éléments du carnet de commandes dans
une version préliminaire du produit finit répondant aux exigences prédéfinies.
1 En tant qu’un utilisateur, je 1.1 Ajouter un « user » dans le web API Sondes
peux créer mon compte et
Jami
m’authentifier.
1.2 Ajouter les fonctionnalités de Rimeh
l’affectation et de l’authentification
MOUSSI
dans le contrôleur de l’application
client.
2 En tant qu’un utilisateur je 2.1 Afficher un « user » dans le web API Sondes
peux afficher mon profil.
2.2 Ajouter la méthode de la récupération Rimeh
qui consommera le web services
Sondes
4 En tant que un utilisateur, je 4.1 Modifier un « user » dans le Web API Rimeh
peux modifier mon profil.
4.2 Ajouter la méthode de modification Sondes
de mon profil dans la partie client
Dans cette section, nous allons illustrer quelques prototypes des interfaces de ce sprint
pour y mettre en évidence les fonctionnalités et bien les comprendre.
Prototype de l’interface "s’authentifier"
ACTEUR
CAS D’UTILISATION
Créer compte
Afficher compte
Mettre à jour compte
Utilisateur Supprimer compte
S’authentifier
Ces descriptions textuelles ont permis de dessiner les scénarios d’exécution de chaque
user Case qui permet de mettre ensuite la création des diagrammes de séquence système
simple et facile.
Acteur Utilisateur
Précondition Le login et mot de passe sont corrects
Post condition L’utilisateur est authentifié
1-L’utilisateur saisi son login et son mot de passe
2-Il clique sur le bouton « se connecter »
Description du scénario principal 3-Le système vérifie les informations saisies par
l’utilisateur et affiche l’interface de la plateforme.
Acteur Utilisateur
Précondition L’utilisateur n’a pas de compte et a choisi l’option «
créer compte »
Post condition Le compte est créé
1- L’utilisateur remplit le formulaire d’inscription
Description du scénario principal 2- Il clique sur le bouton « créer »
3- Le système affiche un message «compte est créé»
L’utilisateur clique sur le bouton « Mon compte ». Par la suite, le système affiche le
profil. Ce qui permettra à choisir l’une des deux options « modifier » où « supprimer » le
compte.
Acteur Utilisateur
Précondition L’utilisateur doit être authentifié
Acteur Utilisateur
Précondition L’utilisateur doit être authentifié
Collection : users
Document : user
_id: String
Nom : String
Prénom : String
4. Implémentation
La phase d’implémentation, plus connue sous le nom de phase de développement
consistera à implémenter les "user stories" résultantes des phases précédentes.
{ "_id" : ObjectId("574aa7f15c70661c06d15fdb"),
"nom" : "moussi",
"prenom" : "azouz",
"adresse" : "tunis",
"email" : "rimeh.moussi@gmail.com",
"numtelph" : "58888555",
"username" : "admin",
"hash" : "$2a$10$WkCgivFIlxO3CQgMg0LayekJmh3V7Zfz.Em5yn1Cpiaj4.twq9DFi" }
Dans le cadre d’une application web du type Single Page Application (SPA) peut se poser
la problématique de l’authentification. Au-delà de l ‘identification HTTP, pour gérer
l’authentification d’un utilisateur on se basera sur ExpressJs pour le serveur et AngularJS pour
le client. Et pour assurer la sécurité de notre application nous avons utilisé de nouvelles
approches, l’authentification à base sur un jeton signé envoyé au serveur à chaque demande
c’est qu’on appelle le JWT [9] (JSON Web Token) et la fonction bcrypt [10] de node js pour
hacher le mot de passe de l’utilisateur.
5. Test
L’approche Agile considère les tests comme une phase cruciale des projets. Dans la
majorité des autres méthodes, les tests ne se front qu’après la fin du développement. Pour
Scrum et les méthodes agiles en général, les tests sont intégrés dans chacun des sprints
jusqu’à la livraison du produit final.
Donc, chaque sprint doit se terminer par l’indispensable phase de test. Ces tests sont les
seuls garants d’une version de qualité car ils permettent de vérifier les résultats obtenus lors
de l’étape de développement.
On effectuera quelques jeux d’essai pour tester les services web grâce à l’extension
Postman et on testera l’application elle-même.
Conclusion
Tout à long de ce chapitre, nous avons réussi à réaliser notre premier sprint « Gestion du
compte» l’analysé et pu développer. Dans le prochain chapitre, notre effort sera focalisé sur la
réalisation de notre deuxième sprint « Gestion des centres des services ».
Chapitre 4 : Sprint 2 - Sprint Gestion des centres des services
Dans ce chapitre, nous allons présenter notre deuxième sprint. A l’issue de ce dernier
nous avons donc obtenu une deuxième version de notre application.
Ce chapitre correspond à la tous ce qui est mise à jour à faire sur les établissements,
les agences et les services.
Le tableau ci-dessous regroupe toutes les fonctionnalités qui vont être développées au sein
de ce sprint.
1.1.Backlog Product
Le tableau ci-dessous regroupe toutes les fonctionnalités qui seront développées au sein de
ce sprint :
Sondes
Sondes
Rimeh
7 En tant qu’un utilisateur je peux 7.1 Supprimer une « agence » dans le Sondes
supprimer une agence. Web API
Rimeh
Rimeh
10 En tant que un utilisateur, je peux 10.1 Afficher les « services » dans le Sondes
lister tous les services, les services web API
d’un établissement ou bien d’une
agence donnée.
10.2 Ajouter les fonctionnalités de Sondes
l’affichage dans le contrôleur de
Rimeh
l’application client.
Sondes
ACTEUR
CAS D’UTILISATION
Créer un établissement
Créer une agence
Créer un service
Afficher la liste des établissements
Afficher la liste des agences
Utilisateur Afficher la liste des services
Modifier établissement
Modifier agence
Modifier service
Supprimer établissement
Supprimer agence
Supprimer service
Acteur Utilisateur
Précondition Utilisateur doit être authentifié et a choisi
l’option « gestion des établissements»
Description du scénario principal 2-Il clique sur le bouton « créer » ou « liste des
établissements »
3-Le système affiche la page selon le lien choisi
Ajouter établissement
Modifier établissement
Figure 36 : Diagramme de séquence détaillé du cas modifier établissement
Acteur Utilisateur
Précondition Utilisateur doit être authentifié et a choisi
l’option « gestion des agences»
Supprimer agence
Figure 39 : Diagramme de séquence détaillé du cas supprimer agence
Acteur Utilisateur
Précondition Utilisateur doit être authentifié et a choisi
l’option « gestion des services»
5.1. Diagramme de classe global de cas d’utilisation « Gérer les centres des
services»
Après tous le travail de spécification et de conception, nous pouvons maintenant
construire le nouvel incrément de notre diagramme des classes en ajoutant les différents
éléments (classes, associations, attributs, etc.) déduits à partir des activités précédentes.
établissement
- id_établissement : int
- libelle : String
+ getLibelle () : String
+ setLibelle () : void
1..1
service 1..*
- id_service : int
- libelle : String agence
+ getLibelle () : String - id_agence : String
1..* - libelle : String
+ setLibelle () : void
+ getID () : int - adresse : String
+ getLibelle () : String
+ getAdresse () : String
1..*
+ setLibelle () : void
+ setAdresse () : void
5.2. Schéma de la base des données : Gestion des centres des services
On pourrait modéliser notre collection <<établissement>> de la façon suivante :
Collection : établissements
Document : établissement
_id: String
Libellee: String
Agence :{
_id : String
Libellee: String
Addressee: String
Service :{
_id : String
Libellee: String
….
6. Implémentation
Schéma de la base de données « Etablissement »
{
"_id" : ObjectId("57547e94cb215c188a69944c"),
"libelleEtb" : "CNAM",
7. Test
Test des services web
Cette méthode invoque la liste des établissements
Conclusion
A la fin de ce chapitre, nous avons réussi à produire un incrément ayant suffisamment
de valeur pour le client.
Dans le chapitre qui suit, notre effort sera consacré pour produire un nouveau sprint couvrant
les fonctionnalités de «Statistiques».
Chapitre 5 : Sprint 3 - Statistiques
Dans le chapitre précédent, nous avant présentait notre deuxième sprint. A l’issue de
ce sprint nous avons donc obtenu une deuxième version de notre application.
Le tableau ci-dessous regroupe toutes les fonctionnalités qui vont être développées au sein
de ce sprint.
Rimeh
ACTEUR
CAS D’UTILISATION
Acteur Utilisateur
Précondition
Utilisateur doit être authentifié et a choisi
l’option « statistiques»
établissement
- id_établissement : int
- libelle : String
+ getLibelle () : String
+ setLibelle () : void
1..1
service 1..*
- id_service : int
- libelle : String agence
+ getLibelle () : String - id_agence : String
1..* - libelle : String
+ setLibelle () : void
+ getID () : int - adresse : String
+ getLibelle () : String
+ getAdresse () : String
1..*
+ setLibelle () : void
+ setAdresse () : void
On pourrait utiliser notre collection <<établissement>> que nous avons déjà présenté dans le
sprint précédent.
5. Test
Interface le nombre des agences par établissement
Conclusion
1. Spécifications fonctionnelles
Au sein de ce sprint, Les user stories va passer par les quatre étapes du cycle Scrum, plus
précisément, l’analyse, la conception, le développement et on achève les tests.
3 En tant que client, je 1.1 Réaliser les diagrammes de cas Rimeh MOUSSI
d’utilisation, de séquence système, de
veux consulter la liste
classe, de séquence détaillée du cas «
des agences ayant un Consulter agence dans le maps »
service donné et ma 1.2 Développer le cas «Consulter agence» Sondes JAMI
position dans maps.
4 En tant que client, je 1.1 Réaliser les diagrammes de cas Sondes JAMI
d’utilisation, de séquence système, de
veux réserver un ticket
classe, de séquence détaillée du cas
et faire la notification «Réservation un ticket »
de tour 1.2 Développer le cas «Réserver ticket» Rimeh MOUSSI
Après la réservation,
Affiche la liste des remplir le formulaire de
établissements, la notification de tour.
Affiche la liste des
Puis, le client sélectionne agences les plus
un parmi cette liste proches dans maps
Réserver ticket
Client
Ces descriptions textuelles ont permis de dessiner les scénarios d’exécution de chaque user
Case qui permet de mettre ensuite la création des diagrammes de séquence système simple et
facile.
Acteur Client
3. Conception
3.1. Diagramme de classe
client
- emailClient : String
+ getEmail () : String
+ setEmail () : void
+ client () : void
+ toString () : String
1..1
1..1 réserver
ticket
- id_ticket : int
- QrCode : String
+ ticket () : void
+ toString () : String
{ "_id" : ObjectId("574ad27c3ea0f78f78f2d556"),
"IDetablissement" : "5743f48156fa1b72d9dc3d4d",
"ticket_en_cours" : 2,
"der_ticket_reserv" : 14,
5. Test
Dans ce chapitre nous avons présenté et détaillé les différentes phases de sprint «
Mobile » tels que la spécification fonctionnelles, les diagrammes, implémentation et test.
Introduction
Dans ce dernier chapitre, nous allons présenter la phase ultime de notre cycle de
développement avec Scrum qui s’intitule : phase de clôture plus connue sous le nom de sprint
de stabilisation. Il s’agira de définir les différents outils technologiques et l’environnement de
développement auxquels nous avons eu recours.
Ensuite, nous présenterons une schématisation des différentes tâches effectuées au cours de
notre stage.
1. Environnement de développement
1.1. Environnement matériel
Voici les caractéristiques techniques des machines que nous avons utilisées :
Ordinateur
Ram 6 Go 4 Go
Rédaction du rapport :
Conception :
Test :
Implémentation :
Interpréteurs de commandes :
Prototype :
Pencil : est un logiciel de création de maquettes
typographiques libre et gratuit développé par Evolution Solutions
(Evolus). Il est utilisé afin de créer des diagrammes et des
maquettes d'interface graphique de logiciels.
Gestion du projet :
MEAN JS
Application mobile
Application web
Front office
Back office
Administrateur
JSON
Client
Service Web
MongoDB
Figure 70: Architecture générale de l'application
Le processus de l’application qui admet une architecture orientée service se fait comme suit :
L'échange de données entre la partie back office (Application web sous le patron MVC)
et le web API se fait grâce au protocole moderne http, même chose pour la partie front office
(Application mobile hybride), les données sont sous format JSON.
Les systèmes qui suivent les principes de l'architecture REST sont souvent appelés RESTful.
Les web services de type REST consistent à des méthodes de type GET, POST, PUT
ou bien DELTE.
Les web services sont des composants distribués qui offrent des fonctionnalités aux
applications au travers du réseau en utilisant des standards ouverts. Ils peuvent donc
être utilisés par des applications écrites dans différents langages et exécutées dans
différentes plateformes sur différents systèmes. Les services web utilisent une
architecture distribuée composée de plusieurs sites ou systèmes différents qui
communiquent sur le réseau. Ils mettent en œuvre un ensemble de normes et standards
ouverts qui permettent aux développeurs d’implémenter des applications distribuées
internes ou externes en utilisant des outils différents.
L’architecture REST n’est pas un protocole en soi, ni une technologie, mais une
"philosophie" de l’utilisation du Web. Le protocole utilisé ici est simplement HTTP
avec ses méthodes (GET, POST et les autres...). Cette philosophie estime qu’il n’est,
dans bien des cas, pas nécessaires de faire appel aux couches d’abstraction proposées
par SOAP et que les méthodes de HTTP, combinées avec de bonnes URIs (Uniform
Resource Identifier), suffisent amplement dans la majorité des cas.
Il est facile de voir que la méthode la plus simple est REST, qui a l’avantage énorme
de ne pas ajouter une couche d’abstraction des données qui n’en ont pas forcément
besoin. Cette méthode été retenu pour la réalisation de notre application.
Enfin, l’utilisateur aura la possibilité d’utiliser l'application à travers un navigateur.
Modèle : Il s’agit des données et de l’état de votre application web. En général, ces
données sont représentées par un ensemble de classes qui permettent d’accéder à une
base de données, mais les données pourraient tout aussi bien être stockées dans des
fichiers ou utiliser des services.
Vue : C’est l’interface qui affichera les données, Il s’agira globalement de code
HTML et de CSS. Le but de la vue est de présenter les données issues du modèle mais
sans les modifier, sans en interpréter le contenu.
Contrôleur : il fait le lien entre la vue et le modèle. Le contrôleur gère les interactions
avec l’utilisateur et détermine quels traitements doivent être effectués pour une action
données.
Figure 72: Architecture du patron MVC
3. Gestion de projets
3.1. Planning des histoires
Les figures suivantes présentent les tableaux de la répartition des tâches pour les membres de
l’équipe de développement pour les quatre sprints :
Conclusion
Au cours de ce dernier chapitre, nous avons essayé de présenter les différents travaux qui
contribuent du bon déroulement de notre projet.
Ce chapitre engendre la fin de cycle de développement Scrum, en effet on obtient le fruit du
travail exécutable avec la présentation de technologies adoptées et diagramme de Gantt.
Conclusion générale & perspective
Ionic Framework est un mélange d’outils et de technos pour développer des applications
mobiles hybrides rapidement et facilement. Il s’appuie sur AngularJS pour la partie
application web du Framework et sur Cordova pour la partie construction des applications
natives. Ce Framework open source permet de développer une application déployable sur
plusieurs environnements tels qu’un site web ou une application mobile pour des systèmes
tels qu’Android ou iOS ou Windows Phone…
Historique
Ionic va vous permettre de développer une application web qui aura l'air d'une
application native. Elle en partagera également certaines capacités comme l'accès aux
éléments systèmes. C'est ce qu'on appelle une application hybride. La majeure partie de son
code est en technologie du web (JavaScript/html/css) et pour tout le reste, il y a des plugins
qui font l'interface entre le smartphone et votre application.
Ionic 1 est basé sur Cordova et Angular 1. Il fournit des briques qui vous permettront
de créer une application proche du natif. Les équipes de Drifty ont mis tout en œuvre pour
faciliter la vie du développeur mobile hybride en lui fournissant un environnement simple et
un Framework pratique. Leur Framework a tellement fait sensation qu'ils ont levé un million
de dollars en 2014, alors que la startup n'avait que 2 ans d’existence. Cela a permis à leurs
équipes de repenser leur création, en apprenant de leurs erreurs, des demandes de la
communauté et en mettant à jour les briques sur lesquelles repose le Framework.
Ionic 2 est notamment passé de Angular1 à Angular2 et utilise désormais web pack en
lieu et place de bower et gulp. Ionic 2 permet également d'utiliser les évolutions de
JavaScript avec les syntaxes d'ES6/ES2015 et d'ES7. Une présentation a été faite à l'Angular
Connect qui a fait bonne impression tant les performances ont été améliorées, surtout
concernant les animations.
La version 2 est encore en version alpha, nous nous concentrerons dans la suite de cette
présentation à Ionic 1 qui est la version stable actuellement.
Installer Ionic
Pour commencer, Ionic Framework s’appuie sur la plateforme Node JS et plus
précisément NPM (Node Package Manager) pour installer les nouveaux modules développés
par la communauté et gérer les dépendances entre les modules, donc il vous faudra l’installer
(si vous ne l’avez pas déjà fait). Ensuite, pour générer une application mobile hybride, il vous
faut le SDK Java et le SDK Android (si on veut faire une application Android ou tout autre
SDK pour la plateforme visée), qui serviront à la compilation et à la construction de
l’application.
Pour avoir un bon aperçu de ce que propose le Framework, nous allons partir d'un Template
assez complet : $ ionic start myApp tabs
$ ionic start myApp blank $ ionic start myApp tabs $ ionic start myApp sidemenu
À ce stade, nous avons un répertoire contenant le patron minimum de notre future application.
Ajouter des plugins avec Ionic
$ ionic plugin
Pour installer les outils Android, c'est un peu plus ouvert car basé sur java, et nous avons donc
la possibilité d'utiliser au choix, Windows, OSX ou une distribution Linux.
Une fois l'environnement prêt, nous pouvons générer les fichiers nécessaires à la plateforme
désirée :
Vous pouvez alors packager votre application pour la tester soit sur un émulateur, soit sur un
périphérique réel. De manière générale il est toujours préférable de tester sur de vrais
smartphones et tablettes, notamment à cause de la lenteur et l'imperfection des émulateurs
fournis.
Pour packager:
Pour émuler :
$ ionic emulate android
Elle est une base de données rapide, permettant aux référentiels d'évoluer aussi
rapidement que les applications, tout en procurant aux concepteurs les fonctionnalités
attendues des bases de données usuelles, notamment des indexes secondaires, un langage
complet de requêtes et une stricte cohérence et stabilité.
Pour le moment, lorsque nous faisons une requête, nous récupérer les documents dans
leur ensemble. Si les documents sont volumineux, il peut être intéressant de ne récupérer que
les valeurs qui nous intéressent.
MongoDB limite la taille des documents à 16MB, ce qui est une taille important pour un
document JSON.
Si vos documents sont plus importants, vous pouvez les découper en plusieurs collections (et
vous l'aurez probablement fait avant d'approcher cette limite).
Comme dans une base relationnelle, on utilise les _id pour faire les liens entre plusieurs
collections. La différence est qu'il n'y a pas de jointure. Il vous faudra alors faire 2 requêtes.
Installer MongoDB pour Windows: http://www.mongodb.org/downloads
Démarrez MongoDB
Connectez-vous à MongoDB
Pour se connecter à MongoDB à travers le mongo.exe Shell, ouvrir une autre invite
de commande : C:\mongodb\bin\mongo.exe
ANNEXE 3 : Node js
Présentation Node.js
JQuery n'est pas mort et ça ne veut pas dire qu'il faut cesser de l'utiliser (par contre DHTML
et Netscape sont bel et bien morts eux). Les nouveaux outils JavaScript comme Node.js font
des choses très différentes de jQuery et consorts. Les deux peuvent tout à fait se compléter.
Node.js nous permet d'utiliser le langage JavaScript sur le serveur... Il nous permet donc de
faire du JavaScript en dehors du navigateur !
Node.js bénéficie de la puissance de JavaScript pour proposer une toute nouvelle façon de
développer des sites web dynamiques.
Node.js offre un environnement côté serveur qui nous permet aussi d'utiliser le langage
JavaScript pour générer des pages web. En gros, il vient en remplacement de langages serveur
comme PHP, Java EE, etc.
Figure 80: Avec Node.js, on peut aussi utiliser du JavaScript sur le serveur
Installation
Pour installer Node.js sous Windows, il suffit de télécharger l'installeur qui est proposé sur
le site de Node.js(https://nodejs.org/en/ ).
Depuis les versions les plus récentes de Node.js, il faut savoir que NPM est installé en
même temps automatiquement. NPM est le gestionnaire de paquets de Node.js (c'est un peu
l'équivalent de apt, mais pour les extensions Node.js). NPM est vraiment un outil formidable
qui nous permet d'étendre les possibilités de Node.js à l'infini, nous le découvrirons un peu
plus tard.
Bower :
Installer Bower
[4] Ken Schwaber .Jeff Stherland, le guide Scrum, edition creative commons, 2013.
[5] F. V. Pascal Roques, UML2 en action de l'analyse des besoins à la conception, edition
Eyrolles, 2007.
Neto graphie
[1] http://ineumann.developpez.com/tutoriels/alm/agile_scrum/
[2] http://geekandmore.fr/tag/scrum/
[3] https://confluence.atlassian.com/agile/glossary/sprint-backlog
[7] http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes
[8] http://www.gantt.com/fr/index.htm
[9] https://amethyste16.wordpress.com/2014/08/30/les-jetons-jwt-ce-quun-developpeur-
doit-connaitre/
[10] https://fr.wikipedia.org/wiki/Bcrypt
Documentation http://ionicframework.com/
Ionic http://forum.ionicframework.com/
Documentation https://cordova.apache.org/
Apache Cordova http://ngcordova.com/