STAGE - fannybatcho.files.wordpress.com · Réalisé par Fanny BATCHO 0 RAPPORT DE STAGE Du...

24
Réalisé par Fanny BATCHO 0 RAPPORT DE STAGE Du 01/12/2014 Au 23/01/2015 Fanny BATCHO TSIO2B 13/12/2014

Transcript of STAGE - fannybatcho.files.wordpress.com · Réalisé par Fanny BATCHO 0 RAPPORT DE STAGE Du...

Réalisé par Fanny BATCHO

0

RAPPORT DE

STAGE

Du 01/12/2014 Au 23/01/2015

Fanny BATCHO TSIO2B 13/12/2014

Réalisé par Fanny BATCHO

1

Sommaire

I. Présentation de l’entreprise

a) Introduction

b) Marque de distinction sur le marché immobilier

II. Missions confiées

III. Etude et planification des missions

a) Les Outils utilisés

b) Planning et Gestion du temps

IV. Réalisation des missions

a) Application vitrine

b) Application native de type informatif

V. Conclusion

Réalisé par Fanny BATCHO

2

Introduction

Du 1er Décembre 2014 au 23 Janvier 2015, j’ai effectué un stage au sein de l’entreprise Ecosyndic, située à Paris. Au cours de ce stage, j’ai pu m’intéresser au développement d’application pour Android.

I. Présentation de l’entreprise

a) Introduction

La société Ecosyndic, créée en 2009, est un syndic de copropriété. Un syndic a pour fonction d’assurer l'administration de l'immeuble dépendant de la copropriété. Cette agence est une Société à Responsabilité Limitée au capital de 7 000 € et est située à Paris dans le 9éme arrondissement.

b) Marque de distinction sur le marché immobilier

L’écologie

Que cela soit lors de prestation ou des travaux de rénovation, la société Ecosyndic, met

un point d’honneur sur l’écologie.

Ces actes se manifestent par l’organisation du tri des déchets, la mise en place

d’informations de sensibilisation des habitants et le travail d’éducation pouvant amener

vers une conduite plus écologique.

La transparence

La transparence d’Ecosyndic se révèle par une prestation permettant de consacrer du temps aux copropriétaires et au conseil syndical pour leur expliquer et les informer sur les enjeux relatifs à l’entretien de leur bâtiment. Dans un objectif de réduction des coûts les outils internet sont proposés prioritairement. En effet, chaque copropriétaire possède un espace privatif (espace client) où il peut retrouver en ligne : – Le règlement de la copropriété – Le carnet d’entretien – Les PV d’assemblée générale – Un calendrier des évènements à venir. – Les communications du conseil syndical. Cet espace client a été créé par la société Crypto, prestataire d’Ecosyndic. Cette société fourni aussi un logiciel, nommé La Solution Crypto (LSC), composé de différents module (Syndic, Gérance, Transaction,…) collaborant pour un pilotage stratégique de l’activité professionnelle de l’entreprise.

Réalisé par Fanny BATCHO

3

La société Crypto se trouve à Nancy. Il s’agit d’une SAS au capital de 100 000€. Crypto est un éditeur de logiciels immobiliers et de services à valeur ajoutée autour des métiers de l'immobilier. Voir le schéma de l’organisation réseaux annexe n°8.

II. Missions confiées

Au cours de mon stage, j’ai pu effectuer deux tâches. Dès lors qu’elles m’ont permis d’apprendre différents aspects de la programmation. Il s’agit de deux tâches distinctes : la mise en œuvre de deux applications pour smartphone et d’un site web.

La création d’une application sur mobile consiste tout d’abord à :

- Rédiger une spécification fonctionnelle en méthode Agile qui servirait de support

pour la création d’une application pour mobile.

- Développer l’application vitrine pour la société ECOSYNDIC compatible avec des

smartphone Android.

La seconde application a pour but de facilité les copropriétaires dans la prise contact

avec les différents services d’Ecosyndic.

III. Etude et planification des missions

Au cours de ce stage, j’ai eu l’opportunité de découvrir un métier sous toutes ses formes et de comprendre de manière globale les difficultés que les développeurs pouvaient rencontrer. Pour une meilleure compréhension des tâches que j’ai pu effectuer, il apparaît approprié de traiter en premier lieu des outils qui étaient mis à ma disposition, puis de traiter de manière détaillée les tâches que j’ai pu effectuer.

a) Choix de solution

Logiciel de développement :

Eclipse Android SDK Android Studio

Réalisé par Fanny BATCHO

4

Eclipse Android SDK est un kit de développement, c'est-à-dire un ensemble d'outils que met à disposition Google afin de vous permettre de développer des applications pour Android. Ce SDK contient :

Eclipse, un environnement de développement spécialisé dans le développement Java

mais qui n'est pas capable de développer des applications Android sans le composant

suivant ;

Le plugin ADT, qui est une extension d'Eclipse afin de développer des applications

Android ;

Des outils pour gérer l'installation d'Android sur votre système.

Android Studio est l’environnement de développement officiel de Google qui remplace l’IDE d’Eclipse (avec donc exactement les mêmes fonctionnalités) depuis le 8 décembre 2014. Comparaison d’Android Studio et Eclipse :

SDK Android Studio Eclipse (ADT)

Facilité d’installation Simple Moyen

Langue Anglais Nombreuses

Performance Rapide Peut être lent

Système de Build Gradle Ant

Génération de variante et de multiple APK

Oui Non

Android code de completion et de refactoring

Avancé Base

Editeur d’interface graphique

Oui Oui

Signature d’APK et gestion de Keystore

Oui Oui

Support NDK* A venir Oui *Le NDK (Native Development Kit – Kit de développement natif) est un outil permettant d’implémenter des parties natives (en C ou C++) pour une application. Cela permet par exemple, de créer du code commun (bibliothèque) entre plusieurs applications ou entre des applications Android & IOS par exemple.

Gradle a pour fonctionnalités de : - Permettre la construction de projet

- Combiner Ant et Maven

- Permettre d'écrire des tâches de construction utilisant le langage Groovy (tests

unitaires, ...)

- Faciliter l’intégration des plugins (comme Google l'a fait pour Android Studio)

- Gérer automatiquement des dépendances

Réalisé par Fanny BATCHO

5

Maven est un outil pour la gestion et l'automatisation de production des projets logiciels Java en général et Java EE en particulier. Ant (Another Neat Tool) est l’outil de base permettant d'automatiser des tâches lourdes et répétitives. Ces deux outils représentent l'équivalent en Java de l'outil make d'UNIX.

b) Planning et gestion du temps

Je notais, pour chaque jour, l’avancé de mon travail et les contraintes sur un carnet. La

rédaction de la spécification s’est faite la première semaine. Après un entretien avec ma tutrice

de stage pour en discuter et finaliser la spécification fonctionnelle, j’ai commencé à développer

l’application sur mobiles pendant les 5 semaines suivantes.

VI. Réalisation des missions

a) Application vitrine Spécification des exigences

L’application a pour rôle de permettre à l’utilisateur de pouvoir rechercher des biens immobiliers que ce soit par géolocalisation ou bien en mettant des critères (ville, budget, type de bien,…). L’utilisateur peut ainsi accéder aux caractéristiques d’un bien en particulier. De plus il peut ajouter un commentaire au bien qu’il consulte. Il est aussi possible de se connecter à son compte client.

Exigences fonctionnelles : voir l’annexe n°1 : maquettes écrans.

Exigences non-fonctionnelles : Il est nécessaire que l’application soit

- compatible avec tous smartphone et tablettes sous Android.

- développé sous une version actuelle (non obsolète) c’est-à-dire entre l’API 14 et

l’API 21 (entre Ice Cream Sandwich et Lollipop).

Réalisé par Fanny BATCHO

6

Contraintes

L’activité d’Android Studio prend une place importante dans la mémoire vive de l’ordinateur. De plus le chargement de l’émulateur est lent car l’ordinateur d'exécute des instructions processeurs qui respectent l'architecture ARM (parce que les processeurs des téléphones utilisent en grande majorité cette architecture) alors que le processeur de l’ordinateur n'utilise pas la même architecture. Pour répertorier les différents biens à rechercher dans cette application, il est indispensable de manipuler une base de données. Or la base de données est agrémentée par le moyen d’une interface logique nommé La Solution Crypto. Ce logiciel a été créé par une société prestataire : Crypto. C’est donc cette dernière qui peut exercer des requêtes à la base de données et traiter les informations. La société n’était donc pas disposer me donner un accès à cette base de données.

Analyse

Les méthodes Agiles partent du principe que, spécifier et planifier dans les détails l’intégralité d’un produit ou d’un projet avant de le développer (approche prédictive), est contre-productif. Ces méthodes favorisent l’approche empirique. Dans le cadre d’un projet de développement logiciel, le client élabore sa vision du produit à réaliser et liste les fonctionnalités ou les exigences de ce dernier. Il soumet cette liste à l’équipe de développement, communique directement avec elle. L’équipe estime le coût de chaque élément de la liste. Celle-ci sélectionne ensuite une portion des exigences à réaliser dans une période de temps courte appelée itération. Chaque itération inclut des travaux de conception de spécification fonctionnelle.

Une spécification fonctionnelle correspond à la définition minutieuse du fonctionnement de l’interface, du macro vers le micro, pour chaque gabarit et toutes les fonctionnalités. De plus, lors de la rédaction, elle ne doit pas être composée de termes techniques. En revanche, elle doit contenir la description des besoins, les contraintes et les règles de gestion du projet. Voir le schéma démonstratif annexe 2.

Afin de concevoir l’application, il est préférable de visualiser l’organisation des données par un

Modèle conceptuel des données. Voir le MCD annexe 5 p.14.

Conception

Comme indiqué précédemment, le développement de l’application sur Android s’est fait dans l’environnement de développement : Android Studio. Le langage informatique fut essentiellement en Java orienté objet mais aussi en XML pour la mise en page. Le XML (eXtensible Markup Language) est un langage de balisage qui permet de mettre en forme des informations. De plus ce langage a été désigné comme une norme d’après l’ISO en 2002 (ISO/IEC TR 22250-1:2002) Le Java est un langage de programmation mais aussi une norme élaboré par Organisation internationale de normalisation (ISO) en 2000 (ISO/TS 10303-27:2000). Dans cet IDE, ce langage est orienté objet.

Présentation des outils

Réalisé par Fanny BATCHO

7

Ce menu est associé à l’outil d’Android Studio permettant de créer une interface

graphique.

- La première liste déroulante permet de naviguer rapidement entre les répertoires

de layouts. Il est possible de créer des versions alternatives au layout actuel en

créant des nouveaux répertoires différenciés par leurs quantificateurs.

- La deuxième liste déroulante permet d'observer le résultat en fonction de

différentes résolutions. Le chiffre indique la taille de la diagonale en pouces et la

résolution de l'écran.

- La troisième permet d'observer l'interface graphique en fonction de certains

facteurs (format : portrait ou paysage, luminosité : jour ou nuit, …).

- La quatrième liste déroulante permet d'associer un thème à l’activité.

- La suivante correspond à la liste des différentes activités présentent dans le projet.

- L'avant-dernière permet de choisir une langue si votre interface graphique change

en fonction de la langue.

- Et enfin la dernière vérifie le comportement en fonction de la version de l'API, s’il y a

une définition des quantificateurs.

En ce qui concerne la barre d’outils du bas, ces boutons sont spécifiques à un composant et à son layout parent, contrairement aux boutons précédents qui étaient spécifiques à l'outil.

- Le premier bouton fait en sorte que l'interface graphique fasse exactement la taille

de la fenêtre dans laquelle elle se trouve.

- Le deuxième remet le zoom à 100%.

- Enfin les deux suivants permettent respectivement de dézoomer et de zoomer.

Utilisation

Android Studio permet de créer des interfaces graphiques à la souris. Il est en effet possible d'ajouter un élément et de le positionner grâce à sa souris (voir annexe 6 p.14 et 15).

Une application sur Android s’organise en activité. Une activité est un seul élément ciblée avec lequel l’utilisateur peut interagir. Presque toutes les activités interagissent avec l'utilisateur, de sorte que la classe Activity s’occupe de créer une fenêtre dans lequel on peut placer une interface utilisateur. Bien que les activités sont souvent présentées à l'utilisateur comme des fenêtres en plein écran, elles peuvent également être utilisés d’une d'autre façon: comme des fenêtres flottantes (par un thème) ou incorporé à l'intérieur d'une autre activité. Il existe deux méthodes que toutes les classes Activity possèdent :

- OnCreate() : appelé lorsque l’activité commence.

Réalisé par Fanny BATCHO

8

- OnPause() : appelé lorsque l’activité s’exécute en arrière-plan.

Voir annexe 7 (les différentes fonctions que peut contenir une Activité dans son cycle de vie). Une activité peut se trouver dans trois états qui se différencient surtout par leur visibilité : Etat Visibilité Description

Active (« active» ou «running»)

L'activité est visible en totalité. c'est ce que l'utilisateur consulte en ce moment même et il peut l'utiliser dans son intégralité. C'est cette application qui a le focus, c'est-à-dire que l'utilisateur agit directement sur l'application.

Suspendue (« paused») L'activité est partiellement visible à l'écran.

L’activité ne réagit plus avec l’utilisateur. Pour que notre application récupère le focus, l'utilisateur devra se débarrasser de l'application qui l'obstrue, puis l'utilisateur pourra à nouveau interagir avec. Si le système a besoin de mémoire, il peut très bien tuer l'application.

Arrêtée («stopped») L'activité est tout simplement oblitérée par une autre activité, on ne peut plus la voir du tout.

L’activité ne réagit plus avec l’utilisateur Le système retient son état pour pouvoir reprendre, mais il peut arriver que le système tue votre application pour libérer de la mémoire système.

Voir un aperçu du code commenté Annexe 3. L'Android Virtual Device (AVD) est un émulateur de terminal sous Android, c'est-à-dire qu’il s’agit d’un logiciel qui se fait passer pour un appareil sous Android (téléphone portable, tablette, télévision, montre connectée,…) à l’ordinateur. Ce logiciel a un avantage : il n’est pas nécessaire d’avoir un périphérique sous Android pour tester l’application. Lorsque l’on souhaite tester l’application, il suffit de lancer un émulateur qui a été préalablement installé et configuré. L’environnement de développement installe l’application, sous l’extension apk, directement sur l’émulateur, puis l’exécute.

b) Application native de type informatif Spécification des exigences

Cette application est une alternative à l’application vitrine, celle-ci ne pouvant se réalisé pour cause de restriction d’accès à la base de données.

Réalisé par Fanny BATCHO

9

L’application a pour but de faciliter la communication entre le syndic et les copropriétaires. Elle est composée de trois activités : Première activité : correspond à la page d’accueil, elle est composé de trois boutons

permettant respectivement d’accéder aux coordonnées d’Ecosyndic, d’accéder aux

informations des différent services et d’accéder à l’espace client (lien vers l’espace

client sur internet développer par crypto).

Deuxième activité : affiche les coordonnées de l’agence et est composé de deux

boutons : l’un sert à envoyer un mail sur l’adresse d’accueil de l’agence et l’autre

déclenche un appel vers la ligne téléphonique de l’accueil de l’agence.

Troisième activité : affiche les informations des différents services que utilisateur

souhait voir grâce à une liste déroulante. Cette activité contient aussi deux boutons

qui ont les mêmes fonctionnalités que la deuxième activité.

Conception En ce qui concerne les outils de conception, les langages et le déploiement, l’application

utilise les technologies que l’application vitrine.

Pour ce qui est du code et du rendu, voir annexe 3 et 4.

Réalisé par Fanny BATCHO

10

Annexe n°1 : Maquettes écran de l’application vitrine

Page d’Accueil

Option de recherche

Réalisé par Fanny BATCHO

11

Résultat de la recherche

Fiche descriptive d’un bien

Réalisé par Fanny BATCHO

12

Localisation de l’utilisateur

Formulaire de connexion

Réalisé par Fanny BATCHO

13

Contacts

Réalisé par Fanny BATCHO

14

Annexe n°2 : Schéma illustrant la méthode AGILE

Annexe 3 : exemple de code en java

package fr.ecosyndic.ecosyndic; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; public class TelephoneActivity extends Activity {

static final String[] Service = new String[]{"Comptable", "Gestion Locative", "Syndic"};

//instance du contenu de la liste déroulante

Réalisé par Fanny BATCHO

15

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_telephone); // l’activité s’affiche en function du

layout “activity_telephone”

final Spinner spin = (Spinner) findViewById(R.id.spin);

ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,

android.R.layout.simple_spinner_item, Service);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spin.setAdapter(adapter);

final Button valid = (Button) findViewById(R.id.valider); );//instance de l’objet XML

valid.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) { //méthode appeler pour définir l’action lorsque

l’utilisateur clique sur le bouton

Option();//function determinant l’action du bouton “valid”

}

});

}

public void Option() {

String Newline = System.getProperty("line.separator");//argument correspondant au

retoure à la ligne

int t = 0;

final Button valid = (Button) findViewById(R.id.valider);//instance de l’objet XML

if (valid != null) {

final Spinner spin = (Spinner) findViewById(R.id.spin);

final TextView text = (TextView)

findViewById(R.id.information);

if ((spin != null) && spin.isEnabled()) { //verification si la liste déroulante

est active et si la liste est nulle

switch (spin.getSelectedItemPosition()) {

case 0:

text.setText("Comprable " + Newline + "Responsable - Remy Samir " +

Newline + "Tel : 00 00 00 00 00" + Newline + "Mail: [email protected] ");

t = 1;

break;

case 1:

text.setText("Gestion Locative " + Newline + "Responsable - Valérie

Elmira " + Newline + "Tel : 00 00 00 00 00" + Newline + "Mail: [email protected] ");

t = 2;

break;

case 2:

text.setText("Syndic" + Newline + "Responsable - Aurore Chopin" +

Newline + "Tel : 00 00 00 00 00" + Newline + "Mail:[email protected]");

t = 3;

break;

default:

break;

}

spin.setEnabled(false);

valid.setText("Annuler");

final Button appel = (Button) findViewById(R.id.appel);

Réalisé par Fanny BATCHO

16

final Button env = (Button) findViewById(R.id.env);

final int finalT = t;

appel.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

String n = null;

if (finalT == 1) {

n = "tel:0000000001";

} else if (finalT == 2) {

n = "tel: 0000000002";

} else if (finalT == 3) {

n = "tel: 0000000003";

}

Intent callIntent = new Intent(Intent.ACTION_CALL);

callIntent.setData(Uri.parse(n.toString()));//function qui provoque

un appel avec le numéro de telephone correspondant au service selectionné.

startActivity(callIntent);

}

});

env.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

String mail = null;

if (finalT == 1) {

mail = " [email protected] ";

} else if (finalT == 2) {

mail = " [email protected] ";

} else if (finalT == 3) {

mail = " [email protected] ";

}

Intent i = new Intent(Intent.ACTION_SEND);

i.setType("message/rfc822");

i.putExtra(Intent.EXTRA_EMAIL, mail);

i.putExtra(Intent.EXTRA_SUBJECT, "objet :");

i.putExtra(Intent.EXTRA_TEXT, " ");

try {

startActivity(Intent.createChooser(i, "Envoyer un mail..."));

} catch (android.content.ActivityNotFoundException ex) {

Toast.makeText(TelephoneActivity.this,

"There are no email clients installed.",

Toast.LENGTH_SHORT).show();

Réalisé par Fanny BATCHO

17

/** code qui permet l’envoi d’email avec l’adresse email correspondant au service

selectionné*/

}

}

});

} else {

spin.setEnabled(true);

valid.setText("Valider");

text.setText("Aucune sélection");

}

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) { //Méthode appeler pour la barre d’action

getMenuInflater().inflate(R.menu.menu_telephone, menu);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

ActionBar actionBar = getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

}

return true;

}

@Override

public void onBackPressed() { //Méthode définissant le bouton precedent dans la barre

d’action

TelephoneActivity.this.startActivity(new Intent(TelephoneActivity.this,

MainActivity.class));

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case android.R.id.home:

onBackPressed();

break;

}

return super.onOptionsItemSelected(item);

}

}

Réalisé par Fanny BATCHO

18

Annexe 4: Résultats du code annexe 1

Réalisé par Fanny BATCHO

19

Annexe n°5 : MCD Organisation des biens d’Ecosyndic

Annexe 6 : Capture d’écran d’un layout Design (en bas) Text (en haut)

Code XML généré par la vue

Aperçu de la vue

Réalisé par Fanny BATCHO

20

Encart « Palette » pour placer différentes vues Encart « Properties »

pour Modifier les attributs

Aperçu de la vue

Réalisé par Fanny BATCHO

21

Annexe n°7 : Cycle de vie d’une activité

Réalisé par Fanny BATCHO

22

Annexe n°8 : Organisation réseau

Réalisé par Fanny BATCHO

23

V. Conclusion

J’ai, ainsi, effectué mon stage pratique du Brevet de Techniciens Supérieurs Services Informatiques aux Organisations au sein de l’entreprise Ecosyndic. Lors de ce stage de 8 semaines, j’ai pu mettre en pratique mes connaissances théoriques acquises durant ma formation, de plus, je me suis confronté aux difficultés réelles du monde du travail.

Je pense que cette expérience en entreprise m’a offert une bonne préparation à mon insertion professionnelle car elle fut pour moi une expérience enrichissante et complète qui conforte mon désir d’exercer mon futur métier de développeuse en informatique.

Remerciements

Pour finir ce développement sur mon expérience professionnelle, il apparaît opportun de terminer ce rapport de stage par des remerciements, à ceux qui m’ont beaucoup appris au cours de ce stage, et à ceux qui ont eu la gentillesse de faire de ce stage un moment très profitable. Je remercie Mme Aurore CHOPIN, ma tutrice de stage, responsable du cabinet ECOSYNDIC qui m'a accueilli dans son entreprise et m'a accordé de son temps malgré son planning chargé et ses importantes responsabilités