L'IA générative a de nombreuses utilisations, mais l'une des applications les plus prometteuses pour les entreprises réside dans les incroyables avantages qu'offre le développement assisté par IA. Grâce aux innovations récemment annoncées, à l'image de Devin AI, le premier ingénieur logiciel basé sur l'IA au monde, l'intégration de l'IA devient une proposition séduisante pour les responsables de la technologie qui cherchent à matérialiser des synergies au sein de leurs processus d'ingénierie et leurs produits livrables.
Les entreprises peuvent aborder de différentes manières l'intégration de l'IA dans le développement de code, en particulier. L'une des possibilités consiste à utiliser des outils tels que GitHub Copilot pour créer automatiquement du code standard et mettre en œuvre une forme de programmation en binôme basée sur l'IA. Une autre option consiste à tirer parti de développeurs basés sur l'IA autonomes tels que Devin AI, qui offrent le potentiel de travailler de manière indépendante, aux côtés de leurs homologues humains.
Le développement assisté par IA offre une multitude d'avantages aux entreprises, et continuera probablement à définir l'avenir du développement. Cependant, il présente également différents risques pour la sécurité, qu'il est nécessaire de maîtriser afin de tirer pleinement parti de la technologie.
On estime que 81 % des développeurs utilisent déjà des assistants de codage basés sur l'IA, à l'image de GitHub Copilot, Tabnine et Amazon CodeWhisperer, pour répondre aux questions et rédiger du code complexe. À mesure que l'IA devient plus avancée et omniprésente, les équipes de développement deviendront probablement encore plus dépendantes d'elle.
L'adoption de l'IA aux fins du développement présente de nombreux avantages potentiels pour les équipes de développement, notamment les suivants :
Améliorer l'efficacité : l'IA peut réaliser automatiquement différentes tâches de développement, parmi lesquelles répondre à des questions simples, écrire du code automatiquement ou concevoir automatiquement des interfaces utilisateur. Ces capacités peuvent permettre d'accélérer la commercialisation et de réduire les coûts de développement, et aident les entreprises à accomplir davantage avec des effectifs réduits. Une étude a conclu que l'utilisation de GitHub Copilot permettait aux développeurs d'accomplir les tâches de codage 55 % plus rapidement. Ce gain d'efficacité peut permettre à une entreprise de réduire ses effectifs ou d'augmenter considérablement le volume de code qu'elle produit.
Atténuer l'épuisement des développeurs : la capacité de l'IA générative à automatiser la création de code standard élimine, pour les développeurs, la nécessité d'écrire du code simple et répétitif. L'amélioration de l'expérience des développeurs réduit le risque d'épuisement ou de renouvellement du personnel résultant de la lassitude des développeurs face à ces tâches. En 2023, 73 % des développeurs ont déclaré avoir été confrontés à l'épuisement à un moment de leur carrière. Pour 60 à 75 % des développeurs, la capacité de l'IA à automatiser ces tâches améliore la satisfaction professionnelle.
Améliorer la qualité du code : en plus de l'écriture du code, l'IA peut également être mise à profit pour détecter automatiquement les bugs, les vulnérabilités et les autres problèmes affectant le code pendant le processus de développement. Pour les entreprises, la détection et la résolution des problèmes avant que le code n'atteigne la phase de production réduisent le risque de consacrer du temps et des ressources à la publication de correctifs ou à des mesures de remédiation résultant d'une violation de données.
Développement spécialisé : l'IA peut rédiger du code spécialisé lorsqu'une équipe de développement ne dispose pas des connaissances et de l'expérience nécessaires pour l'écrire en interne. L'élimination du besoin de recourir à une expertise spécialisée permet de réduire la nécessité de faire appel à des spécialistes externes ou de proposer des conditions incitatives pour attirer du personnel expert.
Former les développeurs et améliorer leurs compétences : l'IA générative offre le potentiel de proposer aux développeurs des formations dédiées et ponctuelles, d'améliorer la sécurité du code et de permettre aux développeurs débutants de s'adapter plus rapidement. En moyenne, les développeurs acceptent 30 % des suggestions de code, et le taux d'acceptation est plus élevé chez les développeurs débutants. Cette approche permet de réduire le coût associé à la gestion des vulnérabilités et permet aux entreprises d'optimiser les capacités de leurs équipes de développement.
L'IA générative est un outil puissant, mais elle n'incarne pas une solution parfaite. Au moment d'évaluer la pertinence et les modalités de l'intégration de l'IA dans les pipelines de développement, les directeurs de la technologie doivent également tenir compte des risques et des répercussions potentielles pour l'entreprise.
Une récente violation de données subie par Samsung offre un excellent exemple des risques qu'entraîne une gestion insatisfaisante de l'IA. L'entreprise avait auparavant interdit l'utilisation de l'IA générative, mais elle a levé cette interdiction dans le but d'améliorer la productivité de ses collaborateurs. En l'espace de trois semaines, l'entreprise aurait transmis à ChatGPT des données de recherche et développement sensibles concernant les semi-conducteurs, ainsi que du code source et des enregistrements de réunions internes, dans le but de corriger des erreurs de code et de générer automatiquement des comptes-rendus de réunions. Ces données sont alors devenues accessibles à OpenAI et pourraient avoir été utilisées pour l'apprentissage de son modèle, pouvant alors entraîner leur exposition à d'autres utilisateurs.
Voici quelques exemples des risques les plus significatifs qu'entraîne le développement assisté par IA :
Fuites de données sensibles : les outils d'IA générative sont conçus pour apprendre continuellement et peuvent se former eux-mêmes à partir des données saisies par les utilisateurs. Les données sensibles et les exemples de code saisis dans un outil d'IA générative peuvent être intégrés au modèle et être présentés à d'autres utilisateurs. En 2023, Samsung a accidentellement divulgué des données sensibles concernant des semi-conducteurs via ChatGPT, et des recherches ont révélé que ces outils peuvent également inclure d'autres données sensibles dans les suggestions, notamment des points de terminaison d'API privées.
Code de qualité inférieure : l'IA générative n'est pas parfaite, et peut générer des réponses incorrectes et du code de qualité insatisfaisante. L'utilisation de code généré automatiquement peut avoir une incidence négative sur l'expérience utilisateur ou introduire des vulnérabilités dans une application.
Compréhension réduite du code : les développeurs sont souvent « d'astreinte », car ils rédigent le code, le comprennent et peuvent remédier à d'éventuels problèmes. Le code généré par IA s'apparente davantage à une « boîte noire », ce qui peut grever la capacité d'une équipe de développement à le corriger en cas d'incident.
Hallucinations de l'IA : pendant le développement, les hallucinations de l'IA peuvent conduire l'IA générative à recommander l'utilisation de packages et de bibliothèques inexistants. Si ces packages ont été créés par un acteur malveillant, ils peuvent injecter des vulnérabilités ou du code malveillant dans les applications de toute personne utilisant les packages recommandés.
Problèmes de licence : les recommandations de l'IA ou le code généré automatiquement peuvent contenir du code tiers, assorti de clauses de licence incompatibles. Par exemple, si l'IA utilise du code assorti d'une licence restreinte, une entreprise peut être contrainte de publier en open source le code auquel elle l'a intégré ou pourrait faire face à des poursuites judiciaires en matière de propriété intellectuelle.
Augmentation des dépenses liées au cloud : le code généré par IA peut transmettre des demandes de services payants ou entraîner l'utilisation inefficace de ressources de stockage et de calcul ou d'autres ressources dans le cloud. Par conséquent, le code non optimisé peut entraîner une augmentation des dépenses liées au cloud.
Enfermement propriétaire : les assistants de codage basés sur l'IA n'en sont qu'à leurs balbutiements, et de nouvelles solutions apparaissent régulièrement. L'intégration d'une solution particulière à un flux de travail peut réduire l'efficacité ou exiger un changement coûteux lorsqu'une nouvelle technologie devient disponible.
L'IA présente de nombreux avantages potentiels et incarne probablement l'avenir du développement. Idéalement, l'IA générative (GenAI) permet aux entreprises de créer du code plus sophistiqué, plus efficace et plus sûr, en consommant moins de ressources et en respectant un calendrier plus strict qu'une équipe de développement entièrement humaine. Les entreprises qui refusent d'autoriser le développement assisté par IA risquent d'être dépassées et de perdre leurs meilleurs talents au profit de celles qui l'accepteront.
Cependant, les CTO qui souhaitent utiliser l'IA pour améliorer leurs processus de développement doivent également prendre en compte et maîtriser les risques que comporte cette technologie. Voici huit pratiques recommandées qui peuvent contribuer à réduire, voire permettre d'éliminer les principaux risques liés au développement assisté par IA :
Valider les recommandations de l'IA : les hallucinations de l'IA sont un problème courant, et ces erreurs peuvent s'avérer extrêmement préjudiciables pour le développement de logiciels. Vérifiez à deux fois l'exactitude du code et des informations générées par un système d'IA avant de les utiliser.
Gérer les risques liés aux données de l'IA : demander à l'IA de répondre à une question sur la programmation ou de générer du code standard comporte un risque relativement faible. En revanche, fournir à l'IA de la propriété intellectuelle sensible afin de rechercher des erreurs ou de poser une question entraîne un risque d'exposition des données. Il est important de former les développeurs à l'utilisation acceptable de l'IA et de mettre en œuvre des mesures contre la prévention des pertes de données afin de maîtriser le risque de fuites de données.
Mettre en œuvre l'approche DevSecOps : l'IA peut rapidement accélérer le développement du code et réduire la compréhension qu'ont les développeurs du code qu'ils rédigent. La mise en œuvre des bonnes pratiques DevSecOps, telles que la création et la validation d'exigences priorisant la sécurité, réduit le risque qu'une faille de sécurité passe à travers les mailles du filet.
Automatiser les tests de sécurité : le code généré par IA peut introduire des vulnérabilités ou du code non fonctionnel dans la base de code d'une entreprise. L'intégration de tests de sécurité, notamment de tests de sécurité d'application statique (SAST, Static Application Security Testing) et de tests de sécurité d'application dynamique (DAST, Dynamic Application Security Testing), au sein de pipelines CI/CD automatisés limite les effets potentiels du code non sécurisé, généré par IA.
Effectuer des tests fonctionnels et non fonctionnels : en plus d'introduire des vulnérabilités, le code généré par IA peut être de qualité inférieure, voire ne pas être fonctionnel. L'exécution de tests unitaires relatifs aux exigences fonctionnelles et non fonctionnelles peut contribuer à garantir que le code est à la fois fonctionnel et performant. La mise en œuvre de la conformité, au moyen de guides de style et de pratiques recommandées en matière de programmation, peut également faciliter l'identification et l'élimination de code problématique.
Surveiller les chaînes logistiques des logiciels : l'IA peut recommander ou utiliser des packages ou des bibliothèques vulnérables, malveillants ou inexistants, comportant des conditions de cession de licence incompatibles. L'exécution d'une analyse de la composition des logiciels (SCA) et la gestion d'une nomenclature logicielle (SBOM, Software Bill Of Materials) permettent d'assurer la visibilité des dépendances des applications et permettent leur validation préalable à leur lancement.
Déployer une protection de l'environnement d'exécution : malgré tous les efforts des développeurs, il est probable que du code vulnérable atteigne la phase de production. Les applications doivent être protégées à l'aide de pare-feu WAF, de solutions WAAP (Web Application and API Protection) et RASP (Runtime Application Self-Protection) ainsi que d'autres mesures défensives susceptibles de bloquer les tentatives d'exploitation de vulnérabilités dans l'environnement d'exécution.
Envisager l'utilisation d'une IA interne : les grands modèles de langage (LLM, Large Language Model) open source permettent aux entreprises d'héberger leurs propres systèmes d'IA. Le déploiement de l'IA en interne réduit les menaces de fuites de données et d'empoisonnement des données d'apprentissage, ainsi que d'autres risques liés à l'utilisation de l'IA générative.
Cloudflare for AI offre aux CTO les outils indispensables pour bâtir, héberger et défendre les pipelines de développement assistés par l'IA, ainsi que les applications qu'ils produisent. Découvrez comment exploiter la puissance de l'IA, tout en mettant en œuvre une sécurité intrinsèque.
Cet article fait partie de notre série consacrée aux nouvelles tendances et évolutions qui affectent les décideurs en matière de technologies aujourd'hui.
Pour découvrir comment simplifier et sécuriser les initiatives en matière d'IA, consultez l'ebook « Le cloud de connectivité : une approche pour reprendre le contrôle de l'informatique et de la sécurité ».
Cet article vous permettra de mieux comprendre les points suivants :
Comment le développement assisté par IA améliore les processus d'ingénierie
Les risques liés à l'utilisation de l'IA pour le développement de logiciels
Huit pratiques recommandées pour réduire, voire éliminer les risques liés au développement assisté par IA