AGILE SCRUM Flashcards
Qu’est-ce qu’une méthode agile et pourquoi est-elle pertinente en développement web et mobile?
Une méthode agile est une approche itérative et collaborative de gestion de projet qui favorise la flexibilité, l’adaptabilité et la réactivité. Elle est particulièrement pertinente en développement web et mobile car:
* Ces environnements évoluent rapidement (technologies, besoins utilisateurs)
* Elle permet des livraisons fréquentes et fonctionnelles
* Elle facilite l’adaptation aux retours des utilisateurs
* Elle améliore la communication au sein de l’équipe et avec le client
* Elle réduit les risques en détectant les problèmes plus tôt dans le cycle de développement
Comparez le cycle en V avec les méthodes agiles. Quand privilégier l’une ou l’autre approche?
Cycle en V:
* Approche séquentielle et linéaire
* Documentation exhaustive
* Validation formelle à chaque étape
* Rigidité face aux changements
Méthodes agiles:
* Approche itérative et incrémentale
* Documentation minimale mais suffisante
* Adaptabilité aux changements
* Livraisons fréquentes
Quand privilégier:
* Cycle en V: projets à exigences stables et bien définies, domaines critiques (médical, aéronautique), structures multi-sites
* Méthodes agiles: projets avec exigences changeantes, besoin de retours utilisateurs fréquents, délais courts, équipes co-localisées
Expliquez le triangle des contraintes en gestion de projet et comment les méthodes agiles l’abordent.
Le triangle des contraintes comprend trois dimensions interdépendantes:
1. Ressources (budget, personnel)
2. Délais (temps disponible)
3. Complexité/Périmètre (fonctionnalités, qualité)
Un projet ne peut pas optimiser simultanément ces trois dimensions.
Dans les méthodes agiles:
* Les ressources et les délais sont généralement fixés (sprints de durée déterminée)
* La variable d’ajustement est le périmètre fonctionnel (ce qu’on livre)
* La priorisation constante des fonctionnalités permet de s’assurer que les éléments les plus importants sont livrés en premier
* Cette approche est différente des méthodes traditionnelles où le périmètre est souvent fixé dès le départ, ce qui peut entraîner des dépassements de coûts ou de délais
Décrivez les différents rôles dans Scrum et leurs responsabilités.
Scrum définit trois rôles principaux:
1. Product Owner:
o Créé et priorise le Product Backlog
o Représente les intérêts du client et des utilisateurs
o Décide quelles fonctionnalités développer et dans quel ordre
o Accepte ou refuse les user stories livrées
2. Scrum Master:
o Garant du respect des principes et valeurs Scrum
o Facilite la communication au sein de l’équipe
o Élimine les obstacles au bon déroulement du sprint
o Détermine la vélocité et facilite les estimations
o Contrairement à un chef de projet classique, n’assigne pas les tâches
3. Team Members:
o Équipe auto-organisée qui développe le produit
o Estime les user stories et les divise en tâches techniques
o Sélectionne les éléments du sprint backlog
o Réalise les tests unitaires et produit le livrable
Expliquez le déroulement d’un sprint Scrum et les différentes cérémonies associées.
Un sprint est une itération de durée fixe (généralement 2-4 semaines) qui comprend:
1. Sprint Planning: Au début du sprint
o Définition des objectifs du sprint
o Sélection des user stories du product backlog
o Estimation et décomposition en tâches techniques
o Création du sprint backlog
2. Daily Meeting: Quotidiennement (15 min max)
o Chaque membre rapporte: ce qu’il a fait la veille, ce qu’il prévoit de faire aujourd’hui, les obstacles éventuels
o Se fait debout pour rester concis
o Synchronisation de l’équipe, pas de résolution de problèmes
3. Sprint Review: À la fin du sprint
o Présentation de l’incrément fonctionnel au client
o Démonstration des fonctionnalités terminées
o Collecte des retours pour les prochains sprints
4. Rétrospective: Après la review
o Analyse du fonctionnement interne de l’équipe
o Identification des points forts/faibles/risques
o Décisions d’améliorations pour le prochain sprint
5. Backlog Grooming: En continu ou entre les sprints
o Raffinement et mise à jour du product backlog
o Ajout de détails aux user stories prioritaires
o Repriorisation si nécessaire
Qu’est-ce qu’une user story et comment est-elle utilisée dans Scrum?
Une user story est une description simple d’une fonctionnalité du point de vue de l’utilisateur final. Elle suit généralement le format:
* “En tant que [type d’utilisateur], je veux [fonctionnalité] afin de [bénéfice/valeur]”
Dans Scrum, les user stories:
* Constituent le product backlog
* Sont priorisées par le Product Owner selon leur valeur business
* Sont estimées par l’équipe en points de complexité (pas en temps)
* Sont sélectionnées pour chaque sprint selon leur priorité et la capacité de l’équipe
* Doivent avoir une granularité adaptée: plus détaillées pour les prioritaires, plus grossières pour les lointaines
* Incluent des critères d’acceptation qui définissent quand la story est “terminée”
Comment estimez-vous la complexité des tâches dans un projet agile et pourquoi ne pas estimer
Dans les projets agiles, nous estimons la complexité relative des tâches plutôt que leur durée absolue, souvent en utilisant:
* Planning Poker: Technique d’estimation collaborative utilisant des cartes avec la suite de Fibonacci (1, 2, 3, 5, 8, 13, etc.)
* T-shirt sizing: Estimation par taille (XS, S, M, L, XL)
Nous préférons cette approche à l’estimation en heures car:
* Les estimations en temps sont souvent inexactes et biaisées
* La complexité est plus objective que le temps (qui dépend de l’expertise individuelle)
* L’estimation relative permet de comparer les tâches entre elles
* Elle évite le syndrome de l’étudiant (travail qui s’étend pour remplir le temps alloué)
* L’expérience montre que la vélocité (points complétés par sprint) se stabilise avec le temps, permettant une meilleure prévisibilité
Comment gérez-vous les changements de priorités ou de besoins du client dans un projet agile?
Dans un projet agile, les changements sont attendus et gérés de façon structurée:
1. Tous les changements passent par le Product Owner qui évalue leur valeur business
2. Les nouvelles demandes sont intégrées au Product Backlog et priorisées
3. Le Product Backlog est régulièrement “toiletté” (grooming) pour maintenir sa pertinence
4. Les changements n’impactent pas le sprint en cours (sauf cas exceptionnels)
5. À chaque Sprint Planning, l’équipe prend les éléments les plus prioritaires du backlog
6. Pour les changements urgents, on peut:
o Attendre la fin du sprint actuel (solution préférée)
o Négocier le remplacement d’items de valeur équivalente dans le sprint
o En dernier recours, annuler le sprint et en démarrer un nouveau
Cette flexibilité est un avantage majeur par rapport aux méthodes traditionnelles où les changements sont souvent coûteux et complexes à intégrer.
Expliquez comment les méthodes agiles peuvent contribuer à la sécurisation d’une application web ou mobile.
Les méthodes agiles favorisent la sécurisation des applications web/mobile de plusieurs façons:
1. Intégration continue de la sécurité:
o La sécurité est considérée dès le début et à chaque sprint, pas seulement à la fin
o Définition de “Done” incluant les critères de sécurité
o Tests de sécurité automatisés à chaque itération
2.Détection précoce des failles:
o Livraisons fréquentes permettant de tester la sécurité en conditions réelles
o Feedback rapide sur les problèmes de sécurité
o Possibilité de corriger les vulnérabilités avant qu’elles n’affectent trop de code
3. Adaptabilité aux nouvelles menaces:
o Veille technologique sur les vulnérabilités (mentionnée dans le référentiel DWWM)
o Possibilité d’adapter rapidement les priorités pour corriger une faille découverte
o Rétrospectives permettant d’améliorer continuellement les pratiques de sécurité
4. Documentation ciblée:
o Bien que minimale, la documentation agile peut se concentrer sur les aspects critiques comme la sécurité
o Transfert de connaissances continu au sein de l’équipe
Dans le cadre d’un projet DWWM utilisant Scrum, comment organiseriez-vous la documentation technique du déploiement d’une application?
Pour documenter le déploiement d’une application dans un projet DWWM utilisant Scrum:
1. Intégration dans les sprints:
o Inclure la documentation comme une tâche dans les user stories
o La documention fait partie de la définition de “Done”
2. Contenu de la documentation:
o Procédure de déploiement étape par étape
o Scripts de déploiement documentés (mentionnés dans le référentiel DWWM)
o Configuration de l’environnement requise
o Gestion des dépendances et versions
o Procédures de sauvegarde et restauration
o Tests post-déploiement
o Procédures en cas d’incident
3. Format et mise à jour:
o Documentation vivante, mise à jour à chaque sprint si nécessaire
o Format simple et accessible (ex: wiki, markdown)
o Versionnée dans le même système que le code (git)
o Tests réguliers de la procédure pour vérifier son exactitude
4. Dans le cadre DevOps:
o Documentation de l’intégration continue/déploiement continu (CI/CD)
o Description des pipelines d’automatisation
o Journalisation et monitoring
Comment organiseriez-vous un projet de développement web en équipe en utilisant les méthodes agiles?
Pour organiser un projet de développement web en équipe avec les méthodes agiles:
1. Initialisation du projet:
o Constituer l’équipe avec des profils complémentaires
o Définir une vision produit claire
o Mettre en place l’environnement technique (dépôt Git, outils CI/CD, etc.)
o Choisir les outils de suivi (Trello, Jira, etc.)
o Établir les conventions de code et la définition de “Done”
2. Mise en place de Scrum:
o Identifier les rôles: Product Owner, Scrum Master, équipe de développement
o Définir la durée du sprint (2-3 semaines généralement)
o Planifier les cérémonies (planning, daily, review, rétro)
o Créer un premier backlog de produit avec le client
3. Préparation technique:
o Mettre en place l’architecture globale
o Définir les standards techniques (frameworks, outils)
o Configurer les environnements (dev, test, production)
o Mettre en place les tests automatisés
4. Organisation du travail:
o Utiliser un tableau Kanban pour visualiser le flux de travail
o Mettre en place des revues de code systématiques
o Encourager la programmation en binôme pour les tâches complexes
o Automatiser au maximum (tests, déploiement)
5. Communication et documentation:
o Maintenir une documentation technique légère mais suffisante
o Favoriser la communication directe en équipe
o Impliquer régulièrement le client dans les démonstrations
o Documenter les décisions importantes
Comment évalueriez-vous l’efficacité de votre approche agile dans un projet de développement web ou mobile?
Pour évaluer l’efficacité de l’approche agile dans un projet web/mobile, je utiliserais plusieurs métriques:
1. Métriques produit:
o Satisfaction client/utilisateur (enquêtes, retours)
o Qualité (nombre de bugs en production)
o Performance technique (temps de chargement, etc.)
oSécurité (nombre de vulnérabilités détectées)
2. Métriques processus:
o Vélocité de l’équipe (stabilisation au fil des sprints)
o Prédictibilité (écart entre estimations et réalité)
o Temps de cycle (durée entre l’idée et la mise en production)
o Fréquence des livraisons
o Taux de fonctionnalités terminées par sprint
3. Métriques équipe:
o Satisfaction et moral de l’équipe
o Collaboration et communication
o Autonomie décisionnelle
o Amélioration continue (actions issues des rétrospectives)
4. Valeur business:
o ROI du projet
o Délai de mise sur le marché
o Adaptabilité aux changements (coût et délai)