[epitech 2014][documentation technique] · 2013. 12. 20. · sujet documentation technique mots...
TRANSCRIPT
Koodata Documentation Technique page 0
Documentation Technique EIP KOODATA – Epitech 2014
Ce document a pour but de décrire tous les aspects techniques du projet Koodata.
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 1
1. Présentation du projet ................................................................................................................ 3
1.1. Définition et contexte historique ........................................................................................ 3
2. Fonctionnement de l’application ................................................................................................ 4
3. Spécifications Communes & Mock Up ........................................................................................ 5
4. Contraintes .................................................................................................................................. 7
4.1. Contraintes Fonctionnelles .................................................................................................. 7
4.1.1. Rendu graphique ......................................................................................................... 7
4.1.2. Clustering ..................................................................................................................... 7
4.2. Contraintes non-fonctionnelles ........................................................................................... 7
4.2.1. Espace de stockage ...................................................................................................... 7
5. Cas d’utilisation ........................................................................................................................... 8
6. Composants principaux ............................................................................................................... 9
7. Problèmes techniques ............................................................................................................... 10
8. Diagrammes & UML .................................................................................................................. 11
8.1. Diagrammes de classes ...................................................................................................... 11
8.2. Interaction Utilisateur ....................................................................................................... 12
8.3. Diagramme d’état-transition ............................................................................................. 13
9. Déploiment ................................................................................................................................ 14
9.1. Android .............................................................................................................................. 14
9.1.1. Déploiement du code ................................................................................................ 14
9.1.2. Déploiement sur smartphone ................................................................................... 14
9.2. Windows Phone / Windows 8 ........................................................................................... 14
10. Documentation ...................................................................................................................... 15
10.1. Documentation globale ................................................................................................. 15
10.2. Partie Métier : Les connecteurs .................................................................................... 15
10.2.1. Classe pour aider l’utilisation de donnée JSON ........................................................ 15
10.2.2. Exemple de connecteur : les HOTSPOTS ................................................................... 16
11. Informations complémentaires ............................................................................................. 16
11.1. Contacts ......................................................................................................................... 16
11.2. Auteurs .......................................................................................................................... 16
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 2
Description du document
Titre [2014][TD6] Documentation Technique
Date 30/09/2013
Auteur Adrien Pisani / Patrice Lynde / Jean-Daniel Garnier / Kévin Clerget / Jean Caron / Brian West / Nigri Julien
Responsable Adrien Pisani
E-Mail [email protected]
Sujet Documentation Technique
Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique
Version du modèle 6.1
Tableau des révisions
Date Auteur Section(s) Commentaire
30/09/2013 Tous Toutes UD5
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 3
1. Présentation du projet
1.1. Définition et contexte historique
L’idée de Koodata est née d’un partenariat entre le groupe d’élèves de l’Epitech et la
société Exakis. Partenaire de Microsoft, la compagnie Exakis recherchait un groupe
d’étudiant afin de de créer une application exploitant les Open Data.
Une donnée ouverte (open data) est une donnée numérique, d'origine publique ou
privée, publiée de manière structurée selon une méthodologie qui garantit son libre
accès et sa réutilisation par tous, sans restriction technique, juridique ou financière.
L'ouverture des données (en anglais open data) représente à la fois un mouvement,
une philosophie d'accès à l'information et une pratique de publication de données
librement accessibles et exploitables.
Initialement, ce projet était uniquement axé autour des technologies Microsoft due
au partenariat avec Exakis. Cependant suite à une absence de communication et le
désir de répondre d’avantage au besoin du marché, le groupe d’élèves Epitech a
décidé, en accord avec l’équipe pédagogique en charge de ce projet, de stopper cette
union et de modeler le projet à son image en le rendant multiplateforme. C’est de
cette base que naquit l’EIP Koodata.
Un EIP (Epitech Innovative Project) est un projet interne à l’école d’informatique
EPITECH. Il s’agit d’un projet déployé sur les deux dernières années du cursus (4ème et
5ème année). Il est la consécration du travail réalisé pendant l’intégralité de la
scolarité effectuée au sein de cette école. Un EIP est un projet concret, établit de
toutes parts par un seul groupe d’étudiants et suivi par une équipe pédagogique
dédiée.
Malgré l’arrêt du partenariat avec Exakis, le groupe porte toujours un grand intérêt
aux Open Data, et c’est pourquoi, bien que ‘EIP ait subi une refonte, son essence en
reste inchangée. Ce projet est une application mobile touristique. Elle se focalise en
premier lieu sur la ville de New York car les bases de données Open Data sont
excessivement bien alimentées pour cette localisation. Cependant, d’autres villes
pourront par la suite être ajoutées à l’application.
Koodata permet à un utilisateur de localiser divers lieux clés sur la ville de New York
et d’obtenir des informations sur ces dits lieux. Par exemple, il pourra retrouver des
bornes wifi au sein de la Big Apple parmis le millier disponible. Notre application
regroupe également d’autres comme emplacements dont voici la liste complète :
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 4
2. Fonctionnement de l’application
Koodata est un projet allant chercher des ressources (fichiers JSON) dans les serveurs
openData de la ville de New York (https://nycopendata.socrata.com/), les fichiers ainsi
récupéré sont parsé et réencodé toujours au format JSON pour obtenir un fichier de taille
raisonnable. Un exemple concret est le fichier contenant les informations sur les Hotspots
Wifi, celui que nous obtenons de l’openData fait environ 2,2Mo et notre réencodage
diminue sa taille de 16 fois, ce qui nous donne un fichier pesant 150Ko. Ce réencodage est
nécessaire vu que nous travaillons sur des terminaux mobiles, nous avons donc besoin
d’utiliser des fichiers légers et rapide à parser.
Les informations récupérées dans ce fichier sont :
Wifi : Longitude, Latitude, Url, Nom, Type (Free ou Fee-based)
Musée : Longitude, Latitude, Nom, Téléphone, Url, Adresse
Parking : Longitude, Latitude, Nom, Adresse, Place de parking totale
Bâtiment : Longitude, Latitude, Nom
Station de métro : Longitude, Latitude, Nom, Lignes disponibles
Fontaine à eau : Longitude, Latitude, Id.
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 5
L’application récupère alors ces informations puis les affiche sur une carte (Bing Map pour
Windows 8 et Windows Phone 8, Google Map pour Androïd et IPhone). L’application étant
destinée à des touristes en visite à New York, la plupart du temps ces personnes n’ont pas
accès à internet dans la rue. C’est pourquoi nous avons mis en place un mode offline qui
garde en mémoire le fichier léger créé après le réencodage. Si la carte a été téléchargée au
préalable, l’application est totalement fonctionnelle et permet à l’utilisateur de voir tous les
types de donnée.
3. Spécifications Communes & Mock Up
Architecture Globale
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 6
Mock Up
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 7
4. Contraintes
4.1. Contraintes Fonctionnelles
4.1.1. Rendu graphique
L’utilisateur pourra à n’importe quel instant visualiser chaque type de donnée
sur la carte et ainsi voir les informations disponibles.
4.1.2. Clustering
Le nombre de marqueurs sur la carte pouvant être très important (environ 1300 points pour les hotspots, uniquement pour New York), cela rend la lecture sur l’écran du smartphone assez compliqué. Nous avons donc mis en place un système de clustering afin que la visualisation des données ne soit pas trop chargée.
4.2. Contraintes non-fonctionnelles
4.2.1. Espace de stockage
L’espace de stockage sur un Smartphone étant limité, nous avons fait le
maximum pour obtenir une application légère et fonctionnelle.
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 8
5. Cas d’utilisation
Nous allons ici mettre en avant la simplicité d’utilisation de notre application au travers d’un seul et unique schéma d’action.
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 9
6. Composants principaux
OpenData : Données publiques sous licence ouverte.
JSON : format de données textuelles, générique permettant de représenter de l’information structurée.
Windows :
C# .NET : Langage de programmation permettant de développer pour windows 8 et Windows phone 8 en même temps. Une très grosse partie du projet est commun aux deux systèmes d’exploitation.
Bing Map API : Système de carte de Microsoft, API disponible pour Windows.
Androïd :
Java : Langage de programmation orienté objet.
Google Map API : service gratuit de cartographie en ligne.
IPhone :
Objectif C : langage de programmation orienté objet réflexif utilisé principalement sur MAC OSX et IOS.
iOS Map API : Système de cartographie d’Apple
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 10
7. Problèmes techniques
Le nombre de marqueurs sur la carte étant parfois trop important, nous avons mis en place un système de clustering. Il a été réalisé par nous pour la version windows, mais nous utilisons une librairie extérieure pour Androïd (MarkerClustering).
Androïd :
Le système de cartographie n’étant pas disponible sur l’émulateur Androïd, nous avons donc dû demander un téléphone au laboratoire EIP d’Epitech qui nous a fourni un HTC Desire HD tournant sous androïd 2.3.5.
Windows 8 / Windows Phone :
Un problème de performance était causé suite au trop grand nombre d’informations a affiché sur la carte. C’est de la que l’idée de développer un système de cluster est née.
iOS :
Manque initiale d’un Mac. Ce qui a rendu le développement fastidieux sur
machine virtuelle. L’arrivé d’un Mac dans le groupe a régler ce problème.
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 11
8. Diagrammes & UML
8.1. Diagrammes de classes
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 12
8.2. Interaction Utilisateur
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 13
8.3. Diagramme d’état-transition
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 14
9. Déploiment
9.1. Android
9.1.1. Déploiement du code
Le déploiement est actuellement fait sur un environnement Windows 7, mais
peut très bien être effectué sur un environnement linux.
Pour le déploiement il faut avoir installé Eclipse (ou tout autre IDE
compatible), le SDK d’Androïd et le google play service via le SDK d’Androïd.
Il faut également avoir une API Key valide pour accéder au service google
map.
La librairie JSON.simple est à avoir pour le traitement des fichiers JSON
récupéré via l’opendata.
JSON.simple :http://code.google.com/p/json-simple/
Eclipse : http://www.eclipse.org/downloads/
SDK Android : http://developer.android.com/sdk/index.html
API Key : https://code.google.com/apis/console/
9.1.2. Déploiement sur smartphone
L’application sera téléchargeable à partir du Google play et disponible sur la
plupart des systèmes Android (2.3 minimum).
9.2. Windows Phone / Windows 8
Le déploiement se fait uniquement sous un environnement Windows 8.
Pour déployer la solution il faut avoir installé Visual Studio 2012, puis avoir
installé le SDK de Bing Maps.
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 15
Bing Maps SDK : http://www.microsoft.com/maps/developers/web.aspx
Le laboratoire EIP ne disposant pas de VM Windows 8 le déploiment sur VM est
imposibe.
10. Documentation
10.1. Documentation globale
Le projet se décompose en deux parties :
Une partie dit « métier » qui va devoir aller chercher les
données OpenData de la ville de New York, puis les parser dans
des objets facilement manipulable.
Une partie qui correspondra à l’interface. Il s’agit de deux
pages, une première appellée « Home » qui correspond à la
page d’accueil permettante de passer d’une vue à l’autre, et
une deuxième page appellée « NYCMap » qui va correspondre
à la carte avec chaque information indiqué dessus.
10.2. Partie Métier : Les connecteurs
Les connecteurs sont séparé en deux parties : Une partie commune qui est
une abstraction permettant l’utilisation facile des données Json. Et une
deuxième partie propre à chaque connecteur qui va permettre un accès facile
aux données qui nous intéressent.
10.2.1. Classe pour aider l’utilisation de donnée JSON
Cette classe prend en paramètre l’url qui contient le Json, et va utiliser
en template le format de donnée que l’on cherche. Ensuite cette classe
va désérialiser le Json et remplir les objets.
[Epitech 2014][Documentation Technique]
Koodata Documentation Technique page 16
10.2.2. Exemple de connecteur : les HOTSPOTS
Cette classe contient le nom du hotspot, les données de géolocalisation
(latitude, longitude) et aussi l’information pour savoir si le hotpost est gratuit
ou payant.
11. Informations complémentaires
11.1. Contacts
En cas de bug et/ou de réclamation vous pouvez contacter l’ensemble de l’équipe
Koodata à l’adresse suivante :
11.2. Auteurs
Ce document a été rédigé et est maintenu par :
Adrien Pisani ([email protected])
Kévin Clerget (ké[email protected])
Jean Daniel Garnier ([email protected])
Patrice Lynde ([email protected])
Julien Nigri ([email protected])
Jean Caron ([email protected])
Brian West ([email protected])