Pratiques de développement pour équipes Agile

32
David Beaumier

description

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

Transcript of Pratiques de développement pour équipes Agile

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