Vous êtes sur la page 1sur 32

Rapport de stage

Dveloppement dun CRM en PHP/JavaScript

Philippe STAGE EFFECTU DU 19 MARS AU 31 AOT 2012, ENCADR


ZDZIOBECK PAR SBASTIEN NOIRIE ET SUIVI PAR FRANOIS JACQUENET.

Remerciements
Mes remerciements sadressent en premier lieu mon maitre de stage, Sbastien NOIRIE,
Directeur Technique de lentreprise Webqam, pour sa confiance et ses conseils, qui mont
permis de progresser sans cesse durant ce stage.

En effet, cest grce aux missions que lon ma confies que jai choisi daborder dans mon
rapport de stage ce sujet.

Ce stage a ncessit tout au long de sa dure laide et le soutien de plusieurs personnes.

Je tiens ainsi exprimer tout ma reconnaissance Vincent GALLOT, grant de Webqam, pour la
confiance quil ma galement accord et son accueil au sein de son entreprise.

Je remercie enfin toutes les personnes de Webqam pour laccueil, la sympathie et la gentillesse
mon gard pendant toute la dure du stage.

Synthse
Ce document expose le gros projet qui ma t confi pendant ce stage au sein de lentreprise
Webqam.

Le projet consiste en la mise en place dun logiciel de gestion de relation client, couramment
appel CRM (Customer Relationship Management). Il est n dun besoin de Webqam de pouvoir
stocker et grer plus efficacement toutes les donnes relatives aux clients, pour ensuite traiter et
comprendre ces informations.

Il est important de signaler que le projet nest lheure actuelle pas termin, tant donn que la
date butoir a t fixe en accord avec la fin de mon stage : le 31 Aot 2012.

Cependant, aprs 3 mois de stage, il est quand mme possible de dcrire le projet, son
dveloppement et les premiers rsultats.

Ainsi, ce document dcrit lentreprise Webqam, son domaine dactivits et son fonctionnement.
Il introduit ensuite le projet et ltude pralable qui a t mene. Ensuite, les diffrentes tapes
de la ralisation sont dcrites, sans occulter pour autant les difficults rencontres, mais en
apportant pour chacune de ces difficults une solution concrte et efficace.
Enfin sont tires des conclusions mi projet, puis un bilan personnel de cette exprience chez
Webqam.

Sommaire
Prsentation de lentreprise ....................................................................................................................... 5
1. Fiche signaltique ............................................................................................................................ 5
2. Secteur dactivit ............................................................................................................................. 6
3. Concurrents - clients ....................................................................................................................... 7
4. Rfrences ......................................................................................................................................... 8
5. Organisation ..................................................................................................................................... 9
Prsentation du projet .............................................................................................................................. 10
1. Contexte .......................................................................................................................................... 10
2. Dfinition dun CRM .................................................................................................................... 11
3. CRM existants ................................................................................................................................ 12
4. Objectifs / enjeux............................................................................................................................ 14
tude pralable ......................................................................................................................................... 16
1. Cahier des charges ........................................................................................................................ 16
2. Contraintes ..................................................................................................................................... 18
3. Planification.................................................................................................................................... 21
Ralisation .................................................................................................................................................. 22
1. Droulement du projet ................................................................................................................. 22
2. Outils de contrle .......................................................................................................................... 23
3. Rsultats actuels ............................................................................................................................ 25
Difficults rencontres ............................................................................................................................. 26
1. Difficults techniques et organisationnelles .............................................................................. 26
2. Solutions mises en place ............................................................................................................... 27
3. Rsultats .......................................................................................................................................... 29
Conclusion ................................................................................................................................................. 31
1. Valeur ajout du projet ................................................................................................................. 31
2. Bilan ................................................................................................................................................. 32

Prsentation de lentreprise
1. Fiche signaltique

Raison sociale : Webqam

Adresse : 10D, rue de la Productique


42000 Saint-tienne

Date de cration : 2005

Situation : filiale de YouToYou

Effectif : 14 personnes

Secteur dactivit : Cration de sites Internet


Dveloppement d'applications Web
Webmarketing
Cration graphique & modlisation 3D

Chiffre daffaires : 300 k sur lexercice 2011-2012

2. Secteur dactivit

Initialement spcialise dans le dveloppement dapplications Web, lentreprise a aujourdhui


tendu son activit un large ventail de services :

Ces services ncessitent des comptences spcifiques, dmontrant la polyvalence et la ractivit


de Webqam face lvolution du secteur informatique :

3. Concurrents - clients

Le secteur du Web est bien videmment trs concurrentiel, et Webqam doit faire face de plus
ou moins grandes structures. Parmi les agences installes sur le mme march, on peut trouver :

- Des agences web locales (Axome, Fehu, Imageurs)


- Des agences chelle nationale (Actweb, Dagobert)
- Des groupes internationaux spcialiss dans la cration de sites web (Fullsix, Nurun)

Cette forte concurrence pousse lentreprise dcrocher de nouveaux marchs en mettant en


avant son savoir-faire, sa polyvalence et sa qualit de service.
Ainsi, les clients sont des groupes, des associations et des entreprises plus ou moins importants,
parmi lesquels :

- Des particuliers (Blaise Matuidi)


- Des structures locales (AFPI Loire, Idecq, Mission locale)
- De grosses entreprises nationales (Banania, Crunch, Tahiti, Sfr)
- De grands groupes internationaux (Sony, Samsung, LVMH)

La clientle est ainsi rpartie sur tous les secteurs :

- Agro-alimentaire
- Automobile
- vnementiel
- Immobilier
- Industrie
- Ingnierie
- Luxe
- Mdical
- Prt porter
- Services
- Transport
- Etc.

Il faut galement prciser que le plus gros client de Webqam nest autre que Youtoyou, qui elle
appartient. Lentreprise y ralise plus de la moiti de son chiffre daffaires, mme si lobjectif
moyen terme est de rduire cette dpendance .

4. Rfrences

Webqam ayant travaill pour des entreprises forte renomme, nombreuses sont les rfrences,
et ce dans tous les secteurs. Voici quelques exemples de ralisations :

Site web du Blackberry Torch Site officiel de Blaise Matuidi Chane Youtube Fructis - Gonzague

Boutique en ligne Annabac Application Facebook Crunch-Norman Site mobile Michelin

Application Facebook Samsung

5. Organisation

Webqam est compos de 14 personnes. Leffectif jeune, limage de lentreprise, lui a permis de
conserver son esprit start-up . En voici lorganigramme :

Prsentation du projet
1. Contexte

Lentreprise a su, depuis sa cration, nouer des liens avec diffrents partenaires, et installer avec
ces derniers des relations de confiance.

Les donnes relatives tous les acteurs interagissant avec Webqam sont ainsi essentielles.
Cependant, on constate qu lheure actuelle, ces informations sont simplement stockes en
brut dans des tableurs Excel. Il est donc difficile de synthtiser les donnes, de les manipuler
efficacement pour avoir une vue densemble de la relation client.

Cette situation a conduit Webqam rflchir un nouveau moyen de pouvoir stocker,


ordonner, extraire cet amas dinformations.
tant donn que la situation touche dautres entreprises, Webqam a rflchi au dveloppement
et la commercialisation dun outil qui pourrait rpondre efficacement la problmatique
suivante :

Comment grer, stocker et utiliser efficacement les donnes concernant les


relations client ?

Cette rflexion a t lorigine du projet qui ma t confi, savoir la ralisation dun logiciel
de CRM.

10

2. Dfinition dun CRM

La gestion de la relation client (CRM pour Customer Relationship Management) est une
mthode complte pour grer la relation avec clients et prospects, afin de crer des liens
commerciaux sur le long terme. Cette dmarche englobe galement les relations avec dautres
acteurs (fournisseurs, partenaires, revendeurs, actionnaires, etc.).

Dans ce sens, un logiciel CRM a pour but de collecter les informations lors des interactions avec
les diffrents acteurs, afin dy apporter une vue densemble. Cette vision globale permet
dinstaller une confiance et une fidlisation sur le long terme.

Voici les caractristiques principales dun logiciel CRM :

Base de donnes unique, enrichie quotidiennement


Outils danalyse des donnes
Historique complet des relations avec lentreprise
Informations exhaustives sur les correspondants
Augmentation de la productivit des quipes commerciales
Gestion dactivit : prises de contact, de rendez-vous, des relances, etc.
Matrise de lactivit commerciale

Le CRM reprsente ainsi une source de valeur ajoute pour tous les services dune entreprise :

Ventes et administration des ventes


Support et SAV
Accueil
Finance
Prvisions
Ressources humaines
Fabrication
Recherche & dveloppement
Logistique

Figure 1 - Principaux acteurs d'un CRM

11

3. CRM existants

Aprs avoir mis le besoin de grer la relation client via un logiciel CRM, il convient de
procder une tude de lexistant, ne serait-ce que pour savoir sil vaut mieux recourir une
solution externe ou alors dvelopper son propre outil.

La premire composante tant bien videmment la question du cot du logiciel, il faut savoir
que la plupart des CRM payants se facturent par utilisateur et par mois.
SalesCloud, le leader sur le march du CRM, propose ainsi diffrentes offres :

Figure 2 - Offres d'abonnements au CRM de SalesCloud

Pour parer cette question du prix du logiciel, voici une slection de solutions open source.
Elles ont t classes par catgorie pour distinguer :

Les pure-player , qui ont t conus ds lorigine pour ce type de besoins


Les ERP (Progiciels de gestion intgre), qui ont intgr la relation client dans les processus de
gestion de lentreprise
Les groupware, qui ont fait voluer les fonctions de carnet dadresses vers une gestion plus
complte de la relation client

Pure-player

Plus complet Pour associations


Leader Opensource Driv de Sugar Personnalisable
Java + tout type de Complment de
Php/MySQL Php/MySQL/Ajax Python / MySQL
base de donnes Drupal/Joomla

12

ERP

Gestion du marketing Gestion des stocks Ax sur le suivi des Workflow Gestion des ventes
et des ventes et des contacts affaires /groupware Support dappels
Java/Javascript/Oracle Php/MySQL Php/MySQL Version Saas tlphoniques

Groupware

Module de la suite de travail collaboratif OBM


Sous licence GPL
Outils de communication compltement intgrs
Pas toutes les fonctionnalits dun pure-player

Il faut donc constater que loffre est varie, et chaque solution est plus ou moins axe sur un
domaine.
Cependant, de par sa comptence en dveloppement dapplications, ainsi que la possibilit de
conqurir un nouveau march, Webqam a choisi de dvelopper son propre logiciel CRM.

13

4. Objectifs / enjeux

Objectifs

Lobjectif principal est la ralisation dun outil de prospection et communication destin aux
PME, associations et troupes artistiques.

Pour atteindre cet objectif, la plateforme devra comporter un certain nombre de fonctionnalits.
Voici donc le diagramme de cas dutilisation du CRM. Il permet de mettre en vidence les 3
acteurs de la plateforme (Utilisateur/Administrateur/Superadmin) ainsi que leurs droits
respectifs.
La liste des fonctionnalits nest pas exhaustive mais permet davoir un aperu du cahier des
charges fonctionnel.

Figure 3 - Diagramme de cas d'utilisation

14

Enjeu

Lenjeu pour lentreprise est norme, puisquil reprsente un march trs lucratif, tant au niveau
local que national, car le besoin est norme (Webqam met mme le besoin de disposer de cette
application) et peu dentreprises ont actuellement une solution fiable et convenante.

Webqam peut galement, travers ce CRM, vhiculer auprs des clients son image dentreprise
rigoureuse, efficace et organise.
Le CRM pourrait donc permettre Webqam de dcrocher de nouveaux contrats, notamment
dans son secteur dactivit principal, savoir la cration de sites Internet.

15

tude pralable
1. Cahier des charges

Le cahier des charges de ce projet a t ralis par plusieurs collaborateurs de Webqam.

Celui-ci dfinit clairement tous les points importants du projet.


Il faut savoir que ce dernier nest pas dfinitif et possde encore quelques zones dombres, mais
cela ne pose pas de problme tant donn que les diffrentes parties de la ralisation sont assez
indpendantes, comme nous le verrons par la suite.

De plus, le cahier des charges est hirarchis (coloration diffrente dans le document). En effet,
la ralisation du CRM se dcomposera en 3 tapes :

Une premire version destine Webqam et aux autres PME ayant les mmes besoins
Une version 2, pour les mmes destinataires, mais avec davantage de fonctionnalits
Enfin, la V3 sera destine aux associations et troupes dartistes

Voici donc les axes principaux du cahier des charges :

Les objectifs : Objectif global du projet + une liste de sous-objectifs

Les contraintes : Seulement les contraintes fonctionnelles

Des perspectives damlioration : Pour chaque version, ides damliorations futures

Principe de fonctionnement : Bref rsum de la souscription et lutilisation du CRM

Droits des utilisateurs de lapplication : Dfinition des diffrents acteurs et de leurs droits
respectifs

Paramtrage de lapplication : Description trs dtaille du scnario et des exigences


fonctionnelles, agrmente de quelques prcisions techniques. Cette partie concerne le
paramtrage effectu par un nouvel utilisateur de la plateforme.

Interface : Spcifications graphiques et ergonomiques des pages de lapplication, ainsi que des
maquettes.

16

En plus des maquettes ralises dans le document, une maquette globale au format Photoshop
ma t fournie. Cette dernire montre explicitement toute la charte graphique, du choix des
couleurs/typographies au dcoupage des diffrentes sections.

Figure 4 - Cahier des charges Figure 5 - Maquette Photoshop

La maquette Photoshop permet de visualiser concrtement le rsultat dsir et la charte


graphique voulue.

Cela reprsente un gros avantage, car les demandes sont de ce fait trs explicites et concrtes, et
on peut se servir de tous les lments de la maquette pour composer linterface, et faire en sorte
que cette dernire rponde bien toutes les exigences fonctionnelles du cahier des charges.

17

2. Contraintes

Le projet est bien videmment soumis plusieurs contraintes, quelles soient techniques,
organisationnelles ou temporelles. Ces contraintes concerne la ralisation du projet, et non pas
le projet en lui-mme (ces dernires tant rpertories dans le cahier des charges)

Contraintes temporelles

Comme je lai mentionn prcdemment, le projet est hirarchis en 3 versions.


Ainsi, il ma t demand de terminer la V1 avant la fin de mon stage, savoir le 31 Aot.

Cependant, les deux autres versions doivent normalement tre ralises pendant cette priode.

Contraintes organisationnelles

Il faut savoir que Webqam ralise tous ses projets selon un mode de fonctionnement bien prcis.

Tout dabord, chaque projet peut-tre trait par un ou plusieurs dveloppeurs/graphistes.


Chaque membre de lquipe projet travaille donc localement sur son poste, puis envoie son
travail sur un serveur (dtaill dans les contraintes techniques).

Lenvoi de fichiers doit se drouler au moins une fois par jour (de prfrence en fin de journe),
pour parer aux ventuelles dfaillances des stations de travail.

Contraintes techniques

Plusieurs aspects techniques mont t imposs pour raliser le CRM.

Ce doit tre une application Web dveloppe en PHP, et utiliser une base de donnes MySQL.
Il est galement possible dajouter du code JavaScript (en intgrant notamment la bibliothque
jQuery).

Pour ce faire, un environnement de dveloppement ma t impos : Zend Framework.

18

Utilisant nativement PHP/MySQL, ce Framework est considr comme un des plus puissants et
les plus scuriss.

Cr en mars 2006, Zend Framework a t dvelopp dans le but de simplifier le


dveloppement Web, tout en recommandant les bonnes pratiques et la conception oriente
objets en offrant des outils aux dveloppeurs.

Il permet galement dutiliser le principe de MVC (Modle-Vue-Contrleurs).


Le MVC est une mthode de conception qui organise lInterface Homme-machine en 3 grandes
parties. Comme son nom lindique, il comporte

Un modle (modle de donnes)


Une vue (prsentation, interface utilisateurs)
Un contrleur (logique de contrle, gestion des
vnements, synchronisation)

Figure 6 - Relations entre les composants du modle MCV

Chacune de ces entits a un rle prcis dans linterface, mais interagissent nanmoins entre eux :

Le modle reprsente le comportement de lapplication : traitement des donnes, interactions


avec la base de donnes, etc. Il en assure la gestion et garantit leur intgrit.
Ainsi, dans le cas typique dune base de donnes, cest dans le modle quon rpertorie toutes les
mthodes pour interagir avec la base.
Cependant, le modle offre des mthodes pour mettre jour ces donnes (insertion, suppression,
mise jour). Il offre galement des mthodes pour rcuprer ces donnes.

La vue correspond linterface avec laquelle lutilisateur interagit. Son premier rle est de
prsenter les rsultats renvoys par le modle, le second tant de recevoir toutes les actions de
lutilisateur (clic de souris, slection dune entre, boutons, etc.).
Il est galement possible dinclure des vues partielles ou compltes dans dautres vues.
Cette dernire naffecte donc aucun traitement, elle se contente dafficher les rsultats et
dinteragir avec lutilisateur ; cest pourquoi elle peut tre conue en HTML ou tout autre
marquage de prsentation (XML/XSLT par exemple).

Le contrleur prend en charge la gestion des vnements pour mettre jour la vue ou le modle
et les synchroniser. Il reoit ces vnements et enclenche les actions effectuer. Si une action
ncessite un changement des donnes, le contrleur demande la modification des donnes au
modle, et ce dernier notifie la vue que les donnes ont chang pour quelle se mette jour.

19

Ce Framework est gratuit en version minimale, incluant seulement une bibliothque PHP.
Cependant, Webqam tant trs ax sur Zend (2 collaborateurs passent actuellement une
certification Zend, la France en comptant moins de 30), lentreprise a achet sous licence Zend
Studio.

Ce dernier, bas sur le clbre clipse, est un environnement de dveloppement spcialement


conu pour intgrer et grer au mieux Zend Framework. Il contient par exemple des outils de
visualisation du modle MCV, et des fonctions trs utiles telles que la compltion de code ou
Zend Tool (un puissant outil en ligne de commande servant crer et manipuler
Projets/Modles/Vues/Contrleurs).

Zend Studio propose galement un module nomm Subversion.


Celui-ci permet denvoyer et rcuprer des fichiers sur un serveur, plus prcisment dans un
rpertoire de ce serveur appel dpt.
Cet outil permet donc plusieurs personnes de travailler en mme temps sur un projet, car il
gre parfaitement les ventuelles collisions quil pourrait y avoir entre un fichier manipul par
plusieurs personnes, en attribuant chaque manipulation de fichier un numro de version.
Ainsi, tous les membres de lquipe projet sont mme de :

Ajouter des ressources


Rcuprer localement les ressources
Envoyer ses fichiers au serveur
Supprimer des fichiers
Verrouiller un fichier
Dplacer des ressources
Mettre jour la copie locale existante depuis la dernire version disponible sur le dpt
Etc.

La dernire contrainte qui ma t impose est le mot dordre de chaque ralisation de


Webqam : la rigueur.
En tant que dveloppeur dapplications, cette rigueur absolue doit sappliquer au code : il doit
tre le plus clair possible, agrment de commentaires, et si possible rutilisable plusieurs
endroits.
Lefficacit et lefficience obtenues grce cette rigueur doivent permettre Webqam de raliser
des applications certes complexes et puissantes, mais nanmoins fluides et propres.

20

3. Planification

Voici ci-dessous le diagramme de Gantt du projet, permettant de visualiser dans le temps les
diffrentes tches et leur enchanement.

Figure 7 - Diagramme de Gantt du projet CRM

Ce diagramme permet de tirer plusieurs conclusions :

La premire tape consiste en la cration dune base de donnes conforme au cahier des charges.
Le principe de dveloppement est de correctement afficher les donnes dans lapplication, et
ensuite de les modifier/supprimer ou den ajouter.

La mise en place dune architecture est la base du dveloppement. En effet, il faut bnficier de
bases solides, comportant une gestion efficace des diffrentes erreurs (404, 500, etc.), ainsi quun
accs rglement aux diffrents modules. Il faut l aussi tre extrmement rigoureux quant la
scurit de lapplication.

Le projet nest pas totalement commenc de zro. En effet, un modle dapplication ma t


fourni. Ce modle possde une configuration de base et des classes personnalises, cres par
Webqam. Ces classes concernent des vnements de lapplication, tels que lauthentification ou
laffichage de messages.

On distingue les 3 modules dvelopper, relatifs aux 3 acteurs du projet (Utilisateurs /


Administrateurs / Superadmins)

Bien que de rigoureuses vrifications soient effectues en cours de route pour valider chaque
partie, une semaine de tests a t prvue en fin de dveloppement.

21

Ralisation
1. Droulement du projet

Actuellement, le projet est toujours en cours de dveloppement et aucun retard nest constater
par rapport au planning.

Ainsi, le module de configuration est pratiquement fonctionnel, et le cahier des charges


concernant cette partie est pour linstant respect.
Voici ci-dessous un aperu du module de configuration :

Figure 8 - Module de configuration

Ce module, destin aux administrateurs, comporte une interface simple et puissante. Il permet
ces derniers de pouvoir grer leur aise tous les lments mis leur disposition :

Leur domaine
Les entreprises en contact et les personnes physiques lies
Les diffrents utilisateurs du domaine
Des champs personnaliss, applicables tous les lments prcdents
Etc.

Il est galement possible deffectuer une recherche rapide, de naviguer dans les modules
autoriss, ou de slectionner la langue dsire, ces fonctionnalits ntait pas exclusives aux
administrateurs mais disponibles pour tout acteur de la plateforme.

22

2. Outils de contrle

Pour sassurer du bon droulement du projet, plusieurs outils de contrle ont t mis ma
disposition.

Tout dabord, la proximit des collaborateurs de lentreprise permet une communication


constante, sil y a la moindre interrogation, incertitude quant au cahier des charges ou aux
tches raliser.

Ensuite, loutil Subversion centralise le travail de tous les acteurs possibles du projet
(dveloppeurs/graphistes/chefs de projets) dans un rpertoire du serveur.
Ainsi, le chef de projet peut tout moment rcuprer les fichiers pour effectuer des tests et des
vrifications sur son poste de travail, et corriger des ventuelles erreurs pour les envoyer ensuite
au serveur.

Enfin, un dernier outil a t mis en place pour permettre aux acteurs de grer efficacement le
projet : Redmine.

Redmine est une application web de gestion complte de projet dveloppe en Ruby sur la base
du Framework du mme nom.
Elle est sous licence GPL, cest--dire que le logiciel est libre.

Voici les principales fonctionnalits de Redmine :

Gestion multi-projets
Gestion des droits utilisateurs, dfinis par des rles
Gestion de groupes dutilisateurs
Rapports de bugs, demandes dvolution
Wiki multi-projets
Forums multi-projets
News en RSS/ATOM
Notifications par mail
Gestion de feuilles de route, Gantt, Calendrier
Historique
Intgration de suivis de version, dont Subversion
Multilingue
Support de plusieurs bases de donnes : MySQL, PostgreSQL ou SQLite

23

Redmine permet un suivi ultra complet des bugs, anomalies et volutions.


Ce module permet de rpertorier prcisment toute les retouches effectuer, en traant chaque
demande, de lannonce la clture.

Voici le scnario type dune demande :

Le chef de projet cre la demande avec le statut Nouveau en noubliant pas de lassigner un
collaborateur.
La personne de la partie technique peut ensuite visualiser les demandes quil lui reste traiter.
La partie technique termine le travail (dveloppement fini, bug corrig, maquette termine),
passe la demande 100% et le statut en Rsolu.
La demande disparait alors de la section Mes demandes traiter
Le chef de projet retrouve les demandes valider en cliquant sur Demandes restantes (non fermes)
Il passe toutes les demandes termines ltat Ferm afin de clturer le cycle de rsolution.

Voici ci-dessous laperu du panel de demandes qui me sont assignes.

Figure 9 - Panel de demandes Redmine

Depuis le dbut du projet, une centaine de demandes mont ainsi t attribues, et mme si les
retouches sont quelquefois longues et peuvent remettre en cause une bonne partie du code, cela
reprsentera un gain de temps norme lors des tests finaux, puisque toutes les volutions ou
anomalies auront dj t traites.

24

3. Rsultats actuels

Jusquici, le projet sest droul conformment au planning et respecte le cahier des charges.

La base de donnes a t cre, et cette dernire satisfait les contraintes fonctionnelles. Bien
quayant subi quelques retouches au cours du dveloppement, elle est actuellement
fonctionnelle et permet efficacement le stockage et la manipulation de donnes.

Par la suite, larchitecture de lapplication a t mise en place. Cette tape tait trs importante
car de la qualit de cette architecture dpendait la suite du projet.
Ainsi, les diffrents modules ont t crs et leur accs (en fonction du statut de lutilisateur), est
parfaitement gr par un plugin ACL (Liste de Contrle dAccs).
Chaque module possde par ailleurs ses propres Modles, Contrleurs et Vues, ce qui lui
permet de pouvoir tre compltement indpendant.
Parmi eux, un module nomm Core centralise toutes les fonctionnalits qui sont susceptibles
dtre utilises partout dans lapplication, comme lauthentification ou les messages derreur.

Enfin, jai pu dvelopper le module de configuration.


Au jour daujourdhui, ce dernier est quasiment termin, les domaines, entreprises, utilisateurs
et champs personnaliss tant compltement en place. Il ne reste plus que la gestion des
produits, ce qui permet de constater que lavancement du projet seffectue dans les temps.

25

Difficults rencontres
1. Difficults techniques et organisationnelles

Malgr la bonne marche actuelle de la ralisation du CRM, ce projet na pas t et nest pas sans
difficults.

Tout dabord, bien qutant assez laise avec le langage PHP, je navais que trs peu
dexprience concernant le Framework Zend.
Il ma donc fallu apprendre cette nouvelle approche du dveloppement, incluant une
architecture compltement diffrente et un ensemble de mthodes inconnu.

De plus, si les outils de dveloppement taient quasiment nouveaux pour moi, la manire de
dvelopper ma encore plus surpris.
En effet, chez Webqam, et contrairement mes expriences antrieures, il y a une rigueur
absolue dans le code ; cest--dire quil ne faut pas seulement savoir dvelopper sous un langage
dfini, mais il faut le faire le plus efficacement possible.
Cela peut sembler assez paradoxal, mais plus le code doit tre simple et polyvalent, plus il est
compliqu mettre en place.

Ensuite, le projet tant destin aux clients de Webqam, il a fallu faire trs attention des aspects
tels que la scurit ou la gestion derreurs.
Durant mes prcdentes expriences en dveloppement PHP, javais seulement t amen
travailler en interne, pour lentreprise elle-mme.
Il ny avait donc pas une telle attention porte sur la scurit et tous les scnarios possibles.

Enfin, la demande de polyvalence du code, conjugue au besoin de pouvoir tout personnaliser


dans lInterface Homme-machine, na pas facilit le dveloppement.
Chaque fonction ntait pas en soi-mme complique dvelopper, mais linteraction entre
chacune dentre elles a fini par rendre le module que jai ralis assez complexe.
Par exemple, lintgration de champs personnalisables pour des formulaires sest avr tre un
rel problme.

26

2. Solutions mises en place

Plusieurs solutions ont t mises en place pour parer ces problmes.

Connaissant ma faible exprience avec Zend Framework, mon tuteur ma laiss un peu de
temps pour raliser un tutoriel complet permettant de matriser les outils de base de ce puissant
outil.
De plus, jai aussi ralis un mini projet avec Zend Studio. Ce projet a consist dvelopper une
application web permettant de gnrer trs simplement une page Facebook, avec deux images,
lune ou lautre affiche selon que lutilisateur aime la page ou non.
Ce mini projet ma permis de me familiariser avec larchitecture Modle-Contrleur-Vue, et
dcouvrir la puissance du Framework pour ensuite me projeter sur le CRM.

Concernant le dveloppement en lui-mme, il ma fallu un certain temps dadaptation pour


intgrer ces notions de rigueur et de polyvalence.
Cest pourquoi, ds les premires lignes de code du CRM, nous avons beaucoup chang avec
mon tuteur pour corriger tous les dfauts et redondances, et faire que chaque mthode cre soit
la plus dynamique possible.
Cela pouvait sembler rptitif et inutile au dbut, quand des petites parties ne mritaient pas
forcment dtre retravailles, mais je me suis rapidement aperu quau fur et mesure du
projet, il y avait de moins en moins de mthodes implmenter, car elles taient dj mises en
place ailleurs, ce qui a rendu la ralisation du projet de plus en plus fluide.

Pour ce qui est de la scurit, jai mis en place plusieurs systmes visant verrouiller et
contrler les actions des utilisateurs.
Comme voqu prcdemment, chaque page, son chargement, fait appel un plugin de
vrification du statut de lutilisateur (en session). Selon ce statut et lendroit o il se trouve, le
CRM affiche la page dsire, ou le cas chant, redirige vers une page autorise. Par exemple,
un utilisateur essayant datteindre un lien dadministrateur se verra automatiquement redirig
vers sa page daccueil.
Le contrle daccs selon le statut nest pas la seule scurit mise en place sur lapplication. En
effet, les actions entrainant une suppression dans la base de donnes ncessite automatiquement
une confirmation (voir page suivante) :

27

Figure 10 - Fentre de confirmation d'une suppression

Dans le cas ci-dessus, linterface affiche les diffrents champs qui seront supprims et
demandent de calculer le rsultat dune simple addition. Cela comporte deux avantages :

On sassure que lutilisateur est humain (mme principe quune vrification par Captcha, mais
plus simple)
On vite le piratage (par exemple, un lien de suppression charg automatiquement dans un mail
reu) en octroyant lutilisateur un Token, valable uniquement pour la suppression en cours.

Enfin, pouvoir valuer et quantifier les performances du code, jai mis en place un module
spcial : la ZF Debug Toolbar.
Ce module comporte, comme son nom lindique, une barre doutils permettant de visualiser
plusieurs informations essentielles concernant la page en cours, comme les variables utilises,
les requtes faites la base de donnes, les ventuels avertissements ou erreurs, et surtout le
temps de chargement dtaill de la page.
Cet outil ma permis dadapter le code pour rduire le nombre de requtes et de variables,
rsoudre les erreurs et avertissements, minimiser les temps de chargement, pour ainsi optimiser
au maximum chaque page.

Figure 11 Aperu de la ZF Debug Toolbar

28

3. Rsultats

Les solutions mises en place pour parer aux problmes rencontrs ont t trs efficaces.

Le choix de mon tuteur de me faire commencer lapprentissage du Framework Zend sur un


petit projet tait judicieux, tant donn la taille et la complexit du CRM.
Cela pouvait sembler une perte de temps de ne pas commencer ce projet tout de suite, mais
tant donn quune des premires parties du projet tait de mettre en place une architecture
solide et scurise, jaurais trs certainement eu beaucoup de mal remplir cette contrainte si je
dcouvrais juste le modle MCV.

Ensuite, la contrainte de rigueur et defficacit de dveloppement, qui tait un peu nouvelle


pour moi, a t rapidement assimile. Mon tuteur et moi avons certes pass du temps en dbut
de projet pour contrler et corriger si besoin chaque ligne qui ntait pas optimise, mais ce
temps de rvision du code a eu tendance diminuer ; matrialis par la mme baisse des
demandes Redmine, comme le montre le graphique ci-dessous.

Figure 12 - Analyse des demandes et de leur temps de rsolution sur les 5 premires semaines

De plus, si les demandes ont considrablement baiss, cest en partie grce la qualit et la
puissance de lapplication.

Dune part, les modules se sont avrs tre parfaitement autonomes. Par exemple, le contrleur

29

de calcul pour valider une suppression (expliqu dans la partie prcdente) est situ dans le
module Core (module rpertoriant les fonctionnalits utilises partout dans lapplication).
Ainsi, quand on demande une suppression, le formulaire de vrification est appel, et celui-ci
autorise une action, mais sans mme savoir ce qui va tre effac. Il remplit seulement son rle,
savoir dlivrer un jeton en cas de bonne addition.

Dautre part, la rigueur de dveloppement, conjugue lexigence de simplicit, a rendu trs


simples des besoins fonctionnels qui pouvaient sembler tre beaucoup plus complexes.
Le cahier des charges comportait par exemple une demande assez dlicate : les champs
personnaliss : un administrateur doit pouvoir rajouter, dans toutes les tables quil gre, des
champs personnaliss (liste droulante, check box, zone de texte, etc.).
Une approche classique aurait consist dvelopper, pour chaque table, des fonctions
dajout/modification/suppression, et pour chaque formulaire, de vrifier sil existe un champ
personnalis pour la table concerne. Si cette stratgie est difficile expliquer, elle lest
certainement davantage dvelopper, que ce soit au niveau des donnes ou des traitements.
Or, la stratgie pour laquelle nous avons opt a consist avoir :

Un code totalement dynamique (ex : aucun nom de table en dur )


Un schma de base de donnes extrmement simple (une seule table pour tous les champs)

Ainsi, la base de donnes diffrencie lemplacement du champ personnalis uniquement par un


type enum (liste numrative). Deux autres tables sont en place : une pour les ventuelles
valeurs possibles dune liste droulante, lautre pour les valeurs de ces champs (en fonction de
lutilisateur).
Concernant le code, le fait de ne renseigner le nom de la table aucun endroit ma permis de
grer toutes les possibilits dynamiquement : en fonction des valeurs du champ de type enum,
on cre des onglets (voir figure ci-dessous).

Figure 13 - Gnration d'onglets en fonction des valeurs du champ enum

Grace cette stratgie, je nai eu crire les mthodes de gestion de ces champs une seule fois.
Et en ce qui concerne la rcupration et laffichage de ces champs, une seule mthode les gre de
la mme manire dynamique, et un systme dhritage de formulaires permet chacun de ces
derniers de pouvoir lappeler.
Jai, dans lexemple prcdent, effectu 6 fois moins de dveloppement, pour un rsultat tout
aussi - si ce nest plus - performant.

30

Conclusion
1. Valeur ajout du projet

Le projet tant encore en cours de dveloppement, il mest impossible de mavancer sur la


valeur ajoute quil reprsentera pour Webqam.
Cependant, il ma personnellement t trs bnfique.

En effet, ayant essentiellement travaill en PHP durant mes anciens stages, je pensais navoir
que trs peu de difficults techniques raliser le projet qui mtait demand.

Mais jai pu dcouvrir, par lintermdiaire du Framework Zend, une autre approche du
dveloppement, certes plus complexes mais beaucoup plus puissante.
Le fait de connatre et de savoir utiliser un outil de cette envergure reprsente une comptence
que jestime trs valorisante.

Ensuite, si loutil utilis pendant ce stage tait nouveau, lapproche de dveloppement ltait
tout autant.

Jai ainsi pu raliser limportance davoir une vision englobant tout le projet, quelle que soit la
partie quon traite. Ainsi, si certaines fonctions mont sembl compliques mettre en place,
celles-ci ont t trs efficaces, car rutilises plusieurs endroits.

Enfin, la rigueur applique ds les premiers instants de la ralisation a elle aussi paru
inopportune, mais mme si le projet nest pas encore en phase de tests et dbogage, je peux dj
constater que la part du temps consacre aux retouches de code a considrablement diminu.

31

2. Bilan

En conclusion, ce stage est et restera pour moi une exprience trs enrichissante.

Jai ainsi pu mimmiscer dans une structure rduite, mais dynamique, polyvalente et
comptente, et dcouvrir des gens passionns par le Web et tout ce que ce dernier peut
comporter.

Jai galement dcouvert de nouvelles technologies, comme le Zend Framework, et une


mthode de travail que je navais jamais applique en entreprise auparavant.
Ces nouveauts mont pouss me remettre en question et enrichir mes comptences,
spcialement sur un langage que je pensais matriser.
Dun autre ct, jai t en mesure dapporter lentreprise mes comptences apprises au cours
de lanne, que ce soit en matire de programmation ou de gestion de projet.

De plus, jai t mme de faire face aux diffrents problmes rencontrs, et de les rsoudre
efficacement en appliquant une mthode rigoureuse et prcise, grce notamment aux moyens
de suivi et de rsolution dont dispose Webqam.

Cest pourquoi ce stage, bien quil ne soit pas encore termin, reprsente dores et dj pour moi
une exprience russie sur tous les plans, et cela me permet donc denvisager mon futur
professionnel avec confiance et srnit.

32