Pages

Affichage des articles dont le libellé est Gestion de projet. Afficher tous les articles
Affichage des articles dont le libellé est Gestion de projet. Afficher tous les articles

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

 

samedi 30 août 2014

Le décret du 1er Août 2014 : le retour de la gouvernance

Sans vouloir être désagréable l’informatique publique n’est pas renommée par son efficacité. Régulièrement la Cour des Comptes constate ces faiblesses : gestion de projets incertaine, manque de compétences, de nombreux doubles-emplois,… Il y a des succès comme la déclaration annuelle de l’impôt sur le revenu avec 13 millions de personnes qui la font sur Internet. Mais à côté de ces réussites il y a aussi des projets ayant quelques difficultés comme Chorus, Louvois, le DMP, l’ONP ,… La liste est longue.
Manifestement l’administration rencontre des difficultés de coordination et de pilotage des projets. Il est aussi possible qu’il existe des problèmes analogues dans le domaine de l’exploitation et des communications avec des risques de duplications et des sous-emplois. Le fait que chaque Ministère dispose de ses propres équipes informatiques et ses propres centres de traitement se comprend dans le cas des plus grandes administrations mais c’est plus difficile à justifier dans le cas des plus petites entités ou des unités décentralisés.
Or, au cœur de l’été un décret a été publié le 1er Août qui va profondément changer la gouvernance de l’informatique publique. C’est une véritable mutation qui remet en question des années de pratiques peu efficaces. Quelles sont ses chances de réussite ?

Le contenu du décret et de l’arrêté

Le décret du 1erAoût 2014  est court. Il ne comprend que 3 articles. Le plus important est le premier : « Le système d'information et de communication de l'Etat est composé de l'ensemble des infrastructures et services logiciels informatiques permettant de collecter, traiter, transmettre et stocker les données sous forme numérique qui concourent aux missions des services de l'Etat. » Ce texte est très important. En effet, il affirme que l’ensemble des applications existantes constitue un système unique quel que soit le Ministère concerné. Autre point important le décret concerne le système d’information et pas uniquement le système informatique. C’est une vision large qui représente une mutation profonde de l’approche traditionnelle.
Pour assurer la cohérence des décisions il définit un principe le système d’information « est placé sous la responsabilité du Premier ministre. ». C’est la centralisation à outrance. Bien entendu il n’a ni le temps ni les compétences nécessaires pour exercer ces responsabilités. Il va donc déléguer ce travail à la Direction Interministériel des Systèmes d'Information et de Communication, la DISIC, qui dépend du Secrétaire d’Etat chargé de la réforme de l’Etat et de lasimplification et de son Secrétariat Général pour la Modernisation de l’Action Publique, SGMAP.
Cependant au paragraphe suivant cette mission est déléguée aux ministres sauf en ce qui concerne les matériels, les réseaux, les « services numériques d’usage partagé » ainsi que les fonctions transversales. En quelques sorte on centralise pour ensuite on décentralise mais en centralisant quand même. Comprenne qui peut !
Il est de plus mis en place à l’article 2 « un conseil du système d’information et de communication ». Il est « placé auprès du Premier Ministre ». Il regroupe les secrétaires généraux des ministères et le directeur de la DISIC. Cet organe est chargé de « la définition et la mise en œuvre du cadre stratégique commun », « du cadre commun de gestion de la performance » et « des modalités de la mutualisation et de la gouvernance ». On note l’importance accordé au pilotage de l’activité informatique.
Enfin, l’article 3 précise chaque ministre doit établir un « plan d’investissement couvrant les projets et activités du ministère et des organismes placés sous sa tutelle en matière de système d’information et de communication ». Fini les schémas directeurs, vive les plans d’investissement.
Ce dispositif est complété par un contrôle des projets supérieurs à une somme qui reste à définir. Il est effectué par le directeur de la DISIC. Il a un mois pour approuver le projet ou demander « tout complément d’information nécessaire ».
Curieusement ce décret est complété par un arrêté qui revient sur les décisions précédentes : « A titre transitoire, délégation est donnée aux ministres pour les infrastructures, les services numériques d'usage partagé et les systèmes d'information relatifs à des fonctions transversales des administrations de l'Etat. » Une fois de plus on fait un pas à gauche puis un pas à droite. Les voies du seigneur sont impénétrables. On peut simplement craindre que le régime transitoire risque de durée.

Un nouveau dispositif de management

L’objectif de ce dispositif est de diminuer les coûts de l’informatique publique. Jacques Marzin, directeur de la DISIC, a annoncé dès le mois de mai 2014 dans un entretien au Monde Informatique que ses ambitions sont de réduire les budgets informatiques des Ministères de 30 % à 40 % sur 5 ans. On se rappellera que Jaques Marzin est administrateur des finances publiques. Il est assez logique s’intéresse en priorité à la gestion de la dépense. A court terme l’objectif est de réduire le montant des licences de logiciels et des prestations mais il est probable qu’à terme le nombre de plateformes va diminuer.
Le grand projet est d’unifier le réseau de l’Etat. Aussi étonnant que cela paraisse ce n’est pas encore le cas ! De même il est prévu de mettre en place une messagerie unifiée et un Cloud public. Wait and See.
L’autre grande idée est d’inciter les décideurs à réfléchir sur les orientations des systèmes d’information en créant un « conseil du système d’information et de communication » interministériels. Deux fois par an les secrétaires généraux des Ministères sont invités à réfléchir sur les orientations à appliquer. C’est un progrès important car, jusqu’alors un organe de concertation de ce type manquait. Chacun agissait dans son Ministère sans grande coordination avec les autres Ministères et souvent avec des objectifs pas toujours très clairs. De plus les ministres (en fait ce sera plutôt les secrétaires généraux) sont incités se pencher sur les investissements en systèmes d’information de l’ensemble des Ministères avec un accent particulier accordé aux systèmes d’information transversaux. Beau sujet de réflexion !
En fait l’administration publique s’inspire du modèle d’organisation des grandes entreprises avec des informatiques par division ou par département, des centres de services pour mutualiser certaines ressources comme le réseau, les serveurs,... et au niveau central une équipe est chargée de coordonner les différentes opérations et de piloter les projets majeurs.

Les limites de cette approche

Cette démarche est intéressante, cependant elle a des limites. D’abord cette nouvelle organisation concerne essentiellement les ministères et théoriquement elle prend en compte les organismes qui sont sous leur tutelle. Mais on peut s’interroger si des organismes qui ont des systèmes informatiques puissants comme l’Assurance Maladie, les Allocations Familiales, les Caisses de Retraites, la Poste, la Météo, le CEA, le CNRS et les organismes de recherche, … sont effectivement prises en comptes par ce dispositif. De plus on ne sait pas de quelle manière seront prises en comptes les collectivités locales : les maires, les communautés de communes et les métropoles, les départements, les régions,…. Il est probable que le domaine non-couvert est plus important que celui effectivement mis sous-contrôle.
De plus rien n’est dit sur la manière dont sera gérée l’informatique locale concernant les postes de travail, les réseaux locaux, les imprimantes, les serveurs locaux,… Or, c’est une part importante des systèmes d’information. Qui va les gérer ? Les ministères, les unités de base ou la DISIC ? Ce sont des investissements importants et ils représentent un effort de gestion et d’assistance techniques conséquents. Pour l’instant le décret ne dit rien.
On peut de même s’interroger sur la manière dont seront gérés les informaticiens. Est-ce qu’ils vont rester dans leurs ministères où seront-ils à terme regroupés dans une entité centrale ? Il semble que l’idée actuelle est de les laisser où ils sont. Mais, dans ce cas on risque de ne pas constater des économies d’échelle significatives. De même l’amélioration des compétences, notamment en matière de gestion de projet, ne se fera que lentement. Enfin il reste toujours le problème du statut des informaticiens. Tant qu’il n’y aura pas un corps des informaticiens du secteur public les meilleurs ne choisiront pas ce type de carrière.
Autre point délicat : la gestion de la sous-traitance. Jusqu’à aujourd’hui l’Etat a tendance à vouloir tout faire par elle-même sous-prétexte que les données traitées relèvent du domaine régalien. C’est la théorie. En pratique de nombreux projets sont sous-traités. Mais cela se fait souvent dans la douleur. A terme le développement de l’usage du cloud va se traduire par une externalisation partielle ou totale de l’exploitation des administrations.
Enfin il y a un terme absent dans le décret, c’est le terme de Schéma Directeur. Ce n’est pas la même chose qu’un « plan d’investissement couvrant les projets et activités du ministère ». Cette approche correspond au pilotage par les coûts. C’est une démarche intéressante mais elle ne constitue pas pour autant une stratégie. On est loin d’une vision du rôle des systèmes d’information. Jacques Marzin affirme dans son interview au Monde Informatique du mois de Mai : « je suis persuadé qu'il faut investir dans le système d'information pour améliorer le service aux citoyens autant que les outils dont disposent les agents publics. » C’est bien, mais il serait mieux de le traduire sous forme d’une stratégie ?

Les objectifs de l’informatique publique

L’ensemble de ces mesures a pour objectif d’améliorer la gouvernance informatique et la prise en compte de quatre points importants concernant les systèmes d’information : 
-      Mieux connaître les coûts des Système d’Information. Pour l’instant ils sont mal connus. Très souvent les coûts des projets ne comprennent que le montant des travaux sous-traités en ignorant les montants des fonctionnaires intervenant dans le projet. Il sera enfin possible de connaître le vrai coût des projets. Peut-être à terme on va finir par s’intéresser aux coûts des systèmes d’information. On est sur la bonne voie mais il faut attendre de disposer des chiffres pour apprécier la réalité de ces progrès. 
-      Savoir gérer les projets. Manifestement l’Etat a du mal à les gérer. Il y a eu ces dernières années quelques plantages redoutables et coûteux. Ceci est dû, en partie, à l’absence de culture projet des décideurs administratifs ou politiques. Dans leur monde le court terme l’emporte toujours sur le long terme. De plus l’organisation des projets hors hiérarchie va à l’encontre d’une tradition administrative vieille de plusieurs siècles. C’est une nouvelle culture qui a du mal à se mettre en place. 
-      Améliorer les services fournis aux usages-citoyens-contribuables. C’est un souci louable mais il faut bien l’avouer la plupart des sites publiques ne sont pas faciles d’accès. Certains ont encore une amabilité de crocodile. On peut en faire la liste. Il est certain que les différentes administrations pourraient rendre de nombreux services qu’elles ne fournissent pas actuellement ou seulement de manière partielle et peu satisfaisante. C’est un domaine où il est possible de faire d’importants progrès. 
-      Simplifier les procédures internes des administrations. C’est le cœur du problème. Les règles qu’elles appliquent ont été inventées il y a des décennies (voir plus) et n’ont pas été revues depuis. Les applications informatiques ont été plaquées sur ce qui existait sans s’interroger sur le fonctionnement des systèmes d’information. Il est probable qu’une partie importante des difficultés rencontrées sont dues à la complexité excessive des procédures existantes. Il est nécessaire de les simplifier. Il est pour cela indispensable d’avoir une vision globale du système d’information.
 Ces quatre objectifs constituent le cœur de la gouvernance des systèmes d’information.