Alors que la transformation numérique de la société se poursuit sur fond de Covid-19, le logiciel poursuit rapidement sa croissance dans tous les secteurs d’activité. Comment le fournir de plus en plus vite sans en sacrifier la qualité ? Equilibre difficile à atteindre, pointe le tout récent rapport du Consortium for Information and Software Quality sur « Le coût de la pauvre qualité logicielle aux Etats-Unis en 2020 ». Selon l’étude, la qualité du logiciel arrive la plupart du temps derrière d’autres objectifs dans les organisations, ce qui génère un coût élevé.
D'autant que si les organisations peuvent monétiser la valeur commerciale de la rapidité de développement, elles mesurent rarement le coût total de la moindre qualité du logiciel (Cost of poor software quality, CPSQ) que peuvent entraîner ces délais réduits. L'une compense-t-elle l'autre ? CISQ a estimé le coût engendré par les problèmes de qualité à 2 080 milliards de dollars sur 2020 aux Etats-Unis en incluant dans son calcul les pannes opérationnelles au sein desquelles il place les problèmes de cybersécurité. S'y ajoute le coût des projets IT ayant échoué et celui des imperfections affectant les systèmes hérités. A cela s’ajoute la dette technique résultant de défauts sévères qui doivent être corrigés dans les logiciels, évaluée à 1 310 milliards de dollars et dont le montant augmente, en hausse de 14% depuis 2018.
Nette hausse du coût d'échec des projets
Dans son calcul, CISQ a estimé à 1 560 milliards le coût des dysfonctionnements opérationnels, soit une augmentation de 22 % sur 2 ans. Ce montant pourrait néanmoins être sous-estimé compte-tenu de la furieuse augmentation des incidents de sécurité l’an dernier dont une grande partie n’ont pas été signalés, selon le rapport. Or ces problèmes résultent principalement de failles non atténuées dans les logiciels. Deuxième source de coûts entraînés par mauvaise qualité logicielle, l’échec des projets de développement menés. Le rapport l’évalue à 260 milliards de dollars en 2020, soit une augmentation de 46 % depuis 2018. Depuis 10 ans, le taux d’échec des projets tourne autour de 19 %. Les causes à incriminer sont variées, mais le manque d’attention à la qualité du logiciel est invariablement cité.
Enfin, si les problèmes associés aux systèmes installés hérités entraînent aussi un coût, celui-ci est en baisse depuis deux ans. Surtout dû à des éléments sans valeur ajoutée, iI est estimé à 520 Md$ contre 635 Md$ en 2018. Le rapport de CISQ détaille sur 46 pages les calculs qui lui ont permis d’atteindre ces estimations. Le rapport met par ailleurs en évidence les grandes tendances qui affecteront le développement logiciel dans la prochaine décennie. Premièrement, le cloud va devoir s’intégrer avec les systèmes edge, c’est-à-dire les équipements situés en périphérie du SI. Les autres tendances sont l’automatisation continue, la poursuite de l’explosion de données, la maîtrise de l’intelligence artificielle et la cybersécurité.
Prévention avant tout et attention à l'open source
Pour limiter ces coûts et réduire les risques associés, le consortium continue à mettre en avant la prévention. Il faut isoler, atténuer et corriger le plus rapidement possible les failles et faiblesses identifiées dans les logiciels. Au 1er rang de ses recommandations figure l’adoption de pratiques de développement sécurisées et proscrire les pratiques générant une piètre qualité. Les difficultés inhérentes au développement logiciel doivent être prises en compte avec l’utilisation d’outils adaptés. Le CISQ préconise par ailleurs une analyse précoce et régulière du code source pour détecter les vulnérabilités. Les composants open source intégrés au logiciel développé doivent bien sûr être particulièrement examinés, on sait qu’ils constituent l’une des sources de fragilité. Cet été, l'édition 2020 du State of the Software Supply Chain faisait état d'une hausse de 430% des cyberattaques de nouvelle génération visant à infiltrer ces composants.
Le consortium recommande aussi de s’informer davantage sur les failles typiques associées à certains langages de programmation. Chaque langage a sa propre structure de failles qui peut amener un développeur à en créer une. « Par exemple, les langages de bas niveau comme Assembly, C ou C++ sont vulnérables au dépassement de mémoire tampon », rappelle le rapport. Les pirates peuvent l’exploiter pour écrire du code malveillant dans la mémoire adjacente lorsque la capacité du buffer sera atteinte. D’autres failles courantes dans des langages comme SQL, JavaScript et PHP concernent l’injection de code. Dans ces cas-là, les pirates exploitent des failles dans le traitement des données qui conduisent à interpréter la saisie de l’utilisateur comme des commandes systèmes ou bien insèrent des scripts malveillants dans les fichiers téléchargés.
Concernant la gestion des systèmes hérités, le CISQ conseille d’utiliser les bonnes pratiques identifiées, surtout lorsqu’il faut compenser en interne une perte de connaissances sur le fonctionnement du système. Les échecs sur les projets IT résultent parfois d’une planification mal définie. Dans tous les cas, il faut apporter un soin particulier aux objectifs de qualité du logiciel et les mesurer tout au long du cycle de vie du projet.
Commentaire