Pages

dimanche 21 avril 2024

Révolutionner le processus de création des logiciels grâce à l’Intelligence Artificielle Générative

Réinventer chaque phase du cycle de vie des logiciels

D’après la présentation faite par Sébastien Méric 

https://www.linkedin.com/in/sebastien-meric/

 

Depuis plus de 70 ans les informaticiens développent des applications informatiques. Cette activité est encore aujourd’hui très artisanale. Elle souffre de deux maux :

-        La complexité des opérations à effectuer,

-        La faible productivité des développeurs.

Pour y faire face on a adapté la gestion de projet au développement de logiciels avec le modèle en cascade, le cycle en V, les méthodes agiles, … De nombreux outils ont été inventé pour faciliter le travail des programmeurs comme l’identification et le suivi des tâches, la gestion des temps, la rédaction automatique de compte-rendu des réunions ou d’entretien, la rédaction de résumé de ces documents, … Ils sont nombreux et un nombre croissant d’entre eux recourent à l’Intelligence Artificielle mais ils n’ont pas, jusqu’à aujourd’hui, permis de réaliser des gains importants.

Depuis un peu plus d’un an on assiste au développement très rapide de l'Intelligence Artificielle Générative (IAG) et de ses usages. Chaque jour on découvre de nouvelles applications notamment en informatique. Celle-ci sont en train de révolutionner le monde du développement des logiciels, offrant un soutien inestimable à chaque étape du processus, allant de l’émergence de l’idée de la future application (l'idéation) à la fin de l’exploitation de l’application après des années de bons et loyaux services (le décommissionnement).

 L'Intelligence Artificielle Générative (IAG) intervient aux différents stades du projet

 Elle permet d’abord d’améliorer la gestion de projet qu’elle soit faite selon le modèle classique en cascade ou à l’aide d’une méthode agile. Elle permet de :

-        Automatiser les comptes-rendus de réunion, y repérer les tâches et les décisions sans en oublier aucune,

-        Automatiser et optimiser le suivi des tâches,

-        Gérer la répartition des ressources,

-        Estimer l’ensemble des charges y compris celle des utilisateurs et des testeurs,

-        Prévoir les délais et notamment les dates où doivent intervenir les utilisateurs et les décideurs,

-        Préparer les tests,

-        Permettre une planification plus efficace et une exécution du projet plus fluide.

Cette technologie apporte d’abord une valeur ajoutée significative lors de l’étape de conception, notamment pour produire les spécifications. Elle peut :

-        Faciliter le recueil des besoins en offrant aux futurs utilisateurs la possibilité de répondre de manière libre à des questions ouvertes afin de décrire sous forme de texte ce dont ils ont besoins et ensuite d’en faire automatiquement la synthèse sans rien oublier,

-        Rédiger les documents de spécification détaillés (cahier des charges) à partir de textes décrivant ce que la future application doit faire,

-        Proposer des maquettes d'interface utilisateur (écran, état, fichier),

-        Suggérer une architecture logicielle optimales en fonction des besoins spécifiés.

Durant les phases de développement, l'Intelligence Artificielle Générative (IAG) se révèle particulièrement précieuse :

-        Produire automatiquement du code dans le langage qu’on souhaite mettre en œuvre à partir d’une simple description de ce qui est souhaité figurant dans la spécification détaillée,

-        Préparer et automatiser les tests. Il est ainsi possible de rédiger le cahier de tests à partir du code, de proposer des scénarios et de générer les paramètres nécessaires pour effectuer automatiquement les tests à partir de logiciels comme : Selenium de Headspin,

-        Organiser la gestion des bouchons (mise en place et suppression en fin de test),

-        Fournir des commentaires pertinents sur la qualité du code produit par les développeurs, en se basant sur les meilleures pratiques de programmation. Le système peut ainsi suggérer des améliorations du code et notamment des optimisations.

Cette assistance permet aux développeurs de se concentrer sur des aspects plus créatifs et complexes du développement logiciel, tout en assurant une plus grande efficacité et une réduction des erreurs.

On estime qu’avec un système d’IAG comme Copilot, développé par Microsoft à partir de GPT et fonctionnant sur GitHub les gains de productivité sont compris entre 20 et 30 %. Ils ne sont pas faciles à mesurer mais cela semble un ordre de grandeur raisonnable.

 Le rôle de l'Intelligence Artificielle Générative (IAG) dans la vie du logiciel

 Une fois l’application en production il va être nécessaire de la maintenir. C’est une charge de travail conséquente notamment si on ne dispose que d’une documentation incomplète ou, pire, si elle a été perdue ou si elle est obsolète. Avec un logiciel comme ChatGPT il est possible d’améliorer la gestion de la maintenance :

-        Produire à partir d’un code une documentation technique exhaustive et en bon français, même si l’application est très ancienne et qu’aujourd’hui peu de personnes connaissent le Cobol ou le Fortran,

-        Produire automatiquement un diagnostic du code, faciliter le débogage en identifiant les bugs, en suggérant des corrections et même des améliorations,

-        De plus, il est possible de générer du code complémentaire de qualité et performant à partir de simples commentaires pour, par exemple, renforcer des contrôles ou ajouter des résultats dans des sorties,

-        Unifier les noms des variables dans l’ensemble du code de l’application avec des libellés clairs et compréhensibles de façon à faciliter sa lecture,

-        Assister les exploitants afin de planifier et de mettre en œuvre les nouvelles versions de logiciel.

Enfin, les systèmes recourant à l'Intelligence Artificielle Générative (IAG) sont très utiles lorsque l’application est en fin de vie, lors du décommissionnement. Ils permettent à ce moment de :

-        Mieux évaluer les impacts de ces changements,

-        Planifier la transition,

-        Aider à la migration des données vers la nouvelle application,

-        Assurer une clôture de l’application de manière ordonnée et complète.

 En somme, l'Intelligence Artificielle Générative (IAG) n'est pas seulement un outil supplémentaire aux mains des développeurs leur permettant de faciliter leur travail mais c'est, en fait, un véritable partenaire qui transforme la manière dont le développement logiciel est envisagé et réalisé, ouvrant la voie à une ère nouvelle d'efficacité et d'innovation.

 

Ce texte est un résumé de la conférence faite par Sébastien Méric au Club de la Gouvernance des Systèmes d’Information le Mercredi 28 Février 2024 sur le thème : « Révolutionner le processus de création des logiciels grâce à l’Intelligence Artificielle Générative » avec comme sous-titre : « Réinventer chaque phase du cycle de vie des logiciels ». Elle a permis de faire le point sur ce sujet et de répondre à quelques questions clés comme :

-           Comment les systèmes à base d'Intelligence Artificielle Générative (IAG) modifie le cycle de vie des projets ?

-           Est-ce que ces démarches sont compatibles avec des démarches type modèle en cascade ? Et en méthode agile ?

-          Quelles sont les fonctions assurées par les systèmes d’Intelligence Artificielle Générative (IAG) ?

-          Quelles sont les gains de productivité permis par cette approche ? Et quels sont les gains de qualité ?

-        Comment est modifié le travail du développeur ?

-          Peut-on améliorer les spécifications faites par les utilisateurs ?

-          Est-ce que les systèmes d’Intelligence Artificielle Générative (IAG) permettent de rénover une vieille application écrite dans un langage anti-diluvien (réengineering) ?

-          ….

Lire ci-dessous le support de la présentation de l’exposé de Sébastien Méric :

                                                                                                                     Slide

1 – L’IAG accompagne l’entreprise dans toutes ses fonctions          2

2 – L(IAG dans le cycle de vie logiciel                                              4

3 – 5 méthodologies de développement de projets informatiques      5

4 – Quelle couverture du cycle complet                                           11

5 – L’Intelligence Artificielle Générative dans le cycle de

            Développement                                                                     12

6 – L’IAG pour l’idéation                                                                 13

7 – L’IAG pour la conception                                                           15

8 – L’IAG pour le développement                                                    17

9 – L’IAG pour la production du code                                             19

10 – Exemples d’outils de production de code                                20

11 – L’IAG pour le test applicatif                                                    22

12 – L’IAG et la mise en production et déploiement                       26

13 – L’IAG pour faire évoluer l’existant                                          28

14 – L’IAG et le décommissionnement                                            29