Ateliers de Génie Logiciel

Christine Solnon

1996/97





1. Introduction

Qu'est ce qu'un logiciel ?

``Le logiciel est l'ensemble des programmes, procédés et règles, et éventuellement de la documentation, relatifs au fonctionnement d'un ensemble de traitement de l'information''
(arrêté du 22 déc. 1981)

Autrement dit, et de façon plus générale, un logiciel est un ensemble de programmes informatiques (du code) mais également un certain nombre de documents se rapportant à ces programmes et nécessaires à leur installation, utilisation, développement et maintenance: spécifications, schémas conceptuels, jeux de tests, mode d'emploi, ...


La ``crise du logiciel''

La ``crise du logiciel'' est apparue à la fin des années 60 et provient d'un décalage entre les progrès matériels d'une part et logiciels d'autre part: alors qu'apparaissaient les ordinateurs de la troisième génération, de plus en plus puissants et de moins en moins coûteux, la construction de logiciels restait dans le domaine de l'artisanat et du folklore, où chacun y allait de sa petite recette. De fait, alors que les nouvelles machines rendaient possibles des applications jusqu'alors irréalisables, les méthodes de développement logiciel ne s'appliquaient pas à de grands systèmes:



Le génie logiciel

``Le génie logiciel est l'ensemble des activités de conception et de mise en oeuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi''
(arrêté du 30 déc. 83)

Autrement dit, le génie logiciel est ``l'art'' de produire de bons logiciels, au meilleur rapport qualité/prix. Il utilise pour cela des principes d'ingéniérie et comprend des aspects à la fois techniques et non techniques: le génie logiciel est basé sur des méthodologies et des outils qui permettent de formaliser et même d'automatiser partiellement la production de logiciels, mais il est également basé sur des concepts plus informels, et demande des capacités de communication, d'interprétation et d'anticipation. De fait, la ``crise du logiciel'' n'est toujours pas résolue. Le génie logiciel reste un ``art'' qui demande de la part de l'informaticien une bonne formation aux différentes techniques (le ``savoir''), mais également un certain entrainement et de l'expérience (le ``savoir faire'').


Les qualités d'un logiciel

Si le génie logiciel est l'art de produire de bons logiciels, il est nécessaire de fixer les critères de qualité d'un logiciel. On peut séparer ces qualités en deux catégories, suivant que l'on regarde le logiciel de l'extérieur ou de l'intérieur:

Ces différentes qualités ne sont pas toujours compatibles ni même réalisables, et il est nécessaire de trouver des compromis. Dans tous les cas, les objectifs de qualité doivent être définis pour chaque logiciel, et la qualité du logiciel doit être controlée par rapport à ces objectifs.




2. Le processus logiciel, ou cycle de vie du logiciel

Le processus logiciel désigne l'ensemble des activités nécessaires au développement et à la maintenance d'un logiciel. Il s'agit d'un processus variable (selon le type d'application) et complexe, composé de différentes phases inter-dépendantes.

Afin de tenter de résoudre la crise du logiciel, ce processus a fait l'objet de différentes modélisations. Historiquement, le premier modèle de développement proposé est celui dit ``de la cascade'', au début des années 70. Ce modèle a été assez largement mis en oeuvre, mais on s'est rapidement aperçu qu'il n'est pas toujours approprié. Sa vision simpliste du processus sous-estime le coût des retours en arrière dans le cycle de vie. Ainsi, plusieurs alternatives au modèle de la cascade ont été proposées, basées notamment sur le prototypage et l'assemblage de composants réutilisables.

Les différentes phases du processus logiciel

Paragraphe en cours de construction ...

Le modèle de la cascade

Paragraphe en cours de construction ...

Le prototypage ou approche exploratoire

Le modèle de la cascade est bien adapté au processus logiciel s'il y a peu de retours en arrière. Dans ce modèle, l'élaboration des spécifications est une phase particulièrement critique: les erreurs de spécifications sont généralement détectées au moment des tests, voire au moment de la livraison du logiciel à l'utilisateur. Leur correction nécessite alors de reprendre toutes les phases du processus.

Une difficulté majeure de la phase de spécification provient du fait que les différents partenaires ne parlent généralement pas le même langage:

Une solution, pour vérifier la conformité de la spécification avec les besoins du client, est de construire rapidement un prototype de l'application.

L'intégration d'une phase de prototypage dans le processus logiciel peut s'effectuer de deux façons différentes:

L'assemblage de composants réutilisables

Paragraphe en cours de construction ...


3. Ateliers de Génie Logiciel


Qu'est ce qu'un atelier de génie logiciel ?

Un AGL (Atelier de Génie Logiciel) ou atelier CASE (Computer Aided Software Engineering) est un logiciel aidant à la réalisation de logiciels. Autrement dit, il s'agit d'un système pour le développement logiciel assisté par ordinateur. Un AGL intègre des outils adaptés aux différentes phases de la production d'un logiciel et facilite la communication et la coordination entre ces différentes phases. Un AGL est basé sur des méthodologies qui formalisent le processus logiciel, et à l'intérieur de ce processus, chacune des phases qui le composent.

Les AGL apportent une réelle solution à certains problèmes du génie logiciel et contribuent nettement à l'amélioration de la productivité et de la qualité du logiciel, notamment en faisant le suivi des différentes phases du processus logiciel et en offrant un cadre cohérent et uniforme de production. Néanmoins, cet enthousiasme doit être modéré: le processus logiciel est encore loin d'être maîtrisé et les différentes formalisations qui en sont proposées font encore l'objet de controverses, et dans tous les cas, sont bien loin d'être totalement automatisables. L'informaticien a encore de belles années de travail devant lui avant d'être supplanté par des AGL...


Les outils ``CASE''

Les AGL intègrent différents outils d'aide au développement de logiciels, appelés outils CASE: éditeurs de texte (vi, emacs, ...), de diagrammes (TRAMIS VIEW, X-fig, ...), outils de gestion de configuration (make), SGBD, compilateurs, debuggers, outils pour la mise en forme (pretty-printers), la génération de tests, la génération d'interfaces homme-machine, ...

Ces différents outils interviennent lors d'une ou plusieurs phases du cycle de vie du logiciel: conception (éditeurs de texte, de diagrammes, ...), programmation (éditeurs de texte, compilateurs, pretty printers, générateurs d'interfaces homme/machine...), mise au point (debuggers, outils de génération de tests, ...), etc, ... Certains outils, concernant notament la gestion de configurations, la gestion de projet, interviennent durant la totalité du processus logiciel.

L'intégration d'outils CASE

Un AGL intègre différents outils CASE, de manière à les faire coopérer de façon uniforme. Cette intégration peut (devrait) s'effectuer à trois niveaux:

Les différents types d'AGL

On distingue essentiellement deux types d'AGL selon la nature des outils intégrés:

  1. Les environnements de conception (upper-case): ces ateliers s'intéressent plus particulièrement aux phases d'analyse et de conception du processus logiciel. Ils intègrent généralement des outils pour l'édition de diagrammes (avec vérification syntaxique), des dictionnaires de données, des outils pour l'édition de rapports, des générateurs de (squelettes de) code, des outils pour le prototypage, ... Ces ateliers sont généralement basés sur une méthode d'analyse et de conception (JSD, Yourdon, Merise, ...) et utilisés pour l'analyse et la conception des systèmes d'information.
  2. TRAMIS est un environnement de conception qui intègre notamment un éditeur de diagrammes (TRAMIS View), un générateur de prototypes (TRAMIS Dialog), ...

  3. Les environnements de développement (lower-case): ces ateliers s'intéressent plus particulièrement aux phases d'implémentation et de test du processus logiciel. Ils intègrent généralement des éditeurs (éventuellement dirigés par la syntaxe), des générateurs d'interfaces homme/machine, des SGBD, des compilateurs, optimiseurs, pretty-printers, debuggers, ...
  4. WinDev est un environnement de développement.

    Un autre exemple d'environnement de développement est Unix qui intègre différents outils pour la programmation et le test. L'intégration des données est faite par l'intermédiaire des fichiers Unix, la gestion (limitée) de configurations est faite par make...

    Certains environnement, plus évolués, sont dédiés à un langage particulier. Il existe par exemple des environnements dédiés à InterLisp, Smalltalk, Loops (l'environnement Loops fonctionne sur une machine dédiée à Loops), Oz ... Ces différents environnements proposent des bibliothèques de composants, une interface graphique, des éditeurs dédiés au langage, des interprètes, debuggers, ... Ces environnements permettent un développement rapide et convivial. En revanche, l'application développée est intégrée dans (et généralement inséparable de) l'environnement, ce qui peut poser des problèmes de portabilité et de coût.

    Enfin, il existe des générateurs d'environnements de programmation: Mentor, Gandalf, Synthesizer Generator, ... A partir de la description formelle d'un langage (à l'aide de grammaires attribuées, de la logique), ces différents systèmes génèrent un environnement de programmation dédié au langage, contenant un éditeur dédié au langage, un pretty-printer, un debugger, un interpréteur, ...



    Christine SOLNON
    Tue Jul 15 15:20:46 METDST 1997