• Aucun résultat trouvé

Introduction aux méthodes agiles

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction aux méthodes agiles"

Copied!
55
0
0

Texte intégral

(1)

Introduction aux méthodes agiles

V. Deslandres © IUT Univ. LYON1 Licence pro DEVOPS

Librement adapté du support de Guillaume Collic, Univ. de CAEN 1

(2)

Objectifs du cours

Et vous, quelle expérience avez-vous de l’agile ?

Prendre connaissance des principes de l’agilité

Découvrir les méthodes agiles

o Scrum, Kanban et XP

o Point de vue Développeurs (ici) et peu Gestion de Projet

o Les mettre en œuvre sur des ateliers

Comprendre leurs limites

Positionner la modélisation dans le développement agile

(3)

Plan de ce cours

• Introduction : c’est quoi être agile ?

• Approches déterministes

Les méthodes « classiques »

Exercice : planifier un trajet

• Approches empiriques

Les méthodes agiles

Un atelier

• Debrief / Questions

3

(4)

ÊTRE AGILE ?

Préambule

(5)

C’est quoi être Agile ?

• Énormément de réponses possibles, suivant l’angle et le prisme choisi, la plupart complémentaires

Agilité

Faire les choses efficacement

(productivité)

Bien être et valeurs

(prévention de risques psycho-sociaux au travail)

Faire les bonnes choses

(satisfaction client)

5

(6)

Pour beaucoup d’agilistes

• Évoluer vers une organisation

plus organique (vivante, centrée sur l’homme)

en petites structures auto- organisées

apprenantes

respectueuses de leur

écosystème (gagnant-gagnant)

6

Conséquences

De meilleurs résultats (prouvé) Un regain de sens dans le travail

(souhait générationnel)

Source : VersionOne, 2017

(7)

Et ça demande…

• Une ouverture d’esprit

• Du courage

Remettre en question nos modes de pensées Réapprendre l’entreprise

Considérer toutes les parties prenantes

• Un lâcher prise

Management

Mieux atteindre le « quoi » en contrôlant moins le « comment »

Des acteurs plus responsables

Sachant que « grands pouvoirs » implique « grandes responsabilités »

Reconnaissance du métier de codeur

7

(8)

Mais avant d’en arriver là…

8

• (avant les considérations managériales…)

• On commence par mettre un pied dans des choses plus terre-à-terre

Réduire les problèmes techniques

Intégration continue

Tests unitaires, TDD, …

Améliorer la visibilité et la priorisation (pilotage)

Management visuel

Incréments

Etc.

Pour ça : quel cadre ?

(9)

Intégration continue

Maintenir un dépôt unique de code source versionné

Automatiser les compilations

Rendre les compilations auto-testantes

Tout le monde commit tous les jours

Tout commit doit compiler le tronc (trunk) sur une machine d'intégration

Maintenir un cycle de compilation court

Tester dans un environnement de production cloné

Rendre disponible facilement le dernier exécutable

Tout le monde doit pouvoir voir les évolutions du code

Automatiser le déploiement

9

(10)

APPROCHES DÉTERMINISTES

La voie classique du développement logiciel

(11)

Historique

• Le « Génie Logiciel » est né lors de la réunion de l’OTAN (portée militaire surtout)

Garmisch, Allemagne, 1968-1969

Objectifs : optimiser, formaliser, planifier

• Simple à mettre en œuvre

• Utiliser des approches de Gestion Projet connues et enseignées partout

• « Contrat » avec le Client

Tout est prévu précisément à l’avance

Qui / Quoi / Quand

11

(12)

Modèle en cascade (Waterfall)

http://www.commentcamarche.net/contents/genie-logiciel/cycle-de-vie.php3 12

Critique : aspect séquentiel

(13)

Cycle en V

http://www.commentcamarche.net/contents/genie-logiciel/cycle-de-vie.php3

Phase de Recette Exigences

13

Comparer fonctions / exigences

Tests d’intégration

(14)

Effet « Tunnel »

• Coté client : X mois sans visibilité, « Nuit polaire »

• Importance des documents écrits

Servent de référence ultime pour

Le besoin

La solution

La validation

http://www.projectcartoon.com 14

spécifications

livraison

(15)

Marge de manœuvre : 4 axes

Périmètre

Fixe

15

Délais

Fixe

Coûts

Fixe

Qualité

?

(16)

Coût des anomalies

http://www.agitar.com/solutions/why_unit_testing.html

L’approche scientifique pour obtenir ces chiffres

n’est pas garantie

16

Défauts introduits

Défauts identifiés

Coût de réparation du défaut

(17)

ON TESTE ?

Plans, carte, planification

(18)

Exercice

• Planifier dans les détails un trajet « Lyon - Briançon" en voiture en évitant l’autoroute

Départ : samedi 8 février 2020 à 10h

• Pour cet itinéraire, spécifier :

Chaque ville et village traversé, L'heure de passage associée,

Les rues à emprunter dans les agglomérations, Le carburant qui sera consommé,

Le nb de kilomètres parcourus entre chaque étape

9/02 : début vacances Hiver

18

10’

GO !

(19)

Après 5’…

• Observons les résultats :

• Sur une échelle de 1 à 10, quelle valeur accordez-vous à ce que vous avez obtenu ? Est-ce proche de la réalité ?

Quels seraient les imprévus possibles ?

• Votre planification et vos spécifications vont être très vite obsolètes.

• Si je vous avais laissé poursuivre, combien de temps auriez-vous passé à réaliser ce travail… n’est-ce pas un peu inutile ?

Frustration de ne pas pouvoir appliquer le plan à la lettre, d’avoir fait un travail « pour rien »

19

(20)

Une autre idée sur la façon de procéder ?

20

! Quel était au fond l’objectif de la demande, dans cet exercice ?

Planifier et prédire au mieux le trajet,

contrôler l’imprévu

(21)

Une autre idée sur la façon de procéder ?

" Reconsidérer le besoin

Un objectif intéressant ne serait-il pas plutôt de planifier l’heure d’arrivée en ayant un trajet agréable ?

– En optimisant le trajet selon les critères variables (le plus court, sécurisé, agréable avec de beaux paysages et des aires de repos sympas, etc.)

21

(22)

Autre solution : approche empirique

Se fixer un 1er objectif à court terme : une grande ville par exemple

Se lancer sur la route sans tarder

Une fois ce 1er objectif atteint, on marque une courte pause et on adapte son itinéraire en fonction de la situation du moment

Bouchon, humeurs du moment, etc.

Ainsi de suite jusqu'à atteindre la destination finale

A l’arrivée : satisfaction d’avoir maîtrisé son trajet, et non pas d’avoir suivi un plan figé

22

(23)

Parallèle avec le dév. logiciel

Le client élabore sa vision du produit à réaliser et liste les fonctionnalités ou exigences de ce dernier, avec ses

priorités

Il explique cette liste à l'équipe de développement, et communique directement avec elle (plutôt que par

documents)

L’équipe avance dans la réalisation, montre des briques de réalisation au client

Le client ajuste ses demandes

L’équipe ajuste son travail en fonction de ses compétences et

des imprévus 23

(24)

Atelier Naufrage

24

(25)

Autre exercice

• Vous êtes sur un bateau dans l’océan Pacifique, à 1800 km de toute côte. Le feu est déclaré à bord. D’ici 1h, le bateau aura coulé. Il y a des barques de sauvetage à rames en nbre juste suffisant pour sauver tout le monde.

• Peut-être pourrait-on emmener quelques objets à bord ? L’équipage rapporte une liste d’objets susceptibles d’être emporté, il y en a 15.

• Il faut en choisir 5. Comment procédez-vous ?

25

(26)

15 objets possibles

1. Sextant + tables de calcul 2. Miroir pour se raser

3. Bidon de 15l. d’eau 4. Moustiquaire

5. Paquet de ration de survie de l’armée

6. Carte du Pacifique 7. Coussin flottant

8. Bidon 10l. mélange essence gazoil

9. Petite radio réceptrice 10. Produit anti-requin

11. 3 m2 de toile plastique 12. Bouteille rhum

13. 5 m. corde nylon

14. 2 boites tablettes choc.

15. Équipement de pêche

26

Si on ne devait emporter qu’un seul objet : le quel choisir ? Si on peut en prendre un 2e ? Etc.

(27)

LA SOLUTION ?

• Proposée par les spécialistes de la Marine

• Il faut identifier les objectifs poursuivis et les hiérarchiser en groupe

• 5 objectifs sont identifiés par la Marine :

Soutenir le moral des naufragés Survivre

Se diriger vers la côte Se faire repérer

Repêcher et soigner ceux qui tombent à l’eau

• Comment les hiérarchiser ? 27

(28)

LA SOLUTION

• Proposée par les spécialistes de la Marine

• Il faut identifier les objectifs poursuivis et les hiérarchiser en groupe

• 5 objectifs hiérarchisés sont identifiés par la Marine :

Se faire repérer Survivre

Repêcher et soigner ceux qui tombent à l’eau Soutenir le moral des naufragés

Se diriger vers la côte

28

(29)

Liste des priorités

29

1. Miroir pour se raser

2. Bidon 10l. mélange essence gazoil

3. Bidon de 15l. d’eau

4. Paquet de ration de survie de l’armée (nourriture concentrée) 5. 2 boites tablettes choc.

6. 3 m2 de toile plastique (recueillir eau pluie : suppose qu’il pleuve)

7. Équipement de pêche (suppose qu’il y ait du poisson)

8. 5 m. corde nylon (lancer à celui qui est tombé)

9. Coussin flottant (bouée sauvetage) 10. Produit anti-requin

11. Bouteille rhum (soigner blessures)

12. Petite radio réceptrice

13. Moustiquaire (protection insectes) 14. Carte du Pacifique

15. Sextant + tables de calcul (se diriger)

Se faire repérer

Survivre

Repêcher et soigner ceux qui tombent à l’eau

Soutenir le moral des naufragés

Se diriger vers la côte

(30)

Parallèle avec le développement Logiciel

Revenir aux objectifs fondamentaux du Client

Les hiérarchiser

Démarrer le développement sur les objectifs prioritaires

Problème : le Client ne sait pas toujours quels sont les objectifs prioritaires

Un travail est nécessaire, mené avec l’analyste

L’analyste n’est pas du domaine et ne peut pas identifier les besoins prioritaires

Même si pour nous, le bon sens voudrait que…

La preuve avec cet exercice : seule la connaissance Métier compte

30

(31)

MÉTHODES AGILES

Approches empiriques

http://agileconsulting.blogspot.com

(32)

Développement de produit

• 2 types de projet

En masse, répétitif, prédictible

Voiture, meuble, lampe, etc.

Nouveau, inconnu, non prédictible

artisanat, art, logiciel

• Nouveau Produit

Apprentissage par l’expérimentation Amélioration continue

Tolérant au changement

Repousser les décisions irréversibles

Garder un maximum d’options

32

(33)

Génie Logiciel : le constat

• Années 2000, un postulat : les méthodes de GL ne sont pas satisfaisantes

• Les spécifications ne sont pas complètement comprises tant que le projet n’est pas commencé

• Les utilisateurs ne savent ce qu’ils veulent qu’après avoir vu une première version de l’application

• Agile : origine en 2001, réunion Snowbird, 17 consultants au ski (UTAH) discutent de la production de logiciels

! Rédigent le « Manifeste Agile »

33

(34)

Manifeste Agile : les 4 valeurs de l’Agilité

“Nous reconnaissons que les éléments à droite ont de la valeur, mais nous privilégions ceux à gauche”

Processus et outils

Individus et interactions

Documentation exhaustive

Un produit opérationnel

Négociation du contrat

Collaboration avec le client

Suivi d'un plan

Adaptation au changement

34

(35)

Caractéristiques des méthodes agiles

• Méthodes réactives et incrémentales d’organisation du travail

• Focalisées sur le produit et la satisfaction client

• Construit en adéquation avec les capacités et limites humaines

35

(36)

Marge de manœuvre : 4 axes

• Qualité : fixe

La dette technique doit être évitée

DEF dette technique : tout ce qu’on repousse à plus tard

« Pas de souci, j’utiliserai ce composant que je connais bien »,

« Ça sera vite fait, promis »

« Je ferai ça après quand j’aurai le temps »

• Priorisation suivant les 3 autres axes :

Périmètre

Délai Coût

36

(37)

Comparatif

37

(38)

L’agilité en 2 slides (1/2)

À 50% du temps total, le client ne voit statistiquement que 10% de son application

Expression des besoins Conception

Développement

Tests, recette & debugging

En développement classique

38

(39)

L’agilité en 2 slides (2/2)

Expression de besoins Conception

Développement

Tests, recette & debuggage

À chaque itération, le produit est 100% fonctionnel

i1 i2 i3 i4 i5 in

Backlog, user stories Simplicité, refactoring

TDD, acceptance Demos, reviews

En développement agile

39

À la moitié, le client voit 80%

des fonctionnalités principales de son application

(40)

Les facteurs de succès

• Le client / l’utilisateur est impliqué quotidiennement (ou son représentant, le Product Owner)

• Le management intermédiaire soutient l’équipe

• L’équipe est auto-organisée

• Les pratiques sont adaptées au mode incrémental :

– Automatisation des tests : rejoués souvent – Code compréhensible car souvent modifié – Pas de code d’auteur, code collectif

• Soutien de la hiérarchie

40

(41)

Taux de réussite

11%

29%

60%

Approche Traditionnelle

Succès Echec Mitigé

39%

9%

52%

Approche Agile

Succès Echec Mitigé Source : the Standish Group, « Chaos Report 2015 »

3x plus de projets réussis 3x moins d’échecs

41

Je retiens

(42)

Bénéfices des méthodes agiles

42

Source : VersionOne, rapport annuel 2017 (1492 réponses, 55% USA, 27% EU)

(43)

Satisfaction dans le travail

• 15 mois après l’adoption de Scrum, 86% des employés de

Salesforce.com avaient de bons ou de très bons moments au travail

(seulement 40% le disaient avant d’adopter Scrum)

92% recommanderaient l’agilité à d’autres

• Une raison possible :

2/3 d’heures sup. en moins selon une étude de recherche de l’Université de Calgary

Source : Mike Cohn, 2009, www.mountaingoatsoftware.com Traduction, Adaptation : Claude Aubry

43

(44)

Agile vs. classique

Les profils des projets

44

(45)

Répartition des méthodes (sondage 2017)

http://www.versionone.com/state_of_agile_development_survey 45

(46)

Une maturité acquise

• Les outils associés sont maintenant disponibles sur le marché

y compris en Open Source

• Les formations, certifications, conférences, livres, blogs se sont multipliés

• Prise de position en faveur de l'approche Agile de la part des organismes faisant "autorité" en matière de gestion de projet informatique

En 2012, le Gartner invite à abandonner le Cycle en V

46

(47)

Attention : 3 idées reçues !

• Mauvaise interprétation du 4ème principe (« Préférer l’adaptation au changement plutôt que suivre un plan »)

C’est une erreur de conclure que « Sur un projet agile, il n'y a pas de

spécifications, pas de plan, ni de processus, pas d'outil et même pas de contrat »

• « Sur un projet agile, le client change d'avis tout le temps et on tourne en rond à faire et défaire des choses… »

Personne n’a intérêt à procéder de cette manière

• « Un projet Agile ne fonctionne que sur des projets de développement web, qu'avec une dizaine de personnes maximum, qu'avec des super dév »

Scale Agile : coordonner n équipes de 7 personnes, géographiquement éloignées

Concerne tout type de projet 47

(48)

UML en Agile ?

Conception Agile… pour coder plus vite et mieux

(49)

Martin Fowler : ‘UML as a Sketch’

• 2 utilisations d’UML

avant d’écrire le code pour accélérer le processus (forward-engineering) Reverse-engineering à partir du code existant pour aider à le comprendre

• Utiliser ces 2 moyens sur des points techniques très limités

Pas sur tout le code, ni pour la vision globale du projet

Pour préciser un aspect, une façon de concevoir un point précis

Moins de 10’, travail collaboratif, tableau blanc : informel et dynamique (pas d’AGL, no CASE tool)

http://martinfowler.com/bliki/UmlAsSketch.html

49

(50)

• Utiliser UML pour

Expliquer aux autres membres de l’équipe comment vous voyez qu’une User Story fonctionne

Ne pas passer trop de temps sur les diagrammes

On n’a pas besoin de trop de détails

• Utiliser le moyen qui parle le plus pour discuter et choisir sa conception

Diagramme UML en dessin libre sur tableau blanc

– Ce qui compte en Agile, c’est le code

UML & Scrum

50

(51)

• Les diagrammes UML les plus utiles :

Diagramme des Cas d’Utilisation

Pour se mettre d’accord sur les points d’entrée

Sur types d’utilisateur à considérer (rôles)

Parfois Diagramme d’activités

Pour fixer le déroulement d’un Cas d’Utilisation (vision Utilisateur)

Parfois Diagramme de Séquences

Mettre au clair un aspect technique (objets)

Diagramme de Classes

Pour la BD, vérifier qu’on a pensé à tout

Rétro engineering : comprendre un code, avoir une vue d’ensemble

UML & Scrum

51

(52)

Je retiens…

La faiblesse des méthodes classiques est:

leur manque de réactivité et

leur mauvaise gestion de l’incertitude

Les méthodes agiles ont été développées afin de répondre à ces problématiques. En effet, elles permettent de

travailler en cycles courts

d’intégrer des feedbacks réguliers des utilisateurs

Cela permet d’adapter les priorités des fonctionnalités à développer entre chaque itération.

Grâce aux feedbacks, l’équipe peut lever les incertitudes rencontrées et modifier rapidement ce qui ne convient pas

https://www.captainspoc.com/le-coin-des-experts/agilite-benefices-effet-mode/ 52

(53)

Ateliers : Je retiens…

• Atelier Carte :

– Les sur-spécifications ne donnent généralement pas de bons logiciels;

revenir à l’objectif recherché.

• Atelier Naufrage :

Identifier les objectifs et les prioriser permet de mieux cibler le besoin.

53

(54)

54

(55)

Atelier Agile

55

Le Jeu des prénoms

Références

Documents relatifs

Moreover, given that the SPO platform, and ecosystem reverse engineering in general, is just an entry point and a context for individual project architecture recovery, we also

hThread =Handle of thread….Here in this Case it Contains the Handle of main thread of Dropped File Process(I will call it Dropped Process ).. Check Context Structre in

This driver is very small and simple, but it has most of the important con- structs typically found in software drivers: dispatch routines, device I/O control from user mode,

Finally, this book is probably going to be helpful for more advanced readers who are already experienced with low-level software and reverse engineering who would like to learn

émulation symbolique de tout le code par bloc de X instructions tests des conditions désirées sur l’état obtenu pour chaque bloc.. Exécution symbolique : trouver des gadgets pour

Définition Le langage intermédiaire de Miasm tente de répondre à plu- sieurs problématiques : il a été conçu pour pouvoir être utilisé dans le désobscurcissement, l’analyse

Source Code Assembly Object File Binary File.. Compile

PR8-infected MDCK cells with these control peptides showed no significant effect on viral replication, indicating that peptide amyloid formation is necessary but in itself not