Description du projet

Les étudiants se regroupent librement par 4 et imaginent, décrivent et spécifient une application mobile originale. Chaque goupe développe ensuite l'application qu'il a choisie, en Java sous Android, afin de pouvoir être utilisée sur un smartphone ou sur une tablette. Une tablette Android sera mise à disposition de chacun des groupes. Les étudiants seront encouragés à déposer leur application mobile sur Google Play au cours de la réalisation afin de distribuer celle-ci et de recueillir un feedback. Une approche Open Source sera suivie, permettant une large distribution des applications mobiles réalisées.  

Lors de la réalisation de ce projet, les étudiants vont se familiariser avec des concepts et des méthodes informatiques récentes. 

  • Java/Android
  • Développement Agile SCRUM
  • Gestion collaborative de code: Git
  • Gestionnaire de projet avec Kanban: Trello
  • Store privé d'applications Android: Appaloosa 
  • Store public officiel d'applications Android: Google Play

Déroulement technique du projet

Le projet sera développé pour Android, en Java. L’IDE utilisé sera Android Studio. Les répertoires git seront créés pour vous la deuxième semaine et contiendront déjà une application android vide. Vous serez invités sur bitbucket une fois les répertoires créés.

Tout au long du projet, la gestion du kanban se fera par le biais de l’outil en ligne trello. Vous serez également invités en temps voulu.

Votre répertoire git contiendra deux branches: 'default' et 'master'. Le développement au sein d’un sprint des nouvelles fonctionnalités se fera sur la branche 'default'. Cette branche est la branche de développement. Une fois que la version courante de l’application a atteint un point où elle peut être montrée, vous pourrez merger (fusionner) les branches 'default' et 'master'.

Lint et CheckStyle sont des outils d'analyse statique de code et seront utilisés, au sein d'Eclipse, pour vous fournir un feedback direct sur la qualité de votre code. Lorsque votre application a atteint un point ou elle peut être montrée, elle sera déployée sur le store privé Appaloosa. Les autres étudiants du cours pourront dès lors vous fournir du feedback, en condition réelles. Dès qu’une de ces versions sera jugée par votre tuteur comme suffisamment évoluée et stable, elle sera déployée sur le Play Store, d’où elle pourra être téléchargée par n’importe qui. 

Android:  ^

Site principal: http://developer.android.com/develop/index.html
Tutoriel: http://developer.android.com/training/index.html
API Guide: http://developer.android.com/guide/components/index.html
API: http://developer.android.com/reference/packages.html

Environnement de développement:^

SDK Android:^

Android est le système d'exploitation que nous allons utiliser pour le projet. Java est le langage utilisé pour développer des applications sous Android.

Téléchargement: http://developer.android.com/sdk/index.html
Il y a deux possibilités: le Bundle ou la Custom Installation. Le bundle contient Eclipse, le SDK Android et tout ce qu’il faut. La Custom Installation ne contient que le SDK et suppose que vous avez déjà installé Eclipse. Dans les deux cas: bien installer toutes les librairies

Développement Agile:^

L'approche Agile est une méthode de gestion de projet et d'équipe qui permet d'intégrer les changements tut au long du processus de développement.

Livre “Kanban: Successful Evolutionary Change for Your Technology Business”
Livre “Extreme Programming Explained”, Kent Beck with Cynthia Andres, Second Edition
Livre “Scrum Handbook” de Jeff Sutherland. Disponible dans la section ‘Documents et liens’ sur iCampus.

Gestion collaborative de code (Git):^

Un gestionnaire de code permet de versionner son code pour pouvoir travailler en équipe sur le même code et garder la trace du travail accompli.

Gestionnaire de projet avec Kanban (Trello):

Le Kanban est un outil de visualisation qui permet de faire état de l'avancement d'un projet ainsi que de sa planification. Grâce à un Kanban, une équipe peut facilement se répartir le travail. Trello est une application web/Android qui permet de réaliser des Kanban.

Application web: https://trello.com/
Disponible sur le PlayStore (Android) et sur l’AppStore (iPhone)

Store Privé d’applications Android (Apaloosa):^

Un store privé d'applications permet de simuler les conditions dans lesquelles l'application sera publiée. L'accès au store privé est limité aux développeurs de l'application et leur permet de la tester. Appaloosa est le store privé d'applications Android que nous allons utiliser pour ce projet.

Site web: http://www.appaloosa-store.com/
Features: http://www.appaloosa-store.com/features?locale=en# (aussi, vidéo de présentation en cliquant sur “Take a tour”)

Store public officiel d’applications Android (Google Play):^

Les applications Android sont publiées sur le Google Play store, qui est un store public d'applications. Comme ce store est public, tout le monde y a accès.

Site web: https://play.google.com/store

Choix de l’application

Afin de choisir l’application que vous développerez, vous allez présenter trois idées d’applications mobiles. Ces idées seront décrites au moyen de posters, tels qu'illustré ci-après. 

Dans ce poster:

  • Nom de L’App: Le nom de votre application. Celui-ci doit être le plus accrocheur possible tout en décrivant bien votre application.
  • Tagline: Votre application en une phrase. Cette phrase décrit le pourquoi de votre application, son utilité pour l’utilisateur.
  • Description: Quelques lignes qui décrivent votre application, ses fonctionnalités principales. Ces quelques lignes décrivent comment votre application permet à l’utilisateur d’atteindre le but de l’application (tagline).
  • Ecrans: Maquettes de différents écrans de votre application (dessins sur post-it) et des liens entre ceux-ci. Les flèches montrent quen utilisant tel bouton, on passe à tel écran.
  • Version de l’App, lien vers l’App: Cadre reprenant la version courante de l’application ainsi que les derniers apports de cette version par rapport à la version précédente. Il peut également contenir un lien où l’on peut télécharger l’application.
  • Développeurs: Vos noms et numéro de groupe

Le poster de l’application retenue pour le groupe sera ensuite finalisé, modifié ou refait.  Ce poster sera affiché en permanence dans la salle informatique Bill Joy (INGI), avec le poster de chaque groupe.   Les posters seront mis à jour tout au long de l’évolution du projet. 

Sprint

Le développement de votre application mobile sera réalisé selon une approche Agile.  Cette approche se veut plus pragmatique et vise la satisfaction du client. Elle est itérative, incrémentale et adaptative. Le développement est organisé en une succession de cinq Sprint. L’objectif d’un Sprint est de fournir un délivrable, sous la forme d’une release de votre système, à la fin de ce Sprint. Lors du Kickoff d’un Sprint, le groupe choisit les fonctionnalités à développer lors de ce Sprint. Ce choix est réalisé avec le Tuteur. A la fin d’un Sprint, une démo du logiciel est réalisée avec le Client (rôle tenu le professeur dans ce projet). Une séance de rétrospective est ensuite organisée avec le Tuteur.  A la fin d’un Sprint, si le délivrable est de qualité, l’application est alors publiée sur le Google Play store, sous une licence Open Source.

Documentation

Au plus tard à la fin du projet ou dès que votre application mobile est publiée sur Google Play, un manuel d’utilisation de votre application devra être disponible.  Celui-ci doit être court et synthétique (une ou deux pages, avec screenshots), semblables aux descriptions que l’on trouvent sous Google Play. 

A la fin du projet, chaque groupe aura réalisé une petite vidéo montrant les fonctionnalités de l’application, sous la forme d’une démo.

Présentation orale

A la fin du projet (S14), chaque groupe présentera oralement son projet.

Evaluation écrite individuelle

A la fin du projet (S14), une évaluation individuelle sera également organisée.

Objectifs du projet

Les compétences visées par ce projet 4 consistent d'une part en des compétences transversales, communes à tous les projets Bac3, et d'autre part en des compétences techniques disciplinaires, spécifiques à ce projet en informatique.

Compétences transversales :

Ce projet vise à acquérir des compétences transversales proches de la pratique du métier d'ingénieur dans un contexte disciplinaire varié :

  • Analyser le problème à résoudre ou le besoin fonctionnel à rencontrer et formuler le cahier des charges correspondant.
  • Modéliser le problème et concevoir une ou plusieurs solutions techniques originales répondant à ce cahier des charges.
  • Formuler des recommandations pour améliorer le caractère opérationnel de la solution étudiée, du système analysé.
  • Se documenter et exploiter l’état des connaissances actuelles dans le domaine considéré.
  • Proposer une modélisation et/ou un dispositif expérimental permettant d’analyser, de simuler et de tester des hypothèses relatives au phénomène ou à la problématique étudié.
  • S’engager collectivement sur un plan de travail, un échéancier (et des rôles à tenir).
  • Communiquer sous forme graphique et schématique; interpréter un schéma, présenter les résultats d’un travail, structurer des informations.
  • Lire, analyser et exploiter des documents techniques (normes, plans, cahier de charge, spécifications, …).
  • Faire un exposé oral convaincant en utilisant les techniques modernes de communication.
  • S’auto-évaluer et développer de manière autonome les connaissances nécessaires.

Compétences techniques disciplinaires :

Au terme de ce projet en informatique, les étudiants seront capables de :

  • Mettre en œuvre les compétences acquises dans les formations informatiques (algorithmique, conception de programmes Java, …).
  • Comprendre l'architecture d'un logiciel pour être en mesure de faire des choix éclairés en vue de le modifier ou de le perfectionner.
  • Comprendre les enjeux du développement d’une application mobile, ainsi que les concepts informatiques fondamentaux liés aux applications mobiles.
  • Développer une application mobile, par exemple dans un environnement Android.
  • Suivre une démarche de développement logiciel, par exemple de type Agile, intégrant une gestion des interactions au sein d’un groupe.
  • Faire preuve d'esprit critique par rapport aux délivrables d'un projet et en particulier sur l'analyse et la conception du système, mais également par rapport à la gestion du planning au sein du groupe.