Mener à bien un projet Drupal Drupagora 2013
Qui sommes-nous ?
Rémi Rousseau Directeur de projets
La Netscouade
@reumiapri
Paul-‐Émile Miny Lead developer La Netscouade
@polem
Une approche intégrée pour une offre 360° :
• conseil et innovaFon digitale
• concepFon et développement d’applicaFons
• webinfluence et rich media
• Une agence digitale fondée en 2007, pionnière du web social, spécialisée dans la communicaFon insFtuFonnelle et grand public
• 50 personnes
La conception et le développement d’applications
25 personnes réparFes en 4 pôles de compétences
L’Atelier
Le Studio
Le Lab
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
Approche agile vs.
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 : l’approche UX
UX
Etat de l’art
Akentes uFlisateurs
ObjecFfs du client
Concevoir : une approche collaborative avec le client
1. Les parcours uFlisateurs
2. L’arborescence
3. Les gabarits (ou mockups)
Concevoir : quelles sont les cibles ?
• Pour qui ?
• Pour quoi ?
Concevoir : quels parcours utilisateur ?
• Que recherche l’uFlisateur final ?
• Comment accède-‐t-‐il aux contenus ?
Concevoir : quels terminaux pour quels usages ?
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 ? Messaging
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 …
Développer : pendant ce temps dans le monde PHP …
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 !
Développer : obtenir de bonnes performances
• Cache Drupal + EnFty Cache + Memcache * • Compression JS/CSS + OpFmiser les images • Varnish • PHP 5.4+ (+25%) + APC • Solr / ElasFcSearch
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
Un projet livré n’est pas un projet terminé !
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
• Site en ligne • Planning honoré
• Adhésion générale
• Trafic
UFlisateurs
• 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