STAGE - fannybatcho.files.wordpress.com · Réalisé par Fanny BATCHO 0 RAPPORT DE STAGE Du...
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
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
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
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