Mind7-Consulting-Agilité-qualité-logicielle

Comment l’agilité assure la qualité logicielle ?

Chaque jour le monde change. La technologie, l’intelligence artificielle et le big data ont révolutionné notre style de vie et ont contribué à la création de nouveaux modèles économiques. Il était donc nécessaire que les organisations s’adaptent à ce changement fulgurant et trouvent le moyen de survivre grâce à la transformation digitale. Une transformation qui a réinventé le SI et a poussé les entreprises à être ‘Customer centric’, parce que le succès d’une entreprise dans un marché fortement concurrentiel se mesure par la satisfaction de ses clients et sa capacité à les fidéliser et à attirer en permanence de nouvelles cibles.

Où en êtes-vous avec votre transformation ?

« Le concurrent le plus redoutable est celui qui ne se préoccupe jamais de vous, mais qui améliore sans cesse sa propre affaire. » Henry FORD, célèbre industriel.
Monsieur Ford  nous explique l’importance de l’amélioration continue et le risque de stagner au profit des concurrents, qui ne cessent d’évoluer, ayant une parfaite maîtrise de leurs métiers et proposant en permanence des produits hautement qualitatifs. La transformation digitale permet à l’entreprise de rester compétitive et de révolutionner ses processus organisationnels, ses méthodes de management, ses logiciels…etc.

Une transformation organisationnelle par le biais de l’agilité…

On ne peut pas parler de transformation digitale sans évoquer l’agilité. Classiquement, nous disposons de méthodes unidirectionnelles, basées sur des plannings préétablis et prédictifs, et sur un flux séquentiel depuis la conception jusqu’à la livraison. Cette approche retarde le feedback et l’apprentissage, car elle ne délivre un logiciel opérationnel qu’à la fin du cycle du projet.

Par ailleurs, l’agilité est une culture de communication collaborative favorisant le partage de l’information durant toutes les phases du cycle de vie d’un projet, ainsi que la réactivité constante entre toutes les parties prenantes, et assure une livraison continue de valeur. C’est un élément accélérateur de la transformation digitale si seulement les entreprises respectent d’utiliser rigoureusement les bonnes pratiques de cette méthode et de s’éloigner des Antipatterns qui peuvent bouleverser son exercice. En résumé, l’agilité ne doit pas être appliquée en façade juste parce qu’on veut paraître agile, et être à la mode. L’agilité est un état d’esprit, une transformation des comportements et des mentalités.

“Une attention continue à l’excellence technique et une bonne conception renforcent l’agilité.”   12 principes de l’agilité, Agile Manifesto.
On peut aussi apercevoir l’agilité comme une clé de réussite de la transformation digitale si on prend en compte les mesures d’assurance de qualité pour atteindre l’excellence technique, car parfois on plonge dans un processus empirique qui peut engendrer des échecs et des changements fréquents, il faut donc avoir assez de courage pour apprendre de ses échecs et les transformer en outils d’apprentissage. Enfin, l’empirisme ne doit pas affecter la qualité des produits ni la mise en oeuvre correcte et efficace des méthodes agiles.

Mind7-Consulting-Agile-is-a-mindset

Pourquoi l’assurance de qualité logicielle est-elle importante ?

Dans l’application des méthodes agiles, les équipes veulent livrer des produits rapidement, et pour cela vont complètement nier les mesures de qualité sans se soucier des conséquences sur le long terme. Sur certains projets, l’historique sera même absent ! Alors, comment remédier à ce type de situation si les standards de qualité ne sont pas respectés dès la rédaction des User stories et la conception de l’architecture logicielle ?

« C’était la façon de Toyota de concevoir et d’améliorer les processus qui ont généré à la fois, la stabilité à court terme, et à plus long terme, l’agilité et la réactivité. » Steven Spear, maître de conférences à MIT.
Ici, Toyota nous apprend qu’il faut être visionnaire et définir des processus qui vont garantir la continuité et la pérennité, vu que la construction agile d’un logiciel ou d’une application en informatique est similaire à la construction d’un gratte-ciel. En effet, il faut commencer par des fondations solides et bien dimensionnées, afin de supporter les descentes de charges des différents étages, à vrai dire il faut construire un code garantissant une grande qualité et une agilité technique pour l’ajout de nouvelles fonctionnalités sans détruire l’existant. Pour ce faire, le développement de logiciels informatiques nécessite une pratique d’assurance qualité conforme au risque et exigeant que l’agilité soit un état d’esprit et non seulement une méthode de travail.

Comment l’agilité accroît la qualité logicielle ?

Pour en revenir à M. Ford, il a imaginé que la satisfaction des clients liée à l’assurance de qualité est un élément essentiel pour les fidéliser, c’est la carte gagnante permettant à une entreprise de se démarquer par rapport à la concurrence. Ainsi, développer des logiciels dans des sprints agiles avec une livraison de produits de haute qualité peut donner une longueur d’avance et garantir une croissance continue.

Notons que l’assurance qualité est l’ensemble des dispositions qui seront prises tout au long des différentes phases de fabrication d’un logiciel pour accroître les chances d’obtenir un produit final correspondant aux objectifs d’utilité désirés. À cet égard, l’agilité nous fournit plusieurs bonnes pratiques afin d’assurer la qualité d”un logiciel depuis la rédaction des Users stories jusqu’à la livraison du produit fini.

Au niveau des Sprints, la vélocité est un moyen performant pour mesurer la productivité des équipes. elle représente le nombre de points de complexité développés pendant l’itération. Ainsi, on remarquera que sa valeur moyenne et sa tendance permettent d’estimer le délai nécessaire à la réalisation du reste à faire, ce sera l’indicateur de livraison de l’incrément.

Avec la vélocité, au niveau du développement du code, on respectera des normes et des standards instaurés par l’ensemble des développeurs au sein de l’entreprise pour éviter des problématiques de lisibilité et des difficultés de détection de bugs.

Parmi ces bonnes pratiques, on trouve :

  • La revue du code ou code Review : permet d’identifier des bugs avant de les rencontrer, c’est la relecture du code par un développeur expérimenté pour garantir son homogénéité, sa cohérence, et son évolutivité.
  • La refactorisation de code ou code refactoring : cette méthode consiste à retravailler le code source sans ajouter de nouvelles fonctions, mais dans le but de le rendre plus simple, plus efficace, plus souple et plus lisible.
  • Pair programing : méthode de développement en binôme, où deux développeurs vont travailler ensemble pour relever les challenges techniques et améliorer la qualité du code.
  • La méthode du canard en plastique : cette méthode permet au développeur d’expliquer son code à un canard en plastique. L’idée se base sur le fait que ce qui se conçoit clairement s’énonce clairement.
  • TDD (Test Driven Development) : technique particulière de l’« Extreme Programming ». Le principe consiste à écrire les tests avant de commencer à écrire le code. Cette pratique est une adaptation du flux tendu demandé par le Lean.
  • BDD (Behavior Driven Development) : méthode Agile conçue en 2003 par Dan North en réponse aux insuffisances du Test Driven Development. Elle encourage la collaboration entre les développeurs et toutes les parties prenantes d’un projet logiciel. Le BDD est centré sur la valeur ajoutée pour les clients et utilisateurs finaux.

L’agilité favorise aussi la mise en place d’outils automatisés pour :
– centraliser le code et les Builds,
– mesurer le taux de couverture des tests unitaires, la complexité cyclomatique, la cohérence des classes,
– libérer les développeurs des tâches récurrentes sans valeur ajoutée.

L’agilité nous incite à adopter de bonnes pratiques pour valider la qualité du code et met fortement l’accent sur l’automatisation des tests, essentielle à la gestion de la majeure partie de la charge de travail et l’utilisation d’un framework d’automatisation pour créer des scripts codés individuels.
N’oubliez pas que tout automatiser n’est pas forcément la meilleure réponse à toutes les anomalies, mais il faut absolument que ce processus soit accompagné des bonnes pratiques.
Par ailleurs l’agilité encourage aussi l’utilisation de concepts comme le CI/CD (Intégration Continu/ Déploiement Continu) et Devops qui assurent la sortie de nouvelles fonctionnalités sur un rythme beaucoup plus régulier et rapide.

En conclusion, à travers cet article, nous avons pu voir qu’il n’est pas incongru de parler d’assurance qualité logicielle dans l’application des méthodes agiles, même si ce n’est pas totalement revendiqué dans la documentation officielle, pour autant l’agilité nous offre un panel d’outils et de bonnes pratiques pour aider à réussir une transformation infaillible, donc à vous d’en faire bon usage !

Mouna Bitite