Industrialisation de la chaîne de production : validation, intégration, tests



Documents pareils
Les méthodes Agiles Introduction. Intervenant : Tremeur Balbous tremeur@agilegardener.com 04/09/2008

Agilitéet qualité logicielle: une mutation enmarche

Scrum et l'agilité des équipes de développement

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

HISTOIRE D UNE DIGITAL FACTORY

L Intégration Continue & Agilité

Serena Software. Damien Terrien Solution Architect

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

Méthodes Agiles et gestion de projets

Les 10 pratiques pour adopter une démarche DevOps efficace

Scrum/XP adapté au BI/DW

répondre aux défis de l ingénierie logicielle déploiement et mise en œuvre opérationnelle : l'industrialisation au service de la compétitivité

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

LES tests d'acceptation

Topologie du web - Valentin Bourgoin - Méthodes agiles & SCRUM

Règles d engagement. Présentation Diapositives Bibliographie Questions Les vertus de la marche

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Séance 1 Méthodologies du génie logiciel

Comment optimiser les tests avec une démarche d automatisation simplifiée

Les méthodes Agile. Implication du client Développement itératif et incrémental

Stéphane DERACO, DSI CNRS l Argos Devops : de l hyperviseur aux conteneurs l 11/12/2014 DOCKER

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Gestion de projet Agile. STS IRIS Module «Gérer et organiser un projet informatique»

Développement itératif, évolutif et agile

Les Bonnes PRATIQUES DU TEST LOGICIEL

Développement d'un projet informatique

Intervenants. Thomas d'erceville Project Manager. Christian NGUYEN Practice Manager IT Quality

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés 2011/2012

Cloud computing Votre informatique à la demande

Estimer et mesurer la performance des projets agiles avec les points de fonction

Conduite de projets SI. Les méthodes «Agiles» N QUAL/1995/3660e ORESYS

Retour d expérience implémentation Scrum / XP

Pilot4IT Tableaux de Bord Agréger et consolider l ensemble de vos indicateurs dans un même portail.

Agile 360 Product Owner Scrum Master

25/12/2012

Qualité du logiciel: Méthodes de test

Les méthodes itératives. Hugues MEUNIER

L'agilité appliquée à nous-mêmes. Philippe Krief, PhD Development Manager IBM France Lab

Offre Référentiel d échange

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Java à Murex: un retour d'expérience. Jean-Pierre DACHER & Craig MORRISON

UM2 - Master 2 Année Sensibilisation aux Tests de Projets Informatique - Managed Testing -

DevOps en pratique. Philippe Bauquel,

Le Cloud: Mythe ou Réalité?

Usine de développement : étude comparative

Ingénierie des méthodes Agiles : Que cache l opposition entre déploiement et livraison en continu? Faut-il adopter DevOps 1?

Scrum Une méthode agile pour vos projets

Yannick Prié Département Informatique Faculté des Sciences et Technologies Université Claude Bernard Lyon

Les Portfolios et Moodle Petit inventaire

Développement spécifique d'un système d information

WEB15 IBM Software for Business Process Management. un offre complète et modulaire. Alain DARMON consultant avant-vente BPM

Service de réplication des données HP pour la gamme de disques Continuous Access P9000 XP

S10 - Automatisez la compilation et le déploiement de vos applications IBM i avec Arcad Pack for Rational

Le rôle du coach Agile et son apport pour le projet

Contact: Yossi Gal, Téléphone:

Jean-Pierre Vickoff

Enterprise Scrum Organisation des développements chez exo. Agile Tour Rennes 2010 / 10 / 07

FORMATION Offre de Formation - Packaging. Les bonnes pratiques du packaging avec Installshield et AdminStudio. Contact et inscriptions

Introduction Les processus traditionnels extreme Programming Conclusion. extreme Programming. vers plus d agilité. F. Miller francois.miller@inpg.

Guide d'installation rapide TFM-560X YO.13

Test et Validation du Logiciel

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Forge. Présentation ( )

Modèle de changement d organisation. Leanpizza.net présente. Petit Guide Rapide du jeu de cartes Modèle de Changement d Organisation

Conditions Particulières de Maintenance. Table des matières. Ref : CPM-1.2 du 08/06/2011

ORACLE TUNING PACK 11G

SHAREPOINT PORTAL SERVER 2013

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

Cours Gestion de projet

Editing and managing Systems engineering processes at Snecma

Atelier Progress Rollbase

Vers l urbanisation agile d un client mobile ios/android natif, économique, flexible et pérenne

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Architecture pragmatique pour la gestion du cycle de vie des applications (ALM)

Retour d expérience RATP. Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats.

Offre INES CRM + BI MyReport. Logiciels pour une meilleure performance commerciale

Yassine ZAKARIA SÉMINAIRE : MÉTHODES AGILES

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

ANGULAR JS AVEC GDE GOOGLE

RÉUSSIR L AUTOMATISATION DU PROCESSUS DE TEST FONCTIONNEL

Nom-Projet MODELE PLAN DE MANAGEMENT DE PROJET

XP : plus qu'agile. Extreme Programming v2 et Développement Responsable. Thierry Cros

Serveur de travail collaboratif Michaël Hoste -

Hands on Openstack : Introduction

La solution IBM Rational pour une ALM Agile

Concilier Agilité, Exigences et Continuous Delivery : Retour d expérience PagesJaunes

THE EVOLUTION OF CONTENT CONSUMPTION ON MOBILE AND TABLETS

GL Processus de développement Cycles de vie

Processus. Intégration et Tests Nat. Approuvé par : Patrick Atlan Fonction : Directeur Général V isa :

Le Product Owner Clé de voute d un projet agile réussi

Méthode Agile de 3 ème génération J-P Vickoff

Les Méthodes Agiles. Plan. Lecture. Objectifs du cours

Agile Maroc 24 Novembre Méthodes agiles. Thierry Cros. Agile Maroc 24 novembre 2010

Guide de Préparation. EXIN Agile Scrum. Foundation

Réussir ses Déploiements Applicatifs

Processus d Informatisation

Gestion de Projet Agile

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

Transcription:

Industrialisation de la chaîne de production : validation, intégration, tests De l'atelier de développement à l'usine logicielle Thomas Lallart - INRA-DSI ENVOL 2012 - Biarritz 21-25 janvier 2013 Document distribué sous licence CC by-nc : http://creativecommons.org/licenses/by-nc/3.0/

Industrialisation de la chaîne de production 1) Contexte 1) Le coût des bugs et de la non-qualité 2) Méthodes agiles 2) Usine logicielle 1) Gestion de versions 2) Gestion des dépendances 3) Build 4) Tests 5) Intégration continue 6) Inspection continue 7) Livraison continue 3) Démo 8) «Documentation continue» 4) Synthèse & retour d'expérience 2

Industrialisation de la chaîne de production «Livrer, c'est coûteux, donc je préfère livrer rarement mais beaucoup d'un coup» «Tester souvent, c'est chronophage, donc pour gagner du temps on testera plus tard quand tout sera fini» «Pour vérifier la qualité, on a planifié une revue de code à la fin du projet» 3

Industrialisation de la chaîne de production «Livrer, c'est coûteux, donc je préfère livrer rarement mais beaucoup d'un coup» «Tester souvent, c'est chronophage, donc pour gagner du temps on testera plus tard quand tout sera fini» «Pour vérifier la qualité, on a planifié une revue de code à la fin du projet» 4

Coût de résolution d'un bug Ref : http://yorktown.cbe.wwu.edu/sandvig/mis314/lectures/016_debugging.php 5

Fiabilité : le coût visible de la nonqualité Bug de l'assurance vieillesse : entre 1984 et 2009, 8m de salariés récupèrent un trimestre de trop sur leur pension. Coût (en perte brute) : 2,5 milliards. Cause : la gestion des arrondis. «Selon le Code de la Sécu, un chômeur ayant été indemnisé pendant 50 jours par l Unedic a droit à un trimestre de cotisations retraite auprès de la Cnav. Pour prétendre à un deuxième trimestre de cotisation, il lui faut au moins 100 jours d indemnisation. S il a été indemnisé 99 jours, il n a droit qu à un trimestre. C est clair : on arrondit la durée d indemnisation à la cinquantaine inférieure. Mais les informaticiens de l Unedic implémentent, eux, qu il faut arrondir à la cinquantaine supérieure.» Réf : http://www.impots-utiles.com/securite-sociale-un-bug-informatique-a-25-milliards-deuros/ 6

Fiabilité : le coût visible de la nonqualité Crash de Mars Climate Orbiter : le sonde spatiale se crashe sur Mars au lieu d'entrer en orbite. Elle n'aura pris qu'une seule photo - vraisemblablement l'une des plus chères du monde - avant de s'écraser. Coût (matériel) : 900m $ Cause : la différence de système métrique utilisé entre 2 modules dans l'expression d'une force de poussée - km et Newton (système métrique) pour l'un, miles et livres (système impérial) pour l'autre - a impliqué des erreurs de calcul dans la navigateur. Ref : http://www.nirgal.net/mco_end.html 7

Fiabilité : le coût visible de la nonqualité 1er lancement d'ariane 5, 1996 : la fusée dévie de sa trajectoire lors du décollage, puis explose en vol après 37s. Coût (matériel) : 370m $ Cause : «l'exception logiciel [...] s'est produite pendant une conversion de données de représentation flottante à 64 bits en valeurs entières à 16 bits. Le nombre en représentation flottante [...] avait une valeur qui était supérieure à ce que pouvait exprimer un nombre entier à 16 bits. Il en est résulté une erreur d'opérande. Les instructions de conversion de données (en code Ada) n'étaient pas protégées contre le déclenchement d'une erreur d'opérande bien que d'autres conversions de variables comparables présentes à la même place dans le code aient été protégées.» Ref : http://www.astrosurf.com/luxorion/astronautique-accident-ariane-v501.htm 8

Maintenabilité : le coût caché de la non-qualité Maintenabilité : capacité à corriger, capacité à évoluer ou plus généralement «tolérance aux changements» 60 à 80 % des développements sont réalisés après la 1ère mise en production En moyenne, la durée de vie d'un logiciel est de 4-8 ans Le coût des évolutions est de plus en plus élevé au fil du temps Le coût de la non-qualité ne se mesure donc pas uniquement sur la phase de réalisation ou les anomalies à la mise en production mais bien sur l'ensemble de la vie du logiciel 9

Evolution du nombre de lignes de code dans le temps 10

Evolution du coût marginal dans le temps 11

Agilité Forte augmentation des développements en mode itératif et incrémental organisés en «mode agile» Chaque développement est vu comme une évolution de la version précédente Livraisons plus rapprochées et plus fréquentes (notions de sprint et d'itération) Mise en avant de certaines pratiques : TDD, Refactoring, Intégration Continue, Livraison Continue, Sotfware Craftmanshift Attention continue portée à la conception et à la qualité La plus haute priorité est la satisfaction utilisateur 12

Objectifs Tester plus, livrer plus tôt, plus souvent et plus sereinement, réduire les anomalies, améliorer la qualité Cela passe par : Maîtriser les développements Maîtriser les tests Maîtriser les versions Maîtriser les livraisons Maîtriser la qualité par des pratiques et l'automatisation des pratiques 13

(Une) Définition L'usine logicielle gère la fabrication (au sens large) du produit ; l'organisation y est découpée comme une chaîne de production où les tâches répétitives seront automatisées comme le lancement routinier de la compilation, l'exécution des tests unitaires (et des autres types de tests), le déploiement. 14

Cible 15

Gestion des versions 16

Gestion des releases (par branche corrective) dev build tests livraison audit 17

Gestion des releases (par branche de fonctions) dev build tests livraison audit 18

Gestions de version (pratiques) Toujours ajouter un message de commit Toujours exécuter Update avant Commit S'assurer que le projet compile («builde») avant commit Exécuter des petits commit fréquemment (au moins une fois par jour) Intégrer les concepts de release (version figée / taguée) et de snapshots (version courante en cours de développement) 19

Gestion des dépendances 20

Industrialisation des développements : référentiel des dépendances et des artefacts dev build tests livraison audit Problématique : Comment gérer «l'application A v1.1 dépend de la librairie B v3.2 et la librairie C v2.6»? Comment gérer «l'application A v1.2 dépendra de la librairie B v3.4, la librairie C v2.7 et la librairie D v1.0 qui elle-même dépend de la librairie E v2.1»? Comment archiver l'ensemble des librairies utilisées/utilisables dans les applications? Solution : référentiel de librairies (artefacts) Centralisation sur plusieurs référentiels distants (repository) des archives des librairies Description des dépendances dans le projet 21

Exemple de graphe de dépendances 22

Pratiques Archiver les releases et les snapshots Utiliser au maximum les repositories publics Eviter d'intégrer manuellement des artefacts dans le repository 23

Automatisation du build 24

standardisation de la fabrication (build) dev build tests livraison audit Problématique : La fabrication d'un livrable peut être un processus complexe (compilation, assemblage, configuration, environnement local,...) La gestion manuelle de la fabrication pour chaque application et pour chaque environnement représente un coût en temps et un risque d'erreur très important... d'autant plus si chaque projet a une façon différente de fabriquer le produit logiciel. Solution : automatisation de la fabrication Gestion de tout le cycle de construction (dépendances, ressources, compilation, tests, packaging) Procédure identique et automatisable pour chaque projet indépendante de l'environnement local 25

Exemple : cycle de build Maven 26

Tests 27

Industrialisation des développements : tests dev Problématique : Tester le logiciel le plus tôt possible build tests livraison audit «Valider» que le code écrit répond bien à la fonctionnalité prévue Limiter les régressions Solution : écrire des tests automatisables Tests unitaires : teste une fonction de manière isolée Tests d'intégration : teste une fonction de manière intégrée avec tout ou parti de ses dépendances Tests de performance Tests IHM Test d'acceptation/acceptance/vérification 28

Typologie des tests Ref : http://agile2009.blogspot.fr/2009/08/agile-testing-quadrants.html 29

Typologie des tests Boite blanche Unitaires Intégration Boite noire Intégration / Système Performances (unitaires et en charge) Fonctionnels / acceptance IHM Robustesse (soak) Sécurité 30

Tests : pratiques Adapter les types de tests au contexte du projet Une correction d'anomalie doit être l'occasion de créer (au moins) un test ; il sert à prouver l'anomalie et permet d'améliorer la couverture des tests Test Driven Development Les tests dépendant de données doivent être écrits sur la base d'un jeu de données réduit mais stable et représentatif de la production Si on ne pilote pas par les tests, écrire essentiellement les tests qui sur les portions de code qui portent le plus de sens (ex. sur les API, sur la partie métier/gestion) Les tests sont soumis au même respect des règles de codage, d'écriture, de conception et de refactoring que le code principal. Veiller à ce que le coût de maintenance des tests n'excède pas le coût de maintenance du code principal 31

Intégration continue 32

Intégration continue dev build Problématique : Comment garantir que le projet «builde» toujours? Comment garantir que les tests «passent» toujours? Comment garantir que le projet s'installe toujours? tests livraison audit Solution : l'intégration continue Exécution de l'ensemble du processus de fabrication à chaque modification dans la base de code Retour immédiat au développeur sur les modifications qu'il a apportées Ouvre la possibilité de déclencher ou d'ordonnancer toute opération déjà automatisée 33

Intégration continue (pratiques) Maintain a Single Source Repository Automate the Build Make Your Build Self-Testing Everyone Commits To the Mainline Every Day Every Commit Should Build the Mainline on an Integration Machine Keep the Build Fast Test in a Clone of the Production Environment Make it Easy for Anyone to Get the Latest Executable Everyone can see what's happening Automate Deployment 34

Déploiement automatisé 35

Livraison continue dev build Problématique : La livraison d'un produit logiciel sur un environnement peut être complexe. Peut nécessiter une édition de fichiers de paramétrage tests livraison audit Peut être une source d'erreur (erreur de versions, d'environnements, de configuration) Solution : déploiement automatisé Déploiement du tronc de développement ou de n'importe quelle release Sécurise et simplifie les livraisons Facile à mettre en place sur des projets simples 36

Livraison continue (pratiques) Le script (ou l'outil) effectuant la livraison doit être capable d'installer «par dessus» la version précédente (parfois délicat s'il y a des mises à jour du schéma BD, de l'arborescence, de données initiales, de la configuration) Le script (ou l'outil) devrait prévoir le «rollback» de la version précédente en cas de problème 37

Inspection continue 38

Inspection continue dev Problématique : Mesurer la qualité du code développé. build tests livraison audit Analyser les risques associés à la manière dont le code est écrit Obtenir les métriques sur l'évolutivité, la cohérence et le respect des normes du code produit Solution : audit automatisé de code Fournit un rapport complet d'analyse statique du code Fournit des indicateurs sur la santé d'un développement (dette technique) Aide au reporting de la production informatique Aide au développeur pour la qualité de son code et la détection de bugs Aide au CP pour piloter la qualité 39

Documentation 40

«Documentation continue» dev Problématique : Comment avoir une documentation toujours à jour? build tests Solution : génération automatisé de la documentation Génération puis publication automatisée de la Javadoc, PHPDoc, Compléments de documentation par exemple par Doxygen livraison audit 41

Pipeline Exemples de pipeline «Commit» Build TU Build TI Deploy (intégration) Tests IHM Tests Perf Gen Docs Inspection Feedback aux développeurs «Deploy release» Build TU Build TI Deploy (préprod, prod) Vérification 42

Pipeline de déploiement continu 43

Indicateurs qualité Plusieurs indicateurs qualité «directs» : Duplications Couvertures des tests Commentaires Respect des règles de codage D'autres plus orientés conception Complexité cyclomatique LCOM4 Cycles Agrégation des métriques : Dette technique, SQI 44

Compléxité cyclomatique Ref : http://www.mccabe.com/ 45

LCOM4 46 Ref : http://www.aivosto.com/project/help/pm-oo-cohesion.html#lcom4

Dette technique Notion introduite par Ward Cunningham Comparable à un emprunt dont on paie les intérêts tant qu'elle n'est pas remboursée «Qui paye ses dettes s'enrichit!» 47

Démo Intégration Continue : Modification de code Tests (avec puis sans erreur) Commit deploy Rapport de tests TU Rapport de tests TI Rapport de tests TP Sonar Voir les rapports bruts Voir les tendances Zoom sur certains concepts avancés de qualité 48

En termes de gestion de projets Fiabilisation des développements Détection des bugs, des régressions au plus tôt Réduction des phases de recette Suivi constant de la qualité Indicateurs objectifs sur la santé du produit, pouvant être utilisés en pilotage : la dette technique peut être un élément de pilotage Mesurer la qualité permet aussi d'évaluer certains risques Capacité à livrer tôt, souvent (en continu) à moindre risque réduction de l'effet tunnel possibilité d'impliquer le client pour avoir du feedback très tôt. livraison des nouvelles fonctionnalités plus rapide 49

4 (5?) éléments de pilotage Délais Pression Fonctionnalités Ressources Qualité 50

4 (5?) éléments de pilotage : réponse «traditionnelle» Délais Pression Fonctionnalités Ressources Qualité 51

4 (5?) éléments de pilotage : réponse Agile Délais Pression Fonctionnalités Ressources Qualité 52

Retour d'expérience Contexte : équipe 10 personnes, niveaux et compétences hétérogènes, 7 développeurs (4 expérimentés, 3 débutants), beaucoup de projets en «maintenance» (corrections + quelques évolutions), 2 nouveaux projets par an. Démarche d'amélioration continue (pas de rupture brutale dans les pratiques) (Faire) accepter le fait que développer avec des tests automatisés et dans une perspective de haute qualité représente au moins 30% de temps de travail en plus que pour une même fonctionnalité développée en mode «quick and dirty» Adapter / contextualiser : ne pas mettre en place de pratique si elles ne sont pas utiles, ne pas être dogmatique Avoir des indicateurs permettant de mesurer le ROI des pratiques (satisfaction utilisateur, anomalies réduites, plaisir de l'équipe, évolutivité...) Ne pas faire des tests pour faire des tests, ni de la qualité pour des indicateurs : seul objectif = satisfaction utilisateur grâce à fiabilité et évolutivité Les membres de l'équipe doivent partager les objectifs qualité, les maîtriser et être un élément moteur de la démarche. L'équipe et le manager doivent partager cette même vision Utiliser des outils «standards», libres, éviter les «factory» propriétaires dans laquelle vous risquez d'être enfermés. Sur des projets déjà en maintenance, se concentrer sur ce qui apporte le plus à moindre coût (tests d'intégration/fonctionnels automatisés) ; sur les nouveaux projets, il est plus simple de commencer avec de nouvelles pratiques. 53

Perspectives Continuous deployment sans interruption de service et sans perte de session (Facebook, Google,...). DevaaS : Blue-green deployment ( http://martinfowler.com/bliki/bluegreendeployment.html) Exemple de facebook : http://www.facebook.com/video/video.php?v=10100259101684977&oid=94455 http://www.cloudbees.com/ https://www.shiningpanda-ci.com/ https://travis-ci.org/ https://semaphoreapp.com/ http://www.atlassian.com/software/bamboo/overview http://www.cloudforge.com Ou autre PaaS : google App Engine, Heroku, OpenShift, CloudFoundry... 54

Références http://martinfowler.com/articles/continuousintegration.html http://continuousdelivery.com/ http://www.sqale.org/ http://fr.slideshare.net/ehsavoie/usine-logicielle-orange-labs http://agilemanifesto.org/ http://martinfowler.com/bliki/technicaldebt.html http://manifesto.softwarecraftsmanship.org/ http://www.agiliste.fr/items/continuous-delivery/ http://blog.xebia.fr/2010/12/21/livre-blanc-qualite-logicielle/ http://blog.xebia.fr/2011/09/30/livre-blanc-maitrisez-votre-dette-technique/ Les fiches PLUME sur Sonar, Jenkins, Archiva, Maven, Subversion, etc...! 55

Questions / réponses et discussions 56

Annexes 57

Manifeste Agile (extrait des 12 principes) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Continuous attention to technical excellence and good design enhances agility. 58

Gestion de version (Quelques) Outils Entrepôts d'artefacts Intégration continue Tests Build Watir Inspection Make (& co) 59

Fixer les limites par rapport à sa maturité Source : http://www.zenika.com/conseil/integration-continue.html 60

Software craftsmanshift manifesto As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value: Not only working software, but also well-crafted software Not only responding to change, but also steadily adding value Not only individuals and interactions, but also a community of professionals Not only customer collaboration, but also productive partnerships That is, in pursuit of the items on the left we have found the items on the right to be indispensable. 61