Top Banner
Industrialis ation des développemen ts (la recette)
74

Industrialisation des développements logiciels

Apr 14, 2017

Download

Software

Sylvain Leroy
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Industrialisation des développements logiciels

Industrialisation des

développements

(la recette)

Page 2: Industrialisation des développements logiciels

Hello!Je suis Sylvain Leroy

Vous pouvez me trouver sur :[email protected] / @sleroy0 about.me/sylvain_leroy

2007

Ingénieur Recherche

Informatique

2011

Création Société Tocea

2014

Acquisition Tocea Groupe Metrixware

CTO Tocea

2015

Acquisition EchoesGroupe Metrixware

CTO Metrixware

Projet Recherche

Page 3: Industrialisation des développements logiciels

Ma Société

▧Assistance Qualité / Recette applications

▧Modernisation automatique d’applications

▧Offre Intégration Usine Logicielle

▧Formateurs Bonnes Pratiques /Cleancode / Qualité / Devops

▧Distributeur Outils de qualité de code (Optimyth)

▧Komea Dashboard (Pilotage développements par la qualité/productivité)

▧Offres Cobol/Mainframe

Page 4: Industrialisation des développements logiciels

TOP 20 Justifications les plus courantes

▧ Cela fonctionne sur ma machine▧ Ou étiez-vous quand le programme a crashé ?▧ Pourquoi voulez-vous faire ceci ainsi ?▧ Vous n’utilisez pas la bonne version du système d’exploitation▧ Même si cela ne fonctionne pas, est-ce gênant ?▧ Avez vous passé l’antivirus ?▧ Quelqu’un a du changé mon code▧ Cela fonctionne mais cela n’a pas été testé▧ Ceci ne peut être à l’origine de Cela!▧ Je ne peux pas tout tester!▧ C’est juste une coïncidence malchanceuse▧ Vous ne devez pas utiliser la dernière version du logiciel▧ Je n’ai pas touché à ce module depuis des lustres!▧ Il doit avoir quelque chose de bizarre dans vos données▧ Qu’avez vous pu taper pour faire planter le logiciel ?▧ Cela doit être un problème matériel▧ Comment est-ce possible ?▧ Cela fonctionnait hier▧ Cela fonctionne sur ma machine▧ Cela n’avait jamais cela avant▧ C’est bizarre▧ C’est normal, c’est une fonctionnalité

Page 5: Industrialisation des développements logiciels

L’industrialisation du processus de développement

Page 6: Industrialisation des développements logiciels

Quelles méthodologies et

outils pour démarrer

un nouveau développement ?

Page 7: Industrialisation des développements logiciels

Quels sont les pré-requis pour un projet de développement chez Google ?

Page 8: Industrialisation des développements logiciels
Page 9: Industrialisation des développements logiciels

Un outil de gestion des exigences et

des tests (réclamation

s..)

Page 10: Industrialisation des développements logiciels

Tracage des exigences

Identifiez les changements, la raison des changements et l’époque

Page 11: Industrialisation des développements logiciels

Evaluation des spécifications

Faîtes évaluer les spécifications par les développeurs

Page 12: Industrialisation des développements logiciels

Estimez le poids des exigences

Estimez la charge pour chaque exigence, visez 10 à 15j maximum.

Page 13: Industrialisation des développements logiciels

un dépôt de source unique qui contient tout

Page 14: Industrialisation des développements logiciels

Stockez tout!Utilisez votre dépôt de source pour stocker fichiers, sources, scripts, données.

Page 15: Industrialisation des développements logiciels

Définissez votre workflow

Parce que GIT vous en offre un tout cuit

Page 16: Industrialisation des développements logiciels
Page 17: Industrialisation des développements logiciels

Utilisation de Git + GitFlow

https://danielkummer.github.io/git-flow-cheatsheet/

Page 18: Industrialisation des développements logiciels
Page 19: Industrialisation des développements logiciels
Page 20: Industrialisation des développements logiciels

Les différentes GatesTests des fonctionnalités critiques (scénario nominal)Charge <= 1J

Q1

Tests complets : toutes les options sont testées, toutes les interactions complexes Charge : (max 1 semaine par env)

Q2Q3

Tests de performance , sécuritéCharge : 1 à 2 semaine par env

Qg

Analyse qualimétrique du programme.Règles de programmation, métriquesCharge : machine < 4h.

Page 21: Industrialisation des développements logiciels

Casser un build lors de l’analyse qualimétrique

▧Installation du plugin BuildBreaker de Sonar

▧Définition d’alertes sur les métriques ciblées

Page 22: Industrialisation des développements logiciels

Un système de

gestionnaire de sources distribué

Page 23: Industrialisation des développements logiciels

Un serveur d’intégration continue

Page 24: Industrialisation des développements logiciels

Ne négligez pas le temps de build !Parce que personne n’aime attendre.

Page 25: Industrialisation des développements logiciels

L’intégration continue

est une machine, maintenez-la!

Inspirez-vous de la maintenance industrielle (MTBF, MTTM, Availability)

Page 26: Industrialisation des développements logiciels

Un processus

de fabrication

Page 27: Industrialisation des développements logiciels

Le pipeline de

déploiement

Page 28: Industrialisation des développements logiciels
Page 29: Industrialisation des développements logiciels

Build Pipeline plugin

Page 30: Industrialisation des développements logiciels

Jenkins Workflow plugin( $$$)

Page 31: Industrialisation des développements logiciels

Documentez votre processus de fabrication

Page 32: Industrialisation des développements logiciels

Un serveur de

documentation

centralisé

Page 33: Industrialisation des développements logiciels

Générez votre documentation

Utilisez un format de documentation pour la génération automatique

Page 34: Industrialisation des développements logiciels

Versionnez votre documentation

Stocker votre documentation sur votre SCM

Page 35: Industrialisation des développements logiciels

Un dépôt Maven/GEM/

Deb

Page 36: Industrialisation des développements logiciels

Rationalisez les technologies

Identifier et rationalisez les technologies, suivez les évolutions

Page 37: Industrialisation des développements logiciels

Utilisez un outil de

build (Gradle,

maven, ..)

Page 38: Industrialisation des développements logiciels

Privilégiez les outils de scripting

Parce que coder un plugin Maven ce n’est pas sympa du tout (et maven assembly, release…)

Page 39: Industrialisation des développements logiciels

Une architecture d’entreprise

Page 40: Industrialisation des développements logiciels

Découvrez les outils comme Puppet, Ansible, Docker, ...

Virtualisez vos

environnements

Page 41: Industrialisation des développements logiciels

Gestion des livraisons et des notes

de livraison

Page 42: Industrialisation des développements logiciels

Tracez les modifications!

Associez les numéros de tickets aux messages de commits

Page 43: Industrialisation des développements logiciels

Gestion des livraisons▧Les dates de release

doivent être planifiées selon une fréquence régulière

▧La procédure et l’outillage de release doivent être documentés

▧Identifiez et documentez tous les éléments liés à une unité de déploiement

▧La fonction de release doit être réalisée par une entité autonome

▧Les unités de déploiement doivent être construites tôt

▧Le processus de déploiement doit être testé avant le déploiement réel.

▧Prévoyez un plan de restauration

▧Utilisez des outils▧Gérez et configurer les

outils

Page 44: Industrialisation des développements logiciels

Pas de contrainte sur le choix

de l’IDE

Page 45: Industrialisation des développements logiciels

Un logiciel de suivi de

bugs(bugtracker)

Page 46: Industrialisation des développements logiciels

Personnalisez le workflow

N’oubliez pas les champs nécessaires pour calculer les KPIs par la suite!

Page 47: Industrialisation des développements logiciels

Root Cause Analysis

Indispensable pour évaluer la qualité de votre processus

Page 48: Industrialisation des développements logiciels

Testez votre application!

Automatisez autant que possible

Page 49: Industrialisation des développements logiciels

Mesurer la couverture

de code

Page 50: Industrialisation des développements logiciels

Quels outils de couverture de code ?

Cobertura Atlassian Clover

Jacoco Code Cover

https://confluence.atlassian.com/display/CLOVER/Comparison+of+code+coverage+tools

Page 51: Industrialisation des développements logiciels

<project> ... <reporting> <plugins> ... <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.7</version> </plugin> </plugins> </reporting></project>

PetClinic Maven projecthttps://github.com/spring-projects/spring-petclinic/

Page 52: Industrialisation des développements logiciels

Exemple de rapport

Page 53: Industrialisation des développements logiciels

allprojects { apply plugin: 'jacoco' repositories { jcenter() } jacoco { toolVersion = '0.7.1.201405082137' }}

task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { dependsOn = subprojects.test sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs) classDirectories = files(subprojects.sourceSets.main.output) executionData = files(subprojects.jacocoTestReport.executionData) reports { html.enabled = true xml.enabled = true csv.enabled = false }}

PetClinic Gradle projecthttps://github.com/sleroy/spring-petclinic

Page 54: Industrialisation des développements logiciels

Rapport obtenu

Page 55: Industrialisation des développements logiciels

Pour les projets open

source : Coveralls.io

Page 56: Industrialisation des développements logiciels

Employez des méthodologies

de tests (TDD,BDD)

Page 57: Industrialisation des développements logiciels

“Test Driven Development :

Développement piloté par les tests

Page 58: Industrialisation des développements logiciels

Crédit : alphatalk.vn

Page 59: Industrialisation des développements logiciels

Astuces Tests unitaires▧Exécuter les tests en mémoire▧Ecrire les tests de manière à ce qu’ils soient

indépendants▧Les tests doivent être isolés (pas d’effet de bord)▧Exécuter chaque test (pas d’@Ignore ou de /**/)▧Ecrire chaque test sous la forme d’une assertion (ou

d’un prédicat)▧Ecrire chaque test avec l’assertion la plus forte possible▧Assurez-vous que le code requis pour les tests et

séparé du code en production▧Refactorez avant de déboguer▧Ajoutez un timeout▧Nommez bien vos tests▧Utilisez des exceptions spécifiques▧Rendez vos tests exigeants

Page 60: Industrialisation des développements logiciels

“Behaviour Driven Development :

Développement piloté par les tests

Page 61: Industrialisation des développements logiciels
Page 62: Industrialisation des développements logiciels
Page 63: Industrialisation des développements logiciels

Multipliez les niveaux

de tests

Page 64: Industrialisation des développements logiciels

▧Tests unitaires▧Tests d’intégration▧Tests fonctionnels▧Tests d’acceptation▧Smoking Tests▧Tests de déploiement▧Tests du système▧Tests de performance▧Tests de sécurité▧Tests manuels

Les différents tests :

Page 65: Industrialisation des développements logiciels
Page 66: Industrialisation des développements logiciels

80%Couverture de code optimale à

atteindre(Pour les système ne menaçant pas

la vie humaine)

Page 67: Industrialisation des développements logiciels

50%Le nombre de défauts en moyenne

supprimés par les (seuls) tests unitaires

Page 68: Industrialisation des développements logiciels

▧Au dessus, le coût de détection des bugs est trop important

▧Intégrés directement à Eclipse, Maven ..▧Utilisation de JUnit ou TestNG▧Suivre les évolutions (régulières) des

frameworks qui simplifient l’écriture▧Les tests unitaires c’est du code, écrivez-

les bien!

Tests unitaires

Page 69: Industrialisation des développements logiciels

▧Approche BigBang▧Approche ToP/Down▧Approche Bottom/Up▧Problématique des bases de données :

mémoire, embarquée ou simple fichier ?▧Problématique de simulation des web-

services : bouchons, stubs,...

Tests d’intégration

Vérifier le fonctionnement des “grands” composants de l’architecture

Page 70: Industrialisation des développements logiciels

▧TF : fonctionnalités du logiciel / aux spécifications.

▧TS : fonctionnalités du logiciel / aux exigences clients.

▧Tests réalisés en boîte noire à partir d’un livrable de l’IC

▧4 Vérifications : Tests des fonctionnalités critiques (Smoke

Testing)Tests de validation de résultats (Sanity Testing)Tests de non-régressionTests d’ergonomie / utilisabilité

Tests fonctionnels / système

Page 71: Industrialisation des développements logiciels

▧Créés généralement par le client▧Exprimés avec son vocabulaire (DDD)▧Tests boîte noire▧Utilisation d’outils comme Fitnesse

peuvent simplifier l’expression de ces tests.

Tests d’acceptation

Page 72: Industrialisation des développements logiciels

▧Utilisation d’un outil de gestion d’exigences et de scénarios de tests

▧Un Cas de test doit avoir un objectif▧Une description de l’environnement de

test est requise▧L’installation de l’environnement de tests

doit être vérifiée▧Chaque cas de test doit être associé à un

ou plusieurs requirements▧Un cas de test doit être simple et

déterministe

Tests manuels

Page 73: Industrialisation des développements logiciels

(A suivre)Contrôler la qualité du code de

l’application (et pas que…)

Page 74: Industrialisation des développements logiciels

Merci

Vous pouvez me trouver :@sleroy0

[email protected]