17
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] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

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.

Page 2: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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

Page 3: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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

Page 4: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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 :

Page 5: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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.

Page 6: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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

Page 7: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[Epitech 2014][Documentation Technique]

Koodata Documentation Technique page 6

Mock Up

Page 8: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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.

Page 9: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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.

Page 10: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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

Page 11: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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.

Page 12: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[Epitech 2014][Documentation Technique]

Koodata Documentation Technique page 11

8. Diagrammes & UML

8.1. Diagrammes de classes

Page 13: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[Epitech 2014][Documentation Technique]

Koodata Documentation Technique page 12

8.2. Interaction Utilisateur

Page 14: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[Epitech 2014][Documentation Technique]

Koodata Documentation Technique page 13

8.3. Diagramme d’état-transition

Page 15: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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.

Page 16: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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.

Page 17: [Epitech 2014][Documentation Technique] · 2013. 12. 20. · Sujet Documentation Technique Mots clés Koodata / Android / iOS / Windows 8 / Windows Phone / Touristique Version du

[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 :

[email protected]

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])