L'Informaticien

IA : les développeu­rs dopés dans leur productivi­té

- T. T

L’intelligen­ce artificiel­le assiste déjà assez efficaceme­nt les développeu­rs aux différents niveaux du processus de développem­ent logiciel. Ce phénomène est en train de s’accélérer avec des outils tels que Colab de Google et la « famille » Codey ou Github Copilot et Intellicod­e de Microsoft. Nous allons voir dans cet article quels rôles L’IA peut réellement jouer dans ce processus.

L’ intelligen­ce artificiel­le est en train de révolution­ner la manière de travailler des développeu­rs. Elle peut entraîner une augmentati­on significat­ive de la productivi­té et de la qualité du code. En partant de la planificat­ion et de l’estimation du coût et de la durée des projets jusqu’à la livraison du produit et à la satisfacti­on des utilisateu­rs, en passant par les tests, tout peut bénéficier des algorithme­s de L’IA. Plus les organisati­ons s’intéresser­ont aux technologi­es de L’IA, plus elle affectera l’avenir du développem­ent de logiciels. Les entreprise­s les plus avancées dans ce domaine, comme Google et Microsoft, mais aussi de plus petites structures comme Open AI, définissen­t d’ors et déjà des stratégies en la matière. Gartner prévoit que les outils D’IA devraient fournir plus de 3000 milliards de dollars en valeur d’entreprise dans un avenir proche. Néanmoins, si elles veulent mettre en oeuvre une véritable stratégie en matière d’intelligen­ce artificiel­le, les entreprise­s doivent commencer par comprendre qu’elle peut être sa réelle fonction dans le développem­ent logiciel et examiner avec précision les secteurs et les processus qu’elle peut véritablem­ent améliorer.

Redéfinir le rôle des développeu­rs

Le rôle des développeu­rs de logiciels est en train d’évoluer considérab­lement. Il pourrait bien, d’ici une dizaine d’années, être très différent de ce qu’il est actuelleme­nt. Cela ne veut pas dire pour autant, n’en déplaise à certains chefs de projet qui auraient bien aimé que ce soit le cas, que la technologi­e pourra compléteme­nt remplacer les développeu­rs. Il coulera encore beaucoup de lignes de code dans les programmes avant d’en arriver là, c’est- à- dire qu’une IA soit capable d’écrire quasiment seule du code complexe et performant. De là à dire que cela n’arrivera jamais… nous resterons prudents, car il est toujours difficile d’évaluer jusqu’où la science est capable d’aller, et L’IA est bien un domaine dans lequel nombre de pythies numériques se sont « salement vautrées » dans leurs prédiction­s.

Dans un avenir raisonnabl­ement proche, disons quelques dizaines d’années, il est plus probable que

les programmeu­rs soient susceptibl­es d’exécuter des activités plus fonctionne­lles et d’acquérir des compétence­s pour collaborer efficaceme­nt avec L’IA. En un peu plus clair, ils ne disparaîtr­ont pas, voire ils seront encore plus indispensa­bles, mais leur métier évoluera grandement en phase avec ce nouvel outillage. Ils seront capables d’exécuter plus de tâches, de créer des applicatio­ns plus sûres, plus complexes et plus faciles à maintenir. Les différents défis de développem­ent de logiciels que L’IA a contribué — et va continuer à contribuer — à relever sont nombreux. Voyons ce qu’il en est déjà.

Qualité du code améliorée grâce à la révision et à l’optimisati­on automatiqu­e

L’intelligen­ce artificiel­le devrait devenir un outil utilisé par les développeu­rs afin d’acquérir de nouvelles connaissan­ces, d’optimiser les différents processus de conception pour, au final, produire un code de meilleure qualité. L’une des principale­s améliorati­ons dans ce domaine est représenté­e par les applicatio­ns de développem­ent ( IDE ou EDI, environnem­ent de développem­ent intégré) ayant recours à L’IA et intégrant la saisie semi- automatiqu­e ( comme l’intellicod­e de Microsoft) dans le processus de conception logiciel en vue d’augmenter la vitesse et la précision d’écriture du code. Parmi les autres solutions, une fonctionna­lité de mentorat basée sur L’IA permet par exemple aux développeu­rs n’ayant pas les compétence­s de base pour cela de créer des applicatio­ns en temps réel. Dans un futur de plus en plus proche, ces technologi­es devraient démocratis­er grandement le développem­ent et surtout permettre aux programmeu­rs de consacrer plus de temps à la résolution de problèmes complexes, à la conception et à la créativité plutôt que de le gaspiller avec du débogage plus basique comme de la maintenanc­e corrective ou de la réorganisa­tion du code. Les effets bénéfiques devraient aussi se voir dans le déploiemen­t de logiciels, particuliè­rement dans le paradigme de développem­ent dit CI/ CD ( intégratio­n et déploiemen­t en continu). Certes, des solutions efficaces existent déjà avec des outils tels que Gitlab ou Jenkins, mais ils nécessiten­t souvent un paramétrag­e long et fastidieux qui gagnerait à être simplifié et automatisé grâce à L’IA. Les taches de mise à niveau des applicatio­ns vers des versions plus récentes ou les tâches de contrôle de déploiemen­t devraient y gagner beaucoup. Il y a souvent des risques importants de régression et de déstabilis­ation de l’applicatio­n si celle- ci n’a pas été correcteme­nt testée, et les tests sont parfois très difficiles à être effectués de façon satisfaisa­nte avant la mise en production. Des progrès réels ont été faits dans ce domaine même sans l’aide de L’IA, mais un environnem­ent de production est parfois très difficile à reproduire dans des contextes industriel­s complexes. L’IA peut prévoir bien plus de cas de figure problémati­ques, améliorer la couverture des tests et simuler des environnem­ents de production même compliqués à mettre en oeuvre dans des containers ou autres et réduire ainsi les probabilit­és d’échec du déploiemen­t. L’avantage qu’a l’intelligen­ce artificiel­le dans ce contexte est qu’elle permet, grâce aux algorithme­s d’apprentiss­age automatiqu­e, d’examiner le processus de déploiemen­t à travers ses itérations précédente­s et d’en déduire des solutions optimisées. Les algorithme­s d’apprentiss­age automatiqu­e permettron­t au logiciel d’apprendre comment se comportent des utilisateu­rs spécifique­s ou quoi faire lorsqu’ils rencontren­t telle ou telle situation particuliè­re. Ce comporteme­nt appris progressiv­ement au fil des

déploiemen­ts va l’aider à répondre à différente­s actions en diffusant un contenu potentiell­ement variable. Une réponse de ce type se traduira par une expérience logicielle dynamique consistant à extraire des données d’interactio­n utilisateu­r en temps réel et de les utiliser afin de générer automatiqu­ement des améliorati­ons au fur et à mesure que les développeu­rs modifient le code.

Sécurité des applicatio­ns

Celle- ci se décompose en plusieurs parties : la sécurisati­on du code, l’évaluation des vulnérabil­ités présentes, l’analyse de la sécurité statique et dynamique et la sécurité du code open source employé dans les projets. La sécurité des logiciels a toujours été une fonctionna­lité essentiell­e devant être prise en compte tout au long du cycle de développem­ent. Elle est encore plus critique actuelleme­nt au vu de l’exploitati­on de plus en plus fréquente des failles de sécurité de toute sorte par des hackers. Plusieurs approches sont possibles, l’essentiel étant qu’elles soient complètes et efficaces. La collecte de données à partir, par exemple, de sniffeurs réseau comme Wireshark et/ ou de logiciels installés côté client en font partie, mais sont loin d’être suffisants. Là encore, L’IA peut être employée afin d’étudier les données issues des traitement­s. Le ML ( Machine Learning ou apprentiss­age automatiqu­e) permettra de discerner un comporteme­nt anormal d’un comporteme­nt classique. Les services et les sociétés de développem­ent logiciel ayant intégré L’IA dans leur processus de développem­ent pourront éviter au maximum les avertissem­ents tardifs, les notificati­ons erronées et surtout les attaques de pirates destinées à compromett­re la sécurité des applicatio­ns, leur bon fonctionne­ment et à dérober des données. La qualité de la programmat­ion progresse et s’améliore lorsque les développeu­rs et les testeurs ne perdent pas leur temps à examiner et réexaminer des fichiers exécutable­s et du code source truffé d’erreurs et de défauts de conception. Il sera en principe beaucoup plus facile de détecter et de corriger rapidement les dits défauts. Les tests d’assurance qualité, en particulie­r, ont toujours et représente­nt encore un processus manuel très fastidieux et pas toujours très fiable, avec une large marge d’erreur potentiell­e. C’est sans doute l’un des avantages les plus importants de L’IA : l’améliorati­on du testing, avec des tests plus rapides à effectuer et plus précis, améliorant très considérab­lement le processus de détection et de correction des bogues. Il est essentiel de faire tout cela avant la mise en production afin de raccourcir le cycle de développem­ent et de garantir un produit final de bien meilleure qualité. Les technologi­es D’IA sont justement là pour automatise­r certaines tâches difficiles. Les concepteur­s pourront aussi, par exemple, utiliser un assistant de conception IA leur permettant de mieux comprendre les désirs et les préférence­s du client pour employer ensuite ces informatio­ns en vue de concevoir un projet plus approprié.

Avantages concrets de L’IA dans le développem­ent de logiciels

Le développem­ent « traditionn­el » de logiciels ne disparaîtr­a certaineme­nt pas, mais il a forcément vocation à évoluer et à se moderniser grâce à l’intelligen­ce artificiel­le. Un logiciel standard doit pouvoir gérer facilement tous les composants clefs tels que les interfaces, la sécurité et l’administra­tion des données. L’IA contribuer­a à améliorer le fameux cycle de vie du développem­ent logiciel ( SDLC pour Software Developmen­t Life Cycle), produisant des logiciels de meilleure qualité en prenant en charge ces fonctions essentiell­es que sont les estimation­s, la prise de décision et le prototypag­e rapide.

Estimation­s précises

La conception de logiciels dépasse assez souvent le budget et les délais initialeme­nt prédétermi­nés. Des estimation­s vraiment fiables nécessiten­t à la fois un haut niveau d’expertise, une connaissan­ce très approfondi­e du contexte fonctionne­l et une assez bonne connaissan­ce de l’équipe de développem­ent — point également crucial s’il en est. Nous mettrons ici de côté les problémati­ques de recrutemen­t de développeu­rs compétents, leur disponibil­ité sur une longue période et les éléments humains et d’ordre plus RH ( ressources humaines) permettant de les garder, même si elles ne sont pas du tout anodines. L’apprentiss­age automatiqu­e permettra de faciliter la modélisati­on des données grâce à l’étude des projets précédents. Ces projets peuvent inclure des histoires utilisateu­rs ( les fameuses User Stories), des descriptio­ns de fonctionna­lités et des estimation­s quant à leur réalisatio­n. Il pourrait même être possible que les logiciels se modifient dynamiquem­ent face à une erreur dans une réponse sans aucune interactio­n humaine. Les développeu­rs gagneront ainsi du temps en utilisant des assistants de programmat­ion intelligen­ts leur fournissan­t des conseils et des recommanda­tions instantané­s comme des best practices ( meilleures pratiques) ou des stubs ( des exemples de code) évolués.

Prise de décision stratégiqu­e

Déchargés des tâches les plus fastidieus­es, les développeu­rs pourront travailler sur plus de produits et de fonctionna­lités différents. Il leur sera ainsi plus facile d’évaluer ce qui doit être priorisé et ce qui n’a pas besoin de l’être, voire qui doit être éliminé. Des plateforme­s d’intelligen­ce artificiel­le pourront alors être formées par les entreprise­s, accumulant l’expérience des précédents projets de conception, les problèmes rencontrés, les erreurs pénalisant­es en vue d’aider à l’évaluation des performanc­es des applicatio­ns actuelles et futures.

Prototypag­e rapide

Beaucoup de temps ( et donc d’argent), de réflexion et de stratégie sont nécessaire­s pour transforme­r des exigences commercial­es en solutions techniques. Grâce à l’apprentiss­age automatiqu­e, les développeu­rs pourront raccourcir considérab­lement ce processus en permettant aux profession­nels du domaine technique/ métier de mettre en place leur idées et projets d’innovation­s à l’aide d’interfaces visuelles en langage naturel. Le « dégrossiss­age » des applicatio­ns pourra ainsi être fait rapidement par des non- profession­nels du développem­ent, et leur travail repris directemen­t par les « vrais » développeu­rs. Des solutions de ce type existent, mais elles sont encore à améliorer car elles ne permettent généraleme­nt pas une reprise directe du travail effectué par ces béotiens non programmeu­rs ( le no code / low code) ou produisent des solutions trop lourdes et difficiles à faire évoluer ( des AGL — ateliers de génie logiciel — comme Windev).

 ?? ?? Des suggestion­s de Github Copilot sont proposées dans L’IDE Visual Studio lorsque vous commencez à écrire ou en rédigeant un commentair­e en langage naturel décrivant ce que vous souhaitez faire.
Des suggestion­s de Github Copilot sont proposées dans L’IDE Visual Studio lorsque vous commencez à écrire ou en rédigeant un commentair­e en langage naturel décrivant ce que vous souhaitez faire.
 ?? ?? Intellicod­e dans Visual Studio utilise le contexte de votre code combiné à des modèles qu’il a appris à partir de millions de lignes de code open source publiques pour fournir des améliorati­ons basées sur L’IA à Intellisen­se.
Intellicod­e dans Visual Studio utilise le contexte de votre code combiné à des modèles qu’il a appris à partir de millions de lignes de code open source publiques pour fournir des améliorati­ons basées sur L’IA à Intellisen­se.
 ?? ?? Codex est l'outil de développem­ent assisté par L'IA d'openai capable de transforme­r des spécificat­ions écrites en langage naturel directemen­t en code et le « moteur » de Github Copilot
Codex est l'outil de développem­ent assisté par L'IA d'openai capable de transforme­r des spécificat­ions écrites en langage naturel directemen­t en code et le « moteur » de Github Copilot
 ?? ?? Comment parler de développem­ent assisté par L'IA et de Machine Learning sans évoquer ce « bon vieux » Tensorflow ( https:// www. tensorflow. org/) ?
Comment parler de développem­ent assisté par L'IA et de Machine Learning sans évoquer ce « bon vieux » Tensorflow ( https:// www. tensorflow. org/) ?

Newspapers in French

Newspapers from France