France World

Tirer parti de l’IA pour augmenter considérablement la productivité des développeurs de logiciels

Pour devenir suffisamment productifs et compétents, les développeurs qui découvrent les applications logicielles nécessitent souvent des mois, voire des années, de formation en cours d’emploi pour éviter de commettre des erreurs dangereuses qui mettent les systèmes en danger. Discerner la véritable intention de la fonctionnalité dans le code n’est pas une mince affaire, et les développeurs passent aujourd’hui environ 75 % de leur temps à rechercher dans le code source pour identifier le code représentant la fonctionnalité qui doit être modifiée ou modernisée.

Alors que les outils de recherche de code, les linters et les outils d’analyse statique et dynamique peuvent tous aider les développeurs à améliorer considérablement leur efficacité et leur efficacité, un trop grand nombre de ces outils sont insuffisants lorsqu’il s’agit d’identifier réellement les lignes de code spécifiques qui nécessitent une attention particulière – en particulier avec la façon dont empêtré dans un système que le code est souvent.

Les approches actuelles utilisées par l’IA d’aujourd’hui aident à améliorer ce défi, mais elles sont insuffisantes à bien des égards. Heureusement, l’utilisation d’une nouvelle approche de l’IA améliore considérablement la capacité d’un développeur à identifier efficacement les lignes de code spécifiques pertinentes pour les tâches sur lesquelles il passe énormément de temps chaque jour.

Les lacunes des outils d’aujourd’hui

Alors que les référentiels de logiciels continuent de croître sans contrôle jusqu’à des tailles sans précédent, les responsables de la maintenance et de la préservation des fonctionnalités d’un système disent qu’il devient de plus en plus difficile de trouver des bogues dans le code sans l’aide de la machine. Encore pire, le débogage consomme environ la moitié du temps d’un développeur, et corriger puis valider le correctif d’un seul bogue peut prendre des jours, des semaines, voire plus.

De la localisation de bogues à la réparation de programmes et à la synthèse de code, les outils d’aujourd’hui peuvent être utiles pour analyser des millions de lignes de code, signaler les erreurs et suggérer des correctifs ou des bonnes pratiques, mais un certain nombre de défis subsistent dans les outils de recherche de code existants. La navigation dans le code dans un outil comme Sourcegraph accélère la vitesse à laquelle les développeurs peuvent construire un modèle mental du code, les aidant à comprendre les parties de l’univers du code qui sont les plus pertinentes et importantes, mais l’outil ne construit pas réellement le modèle mental . L’outil ne rapproche le développeur que du code qui pourrait être pertinent pour le comportement recherché, mais le développeur doit reconstituer ce modèle mental. Avec le temps, le défi mental et les erreurs que cet effort peut être, les humains sont finalement faillibles même s’ils utilisent les meilleurs outils disponibles pour les aider.

Par exemple, les vulnérabilités de sécurité sont assez simples à identifier avec les outils actuels, mais se concentrer sur tout le code pertinent à corriger est difficile et prend beaucoup de temps, bien plus que d’écrire le programme en premier lieu. Souvent, le code pertinent est dispersé dans de nombreux fichiers, ce qui augmente la complexité de la tâche. Lors du débogage de programmes inconnus, les développeurs commencent généralement le processus par une question « pourquoi » sur le comportement de leur programme, mais ils doivent conceptualiser cette question en une série d’actions et de requêtes pour résoudre le problème en question. En conséquence, les programmeurs doivent simultanément garder une trace de plusieurs aspects du chemin d’exécution détaillé du programme, cependant, la capacité de le faire est incroyablement difficile, même pour les développeurs les plus expérimentés.

Si un programmeur ne parvient pas à comprendre comment le changement de code dans une zone du code affecte le système dans son ensemble, même un ajustement mineur peut casser l’ensemble du système. Puisqu’il est important que les développeurs comprennent ce que fait réellement une application, les débogueurs ne sont pas utilisés aussi largement qu’on pourrait s’y attendre, en particulier dans les environnements de programmation fonctionnels.

Malheureusement, même les outils d’analyse statique et dynamique, les outils de recherche et les linters les plus avancés sont extrêmement inefficaces pour transmettre ces connaissances. Qu’il s’agisse de dessiner de jolies images, de tracer du code, de voir comment le code se comporte avec des données spécifiques en entrée ou de fournir un résumé des mots recherchés suivi de modifications complexes, ces outils aident les développeurs à identifier le code pertinent de différentes manières, mais les développeurs doivent toujours conceptualiser pour mettre en évidence l’intention des développeurs précédents codés dans le logiciel et révéler le bogue qu’ils cherchent à corriger. En fin de compte, même avec les outils les plus avancés, les développeurs de logiciels humains doivent encore construire un modèle mental de ce que fait le code en déchiffrant directement le code pour correspondre au comportement qu’ils cherchent à changer afin qu’ils puissent effectivement modifier des éléments complexes et systèmes critiques.

Tirer parti de la puissance de l’IA pour surmonter les lacunes

D’Intel à Amazon en passant par Microsoft, certaines des plus grandes entreprises technologiques du monde se tournent vers et créent des outils basés sur l’intelligence artificielle qui proposent des extraits de code aux développeurs pendant qu’ils codent. En tirant parti de l’IA, les développeurs constatent des gains de productivité, une réduction du temps passé à écrire du code et une atténuation des risques.

Cependant, en utilisant l’IA d’une manière nouvelle, le référentiel de code peut devenir un référentiel de connaissances qui représente le code source de la même manière qu’un humain pense au monde, en cause et en effet. Lorsque les outils basés sur l’IA connaissent chacun des comportements dans le code source, les outils peuvent alors « collaborer » avec les développeurs pour se concentrer sur le code qui doit changer, sans rechercher et comprendre tout le code environnant. Utiliser l’IA de cette manière permet d’augmenter la productivité des développeurs de plusieurs ordres de grandeur.

En permettant aux développeurs de demander à ce référentiel de connaissances le code spécifique d’un comportement, l’IA aide les développeurs à traiter uniquement le code pertinent, permettant ainsi aux développeurs d’apporter des modifications en toute confiance qu’ils ne briseront pas l’ensemble du système. Mieux encore, les développeurs peuvent « proposer » un changement pendant qu’ils codent sans recompiler ni archiver le code, de sorte que l’utilisation de l’IA atténue les risques en vérifiant si le changement est isolé. Cette capacité est également étendue au pipeline CI/CD en demandant à l’IA de vérifier le code après chaque build pour garantir que le comportement ne changera jamais à l’avenir.

L’utilisation de l’IA de cette manière concentre un développeur uniquement sur le code qui compte, sans la charge cognitive excessive de la compréhension du code qui n’est pas pertinent pour la tâche à accomplir. Contrairement aux outils de recherche de code, aux linters et aux outils d’analyse statique et dynamique, L’IA permet en fin de compte aux développeurs d’effectuer en toute sécurité, efficacement et efficacement les modifications nécessaires.

Frères Steve

En tant que président de Phase Change Software, Steve apporte plus de 30 ans d’expérience dans des organisations liées à la technologie avec des rôles de direction, techniques et commerciaux dans des secteurs tels que les services financiers, les soins de santé et les services. Auparavant, Steve a occupé les postes de PDG chez Ajubeo et de vice-président exécutif et CIO pour Urban Lending Solutions. Steve est diplômé de l’Université du Colorado à Boulder et détient un baccalauréat en philosophie et un baccalauréat en systèmes d’information. Steve est un fier père de deux garçons, est un mentor chez Galvanize et réside à Golden, CO.

Source

L’article Tirer parti de l’IA pour augmenter considérablement la productivité des développeurs de logiciels est apparu en premier sur zimo news.