Difference between revisions of "ECOM-1FO"

From air
Jump to navigation Jump to search
 
(108 intermediate revisions by 16 users not shown)
Line 7: Line 7:
 
* DD : Didier Donsez (didier.donsez@imag.fr)
 
* DD : Didier Donsez (didier.donsez@imag.fr)
 
* SC : Sybille Caffiau (sybille.caffiau@imag.fr)
 
* SC : Sybille Caffiau (sybille.caffiau@imag.fr)
* TR : Thomas Ropras (thomas.ropars@imag.fr)
+
* VZ : Vincent Zurczak (vzurczak@linagora.com)
 
'''Les réalisations :'''
 
'''Les réalisations :'''
 
* DCS : Dossier de Conception Système
 
* DCS : Dossier de Conception Système
 
* SAS : Schéma d'Architecture Système
 
* SAS : Schéma d'Architecture Système
  +
'''Autres :'''
  +
* ADE : Emploi du temps en ligne
   
 
==Groupes et sujets==
 
==Groupes et sujets==
===Groupes eCOM-RICM 2017-2018===
+
===Groupes eCOM-1F0 2018-2019===
Les groupes sont imposés par les enseignants et seront donnés lors de la première séance. Ils ne seront définitifs que le mardi 19/09 à 8h.
+
Les groupes sont imposés par les enseignants et seront donnés lors de la première séance. Ils ne seront définitifs que le mardi 18/09 à 8h.
====Groupe 1 ====
 
*AMODRU-FAVIN Hugo
 
*CHAMBONNET Simon
 
*FU Qianqian
 
*GAMBRO Antoine
 
*RIVOAL Alice
 
 
====Groupe 2 ====
 
*ALLARD Estelle
 
*COCHINHO Louis
 
*DELISE Antoine
 
*GUERRY Lucas
 
*ROCHER Lambert
 
 
====Groupe 3 ====
 
*BECHER Hervé
 
*DALLE Oriane
 
*GEOURJON Anthony
 
*LACHARTRE Denis
 
*SAVARY Rémi
 
 
====Groupe 4 ====
 
*BOISADAM Antoine
 
*DEREYMEZ Maxime
 
*LEMAIRE Timothée
 
*LESAGE Lucas
 
*ZENNOUCHE Douria
 
 
====Groupe 5 ====
 
*BONHOURE Gilles
 
*FERNANDES DE ALMEIDA Héloïse
 
*MARCHAND Charles
 
*MOREAU Gwenaël
 
*VIAL-GRELIER Aymeric
 
*ZEGAOUI Taquyeddine (arrivée début octobre)
 
 
====Groupe 6 ====
 
*ABONNENC Alicia
 
*BROCHIER Aymeric
 
*NASSIK Ahmed Amine
 
*ODIEVRE Boris
 
*TURRIN Vincent
 
   
  +
* [[ECOM-1FO_1819_Restaurant]] : '''William Weill (CP)''', Théo Lévesque, Loris Gentillon, Benjamin Besnier, Thomas Ozenda
  +
* [[ECOM-1FO_1819_Spectacle]] : '''Thibaud Vegreville (CP)''', Joffrey Ferreira, Bastien Terrier, Cédric Lafrasse
  +
* [[ECOM-1FO_1819_Camping]] : '''Timothée Depriester (CP)''', Sekina Belguendouz, [[User:Servan.Charlot | Servan Charlot]], Samuel Bamba, Florian Cuzin
  +
* [[ECOM-1FO_1819_Transport]] : '''Julien Courtial (CP)''', Aurélien Surier, Raphaël Manger, Théo Echevet
  +
* [[ECOM-1FO_1819_Sport]] : '''Hugo Gros-Daillon (CP)''', Quentin Fombaron, Tim Lepage, Vincent Aubert
  +
* [[ECOM-1F0_1819_BTB|ECOM-1FO_1819_BruleTaBuche]] : '''Léo Valette (CP)''', Amina Boucherima, [[User:Zoran.Chanet | Zoran Chanet]], Najwa Ez-zine, Enzo Molion
   
 
===Groupes eCOM-RICM Années précédentes===
 
===Groupes eCOM-RICM Années précédentes===
  +
* [[Groupes eCOM-RICM 2017-2018]]
 
* [[Groupes eCOM-RICM 2015-2016]]
 
* [[Groupes eCOM-RICM 2015-2016]]
 
* [[Groupes eCOM-RICM 2014-2015]]
 
* [[Groupes eCOM-RICM 2014-2015]]
 
 
   
 
==Planning des séances==
 
==Planning des séances==
Line 70: Line 35:
 
* du travail encadré (TD) : séance pendant lequel l'enseignant vous accompagnera pour la réalisation d'une étape de votre projet
 
* du travail encadré (TD) : séance pendant lequel l'enseignant vous accompagnera pour la réalisation d'une étape de votre projet
 
* du travail en autonomie : séance réservée au travail d'ECOM pendant laquelle vous travaillez entre étudiants
 
* du travail en autonomie : séance réservée au travail d'ECOM pendant laquelle vous travaillez entre étudiants
* de permanences : séances pendant lesquelles vous pouvez demander l'aide d'un enseignant pour vous aidez à avancer. Ces séances sont également l'occasion pour vos enseignants de faire le point avec vous sur votre avancé, vous devez donc IMPERATIVEMENT signaler votre lieu de travail si vous n'êtes pas dans les salles prévues par ADE (par email à SC et TR).
+
* de permanences : séances pendant lesquelles vous pouvez demander l'aide d'un enseignant pour vous aidez à avancer. Ces séances sont également l'occasion pour vos enseignants de faire le point avec vous sur votre avancé, vous devez donc IMPERATIVEMENT signaler votre lieu de travail si vous n'êtes pas dans les salles prévues par ADE (par email à SC et VZ).
   
 
An cas d’incohérence de planning avec ADE ; suivre ADE.
 
An cas d’incohérence de planning avec ADE ; suivre ADE.
* 19/09 8h00-12h15 : Introduction 1h00(DD+SC) ([[Media:presentationEcomSeance1-2017.pdf|transparents]]), CM Outils de suivi de projet + JSP 3h00 [http://lig-membres.imag.fr/donsez/cours/http-ecom.pdf HTTP] & [[Media:RestfulServices.pdf|REST]] (DD) (F018)
+
* 18/09 8h00-12h15 : Introduction 1h00(DD+SC) ([[Media:presentationEcomSeance1-2018.pdf|transparents]]), CM [[Media:RestfulServices.pdf|REST]], [[MicroServices]], [[Spring]], [[JHipster]] (DD) (P005)
  +
* 18/09 15h45-18h30 : (DD) Installation [[JHipster]] et [[Docker]]. Génération de l'application MVP de eCOM, lancement du profile dev, lancement du profil prod (avec Docker), analyse de qualité du code (généré) avec le container SonarQube et déploiement sur Heroku de 2 applications (stage, production) (F214, F215).
* 19/09 15h45-18h30 : JavaEE [https://github.com/donsez/javaee7-angular-swagger-docker app JavaEE de démo] [http://lig-membres.imag.fr/donsez/cours/javaee-ejb.pdf Cours JavaEE EJB](DD) Install [[JavaEE]] ([[Docker]] et [[Wildfly]]) Tutoriel EJB, Tutoriel Servlet/JSP/[[REST]]/WS/Filter/Docker ([[https://github.com/donsez/javaee7-angular-swagger-docker|lien]]) et [[JHipster]] pour le groupe "Gestion de courses sportives" (F202, F204)
 
  +
  +
* 25/09 8h00-12h15 : Des scénarios aux spécifications IHM (SC) (P257)
  +
* 25/09 15h45-18h30 : Séance en autonomie (F114, F214)
   
* 26/09 8h00-12h15 : Des scénarios aux spécifications IHM (SC) (P257)
+
* 02/10 8h00-12h15 : Test utilisateur (SC) puis Séance en autonomie (P039)
* 26/09 15h45-18h30 : Travail en autonomie (F202, F204)
+
* 02/10 15h45-18h30 : Séance en autonomie (F214, F215)
   
* 03/10 8h00-12h15 : Travail en autonomie (F201,202)
+
* 09/10 8h00-12h15 : Audit 1 (P013) et Séance en autonomie (P105, P133)
* 03/10 15h45-18h30 : Travail en autonomie (F202, F204)
+
* 09/10 15h45-18h30 : Tests de robustesse (charges) (VZ) (F114, F214)
   
* 10/10 8h00-12h15 : Audit 1 (F316) et travail en autonomie (F203)
+
* 16/10 8h00-12h15 : Séance en autonomie (P257)
* 10/10 15h45-18h30 : Tests de robustesse (charges) (DD) (F203)
+
* 16/10 15h45-18h30 : Séance encadrée (SC) (F214, F215)
   
* 17/10 8h00-12h15 : Travail en autonomie (F203, F217)
+
* 23/10 8h00-12h15 : Séance encadrée (VZ) (P257)
* 17/10 15h45-18h30 : Travail en autonomie (F202, F204)
+
* 23/10 15h45-18h30 : Séance en autonomie (F214, F215)
   
* 24/10 8h00-12h15 : Travail en autonomie (F203, F217)
+
* 06/11 8h00-12h15 : Audit 2 (F114) et Séance en autonomie (F202)
* 24/10 15h45-18h30 : Travail en autonomie (F202, F204)
+
* 06/11 15h45-18h30 : Séance en autonomie (F214, F215)
   
* 07/11 8h00-12h15 : Soutenance 2 (F109) et travail en autonomie (F203)
+
* 12/11 8h00-12h15 : Séance en autonomie (P257)
* 07/11 15h45-18h30 : Test utilisateur (SC) (F116)
 
   
* 14/11 8h00-12h15 : Travail encadré (TR) (F216, F217)
+
* 20/11 8h00-12h15 : Séance en autonomie + Séance encadrée (SC) (P257)
* 14/11 15h45-18h30 : Travail en autonomie (F202, F204)
+
* 20/11 15h45-18h30 : Séance encadrée (VZ) (F214, F215)
   
* 28/11 8h00-12h15 : Travail encadré (TR) (F216, F217)
+
* 27/11 15h45-18h30 : Séance encadrée (VZ) (F214, F215)
* 28/11 15h45-18h30 : Travail en autonomie (F202, F204)
 
   
* 05/12 8h00-12h15 : Travail encadré (TR) (F216, F217)
+
* 04/12 8h00-12h15 : Séance encadrée (VZ) (P257)
* 05/12 15h45-18h30 : Travail en autonomie (F202, F204)
+
* 04/12 15h45-18h30 : Séance en autonomie (F214, F215)
   
* 12/12 8h00-12h15 : Travail encadré (TR) (F216, F217)
+
* 11/12 8h00-12h15 : Séance encadrée (VZ) (P257)
  +
* 11/12 15h45-18h30 : Séance en autonomie (F214, F215)
   
* 19/12 8h00-12h15 : Soutenances finales (F201, F217)
+
* 18/12 8h00-12h15 : Soutenances (F114) et rendus finaux
* 19/12 15h45-18h30 : Soutenances finales (F201, F212)
+
* 18/12 15h45-18h30 : Soutenances (F114) et rendus finaux
   
 
==Modalités d’évaluation==
 
==Modalités d’évaluation==
Line 113: Line 80:
 
*présentation soutenance finale (3 pts) : note affectée sur la présentation (qualité des slides, discours...), les réponses aux questions
 
*présentation soutenance finale (3 pts) : note affectée sur la présentation (qualité des slides, discours...), les réponses aux questions
 
*conception (5 pts) : note obtenue à partir des livrables de conception, de la prise en compte des remarques faites par les enseignants pendant la soutenance de conception, du travail fourni (et observé) et du contenu de la soutenance de conception
 
*conception (5 pts) : note obtenue à partir des livrables de conception, de la prise en compte des remarques faites par les enseignants pendant la soutenance de conception, du travail fourni (et observé) et du contenu de la soutenance de conception
*développement (5 pts) : note obtenue à partir de la qualité et quantité du code réalisé, la démo de la soutenance finale. En particulier, seront observés, la qualité de l'architecture de l'application, la qualité et robustesse du code et la mise en place des principaux concepts de la technologie JEE.
+
*développement (5 pts) : note obtenue à partir de la qualité et quantité du code réalisé, la démo de la soutenance finale. En particulier, seront observés, la qualité de l'architecture de l'application, la qualité et robustesse du code et la mise en place des principaux concepts de la technologie [[Spring Boot]] / [[JHipster]].
*suivi de projet (4 pts) : cette note est obtenue par rapport aux livrables (qualité, livraison dans les délais...), la mise en place et bonne utilisation des outils collaboratifs, l'intégration continue, [[Continuous Delivery|Livraison en continue]], le contenu de la soutenance finale
+
*suivi de projet (4 pts) : cette note est obtenue par rapport aux livrables (qualité, livraison dans les délais...), la mise en place et bonne utilisation des outils collaboratifs, l'intégration continue, [[Continuous Delivery|Livraison en continue]] sur plusieurs VM dans un cloud public (AWS, GAE, Heroku, Azure, Bluemix, Digital Ocean ...), le contenu de la soutenance finale
   
 
==Soutenances==
 
==Soutenances==
   
 
Trois soutenances sont prévues (2 audits et 1 soutenance finale) :
 
Trois soutenances sont prévues (2 audits et 1 soutenance finale) :
* audit 1 (exigences, besoins client) : le 10 octobre 2017
+
* audit 1 (exigences, besoins client) : le 09 octobre 2017
* audit 2 (conception) : le 07 novembre 2017
+
* audit 2 (conception) : le 06 novembre 2017
* soutenance de fin de projet le 19 Décembre 2017
+
* soutenance de fin de projet le 18 Décembre 2017
 
Dans les trois cas, les soutenances doivent présenter les parties GL, Système et IHM.
 
Dans les trois cas, les soutenances doivent présenter les parties GL, Système et IHM.
  +
Attention : les concepts que vous avez vus en cours d'architecture doivent être mis en application pour l'architecture de votre projet. Une attention particulière sur ce point doit être portée lors de vos présentations à l'audit 2 et à la soutenance. Le travail que vous présenterez fournira de support à l'évaluation du module de GL.
   
===Soutenance 1 ===
+
===Audit 1 ===
*Salle : F316
+
*Salle : P013
  +
*Durée totale : 30 min par groupe (max 20 minutes de présentation et ensuite les questions des enseignants représentant les clients)
*Durée totale :
 
 
*Utilisez des transparents pour présenter votre projet.
 
*Utilisez des transparents pour présenter votre projet.
   
  +
* ordre de passage :
===Soutenance 2 ===
 
  +
*Salle : F109
 
  +
- 8h35 : Restaurant
*Durée totale :
 
  +
  +
- 9h10 : Spectacle
  +
  +
- 9h45 : Camping
  +
  +
- 10h20 : Transport
  +
  +
- 10h55 : Sport
  +
  +
- 11h30 : Brule ta bûche
  +
  +
''''' Contenu :'''''
  +
  +
Pour la partie GL et gestion de projet
  +
* Organisation de l'équipe (roles, ...)
  +
* Méthodologie de travail
  +
* Planning (envisagé)
  +
* Choix technologiques et état de prise en main
  +
  +
Besoins pour clients, avec en particulier (mais non exhaustive) :
  +
* Résultats de l’analyse de l’existant
  +
* Utilisateurs cibles, contexte d’utilisation et objectifs utilisateurs (ie objectifs de l’IHM)
  +
* Modèle de tâches et IHMA pour les premières tâches
  +
  +
===Audit 2 ===
  +
*Salle : F114
  +
*Durée totale : 25 min
 
*Utilisez des transparents pour présenter votre projet.
 
*Utilisez des transparents pour présenter votre projet.
   
Line 139: Line 134:
 
'''''Contenu attendu dans votre présentation( à avoir au minimum dans vos slides) :'''''
 
'''''Contenu attendu dans votre présentation( à avoir au minimum dans vos slides) :'''''
   
Pour la partie GL
+
Pour la partie GL et gestion de projet :
 
* Organisation de l'équipe (roles, ...)
 
* Organisation de l'équipe (roles, ...)
 
* Méthodologie de travail
 
* Méthodologie de travail
  +
* Planning (modifications par rapport à ce que vous aviez prévu jusqu'à maintenant et le planning futur)
* Planning (envisagé)
 
  +
* Architecture complète
* Choix technologiques
 
  +
* Procédure de tests
  +
* Procédure d'intégration du code
   
 
Pour la partie Système
 
Pour la partie Système
 
* Architecture systeme du service
 
* Architecture systeme du service
* Nombre de Beans (diagramme de classe, type, ...)
+
* Nombre de Entity, Ressources REST (diagramme de classe, type, ...)
 
* Extensions réalisées et envisagées
 
* Extensions réalisées et envisagées
 
* Etat d'avancement dans les développements
 
* Etat d'avancement dans les développements
   
 
Pour la partie IHM
 
Pour la partie IHM
  +
* Maquettes et squelette du site (pour la plateforme cible)
* Résultats de l’analyse de l’existant
 
  +
* Charte graphique
* Utilisateurs cibles, contexte d’utilisation et objectifs utilisateurs (ie objectifs de l’IHM)
 
  +
* Maquettes de la v0 et squelette du site (pour la plateforme cible)
 
  +
Une démonstration (rapide) de votre application telle qu'elle est (v0 ou v1 en fonction des groupes)
   
 
'''''Ordre de passage :'''''
 
'''''Ordre de passage :'''''
  +
  +
- 8h : Transport
  +
  +
- 8h30 : Spectacle
  +
  +
- 9h : Restaurant
  +
  +
- 9h30 : Camping
  +
  +
- 10h : Sport
  +
  +
- 10h30 : Brule ta bûche
   
 
Respectez l'ordre établi.
 
Respectez l'ordre établi.
Faites attention au temps. Vous disposez de 30 minutes par soutenance pour : votre présentation et les questions.
+
Faites attention au temps. Vous disposez de 25 minutes par soutenance pour : votre présentation et les questions.
 
Vous devrez gérer le temps. Les remarques (d’amélioration) qui seront faites pendant cette soutenance par les enseignants devront être prises en compte pour la version finale (pris en compte dans la note finale).
 
Vous devrez gérer le temps. Les remarques (d’amélioration) qui seront faites pendant cette soutenance par les enseignants devront être prises en compte pour la version finale (pris en compte dans la note finale).
   
Line 172: Line 182:
 
===Soutenance de fin de projet ===
 
===Soutenance de fin de projet ===
   
* Salle :
+
* Salle : F114
* Durée totale :
+
* Durée totale : 30 min (max 15 minutes de présentation, min 5 minutes de démo)
* Utilisez des transparents pour présenter votre projet. Lors de votre passage vous devez présenter une démo PRÉPARÉE.
+
* Utilisez des transparents pour présenter votre projet ( [[Media:Présentation RICM-2018.odp]]). Lors de votre passage vous devez présenter une démo PRÉPARÉE.
  +
  +
* ordre de passage :
  +
  +
- 8h : Sport
  +
  +
- 8h35 : Restaurant
  +
  +
- 9h10 : Spectacle
  +
  +
- 9h45 : Camping
  +
  +
- 10h20 : Transport
  +
  +
- 11h : Brule ta bûche
  +
  +
   
 
Arrivez avec l'application démarrée (on ne perd pas de temps) et 1 ou 2 scénarios (de test)
 
Arrivez avec l'application démarrée (on ne perd pas de temps) et 1 ou 2 scénarios (de test)
Line 182: Line 208:
 
* Vous devez fournir au début de votre passage les fiches d'auto-évaluation complétées (version papier)
 
* Vous devez fournir au début de votre passage les fiches d'auto-évaluation complétées (version papier)
   
'''''Contenu attendu dans votre présentation( à avoir au minimum dans vos slides) :'''''
+
'''''Contenu attendu dans votre présentation :'''''
  +
Votre présentation doit suivre le template suivante : [[Media:Présentation RICM-2018.odp]]
* une présentation globale du projet
 
  +
Vous devez suivre l'ordre dans lequel les items sont proposés mais vous pouvez ajouter des slides en cas de besoin pour illustrer (ex : pour expliquer votre processus).
* le processus de conception (illustré)
 
  +
Si vous avec des remarques/questions n'attendez pas pour les poser
* la démonstration de votre application
 
* des évaluations
 
* le bilan (pédagogique ET du projet/individuel ET groupe)
 
* le temps consacré à la conception
 
* le temps consacré au développement
 
* les principales difficultés rencontrées
 
   
 
'''''Ordre de passage :'''''
 
   
 
Respectez l'ordre établi.
 
Respectez l'ordre établi.
Faites attention au temps. Vous disposez de 35 minutes par soutenance pour : votre présentation et les questions. Au bout de 20 minutes de présentation vous serez interrompus pour être interrogés.
+
Faites attention au temps. Vous disposez de 30 minutes par soutenance pour : votre présentation et les questions. Au bout de 15 minutes de présentation vous serez interrompus pour être interrogés.
 
Les questions peuvent être posées nominativement (c'est à dire que la personne qui doit répondre est désignée par l'enseignant).
 
Les questions peuvent être posées nominativement (c'est à dire que la personne qui doit répondre est désignée par l'enseignant).
   
Line 205: Line 224:
 
* trouver un autre groupe avec qui échanger
 
* trouver un autre groupe avec qui échanger
 
* vous assurer que tous les membres de ce groupe acceptent l'échange
 
* vous assurer que tous les membres de ce groupe acceptent l'échange
* envoyer un mail à SC, DD et TR pour informer du changement (avec le chef de projet de l'autre groupe en copie)
+
* envoyer un mail à SC, DD et VZ pour demande d'accord du changement (avec le chef de projet de l'autre groupe en copie)
 
Les modifications ne sont acceptées que jusqu'au dimanche précédent la soutenance.
 
Les modifications ne sont acceptées que jusqu'au dimanche précédent la soutenance.
   
 
==Livrables==
 
==Livrables==
  +
Tout votre projet doit être suivi grâce à gitLab.
Deux rapports doivent être rédigés pour la partie Système : un document de conception système et un document d'évaluation système. Ces documents doivent être accessibles depuis le wiki (ils peuvent même être directement édités sur le wiki).
 
  +
  +
A tout moment, les enseignants doivent donc pouvoir
  +
* avoir la dernière version du code (dernière version du logiciel en production et ce qui est en cours de développement dans des branches dédiées)
  +
* voir les tâches prévues/en cours/réalisées
  +
* savoir le travail de chaque membre (effectué et assigné)
  +
* consulter les documents de conception (à jour)
  +
* consulter les CR des daily meeting et autres réunions et les rétrospectives et vos présentations aux différents audits
  +
* avoir connaissance des procédures de qualité que vous mettez en place au sein de votre projet
  +
* consulter les résultats des différents tests pour chaque release
  +
  +
Attention : nous insistons particulièrement sur le fait que toutes ces données doivent être maintenues en temps réel et accessibles sur le gitlab de votre projet.
  +
  +
Attention : nous consulterons également les messages de commit.
   
Vous pouvez ajouter les livrables que vous jugez utiles pour présenter le travail que vous avez réalisé. Pour ces livrables : numérotez les
 
   
 
===Rendus===
 
===Rendus===
  +
Vous trouverez ci-dessous une liste (non exhaustive) de certains livrables pouvant être produits au sein de votre projet
Chaque livrable est numéroté (détails du livrable ci-dessous) LX, sous une forme à respecter. Certains ont une date de rendu à respecter. Ci-dessous le résumé de ces contraintes :
 
*L2 : 09/10 minuit : Wiki
 
*L3 : 09/10 minuit : Wiki
 
*L4 : 06/11 minuit : Wiki
 
*L5 : ?
 
*L6 : 06/11 minuit : Wiki
 
*L7 : 09/10 minuit : Wiki
 
*L8 : en continu : Wiki
 
*L9 : en continu : Wiki
 
*L10 : 18/12 minuit : Lien Git sur Wiki
 
*L11 : 18/12 minuit : Lien sur Wiki
 
*L12 : 19/12 lors du passage
 
*L13 : 18/12 minuit : Lien Git sur Wiki
 
*L14 : 18/12 minuit : Lien Git sur Wiki
 
*L15 : 08/11 lors du passage
 
*L16 : 19/12 lors du passage
 
*L17 : 19/12 lors du passage : Tableaux complétés et imprimés
 
*L18 : 10/10 lors du passage
 
   
  +
'''''L1. Composition des groupes et sujet'''''. (obligatoire)
===Contenu===
 
'''''L1. Composition des groupes et sujet'''''.
 
 
Le sujet doit être validé par vos enseignants dès le premier jour du projet. Envoyez une description dans un corps de mail à DD et SC. Cette description doit contenir :
 
Le sujet doit être validé par vos enseignants dès le premier jour du projet. Envoyez une description dans un corps de mail à DD et SC. Cette description doit contenir :
 
* les membres du projet
 
* les membres du projet
Line 244: Line 257:
   
 
'''''L2. Dossier de conception Système'''''.
 
'''''L2. Dossier de conception Système'''''.
Le Dossier de Conception Système (DCS) a pour but de permettre à toute personne de connaitre les principaux composants JEE de votre application ECOM. Cette connaissance doit pouvoir être acquise rapidement, sans avoir à entrer dans les détails de l'implémentation. Le DCS doit donc être de taille relativement limitée (5 à 10 pages, 20 pages au grand maximum).
+
Le Dossier de Conception Système (DCS) a pour but de permettre à toute personne de connaitre les principaux composants Spring de votre application ECOM. Cette connaissance doit pouvoir être acquise rapidement, sans avoir à entrer dans les détails de l'implémentation. Le DCS doit donc être de taille relativement limitée (5 à 10 pages, 20 pages au grand maximum).
 
Le DCS est centré sur un schéma d'architecture système (SAS). Pour chaque composant et lien du SAS, le DCS doit fournir :
 
Le DCS est centré sur un schéma d'architecture système (SAS). Pour chaque composant et lien du SAS, le DCS doit fournir :
 
* Une description fonctionnelle : La description fonctionnelle d'un composant fait apparaître les attributs qui le composent, ainsi que les méthodes qu'il fournit. Attributs et méthodes seront associés à une courte description. Les besoins liées à la persistence ou aux aspects transactionnels peuvent également être explicités.
 
* Une description fonctionnelle : La description fonctionnelle d'un composant fait apparaître les attributs qui le composent, ainsi que les méthodes qu'il fournit. Attributs et méthodes seront associés à une courte description. Les besoins liées à la persistence ou aux aspects transactionnels peuvent également être explicités.
* Une description d'implantation JEE : La description d'implantation décrit l'implantation du composant ou du lien dans l'environnement JEE. Un composant peut être implanté par un programme Java externe (client léger / client lourd JEE), par un servlet, par un bean ou par un objet POJO. Dans ces derniers cas, il faut préciser les caractéristiques des beans / POJO (local / distribué, session / évenementiel, stateful / stateless, etc). Un lien peut être implanté par une relation JEE, ou bien par conservation de référence de bean.
+
* Une description d'implantation Spring : La description d'implantation décrit l'implantation du composant ou du lien dans l'environnement Spring. Un composant peut être implanté par un client généré à partir de l'interface de/des micro-services, par un micro-service REST (Controller), par un Service, par un Entity ou par un client Feign vers un micro-service externe au systeme (par exemple, service de paiement Swipe.com, ...).
   
 
Le dossier de conception système doit être disponibles depuis votre page wiki.
 
Le dossier de conception système doit être disponibles depuis votre page wiki.
Line 262: Line 275:
 
'''''L7.Modèle de tâches'''''.
 
'''''L7.Modèle de tâches'''''.
   
'''''L8.Scrum (waffle ou autre)'''''.
+
'''''L8.Scrum (tableau de tâches de Gitlab)'''''.
 
*(Ils peuvent si vous le souhaiter être directement édités sur le wiki)
 
*(Ils peuvent si vous le souhaiter être directement édités sur le wiki)
 
* Le rapport de charge (benchmark) doit être (MUST) disponible sur le wiki.
 
* Le rapport de charge (benchmark) doit être (MUST) disponible sur le wiki.
Line 269: Line 282:
 
'''''L9.Journal'''''.
 
'''''L9.Journal'''''.
 
Détaillez l'affectation des taches effectuées ainsi le temps estimé et le temps effectif pour chaque tache et son état (Réalisée, Reportée, Abandonnée, ...)
 
Détaillez l'affectation des taches effectuées ainsi le temps estimé et le temps effectif pour chaque tache et son état (Réalisée, Reportée, Abandonnée, ...)
  +
Le journal doit être nominatif. Chaque membre de projet doit gérer son propre journal. Il fera l'objet d'une évaluation personnelle.
   
 
'''''L10.Dépôt Git'''''.
 
'''''L10.Dépôt Git'''''.
Line 275: Line 289:
 
'''''L11.Application en ligne'''''.
 
'''''L11.Application en ligne'''''.
   
'''''L12. Evaluation de l'IHM réalisée'''''.
+
'''''L12. Evaluations de l'IHM réalisée'''''.
 
cf cours IHM [[Media:Cours2015-2016RICM.pdf]]
 
cf cours IHM [[Media:Cours2015-2016RICM.pdf]]
   
Line 286: Line 300:
 
* Nombre de lignes de code (outil CLOC à minima)
 
* Nombre de lignes de code (outil CLOC à minima)
 
* Métriques de qualité du code ([http://www.sonarqube.org/ SonarQute], ...)
 
* Métriques de qualité du code ([http://www.sonarqube.org/ SonarQute], ...)
  +
   
 
'''''L14. Evaluation économique du projet'''''.
 
'''''L14. Evaluation économique du projet'''''.
 
* Utilisez les temps effectifs des taches renseignées dans le journal.
 
* Utilisez les temps effectifs des taches renseignées dans le journal.
 
* Utilisez le coût du travail d'un ingénieur débutant.
 
* Utilisez le coût du travail d'un ingénieur débutant.
* Comparez votre coût à l'évaluation [[COCOMO]] de votre projet (utiliser les valeurs de L13).
+
* Comparez votre coût à l'évaluation [[COCOMO]] de votre projet (utiliser les valeurs de L9).
   
  +
'''''L15. Evaluation de la cybersécurité du projet (option)'''''.
   
'''''L15. Diapos de votre présentation de conception'''''.
+
'''''L16. Evaluation des performances du projet (option)'''''.
  +
* Résultat d'une injection de charge simpliste avec [[Gatling]]
  +
* Résultat d'une injection de charge suivant un scénario complet avec [[Gatling]]
   
'''''L16. Diapos de votre présentation finale'''''.
+
'''''L17. Gestion des risques (option)'''''.
   
'''''L17. Auto evaluation'''''.
+
'''''L18. Slides de présentation conception'''''.
Système : [[Media:FicheEval20162017-ECOM.doc]]
 
   
'''''L18. Diapos de votre présentation client'''''.
+
'''''L19. Diapos de votre présentation de conception'''''.
  +
  +
'''''L20. Diapos de votre présentation finale'''''.
  +
  +
'''''L21. Auto evaluation'''''.
  +
Système : [[Media:FicheEval20182019-ECOM]]
  +
  +
'''''L22. Diapos de votre présentation client'''''.
   
 
=Réalisations attendues=
 
=Réalisations attendues=
Line 312: Line 336:
 
* rétrospectives
 
* rétrospectives
   
Pensez à créer un wiki qui regroupera l'ensemble de vos documentations. Cela doit être une documentation Agile !!!!
+
Pensez à utiliser un outil adapté cela doit être une documentation Agile !!!!
   
 
(May) mettre en place des "poker planning"
 
(May) mettre en place des "poker planning"
Line 320: Line 344:
   
 
Selon les principes de la méthodologie Agile, vous devez composer votre travail en fonctionnalités. Chacune fera l’objet d’une conception (système et IHM) et d’un développement. Conception ET développement constituent l’ensemble des réalisations attendues.
 
Selon les principes de la méthodologie Agile, vous devez composer votre travail en fonctionnalités. Chacune fera l’objet d’une conception (système et IHM) et d’un développement. Conception ET développement constituent l’ensemble des réalisations attendues.
  +
  +
Vous devez utiliser GitLab comme support à votre projet (versioning, gestion des tâches...).
  +
  +
Nous vous demandons également d'utiliser les issues pour la communication avec les enseignants. En particulier, toute absence ou télétravail doit être signalé par ce média.
   
 
==Réalisations système==
 
==Réalisations système==
Line 331: Line 359:
 
====Les étapes====
 
====Les étapes====
 
Etape 0 :
 
Etape 0 :
Créer une organisation github ou bitbucket. Ajouter les membres du projet eCOM à l'organisation. Créer plusieurs projets pour les différents parties. Activer les watchs. Ajouter les webhooks utiles.
+
Créer un groupe GitLab. Y ajouter les membres du projet eCOM. Créer plusieurs projets pour les différents parties. Activer les notifications. Ajouter les webhooks utiles.
   
 
Etape 1 :
 
Etape 1 :
La première consiste à définir le cœur de l'application, c'est-à-dire le modèle de données et la logique métier, puis à réaliser un premier prototype qui démontre une bonne maîtrise des EJB (session et entity beans, annotations JAX-RS, [[Swagger]]). L'application RESTful est seulement accessible par l'intermédiaire de clients type cUrl, [[Swagger]] UI, jmeter, .... Il n'est pas demandé, de réaliser une interface web pour interagir avec l'application. L'application doit cependant offrir deux modes d’utilisation (administrateur et consommateur) et exécuter certaines requêtes avec des garanties transactionnelles. Votre machine virtuelle doit être sécurisée (Security Group et/or [[UFW]] pour les ports exposés). Evitez de vous faire rançonner comme un binôme de la promo 2016-2017 (voir ci-dessous, la rançon d'une BD [[MongoDB]]).
+
La première consiste à définir le cœur de l'application, c'est-à-dire le modèle de données (UML ou similaire [https://www.jhipster.tech/jdl/ JDL]) et la logique métier, puis à réaliser un premier prototype qui démontre une bonne maîtrise des Entity (annotations JAX-RS, annotations [[Swagger]]).
  +
  +
L'application RESTful est seulement accessible par l'intermédiaire de clients type cUrl (généré avec le générateur [https://swagger.io/tools/swagger-codegen/ swagger-codegen]), [[Swagger]] UI, injecteur de charge [[Gatling]], ....) et le frontend AngularX que vous aurez généré avec [[JHipster]].
  +
  +
Il n'est pas demandé, de réaliser une interface web pour interagir avec l'application. L'application doit cependant offrir deux modes d’utilisation (administrateur et utilisateurs finaux) et exécuter certaines requêtes avec des garanties transactionnelles.
  +
  +
TRES IMPORTANT : Votre machine virtuelle doit être sécurisée (Security Group et/or [[UFW]]/IPtables pour les ports exposés). Evitez de vous faire rançonner comme un binôme de la promo 2016-2017 (voir ci-dessous, la rançon d'une BD [[MongoDB]]).
   
 
<pre>
 
<pre>
Line 358: Line 392:
 
* Développement d'une interface Web basée sur le modèle MVC (SPA ou non) ;
 
* Développement d'une interface Web basée sur le modèle MVC (SPA ou non) ;
 
* Modification de la configuration de déploiement pour la haute disponibilité (HA) :
 
* Modification de la configuration de déploiement pour la haute disponibilité (HA) :
# Mise en place d'un container base de données externe (MySQL, Oracle, HSQL ...) (non répliquée)
+
# Mise en place d'un container base de données externe (MySQL, ...) pour la production (non répliquée)
# Mise en place de 2 containers base de données (MySQL, Oracle, HSQL ...) en cluster ([http://assets.en.oreilly.com/1/event/2/MySQL%20Replication%20Tutorial%20Presentation%202.pdf réplication])
+
# Mise en place de 2 containers base de données (MySQL) en cluster ([http://assets.en.oreilly.com/1/event/2/MySQL%20Replication%20Tutorial%20Presentation%202.pdf réplication])
# Mise en place de 2 containers ''frontends'' load balancer [[HAProxy]] en mode SSL terminaison ([[HAProxy#Configuration_en_SSL_Terminaison|instructions]])
+
# Mise en place de 2 containers ''frontends'' load balancer [[HAProxy]] ou [[Nginx]] en mode SSL terminaison ([[HAProxy#Configuration_en_SSL_Terminaison|instructions]])
  +
# Génération et rafraichissement des certificats SSL avec [[Let's Encrypt]]
 
* Amélioration des fonctionnalités. En particulier, considérez les points suivants :
 
* Amélioration des fonctionnalités. En particulier, considérez les points suivants :
 
** Renseignement de la [[Privacy policy guidelines|notice relative à la protection de la vie privée]].
 
** Renseignement de la [[Privacy policy guidelines|notice relative à la protection de la vie privée]].
 
** Gestion de la concurrence et de la reprise sur panne avec des transactions ACID
 
** Gestion de la concurrence et de la reprise sur panne avec des transactions ACID
  +
** Gestion de l'internationalisation (i18n) des applications web et mobiles. ''Remarque : vous pouvez utiliser les principes et outils appris dans l'UE Communication Langagière.''
** Gestion asynchrone et transactionnelle de l'envoi des courriels via [[JMS]] et des EJBTimer (voir http://ecom.ow2.org/xwiki/bin/view/Main/fremail)
 
  +
** Gestion des contenus multimedia (photos, videos, docs ...) avec un FileStorageService ([https://www.callicoder.com/spring-boot-file-upload-download-rest-api-example/ lien])
** Gestion asynchrone et transactionnelle de l'envoi de SMS via [[JMS]] et des EJBTimer ([[ECOM/SMSProviders|fournisseurs SMS]])
 
  +
** Gestion adaptative des contenus multimedia (photos) avec un ThumbnailService (montrez l'amélioration des performances avec Gatling)
 
  +
** Gestion du cache client pour les photos et les thumbnails avec Cache-Control et ETag (montrez l'amélioration des performances avec Gatling)
  +
** Utilisation de mode Lazy pour les chargements (fetch) des collections et des médias (CLOB,BLOB).
  +
** Génération d'une application mobile [[Ionic]] avec [https://github.com/oktadeveloper/generator-jhipster-ionic generator-jhipster-ionic] (inclure les plugins [[Apache Cordova]] utiles à votre projet).
  +
** Utilisation d'un cache ([https://www.jhipster.tech/using-cache/ préconisé par JHipster])
 
* Ajout éventuel de fonctionnalités non prioritaires. De façon facultative, vous pourrez ajouter au prototype précédent quelques unes des fonctionnalités suivantes :
 
* Ajout éventuel de fonctionnalités non prioritaires. De façon facultative, vous pourrez ajouter au prototype précédent quelques unes des fonctionnalités suivantes :
** Gestion de l'internationalisation (i18n) des applications web et mobiles. ''Remarque : vous pouvez utiliser les principes et outils appris dans l'UE Communication Langagière.''
 
** Gestion des contenus multimedia (photos, videos, docs ...) avec [[Apache Jackrabbit]]
 
 
** Stockage externalisé des contenus multimedia par des [[Content Delivery Network]]s ([[Amazon S3]], Azure, Akamaï ...)
 
** Stockage externalisé des contenus multimedia par des [[Content Delivery Network]]s ([[Amazon S3]], Azure, Akamaï ...)
  +
** Génération de documents PDF à partir des valeurs de champs d'une entité ou du collection d'entités (exemple d'applications : facture, dossard coureur, export RGPD, ...) [https://www.stackextend.com/java/generate-pdf-document-using-jasperreports-and-spring-boot/ lien]
** Suivi du ''click stream'' avec des Filters en vue d'une analyse ''[[Big Data]]'' avec [[Spark]] (''Click Analytics'', [https://github.com/pmerienne/iterative-cf Recommender System]).
 
  +
** Import et export massifs de collections d'entités en format CSV, JSON.
** Intégration de [[Memcached]]
 
  +
** Suivi du ''click stream'' avec des Filters/Aspects en vue d'une analyse ''[[Big Data]]'' avec [[Spark]] (''Click Analytics'', [https://github.com/pmerienne/iterative-cf Recommender System]).
 
** Gestion rudimentaire d'une interface vocale avec un serveur vocal [[EA2012-Serveux Vocaux|VoiceXML]].
 
** Gestion rudimentaire d'une interface vocale avec un serveur vocal [[EA2012-Serveux Vocaux|VoiceXML]].
** Utilisation de [[OAuth2]] ou [[OpenID]] pour le login et l'accès aux API REST.
+
** Utilisation de [[OAuth2]] ou [[OpenID]] pour le login et l'accès aux API REST avec [[Keycloak]] ou [[OKTA]].
** Utilisation de services tiers via leurs APIs (voir le catalogue de [[Mashape]])
+
** Utilisation du service de paiement Stripe.com en mode développeur
 
** Chat avec un opérateur du helpdesk (texte et/ou audio avec [[WebRTC]])
 
** Chat avec un opérateur du helpdesk (texte et/ou audio avec [[WebRTC]])
  +
** Chatbot du helpdesk (comme [https://github.com/ovh-ux/ovh-chatbot ovh-chatbot])
** Gestion d'un ''cloud'' privé avec [[OpenStack]] avec [[Fuel]]
 
** Gestion d'un [[CaaS]] Docker privé avec [[Kubernete]] ou [[Docker Swarm]]
+
** Gestion d'un [[CaaS]] Docker privé avec [[Minikube]], [[Kubernetes]], [[Rancher]] ou [[Docker Swarm]]
  +
** Traduction automatique et à la volée des champs des produits (nom, description, commentaires et avis) en fonction de la langue de l'usager, au moyen d'un service tiers.
** Conditionnement de l'application mobile avec [[Apache Cordova]]
 
  +
** Script périodique (crontab) de dump et de backup distant de la base MySQL.
** Traduction automatique et à la volée des champs des produits (nom, description, commentaires et avis) en fonction de la langue de l'usager, au moyen d'un service tiers ([[AxiMAG]] par exemple).
 
  +
** Gestion asynchrone et transactionnelle de l'envoi des courriels via le MailService, Thymeleaf et des taches @Scheduled
  +
** Gestion asynchrone et transactionnelle de l'envoi de SMS (si le destinataire a un compte gratuit pour l'auto-réception de SMS)
   
 
Remarque: certaines fonctionnalités sont assez indépendantes du noyau du projet : elles peuvent être mis en place dès le départ de l'étape 1.
 
Remarque: certaines fonctionnalités sont assez indépendantes du noyau du projet : elles peuvent être mis en place dès le départ de l'étape 1.
Line 393: Line 433:
   
 
Vous devez obligatoirement mettre en place les points suivants dès le démarrage du projet :
 
Vous devez obligatoirement mettre en place les points suivants dès le démarrage du projet :
* Déploiement et retrait de l'application sur/de la plateforme cloud publique ou privée (UFR, Amazon, Azure, Google)
+
* Déploiement et retrait de l'application sur/de la plateforme cloud publique ou privée (UFR, Amazon, Azure, Google, [https://www.jhipster.tech/heroku/ Heroku])
* Performances (résultat du injection de charge avec [[Apache JMeter]], [[Gatling]], OW2 CLIF, BlazeMeter.com) : Astuce: utiliser les images [[Docker]].
+
* Performances (résultat du injection de charge avec [[Apache JMeter]] ou [[Gatling]]) : Astuce: utiliser les images [[Docker]].
 
* Reprise sur panne simple et alerte des ''ops'' avec [[Monit]] (ie relance simple du serveur en cas de "plantage").
 
* Reprise sur panne simple et alerte des ''ops'' avec [[Monit]] (ie relance simple du serveur en cas de "plantage").
  +
* Script "basique" pour le rolling update des composants répliqués (application, base de données, serveurs de mail, load balancer). Remarque: [[Kubernetes]] gère les rolling updates ([https://kubernetes.io/docs/tasks/run-application/rolling-update-replication-controller/ lien]).
* Supervision des VMs du système déployé avec un de ces systèmes : [[Telegraf]] + [[InfluxDB]] + [[Grafana]].
 
* Script "basique" pour le Rolling update (Blue-Green Deployment) des composants (applications et intergiciels).
 
 
* Script "basique" pour le Fast forward (en cas de panne des composants dernièrement mis à jour).
 
* Script "basique" pour le Fast forward (en cas de panne des composants dernièrement mis à jour).
   
 
Vous devez optionnellement mettre en place les points suivants:
 
Vous devez optionnellement mettre en place les points suivants:
* Déploiement avec [[Docker]] (dockerfile et docker-compose) pour l'application eCom (utiliser [https://hub.docker.com/_/glassfish/ Glassfish]).
+
* Déploiement avec [[Docker]] (dockerfile et docker-compose) pour l'application eCom. JHipster génère le dockerfile de l'application et quelques descripteurs docker-compose.
 
* Préparation d'images [[Docker]]
 
* Préparation d'images [[Docker]]
  +
* Supervision des VMs du système déployé avec un de ces systèmes : [[Nagios]], [[Shinken]], [[Icinga]], [[Filter]]s, [[Tomcat Valve]]s, [[Glimpse]], [[Ganglia]], [[Elasticsearch]] + [[ElastAlert]], [[Hawkular]], [[Telegraf]] + [[InfluxDB]] + [[Grafana]], [[Prometheus]] ...* Injection de pannes avec [[Netflix Simian Army]]
* Injection de pannes avec [[Netflix Simian Army]]
 
* Déploiement de l'application eCOM distribuée sur plusieurs VM [[CoreOS]] ou [[Ubuntu Core]] avec [[Vagrant]] et VirtualBox, Azure, Amazon EC2, [[Google's Compute Engine]] ...
+
* Déploiement de l'application eCOM distribuée sur plusieurs VM [[Ubuntu Core]] avec [[Vagrant]] et VirtualBox, Azure, Amazon EC2, [[Google's Compute Engine]] ...
* Supervision des VMs du système déployé avec un de ces systèmes : [[Nagios]], [[Shinken]], [[Icinga]], [[Filter]]s, [[Tomcat Valve]]s, [[Glimpse]], [[Ganglia]], [[Elasticsearch]] + [[ElastAlert]], [[Hawkular]] ...
 
 
* Validation des services REST avec [[Swagger]]
 
* Validation des services REST avec [[Swagger]]
   
Line 411: Line 449:
 
===Conception===
 
===Conception===
 
La conception de la partie IHM du projet sera principalement composée :
 
La conception de la partie IHM du projet sera principalement composée :
  +
* Des mécanismes pour intégrer les besoins des utilisateurs
 
* Des modèles (tâches, IHMA)
 
* Des modèles (tâches, IHMA)
 
* De la charte graphique
 
* De la charte graphique
 
* De l'explication des choix de conception faits
 
* De l'explication des choix de conception faits
  +
 
===Développement===
 
===Développement===
 
Vous êtes libres des technologies à utiliser pour le développement de la partie IHM de l'application. Cependant, vous devez être capable de justifier vos choix. La partie IHM doit être distincte du noyau fonctionnel. Les codes de la partie présentation et du contenu de l'IHM doivent également être séparés. Veuillez aux noms que vous attribuerez. Les "zones" définies dans vos IHMA doivent être facilement identifiables dans le code que vous réalisez (ex : ID des DIV).
 
Vous êtes libres des technologies à utiliser pour le développement de la partie IHM de l'application. Cependant, vous devez être capable de justifier vos choix. La partie IHM doit être distincte du noyau fonctionnel. Les codes de la partie présentation et du contenu de l'IHM doivent également être séparés. Veuillez aux noms que vous attribuerez. Les "zones" définies dans vos IHMA doivent être facilement identifiables dans le code que vous réalisez (ex : ID des DIV).
   
 
L'IHM des utilisateurs différents peut être gérée différemment. Par exemple, l'IHM de l'administrateur de l'application peut être une Interface en ligne de commande (pour l'initialisation du catalogue du service, l'ajout de nouveaux produits). Vous pouvez utiliser l'interface EJB facade directement ou bien une interface [[RESTful]] en utilisant directement [[Curl]]).
 
L'IHM des utilisateurs différents peut être gérée différemment. Par exemple, l'IHM de l'administrateur de l'application peut être une Interface en ligne de commande (pour l'initialisation du catalogue du service, l'ajout de nouveaux produits). Vous pouvez utiliser l'interface EJB facade directement ou bien une interface [[RESTful]] en utilisant directement [[Curl]]).
  +
  +
===Evaluation des IHMs===
  +
Une IHM doit être évaluée par au moins deux types d'évaluation (en plus de l'évaluation fonctionnelle) :
  +
* évaluation experte pour vérifier que les principes fondamentaux d'utilisabilité sont respectés
  +
* tests utilisateur pour étudier comment vos utilisateurs utilise dans leurs contextes d'utilisation votre interface
   
 
=Documentation=
 
=Documentation=
Line 431: Line 476:
 
* Cours http (DD) : [http://membres-liglab.imag.fr/donsez/cours/http.pdf url]
 
* Cours http (DD) : [http://membres-liglab.imag.fr/donsez/cours/http.pdf url]
 
* Cours servlet (DD) : [http://membres-liglab.imag.fr/donsez/cours/servletjsp.pdf url]
 
* Cours servlet (DD) : [http://membres-liglab.imag.fr/donsez/cours/servletjsp.pdf url]
* Cours IHM (SC) : [[Media:ECOMCours2017-2018.pdf]]
+
* Cours IHM (SC) : [[Media:ECOMCours2018-2019.pdf]]
 
* Annexe Cours IHM (SC) : [[Media:Annexe1-HeuristiqueNielsen.pdf]], [[Media:Annexe2-KMADe.pdf]], [[Media:Annexe3-Placement.pdf]], [[Media:Annnexe4-Accesssibilité.pdf]]
 
* Annexe Cours IHM (SC) : [[Media:Annexe1-HeuristiqueNielsen.pdf]], [[Media:Annexe2-KMADe.pdf]], [[Media:Annexe3-Placement.pdf]], [[Media:Annnexe4-Accesssibilité.pdf]]
   
 
==Doc utiles==
 
==Doc utiles==
 
* [http://lig-membres.imag.fr/donsez/cours/eaumlrel.pdf Transformation UML vers Relationnel]
 
* [http://lig-membres.imag.fr/donsez/cours/eaumlrel.pdf Transformation UML vers Relationnel]
* [https://glassfish.java.net/docs/4.0/administration-guide.pdf Guide d'administration de Glassfish 4]
 
* [http://docs.oracle.com/javaee/7/tutorial/doc/ Tutorial JavaEE 7 ] ([https://svn.java.net/svn/javaeetutorial~svn/ sources des exemples])
 
* [http://docs.oracle.com/javaee/7/api/ API JavaEE 7]
 
* [https://java.net/projects/javaee-spec/pages/Home Java EE Platform Specification]
 
 
* [http://www.theserverside.com/news/thread.tss?thread_id=55191 JPA implementation patterns ]
 
* [http://www.theserverside.com/news/thread.tss?thread_id=55191 JPA implementation patterns ]
 
* Présentation sur le Cloud Computing : http://erods.liglab.fr/icar2013/programme.html
 
* Présentation sur le Cloud Computing : http://erods.liglab.fr/icar2013/programme.html
* Documentation et Training Kit sur Windows Azure : http://www.microsoft.com/en-us/download/details.aspx?id=8396
 
* Documentation de [http://roboconf.net/en Roboconf]
 
** Exemple avec LAMP http://roboconf.net/en/user-guide/lamp-example-part-1.html
 
http://proton.inrialpes.fr/~depalma/ecom/liens/liens.html
 
* [[Bootstrap]]
 
   
 
===Quelques livres et technologies===
 
===Quelques livres et technologies===
   
REMARQUE: les livres sur JavaEE se periment très vite avec l'évolution de la spécification
+
REMARQUE: les livres sur ces technologies se périment très vite.
  +
  +
====[[Spring]]====
  +
* Bons tutoriels sur https://www.baeldung.com/rest-with-spring-series/
  +
* Les manuels de références de Spring https://spring.io/projects/spring-boot#overview
  +
* Craig Walls, Spring in Action, Fifth Edition, https://www.manning.com/books/spring-in-action-fifth-edition
  +
  +
====[[JHipster]]====
  +
* Matt Raible, The JHipster Mini-Book 4.5 (GRATUIT) https://www.infoq.com/minibooks/jhipster-4x-mini-book
  +
* Deepu K Sasidharan, Sendil Kumar N, Full Stack Development with JHipster, (10 $ en promotion) March 2018, https://www.packtpub.com/application-development/full-stack-development-jhipster
  +
 
====JavaEE====
 
====JavaEE====
 
* [http://shop.oreilly.com/product/0636920030614.do Arun Gupta, Java EE 7 Essentials, Enterprise Developer Handbook, O'Reilly Media, August 2013] ([https://github.com/javaee-samples/javaee7-samples + 200 exemples de projets Maven])
 
* [http://shop.oreilly.com/product/0636920030614.do Arun Gupta, Java EE 7 Essentials, Enterprise Developer Handbook, O'Reilly Media, August 2013] ([https://github.com/javaee-samples/javaee7-samples + 200 exemples de projets Maven])
* [http://www.apress.com/9781430246268 Antonio Goncalves, Beginning JavaEE 7, APress, 2013], ([https://github.com/agoncal/agoncal-book-javaee7 examples] pour [[Glassfish]] 4)
 
* [https://www.packtpub.com/application-development/java-ee-7-developer-handbook Peter A. Pilgrim, Java EE 7 Developer Handbook, Packt, 2013, ISBN 139781849687942 ]
 
* [http://www.packtpub.com/java-ee6-securing-tuning-extending-enterprise-applications-cookbook/book Mick Knutson, Java EE6 Cookbook for securing, tuning, and extending enterprise applications, Packt Publishing, June 2012]
 
* Holly Cummins and Timothy Ward, Enterprise OSGi in Action, March, 2013, 400 pages, ISBN: 9781617290138, http://www.manning.com/cummins/ ([http://www.manning.com/cummins/EOSGI_sample_ch02.pdf chapitre 2], [http://www.manning.com/cummins/EOSGI_sample_ch10.pdf chapitre 10])
 
* [http://www.manning.com/panda2/ Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan, EJB 3 in Action, Second Edition, March 2014, ISBN: 9781935182993], ([http://www.manning.com/panda2/EJB3iA_2E_SourceCode.zip source code of examples])
 
* [http://shop.oreilly.com/product/9780596158033.do Andrew Lee Rubinger, Bill Burke, Enterprise JavaBeans 3.1, 6th Edition, O'Reilly Media, Final Release Date: September 2010, Pages]
 
 
* Building, Packaging, and Distributing Java EE Applications in 2017 https://dzone.com/articles/building-packaging-and-distributing-java-ee-apps-in-2017-part-2
 
* Building, Packaging, and Distributing Java EE Applications in 2017 https://dzone.com/articles/building-packaging-and-distributing-java-ee-apps-in-2017-part-2
   
Line 468: Line 508:
 
====[[Responsive Web Design]]====
 
====[[Responsive Web Design]]====
 
* Matthew Carver, The Responsive Web, Manning, October 2014, ISBN: 9781617291241 http://www.manning.com/carver/ ([http://www.manning.com/carver/TRWSourceCode.zip source code])
 
* Matthew Carver, The Responsive Web, Manning, October 2014, ISBN: 9781617291241 http://www.manning.com/carver/ ([http://www.manning.com/carver/TRWSourceCode.zip source code])
 
====[[AngularJS]]====
 
* Brad Green, Shyam Seshadri, AngularJS, Pub OReilly http://shop.oreilly.com/product/0636920028055.do ([https://github.com/shyamseshadri/angularjs-book source code])
 
   
 
====[[Bootstrap]]====
 
====[[Bootstrap]]====
Line 492: Line 529:
 
* [[Media:Questionnaire copy.pdf]]
 
* [[Media:Questionnaire copy.pdf]]
   
  +
====Evaluations des interfaces====
====Questionnaire SUS (évaluation de la satisfaction)====
 
  +
*[[Media:Evaluation Heuristiques Nielsen.pdf]]
 
* [http://blocnotes.iergo.fr/concevoir/les-outils/sus-pour-system-usability-scale/]
 
* [http://blocnotes.iergo.fr/concevoir/les-outils/sus-pour-system-usability-scale/]
 
*[[Media:System-Usability-ScaleLogicielComplet.pdf]]
 
*[[Media:System-Usability-ScaleLogicielComplet.pdf]]
 
   
 
===Organisation===
 
===Organisation===

Latest revision as of 10:45, 11 February 2019

Le projet eCOM consiste à concevoir et développer une application d’échange en ligne (commerce électronique, échanges de services…). suite ...

Organisation

Aide à la lecture du document

Acronymes

Les enseignants :

  • DD : Didier Donsez (didier.donsez@imag.fr)
  • SC : Sybille Caffiau (sybille.caffiau@imag.fr)
  • VZ : Vincent Zurczak (vzurczak@linagora.com)

Les réalisations :

  • DCS : Dossier de Conception Système
  • SAS : Schéma d'Architecture Système

Autres :

  • ADE : Emploi du temps en ligne

Groupes et sujets

Groupes eCOM-1F0 2018-2019

Les groupes sont imposés par les enseignants et seront donnés lors de la première séance. Ils ne seront définitifs que le mardi 18/09 à 8h.

Groupes eCOM-RICM Années précédentes

Planning des séances

La partie IHM et la partie Système sont menées en parallèle pendant toute la durée du projet. Pendant toutes les séances vous travaillerez en groupe, il est donc obligatoire pour tous les étudiants d'être présents à toutes les séances. Celles-ci sont composées :

  • du cours (CM)
  • du travail encadré (TD) : séance pendant lequel l'enseignant vous accompagnera pour la réalisation d'une étape de votre projet
  • du travail en autonomie : séance réservée au travail d'ECOM pendant laquelle vous travaillez entre étudiants
  • de permanences : séances pendant lesquelles vous pouvez demander l'aide d'un enseignant pour vous aidez à avancer. Ces séances sont également l'occasion pour vos enseignants de faire le point avec vous sur votre avancé, vous devez donc IMPERATIVEMENT signaler votre lieu de travail si vous n'êtes pas dans les salles prévues par ADE (par email à SC et VZ).

An cas d’incohérence de planning avec ADE ; suivre ADE.

  • 18/09 8h00-12h15 : Introduction 1h00(DD+SC) (transparents), CM REST, MicroServices, Spring, JHipster (DD) (P005)
  • 18/09 15h45-18h30 : (DD) Installation JHipster et Docker. Génération de l'application MVP de eCOM, lancement du profile dev, lancement du profil prod (avec Docker), analyse de qualité du code (généré) avec le container SonarQube et déploiement sur Heroku de 2 applications (stage, production) (F214, F215).
  • 25/09 8h00-12h15 : Des scénarios aux spécifications IHM (SC) (P257)
  • 25/09 15h45-18h30 : Séance en autonomie (F114, F214)
  • 02/10 8h00-12h15 : Test utilisateur (SC) puis Séance en autonomie (P039)
  • 02/10 15h45-18h30 : Séance en autonomie (F214, F215)
  • 09/10 8h00-12h15 : Audit 1 (P013) et Séance en autonomie (P105, P133)
  • 09/10 15h45-18h30 : Tests de robustesse (charges) (VZ) (F114, F214)
  • 16/10 8h00-12h15 : Séance en autonomie (P257)
  • 16/10 15h45-18h30 : Séance encadrée (SC) (F214, F215)
  • 23/10 8h00-12h15 : Séance encadrée (VZ) (P257)
  • 23/10 15h45-18h30 : Séance en autonomie (F214, F215)
  • 06/11 8h00-12h15 : Audit 2 (F114) et Séance en autonomie (F202)
  • 06/11 15h45-18h30 : Séance en autonomie (F214, F215)
  • 12/11 8h00-12h15 : Séance en autonomie (P257)
  • 20/11 8h00-12h15 : Séance en autonomie + Séance encadrée (SC) (P257)
  • 20/11 15h45-18h30 : Séance encadrée (VZ) (F214, F215)
  • 27/11 15h45-18h30 : Séance encadrée (VZ) (F214, F215)
  • 04/12 8h00-12h15 : Séance encadrée (VZ) (P257)
  • 04/12 15h45-18h30 : Séance en autonomie (F214, F215)
  • 11/12 8h00-12h15 : Séance encadrée (VZ) (P257)
  • 11/12 15h45-18h30 : Séance en autonomie (F214, F215)
  • 18/12 8h00-12h15 : Soutenances (F114) et rendus finaux
  • 18/12 15h45-18h30 : Soutenances (F114) et rendus finaux

Modalités d’évaluation

La note d’ECOM est obtenue par l’addition de notes obtenues tout au long de la réalisation du projet, elle peut être différente pour chaque membre du groupe en fonction du travail fourni et constaté par les enseignants. Attention : elle repose sur la qualité du travail fourni autant que sur la quantité.

  • présentation soutenance conception (3 pts) : note affectée sur la présentation (qualité des slides, discours...), les réponses aux questions
  • présentation soutenance finale (3 pts) : note affectée sur la présentation (qualité des slides, discours...), les réponses aux questions
  • conception (5 pts) : note obtenue à partir des livrables de conception, de la prise en compte des remarques faites par les enseignants pendant la soutenance de conception, du travail fourni (et observé) et du contenu de la soutenance de conception
  • développement (5 pts) : note obtenue à partir de la qualité et quantité du code réalisé, la démo de la soutenance finale. En particulier, seront observés, la qualité de l'architecture de l'application, la qualité et robustesse du code et la mise en place des principaux concepts de la technologie Spring Boot / JHipster.
  • suivi de projet (4 pts) : cette note est obtenue par rapport aux livrables (qualité, livraison dans les délais...), la mise en place et bonne utilisation des outils collaboratifs, l'intégration continue, Livraison en continue sur plusieurs VM dans un cloud public (AWS, GAE, Heroku, Azure, Bluemix, Digital Ocean ...), le contenu de la soutenance finale

Soutenances

Trois soutenances sont prévues (2 audits et 1 soutenance finale) :

  • audit 1 (exigences, besoins client) : le 09 octobre 2017
  • audit 2 (conception) : le 06 novembre 2017
  • soutenance de fin de projet le 18 Décembre 2017

Dans les trois cas, les soutenances doivent présenter les parties GL, Système et IHM. Attention : les concepts que vous avez vus en cours d'architecture doivent être mis en application pour l'architecture de votre projet. Une attention particulière sur ce point doit être portée lors de vos présentations à l'audit 2 et à la soutenance. Le travail que vous présenterez fournira de support à l'évaluation du module de GL.

Audit 1

  • Salle : P013
  • Durée totale : 30 min par groupe (max 20 minutes de présentation et ensuite les questions des enseignants représentant les clients)
  • Utilisez des transparents pour présenter votre projet.
  • ordre de passage :

- 8h35 : Restaurant

- 9h10 : Spectacle

- 9h45 : Camping

- 10h20 : Transport

- 10h55 : Sport

- 11h30 : Brule ta bûche

Contenu :

Pour la partie GL et gestion de projet

  • Organisation de l'équipe (roles, ...)
  • Méthodologie de travail
  • Planning (envisagé)
  • Choix technologiques et état de prise en main

Besoins pour clients, avec en particulier (mais non exhaustive) :

  • Résultats de l’analyse de l’existant
  • Utilisateurs cibles, contexte d’utilisation et objectifs utilisateurs (ie objectifs de l’IHM)
  • Modèle de tâches et IHMA pour les premières tâches

Audit 2

  • Salle : F114
  • Durée totale : 25 min
  • Utilisez des transparents pour présenter votre projet.


Vous devez présenter les étapes de conception réalisées et les résultats (choix techniques…). De plus, nous vous rappelons que pour le dimanche minuit, vous devez avoir rendu accessibles les livrables.

Contenu attendu dans votre présentation( à avoir au minimum dans vos slides) :

Pour la partie GL et gestion de projet :

  • Organisation de l'équipe (roles, ...)
  • Méthodologie de travail
  • Planning (modifications par rapport à ce que vous aviez prévu jusqu'à maintenant et le planning futur)
  • Architecture complète
  • Procédure de tests
  • Procédure d'intégration du code

Pour la partie Système

  • Architecture systeme du service
  • Nombre de Entity, Ressources REST (diagramme de classe, type, ...)
  • Extensions réalisées et envisagées
  • Etat d'avancement dans les développements

Pour la partie IHM

  • Maquettes et squelette du site (pour la plateforme cible)
  • Charte graphique

Une démonstration (rapide) de votre application telle qu'elle est (v0 ou v1 en fonction des groupes)

Ordre de passage :

- 8h : Transport

- 8h30 : Spectacle

- 9h : Restaurant

- 9h30 : Camping

- 10h : Sport

- 10h30 : Brule ta bûche

Respectez l'ordre établi. Faites attention au temps. Vous disposez de 25 minutes par soutenance pour : votre présentation et les questions. Vous devrez gérer le temps. Les remarques (d’amélioration) qui seront faites pendant cette soutenance par les enseignants devront être prises en compte pour la version finale (pris en compte dans la note finale).


ATTENTION : Si vous voulez modifier l'un des plannings, vous devez :

  • trouver un autre groupe avec qui échanger
  • vous assurer que tous les membres de ce groupe acceptent l'échange
  • envoyer un mail à SC et DD pour informer du changement (avec le chef de projet de l'autre groupe en copie)

Les modifications ne sont acceptées que jusqu'au dimanche précédent la soutenance.

Soutenance de fin de projet

  • Salle : F114
  • Durée totale : 30 min (max 15 minutes de présentation, min 5 minutes de démo)
  • Utilisez des transparents pour présenter votre projet ( Media:Présentation RICM-2018.odp). Lors de votre passage vous devez présenter une démo PRÉPARÉE.
  • ordre de passage :

- 8h : Sport

- 8h35 : Restaurant

- 9h10 : Spectacle

- 9h45 : Camping

- 10h20 : Transport

- 11h : Brule ta bûche


Arrivez avec l'application démarrée (on ne perd pas de temps) et 1 ou 2 scénarios (de test)

  • Préparez vous 30 minutes avant votre soutenance pour démarrer les instances Windows Azure (ou autre plateforme de Cloud de votre choix) avec le service développé.
  • Les démonstrations peuvent être faites sur vos machines personnelles cependant le service eCOM doit IMPERATIVEMENT s'exécuter sur une ou plusieurs instances de machines virtuelles sur le Cloud de votre choix
  • Vous devez avoir tous les documents demandés (accessibles en ligne et/ou imprimés)
  • Vous devez fournir au début de votre passage les fiches d'auto-évaluation complétées (version papier)

Contenu attendu dans votre présentation : Votre présentation doit suivre le template suivante : Media:Présentation RICM-2018.odp Vous devez suivre l'ordre dans lequel les items sont proposés mais vous pouvez ajouter des slides en cas de besoin pour illustrer (ex : pour expliquer votre processus). Si vous avec des remarques/questions n'attendez pas pour les poser


Respectez l'ordre établi. Faites attention au temps. Vous disposez de 30 minutes par soutenance pour : votre présentation et les questions. Au bout de 15 minutes de présentation vous serez interrompus pour être interrogés. Les questions peuvent être posées nominativement (c'est à dire que la personne qui doit répondre est désignée par l'enseignant).



ATTENTION : Si vous voulez modifier l'un des plannings, vous devez :

  • trouver un autre groupe avec qui échanger
  • vous assurer que tous les membres de ce groupe acceptent l'échange
  • envoyer un mail à SC, DD et VZ pour demande d'accord du changement (avec le chef de projet de l'autre groupe en copie)

Les modifications ne sont acceptées que jusqu'au dimanche précédent la soutenance.

Livrables

Tout votre projet doit être suivi grâce à gitLab.

A tout moment, les enseignants doivent donc pouvoir

  • avoir la dernière version du code (dernière version du logiciel en production et ce qui est en cours de développement dans des branches dédiées)
  • voir les tâches prévues/en cours/réalisées
  • savoir le travail de chaque membre (effectué et assigné)
  • consulter les documents de conception (à jour)
  • consulter les CR des daily meeting et autres réunions et les rétrospectives et vos présentations aux différents audits
  • avoir connaissance des procédures de qualité que vous mettez en place au sein de votre projet
  • consulter les résultats des différents tests pour chaque release

Attention : nous insistons particulièrement sur le fait que toutes ces données doivent être maintenues en temps réel et accessibles sur le gitlab de votre projet.

Attention : nous consulterons également les messages de commit.


Rendus

Vous trouverez ci-dessous une liste (non exhaustive) de certains livrables pouvant être produits au sein de votre projet

L1. Composition des groupes et sujet. (obligatoire) Le sujet doit être validé par vos enseignants dès le premier jour du projet. Envoyez une description dans un corps de mail à DD et SC. Cette description doit contenir :

  • les membres du projet
  • le nom du chef de projet
  • le nom du scrum master
  • les rôles envisagés par chaque membre
  • le titre du sujet

un paragraphe descriptif du sujet dans lequel est particulièrement explicité l'adéquation du sujet et les requis (quelques lignes)

L2. Dossier de conception Système. Le Dossier de Conception Système (DCS) a pour but de permettre à toute personne de connaitre les principaux composants Spring de votre application ECOM. Cette connaissance doit pouvoir être acquise rapidement, sans avoir à entrer dans les détails de l'implémentation. Le DCS doit donc être de taille relativement limitée (5 à 10 pages, 20 pages au grand maximum). Le DCS est centré sur un schéma d'architecture système (SAS). Pour chaque composant et lien du SAS, le DCS doit fournir :

  • Une description fonctionnelle : La description fonctionnelle d'un composant fait apparaître les attributs qui le composent, ainsi que les méthodes qu'il fournit. Attributs et méthodes seront associés à une courte description. Les besoins liées à la persistence ou aux aspects transactionnels peuvent également être explicités.
  • Une description d'implantation Spring : La description d'implantation décrit l'implantation du composant ou du lien dans l'environnement Spring. Un composant peut être implanté par un client généré à partir de l'interface de/des micro-services, par un micro-service REST (Controller), par un Service, par un Entity ou par un client Feign vers un micro-service externe au systeme (par exemple, service de paiement Swipe.com, ...).

Le dossier de conception système doit être disponibles depuis votre page wiki.

L3. Analyse des besoins. Questionnaire et son analyse pour définir les besoins utilisateurs que doit satisfaire votre application.

L4.Maquette.

L5.SRS.

L6.Diagramme UML.

L7.Modèle de tâches.

L8.Scrum (tableau de tâches de Gitlab).

  • (Ils peuvent si vous le souhaiter être directement édités sur le wiki)
  • Le rapport de charge (benchmark) doit être (MUST) disponible sur le wiki.
  • Le rapport sur les métriques logicielles doit être (MUST) disponible sur le wiki.

L9.Journal. Détaillez l'affectation des taches effectuées ainsi le temps estimé et le temps effectif pour chaque tache et son état (Réalisée, Reportée, Abandonnée, ...) Le journal doit être nominatif. Chaque membre de projet doit gérer son propre journal. Il fera l'objet d'une évaluation personnelle.

L10.Dépôt Git. Votre code source doit être accessible en ligne avec un lien depuis votre fiche de suivi sur le wiki.

L11.Application en ligne.

L12. Evaluations de l'IHM réalisée. cf cours IHM Media:Cours2015-2016RICM.pdf

Evaluation utilisateur : media:System-Usability-ScaleLogicielComplet.pdf et/ou experte : media:EvalEfficacite.pdf, Media:Annexe1-HeuristiqueNielsen.pdf


L13. Evaluation de la qualité du projet.

  • Nombre de lignes de code (outil CLOC à minima)
  • Métriques de qualité du code (SonarQute, ...)


L14. Evaluation économique du projet.

  • Utilisez les temps effectifs des taches renseignées dans le journal.
  • Utilisez le coût du travail d'un ingénieur débutant.
  • Comparez votre coût à l'évaluation COCOMO de votre projet (utiliser les valeurs de L9).

L15. Evaluation de la cybersécurité du projet (option).

L16. Evaluation des performances du projet (option).

  • Résultat d'une injection de charge simpliste avec Gatling
  • Résultat d'une injection de charge suivant un scénario complet avec Gatling

L17. Gestion des risques (option).

L18. Slides de présentation conception.

L19. Diapos de votre présentation de conception.

L20. Diapos de votre présentation finale.

L21. Auto evaluation. Système : Media:FicheEval20182019-ECOM

L22. Diapos de votre présentation client.

Réalisations attendues

Conduite et suivi de projet

Le projet eCOM est très court en durée. Vous utiliserez la méthodologie Scrum pour la conduite du projet dans chaque groupe. Vous pouvez vous inspirer de la méthode Lean Startup pour livrer rapidement votre application. Vous devez choisir un Scrum Master (unique ou tournant) : justifiez votre choix et la durée du sprint (justifiez votre choix). Vous devez prévoir :

  • product backlog
  • sprint backlog
  • sprint planning
  • démos
  • rétrospectives

Pensez à utiliser un outil adapté cela doit être une documentation Agile !!!!

(May) mettre en place des "poker planning"

PokerPlanningECOM2013

Ces 2 premiers critères sont fixes !!!

Selon les principes de la méthodologie Agile, vous devez composer votre travail en fonctionnalités. Chacune fera l’objet d’une conception (système et IHM) et d’un développement. Conception ET développement constituent l’ensemble des réalisations attendues.

Vous devez utiliser GitLab comme support à votre projet (versioning, gestion des tâches...).

Nous vous demandons également d'utiliser les issues pour la communication avec les enseignants. En particulier, toute absence ou télétravail doit être signalé par ce média.

Réalisations système

Conception système

La conception système est composée de deux réalisations principales : le modèle de donnée : il est vivement conseillé de définir le modèle de données aussi tôt que possible et d"en discuter avec les enseignants. le schéma d'architecture système (SAS) : ce schéma doit faire apparaître les composants qui vont constituer l'application, ainsi que les liens entre les beans. Un lien depuis un composant A vers un (ou plusieurs) composant(s) B signifie qu'une interaction peut avoir lieu depuis A vers B. Un lien peut être monovalué ou multivalué, monodirectionnel ou multidirectionnel.

Développement système

Pour chaque fonctionnalités conçues, le développement système sera réalisé en deux étapes.

Les étapes

Etape 0 : Créer un groupe GitLab. Y ajouter les membres du projet eCOM. Créer plusieurs projets pour les différents parties. Activer les notifications. Ajouter les webhooks utiles.

Etape 1 : La première consiste à définir le cœur de l'application, c'est-à-dire le modèle de données (UML ou similaire JDL) et la logique métier, puis à réaliser un premier prototype qui démontre une bonne maîtrise des Entity (annotations JAX-RS, annotations Swagger).

L'application RESTful est seulement accessible par l'intermédiaire de clients type cUrl (généré avec le générateur swagger-codegen), Swagger UI, injecteur de charge Gatling, ....) et le frontend AngularX que vous aurez généré avec JHipster.

Il n'est pas demandé, de réaliser une interface web pour interagir avec l'application. L'application doit cependant offrir deux modes d’utilisation (administrateur et utilisateurs finaux) et exécuter certaines requêtes avec des garanties transactionnelles.

TRES IMPORTANT : Votre machine virtuelle doit être sécurisée (Security Group et/or UFW/IPtables pour les ports exposés). Evitez de vous faire rançonner comme un binôme de la promo 2016-2017 (voir ci-dessous, la rançon d'une BD MongoDB).

$ db.PLEASE_READ_ME.find()
{ 
    "_id" : ObjectId("58a7287db7dc324adb249fdf"),
    "info" : "Don't panic. Your DB is in safety and backed up (check logs). 
              To restore send 0.1 BTC and email with your server ip or domain name. Each 48 hours we erase all the data.",
    "amount" : "0.1 BTC",
    "data_we_have" : { 
        "local" : [ "startup_log" ],
        "first_database" : [ "users", "preferences" ],
        "MyAppXXX" : [ "emails" ] 
    }, 
    "Bitcoin Address" : "1NSz9TRBGKHKFdjdjH2Gme3LwDi5", 
    "email" : "xxxxx@xxxx.org" 
}


Etape 2 : La seconde étape consiste à compléter le premier prototype (étape 1) avec les objectifs suivants :

  • Développement d'une interface Web basée sur le modèle MVC (SPA ou non) ;
  • Modification de la configuration de déploiement pour la haute disponibilité (HA) :
  1. Mise en place d'un container base de données externe (MySQL, ...) pour la production (non répliquée)
  2. Mise en place de 2 containers base de données (MySQL) en cluster (réplication)
  3. Mise en place de 2 containers frontends load balancer HAProxy ou Nginx en mode SSL terminaison (instructions)
  4. Génération et rafraichissement des certificats SSL avec Let's Encrypt
  • Amélioration des fonctionnalités. En particulier, considérez les points suivants :
    • Renseignement de la notice relative à la protection de la vie privée.
    • Gestion de la concurrence et de la reprise sur panne avec des transactions ACID
    • Gestion de l'internationalisation (i18n) des applications web et mobiles. Remarque : vous pouvez utiliser les principes et outils appris dans l'UE Communication Langagière.
    • Gestion des contenus multimedia (photos, videos, docs ...) avec un FileStorageService (lien)
    • Gestion adaptative des contenus multimedia (photos) avec un ThumbnailService (montrez l'amélioration des performances avec Gatling)
    • Gestion du cache client pour les photos et les thumbnails avec Cache-Control et ETag (montrez l'amélioration des performances avec Gatling)
    • Utilisation de mode Lazy pour les chargements (fetch) des collections et des médias (CLOB,BLOB).
    • Génération d'une application mobile Ionic avec generator-jhipster-ionic (inclure les plugins Apache Cordova utiles à votre projet).
    • Utilisation d'un cache (préconisé par JHipster)
  • Ajout éventuel de fonctionnalités non prioritaires. De façon facultative, vous pourrez ajouter au prototype précédent quelques unes des fonctionnalités suivantes :
    • Stockage externalisé des contenus multimedia par des Content Delivery Networks (Amazon S3, Azure, Akamaï ...)
    • Génération de documents PDF à partir des valeurs de champs d'une entité ou du collection d'entités (exemple d'applications : facture, dossard coureur, export RGPD, ...) lien
    • Import et export massifs de collections d'entités en format CSV, JSON.
    • Suivi du click stream avec des Filters/Aspects en vue d'une analyse Big Data avec Spark (Click Analytics, Recommender System).
    • Gestion rudimentaire d'une interface vocale avec un serveur vocal VoiceXML.
    • Utilisation de OAuth2 ou OpenID pour le login et l'accès aux API REST avec Keycloak ou OKTA.
    • Utilisation du service de paiement Stripe.com en mode développeur
    • Chat avec un opérateur du helpdesk (texte et/ou audio avec WebRTC)
    • Chatbot du helpdesk (comme ovh-chatbot)
    • Gestion d'un CaaS Docker privé avec Minikube, Kubernetes, Rancher ou Docker Swarm
    • Traduction automatique et à la volée des champs des produits (nom, description, commentaires et avis) en fonction de la langue de l'usager, au moyen d'un service tiers.
    • Script périodique (crontab) de dump et de backup distant de la base MySQL.
    • Gestion asynchrone et transactionnelle de l'envoi des courriels via le MailService, Thymeleaf et des taches @Scheduled
    • Gestion asynchrone et transactionnelle de l'envoi de SMS (si le destinataire a un compte gratuit pour l'auto-réception de SMS)

Remarque: certaines fonctionnalités sont assez indépendantes du noyau du projet : elles peuvent être mis en place dès le départ de l'étape 1.

Le déploiement en continu

Dès le démarrage, votre projet devra être géré selon les principes du DevOps : chaque version devra être déployé sur votre infrastructure de production en minimum de temps et sans interuption de services. Vous devez mettre en place des procédures de mise à jour des artifacts de l'application en mode rolling update et fast rollback (lien).

Remarques pour la mise en ligne : NE COMMITEZ JAMAIS vos credentials Cloud (AWS, Azure, Google ...) DANS UN DEPOT PUBLIC !!!!!

Votre compte serait utilisé pour créer plusieurs centaines de VMs et vous serez lourdement facturés (bitcoins, DDoD, ...) !

Vous devez obligatoirement mettre en place les points suivants dès le démarrage du projet :

  • Déploiement et retrait de l'application sur/de la plateforme cloud publique ou privée (UFR, Amazon, Azure, Google, Heroku)
  • Performances (résultat du injection de charge avec Apache JMeter ou Gatling) : Astuce: utiliser les images Docker.
  • Reprise sur panne simple et alerte des ops avec Monit (ie relance simple du serveur en cas de "plantage").
  • Script "basique" pour le rolling update des composants répliqués (application, base de données, serveurs de mail, load balancer). Remarque: Kubernetes gère les rolling updates (lien).
  • Script "basique" pour le Fast forward (en cas de panne des composants dernièrement mis à jour).

Vous devez optionnellement mettre en place les points suivants:

Réalisations IHM

Conception

La conception de la partie IHM du projet sera principalement composée :

  • Des mécanismes pour intégrer les besoins des utilisateurs
  • Des modèles (tâches, IHMA)
  • De la charte graphique
  • De l'explication des choix de conception faits

Développement

Vous êtes libres des technologies à utiliser pour le développement de la partie IHM de l'application. Cependant, vous devez être capable de justifier vos choix. La partie IHM doit être distincte du noyau fonctionnel. Les codes de la partie présentation et du contenu de l'IHM doivent également être séparés. Veuillez aux noms que vous attribuerez. Les "zones" définies dans vos IHMA doivent être facilement identifiables dans le code que vous réalisez (ex : ID des DIV).

L'IHM des utilisateurs différents peut être gérée différemment. Par exemple, l'IHM de l'administrateur de l'application peut être une Interface en ligne de commande (pour l'initialisation du catalogue du service, l'ajout de nouveaux produits). Vous pouvez utiliser l'interface EJB facade directement ou bien une interface RESTful en utilisant directement Curl).

Evaluation des IHMs

Une IHM doit être évaluée par au moins deux types d'évaluation (en plus de l'évaluation fonctionnelle) :

  • évaluation experte pour vérifier que les principes fondamentaux d'utilisabilité sont respectés
  • tests utilisateur pour étudier comment vos utilisateurs utilise dans leurs contextes d'utilisation votre interface

Documentation

Transparents de cours

Doc utiles

Quelques livres et technologies

REMARQUE: les livres sur ces technologies se périment très vite.

Spring

JHipster

JavaEE

REST

Web

Responsive Web Design

Bootstrap

Ember

Tests unitaires

Intégration en Continue

Continuous Delivery

Misc

Questionnaires pour les sites web

Evaluations des interfaces

Organisation