32
David Beaumier

Pratiques de développement pour équipes Agile

Embed Size (px)

DESCRIPTION

Présentation de David Beaumier d'Élapse Technologies lors de l'Agile Tour 2009 Québec.

Citation preview

Page 1: Pratiques de développement pour équipes Agile

David Beaumier

Page 2: Pratiques de développement pour équipes Agile

• Pourquoi parler de pratiques

• Les pratiques

• Cas vécu: résultats

• Répondre à vos questions

Page 3: Pratiques de développement pour équipes Agile

• Dans le domaine des TI depuis 1994

• Pratique le développement Agile depuis 2003

• Conseiller chez Elapse Technologies

• MCAD + Certified ScrumMaster

• Accompagne les équipes dans la mise en place des bonnes pratiques de développement durant les projets

Page 4: Pratiques de développement pour équipes Agile
Page 5: Pratiques de développement pour équipes Agile

• L’état actuel de notre industrie• Malheureusement encore « artisanal »• Niveau de maturité inégal

• Qualité logicielle encore déficiente• Selon le Standish Group:

• Ratio de 3:1 des bogues logiciels vs matériel• Cause de 55% des pannes de systèmes• 300 milliards de pertes annuellement

• Échecs de projets Agile• Scrum en particulier

Page 6: Pratiques de développement pour équipes Agile
Page 7: Pratiques de développement pour équipes Agile

• Avoir des normes et conventions communes

• Pourquoi c’est important• Assurer une uniformité dans le code

• Permettre à tous de le lire et le comprendre

• Faciliter l’arrivée de nouvelles personnes

• Comment s’y prendre• Choisir et respecter une convention

• S’assurer du respect de cette convention

Page 8: Pratiques de développement pour équipes Agile

« Paul est absent, on devra attendre son retour pour finir le correctif »

• Permettre à tous de modifier le code• Répartir la connaissances dans toute l’équipe• Moyens

• Effectuer une rotation des les assignations• Revue de code et discussions• Travailler en équipe à la résolution des problèmes

Page 9: Pratiques de développement pour équipes Agile

• 2 personnes 1 ordi (1 clavier, 1 souris)• Alternance entre rôle stratégique et tactique• Pourquoi faire?

• 2 têtes valent mieux qu’une: conception améliorée• Revue instantanée de tout le code écrit

• Ça demeure un pratique controversée• Payer deux personnes pour le même travail?

• “Ce qui est complexe en programmation ce n’est pas de taper le code”

• Changement des habitudes de travail

Page 10: Pratiques de développement pour équipes Agile

• Suggestion: appliquer l’esprit et non la lettre

• Aussi souvent que possible• Lors de la conception, de refactorisation

• Lorsque vous êtes bloqué -> immédiatement!

• Mais laissez-vous souffler un peu!

• Essentiel: franchise et respect

Page 11: Pratiques de développement pour équipes Agile

• État de la situation• Une bonne pratique de génie logiciel• Encore peu systématisé dans les équipes• Souvent escamoté

• Qu’est-ce qu’un test unitaire?• Tester une petite partie de code

indépendamment des autres• S’assurer de la conformité des résultats en toutes

circonstances

Page 12: Pratiques de développement pour équipes Agile

1. Valeurs positives -> vérifier résultat = largeur x longueur2. Valeurs de 0 -> résultat = 03. Valeurs négatives -> retourne erreur4. Combinaisons des conditions précédentes

Supposons la fonction (simple)CalculerAire(largeur, longueur) As Double

larg

eu

r

longueur

Combien de tests sont nécessaires?

Page 13: Pratiques de développement pour équipes Agile

• « Ça marche seulement pour les cas simples! »

• « C’est vrai… »

• Justement… On recherche des implémentations simples!!!

Solution = ensemble de simplicités

Page 14: Pratiques de développement pour équipes Agile

• TDD: « Test-Driven Development »• En français: Développement piloté par les tests

• TDD est un cadre de travail• Emphase sur la conception• Comprendre ce qu’on doit faire avant de coder• Valorise le travail de qualité

• Conception pilotée par les tests

Page 16: Pratiques de développement pour équipes Agile

• Meilleure conception• Couplage faible

• Cohésion élevée

• Documentation toujours à jour

• Patrimoine de cas d’essais important• Maintenance et évolution facilitées

• Filet de sureté essentiel pour l’équipe

• Réduit les anomalies de régression

Page 17: Pratiques de développement pour équipes Agile

• Qu’est-ce que l’intégration?• C’est le processus par lequel un ensemble de

modifications au code est mise en commun

• Pourquoi continuellement?• Vérifier l’impact de chaque modification au code

source

• S’assurer de ne pas produire de régression

• Feedback immédiat en cas de problème

• Facilité d’identifier ce qui cause le problème

Page 19: Pratiques de développement pour équipes Agile

La chose la plus simple qui marche!

• Objectifs• Une solution simple qui répond au besoin

• Code facile à comprendre et à maintenir

• Moyens• Éliminer le réflexe du BDUF

• Faire ce qui est nécessaire maintenant

• Réfléchir, consulter, discuter

C’est beaucoup plus difficile qu’il n’y paraît!

Page 20: Pratiques de développement pour équipes Agile

• Éviter les « tant qu’à y être » (YAGNI)

• S’en tenir aux choses simples (KISS)

• Éviter la duplication (DRY)

• Code doit être explicite et clair• Oublions les commentaires

• Le code lui-même doit être clair

Page 21: Pratiques de développement pour équipes Agile

• Vous appliquez toutes ces pratiques

• Que va-t-il arriver au code?

• Quelle sera la productivité de l’équipe?

• Constat: le code a besoin de soins

• Sinon: dette technique

Page 22: Pratiques de développement pour équipes Agile

Temps

Co

ût

de

dév

elo

pp

eme

nt

Hors contrôle

Mis

e a

u r

anca

rt

Du

rée

de

vie

pré

vue

Perte $$$Élevés

Bas

Page 23: Pratiques de développement pour équipes Agile

Gain de productivité

Page 24: Pratiques de développement pour équipes Agile

• Aussi appelé «Refactoring »

• Qu’est-ce que c’est?• Modifier la structure du code (conception) sans

altérer le fonctionnement du système

• Pourquoi?• Ne pas sacrifier l’excellence technique à

l’évolution

• Parfaire constamment le code

Page 25: Pratiques de développement pour équipes Agile

Recette1. Identifier le(s) changement(s) à réaliser

2. Faire une modification ciblée

3. Rouler les tests unitaires• Identifier et corriger les problèmes

4. Appliquer la modification, si elle fonctionne

5. Recommencer

En faire souvent pour devenir à l’aise

Page 26: Pratiques de développement pour équipes Agile

• Changement ≠ amelioration• Comment s’assurer que l’on s’en va à la

bonne place?• Mesurer, mais quoi?• Exemples

• Évaluer le respect des standards et conventions• Analyser la complexité du code• Résultats des essais (unitaires, acceptation)

• Intégrer au processus de build

Page 27: Pratiques de développement pour équipes Agile
Page 28: Pratiques de développement pour équipes Agile

Contexte de l’intervention• Difficulté à livrer de la valeur d’affaires

• Produit livrée de faible qualité

Situation• Code patrimonial hérité de projets antérieurs

• Effort d’architecture plus récent, mais sans modifier les pratiques

• Initiative de revoir les pratiques et mesurer l’impact

Page 29: Pratiques de développement pour équipes Agile
Page 30: Pratiques de développement pour équipes Agile

Concepts simples, mais rigueur requise!

Plan de match

• Identifiez vos leaders positifs (champions)

• Introduisez les pratiques successivement

• Allouez du temps à l’équipe pour apprendre

• Mesurez les impacts des changements

Défi: compétences en conception OO

N’hésitez pas à aller chercher de l’aide

Page 32: Pratiques de développement pour équipes Agile