Plan du site Aide Abonnement Nous Contacter


Actualité
Editorial
Interviews
Démocratie
Visites virtuelles
Art. Imaginaire
Du côté des labos
Le feuilleton
Manifestations
Biblionet
CD Rom
Echanges
Liens Utiles

 

Accueil > Echanges
Automates Intelligents utilise le logiciel Alexandria.
Double-cliquez sur chaque mot de cette page et s'afficheront alors définitions, synonymes et expressions constituées de ce mot. Une fenêtre déroulante permet aussi d'accéder à la définition du mot dans une autre langue.
 
Archives
Billets/Articles
"Monitoring" de la planète - Les drones
NTIC et combat pour la démocratie
Privatisation de l'espace
War games at Crypto-city

03 Novembre 2002

Présentation du système GAP
(Générateur Automatique de Programmes)

par Patrick Guedj patrick.guedj@wanadoo.fr

Les maîtres d'ouvrage et maîtres d'oeuvre s'interrogent sur les difficultés que présentent la fabrication et la maintenance des grands systèmes d'information qui sont devenus des instruments incontournables des politiques publiques et privées..
L'extrait suivant du rapport du Conseil de l’Université des Nations Unies de Janvier Décembre 2001 se fait l'écho de ces difficultés :

41. S’il est vrai que les logiciels sont largement utilisés et que les populations ont de plus en plus recours à l’informatique, nous continuons malgré tout à connaître une "crise du logiciel". Les projets importants dans ce domaine prennent généralement du retard, dépassent les crédits accordés ou sont tout simplement abandonnés. Ceux qui sont menés à bien contiennent souvent de nombreux bogues et sont difficiles à mettre à jour. Les spécialistes qui mènent des travaux de recherche sur les techniques formelles espèrent pouvoir introduire une méthode plus rigoureuse d’élaboration des logiciels pour aider les ingénieurs de logiciels à venir à bout de cette crise.

L'immaturité des maîtrises d'ouvrage contribue certainement à la "crise du logiciel". Mais je pense que cette explication n'épuise pas le problème. Nous manquons aussi de théorie et de savoir-faire pour maîtriser la complexité qui résulte de la taille des grandes applications et des multiples interactions qui naissent au sein des programmes.
Afin de contribuer à la résolution de ce deuxième point, j'ai écrit un programme qui produit automatiquement le code source (en C ANSI pour le code serveur, en JAVA pour le code écrans) à partir d'une spécification mathématique (ensembliste pour les données, fonctionnelle pour leurs relations et pour les calculs courants) inspirée du modèle des classes d'UML. La génération de code source à partir d'un modèle formel a déjà été utilisée avec succès dans le domaine des automatismes industriels (souvent à partir de réseaux de Pétri), je l'étends aux applications dites de gestion. Les premiers essais montrent qu'un modèle d'une dizaine de classes produit un code serveur de l'ordre de 5000 lignes et un code écrans de l'ordre de 4000 lignes. Ce volume important de code pour un petit modèle explique en partie le coût et la durée de fabrication des grands systèmes.

Après avoir effectué ce travail je pense que la fin de la crise du logiciel passe nécessairement par la génération de code à partir de modèles formels car ainsi le code est produit immédiatement après la modélisation (d'ou un gain de plusieurs années sur des grands projets), la modélisation est obligatoire ce qui est un avantage induit intéressant, et le code est beaucoup plus fiable (par capitalisation du débogage dans le générateur).

Bien qu'il me reste quelques programmes à écrire, le prototype que j'ai déjà réalisé me permet de voir l'utilité de la génération de programmes. C'est une méta-programmation appuyée sur un modèle formel. J'expérimente le prototype du générateur sur un projet dans un grand ministère.

Patrick Guedj

1 - Objectif : industrialiser la fabrication des logiciels de gestion

Alors que le logiciel est maintenant utilisé dans la plupart des domaines d'activité (loisirs, gestion, téléphonie, automobile, systèmes d'arme...) - "Il y a plus d'informatique dans la Volvo S80 que dans le chasseur F15" déclarait en janvier 2000 le Président d'Audi - cette crise du logiciel, dont se fait l'écho le rapport du Conseil de l'Université des Nations Unies, conduit à de graves dysfonctionnements (explosion de la fusée Ariane V, dérive du projet Socrate de la SNCF ...) et à de fréquents dépassements des délais et des coûts de réalisation. Selon le rapport de 1995 du Standish Group, pour 52,7% des projets le dépassement des coûts représentent 189% des estimations établies à l'origine (www.csd.uwo.ca/faculty/beau/PM/Rapport-Standish.html).

Diverses voies, regroupées sous le terme de génie logiciel, ont été explorées pour tenter de fabriquer des logiciels avec une qualité comparable à celle des produits industriels: organisation du processus de fabrication, méthodes de conception (Merise par exemple), spécifications, structuration des programmes (programmation structurée, modulaire puis objet), preuve mathématique, réutilisation (bases de données en premier lieu), techniques de test. Malgré les améliorations partielles qu'elles ont apportées, aucune de ces voies n'a permis de résoudre le problème de la fabrication des logiciels qui reste pour l'essentiel artisanale.

Le système GAP utilise une autre approche qui permet d'industrialiser la fabrication des logiciels de gestion en générant les programmes à partir d'une description abstraite des données.

2 - Principe : produire automatiquement les programmes à partir d'une description abstraite des données

A partir d'un modèle mathématique (ensembliste) décrivant les données, leurs relations et les principales fonctions de calcul, le système GAP produit automatiquement le logiciel (programmes serveurs et écrans). Les fonctions de validation des dossiers (workflow), d'identification des utilisateurs et de restriction de leurs droits d'accès aux données sont intégrées dans le système.

Les calculs complexes et les écrans qui leurs correspondent doivent être programmés manuellement.

Cette approche qui consiste à générer les programmes à partir d'une spécification formelle du résultat attendu a déjà été utilisée avec succès dans le domaine des automates industriels. Elle n'avait que peu été explorée pour les applications de gestion. Le système GAP comble cette lacune.

3 - Intérêts : des logiciels moins coûteux et plus fiables

Le premier intérêt est la réduction des délais et des coûts de fabrication. La charge d'analyse reste la même, mais le générateur permet d'obtenir immédiatement les programmes à partir de la spécification issue de l'analyse. Il n'est pas rare que la phase de programmation soit longue (elle peut s'étendre sur plusieurs années pour des grands projets) et mobilise des ressources importantes. Le système GAP, en réduisant la phase de programmation au codage des fonctions complexes, permet de réduire dans une large mesure les délais et les coûts de fabrication. Une première estimation fait apparaître une réduction de l'ordre de 2/3 de la durée de la phase de programmation. La confrontation de ce système à de nombreux projets permettra de calculer les gains moyens effectifs par type de projet.

Le second intérêt est l'augmentation de la fiabilité des logiciels. Contrairement aux méthodes habituelles de fabrication des logiciels, qui imposent une phase de mise au point des programmes généralement longue, le système GAP permet de capitaliser la correction des erreurs de programmation. La détection d'une erreur conduit à corriger le générateur et non le programme erroné ce qui assure que cette erreur ne se produira plus pour tous les futurs programmes générés. Ainsi, le système GAP produit des logiciels de plus en plus fiables.

4 - Limites : un système uniquement destiné à produire rapidement des logiciels de gestion fiables

Le système GAP repose sur une modélisation mathématique des données adaptée au traitement des applications de gestion (comptabilité, gestion du personnel, stocks, gestion de dossiers...). Les logiciels scientifiques, caractérisés par la prédominance des calculs algorithmiques sur les données, sont exclus du périmètre du système.

Les fonctions complexes (clôture d'un exercice comptable par exemple) doivent être programmées manuellement. Le système laisse aux programmeurs la liberté d'intervenir dans les programmes pour répondre aux inévitables situations imprévues qu'impose la réalité de la gestion. Après une période de maintenance des programmes ou quand le périmètre de l'application évolue, le modèle est ajusté pour produire une nouvelle version de l'application. Les fonctions complexes doivent alors être portées manuellement de l'ancienne version vers la nouvelle.

Le système ne traite pas les activités périphériques à la programmation : planification, gestion des équipes de développement, historique des versions des programmes, budget, déploiement des applications, etc. Il ne s'attache qu'à résoudre le problème central de la fabrication des logiciels : produire rapidement des logiciels fiables.

5 - Utilisations : du prototypage à l'urbanisation du système d'information

Le système peut être utilisé pour aider l'analyse en produisant itérativement des prototypes destinés à affiner l'expression des besoins.

Les équipes de développement peuvent augmenter leur productivité en produisant automatiquement l'essentiel des programmes d'un projet. Elles peuvent aussi réutiliser les modèles de données de différents projets. La réutilisation des composants logiciels, souvent souhaitée mais peu pratiquée, trouve avec le système GAP une application très concrète.

Ce système facilite la reprise des applications existantes. Des programmes spécifiques peuvent être écrits pour produire le modèle des données à partir des structures de données d'une application (COBOL par exemple). Les traitements complexes doivent, par contre, être repris manuellement.

Les directions informatiques qui souhaitent (ré)homogénéiser leur système d'information peuvent utiliser ce système pour leurs nouveaux développements. Les programmes générés sont auto-documentés par le modèle des données et leurs structures sont identiques, ce qui facilite leur maintenance et la polyvalence des équipes techniques. Par ailleurs, ils sont conçus pour permettre l'urbanisation du système d'information en l'organisant en composants applicatifs homogènes dialoguant par une interface standardisée.

6 - Annexe technique

2 pages pdf. Cliquer ICI


© Automates Intelligents 2002

 





 

 

 

Qui sommes nous ? Partenaires Abonnement Nous Contacter

© Association Automates Intelligents