Download Développement d`un pôle de calcul : CESAR-LCPC
Transcript
Développement d'un pôle de calcul : CESAR-LCPC Alain D U B O U C H E T Technicien supérieur Section Modèles numériques Service Mécanique Laboratoire Central des Ponts et Chaussées Présentation Pierre H U M B E R T Chef de la Section Modèles numériques Service Mécanique Laboratoire Central des Ponts et Chaussées RESUME C E S A R - L C P C , progiciel de calcul par éléments finis, est né au début des années quatrevingt de l a critique des systèmes précédemment développés au L C P C , et de l'étude des méthodes préconisées alors pour organiser de tels outils. Il s'est développé dans les différents domaines du génie civil grâce à une architecture modulaire et à une méthodologie précise, décrites dans u n Manuel de programmation. Jusqu'à maintenant, les développeurs avaient retenu pour leur production des critères de qualité inspirés essentiellement par l'expérience acquise. Devenue une exigence chez u n nombre croissant d'utilisateurs, la qualité doit maintenant être prise en compte dans le sens formalisé par les travaux de l ' A F C I Q et de l ' A F N O R . De façon à être présente à tous les stades d'élaboration du progiciel, cette formalisation se doit d'être introduite sous forme de règles et de conseils dans le Manuel de programmation de C E S A R - L C P C . S'appuyant sur des critères de qualité clairement affichés, la sous-traitance pourrait alors être envisagée pour les domaines ne constituant pas strictement le « métier » de l'équipe de développement. M O T S C L É S : 20 - Programme de calcul • Éléments finis (méthode) Historique Développement - Qualité • Génie civil. Le progiciel CESAR-LCPC représente une très grande part de la compétence acquise par le Laboratoire Central des Ponts et Chaussées depuis une vingtaine d'années dans l'adaptation et l'application de la méthode des éléments finis aux problèmes de génie civil. Historiquement, cette méthode a d'abord été développée par les ingénieurs de la construction mécanique (aéronautique, construction navale, ouvrages métalliques). Au LCPC, c'est sous l'impulsion initiale des géotechniciens, confrontés à des problèmes insolubles par les méthodes de calcul alors en vigueur, que la méthode a été introduite. A leur demande, un grand nombre de lois de comportement en mécanique des sols et des roches, ainsi que des procédés permettant la prise en compte du phasage de construction, ont été progressivement introduits dans le code de calcul. Les spécialistes des ouvrages d'art allaient rapidement se sentir concernés par la généralité de la méthode et provoquer des développements adaptés à leurs problèmes (éléments structuraux, modules de calcul en dynamique, etc.). Parallèlement, le développement de modules de calcul en diffusion transitoire a permis d'apporter une aide appréciable aux hydrogéologues et aux spécialistes de l'environnement. De même, dans le domaine des chaussées, des modules existants ou en cours de développement permettent d'aborder certains problèmes plus particuliers à ce type de structure (contact, propagation de fissure). 77 Bull, liaison Labo. P. et Ch. - 178 - mars-avr. 1992 - Réf. 3632 Ainsi, au fil du développement du progiciel, il apparaît que tous les domaines traditionnels des Laboratoires des Ponts et Chaussées se rejoignent sur une plate-forme de calcul commune. Le développement, la diffusion et la maintenance d'une telle plate-forme nécessite l'existence d'une équipe ayant une bonne compétence dans les domaines évoqués ci-dessus. Cette équipe doit également avoir la maîtrise d'un certain nombre de techniques et de méthodes empruntées à des disciplines scientifiques (mathématiques, analyse numérique, mécanique des milieux continus, etc.), ou à des métiers (informaticien, dessinateur, graphiste, enseignant, etc.) très divers. Les huitièmes journées d'informatique de Saint-Brieuc ont été l'occasion pour l'équipe de développement d'aborder à travers la Qualité un nouvel aspect méthodologique, et de mesurer l'impact de ce concept sur notre production. Cet effort nous permet de suivre avec attention la réflexion entreprise par le Service informatique pour doter le LCPC de véritables outils de génie logiciel. Introduction C E S A R - L C P C est un progiciel* [1] de calcul basé sur la méthode des éléments finis, particulièrement adapté à la résolution des problèmes de génie civil et de génie industriel : calcul des structures, mécanique des sols et des roches, thermique, hydrogéologie, etc. [2]. Il se compose principalement du code de calcul C E S A R et des pré- et post-processeurs interactifs graphiques M A X et P E G G Y . On l'utilise dans de bonnes conditions sur les stations de travail actuelles ou sur tout autre calculateur scientifique ayant des caractéristiques analogues (mémoire centrale minimum de 8 Mo, espace disque de 100 Mo ou plus, écran graphique couleur haute définition). C E S A R - L C P C peut être considéré comme un gros progiciel dans la mesure où il est actuellement constitué d'un système de programmes dépassant les 150 000 instructions, de plus d'une centaine de jeux de données de test et d'une documentation répartie en une dizaine de types de manuels. Tout ceci n'a pu se développer sans un minimum de règles intuitivement mises en place à l'origine. Aujourd'hui, spécifications et méthodes sont clairement formalisées par le génie logiciel** [3]. A la méthodologie de développement établie dès l'origine du progiciel, sont venues s'ajouter au fil de sa croissance, des règles de gestion introduisant entre autres des critères de sûreté et de sécurité d'utilisation. C E S A R L C P C étant destiné à être diffusé, un ensemble de règles concernant la portabilité et la satisfaction des utilisateurs (ergonomie) est également présent, épousant parfois les contours de la qualité. E n effet, « la qualité 78 d'un logiciel n'est pas l'absence d'erreur dans son code (chose improuvable), mais plutôt son aptitude à satisfaire les besoins de l'utilisateur, tant sur le plan fonctionnel que du point de vue des caractéristiques d'utilisation » [4]. Rappel historique L'actuel pôle de calcul est né à la fin des années soixante de la volonté de voir renforcés au L C P C les moyens d'études et de dimensionnement des ouvrages de génie civil et, en particulier, d'utiliser les éléments finis pour résoudre certains problèmes de géomécanique insolubles par les méthodes en vigueur à cette époque. C'est ainsi que dès 1968 était constituée une petite équipe pour développer un programme qui allait prendre le nom de R O S A L I E . Les premières études réalisées avec cet outil allaient vite montrer l'intérêt et les potentialités qu'offrait la méthode. L'équipe de développement était alors renforcée pour lui permettre de construire un système complet, permettant le calcul des structures et de prendre en compte les comportements non linéaires tels que ceux rencontrés en mécanique et en hydrogéologie. Outre le programme de calcul proprement dit, ce système allait s'enrichir de programmes périphériques ayant pour objet la génération du maillage, la vérification des données du calcul et l'interprétation graphique des résultats [5]. L'architecture du système R O S A L I E et la taille des problèmes traités nécessitaient l'emploi des gros calculateurs de l'époque (CDC 6600, I B M 370/168, etc.). Le réseau des L P C ne pouvait pas utiliser cet outil, car i l n'était pas envisageable de l'installer sur les calculateurs alors disponibles dans les C E T E . Aussi, à partir de 1975, la bibliothèque des PPR (Petits Programmes Rapides, de dimension restreinte et d'application spécialisée) était développée, avec comme principale spécification de pouvoir fonctionner sur des machines de la taille des IRIS 80, et de satisfaire ainsi la demande du réseau [6]. Entre l'origine de R O S A L I E et le début des années quatre-vingt, le paysage informatique avait considérablement changé (disparition de la carte perforée, apparition de la mémoire vir- * « U n progiciel comprend le dossier-programme et les supports d'information sur lesquels le programme est enregistré, les jeux d'essai et l a documentation associée. I l constitue un ensemble cohérent et adaptable de programmes ou de sous-programmes permettant l a réalisation par l'ordinateur d'une tache importante et spécifique. » ** « Génie logiciel : ensemble des outils et de procédures relatifs aux différentes phases de l'élaboration d'un logiciel : spécification, programmation, suivi de production, test et mise au point, qualification, recette, maintenance, etc. » t u e l l e , d u temps partagé, télé-traitement, b a n a l i s a t i o n d u g r a p h i q u e interactif), et a v a i t fait naître de nouvelles exigences chez les u t i l i sateurs : convivialité, facilité d'emploi, etc. D e son côté, R O S A L I E a v a i t a t t e i n t u n état c r i t i que à l a fois e n développement (taille et complexité d u code), e n m a i n t e n a n c e (nombreuses redondances) et e n u t i l i s a t i o n (les p r o g r a m m e s ne s'exécutaient qu'en t r a i t e m e n t p a r lots). I l était donc d e v e n u nécessaire de revoir nos méthodes de t r a v a i l et de f o r m u l e r de n o u v e l les spécifications p o u r le pôle « c a l c u l p a r élém e n t s finis ». Genèse de CESAR-LCPC Après a n a l y s e et critique du système R O S A L I E et de l a bibliothèque P P R , et à p a r t i r d'une étude bibliographique de l a littérat u r e « éléments finis » devenue abondante et désormais disponible e n l i b r a i r i e , u n c e r t a i n nombre de spécifications étaient retenues, dont p a r m i les p r i n c i p a l e s [7] : — séparation des étapes « m i s e e n données », « c a l c u l », « e x p l o i t a t i o n des résultats » ; — progiciel de recherche, donc des p r o g r a m mes f a c i l e m e n t développables : modularité ; — progiciel i n d u s t r i e l , donc des p r o g r a m m e s facilement utilisables : interactif graphique ; — rédaction d'une d o c u m e n t a t i o n complète et b i e n structurée ; — diffusion s u r u n e l a r g e g a m m e de matériel (micro-ordinateur exclu) : portabilité. L e t r a v a i l de p r o g r a m m a t i o n p o u v a i t alors commencer p o u r a b o u t i r a c t u e l l e m e n t à l'ensemble de p r o g r a m m e s c o m m u n i q u a n t entre eux selon le schéma de l a figure 1. -(CESAR - LCPCj- MAX CESAR PEGGY Outils Basas de données Unitaires MAX : pré-processeur interactif graphique pour la réalisation du maltiage et la préparation des données du calcul. CESAR : code de calcul par éléments finis. PEGGY : post-processeur interactif graphique pour l'Interprétation des résultats du calcul et la création de documents. Utilitaires : programmes d'aide à la mise en données (ils agissent sur la base de données). Outils : programmes d'aide au développement (ils utilisent les fichiers source des programmes comme données) Fig. 1 - Architecture du progiciel CESAR-LCPC. Organisation du CESAR-LCPC développement de L'équipe de développement Dès l'origine, i l était établi que le développem e n t des p r o g r a m m e s a l l a i t être assuré p a r u n e équipe spécialisée (actuellement répartie entre les différentes i m p l a n t a t i o n s géographiques d u L C P C ) à laquelle v i e n d r a i e n t s'ajouter thésards et stagiaires p o u r l a durée de l e u r recherche. C e r t a i n s développements p o u r r a i e n t également être réalisés dans d'autres l a b o r a t o i res (exemples : e n d o m m a g e m e n t p a r l'Ecole N o r m a l e Supérieure C a c h a n , « l o i de C a m b o u » p a r l'Ecole C e n t r a l e de L y o n , m e i l l e u r spécialiste e n bio-mécanique p a r l'Ecole N a t i o n a l e Supérieure des A r t s et Métiers, etc.). C o m p t e t e n u de l a complexité croissante des a l g o r i t h mes i n t r o d u i t s d a n s les p r o g r a m m e s , a u c u n développeur ne p e u t être u n spécialiste de l ' e n semble des domaines abordés p a r C E S A R L C P C . C e l a a c o n d u i t à m e t t r e l'accent s u r deux aspects : — nécessité d'une d o c u m e n t a t i o n complète, intégrant l a phase de p r o g r a m m a t i o n , a f i n que p l u s i e u r s personnes puissent collaborer a u développement sans r i s q u e de conflit ou de redondance ; — architecture des p r o g r a m m e s p e r m e t t a n t de greffer les développements de manière s i m p l e , sans que c h a c u n a i t à connaître p a r f a i t e m e n t l'ensemble d u p r o g r a m m e s u r l e q u e l i l t r a vaille. La documentation U n gros effort de d o c u m e n t a t i o n est demandé à l'équipe de développement c a r les m a n u e l s sont l ' u n des éléments visibles d u progiciel (l'autre étant s a p r o d u c t i o n graphique). I l f a u t donc souligner l'importance de celle-ci et y port e r u n e a t t e n t i o n a u m o i n s égale à celle de l a p r o g r a m m a t i o n . C h a c u n doit considérer que l a rédaction de l a d o c u m e n t a t i o n fait p a r t i e d u t r a v a i l de développement : u n m i n i m u m de rédaction s'impose de toute façon a u p r o g r a m m e u r , ne serait-ce que p o u r décrire l'ensemble des équations t r a i t a n t le problème p h y s i q u e à modéliser (partie théorique), p o u r t r a c e r l'organ i g r a m m e d u n o u v e a u m o d u l e à développer (architecture des instructions), p o u r décrire les données à f o u r n i r et les résultats obtenus (mode d'emploi), etc. A i n s i , l o i n d'apparaître comme u n e contrainte, l a d o c u m e n t a t i o n des p r o g r a m m e s d e v i e n t u n e aide dans les phases de développement et de m i s e a u point. E n dern i e r l i e u , et p o u r a s s u r e r le caractère i n d u s t r i e l de C E S A R - L C P C , les derniers développem e n t s ne p e u v e n t être intégrés dans l a v e r s i o n officielle que s'ils sont correctement et complèt e m e n t documentés. L a d o c u m e n t a t i o n est organisée en différents m a n u e l s correspondant à u n usage b i e n précis. 79 É P o u r conserver l a modularité propre a u progiciel et p o u r faciliter les mises à j o u r et les développements, l a p l u p a r t des m a n u e l s sont organisés e n fascicules indépendants les u n s des autres. L ' o r d r e d a n s lequel les différents m a n u e l s sont présentés ci-dessous correspond sensiblement à l a chronologie que v a s u i v r e l a rédaction de l a d o c u m e n t a t i o n d ' u n n o u v e l a l g o r i t h m e i n t r o d u i t d a n s le progiciel : — m a n u e l théorique ; — m a n u e l de p r o g r a m m a t i o n ; — mode d'emploi ; — bibliothèque des j e u x de données (dont recueil de s o l u t i o n s a n a l y t i q u e s ) ; — bibliothèque d'exemples ; — m a n u e l de f o r m a t i o n (dont fascicule de présentation, glossaire, etc.) ; — fascicule d ' i m p l a n t a t i o n ; — recueil d'incidents. L a sortie des résultats ( i m p r e s s i o n s , a l i m e n t a t i o n de l a base de données) est réalisée d a n s des unités de p r o g r a m m e s spécifiques, indépendantes de celles chargées d u t r a i t e m e n t proprem e n t d i t . E l l e s n ' a p p a r a i s s e n t pas s u r l a figure 2 c a r étant très dépendantes de l a f a m i l l e d'éléments ou d u m o d u l e d'exécution utilisé, i l est plus commode de les r a t t a c h e r à ceux-ci. Modules de gestion des données COOR, CHAT, etc. Modules d'exécution LINE, MCNL, etc. Librairie des (onctions Le manuel de programmation L e m a n u e l de p r o g r a m m a t i o n r e t i e n t i c i notre a t t e n t i o n dans l a m e s u r e où c'est à p a r t i r de l u i que l a n o t i o n de qualité v a pénétrer les différents c o n s t i t u a n t s d u progiciel. C e m a n u e l contient e n effet les règles d'architecture, de p r o g r a m m a t i o n et de d o c u m e n t a t i o n . I l présente les o r g a n i g r a m m e s et l e u r t r a d u c t i o n e n langage de p r o g r a m m a t i o n (fichiers source), i l décrit également les différents fichiers de l a base de données a s s u r a n t l a c o m m u n i c a t i o n entre les p r o g r a m m e s et i l expose les règles de gestion des différentes v e r s i o n s . U n fascicule p a r t i c u l i e r est chargé d'afficher les axes de développement f u t u r s . L'objectif d u m a n u e l de p r o g r a m m a t i o n est e n p r e m i e r l i e u d'assurer l a m a i n t e n a n c e et de faciliter l a correction d'éventuelles e r r e u r s . E n second l i e u , i l p e r m e t a u x p r o g r a m m e u r s chargés des développem e n t s d'effectuer ceux-ci e n h a r m o n i e avec les algorithmes déjà codés. Règles d'architecture: exemple du code de CESAR C E S A R est constitué de modules de gestion des données (exemple : C O O R pour l a définition des coordonnées des nœuds, C H A R pour l a définition des chargements, etc.), de modules d'exécut i o n (exemple : L I N E pour l a résolution d'un problème linéaire, M C N L pour u n problème de mécanique à comportement n o n linéaire, etc.), de familles d'éléments (exemple : f a m i l l e 1 regroupant les éléments bidimensionnels en mécanique, f a m i l l e 5 pour les éléments de coque, famille 22 pour les éléments t r i d i m e n sionnels e n diffusion, etc.) d'une interface réalisant l'aiguillage entre modules et les familles d'éléments concernées, et d'une l i b r a i r i e de fonctions générales. L a figure 2 fait c l a i r e m e n t apparaître l a m o d u larité de C E S A R et l'indépendance q u i existe d'une p a r t entre l'entrée des données et le t r a i tement, et d'autre p a r t entre l a p r o g r a m m a t i o n des f a m i l l e s et celle des modules d'exécution. 80 générales Familles d'éléments : etc. 1,.. .5, ...22 Fig. 2 - Architecture du code de calcul CESAR. L a gestion de l'espace réservé p o u r les t a b l e a u x est u n autre p o i n t i m p o r t a n t de l ' a r chitecture d u code de c a l c u l . Schématiquem e n t , C E S A R u t i l i s e u n e table u n i q u e et des p o i n t e u r s p e r m e t t a n t de découper celle-ci e n différents t a b l e a u x créés p a r l ' e m p l o i des modules activés p a r l ' u t i l i s a t e u r . C e u x - c i sont alloués e n p r e m i e r , l a place n o n utilisée étant ensuite attribuée à l a m a t r i c e de rigidité. S i cette dernière sort de l a place disponible, C E S A R déclenche alors u n mécanisme de p a g i n a t i o n s u r disque. L a gestion des p o i n t e u r s a i n s i que l a réservation, l a r e s t i t u t i o n et l a compression d'espace, sont assurées à l'intécalcul r i e u r des modules p a r appel des fonctions de l a l i b r a i r i e générale. Cette t e c h n i q u e d'allocation pseudo-dynamique p e r m e t de régler f a c i l e m e n t le p r o g r a m m e à l a t a i l l e des problèmes u s u e l l e m e n t traités et d'optimiser a i n s i l ' e m p l o i des ressources i n f o r m a t i q u e s (adéquation mémoire centrale / mémoire de m a s s e / t e m p s de calcul). L e m a n u e l de p r o g r a m m a t i o n présente égalem e n t les règles p o u r insérer u n n o u v e a u module ou u n e nouvelle f a m i l l e d'éléments et les modifications que cela i m p l i q u e d a n s cert a i n e s unités de p r o g r a m m e de l'interface. Règles de programmation L'écriture des unités de p r o g r a m m e s doit évid e m m e n t se faire e n respectant u n c e r t a i n nombre de règles a y a n t t r a i t à l a lisibilité (l), à l a portabilité (p), etc. O n peut citer : — les règles de r a n g e m e n t des unités de p r o g r a m m e s d a n s les fichiers source (l) ; — l'ordre des i n s t r u c t i o n s de déclaration (l) ; — les règles concernant les formats d'impression (p) ; — l ' u t i l i s a t i o n de l a p r o g r a m m a t i o n s t r u c t u rée ; — les règles d ' a t t r i b u t i o n des noms de v a r i a bles et d'unités de p r o g r a m m e s ; — les règles d ' u t i l i s a t i o n des fonctions i n t r i n sèques d u langage de p r o g r a m m a t i o n (p). Les programmes Interactifs graphiques: MAX PEGGY L e s fascicules consacrés à M A X et à P E G G Y contiennent les i n f o r m a t i o n s indispensables pour conserver l'homogénéité d'apparence des divers modules graphiques. O n t r o u v e r a donc l a d e s c r i p t i o n des différentes fenêtres écran et t r a c e u r , les caractéristiques de couleur, t a i l l e , épaisseur, etc., retenues p o u r les p r i m i t i v e s graphiques (ligne, texte, symbole, remplissage de zone) a i n s i que l ' e n v i r o n n e m e n t des i n t e r actions utilisées (saisie clavier/réticule p u i s décodage). Règles de documentation L e s règles et les conseils concernant l a rédact i o n des m a n u e l s , déjà évoqués précédemment, figurent également dans le m a n u e l de prog r a m m a t i o n . U n complément i n d i s p e n s a b l e à ce d e r n i e r consiste à documenter les fichiers source à l'aide de commentaires. E n p a r t i c u l i e r , e n tête de chaque unité de p r o g r a m m e on doit t r o u v e r : — u n c o m m e n t a i r e décrivant l a fonction de l'unité de p r o g r a m m e ; — des commentaires r e l a t i f s à l a l i s t e des a r g u m e n t s d'appel à l'unité de p r o g r a m m e i d e n t i f i a n t les a r g u m e n t s s e r v a n t de données et ceux contenant les résultats des calculs effectués ; — des commentaires i d e n t i f i a n t les a r g u m e n t s contenus dans les zones communes et modifiés dans l'unité de p r o g r a m m e ; — l a liste des fonctions externes à l a l i b r a i r i e des fonctions intrinsèques et q u i r i s q u e n t donc de créer des problèmes de portabilité (par exemple, tirage de nombres aléatoires, mesure d u temps de c a l c u l , p r o d u i t scalaire, etc.) ; — l a liste des fichiers manipulés ; — des r e m a r q u e s éventuelles s u r les l i m i t a tions de l ' a l g o r i t h m i q u e actuelle, les difficultés d'emploi ou de portabilité, et les améliorations à envisager ; — des commentaires i d e n t i f i a n t les corrections o u modifications apportées à l a v e r s i o n o r i g i n a l e avec l e u r s dates. Les versions de programmes V a l o r i s e r les développements effectués p o u r l a recherche e n les m e t t a n t dès que possible à l a d i s p o s i t i o n des clients d u L C P C (réseau L P C , m i l i e u i n d u s t r i e l , m i l i e u de recherche/enseignement) est u n e de nos a m b i t i o n s . C E S A R - L C P C doit donc être à l a fois u n progiciel i n d u s t r i e l et u n progiciel de recherche. U n progiciel i n d u s t r i e l est u n p r o d u i t fini constitué de p r o g r a m m e s entièrement v a l i dés, accompagnés d'une d o c u m e n t a t i o n complète et des j e u x de données de test. L a sécurité des a l g o r i t h m e s présents dans le et progiciel doit être telle que, après u n m i n i m u m de f o r m a t i o n , nos « clients » soient e n mesure d'utiliser C E S A R - L C P C de façon autonome s u r l e u r propre c a l c u l a t e u r . Sous réserve d'une modélisation correcte d u p r o blème traité, l a fiabilité des résultats doit l e u r être g a r a n t i e . U n progiciel de recherche offre u n cadre m o i n s rigide que c e l u i décrit ci-dessus. I l s'agit plutôt d'un p r o d u i t e n cours d'élaborat i o n fonctionnant comme une s t r u c t u r e d'accueil s u r laquelle de n o m b r e u x développeurs peuvent i n t e r v e n i r . L e s objectifs sont alors m u l t i p l e s et les i n t e r v e n t i o n s sont orientées p r i n c i p a l e m e n t dans les directions s u i v a n tes : — développements finalisés : i l s'agit d'introd u i r e les a l g o r i t h m e s issus d u fascicule « A x e s de développement » q u i se retrouveront dans l a version "industrielle" ; — développements prospectifs : i l s'agit de test e r de nouveaux algorithmes. Après analyse et critique, i l s peuvent ne pas être r e t e n u s p o u r l a v e r s i o n « i n d u s t r i e l l e » (exemples : problème de convergence ou de temps de c a l c u l , o u , encore, contrat de développement soumis à confidentialité) o u laissés e n veille technologique (exemple : e m p l o i trop délicat) ; — « taillage » d u code pour modéliser u n problème p a r t i c u l i e r ou pour l'adapter à une machine particulière (exemples : version réduite pour essais de m a c h i n e s , i m p l a n t a t i o n s u r m a c h i n e s « exotiques », etc.). P o u r répondre à ces spécifications, chaque nouvelle fonctionnalité v a passer p a r une étape de développement, p u i s p a r u n e étape d'intégration dans le progiciel p o u r a t t e i n d r e l'étape finale de l a diffusion a u x "clients". I l est évident que C E S A R - L C P C est, et sera toujours, e n constante évolution et que ce processus est c o n t i n u dans le temps. T o u t u t i l i s a t e u r doit pouvoir c l a i r e m e n t i d e n t i f i e r l a v e r s i o n utilisée a i n s i que l a provenance des résultats obtenus. C'est p o u r q u o i les étapes décrites ci-dessus sont respectivement nommées « phase recherche », « phase b e t a test » et « phase s t a n d a r d » et que chaque p r o g r a m m e édite ce n o m et le numéro de v e r sion à tous les endroits stratégiques : — dans les — dans les — dans les des risques — dans les dialogues à l'écran ; fichiers d'édition ; fichiers b i n a i r e s (surtout s ' i l y a d'incompatibilité entre versions) ; fichiers destinés a u x t r a c e u r s . 81 Les outils Utilisation et diffusion Pour pallier la carence de certains systèmes d'exploitation utilisés au cours du développement de M A X , de C E S A R et de P E G G Y , des programmes ont été écrits pour venir en aide aux développeurs. Actuellement, des fonctions telles que organigramme, édition de fichiers source, index des unités de programmes, manipulation/comparaison de fichiers symboliques, analyse des zones de variables communes, etc., peuvent être réalisées par ces petits programmes qui forment la « boîte à outils » de C E S A R - L C P C . L a durée de vie de ces outils est évidemment très dépendante de l'introduction de véritables outils de génie logiciel sur le réseau Unix du L C P C . Le progiciel C E S A R - L C P C est utilisé en interne pour de nombreux travaux de recherche et dans des interventions d'experts. Il est également diffusé dans le réseau des L P C , dans le réseau technique du Ministère, en milieu industriel et dans le milieu rechercheenseignement. Une soixantaine d'implantations ont été réalisées sous divers systèmes d'exploitation, le standard recommandé étant Unix. L a diffusion sur des machines très diverses est rendue possible grâce à l'application de règles exposées ci-dessous, et présentes bien sûr dans le manuel de programmation. Validation D'une façon générale, il est établi que la validation d'un logiciel scientifique comporte deux aspects [8] : « — la vérification des modules élémentaires qui réalisent une fonction mathématique ou un algorithme numérique précis. Elle se fait par autocontrôle au niveau du réalisateur ; — la validation globale du logiciel qui intègre ces modules vérifiés. Elle nécessite une comparaison avec des résultats théoriques, expérimentaux, ainsi qu'avec d'éventuels résultats obtenus par des logiciels utilisant d'autres algorithmes de résolution. Car ce n'est pas le logiciel proprement dit qui a besoin d'être validé, c'est en fait l'ensemble des applications qu'il permet de résoudre, avec pour chacune d'elles une plage de validité précise. » Pour C E S A R - L C P C , nous distinguons le cas des pré- et post-processeurs pour lesquels une vérification visuelle suffit pour valider les différents modules graphiques, du cas du code de calcul, pour lequel nous appliquons des règles voisines de celles qui viennent d'être énoncées : a) Recherche de cas test ayant une solution analytique et résolution par éléments finis. L a comparaison entre ces résultats analytiques et numériques fonde la validation de la programmation sur ces cas particuliers [9]. b) Calage des paramètres mécaniques des lois de comportement en modélisant par éléments finis les essais de laboratoire (validation du progiciel, mais aussi validation de la loi de comportement choisie). c) Validation du progiciel par comparaison avec les résultats expérimentaux provenant d'essais in situ, effectués sur ouvrages réels. Les jeux de données utilisés et les résultats obtenus pour a) et b) sont en général répertoriés dans le manuel « Bibliothèque des jeux de données ». L a méthodologie complète mise en œuvre pour c) est plutôt décrite dans les fascicules de la « Bibliothèque d'exemples ». 82 Langage et bibliothèque graphique L'écriture des programmes se fait avec le langage Fortran 77, en excluant toutes les extensions à la norme que pourraient offrir les compilateurs utilisés. L a bibliothèque graphique utilisée par les préet post-processeurs est G K S . Cette bibliothèque autorise un niveau d'interactivité satisfaisant et permet surtout d'être indépendant des unités graphiques (écrans, traceurs, imprimantes, etc.) sur lesquelles les programmes vont dessiner. Portabilité L a portabilité ne se décrète pas a priori, mais se constate lors d'une implantation sur une configuration (machine, système d'exploitation, compilateur, implémentation GKS) que l'on n'avait pas encore rencontrée. Certains conseils peuvent néanmoins être précieux [10], associés au strict respect des normes Fortran 77 et G K S . Malgré ces précautions, certaines instructions posent des problèmes de portabilité : on peut citer les instructions relatives à la gestion des fichiers, l'acquisition de la date, de l'heure, la mesure du temps de calcul, l'emploi de dispositifs particuliers améliorant les performances (typiquement, calcul du produit scalaire), les initialisations de variables dépendant de l'implémentation G K S (exemple : numéros des polices de caractères, des symboles, des pilotes d'unités graphiques, etc.). Pour pouvoir réaliser facilement de nouvelles implantations, les instructions dépendant de la machine et du système d'exploitation, de l'implémentation G K S et des terminaux graphiques ont été regroupés dans des modules particuliers. CESAR-LCPC et la qualité Pour suivre les recommandations de l'Association Française pour le Contrôle Industriel et la Qualité (AFCIQ), l'évaluation de la qualité devrait être confiée à une « cellule qualité », intervenant, par exemple, sur toute la production informatique du L C P C (voire du réseau) destinée à être diffusé. Anticipant sur la mise en place d'un plan qualité logiciel au sein des L P C , la section Modèles numériques se risque donc à évaluer un progiciel dont elle est le principal auteur. Toutefois, et compte tenu des effectifs que le L C P C peut raisonnablement mobiliser autour de C E S A R - L C P C , ne perdons pas de vue que « la qualité est un compromis entre ce qui est souhaitable et ce qui est possible... » [4]. Aspect qualité A u cours des paragraphes précédents, le lecteur aura pu identifier certains critères qui procèdent de la qualité : — richesse des fonctionnalités (voir [2]) ; — facilité d'emploi grâce aux pré- et postprocesseurs interactifs graphiques ; — documentation bien structurée ; — modularité facilitant le développement, la portabilité et la maintenance ; — fiabilité : aspect validation ; — gestion de différentes versions ; — portage sur de nombreuses machines en particulier grâce au langage Fortran ; — indépendance vis-à-vis des postes de travail graphiques : G K S ; — développements pouvant être répartis entre plusieurs équipes. L a production d'un logiciel de qualité consiste également à passer par les phases classiques de développement. On peut ainsi mettre en face de chaque phase un document d'orientation ou un manuel du progiciel C E S A R - L C P C : 0 -Expression des besoins —» Recherche programmée, sujet de thèses ou fascicule « Axes de développement » 1 -Spécifications —¥ Compte-rendu de réunion avec le chef de projet 2 - Conception —» « Manuel Théorique », et fascicule « Description du programme xxx » 3 -Réalisation/ codage —> Fichiers source gramme xxx du pro- 4 - Validation/ tests « Bibliothèque des jeux de données de test » 5 -Exploitation/ maintenance « Recueil d'incidents » Aspect non-qualité L'équipe de développement identifie dans sa production actuelle certains aspects de non-qualité : • Fortran 77 n'est pas un langage garantissant une programmation de qualité et mettant à l'abri des effets de bord, des débordements de tableaux ou des débranchements intempestifs. Il exige donc une grande vigilance lors de la phase d'intégration des développements. • Bien que nous y portions une attention particulière, l'ergonomie des pré- et post-processeurs n'atteint pas celle qu'un utilisateur peut trouver avec les logiciels industriels de la micro-informatique ou de la C A O (Conception Assistée par Ordinateur). • Certaines redondances sont apparues entre les programmes 2D et 3D des pré- et postprocesseurs de la version officielle à cause notamment de leur développement à un moment donné sur des machines non compatibles (Sintran et Unix) et surtout non réseautées. • L a procédure de correction d'erreurs, héritée des habitudes passées, nécessite beaucoup trop d'interventions humaines. • Il n'y a pas de séparation entre équipe de développement et équipe de diffusion/maintenance. Amélioration de la qualité Dans le but d'améliorer la qualité, certaines modifications ont déjà été apportées à la version actuellement en fin de validation, comme, par exemple, la création de modules communs pour supprimer les redondances apparues dans M A X et P E G G Y . Notre méthodologie des corrections doit également être repensée, en utilisant par exemple sous Unix l'outil standard S C C S (Source Code Control System). L a forte image de marque « génie civil » de C E S A R - L C P C vient naturellement des possibilités de modélisation qu'offre le code de calcul par éléments finis C E S A R (familles d'éléments, modules d'exécution, lois de comportement, etc.) et c'est plutôt ce domaine qui constitue le « métier » de l'équipe de développement. Néanmoins, nous avons conscience que C E S A R est de plus en plus utilisé comme une boîte noire et que c'est sur les pré- et postprocesseurs interactifs graphiques M A X et P E G G Y que l'ensemble du progiciel est jugé. Il est ainsi assuré que les utilisateurs seront sensibles à la recherche d'une meilleure ergonomie, ainsi qu'à l'interfaçage avec les produits standards de la C A O . C E S A R - L C P C étant utilisé en France par des non francophones et à l'étranger (Allemagne, Grèce, Portugal, Brésil, Suède, Canada), nous réfléchissons à une organisation des programmes permettant le multilinguisme. Pour la documentation, il semble raisonnable de s'en tenir à l'anglais. On pourrait également discuter le choix du langage de programmation puisque celui-ci apparaît à la fois comme critère de qualité et de non-qualité. Compte tenu du nombre d'instructions déjà rédigées et de l'aspect diffusion sur un grand nombre de machines, C E S A R - L C P C est, et restera, écrit en Fortran. Ce point pourra être réexaminé lorsqu'il deviendra nécessaire de donner un successeur à C E S A R - L C P C . . . Mais peut-être y a-t-il beaucoup à attendre du nouveau langage Fortran 90. 83 Conclusion Après l'expérience d u système R O S A L I E et de l a bibliothèque des P P R , nous avions créé notre propre échelle de v a l e u r s p o u r r a n g e r les spécifications et les critères de qualité de notre actuel pôle de c a l c u l . C e t t e n o t i o n de qualité est m a i n t e n a n t formalisée p a r les t r a v a u x de l ' A F C I Q et de l ' A F N O R . S i elle d e v i e n t u n e exigence chez u n n o m b r e croissant d ' u t i l i s a teurs et de d e s t i n a t a i r e s des résultats de c a l c u l , elle doit s u r t o u t être prise e n compte à chaque phase de développement. L a qualité doit s'appliquer a u t a n t a u x logiciels destinés à être diffusés qu'à ceux s o u m i s à u n e u t i l i s a t i o n i n t e r n e i n t e n s i v e , et d e v e n i r u n e grille de lect u r e de l a p r o d u c t i o n i n f o r m a t i q u e de c h a c u n . C E S A R - L C P C a y a n t été c o n s t r u i t s u r des bases saines, u n e première évaluation de ses aspects qualité a rassuré l'équipe de développ e m e n t q u i a u r a i t p u v o i r l a qualité comme u n e nouvelle mode et comme u n e contrainte r a l e n t i s s a n t et b r i d a n t les développements f u t u r s . P o u v a n t m a i n t e n a n t nous a p p u y e r s u r l a réflexion entreprise d a n s le réseau des L P C depuis les journées d ' i n f o r m a t i q u e de S a i n t B r i e u c [ 1 1 ] , l'aspect qualité doit être c l a i r e m e n t affiché et, e n p a r t i c u l i e r , p r i s e n compte dans le M a n u e l de p r o g r a m m a t i o n de C E S A R L C P C . N o u s veillerons toutefois à l i m i t e r le nombre de critères et de spécifications p o u r éviter t o u t phénomène de rejet de l a p a r t des développeurs, ce q u i i r a i t à r e n c o n t r e de l a n o t i o n même de qualité. REFERENCES BIBLIOGRAPHIQUES [1] I B M C o r p o r a t i o n (1980), Terminologie du traitement de l'information, Publication I B M , 340 p. [2] H U M B E R T P . (1989), C E S A R - L C P C : U n code de c a l c u l p a r éléments f i n i s , Bull, liaison Labo. P. et Ch., 160, m a r s - a v r i l , pp. 112-115. [3] 01-Référence (1989), Les mots de l'année, Périodique 0 1 - I n f o r m a t i q u e , H o r s série n°3. [4] N E E L D . (1987), La notion de qualité dans le cas des logiciels, N o t e C N R S , D i r e c t i o n de l a Valorisation et des A p p l i c a t i o n s de la Recherche. [5] [6] 84 [7] F E Z A N S G . (1983), Présentation du code C E S A R : architecture et possibilités actuelles et futures, Séminaires R e c h e r c h e d u L C P C . Exposés - Débats, (vidéo-cassette de l a séance d u 12 j a n v i e r 1984), S e r v i c e a u d i o v i s u e l d u LCPC. [8] N E E L D . (1987), Recommandations pour l'assurance et le contrôle qualité des logiciels scientifiques (Manuel qualité), Note CNRS, D i r e c t i o n de l a V a l o r i s a t i o n et des A p p l i c a t i o n s de l a R e c h e r c h e . [9] M E S T A T P . (1987), Recueil de solutions analytiques pour validation des codes de calcul aux éléments finis, P u b l i c a t i o n L C P C , S e c t i o n des F o n d a t i o n s et soutènements ( F A E R 1.05.10.7). G U E L L E C P . (1976), R O S A L I E : système de c a l c u l des m a s s i f s et des s t r u c t u r e s . N o t i c e de présentation et d ' u t i l i s a t i o n e n géomécanique et e n mécanique des s t r u c t u r e s , P u b l i c a t i o n L C P C , S e c t i o n Modèles numériques, (épuisé). [10] F I C H E U X - V A P N E F . et al. (1985), F o r t r a n 77 : Guide pour l'écriture de programmes portables, C o l l e c t i o n D E R - E D F , E d . E y r o l l e s , 150 p. H U M B E R T P . (1981), Les systèmes de calcul par éléments finis du LCPC, C o m p t e - r e n d u des Journées de P h y s i q u e , L e s A r c s . [11] C H E R V E T G . et al. (1991), Propositions pour un Manuel Qualité des applications informatiques des LPC, doc. d u L R P C de S a i n t - B r i e u c .