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:File: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)
Partie Système
Partie base de données
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.
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.
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