session mons 22 mars

69
AgileCampusTour

Upload: agilecampustour-2011

Post on 29-Jul-2015

437 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Session mons 22 mars

AgileCampusTour

Page 2: Session mons 22 mars

@mlainez

@mlainez

@cimm

@jbpros

[email protected]

[email protected]

[email protected]

Julien Biezemans

Simon Schoeters

Marc Lainez

La fine équipe

Si vous voulez tweeter utilisez le hashtag #actbe

Page 3: Session mons 22 mars

Souvenez-vous de Bob

Page 4: Session mons 22 mars

Le projet sur lequel il travaille

Page 5: Session mons 22 mars

Week DayStories

TODO

WIP

(4)

DONE

~~~~~

Na

Mi

Blu

Et sa vision du déroulement d’un tel projet

Page 6: Session mons 22 mars

Week DayStories

TODO

WIP

(4)

DONE

~~~~~

Na

Mi

Blu

Et sa vision du déroulement d’un tel projet

Page 7: Session mons 22 mars

Comment se passe le développement au jour le jour ?

Page 8: Session mons 22 mars

Chaque matin, Bob et son équipe se réunissent en daily standup

Stories TODO WIP(4) DONE

~~~~~3

~~~~~5

~~~~~ 2

~~~~~3

~~~~~5

Name tags

Misc.

Blue Team

Page 9: Session mons 22 mars

“Non, on ne s’assied pas durant un standup”

Page 10: Session mons 22 mars

Bob insiste sur la qualité du code produit

Page 11: Session mons 22 mars

Pourquoi ?

New Guy

Page 12: Session mons 22 mars

Bob veut simplement éviter d’accumuler de la ‘dette technique’

Page 13: Session mons 22 mars

Quand on code au plus vite et de manière non optimale, on contracte une dette technique que l'on rembourse tout au long de la vie du projet sous forme de temps de développement de plus en plus long et de bugs de plus en plus réguliers

Wikipedia

Page 14: Session mons 22 mars

C’est un peu comme un prêt pour une maison...

Page 15: Session mons 22 mars

Comment apparaît-elle ?

Page 16: Session mons 22 mars

Comment la rembourser ?

Page 17: Session mons 22 mars

Comment la rembourser ?En “refactorant” le code !

Page 18: Session mons 22 mars

Mais pas n’importe comment !

Page 19: Session mons 22 mars

Bob insiste aussi sur la pratique du pair programming

Page 20: Session mons 22 mars

Quelle que soit la formule

Page 21: Session mons 22 mars

1 clavier 1 souris

Page 22: Session mons 22 mars

2 claviers 2 souris

Page 23: Session mons 22 mars
Page 24: Session mons 22 mars

2 claviers 2 souris 2 écrans (mirroring)

Page 25: Session mons 22 mars

Bob insiste également sur l’importance des tests

Page 26: Session mons 22 mars

A différents niveaux de l’application

Page 27: Session mons 22 mars

Le test unitaire est un procédé permettant de s'assurer du fonctionnement correct d'une partie déterminée d'un logiciel ou d'une portion d'un programme.

Wikipedia

Page 28: Session mons 22 mars

Les tests d'intégration ont pour but de valider le fait que toutes les parties développées indépendamment fonctionnent bien ensemble de façon cohérente.

Wikipedia

Page 29: Session mons 22 mars

Mais au fond, à quoi ca peut bien servir, ces tests...

Page 30: Session mons 22 mars

Identifier une régression

Page 31: Session mons 22 mars

Vérifier des critères d’acceptance

Page 32: Session mons 22 mars

Protéger une application existante

Page 33: Session mons 22 mars

“Oui mais les tests ça prend du temps...”

Page 34: Session mons 22 mars

C’est un investissement

Page 35: Session mons 22 mars

Et une source de documentation

Page 36: Session mons 22 mars

Et si on écrit ces tests avant le code, on développe différement, c’est du TDD

Page 37: Session mons 22 mars

Après avoir écrit un test, on l’exécute...

Page 38: Session mons 22 mars

On écrit le code minimal pour qu’il passe

Page 39: Session mons 22 mars

On “refactore” le code

Page 40: Session mons 22 mars

Si une régression apparaît on le voit tout de suite !

Page 41: Session mons 22 mars

Exemple : les “specs” de Carcassonne

Page 42: Session mons 22 mars

On peut aussi aller plus loin et faire intervenir la valeur métier du client

Page 43: Session mons 22 mars

“Lorsque je suis sur le menu principal, je dois voir l’image du jeu”

“Lorsque je remplis le champ et que j’appuie sur le boutton, alors le nom doit apparaître dans la liste”

Les paires recoivent les sénarios

Page 44: Session mons 22 mars

Et écrivent leurs tests dans un langage lisible par leur client

Page 45: Session mons 22 mars

Ils font du BDD

Page 46: Session mons 22 mars

Avec Cucumber ou JBehave

Page 47: Session mons 22 mars

Exemple : un “feature” de carcassonne

Page 48: Session mons 22 mars

Dès que la fonctionnalité répond à la notion de “terminé”

Page 49: Session mons 22 mars

Elle est envoyée au “système de versioning”

Page 50: Session mons 22 mars

Pourquoi ?

Conflicts

Conflicts

Back to last commit please !

I did

this

Page 51: Session mons 22 mars
Page 52: Session mons 22 mars

La fonctionnalité envoyée, le serveur d’intégration continue prend le relais

Page 53: Session mons 22 mars

Il va exécuter la suite de tests

Page 54: Session mons 22 mars

Vérifier qu’on a pas de régression

Page 55: Session mons 22 mars

Si tout passe, on déploie en “staging”

Page 56: Session mons 22 mars

Afin que le client puisse tester

Page 57: Session mons 22 mars

Si c’est accepté, on peut déployer en production

Page 58: Session mons 22 mars

Week DayStories

TODO

WIP

(4)

DONE

~~~~~

Na

Mi

Blu

Page 59: Session mons 22 mars

Ce n’est pas une recette miracle, et ça ne convient pas à tout le monde...

Page 60: Session mons 22 mars

Et comment on fait sur un projet existant ?

Page 61: Session mons 22 mars

Adapter le processus progressivement

Page 62: Session mons 22 mars

En organisant des rétrospectives

Page 63: Session mons 22 mars
Page 64: Session mons 22 mars

S’attaquer à la dette technique progressivement

Page 65: Session mons 22 mars

Grâce à des “smoke tests”

Page 66: Session mons 22 mars

Et la méthode mikado

Page 67: Session mons 22 mars

Un peu de lecture ?

Page 68: Session mons 22 mars

Encore une petite rétrospective ?

Page 69: Session mons 22 mars

http://agilecampustour.org@agilecampustour

Questions?