Documentation Technique EIP KOODATA Epitech 2014 Ce document a pour but de décrire tous les aspects techniques du projet Koodata. Koodata Documentation Technique page 0
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 Koodata Documentation Technique page 1
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 koodata_2014@labeip.epitech.eu 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 Koodata Documentation Technique page 2
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 : Koodata Documentation Technique page 3
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. Koodata Documentation Technique page 4
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 Koodata Documentation Technique page 5
Mock Up Koodata Documentation Technique page 6
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. Koodata Documentation Technique page 7
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. Koodata Documentation Technique page 8
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 Koodata Documentation Technique page 9
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. Koodata Documentation Technique page 10
8. Diagrammes & UML 8.1. Diagrammes de classes Koodata Documentation Technique page 11
8.2. Interaction Utilisateur Koodata Documentation Technique page 12
8.3. Diagramme d état-transition Koodata Documentation Technique page 13
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. Koodata Documentation Technique page 14
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. Koodata Documentation Technique page 15
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 : koodata_2014@labeip.epitech.eu 11.2. Auteurs Ce document a été rédigé et est maintenu par : Adrien Pisani (adrien.pisani@epitech.eu) Kévin Clerget (kévin.clerget@epitech.eu) Jean Daniel Garnier (jean-daniel.garnier@epitech.eu) Patrice Lynde (partice.lynde@epitech.eu) Julien Nigri (julien.nigri@epitech.eu) Jean Caron (jean.caron@epitech.eu) Brian West (brian.west@epitech.eu) Koodata Documentation Technique page 16