====== Usine Logicielle et Communauté de développeurs : YourCastStore ======
===== Avant-propos =====
Le projet présente plusieurs facettes. Nous jouerons sur les priorités et la décomposition en sous-tâches pour en gérer les différents aspects.
L'étude proposée présente à la fois
* une part de développement classique mais en respectant des contraintes très fortes d'architecture,
* une part de développement prospectif portant sur le concept d'usine logicielle et de variabilité,
* et une amélioration d'un code pré-existant pour gérer une synthése vocale.
Dans tous les cas, une étude du besoin est attendue pour affiner les choix et justifier la pertinence de vos propositions.
Le travail qui est proposé ici doit enrichir les expérimentations menées dans le cadre du projet [[http://yourcast.fr/|YourCast]]. Le respect des règles imposées, la qualité des codes, la pertinence de la documentation élaborée sont indispensables pour que votre travail soit d'intérêt.
Le projet est décomposé selon les **4 axes suivants**, qui ne sont pas indépendants. Des collaborations seront necessaires entre les groupes. Elles sont clarifiées dans chacun des sous projets.
* [[http://anubis.polytech.unice.fr/iut/2012_2013/projetstut/diffusioninformations?lignes-de-produits-logiciels-et-communaute|Lignes de produits logiciels et communauté]]
* [[http://anubis.polytech.unice.fr/iut/2012_2013/projetstut/diffusioninformations?construction-d-un-diffuseur-pour-l-irsam|Construction d'un diffuseur pour la villa Apraxine]]
* [[http://anubis.polytech.unice.fr/iut/2012_2013/projetstut/diffusioninformations?connexion-de-la-synthese-vocale-au-diffuseur-d-information-de-l-irsam|Connexion de la synthese vocale au diffuseur d'information de l'irsam]]
* [[http://anubis.polytech.unice.fr/iut/2012_2013/projetstut/diffusioninformations#construction-d-un-diffuseur-pour-l-iut|Construction d'un diffuseur pour l'IUT]]
==== Technologies utilisées et requises ====
[[2012_2013:projetstut:diffusioninformations:DocumentationYourcast|Architecture générale et informations complémentaires]]
Pour la **partie Client**, outils et langages :
* [[http://www.w3schools.com/html/html5_intro.asp|HTML5]]/CSS3
* JavaScript
* Navigateurs supportant Html5 : Firefox, Chrome et Safari.
* [[http://lesscss.org/|langage LESS]]
* [[http://prototypejs.org/|framework Prototype]]
* Ajax
* Objets JSON
Pour la **partie Administration**, outils et langages :
* Groovy (construction du provider)
* Services REST
* JQuery
* Framework Bootstrap
Pour le **site communautaire** :
* les technologies sont libres. Si le groupe avance bien, la construction d'un service web en REST serait bienvenue.
Pour la **synthèse vocale** :
* MS .....
Pour les tests de javascript, incluant un plugin eclipse : http://code.google.com/p/js-test-driver/
Relations aux codes
==== Mode d'emploi ====
* Charger une version d'eclipse pour les développeurs d'applications http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/junosr1
* Installer le serveur APACHE 6.0 pour cela : en haut à droite javaEE, puis sélectionner l'onglet **Servers**
* créer un projet de type **Dynamic web Project** de nom **yc-client** de "target runtime" Tomcat v6.0, puis finish
* Recopier le code de la partie IHM qui vous intéresse sous webContent
* lancer le serveur par run sur le projet
* dans le navigateur, lancer le client : http://localhost:8080/yc-client/
* Pour **ajouter un renderer**, il faut ajouter le chemin dans le contrôleur de la zone.
Pour installer un editeur de fichier JSON : http://www.jiahaoliuliu.com/2012/02/edit-json-files-in-eclipse.html
Pensez à aller dans menu EDIT et appliquer un format Text
Remarquer sur le côté la visualisation de la structure.
===== Pour Tous -- Prise en main des codes -- =====
Voici les codes d'un diffuseur d'information sous la forme d'une archive.
Non stabilisé
* (pour tous) Exécuter un client
* Comprendre le format des données
* Comprendre l'architecture controleur, zone, controleur par zone, renderer...
* Modifier un renderer pour mieux comprendre (Attention de ne pas modifier l'existant mais de bien travailler dans le sandbox.
* Déployer l'archive qui vous a été donné (non encore fournie) => Sur la forge, construire une page wiki expliquant cette étape à destination d'un utilisateur non informaticien. Dans ce contexte, vous préciserez les systèmes sur lesquels vous avez déployé et les problèmes rencontrés. Ce travail sera mené par l'ensemble du groupe.
* Comprendre les codes fournis
* Expliciter l'architecture de l'application sous la forme d' un diagramme visualisant les différents "objets" de l'application: renderers, zones, providers, ... que vous déposerez dans la forge. Ce travail sera mené par l'ensemble du groupe.
===== Construction d'un diffuseur pour l'IRSAM =====
**Groupe de 4 étudiants**
L'[[http://www.irsam.asso.fr/center.aspx?CentreNum=3|IRSAM]] est un institut régional pour sourds et aveugles. La villa Apraxine sur Nice est un foyer où sont déployés deux écrans qui diffusent des informations aux pensionnaires tout au long de la journée.
L'objectif de ce projet est de produire des écrans au moins équivalents à l'existant mais améliorés en tenant compte des nouveaux besoins et ceci en se basant sur les nouvelles technologies utilisées dans l'usine. Les différents composants réalisés seront enregistrés dans la ligne de produit (cf. ).
[[2012_2013:projetstut:diffusioninformations:irsam| Description détaillée]]
===== Connexion de la synthèse vocale au diffuseur d'information de l'IRSAM =====
**Groupe de 2/3 étudiants**
Aux écrans de l'IRSAM (cf. ci-dessus) est connecté une synthèse vocale. Lorsqu'une personne tape sur la lettre m, elle entend le menu du jour, etc.
Les objectifs de ce projet sont :
- La version actuelle lit des fichiers XML, il s'agit de passer à la lecture d'objets JSON;
- Prendre en compte les besoins nouveaux de l'IRSAM et améliorer le service rendu en fonction des nouveaux services proposés, etc.
- Etudier l'intérêt de l'approche pour connecter d'autres systèmes à des diffuseurs d'informations et/ou explorer la vocalisation de certaines informations à des temps donnés comme les pauses.
[[2012_2013:projetstut:diffusioninformations:syntheseVocale| Description détaillée]]
===== Lignes de produits logiciels et Communauté =====
**Groupe de 4/5 étudiants**
Le concept de lignes de produits logiciel peut être appréhender par analogie avec une ligne de produits de voitures par exemple. Le client sélectionne les différents éléments qui l'intéressent, certains sont exclusifs les uns par rapport aux autres ou au contraire requis, et à partir de la configuration établie par le client, la voiture est produite. Il en est de même dans le cadre d'une ligne de produits logiciels mais ce qui est produit, c'est du logiciel.
Notre étude porte sur la construction de diffuseurs d'informations. L'utilisateur sélectionne les sources d'informations (Picasa, google Calendar, twitter, ...), le layout, les renderers d'affichage (Photos en Mosaique, défilement de twitts), les comportements (alternance des couleurs, sens de défilement, ...) et obtient son diffuseur pour son établissement.
Ce qui nous intéresse plus particulièrement dans ce projet, c'est que contrairement à une ligne de voitures, dans le contexte du logiciel, les composants peuvent être fournis par une communauté qui enrichit la ligne, par exemple une nouvelle source d'information comme un flux RSS, la météo, un nouvel affichage des calendriers, ....
L'objectif de ce sous-projet est de proposer un support "web" à la gestion des lignes de produits dans le contexte des diffuseurs d'informations. Il s'agira d'étudier des communautés existantes en production de logiciel et de proposer une solution pour les supporter. Le résultat attendu est à fois l'étude elle-même, le service de gestion des produits et de la communauté et le site lui-même.
[[2012_2013:projetstut:diffusioninformations:ligne| Description détaillée]]
===== Construction d'un diffuseur pour l'IUT =====
Sujet non validé
[[2012_2013:projetstut:diffusioninformations:iut| Sujet à évaluer]]
======= Organisation du projet =======
Toutes les équipes respecteront l'organisation suivante, où les durées sont des indicateurs, qui peuvent être raccourcis ou allongés avec justification en fonction des sous-cas.
- 15 jours ~ fin : 21 octobre:
* Compréhension du sujet, par l'étude
* des documents donnés,
* des technologies utilisées ou recommandées,
* des codes fournis
* Production des artefacts demandés éventuellement pour l'ensemble du groupe : documentation, tutoriels, ...
* Production de la trame principale du cahier des charges.
- 15 jours ~18 novembre :
* Analyse des besoins => Production d'une sous-partie du cahier des charges.
* Planification du projet SPrint 0 par la mise en place de user stories qui seront réifiées dans la forge sous la forme de demandes, comprenant date de début et de fin prévisionnelles; construction d'un premier backlog de sprint. Cette partie inclut les prévisions de tests.
- 15 jours ~ 9 décembre:
* Premiers développements
* Production à la fin d'un prototype
- Puis itérations selon la planification prévue jusqu'à l'étape suivante
* Semaine de développement agile en janvier pendant laquelle les équipes s'aligneront à nouveaux
- Intégration des FMs produits par les projets 2,3 et 4 dans le projet 1
En fonction des progrès des sous-groupes, chaque membre pourra contribuer à plusieurs sous-projets. L'utilisation de Redmine nous permettra de tracer ces contributions.
Pour chaque commit vous utiliserez : http://www.redmine.org/projects/redmine/wiki/RedmineTimeTracking
!- ===== Travail sur les déploiements =====
Objectifs: déployer et construire les docs de déploiements -!
!- ===== Interface du personalizer =====
Une fois une ligne de produits réalisée, ..
Technologie Groovy -!