Parce que l’industrialisation software est un sujet aussi complexe que l’industrialisation hardware (pour preuve une journée entière avait été dédiée au sujet en juin dernier à Inria…), Coopindus, l’association co-fondée par le Tarmac et French Tech in the Alps, organisait le 12 novembre dernier un meetup sur le sujet au Totem, animé par les deux fondateurs de SpindevLaurent Bristiel et Alexandre Langenieux, deux experts de la question. En effet, Spindev propose une solution cloud pour automatiser les tests fonctionnels.

Mais de quoi parle-t-on, pourquoi et comment bien aborder son industrialisation :
telles étaient les questions abordées lors du meetup.

Industrialiser : comment ?

L’industrialisation software correspond à la mise en place d’usines logicielles, marquées par l’intégration continue et l’automatisation (notamment des tests), en s’appuyant sur les nombreux outils clouds à disposition qui permettent aux équipes de se concentrer sur le développement et de se dégager de l’IT :

Pour autant, si l’industrialisation s’oppose généralement à l’artisanat, en matière de logiciel où la création et le développement sont continus, il restera toujours une part d’artisanat.

Les bonnes pratiques

  • Organiser ses équipes : en petite équipe, la plupart des développeurs sont full stack et gèrent toute la chaîne. Dès que l’équipe de développement grossit (plus de 5 ), il devient intéressant de découper l’équipe par rôle, les principaux étant :
    • Les développeurs, qui … développent !
    • Les testeurs, qui automatisent les tests
    • Les product managers, qui recueillent les besoins clients, font l’interface avec l’équipe technique et sont garants de la conformité des livrables
    • Les « technical writers », qui se chargent de la documentation technique
    • Le support
    • Les DevOps, qui sont responsables de la mise en place des usines logicielles et de tous les outils nécessaires à l’intégration continue
  • Mesurer sa productivité et sa qualité : plusieurs indicateurs sont possibles
    • Le nombre de tickets clients (bugs mais aussi features manquantes)
    • Les performances de la plateforme
    • Le temps
    • Les tests
  • En matière de tests, il convient de distinguer :
    • Les tests unitaires
    • Les tests fonctionnels en boite noire (qui reproduisent les comportements du client final)
    • Les tests statiques, qui scannent le code source pour détecter automatiquement les anomalies d’écriture
    • Les tests de performance, plus complexes car ils dépendent des environnements
    • Les tests d’intégration, y compris avec le hardware
    • Les tests de sécurité, très complexes, où il est souvent nécessaires de faire appel à un expert extérieur pour faire un audit de sécurité

Deux conseils :

  • L’industrialisation logicielle est une affaire d’arbitrage entre le nombre de features, le délai, la qualité, le coût et les ressources humaines.
  • En fonction du projet, il faut trouver le juste équilibre entre la formalisation / planification nécessaires et l’agilité pour optimiser le temps consacré au pilotage du projet et le temps consacré au développement

Pourquoi industrialiser et quels en sont les bénéfices ?

L’industrialisation permet de :

  • Faciliter le passage à l’échelle
  • Automatiser les tâches, et donc réduire les coûts de production et sécuriser le logiciel
  • Garantir une qualité logicielle constante et prévisible
  • Faciliter la gestion et la coordination des équipes

Ses bénéfices :

  • La valorisation de l’entreprise auprès d’investisseurs
  • Le time to market
  • La satisfaction des clients et partenaires