ECOM RICM5 Groupe2 2014

From air
Jump to: navigation, search

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

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)


Partie Système

Partie base de données

Ecom2014g2bdd.jpg

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.

Métrique

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étriques du module app
Métriques du module ejb
Métriques du module web

File:G22014metrics.zip

Gestion du travail

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.

ScrumDesk.png

Déroulement du projet

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