Qui sommes-nous ?
Rémi
Rousseau
Directeur
de
projets
La
Netscouade
@reumiapri
Paul-‐Émile
Miny
Lead
developer
La
Netscouade
@polem
• Une
agence
digitale
Une
approche
intégrée
pour
fondée
en
2007,
pionnière
une
offre
360°
:
du
web
social,
spécialisée
• conseil
et
innovaFon
dans
la
communicaFon
digitale
insFtuFonnelle
et
grand
• concepFon
et
public
développement
• 50
personnes
d applicaFons
• webinfluence
et
rich
media
La conception et le développement
d’applications
25
personnes
réparFes
en
4
pôles
de
compétences
L Atelier
Le
Lab
Le
Studio
La
Fab
La conception et le développement
d’applications
De
Drupal
5
à
Drupal
8
:
+
de
150
projets
développés
Quelle méthodologie adopter ?
La
méthodologie
doit
servir
le
projet
et
garanFr
la
bonne
qualité
du
projet
Approche
en
cascade
vs.
Approche
agile
Il
est
très
souvent
possible
de
mener
une
approche
mixte
:
cascade
avec
le
client,
agile
en
interne
Les éléments pour choisir :
¤
Le
périmètre
et
la
nature
du
projet
¤
La
configuraFon
de
l’équipe
¤
La
maîtrise
méthodologique
de
l équipe
¤
Les
prédisposiFons
du
client
¤
Le
planning
du
projet
Conduire et mener à bien un projet
Comprendre
Lancer
Concevoir
Développer
Tester
Livrer
Maintenir
Clore
Comprendre: ce que le client souhaite
«
un
site
moderne,
ergonomique,
fluide
et
innovant
au
service
du
contenu,
qui
donne
une
image
renouvelée
de
son
organisaFon
»
«
une
autonomie
totale
pour
l alimentaFon,
la
mise
à
jour
et
la
mise
en
place
d évoluFons
»
«
un
site
compa>ble
avec
l ensemble
des
navigateurs
sur
l ensemble
des
terminaux
»
Comprendre: ce que le client ne dit pas
toujours
«
un
budget
contraint
»
«
un
planning
serré
»
«
un
projet
non
toujours
géré
par
un
chef
de
projet
en
interne
»
«
des
process
de
valida>on
hiérarchique
plus
ou
moins
longs
»
Comprendre: pourquoi partir sur Drupal ?
✔ GesFon
de
contenus
mulFmédia
✔ Workflow
et
gouvernance
éditoriale
✔ Ecommerce
✔ MulFlinguisme
(parFel
ou
intégral)
✔ CollaboraFf,
contribuFf,
affinitaire
Comprendre: pourquoi ne pas partir sur
Drupal ?
✗ gesFon
de
BDD
custom
✗ temps
réel
✗ applicaFon
méFer
spécifique
✗ applicaFon
mobile
naFve
Lancer : poser les bases d’une bonne
conduite de projet
Une
réunion
physique
avec
le
client
pour
:
ü
Présenter
les
équipes
ü
Acter
les
choix
méthodologiques
et
les
ouFls
de
suivi
ü
Arrêter
le
périmètre
foncFonnel
ü
Évoquer
les
problémaFques
techniques
ü
Aborder
les
quesFons
administraFves
Concevoir : un travail collaboratif avec les
développeurs
1. Les
spécificaFons
foncFonnelles
a) Maitriser
le
vocabulaire
propre
à
Drupal
b) Détailler
les
éléments
criFques
:
•
•
•
•
Types
de
contenus
Rôles
et
permissions
Workflows
Taxonomies
2. Le
cahier
de
receke
et
les
scénarios
de
test
Développer : Les modules
• Comment
choisir
un
module
?
• Quand/Comment
développer
son
module
?
• Pendant
ce
temps
là
dans
le
monde
PHP
…
Développer : comment choisir les
modules ?
• Plus
de
8000
modules
pour
D7
!
•
•
•
•
Version
stable
?
Nombre
d’installaFons
?
Nombre
de
bugs
ouverts
Maintenu
?
Développer : comment choisir les
modules ?
• Retours
d'expérience
des
développeurs
– Qualité
de
la
documentaFon
– Qualité
du
code
– PersonnalisaFon
/
Possibilité
d'étendre
le
module
• Un
module
bêta
>
un
nouveau
module
custom
Développer : concevoir son propre module
• Quand
choisir
de
développer
son
module
?
– Il
n’y
pas
de
module
pour
ça
!
(Vraiment
?)
– Autour
d’un
type
de
contenu
structurant
(feature)
– Forker
un
module
existant.
• /!
Ne
jamais
hacker
un
module
contrib.
• S’inspirer
des
modules
cores.
• Respecter
les
coding
standards
Drupal
Développer : pendant ce temps dans le
monde PHP …
curl -sS https://getcomposer.org/installer | php
composer require devture/sms-sender --save
/**
* Implements hook_init().
*/
function composer_autoload_init() {
require DRUPAL_ROOT . '/vendor/autoload.php';
}
$pushManager
= new PushManager();
$exampleAdapter = new ApnsAdapter();
$devices = new DeviceCollection(array(new Device('Token1'), new Device('Token2’)));
$message = new Message('This is an example.');
$push = new Push($exampleAdapter, $devices, $message);
$pushManager->add($push);
$pushManager->push();
Développer : bien coder son thème Drupal
•
•
•
•
•
UFliser
des
sous-‐themes
base theme = bootstrap!
CommunicaFon
développeurs
/
intégrateurs
/!
Limiter
PHP
dans
les
templates
UFliser
des
foncFons
de
thème
de
drupal
theme_item_list
!
UFliser
un
préprocesseur
CSS
SASS/LESS
Développer : le multilinguisme
• Penser
mulFlingue
dès
le
début
du
projet
• /!
Toujours
commencer
par
l’anglais
• Toujours
encapsuler
les
chaînes
en
anglais
dans
des
foncFons
t().
Développer : le moteur de recherche
• UFliser
Solr
avec
le
module
apachesolr
• Besoins
de
requêtes
spécifiques
?
Solarium
composer require basdenooijer/
solarium --save!
• Elas>cSearch
c’est
très
bien
aussi
!
Tester : les conditions d’une bonne recette
• S appuyer
sur
les
livrables
de
concep>on
• Mekre
en
place
un
ouFl
de
bug-‐tracking
• Effectuer
une
receEe
double
• S appuyer
sur
des
tests
automa>sés
Livrer : mettre en ligne le projet
•
•
•
•
•
Pas
de
livraison
le
vendredi
!
AutomaFser
les
livraisons
avec
capistrano
ou
autres.
Exporter
ses
configuraFons
en
fichiers
:
module
features.
Gérer
la
mise
à
jour
des
modules
:
hook_update.
Maintenir
un
fichier
changelog
Maintenir : la garantie
• Surveiller
les
mises
à
jour
des
modules
• Corriger
les
derniers
dysfoncFonnements
• Être
pédagogique
sur
la
priorisa>on
des
bugs
• Livrer
par
lots
et
s appuyer
sur
les
process
de
livraison
Maintenir : la maintenance évolutive et
corrective
• Une
nouvelle
prestaFon
pour
le
client
!
• Prioriser
et
planifier
les
chanFers
• Veiller
à
l intégrité
du
code
existant
• Proposer
du
refactoring
de
code
• Sanctuariser
les
livraisons
Clore le projet
• A
minima,
un
email
pour
lever
toute
ambiguïté
• Idéalement,
une
réunion
chez
le
client
pour
– Dresser
un
bilan
– Proposer
de
nouvelles
prestaFons
J
Les éléments d’un projet réussi
Client
UFlisateurs
• Site
en
ligne
• Planning
honoré
• Adhésion
générale
• Trafic
• Parcours
perFnents
• Réponse
aux
besoins
• Fidélité
• Témoignages
Équipe
projet
• Contrôle
budgétaire
• SaFsfacFon
et
fierté
de
l’équipe
• Client
fidélisé
Merci de votre attention !
A
votre
disposiFon
toute
la
journée
pour
échanger
et
sur
Twiker
!
@reumiapri
@polem
@lanetscouade