ECOM RICM5 Groupe2 2014

Cette page wiki est la fiche de suivi du projet d’e-commerce du groupe 2 de la promotion RICM5 de 2014-2015. Le projet ECOM consiste à concevoir et réaliser une application de commerce électronique. Elle est constituée de deux parties : la partie IHM et la partie Système. Elles seront toutes deux traitées en parallèle et ferons l’objet de soutenances séparées.

L'équipe

 * Chef de projet : CLERC Arthur
 * Scrum Master : FALL El Hadji Malick
 * Responsable utilisabilité : FREBY Rodolphe
 * Responsable graphique : FALL El Hadji Malick
 * Responsable développement : GINOUX Pierre-Henri
 * Développeurs : toute l'équipe

Documents associés

 * Lien vers le projet : GitHub
 * Lien vers les slides : Présentation
 * Lien vers la charte graphique:CharteGraphique.pdf

Motivations
Le but de ce site de ecommerce sera de générer des profits (peu élevés dans un premier temps) et de permettre aux gens de partager leur savoir-faire dans le domaine de la couture, fabrications d’objets tels que des bracelets, des colliers. C’est un site qui pourra convenir autant aux particuliers qu’aux professionnels. Le premier objectif va être de faire connaître le site un maximum, car plus nous aurons d’utilisateurs plus nos bénéfices  vont être élevés. Toutefois comme nous proposons des objets de faible valeur, la marge est très basse, c’est pour cela qu’il nous faut beaucoup d’utilisateurs. Une fois que le site aura une base d’utilisateur assez conséquente et fidélisée, nous allons attirer les professionnels, qui eux auront une période d’essai de deux mois gratuit. S’ils veulent continuer, il leur faudra payer un abonnement dont le montant ne sera pas élevé.

Utilisateurs cibles
Les accessoires sont des objets qui peuvent plaire à tous les âges, par contre il faut diviser en deux catégories les personnes allant sur le site : celles qui disposent d'une carte bleue et celles qui n’en ont pas. En effet les utilisateurs ayant moins de 18 ans ne peuvent pas payer par leurs propres moyens. Nous ciblons donc tous les personnes entre 7 et 77 ans qui pourraient être intéressées par des accessoires, féminin comme masculin. Ce qui nous fait un public assez large. Du côté des utilisateurs pouvant offrir leurs services, nous ciblons entre 20 et 60 ans.

Etude de la concurrence
La concurrence peut être évaluée à deux niveaux :

* Concurrence directe : Elle concerne l’ensemble des sites qui proposent à la fois toutes les fonctionnalités (achat de particulier à particulier) ainsi que les mêmes types de produit que nous. Après une recherche approfondie, nous avons pu constater que le concept que nous proposons est inédit. Il existe toutefois des sites tels que http://www.alittlemarket.com/boutique/passion_artisanale-198804.html qui proposent la vente de produits “fait-main” mais par une unique personne. D’autres comme http://www.artisanat-dart.com/ mettent en avant un plus large panel de produits (maroquinerie, sculpture, vitrail). Mais ces deux types de sites sont orientés dans la vente directe contrairement à nous qui suggérons la mise en relation (du type leboncoin). Néanmoins, il existe un concurrent assez proche : le site de Mamy Factory (http://www.mamyfactory.com/fr/content/8-Nos-mamies-tricoteuses).

Mamy factory est une marque de vêtements pour bébés et enfants de 0 à 6 ans dont la collection est principalement composée de vêtements et accessoires tricotés par des grands-mères françaises : une mode à la fois chic et authentique basée essentiellement sur des matières nobles et naturelles, travaillées à la main. Ce site propose une page regroupant l’ensemble des artisans avec la description de leur profil. Les catégories de produits sont bien déclinées, néanmoins la visibilité du panier est assez réduite problème de feedback au moment de l’ajout et difficulté d’identification de l’accès). De plus, le site semble conçu uniquement pour une interaction avec un pointeur (souris). Ce site ne vise pas le même type de public que nous.

* Concurrence indirecte (large) : A ce niveau, nos concurrents sont représentés par l’ensemble des sites qui proposent la mise en relation de particuliers. A titre d’exemple, nous pouvons citer http://www.leboncoin.fr/ (particulier à particulier en main propre) ou http://www.priceminister.com/ (vente de particulier à particulier). Ces sites proposent des recherches suivant des critères bien définis (catégories, mot-clés, vendeurs) et fonctionnent suivant un mode d’annonces et intégrent parfois une catégorisation des cibles (offre pour lycéens, étudiants dans le cas de PriceMinister). Ce même modèle peut être reproduit dans notre cas.

Plateformes

 * Navigateur internet (Chrome, Firefox, Internet Explorer)
 * Tablettes (Android, Windows, IOS)

Fonctionnalités
Voici les fonctionnalités qui seront proposées dans notre site ecommerce :
 * Visite du site en tant que utilisateur non enregistré.
 * Un mois offert pour les vendeurs professionnels avant l'abonnement
 * Inscription en tant que membre.
 * Site en français et en anglais (les vendeurs se situent en France)
 * Mail de confirmation à l’inscription
 * Prise de contact avec le vendeur.
 * Achat d’accessoires.
 * Vente d’accessoires.
 * Map avec les vendeurs les plus proches.
 * Confirmation des différentes étapes de la commande (paiement reçu, commande reçu)

Shell Client
Un shell client est disponible afin de pouvoir travailler avec la base de données à distance. Le shell accède aux travers d'interfaces RMI au serveur afin d'effectuer les opérations. Par défaut, deux modes sont disponibles :
 * Mode admin : permet d'effectuer des actions dans la base
 * Mode utilisateur : permet d'afficher le contenu de la base

Une commande help permet de lister la totalité des possibilités de chaque mode.

Il est possible de passer du mode admin au mode utilisateur, et inversement.

Mode admin
Ce mode permet l'ajout, la modification ou la suppression de ressources dans la base de données. Il est possible de créer des utilisateurs, des entreprises, des produits, des adresses. Il est également possible de remplir automatiquement la base de données avec des générations aléatoires de comptes, produits, ...

Mode utilisateur
Ce mode ne permet que de regarder le contenu de la base de données.

Généralités sur le serveur et la gestion des comptes
Le serveur a été déployé sur une instance Ubuntu d'Amazon EC2. La totalité du site utilise HTTPS sur le port 8181. Cela a permit de vérifier la compatibilité pour :
 * Internet Explorer 7 et 11
 * Firefox 33 et 34
 * Chrome 39
 * Maxthon 4.3
 * Safari 5.1

Tout compte créé génère l'envoi d'un mail de validation au travers du serveur de mail James. Un lien d'activation est fourni afin de rendre le compte utilisable.

Le serveur comprend également des EJB timer. Ils ont pour fonction de vérifier l'état des abonnements des entreprises. A 1 jour de la fin de l'abonnement, un mail est envoyé à l'entreprise afin de lui signaler que les services seront bientôt terminés, et qu'ils doivent souscrire à un nouvel abonnement pour profiter pleinement des fonctionnalités. Un autre timer vérifie que les entreprises sont en règle quand aux abonnements, et retirera de la vente tous les produits encore en vente d'une entreprise n'ayant pas d'abonnement valide.

Ces deux vérifications sont effectuées de manière journalière à 17 heures.

Résultat avec Cloc
Voici les différentes métriques du code, le perl étant utilisé par le logiciel permettant de les calculer :

100 files 141 text files. classified 141 files Duplicate file check 141 files (124 known unique) Unique:     100 files 127 unique files. Counting: 100 120 files ignored.

http://cloc.sourceforge.net v 1.62 T=0.45 s (218.7 files/s, 56651.4 lines/s) - File                                                                                         blank        comment           code - .\cloc-1.62.pl                                                                                 692           1036           8014 .\ecomweb\src\main\webapp\assets\ngbp-0.3.2.css                                                  0             55           6215 .\ecomweb\src\main\webapp\templates-app.js                                                      24              0           2185 .\configDatabase.xml                                                                             0              0            508 .\ecomapp\src\main\java\ecom\ejb\client\Shell.java                                              25              1            325 .\ecomejb\src\main\java\ecom\ejb\sessionBean\ManageProducts.java                                78              8            310 .\ecomejb\src\main\java\ecom\ejb\sessionBean\ManageUser.java                                    69              3            287 .\ecomweb\src\main\webapp\src\app\advance_research\advance_research.js                          22             16            263 .\ecomapp\src\main\java\ecom\ejb\client\management\ManagementDatabase.java                      42             10            257 .\ecomapp\src\main\java\ecom\ejb\client\management\ManagementAsk.java                           22              0            181 .\ecomapp\src\main\java\ecom\ejb\client\management\ManagementXML.java                           50              0            173 .\ecomejb\src\main\java\ecom\ejb\sessionBean\ManageCompany.java                                 41              2            162 .\ecomapp\src\main\java\ecom\ejb\client\DatabaseQuery.java                                      35              0            146 .\ecomejb\src\main\java\ecom\ejb\Products.java                                                  48              4            142 .\ecomweb\src\main\webapp\index.html                                                            19             12            135 .\ecomejb\src\main\java\ecom\ejb\Users.java                                                     49              3            134 .\ecomweb\src\main\java\ecom\web\rest\InscriptionRest.java                                      26              6            133 .\ecomejb\src\main\java\ecom\ejb\Address.java                                                   39              2            115 .\ecomejb\src\main\java\ecom\ejb\Company.java                                                   42              6            113 .\ecomweb\src\main\webapp\src\app\app.js                                                        32              6            109 .\ecomejb\src\main\java\ecom\ejb\Orders.java                                                    36              3            100 .\ecomweb\src\main\webapp\src\app\login_register\login_register.js                              23             10            100 .\ecomapp\pom.xml                                                                                6              0             96 .\ecomapp\src\main\java\ecom\ejb\client\management\ManagementUser.java                          15              0             92 .\ecomapp\src\main\java\ecom\ejb\client\management\ManagementCompany.java                       17              2             87 .\ecomweb\pom.xml                                                                                0              0             86 .\ecomear\pom.xml                                                                               10              0             80 .\ecomapp\src\main\java\ecom\ejb\client\management\ManagementProduct.java                       11              0             79 .\ecomejb\src\main\java\ecom\ejb\Subscription.java                                              29              2             76 .\ecomejb\pom.xml                                                                                7              0             67 .\ecomejb\src\main\java\ecom\ejb\Administrator.java                                             25              1             66 .\ecomejb\src\main\java\timerBean\timerBean.java                                                20              6             61 .\ecomejb\src\main\java\ecom\ejb\sessionBean\ManageAddress.java                                 19              0             57 .\ecomweb\src\main\java\ecom\web\rest\ProductRest.java                                          20             20             55 .\ecomejb\src\main\java\ecom\ejb\sessionBean\ManageMaterial.java                                18              0             49 .\ecomejb\src\main\java\ecom\ejb\sessionBean\ManageColor.java                                   18              0             49 .\ecomejb\src\main\java\ecom\ejb\Picture.java                                                   19              0             46 .\ecomejb\src\main\java\ecom\ejb\sessionBean\ManageAdministrator.java                           19              0             43 .\ecomweb\src\main\webapp\src\app\userspace\userspace.js                                         8              9             41 .\ecomapp\src\main\java\ecom\ejb\client\management\ManagementAddress.java                        7              0             41 .\pom.xml                                                                                        6              0             40 .\ecomweb\src\main\webapp\src\app\lost_password\lost_password.js                                 9              0             39 .\ecomejb\src\main\java\ecom\ejb\Material.java                                                  17              1             36 .\ecomejb\src\main\java\ecom\ejb\ColorProduct.java                                              17              1             36 .\ecomweb\src\main\webapp\src\app\productpage\productpage.js                                     7              1             36 .\ecomweb\src\main\webapp\karma-unit.js                                                          7             30             33 .\ecomejb\src\main\java\remoteBean\ManageProductsRemote.java                                     6              0             26 .\ecomweb\src\main\webapp\src\app\about\about.js                                                 3              1             25 .\lancement_maven_deploiement_demarrageapplication.bat                                           0              0             21 .\ecomear\.settings\org.eclipse.wst.common.component                                             0              0             21 .\ecomweb\src\main\webapp\src\app\partials\notif.js                                              2              0             21 .\ecomweb\src\main\webapp\src\app\echarpes\echarpes.js                                           3              0             20 .\ecomweb\src\main\webapp\src\app\productupload\productupload.js                                 3              0             20 .\ecomweb\src\main\webapp\src\app\products\products.js                                           3              0             20 .\ecomweb\src\main\webapp\src\app\useconditions\useconditions.js                                 3              0             20 .\ecomweb\src\main\webapp\src\app\chaussettes\chaussettes.js                                     3              0             20 .\ecomweb\src\main\webapp\src\app\contactus\contactus.js                                         3              0             20 .\ecomweb\src\main\webapp\src\app\colliers\colliers.js                                           3              0             20 .\ecomweb\src\main\webapp\src\app\legalinformation\legalinformation.js                           3              0             20 .\ecomweb\src\main\webapp\src\app\search_result\search_result.js                                 3              0             20 .\ecomweb\src\main\webapp\src\app\bracelets\bracelets.js                                         3              0             20 .\ecomweb\src\main\webapp\src\app\infoslivraison\infoslivraison.js                               3              0             20 .\ecomweb\src\main\webapp\src\app\offres\offres.js                                               3              0             20 .\ecomweb\src\main\webapp\src\app\userprofile_edit\userprofile_edit.js                           3              0             20 .\ecomweb\src\main\webapp\src\app\expeditionconditions\expeditionconditions.js                   3              0             20 .\ecomejb\src\main\java\remoteBean\ManageUserRemote.java                                         6              0             20 .\ecomweb\src\main\webapp\src\app\panier\panier.js                                               3              0             20 .\ecomweb\src\main\webapp\src\app\livraison\livraison.js                                         3              0             20 .\ecomweb\src\main\webapp\src\app\home\home.js                                                   4             22             19 .\ecomweb\src\main\webapp\src\app\translation\translation.js                                     3              0             18 .\no_domain_reload_lancement_maven_deploiement_demarrageapplication.bat                          0              0             17 .\ecomejb\src\main\java\remoteBean\ManageCompanyRemote.java                                      4              0             15 .\ecomweb\src\main\webapp\index.xhtml                                                            4              0             15 .\ecomejb\src\main\resources\META-INF\persistence.xml                                            0              0             15 .\deploiement_initbdd.bat                                                                        0              0             14 .\launch.sh                                                                                      0              1             14 .\lancement_maven_deploiement_demarrageapplication.sh                                            0              0             14 .\ecomejb\src\main\java\remoteBean\ManageAddressRemote.java                                      5              0             12 .\ecomweb\.settings\org.eclipse.wst.common.project.facet.core.prefs.xml                          0              0             12 .\ecomweb\src\main\webapp\src\common\plusOne\plusOne.js                                          3              0             12 .\deploiement_initbdd.sh                                                                         0              0             10 .\ecomapp\src\main\java\ecom\ejb\client\Main.java                                               17              4             10 .\ecomweb\.settings\org.eclipse.wst.common.component                                             0              0              9 .\ecomweb\.settings\org.eclipse.wst.common.project.facet.core.xml                                0              0              9 .\ecomejb\src\main\java\remoteBean\ManageColorRemote.java                                        3              0              8 .\ecomejb\src\main\java\remoteBean\ManageMaterialRemote.java                                     3              0              8 .\derbyinitadmin.sql                                                                             0              0              7 .\ecomejb\.settings\org.eclipse.wst.common.component                                             0              0              7 .\ecomejb\src\main\java\remoteBean\ManageAdministratorRemote.java                                2              0              7 .\ecomejb\.settings\org.eclipse.wst.common.project.facet.core.prefs.xml                          0              0              7 .\ecomejb\.settings\org.eclipse.wst.common.project.facet.core.xml                                0              0              6 .\count.bat                                                                                      0              0              6 .\ecomapp\.settings\org.eclipse.wst.common.project.facet.core.xml                                0              0              5 .\ecomear\.settings\org.eclipse.wst.common.project.facet.core.xml                                0              0              4 .\ecomapp\src\main\resources\META-INF\application-client.xml                                     0              0              4 .\count.sh                                                                                       2              0              3 .\ecomweb\src\main\webapp\templates-common.js                                                    1              0              1 .\ecomapp\src\main\resources\file.xml                                                            0              0              1 - SUM:                                                                                          1861           1284          22241 -

--- Language                        files          blank        comment           code --- Perl                                1            692           1036           8014 CSS                                 1              0             55           6215 Java                               37            919             85           3557 Javascript                         30            196             95           3222 XML                                11              6              0            611 Maven                               4             23              0            329 HTML                                1             19             12            135 DOS Batch                           4              0              0             58 Bourne Shell                        4              2              1             41 Visualforce Component               3              0              0             37 JavaServer Faces                    1              4              0             15 SQL                                 1              0              0              7 --- SUM:                               98           1861           1284          22241 ---

Résultat avec Metrics
Des données plus spécifiques par modules sont disponibles ensuite. Ils ont été créés grâce à Metrics, un plugin Eclipse. Le fichier zip contient les fichiers XML exportés pour les modules ecomejb, ecomweb et ecomapp.









Méthodologie SCRUM
Une des exigences de ce projet était de suivre la méthodologie de gestion de projet agile Scrum. Pour le rôle de Scrum Master, nous avons choisi Malick. Garant de l'application du processus Scrum, il doit aussi superviser le travail de l'équipe tout en les aidant à avancer de façon autonome et à s'améliorer constamment. Nous avons choisi de faire varier la durée des sprints de un à deux semaines suivant la difficulté des activités à réaliser. Pour déterminer cette difficulté, nous faisions usage de "Planning Poker" où chaque membre déclinait son estimation. Pour mieux comprendre et mettre en place la méthode Scrum, nous nous sommes servis de l'application web ScrumDesk http://www.scrumdesk.com/ qui nous a permis à l'appliquer de façon plus personnalisée.



Sprint 1 : 16/09/2014 - 22/09/2014

 * Etat de l'art sur les sites existants
 * Ciblage du marché
 * Identification des besoins utilisateur
 * Mise en place du sondage
 * Réalisation de l'arbre des tâches
 * Définition d'une architecture générale

Sprint 2 : 23/09/2014 - 06/10/2014

 * Design des maquettes du site
 * Mise en place de la maquette HTML/CSS
 * Prise en main des technologies J2EE
 * Mise en place de Maven
 * Choix et mise en place de la base de donnée

Sprint 3 : 07/10/2014 - 20/10/2014

 * Implémentation système
 * Mise en place de la base de donnée
 * Mise en place des Beans
 * Ajustements IHM

Sprint 4 : 21/10/2014 - 3/11/2014

 * Rédaction de la charte graphique
 * Etude de technologies pour le front-end
 * Implémentation des classes Java Entity pour la base de donnée
 * Mise en place de Roboconf

Sprint 5 : 04/11/2014 - 17/11/2014

 * Mise en place du front-end avec différentes vues dynamiques grâce à ng-boilerplate
 * EJB
 * Déploiement avec script
 * Développement client-lourd

Sprint 6 : 18/11/2014 - 02/12/2014

 * Implémentation des différentes vues (page accueil, login, produits, ...)
 * Mise en place de services Rest
 * Ajouts de fonctions système pour le front-end

Sprint 7 : 02/12/2014 - 16/12/2014

 * Mise en place du login et espace user
 * Intégration du serveur de mail
 * Mise en place de l'ajout/suppression de produits
 * Intégration d'un module de paiement
 * Rédaction de documentation