Projet COLOSS
COmposants et LOgiciels SûrS

Le thème de recherche central du projet COLOSS est la conception d'outils d'aide au développement et à la validation de composants logiciels. Notre approche est fondée sur une expérience collective sur les thèmes des méthodes formelles, de l'intégration des paradigmes, de l'analyse et conception objet et de la validation. 

Dans le présent projet, nous nous attelons à l'étude et à l'élaboration de concepts, mécanismes et outils pour modéliser et développer des composants et des logiciels sûrs. La modélisation (on parle aussi de spécification) est une démarche scientifique qui consiste, pour des fins d'étude, à élaborer une abstraction d'un phénomène ou d'un système. On peut modéliser un système existant, ou bien modéliser un système à construire.Un composant est une entité logicielle dotée d'une spécification précise, d'un fonctionnement précis et d'une interface permettant de l'utiliser dans la construction d'autres logiciels. Nous adoptons la vision module réutilisable (Parnas}, reprise par exemple dans les travaux de Meyer (Trusted Components). Par sûreté nous entendons un fonctionnement correct c'est-à-dire tel qu'il est prévu par les spécifications informelles puis les spécifications formelles.

La modélisation et la technologie des composants font l'objet de nombreuses études depuis plusieurs années. Cependant de nombreux problèmes demeurent; par exemple la construction de modèles mathématiquement corrects, la construction de composants dont le fonctionnement est sûr, la preuve de correction des propriétés attendues des composants, la réutilisation des composants, les méthodes rigoureuses d'élaboration et de composition de composants, la validation d'une spécification du composant par le client, l'utilisation de plusieurs paradigmes dans un composant, etc.

Les problèmes ou questions ouvertes sont de différents types :

  • fondamental (élaboration de concepts et de méthodes de modélisation et de développement, analyse des modèles issus des spécifications, étude de problèmes généraux dont les solutions peuvent être utilisés dans d'autres contextes similaires, mise au point de systèmes de raisonnement, etc) ;
  • technologique (applications directes sur des cas concrets, mise au point d'outils pour spécifier et développer, élaboration de solutions adhoc selon des cas d'étude, etc).

Les travaux abordés dans notre projet sont des préoccupations importantes identifiées clairement en génie logiciel (software engineering). Ils se situent à la frontière entre les travaux purement théoriques et les travaux plus technologiques. Ceci est en soit une de nos originalités ; en effet, les groupes de recherche se situent souvent dans une des communautés.

Dans le but de réduire les coûts de conception et de maintenance des systèmes informatiques, de rendre leur fonctionnement plus sûr et de satisfaire à certaines normes pour la certification, l'utilisation de méthodes formelles et semi-formelles pour les spécifier et les vérifier est devenue nécessaire. Cependant, tous les aspects d'un système informatique ne pouvant ni être spécifiés, ni être vérifiés avec une seule  approche, l'utilisation conjointe de différentes approches doit être envisagée. Cette problématique est une des préoccupations essentielles dans la communauté internationale du génie logiciel et de la conception de circuits digitaux. 

Notre objectif est de résoudre des problèmes théoriques liés, d'une part à la cohabitation de modules de spécifications écrits avec des  formalismes différents, et d'autre part à l'utilisation conjointe de techniques de vérifications différentes. Ces travaux s'organiseront autour de la  conception d'un environnement performant de spécification, de vérification et de développement. Cet environnement permettra d'intégrer des  spécifications écrites avec des méthodes/langages différents, de les valider et de les vérifier à l'aide de différentes techniques. L'environnement devra aussi permettre la génération de code en langage orienté objet. 
 
 Mots clés : spécification formelle, validation, vérification formelle, composants et architectures logicielles, interfaces comportementales
 
Mai 2005

  • Pour une description plus complète voir docpdf