Cas concret d’agilité avec BDD (Gherkin Cucumber), une usine logicielle TFS déployant sur MS Azure et SpecFlow

BDD (Behavior Development Driven) et TDD sont des sujets « classiques » pour certains et mystérieux – voir dangeureux / incompréhensibles – pour d’autres!

Mon post d’origine date de 2011 où à l’époque, je n’avais pas un VSO et Azure pour être aussi Agile qu’aujourd’hui !

Sans entrer dans les débats existanciels et stérils, voici un témoignage d’un véritable projet où BDD est mis en place.

OBJECTIF: A partir de spécifications “classiques” assez « riches », nous allons :

  1. [Responsable Fonctionnel] Transformer cela en spec BDD,
  2. [Responsable Fonctionnel] L’écrire dans l’outil Microsoft TFS / VSO, via Excel
  3. [Développeur] Implémenter le code de test (guidé par la structure BDD auto-générée),
  4. iSe questionner vis-à-vis des spécs et faire des aller-retours aux responsables fonctionnels pour aboutir à un langage commun sans confusion ni d’interprétations possibles.
  5. [Responsable Fonctionnel et développeur]  conviennent des ajustements aux spec BDD
  6. [Développeur] Implémentation des tests
  7. [Développeur] Implémentation du code
  8. [Développeur] Refactoring
  9. [Développeur] Prouve au  Responsable Fonctionnel que sa « Définition Of Done » basée entre autre sur le « Given-When-Then » du BDD est respecté
  10. [Développeur]  Dans notre exemple, où il est critique d’avoir une couverture de code à 100%, lancement des outils de Couverture de code
  11. [Responsable Fonctionnel] Micro-évolution des specs, et cela provoque des tests qui « cassent »
VOICI LES SPECS
Ecran Rôle Profil
Visiteur Manager User central Admin tech
Ecran d ‘accueil Navigation x x x x
Activité prévisionnelle Lecture x x x x
Saisie x x x
Export csv x x x x
Performance Lecture x x x x
Import & Export Lecture x x
Lancement import x x
Lancement export x
Utilisateurs Lecture x x x
Création / Modification x
Paramètres Lecture x x
Saisie alertes x x
Saisie paramètres généraux x
Saisie paramètres généraux x

ETAPE 1: Reformulation du tableau précédent (ainsi que des autres fonctionnalités) en formalisme BDD,
et cela directement dans EXCEL (connecté bi-directionnellement à Microsoft TFS / VSO)

Si on n’aime pas Excel et on préfère MS Project, Word ou le portail Web de TFS, on utiliser ces dernier indifféremment (qui sont également bi-directionnellement connectés à TFS). Ci-dessous, via le portail Web:

ETAPE 2: Zoom sur la transformation du tableau précédent en formalisme BDD
(affiché avec IntelliSense dans Visual Studio avec Add-on SpecFlow, donc on ne peut pas écrire n’importe quoi comme Spec, car c’est compilé par VS)

ETAPE 3: Le développeur implémente les tests unitaires à l’intérieur de la coquille auto-générée par SpecFlow

En suivant la méthodo « Red, Green, Refactor » (SUPER important de la respecter scrupuleusement à la lettre, sinon, on peut créer des tests qui passent toujours ou négliger la partie « refactoring »),

  1. J’écris les tests dans la coquille BDD que outil m’a généré. J’aboutit à un teste échoué (Red) {normal ,je n’ai pas de code}.
  2. J’implémente ma 1ière idée de code pour faire passer les tests en Green (non refactorisé, donc potentiellement encore crados)
  3. Dans mon cas, le premier bout de code est tellement moche que je ne peux archiver le code dans TFS !! avec des alertes de mon IDE dans tous les sens !!
    Ca tombe bien, c’est la dernière étape avec du Refactor.

BENEFICE 1 : Refactorisation

Cette refactorisation me force à passer :

-          de mon code crados : Maintenability Index très faible 20 (donc non maintenable! i.e. code de stagiaire pas bon) et une Complexité cyclomatique de 105  (donc code très complexe) ;   i.e. personne au monde ne voudrait maintenir mon code, avec 105 lignes de code, car les combinaisons du tableau sont importantes (mais c’est une « fausse excuse » qui ne justifie pas un code non maintenable)

-          à un code moins crados (Maintenability Index = 59 ; Complexité cyclomatique de 63) qui me permet enfin d’archiver mon code dans TFS / VSO

-          à un code maintenable qui tiens dans ½ écran (Maintenability Index = 72 donc bien plus maintenable ; Complexité cyclomatique de 28 donc faible complexité).
Rappel:  « RedGreenRefactor » me rappelle que ce code n’est pas (et ne sera peut-être jamais parfait) et que cela n’est qu’une réponse et non LA réponse à un problème particulier.

BENEFICE 2 :

Le code est centralisé. Ca semble évident, mais il n’est pas rare de voir cette logique éparpillée dans les écrans IHM et/ou dans plusieurs endroits du projet.

BENEFICE 3 :

Le code est protégé (100% de couverture de code dans mon code ci-dessous), et la moindre modification de spéc à l’avenir sera détectée et l’usine logicielle TFS/VSO nous préviendra !

BENEFICE 4 : Tout est intégré à Visual Studio et Microsoft Team Foundation Server (TFS) ou Visual Studio Online (VSO), avec du déploiement continue sur …. Microsoft Azure

La moindre modification des spécifications (en respectant des processus pour éviter le chaos) sera identifiée par les tests unitaires, et le % de couverture de code

BENEFICE 5: Centralisation dans TFS/VSO de TOUTES les spécifications, et génération automatique de la spec pour le client !!

BENEFICE 6: Et les specs, vous les avez lus ??

Les Spec font partie de la « Definition Of Done » (DoD) et surtout minimalistes (donc pas d’explications redondantes) et compilées par le moteur BDD (donc, on ne peut pas écrire n’importe quoi !).

Categories: .NET, Cloud, Devops, Méthodes Agiles, Outillage Tags:

On aime, on partage #43

Bienvenue dans la série « On aime, on partage » de VISEO ! Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.

TDD

Robert C. Martin – Advanced TDD: The Transformation Priority Principle

Après quelques divagations scientifiques, oncle bob nous présente quelques réflexions avancées sur TDD, après un rappel sur ce qu’est vraiment TDD et sur la discipline nécessaire à sa pratique, il revient sur l’intérêt d’écrire les tests en premier, l’objectif des 100% de couverture, la peur de modifier l’existant pour finir sur la construction d’un algorithme de façon incrémentale.

Agilité

La transformation agile

Carlos Goncalves, DSI Société Générale GBIS, décrit l’agilité qu’il a mis en place dans le développement des applications de son SI, les enjeux, les bénéfices.

http://www.it-expertise.com/carlos-goncalves-dsi-societe-generale-gbis-25/

Technologies

Technology Radar

La nouvelle version du célèbre Technology Radar, qui fait figure d’oracle des tendances de l’informatique, vient de sortir. Le document, publié deux fois par an par ThoughtWorks (employeur du non moins célèbre Martin Fowler) est disponible à l’adresse suivante :

http://thoughtworks.fileburst.com/assets/technology-radar-july-2014-en.pdf

Nos contributeurs :

Merci aux contributeurs de cette semaine : Frédéric BOUQUET, Sébastien BRUNO et Jean-François FOURMOND

Categories: On aime, on partage Tags: , ,

On aime, on partage #42

Bienvenue dans la série « On aime, on partage » de VISEO ! Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.

Mobilité

Quelles sont les situations qui agacent le plus les internautes sur mobile ?

Liste de points qu’il peut être intéressant de garder à l’esprit lorsque l’on développe un site web.

http://www.developpez.com/actu/72315/Quelles-sont-les-situations-qui-agacent-le-plus-les-internautes-sur-mobile-Un-blogueur-etablit-la-liste-des-sept-plus-grandes-calamites/

Formation

Une plateforme de cours en ligne

A la manière de coursera, qu’on ne présente plus, qui permet d’accéder à un certain nombre de formations en ligne, voici un site qui permet de découvrir les bases de la programmation web d’une manière très originale !

https://codebabes.com/

Devops

Usefull SSH tricks

La plupart d’entre nous utilise SSH au quotidien. Le problème c’est qu’on oublie facilement comment utiliser telle ou telle option (notamment en ce qui concerne le tunelling). Voici une liste explicative des principales commandes utiles à retenir ou du moins à garder sous le coude.

http://serversforhackers.com/editions/2014/07/01/ssh-tricks/

Le repo de la semaine

Une nouvelle entrée dans notre série hebdomadaire, “le repo de la semaine”. Chaque semaine retrouvez le lien vers un projet GitHub qui nous a aidé dans notre travail ou que nous avons aimé pour son originalité.

Oh-My-ZSH – Un ensemble régulièrement mis à jour de plugins, thèmes et configurations à installer facilement pour exploiter la puissance du shell ZSH et améliorer votre workflow! :

https://github.com/robbyrussell/oh-my-zsh

Nos contributeurs :

Un grand Merci aux contributeurs de cette semaine : Frédéric BOUQUET, Jean-Philippe LETARD et Nicolas ROCHE

EA User Group 2014 : smart use cases, génération de code, EA11 cloud services, RAS et OSLC

J’ai assisté au mois de Mai dernier à l’EA User Group 2014 où s’est réunie la communauté d’utilisateurs d’Enterprise Architect. Avant d’animer ma présentation sur les alternatives permettant de partager un projet EA pour travailler en mode collaboratif, j’ai pu suivre plusieurs présentations. Voici celles qui ont été retenues pour cet article :

  1. Pragmatic agile model driven development using smart use cases de Sander Hoogendoorn (Capgemini, Pays Bas)
  2. EA Version 11 Cloud Services, OSLC and RAS de Phil Chudley (Dunstan Thomas, UK)

Lire la suite…

On aime, on partage #41

Bienvenue dans la série « On aime, on partage » de VISEO ! Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.

Node.JS

12 Fabulous Node.js Frameworks for Developers

Une sélection de frameworks Node.js pour vous faciliter la vie. http://thecreativeproject.co/2014/06/08/12-fabulous-node-js-frameworks-for-developers/

User Experience

Agile UX vs Lean UX, which should you choose?

Quelques explications sur ces deux buzzwords afin de mieux comprendre ce qui se cache derrière et de choisir la méthode qui convient le mieux a chaque projet.

http://www.webdesignerdepot.com/2014/05/agile-ux-vs-lean-ux-which-should-you-choose/

Outillage

Git tips from the trenches

Parce que GIT c’est que du bonheur, voici quelques tips pour mieux l’utiliser et améliorer son workflow quotidien.

https://ochronus.com/git-tips-from-the-trenches/

Java

Better Java

Une compilation riche de libs, de bonnes pratiques et d’outils pour le développement en Java.

https://github.com/cxxr/better-java

Le repo de la semaine

Une nouvelle entrée dans notre série hebdomadaire, “le repo de la semaine”. Chaque semaine retrouvez le lien vers un projet GitHub qui nous a aidé dans notre travail ou que nous avons aimé pour son originalité.

Promise Chains with AngularJS $q – Demos, source, & tutorial :

https://github.com/ThomasBurleson/angularjs-FlightDashboard

Nos contributeurs :

Un grand Merci aux contributeurs de cette semaine : Jean-François FOURMOND et Nicolas ROCHE

On aime, on partage #40

Bienvenue dans la série « On aime, on partage » de VISEO !
Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.

Java 8

8 super nouveautés de Java 8 dont personne ne parle

Lorsque l’on parle Java 8, on pense de suite au streams et lambdas. Cet article se concentre sur d’autres apports du langage donc nous n’avons eu que très peu de communication telles que les Stamped Locks, la nouvelle API Date ou encore l’entrée dans la programmation système avec le contrôle des processus de l’OS.

http://www.infoq.com/articles/Java-8-Quiet-Features

Diversité

Interview diversité avec Agnes Crepet et Maxime Tiran

Dans l’univers informatique tout le monde se ressemble, dans la trentaine, homme, … Quelques idées sur comment faire évoluer les choses dans le bon sens.

http://lescastcodeurs.com/2014/06/16/lcc-104-interview-diversite-avec-agnes-crepet-et-maxime-tiran/

Merci aux contributeurs de cette semaine : Frédéric BOUQUET

On aime, on partage #39

Bienvenue dans la série « On aime, on partage » de VISEO !
Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.

Agilité/devops

Running a startup with Lean & Devops culture

Retour d’expérience intéressant sur l’application des approches lean, agilité et devops dans une startup IT.

https://medium.com/devops-programming/running-a-startup-with-lean-devops-culture-df50825b110b

Test

L’alignement de l’IT avec les besoins Métier

Cet article nous décrit quelles seraient les tendances en matière d’ingénierie des exigences et met en avant les pratiques de test d’acceptation “Model-Based Testing” (MBT) et “Acceptance Test Driven Development” (ATDD)

http://www.it-expertise.com/lalignement-de-lit-avec-les-besoins-metier/

Merci aux contributeurs de cette semaine : Frédéric BOUQUET et Sébastien BRUNO

Atelier MUG Lyon – Test After/Before & TDD + Afterwork

C’est décidé pour ce mois-ci, au MUG-Lyon (association annuellement sponsorisée par VISEO), on organise un séminaire « Test After/Before & TDD » animé par Antoine Vernois, un spécialiste Clean-Code/TDD/BDD, que l’on fait venir en exclusivité de Toulouse.

Inscription gratuite : http://www.eventbrite.fr/e/billets-mug-lyon-test-afterbefore-tdd-afterwork-5224596910

C’est avec plaisir que vous y êtes conviés. Cette soirée sera suivie d’un apéro, histoire de discuter entre experts et passionnés.

Java, Node.JS, PHP ou Microsoft,… venez !! c’est techno-agnostique et axé sur des méthodo et Best Practices. Promis, on ne parlera donc pas de Microsoft, mais plutôt d’Agilité de TDD, BDD, CleanCode…

On aime, on partage #38

Bienvenue dans la série « On aime, on partage » de VISEO !
Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.

Réseau de neurones

What does a Neural Network Actually do ?

Article explicatif sur ce qu’est un réseau de neurones et ce que cela peut apporter.

http://moalquraishi.wordpress.com/2014/05/25/what-does-a-neural-network-actually-do/

Architecture d’entreprise

TOGAF, une philosophie pour l’architecte

Voici les retours d’un architecte JEE suite à sa formation sur TOGAF version 9.

http://jeecookbook.blogspot.fr/2013/06/togaf-une-philosophie-pour-larchitecte.html

AMOA

Introduction à BABOK

Cet article est une introduction au livre BABOK 2.0 (Business Analysis Body of Knowledge). Il s’agit d’un guide de bonnes pratiques pour l’ensemble des techniques utilisées par un AMOA / Business Analyst

http://www.modernanalyst.com/Resources/Articles/tabid/115/articleType/ArticleView/articleId/1187/An-Introduction-to-the-Business-Analysis-Body-of-Knowledge-BABOK-20.aspx

Merci aux contributeurs de cette semaine : Frédéric BOUQUET et Sébastien BRUNO

On aime, on partage #37

Bienvenue dans la série « On aime, on partage » de Viseo !
Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.

Gestion de projet

Formation MOOC en gestion de projet

Je souhaite partager une formation en ligne que j’ai apprécié faire. Il s’agit d’un MOOC (​Massive Online Open Course) en gestion de projet.

Le but de ce MOOC est d’apprendre (ou revoir) les bases de la gestion de projet ​(Notions fondamentales, Outils, infos et évaluation financière, Organisation des projets, Pilotage et plannification, …).

Il se déroule sur 5 semaines et la charge de travail par semaine est entre 2 à 7 heures en fonctions de la formation choisie (basique, avancée)

Chaque cours est divisé en chapitres composés d’une vidéo de 10 minutes environ, suivie d’un quiz.

Pour plus d’informations, rendez-vous sur http://mooc-francophone.com/mooc-abc-gestion-de-projet/

Tests

The little mocker

Un rappel utile sous la forme d’une discussion mentor/élève sur ce que sont les dummy, doubles, spys, mocks, fakes et dans quel cas les utiliser. Illustre aussi pourquoi l’utilisation de framework de mocks n’est peut être pas toujours adaptée.

http://blog.8thlight.com/uncle-bob/2014/05/14/TheLittleMocker.html

When to Mock

Oncle Bob propose quelques idées sur quand et où mocker. L’article se base sur un fond de TDD originel et revient aux origines de ce que sont les tests, ce qu’on attend d’eux, pour arriver à un argumentaire intéressant sur l’utilisation des mocks.

http://blog.8thlight.com/uncle-bob/2014/05/10/WhenToMock.html

Craftsmanship

Framework Bound

Rapide réflexion sur les framework et comment les utiliser plutôt que se faire utiliser par eux.

http://blog.8thlight.com/uncle-bob/2014/05/11/FrameworkBound.html

Java

Guava et Java 8

Voici un autre article avec des exemples d’utilisation des lambdas de Java 8.

Encore? Oui mais celui-ci montre quelques exemples de comment l’excellente librairie Guava peut aussi tirer profit.

http://blog.relateiq.com/java-8-examples/

Docker

Je vous propose de découvrir Docker à travers ce duo d’articles publiés par Nicolas Martignole a.k.a. “Le Touilleur Express”. En bref, Docker est un outil qui permet de simplifier le développement et la livraison d’applications en standardisant le packaging et l’exécution.

http://www.touilleur-express.fr/2014/05/03/docker-un-outil-simple-et-genial/

http://www.touilleur-express.fr/2014/05/05/installer-docker/

Le repo de la semaine !

Avant Java 8, il était impossible de connaitre par reflection le nom des paramètres d’une méthode au runtime.

Cette librairie propose plusieurs méthodes pour contourner le problème.

https://github.com/paul-hammant/paranamer

Merci aux contributeurs habituels : Frédéric BOUQUET,  Claude PETOT et Jean-Philippe LETARD :-)

Merci beaucoup au nouveau contributeur : Sébastien BRUNO ;-)