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/
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).
-
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.
-
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.
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