Projet Croap

previous up next contents
Précédent : Fondements scientifiques Remonter : Projet CROAP, Conception et réalisation Suivant : Logiciels



Grands domaines d'application

 

Panorama

Les outils et techniques développés dans le projet sont déjà appliqués industriellement dans un outil pour maintenir du code FORTRAN. Nos compétences sur la sémantique, les preuves et la construction d'environnements interactifs intéressent l'ensemble des domaines industriels où la présence d'erreurs même minimes dans les programmes peut avoir des conséquences graves : danger pour la vie humaine comme dans les transports (avions, automobiles), la chirurgie assistée par ordinateur, ou simplement coût prohibitif comme dans le cas du commerce électronique et des réseaux de télécommunication, ou du spatial.

Maintenance et manipulation de programmes

Résumé : L'ensemble de l'industrie informatique actuelle doit gérer une quantité considérable de vieux logiciels qu'il importe de pouvoir maintenir de façon sûre. Les outils de manipulation de programmes issus de notre recherche apportent une aide appréciable dans cette tâche.

Depuis les années 70, les grandes entreprises ont développé une importante quantité de code qu'il importe de maintenir et de faire évoluer pour utiliser de façon optimale et compétitive l'évolution du parc informatique. En plus de cette évolution du parc informatique, certains évènements comme le passage à l'an 2000, ou le changement de monnaie imposent parfois de reprendre entièrement ce code. Lorsque ce code est écrit en assembleur, cet objectif est une gageure, mais lorsque le code initial a été développé dans un langage de programmation « standard » il est possible de fournir un support informatique efficace à cette tâche.

Le système CENTAUR fournit le noyau pour FORESYS, l'environnement de manipulation de programmes FORTRAN développé et commercialisé par Simulog. L'évolution de FORESYS est l'objet d'une collaboration continue avec Simulog. FORESYS peut être utilisé pour adapter des vieux codes à de nouvelles machines, en passant par exemple de codes séquentiels à des codes parallèles (grâce à des recherches effectuées dans le projet SINUS).

Nos recherches actuelles interviennent dans l'évolution de FORESYS par l'intégration en cours d'un outil de transformation de programmes systématique, TRFL.

Logiciel embarqué

Résumé : Les éléments logiciels présents dans les appareils modernes ont une importance cruciale pour le bon fonctionnement de ces appareils. Dans de nombreux cas, il n'est plus possible de recourir uniquement à des campagnes de tests pour assurer leur correction et des techniques de programmation certifiée doivent être développées et mises à la portée des ingénieurs. Notre travail sur la sémantique, les preuves et la construction d'environnements de preuve contribue à cet effort.

Les appareils que nous utilisons dans notre vie quotidienne contiennent une quantité croissante de logiciel. Ce logiciel contribue à la compétitivité de ces appareils en permettant des utilisations plus simples du point de vue de l'utilisateur, mais souvent plus complexes en réalité.

Jusqu'à maintenant, les erreurs de programmation étaient une caractéristique admise et le coût de telles erreurs était réduit par la possibilité de faire intervenir un opérateur humain pour diagnostiquer les pannes et corriger les erreurs manuellement. Lorsque le logiciel est embarqué, ceci n'est plus possible. Le coût d'une erreur pour l'entreprise qui utilise ce logiciel devient beaucoup plus important : rappel de voitures déjà vendues, fusées ou sondes spatiales dont les missions échouent, accidents de véhicules de transports.

De nombreuses équipes de recherche mettent au point des techniques qui permettent de développer des logiciels validés vis-à-vis de spécifications, ce qui permettrait théoriquement de réduire le risque d'erreur à zéro (en pratique des erreurs peuvent également se glisser dans les spécifications).  Ces techniques sont plus ou moins coûteuses et plus ou moins générales. Avec le logiciel COQ, dont le langage de spécification permet de faire des mathématiques très générales et contient un langage de programmation fonctionnel pur, on se trouve à un bout du spectre : on peut aborder des problèmes très variés et complexes mais avec un coût très important. Les recherches que nous faisons contribuent à diminuer ce coût, d'une part en utilisant efficacement les possibilités des stations de travail graphiques, d'autre part en abaissant le niveau de compétence requis de l'ingénieur. Nos recherches dans ce domaine sont le lieu de collaborations avec des constructeurs aéronautiques.

Logiciel pour le commerce électronique

Résumé : Dans le cadre du commerce électronique, les enjeux de la programmation sans erreurs sont évidents. Le langage émergent dans ce domaine est le langage JAVA, un langage à objets. La compétence que nous avons développée sur la sémantique de ce style de programmation s'applique naturellement à ce secteur économique.

Le commerce électronique a deux supports principaux : le réseau Internet et les cartes à puces. Sur ces deux supports, le langage JAVA semble devoir s'imposer comme le langage de prédilection pour développer les applications de commerce électronique. Si ce langage semble fournir un support raisonnable pour le développement d'applications fiables, il est d'une importance capitale d'assurer que les programmeurs ne laissent pas de failles dans la protection des données précieuses des utilisateurs (numéros de compte en banque, codes confidentiels et signatures, etc). Ici le besoin de sûreté absolue est réel, puisqu'il ne s'agit plus de faire fonctionner des programmes dans un environnement naturel qui présente aléatoirement des situations difficiles mais de les rendre résistants à des attaques systématiques. Des expériences menées dans d'autres équipes ont déjà montré que les outils de preuve pouvaient apporter une aide sur ce sujet, mais toujours avec un coût élevé.

Une autre approche est de fournir des outils certifiés pour l'analyse de programmes (grâce à une description formelle de la sémantique du langage) qui permettent à des programmeurs de vérifier si leur programme respecte un style sûr. Ici on ne demande pas à l'ingénieur de faire à la main la preuve de son application mais on fournit à la fois un outil de vérification et la preuve que cet outil ne laissera pas passer de programmes vulnérables. L'outil pourra être développé en fonction des spécificités du problème (par exemple, les applications sont de petite taille si elles sont prévues pour être chargées sur une carte à puce). Ce type d'application est actuellement en cours de discussion avec des partenaires industriels.



previous up next contents Précédent : Fondements scientifiques Remonter : Projet CROAP, Conception et réalisation Suivant : Logiciels