Vous êtes sur la page 1sur 16

Mission 1 : Formation Symfony2

La mthode SCRUM
1.1/ Contexte
Lquipe autour du projet tait compose du dveloppeur informatique,
deux stagiaires dveloppeur informatique. Le projet tait encadr par le
Directeur Technique M. Ahilan THANGAVADIVEL.
Dans le cadre du stage et de la gestion projet, il fallait instaurer une
dmarche de travail pour le bon suivi des tches. Les mthodes dites
"Agiles" ont permis de pouvoir faciliter l'organisation de projet et la
gestion des diffrentes tches.
La mthode utilise ici pour la gestion de projet tait la mthode Agile
SCRUM. Cela permet une gestion ractive, structure et interactive des
diffrents projets de lentreprise.
1.2/ Mthode SCRUM, quest-ce que cest ?
La mthode SCRUM dfinit un cadre de travail permettant la ralisation
de projets complexes. Initialement prvu pour le dveloppement de
projets type Software , cette mthode peut tre applique tout type
de projet, du plus simple au plus innovant, et ce de manire trs simple.
Les projets qui suivent la mthode Agile SCRUM sont diviss en
plusieurs cycles de travail relativement court que lon appelle sprints .
Ces derniers permettent aux membres de lquipe dvaluer rgulirement
les progrs lis au projet et de planifier les prochaines tapes de
dveloppement. Mais cela permet surtout de rajuster ou rorienter la
direction prise par le projet si besoin est, partir dune base de travail
dj acheve et valide (sprint).
Chaque projet utilisant la mthode SCRUM sorganise autour dune quipe
auto-organise car il ny a pas de chef dquipe qui dcide des rles de
chacun, ou de la manire dont un problme est rsolu, puisque ces
problmatiques sont traites par lquipe dans son ensemble ; et
multifonctionnelle car chaque membre de lquipe est parti prenant dans
le dveloppement de chaque fonctionnalit, de lide limplmentation
finale.

Figure 1 - Cycle du SCRUM

Il existe trois rles principaux pourvoir : Le responsable produit, le


SCRUM Master, et le membre de lquipe.

Le responsable produit : Ce dernier est en charge de


communiquer la vision globale du produit lquipe. Il se doit de
reprsenter le client final, se mettre sa place et donc de
prioriser ses besoins. Il est celui qui a le plus de responsabilits et
dautorit. Le responsable produit est en effet celui qui est en
premire ligne lorsque quelque chose se passe mal.
Le SCRUM Master : Il ne manage pas lquipe, mais travaille
liminer tous les obstacles qui peuvent empcher lquipe
datteindre les objectifs fixs pour chaque sprint de travail. En
rsum, ce rle permet lquipe de rester crative et
productive, tout en veillant ce que les ralisations soient
visibles pour le responsable produit.
Membre de lquipe : Dans la mthode SCRUM, lquipe est
responsable de la ralisation oprationnelle des travaux . Cest
toute lquipe qui est responsable du rsultat final de chaque
sprint.La manire dont sont excutes les tches est trs libre
mais cette libert doit tre nanmoins cadre par lobligation de
rpondre aux objectifs du sprint.

1.3/ La mthode SCRUM applique au stage.


Afin dtre dans un cadre propice pour la ralisation de projet, nous avons
appliqus la mthode SCRUM prconis par notre chef de projet
notre stage.

Javais dj des connaissances sur le Framework Symfony2 et il a fallu


former lautre stagiaire en dveloppement. Ainsi, nous avons organiss les
diffrentes tches selon des sprints.
Le dveloppeur informatique a eu le rle de SCRUM Master, mon tuteur,
le responsable ingnieur a le rle de Responsable produit et nous tions,
les stagiaires, les membres de lquipe.
Cette mthode nous a apport une dimension organisationnelle pour le
projet et le stage en lui-mme.

Figure 2 - SCRUM appliqu au stage

Cheminement de la formation
2.1/Contexte de formation
Ds le premier jour, nous avions pris connaissance avec lenvironnement
de travail de la socit sur laspect dveloppement. Les mthodes de
travail, lenvironnement logiciel, le langage principal utilis etc Ayant
dj fait mon stage de premire anne chez ADENIS. Jai dj une
certaine connaissance de lenvironnement de travail. Lautre stagiaire
dveloppeur ne connaissait pas Symfony2 et larchitecture MVC* avec
le PHP POO. Ainsi, il a donc fallu former le stagiaire dveloppeur pour
quelle puisse se familiariser avec cette technologie. La formation a donc
t organise sous forme de tches pour se positionner sur le SCRUM du
stage.

2.2/ Les tches lies la formation


Voici comment nous avons organis la formation sous forme de plusieurs
tches :
Installation de Symfony2 et cration d'un projet Symfony2 ;
Contexte d'un mini projet comme appui la formation ;
Cration d'entit objet : Client et Company;
Cration formulaire pour ajouter, modifier ;
Envoyer un email avec Symfony2 ;
Scuriser une application avec une page de connexion et une page
inscription ;
Scurit sur Symfony2.

Installation de Symfony2 et cration dun projet Symfony2


Pour linstallation de Symfony2, on a commenc par les pr requis
savoir : un serveur web (Apache*, par exemple), un moteur de base de
donnes (MySQL), et PHP 5.3.2 ou plus rcent.
Quoi de mieux pour comprendre et installer une technologie quun tutoriel
bien expliqu.
Voici le lien dun trs bon tutoriel qui relate ce que nous voulons faire :
http://www.lafermeduweb.net/tutorial/demarrer-un-projet-avec-symfonyp27.html

Contexte dun mini projet comme appui la formation


Afin de pouvoir comprendre et poursuivre la formation rien de tel quun
contexte. On a pris un contexte simple : une socit et ses clients. Pour
une socit, on voudrait savoir sa raison sociale, son adresse, son code
postal et sa ville. Pour le client, on voudrait connatre son pseudo, son
prnom, son nom de famille et de quelle compagnie il est client. On
voudrait pouvoir ajouter un client, des compagnies, les modifier et les
supprimer. Un tableau de bord o lon pourrait voir les clients et les
compagnies.

Cration d'entit objet : Client et Company et Utilisation de


la php app/console
Symfony2 a lavantage de fonctionner avec une commande et un panel
dinstruction permettant de raliser diffrentes actions comme crer une
entit objet dans la base de donnes. Pour tout ce qui concerne les bases
de donnes, Symfony2 utilise Doctrine ORM*.

Figure 3 - Cration d'une entit Customer via CMD

Il suffit de passer cette commande pour lentit objet soit crer dans la
base de donnes :

php app/console doctrine :schma :update --force

Cration formulaire pour ajouter, modifier


Les formulaires aussi ont une particularit puisquils sont grs par
Symfony2. On cre un formulaire basique et on devra le dclarer comme
un objet. Par dfaut, le formulaire gnr par Doctrine affiche des champs
pour toutes les colonnes de la table. Un formulaire permet une action sur
une entit objet donc il est li une entit. On va sintresser un
formulaire dajout des clients. En partant du principe quil y a dj
quelques socits dans la base de donnes, on va crer un formulaire
avec lusername, firstname et lastname du client de type TEXTE. Pour
lassocier une compagnie, on va crer une liste droulante.

Figure 4 - Formulaire client

Qui dit formulaire dit traitement de donnes. Le traitement du formulaire


se fait dans le contrleur et cest ici mme o on dclare le
formulaire.

Figure 5 - Contrleur du Formulaire Client

Figure 6 - La vue du Formulaire Client

Envoyer un email avec Symfony2


Envoyer un mail est possible avec Symfony2 puisque SwiftMailer, une
bibliothque base de composants pour l'envoi d'e-mails partir
d'applications PHP, gre ce service
Cest le mme principe quun formulaire sauf quil faut modifier la config
de Symfony2. Un exemple de config.yml pour cerner la chose.

Figure 7 - Config du swift mailer

Scuriser une application avec une page de connexion et une


page inscription

Comme on peut le remarquer, on est considr comme un utilisateur


anonyme.

Figure 8 - Personne anonyme

On va alors crer une page de connexion et une page dinscription pour


accder aux diffrents actions du projet. De ce fait, il nous faut crer une
entit User qui rpertorie les utilisateurs inscrits.
Une fois inscrit, on va pouvoir se connecter lapplication. La scurit
sous Symfony2 est trs pousse, on peut la contrler trs facilement.
La dmarche est simple : On cherche identifier lutilisateur qui accde
lapplication et aprs authentification, on gre laccs lutilisateur en
question.
Bon dans ce cas-ci, en sinscrivant, on laisse le choix lutilisation de
devenir admin ou utilisateur.

Figure 9 - Formulaire d'inscription

Scurit sur Symfony2


La scurit est un processus en deux tapes dont le but est d'empcher
un utilisateur d'accder une ressource dont il ne devrait pas avoir accs.

Le composant de scurit peut tre configur via la configuration de votre


application l'aide du fichier security.yml partir du dossier app/config.
Voici un extrait pour comprendre la scurit gre par Symfony2.

Figure 10 - Security.yml

Partie role_hierarchy
La notion de rle est au centre du processus d'autorisation. On assigne
un ou plusieurs rles chaque utilisateur, et pour accder aux ressources
on demande que l'utilisateur ait un ou plusieurs rles. Ainsi, lorsqu'un
utilisateur tente d'accder une ressource, le contrleur d'accs vrifie s'il
dispose du ou des rles requis par la ressource. Si c'est le cas, l'accs est

accord. Sinon, l'accs est refus. Le ROLE_ADMIN hrite du ROLE_USER


par dfaut et le ROLE_SUPER_ADMIN hrite du ROLE_ADMIN et donc du
ROLE_USER
Partie encoders
Cette partie de la configuration permet donc de modifier l'encodeur utilis
pour vos utilisateurs, et donc la faon dont sont encods les mots de
passe dans votre application. Le mode encoders utilis ici est le sha512
pour crypter les mots de passes.
Partie providers
Un provider est un fournisseur d'utilisateurs. Les firewalls s'adressent aux
providers pour rcuprer les utilisateurs et les identifier. Dans notre cas,
les firewalls chercheront dans lentit User que lon a dfinie ici.
Partie firewalls
Un pare-feu cherche vrifier que vous tes bien celui que vous prtendez
tre. Ici on dfinit un espace scuris o il faut se connecter pour accder
aux diffrentes pages. Login_path : /loginrenvoie vers la fonction qui va
soumettre le formulaire et check path /login_check vers la fonction qui
va vrifier/traiter la demande. La partie pour se dconnecter est aussi
dfini et redirige vers le formulaire de connexion.
Partie access control
Le contrle d'accs (ou access control en anglais) va s'occuper de
dterminer si le visiteur a les bons droits (rles) pour accder la
ressource demande.
Ainsi, les niveaux des rles des utilisateurs sont dfinis par lintermdiaire
de lentit Rles. On peut restreindre laccs dune partie du contenu
une partie des utilisateurs.

Figure 11 - Accs refus

DEBUG
3.1/ Le principe du dbogage
Les erreurs sont toujours frquentes quand on dveloppe et cela peut
arriver tout le monde mme au meilleur. Les erreurs amnent une
recherche de solutions par le dbogage. Cest le fait d'enlever les erreurs
d'un programme, en suivent le droulement de ce programme afin d'en
reprer et corriger les dysfonctionnements. La faute a un point-virgule, ou
bien une mthode mal utilis voir un blocage au niveau du systme.
3.2/ Le dbogage en temps rel

Dans cette partie, nous allons prendre un exemple derreur DEBUG afin
de comprendre la dmarche suivre. Nous allons essayer de crer un
client test qui sera associ la compagnie CompanyTest. De ce fait,
soumettre ce cas au formulaire dajout de client du mini-projet.

Figure 12 - Ajouter un client TEST

Lors de la validation du formulaire, on peut apercevoir une erreur. Cest


fcheux et cest tant mieux.
Limportance lors dun dbogage est de pouvoir comprendre lerreur
affich. Voicilerreur en question:
The identifier id is missing for a query of
Test\Bundle\CeriseBundle\Entity\Client
Juste aprs, nous avons la STACK TRACE qui montre et identifie la
possible source du problme avec la fonction qui renvoie lerreur affich
prcdemment. Le deuxime point nous dit quil y a une erreur quil
manque le champ identifiant. Rappelons que lID est gnr
automatiquement par Symfony2.
Il est dcrit que la mthode find de lENTITY MANAGER rcupre un
tableau avec les donnes que lon a rentr dans notre formulaire.

Figure 13 Erreur

Daprs ce que lon comprend de lerreur, il y aura un problme avec la


requte puisquil manquerait un argument.
Dans le code, on vrifie laide de la mthode findsi lutilisateur est dj
prsent dans la base de donnes. Si ce nest pas le cas, alors on peut
linsrer dans la table CLIENT. Concrtement, lerreur serait ici dans
lutilisation de la mthode find.

Figure 14 - Code formulaire client

La mthode find slectionne une information par une cl primaire. En gros,


on donne lidentifiant et il nous renvoie les informations associes cet
identifiant. Comme on a pu le voir dans le code, on passe en argument un
tableau au lieu dun ID.

Figure 15 - Mthode find

Il faut donc trouver une autre mthode pour continuer le traitement.


Sachant quon doit passer un tableau en argument, il sera judicieux
dutiliser la mthode findBy qui, lui, demande un tableau en argument.

Figure 16 - Mthode findBy

Il suffit de remplacer la mthode find par la mthode findBy et hop le tour


est jou. Voil, lajout du client peut se faire.

Figure 17 - Rsultat des courses