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 Spindev : Laurent 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 le Devobs : Github / Gitlab, Atlassian …
- Pour le CI/CD : Circle CI
- Pour l’embarqué : Simulink
- pour les tests : Spindev pour les tests fonctionnels, Selenium pour les tests UX,
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