C'est un peu le rêve du moment : un système d'information écrit automatiquement par des machines, se rapprochant de plus en plus des enjeux métiers tout en réduisant les coûts. Le Saint Graal, dirait-on !
Ce rêve technologique tant convoité est-il réellement sur le point de se réaliser ? Et si oui, est-ce pour bientôt ?
C'est assez difficile de donner une définition précise au terme "qualité de code". Il s'agit d'une notion assez générique, qui englobe différents aspects :
De notre côté, nous pensons que la qualité de code se trouve dans un bon compromis entre ces différents facteurs.
L'intelligence artificielle (IA) est LE sujet tendance du moment, il est bien vu de l'intégrer dans divers aspects du processus de développement. Nous allons voir ici comment l'utiliser intelligemment à travers différents cas d'utilisation qui pourront vous permettre d'améliorer la qualité du code de vos projets.
Lorsque l'on parle d'IA, nous parlons en réalité principalement d'IA générative. Cette dernière est excellente pour rédiger, que ce soit pour écrire une recette de cuisine ou du code. Si on devait résumer, cette IA est principalement basée sur des statistiques pour générer un texte qui fait le plus de sens par rapport à la demande. C'est d'ailleurs pour cette raison que l'IA génère les mots les uns après les autres, elle n'a aucune idée de la fin de la phrase lorsqu'elle la commence.
L'objectif de cette explication est de mettre en évidence qu'il peut être difficile de croire aveuglément tous les codes que l'IA peut générer. Dans vos processus de rédaction de code, ce sera une aide très précieuse, mais il vous sera donc difficile d'automatiser des processus de vérification de code grâce à de l'IA. L'IA apportera une réponse un peu banale si vous lui demandez « Est-ce que la qualité de mon code est bonne ? » alors qu'elle sera bien plus compétente pour répondre à la question « Est-ce que mon code est bien découpé en fonctions ? ». Si vous souhaitez automatiser des revues de code grâce à l'IA, la demande doit être très précise.
Pour la qualité du code, l'IA est une grande aide ! Cette dernière peut très facilement vous expliquer comment rédiger votre code dans les grandes lignes en vous sauvant des nombreuses heures de lecture de documentation. Cependant, il faudra toujours bien relire le code et y apporter des modifications pour qu'il soit parfaitement intégré dans votre projet.
L'IA est également très douée lors de la rédaction des tests : elle permet de rédiger bien plus rapidement des tests unitaires ou d'intégration. Vous n'avez plus de bonnes raisons de ne pas écrire de tests sur vos projets.
Un point bien souvent oublié lorsque l'on parle d'IA et de qualité de code est l'apprentissage. L'IA ayant accès à de très larges connaissances, elle sera facilement capable de répondre à vos questions en lien avec la qualité de code. Elle sera toujours une très bonne source d'information pour parfaire vos connaissances sur différents sujets. Attention tout de même, il est toujours important de vérifier ce que l'IA vous dira. Dans ce cas d'usage, on ne peut que grandement conseiller l'utilisation de Bing (Copilot) qui, à côté de vos explications, vous fournit les différents liens de sites utilisés pour rédiger sa réponse. Cela vous permet d'avoir directement accès aux différents sites qui peuvent répondre à votre question et ainsi vous faire un avis par vous-même.
Nous souhaitons conclure cette dernière partie sur l'IA avec un petit avertissement : lors de l'utilisation de l'IA, il est bien important d'avoir en tête ses limitations. Il nous a été couramment donné de voir l'IA générer des codes qui contiennent des failles de sécurité. Il est important d'avoir une bonne connaissance du code et des bonnes pratiques. Cela va vous permettre de remettre facilement en question le code généré par l'IA ainsi que de l'aiguiller au mieux lors de sa rédaction pour obtenir le meilleur code possible. Le meilleur conseil que l'on peut vous donner lorsque l'on parle de génération de code par l'IA est de ne jamais demander à une IA de générer un code dont vous n'avez aucune idée du résultat final attendu. Si vous n'êtes pas capable de challenger la proposition de l'IA en termes de qualité de code, le risque d'intégrer le code généré est bien trop grand.
L'audit de code consiste à examiner le code afin d'identifier les problèmes potentiels et les améliorations possibles. Il représente donc une étape incontournable à l'amélioration de la qualité d'un code source.
Étonnamment, en 2024, cette tâche doit encore être effectuée par un humain. Bien que l'intelligence artificielle commence à jouer un rôle dans cette activité, l'audit humain reste essentiel pour améliorer le code source. Cependant, l'audit de code est un exercice délicat. Premièrement, cela peut sembler surprenant, mais il n'existe pas de manière parfaite d'écrire un logiciel.
Pour illustrer ce problème, considérons le paradoxe suivant : en tentant d'améliorer la lisibilité du code, on peut en diminuer la performance. Pourquoi ? Car un code source performant doit être écrit à un niveau bas, utilisant des instructions primitives. Plus on emploie ces instructions, moins le code est lisible et maintenable. Ce n'est qu'un exemple parmi tant d'autres qui démontre qu'il est impossible d'obtenir un code parfait. L'enjeu de l'audit de code est donc de naviguer dans ces eaux troubles pour répondre au mieux aux besoins du projet. Pour cela, il faut d'abord discuter des priorités : performances, maintenabilité, rapidité de livraison des fonctionnalités, ou prévention des régressions ?
Ce n'est qu'après cette analyse qu'on peut évaluer un code source. Et pour l'instant, seuls les humains en sont capables, car il n'est plus possible d'appliquer des règles génériques. De notre côté, on pense que cette situation ne changera pas de sitôt, et que, même si l'IA peut assister dans l'amélioration de la qualité du code, elle ne pourra pas remplacer l'expertise humaine.
Ce que sait faire un humain, et qui reste hors de portée d'une machine, c'est la capacité à gérer des contextes d'applications complexes, avec de nombreux modules interagissant entre eux. La capacité d'abstraction d'un développeur expérimenté est toujours supérieure.
Enfin, une compétence primordiale de l'audit de code est de remettre en question la fonctionnalité même du code. Il n'est pas rare qu'en cherchant à comprendre et à améliorer un code, on conclue que celui-ci est inutile et pourrait être conçu différemment.
Après ce long préambule, nous pouvons détailler les points importants à examiner lors d'un audit :
Lorsque nous abordons la question de la qualité du code, le développeur se trouve au centre de la discussion et devrait être la principale priorité en termes d'investissement si l'on souhaite améliorer la qualité globale de nos livrables.
La formation joue un rôle crucial à cet égard, agissant sur plusieurs fronts. Tout d'abord, sur le plan humain, une entreprise prospère a besoin d'une équipe motivée et qualifiée pour accomplir les tâches qui lui sont confiées. Ainsi, la formation est essentielle pour valoriser les compétences de vos développeurs. Ensuite, du point de vue du code à proprement parler, un développeur qui acquiert, comprend et applique des concepts visant à améliorer la qualité du code le fera de manière durable, contribuant ainsi à la réussite continue des projets. Enfin, en participant à la revue croisée des "merge requests" ou "pull requests" de son projet, il favorisera également le développement des autres membres de l'équipe.
Le rôle du DevOpsEnsemble de techniques permettant l'intégration, les tests et le déploiement d'une application. dans l'assurance de la qualité du code est essentiel et se manifeste à travers plusieurs aspects clés.
Tout d'abord, en favorisant l'intégration continue (CI), le DevOps encourage une pratique où les développeurs fusionnent leurs modifications de code dans une branche principale plusieurs fois par jour. Cette approche permet une détection rapide des erreurs de code, facilitant ainsi leur correction immédiate. De même, le déploiement continu (CD) est facilité par le DevOps, automatisant les tests et le déploiement des modifications dans l'environnement de production après leur intégration, réduisant ainsi les risques d'erreurs de déploiement et assurant une livraison plus rapide du produit.
Parallèlement, le DevOps encourage la collaboration entre les équipes de développement et d'exploitation, favorisant une communication plus fluide, une résolution rapide des problèmes et une amélioration globale de la qualité du code. L'automatisation des tests est également un pilier du DevOps, permettant une détection précoce des erreurs et des problèmes de qualité du code, libérant ainsi du temps pour les développeurs afin qu'ils puissent se concentrer sur la résolution des problèmes plutôt que sur la recherche des erreurs.
On l'aura compris, de nombreux outils sont à votre disposition pour améliorer la qualité d'un code. Cependant, dans un monde numérique où la qualité du code source est l'essence même du bon fonctionnement d'un système d'information, que ce soit l'IA, le DevOps, etc. Rien ne remplace à 100% l'humain pour assurer sa qualité.
Si vous souhaitez vous faire accompagner ou simplement avoir un avis sur votre démarche d'amélioration du code source de vos applications, nos experts en développement seront ravis d'échanger avec vous sur le sujet !
Avoir des applications, des sites web et des applications mobiles dernier cri est un point essentiel pour gagner et fidéliser ses clients et utilisateurs. Mais, à partir de deux applications, il devient difficile d’avoir un suivi réel de leur comportement
Découvrez la planche #54 !
Comment installer et structurer un projet avec le framework PHP incontournable Symfony !