Ecom-pushmyproject

Projet ECOM = Présentation =

Description :
Ce site rentre dans le cadre du projet ECOM 2012 de la formation RICM5 à Polytech Grenoble.

Push My Project est un site d'investissements au sein de projets (complet ou participatif).

Le but de notre site d' e-commerce de vente de projets en ligne est de permettre aux entreprises d'investir sur des projets pour en tirer les bénéfices(financiers ou intellectuels).

Ceci permettrait un accès plus rapides au bénéfices pécuniaires intellectuels lorsque une entreprise souhaite investir en R&D, ou qu'elle souhaite investir sur un projet d'une autre entreprise.

Membres :

 * ELOY Fabien
 * LEVEQUE Florian
 * VIGIER Sylvain
 * DAUVERGNE Leopold

Enseignants

 * [mailto:xavier.spengler@gmail.com Xavier Spengler]
 * [mailto:Sybille.Caffiau@imag.fr Sybille Caffiau]
 * [mailto:didier.donsez@imag.fr Didier Donsez]

Mail du chef de projet

 * [mailto:eloy.polytech@gmail.com ELOY Fabien]

=Mise en place du projet=

Tutoriels
L'étape 1 du projet ECOM est l'installation de JBOSS sous Eclipse, pour cela, il suffit d'aller dans l'eclipse marketplace et d'installer JBOSS.

Une fois cela effectué, il faut créer un projet EJB.

Pour installer le serveur d'application JBOSS, nous avons suivi la procédure suivante: http://www.objis.com/formation-java/tutoriel-jboss-7-installation-arborescence-demarrage-arret-standalone-domain.html

Pour nous familiariser avec les EJB nous avons suivi le tutorial suivant: http://theopentutorials.com/examples/java-ee/ejb3/how-to-create-a-simple-ejb3-project-in-eclipse-jboss-7-1/

Nous avons pu ensuite commencer le développement du projet.

SVN
L'adresse SVN de notre repo est ici :

https://imag-forge.e.ujf-grenoble.fr:443/svn/pushmyproject

Veuillez notez que la forge fut inaccessible pendant plusieurs jours (un weekend fin novembre et quelque jours durant le mois de novembre).

=Suivi de la méthode SCRUM=

Pour suivre l'avancement des tâches de notre projet, nous utilisons TRELLO. L'adresse TRELLO de notre projet ECOM est la suivante : https://trello.com/board/projet-ecom/50619dc0c2157ca37509e110. Les principales tâches sont disponible sur le TRELLO, certains tâches annexes (généralement petites) ne sont pas identifiées au sein du Scrum Planning mais ont bien étés effectuées lors des divers soirées et nuits passées sur le projet.

ScrumMaster
Nous avons choisi de mettre en place un système de ScrumMaster tournant, pour que chaque membre de l'équipe puisse avoir un meilleur apercu de la gestion de projet au fil du temps.

Le product backlog est disponible ici.

Durée Sprint
La durée d'un sprint a été fixée à deux semaines. Une durée trop courte serait une perte de temps pour l'équipe mais une durée trop longue pourrait retarder l'avancement du projet.

Sprint Backlog

 * Terminer le dossier de conception IHM: Fabien, Sylvain
 * Définir les scénarios de test IHM: Sylvain
 * Remplir la base de données pour les tests IHM: Sylvain
 * Finaliser l'IHM: Léopold, Fabien
 * Terminer le dossier de conception Système: Fabien, Léopold, Florian, Sylvain
 * Terminer le dossier d'évaluation Système: Fabien, Léopold, Florian, Sylvain
 * Gestion des connexions administrateurs par l'interface web: Florian
 * Gestion des validations de projets administrateur/mails: Florian
 * Convertisseur devise: Florian
 * Finalisation des problèmes de connexion ou compte client: Florian
 * Déploiement Amazon: Léopold

Sprint retrospective

 * Plus:
 * - Bonne répartition des taches
 * - Bonne communication
 * - Progression conséquente dans le projet


 * Moins:
 * - Difficulté technique: changement d'outil svn (forge non fonctionnelle)
 * - Difficulté technique: encore des problèmes liés à Maven

Sprint Backlog

 * Gestion de la connexion a une session
 * Mise en place de Sonar
 * Mise en place de Jmeter

Sprint retrospective

 * Plus:


 * Moins:
 * - Presque aucun daily standup

Sprint Backlog

 * Maquettes IHM abstraite : page d’accueil, page de catégories, page de produit, page de panier, page de commande
 * Fonctionnalité de recherche de projet par mot clefs
 * Créer un compte utilisateur
 * Résolution de divers bugs au niveau de l'IHM
 * Adaptation pour les écran à petite résolution

Sprint retrospective
Plus:
 * Possibilité de naviguer correctement au sein des projets
 * Compréhension correcte de maven

Moins:
 * Pas de temps a consacrer au projet
 * Beaucoup d'aspects sur lesquels nous aurons aimer passer plus de temps mais n'avons pas pu. Nous devons donc nous concentrer sur l'essentiel

Sprint retrospective

 * Plus:
 * - Faire des updates / Commit sur le SVN pour éviter les conflits
 * - Intégration totale de Maven


 * A améliorer:
 * - Arrêter les réunions le soir
 * - Les données à utiliser pour une retrospective


 * Moins:
 * - Tests des différentes pages
 * - Centraliser les sorties des sprints retrospectives

Sprint Backlog

 * Développement des Entities Bean
 * Définition de la charte graphique
 * Définition de la structure du client lourd

Sprint retrospective

 * Plus:
 * - Prendre le temps de définir les contraintes associées au choix de développement
 * - Poser les algorithmes sur papier
 * - Utilisation de Google Drive / DropBox


 * A améliorer
 * - Utiliser un tableau pour la retrospective
 * - Ne pas mélanger les jar importés et les dépendances maven


 * Moins:
 * - Lieu du sprint retrospective
 * - Temps de débogage de la base de données

Sprint Backlog

 * Choix de Jboss comme plateforme.
 * Comprendre le fonctionnement des EJB.
 * Définition de l'architecture globale avec les choix des technologies utilisées.
 * Mise en place de la base de données MySQL.
 * Rédaction du cahier des charges.

Sprint retrospective

 * Plus:
 * - Mise en place de l’environnement de travail
 * - Travail en binôme


 * A améliorer
 * - Rédaction du cahier des charges
 * - Répartition du travail par personnes


 * Moins:
 * - Répartition du travail dans le temps
 * - Faire plus de réunions
 * - Gestion de version et Tests

=Développement du projet=

Vu que ce projet a un but d'apprentissage, nous avons essayé de poster différents tutoriels et liens vers les pages qui nous ont aidé à avancer dans le projet. Bien-sur ce n'est pas une liste exhaustive.

Tutoriaux
Installation de Maven: http://maven-guide-fr.erwan-alliaume.com/maven-guide-fr/site/reference/installation-sect-windows.html

Installation du plugin Eclipse: http://eclipse.org/m2e/download/

Convertir un Eclipse project en Maven Project
Step 1: Installer le plugin m2clipse dans Eclipse

Step 2: Installer Maven (l'installation est très Jboss like) à partir de l'archive suivante http://dl.free.fr/kxE5byRSd

Step 3a: Créer un chemin dans votre path pour pointer sur le /bin de maven. Dans une cmd, la commande mvn --version doit vous retourner quelque chose.

Step 3b: Dans les propriétés maven d'eclipse, faites pointer votre fichier de configuration vers celui du maven local.

Step 4: Faites un checkout du projet, faites un Run As > Mvn clean, Run As > Mvn install. Normalement il va télécharger de nombreuses dépendances. Il est indispensable d'avoir une connexion correcte pour éviter les fichiers corrompus.

Step 5: Votre projet devrait marcher, si jamais le client ne veut pas démarrer, ajouter les lignes suivantes (à adapter selon votre configuration) dans votre pom.xml:

org.jboss.as

jboss-as-ejb-client-bom

7.1.1.Final

pom

org.jboss.as

jboss-as-jms-client-bom

7.1.1.Final

pom

Tutoriaux
Mise en place d'une base de données MySQL/Lien avec les ejb: http://theopentutorials.com/examples/java-ee/ejb3/how-to-create-ejb3-jpa-project-in-eclipse-jboss-as-7-1/

Génération des entity beans à partir de la base de données MySQL: http://www.tuesdaydeveloper.com/2009/11/creating-java-entity-beans-dynamically-from-database/

Solution choisie
Pour implémenter la base de données, nous avons choisi d'utiliser WAMP, qui fournit un serveur mysql ainsi que phpmyadmin pour gérer les bases de données.

Aspects Sécurité
Le chiffrage des mots de passe dans la base de donnée a été fait grâce à java security, en SHA-512. Afin de sécuriser les communications de données sensibles sur le site, nous avons mis en place le protocole standard utilisé pour les transactions sur le web: https. Voici la démarche suivie:

1 - Ouvrir une invite de commande. Sous windows, la commande suivante crée un certificat ".keystore" dans le dossier courant. %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

2 - Ajouter un "connector" ssl dans le fichier de configuration de JBoss: "standalone.xml". Le paramètre certificate-key-file désigne le certificat créé précédemment et le mot de passe est celui donné lors de sa création.

  

Vous devriez alors pouvoir accéder au serveur JBoss en https à: https://localhost:8443/ Il reste à rediriger l'utilisateur du site vers cette connexion https.

3 - Configuration du web.xml dans le WebProject

http://docs.jboss.org/jbossweb/7.0.x/ssl-howto.html http://docs.jboss.org/jbossweb/7.0.x/config/ssl.html

Deploiement sur Amazon EC2
Voici la page d'accueil d'Amazon.

Tests
Clif tutoriel. Après avoir fait des recherches sur clif, nous avons décidé de ne pas utiliser cet outil du fait de la documentation disponible pour mettre en place des tests, en effet, celle-ci est quasi inexistante et aucune librairie répertoriant tous les tests possibles est disponible.

Nous avons donc utilisé Jmeter qui nous donne des résultats tout à fait satisfaisant. Notamment grâce à ses plugins.

Sonar
Voici un petit tutoriel d'installation de Sonar rédigé par Leopold: http://air.imag.fr/mediawiki/images/8/8f/HowToInstallSonarEcom.pdf

Ensuite, nous avons suivi ce tutoriel pour configurer le plugin Sonar au sein d'Eclipse.