IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les défis croissants du code généré par l'IA : le code généré par l'IA pourrait augmenter la charge de travail des développeurs et accroître les risques,
Selon Harness

Le , par Bruno

67PARTAGES

7  0 
L'intelligence artificielle (IA) est censée faciliter le travail des développeurs, mais selon Harness, le code généré par l'IA pourrait en réalité tripler leur charge de travail dans l'année à venir. L'augmentation du volume de code livré accroît les risques de failles et de vulnérabilités si les tests et les mesures de sécurité ne sont pas rigoureusement appliqués. Bien que neuf développeurs sur dix utilisent déjà des outils d'IA pour accélérer la livraison de logiciels, cette tendance nécessite une vigilance accrue à chaque étape du cycle de vie du développement logiciel (SDLC) pour prévenir les incidents de sécurité.

L'utilisation de solutions d'intelligence artificielle générative pour produire du code informatique permet de rationaliser le processus de développement de logiciels et facilite l'écriture de code pour les développeurs de tous niveaux de compétence. L'utilisateur saisit un texte décrivant ce que le code doit faire, et l'outil de développement de code d'IA générative crée automatiquement le code. Il peut également moderniser le code existant et traduire le code d'un langage de programmation à un autre.


Harness propose d'utiliser davantage l'IA pour automatiser l'analyse des changements de code, tester les failles, et s'assurer que les déploiements peuvent être rapidement annulés en cas de problème. L'intégration de la sécurité à chaque phase du SDLC et l'automatisation des processus de surveillance des composants logiciels sont essentielles. Finalement, en adoptant des mesures robustes d'assurance qualité et de sécurité, les entreprises peuvent réduire les charges de travail des développeurs tout en augmentant la sécurité et la conformité.

Optimisation du processus de codage par l'IA générative

L'IA générative pour le codage est possible grâce aux récentes percées dans les technologies des grands modèles de langage (LLM) et du traitement du langage naturel (NLP). Elle utilise des algorithmes d'apprentissage profond et de grands réseaux neuronaux formés sur de vastes ensembles de données de divers codes sources existants. Le code d'entraînement provient généralement d'un code accessible au public produit par des projets open source.

Les programmeurs saisissent des invites en texte clair décrivant ce qu'ils veulent que le code fasse. Les outils d'IA générative suggèrent des extraits de code ou des fonctions complètes, ce qui rationalise le processus de codage en gérant les tâches répétitives et en réduisant le codage manuel. L'IA générative peut également traduire le code d'un langage à un autre, rationalisant ainsi la conversion du code ou les projets de modernisation, tels que la mise à jour des applications existantes en transformant COBOL en Java. Même si le code produit par l'IA générative et les technologies LLM devient plus précis, il peut toujours contenir des défauts et doit être revu, édité et affiné par des humains. Certains outils d'IA générative pour le code créent automatiquement des tests unitaires pour faciliter cette tâche.

L'IA générative, le "low-code" et le "no-code" permettent tous de générer du code rapidement. Cependant, les outils "low-code" et "no-code" dépendent de modèles et de bibliothèques de composants préconstruits. Ces outils permettent aux personnes n'ayant pas de compétences en matière de codage d'utiliser des interfaces visuelles et des commandes intuitives telles que le glisser-déposer pour créer et modifier des applications rapidement et efficacement, tandis que le code proprement dit reste caché en arrière-plan. Les logiciels d'IA générative pour le code, quant à eux, n'utilisent pas de modèles ni de bibliothèques de composants. Le logiciel lit les invites en langage clair d'un développeur et suggère des extraits de code à partir de zéro qui produiront les résultats souhaités. Alors que les outils "low-code" et "no-code" s'adressent généralement aux non-développeurs et aux utilisateurs professionnels, les développeurs professionnels et les autres utilisateurs peuvent utiliser les logiciels d'IA pour la génération de code.

Exemples d'outils d'IA de génération de code actuellement disponibles

IBM watsonx Code Assistant : IBM watsonx Code Assistant aide les développeurs à écrire du code en utilisant des recommandations générées par l'IA, quel que soit leur niveau d'expérience. Les développeurs peuvent formuler des demandes en langage clair ou utiliser le code source existant pour générer du code pour des cas d'utilisation ciblés. Dès le départ, watsonx Code Assistant fournit des modèles pré-entraînés basés sur des langages de programmation spécifiques afin de garantir la confiance et l'efficacité pour une génération de code précise.

Github Copilot : Github Copilot est un modèle d'IA pré-entraîné et un outil de complétion de code qui écrit du code dans de nombreux langages, notamment JavaScript, Go, Perl, PHP, Ruby, Swift et TypeScript, et fonctionne avec HTML et CSS. Il utilise l'apprentissage automatique pour suggérer du code en fonction du contexte, peut analyser votre code à la recherche de vulnérabilités et est disponible en tant qu'extension pour les environnements de développement intégrés (IDE) tels que Visual Studio Code, Visual Studio, Neovim et JetBrains. GitHub Copilot utilise du code disponible publiquement à partir des dépôts GitHub et est alimenté par OpenAI Codex, basé sur GPT-3.

TabNine : TabNine est un assistant de code IA qui apprend de la base de code sur laquelle on travaille et fournit en temps réel la complétion de code, le chat et la génération de code. Il comprend le formatage du code, la détection du langage et la documentation. TabNine prend en charge Java, Python, JavaScript, SQL et d'autres langages courants, et s'intègre dans des éditeurs de code tels que VSCode, IntelliJ et PyCharm.

Parmi les outils de codage d'IA générative, on trouve Ask Codi, CodeT5, WPCode, Codeium, CodePal, mutable.ai et Codegen. Codegen, en particulier, est un outil d'intelligence artificielle qui facilite la traduction des conceptions en code pour les développeurs. Cependant, 62 % du code produit présente des erreurs potentielles au niveau des API, susceptibles d'entraîner des impacts imprévus s'ils sont intégrés dans un logiciel en production. Cette réalité soulève des inquiétudes quant à l'augmentation du volume de code livré, augmentant ainsi le risque de failles et de vulnérabilités, selon les arguments avancés par Harness.

Défis de sécurité et de gestion dans la génération de code par l'IA

L'augmentation du volume de code généré par les outils d'intelligence artificielle pose un défi majeur en termes de sécurité et de gestion des vulnérabilités. Bien que l'automatisation et la génération de code puissent considérablement accélérer le processus de développement, elles introduisent également de nouveaux risques. Si les tests et les mesures de sécurité ne sont pas rigoureusement appliqués à chaque étape du cycle de vie du développement logiciel, il devient presque inévitable que des failles passent inaperçues et soient déployées en production.

La rapidité avec laquelle le code est produit grâce à l'IA peut surpasser la capacité des développeurs à effectuer des tests approfondis et à assurer la sécurité de chaque ligne de code. Sans une infrastructure solide pour la détection et la correction des failles, les erreurs et les vulnérabilités peuvent s'accumuler, augmentant le risque d'exploits et de temps d'arrêt coûteux. La complexité accrue et la vitesse du développement exigent des outils de tests automatisés et des processus de sécurité intégrés pour compenser les limitations humaines.

Cette dépendance accrue aux outils d'IA pour la génération de code peut entraîner une réduction de la vigilance humaine, où les développeurs pourraient faire excessivement confiance aux suggestions de l'IA sans une vérification rigoureuse. Cette approche peut devenir dangereuse, car même les systèmes d'IA avancés peuvent générer du code défectueux ou vulnérable. Une approche équilibrée, combinant l'efficacité de l'IA avec une supervision humaine minutieuse, est essentielle pour garantir la qualité et la sécurité du code.


Les suggestions de code générées automatiquement peuvent accroître la productivité des développeurs et optimiser leur flux de travail en fournissant des réponses directes, en gérant les tâches de codage de routine, en réduisant la nécessité de changer de contexte et en conservant l'énergie mentale. Elles peuvent également aider à identifier les erreurs de codage et les failles de sécurité potentielles.

Martin Reynolds, directeur technique chez Harness, explique que l'IA générative a révolutionné le travail des développeurs en permettant de réaliser des projets qui auraient pris huit semaines en seulement quatre semaines. Cependant, avec l'augmentation du volume de code livré, le potentiel d'erreurs et de vulnérabilités croît également si les développeurs ne procèdent pas à des tests rigoureux. Bien que l'IA ne crée pas de nouvelles failles de sécurité, elle accroît la quantité de code traversant des failles existantes, augmentant ainsi le risque de vulnérabilités et de bugs, à moins que des efforts supplémentaires ne soient déployés pour tester et sécuriser le code.

Harness préconise une réponse basée sur davantage d'IA, utilisée pour analyser automatiquement les modifications de code, tester les failles et les vulnérabilités, évaluer l'impact des risques, et garantir la possibilité d'annuler instantanément les problèmes de déploiement. Il est crucial de maintenir des standards élevés de tests et de sécurité pour gérer les risques associés à l'augmentation du volume de code. Les organisations doivent investir dans des outils de tests automatisés, des audits de sécurité réguliers et des formations continues pour les développeurs afin de naviguer efficacement dans ce nouvel environnement technologique. L'équilibre entre l'innovation rapide et la rigueur en matière de sécurité est la clé pour tirer pleinement parti des bénéfices de l'IA sans compromettre la fiabilité et la sécurité des logiciels.

Source : Harness

Et vous ?

Quel est votre avis sur l'utilisation des outils d'IA pour générer du code ?

Comment les développeurs peuvent-ils s'adapter efficacement à l'augmentation du volume de code généré par l'IA sans compromettre la qualité et la sécurité des logiciels ?

Voir aussi :

Génération de code à l'aide de grands modèles de langage : 62 % du code généré contient des erreurs d'API, qui auraient des conséquences inattendues si le code était introduit dans un logiciel réel

Codegen, un outil d'IA qui facilite le passage de la conception au code, il peut aussi nuire à la créativité, à la curiosité et à l'apprentissage des développeurs

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 30/09/2024 à 15:56
Le fait de pouvoir lire sur developpez.com des études qui disent le contraire c'est un plus, contrairement aux médias d'opinion qui ne vont s'appesantir que sur un seul coté de l'histoire.
Encore plus utile que les études, c'est de pouvoir lire ici sur le forum du club les témoignages des vrais professionnels, c'est bien plus intéressant que de lire des articles moisis publiés dans les médias génériques écris n'importe comment par des journalistes qui n'y connaissent rien.

A titre personnel, je suis témoin du fait qu'en entreprise le code généré par l'IA est une plaie, c'est bourré de failles, mal écrit, et c'est suffisamment illisible pour être presque impossible à corriger et à faire évoluer, c'est donc un désastre.

Donc après le junior imposteur qui copie du code merdique trouvé sur stackoverflow, voila le baltringue qui colle en entreprises du code donné par chatgpt, qui lui même à pompé un code merdique trouvé sur stackoverflow, quel progrès !
Après l'IA peut être utile dans certains cas, comme par exemple aider à trouver des bugs, mais ensuite c'est au développeur de corriger et de fournir un code fiable, bien écris et lisible.

Du coup les entreprises ne veulent plus embaucher de juniors biberonnés à l'IA, ils préfèrent garder leur vieux développeurs qui codent encore à la main à l'ancienne, avec un cerveau et un clavier
12  0 
Avatar de OuftiBoy
Membre éprouvé https://www.developpez.com
Le 30/09/2024 à 15:26
et bonjour à tous.

Depuis que l'IA est sur toutes les lèvres, on a droit à un article qui nous dit que c'est la panacée, suivit d'un article disant excatement le contraire.

Soit, il faut bien nourrir le site, ce qui succite le débat. Mais devant toute cette frénésie autours de l'IA, ne serait-il pas temps de faire une pause et de débattre du fond des problèmes ou des avantages de ce que propose l'IA, et plus particulièrement de l'IAG ?

L'IA est utilisée dans plusieurs domaines, qui ont des "spécificités" qui lui sont propre. Je vais prendre 4 domaines.

  • Dans l'imagerie médicale, l'IA peut comparer des milliers de radiographies pour assister un docteur spécialisé dans ce domaine, et l'aider a voir ce qu'il n'aurait pas vu, et permettre de poser un diagnostique plus affiné, permettant d'en déduire le meilleur traitement a effectuer par la suite. C'est une bonne chose, tant pour le patient, le docteur et le budget nécessaire. Cette IA peut faire un travail correct, car les radio qu'on lui a soumise on été préalablement "validée" et lui sont fournies avec le diagnostique donné suite à cette radio. Il y a donc une certaine "fiabilité" des données en entrée. Et dans ce domaine qui se nomme "imagerie médical", cela existait déjà bien avant la frénésie autours de l'IA.
  • Dans la production de texte, le principe de l'IAG, est de fournir/déduire, mot après mot, et en se basant sur la suite des mots précédents, le mot suivant du texte en question. Là aussi il y a un "domaine" et une expertise qui est nécessaire. Si le texte qu'on veut générer est de l'ordre d'un roman de science-fiction, les entrées donnée à l'IA devrait, éviter de se baser sur des recettes de cuisine française, chinoise ou arabe. Ici aussi, l'importance de sur quoi a été fournie l'IA est primordiale. Mais c'est déjà plus vaste et donc plus difficile a contrôler. Le danger étant de 2 natures. Soit les données en entrée sont bien filtrées, et ce qui en ressortira manquera fortement d'imagination, soit, si elles mal filtrées, des absurdités (ou Hallucination) seront fortement présente en sortie. Il n'y a donc pas vraiment d'intérêt à l'utilisation d'une IA.
  • Pour un documentaire sur un sujet précis, l'IA qui aide a produire ce documentaire, ne devrait être alimentée que par données précises est validées existante sur le sujet du documentaire. Ici aussi, une recette de choucroute alsacienne ne peut pas apporter à l'IA de quoi sortir un texte pertinent sur le sujet/domaine d'un documentaire. Comme dans le point précédent, l'IA produira un documentaire ressemblant très fortement à d'autres, où sera plus ou moins "farfelu". Quelle est l'avantage de l'IA ?
  • De la cas d'une aide au "codage", l'IA ne devrait également qu'être alimentée par des codes sources validés, exempts de bug, et ne portant que sur le problème que le code doit résoudre. Ce qui est humainement impossible. On utilise des techniques très différente pour construire un site Web ou un compilateur.


Il me semble dont, que pour qu'une IAG soit fiable, qu'il lui faut un entrainement de qualité, et qu'à de rares execptions près, cette "qualité" est difficilement réalisable, pour ne pas dire humainement impossible. C'est certainement la cause des fameuses Hallucinations, car une IAG qui a pour entrée tout ce qui est disponible sur internet, n'est pas capable de connaitre le vrai du faux des informations collectées.

Dans notre domaine, le développement, l'aide d'une IAG pour aider au développement d'un site web, ou du guidage précis d'un missile, semble donc une mauvaise bonne idée. Le code générer par une IAG doit donc être scupuleusement inspecté, ce qui demande certainement autant de temps qu'une solution, écrite à la main par un humain ayant concience de la nature complète du problème a réssoudre.

Dans le développement, comme dans d'autres domaines, avoir une connaissance "métier" du domaine spécifique dans lequel on travail est donc également très importante. Ce "domaine/métier" semble difficile a spécifier pour une IAG. Il est déjà assez difficile pour un humain de comprendre la demande d'un client, d'en faire une spécification, puis de générer du code pour cette spécification. Cela demande souvant des aller-retour entre ce que veut le client, la maise à jour de la spécification, et donc de comment implémenter cette spécification.

Si l'IA peut aider, dans le domaine du développement, ce ne peut-être fait relativement sereinement, que sur des petits bouts de code que le développeur doit ensuite intégré dans son propre code. Si l'architecture du code a été founie par l'IA, il faut à ce dévoloppeur comprendre cette dernière pour pouvoir y insérer du code générer par l'IAG.

Dans la balance productivité/qualité, le rôle d'un bon développeur est donc primordiale. Il est facile d'en déduire qu'au fur et à mesure que disparaîtront ces développeurs compétants, la qualité ne pourra que se dégrader.

D'une manière générale, l'IA nous fait entrer petit à petit dans un cercle vicieux, où l'IA sera de plus en plus présente, et les moyens de contrôler son travail de moins en moins présents.

Ceci tout simplement parce que ce qui fait la "nature" même d'un bon développeur, c'est sa créativité, sa profondeur d'analyse, sa réfexion, sa compétence, son expérience. Et je connais peu de développeurs qui seraient attirés par faire une maintenance permanente d'un code générer par une IA.

Un développeur aime créer, ce qui lui sera enlever par l'IA. Tout comme d'en d'autres domaines, la créativité s'éteindra petit à petit, jusqu'à un point de non retour. Il me semble donc urgent d'attendre avant qu'il ne soit trop tard.

BàV et Peace & Love.
8  0 
Avatar de PhilippeGibault
Membre éprouvé https://www.developpez.com
Le 01/10/2024 à 14:12
Notre métier n'est pas de faire du code qui marche, mais de faire du code qui dure.

Et la nuance est là.

Un code qui dure est un code qui répond au besoin fonctionnel, mais qui est durable dans le temps.

Mais un code qui marche n'est pas forcement durable dans le temps.

Je considère que notre métier consiste aussi à laisser la meilleure architecture de code pour qu'elle soit la plus durable possible.

Surtout que la dette technique a un coût:
https://www.premaccess.com/qu-est-ce...-la-maitriser/

C'est la différence entre un bon développeur qui va challenger son code pour le faire tenir sur la durée, et un mauvais développeur qui va juste faire le minimum et faire un machin-chose qui marche, ne faisant même pas de TU des fois.

La dernière catégorie est appelé le "Monkey Codeur".

De mon point de vue, je pense que l'IA va remplacer le Monkey Codeur. Et vu les enjeux économiques que représente la dette technique.
Vu les pertes économiques mais aussi sociales que représente la dette technique, je ne pleure pas la disparition du Monkey Codeur.

Par contre, je ne m'en fait pas pour le codeur qui essaye de challenger son code pour le faire durer.
Car là, il faut une intelligence humaine.

Et là, je ne pense pas que l'IA peut remplacer.
8  0 
Avatar de calvaire
Expert éminent https://www.developpez.com
Le 21/10/2024 à 16:50
je présuppose que tous le monde dans mon équipe utilise chatgpt ou équivalent.
je viens de regarder les stats de notre gitlab, et je constate la meme chose:
1122 merge request en 2023
en 2024 on est à 1087 actuellement

sachant que 1 merge request dans notre équipe est égal à 1 tache jira.
la nature des taches entre 2023 et 2024 n'a pas vraiment changé sur mon projet.

donc visiblement pas de gains à la clé.

maintenant perso je reviendrais pas en arrière, les llm sont de bons outils, c'est vraiment top quand on cherche un truc ou qu'on cherche a faire quelque chose sans trop savoir comment faire.

cas concret: je cherchait un module ansible pour faire un truc précis, j'ai demandé a chatgpt, il m'a donné le nom du module et un exemple de code, je suis allé sur la doc d'ansible pour vérifier et voir les arguments, c'est vraiment plus rapide que si j'avais du aller fouiller et lire la doc ansible.

mais il me génère toujours du code faux, voir obsolete parfois, et il est bien incapable de créer un programme informatique complet, il est juste capable d'écrire correctement des fonctions.

enfin chatgpt ou copilot sont des outils "professionnel", il est important de bien se former sur comment écrire des prompts et pour pouvoir l'utiliser, et surtout il faut maitriser son domaine d'expertise. Un gars qui n'y connait rien à l'informatique ne sera pas plus capable de faire un logiciel avec chatgpt. Chatgpt c'est une autocomplétion d'un ide tres avancée, mais un comptable ne sera jamais capable de coder un vrai logiciel.

avec chatgpt le comptable sera plus a l'aise pour coder sa macro excel, mais il ne va pas monter un serveur mongodb, automatiser l'insertions des données et remplacer excel par grafana et enfin integrer les graphs dans une page web ou un client lourd.

ou un domaine plus visuel, chatgpt peut me coder un jeu video basique en 2d sous pygame, mais il est bien incapable de me coder un équivalent call of duty ou autre jeux complexe. Meme un "simple" rayman 2d ou mario 2d chatgpt a vite ces limites.
5  0 
Avatar de Aiekick
Membre extrêmement actif https://www.developpez.com
Le 19/09/2024 à 22:50
en gros il n'y a que les non dev qui pensent que l'IA est sure. je suis pas surprit
4  0 
Avatar de axel1818
Membre à l'essai https://www.developpez.com
Le 01/10/2024 à 8:18
je l utilise dans le codage, uniquement lorsque je n y connais rien sur le sujet de ce que je veux écrire. Évidemment, les tests et verifications qui sont exhaustifs durent très longtemps. Tant que les ia ne sont pas capables de s auto vérifier, car ils ne sont que des copieurs colleurs, donc je n ai aucune confiance dans leurs resultats
3  0 
Avatar de Axel Mattauch
Membre averti https://www.developpez.com
Le 01/07/2024 à 11:50
Juste une suggestion...

Ne serait-il pas plus pertinent de s'appuyer sur l'IA pour tester les codes produits et laisser le codage aux humains?
1  0 
Avatar de chris_FR
Membre régulier https://www.developpez.com
Le 21/09/2024 à 11:32
Ah les commerciaux et le marketing

Croire que l'IA est magique et permet à tout le monde de devenir un Super Développeur sans aucune formation ni expérience ... on y est pas encore

sauf si grâce à l'IA les "devs" font encore plus de conneries et encore plus de bugs ... si ils ne sont pas dégoûtés ils peuvent apprendre plus vite
1  0 
Avatar de DrHelmut
Membre actif https://www.developpez.com
Le 01/10/2024 à 14:15
Comme tout nouvel outil, il faut apprendre à s'en servir. Copilot ne fait pas de miracle, il ne comprend rien à ce qu'il propose, il faut juste des rapprochements sémantiques et statistique.

Si tu ne sais pas coder, que toi même tu ne comprends pas ce qu'il te pond et que tu valides, à qui revient la faute au final ?

À côté de ça, l'outil étant capable de s'inspirer de ce que tu écris, des onglets ouverts, etc, bien utilisé, c'est un gain de temps de taré sur certaines tâches. Un très bon exemple, c'est quand tu reprends du code legacy avec d'énormes manques en terme de tests unitaires en vu d'un refactoring. Tu écris les premiers tout seul, et rapidement, le copilot est capable de proposer en grande part le code des tests à venir. Jamais parfait bien sûr, et c'est normal, et ça ne le sera jamais car, et on ne le répétera jamais assez : il n' y a pas d'intelligence dans ce qu'on appelle IA d'aujourd'hui
1  0 
Avatar de JP CASSOU
Membre confirmé https://www.developpez.com
Le 02/10/2024 à 10:41
Le code généré par l'IA ne fonctionne pas dans la plupart du temps
(exemple: Gradient conjugué multithreadé en Pascal)
1  0