Projet : COMPOSE

previous up next contents
Précédent : Composition de l'équipe Remonter : Conception de programmes et systèmes Suivant : Fondements scientifiques


   
Présentation et objectifs généraux

 

 

Le développement des logiciels et des systèmes informatiques modernes est soumis à des objectifs importants mais contradictoires de généralité et de performance. La généralité dans la conception est souvent recherchée dans l'ingénierie du logiciel afin de réduire le cycle de développement et les coûts de production et de maintenance. Pour ce faire, on essaie de rendre les logiciels aisément adaptables, réutilisables et maintenables. Ces besoins ont été moteurs dans de nombreuses recherches en langage de programmation et en ingénierie du logiciel telles que les langages objets ou les bus logiciels (par exemple CORBA). Toutefois, le gain en généralité entraîne fréquemment une perte en efficacité à l'exécution, ce qui limite le domaine d'application des approches précédentes. Par exemple, dans le domaine du calcul scientifique, on préfère souvent réécrire des bibliothèques trop génériques car l'explosion des paramètres les rend généralement inefficaces.


Notre projet vise à concilier des impératifs de généricité, lors de la conception d'un logiciel, et de performance, lors de son implémentation. Plus précisément, notre démarche consiste à rendre performant un programme générique en l'adaptant à un contexte donné d'utilisation. Le contexte est défini par un ensemble de paramètres qui peuvent être relatifs à la taille du problème traité, à des propriétés sur les valeurs d'entrée, à la configuration du matériel, etc. Ce contexte peut être déterminé avant l'exécution du programme ou peut varier à différents stades de son exécution. En conséquence, le processus d'adaptation doit pouvoir être effectué à la fois statiquement, à la compilation, et dynamiquement, lors de l'exécution.


Promouvoir la conception de logiciels adaptatifs en tant que technique réaliste d'ingénierie logicielle suppose de couvrir tous les aspects du processus de développement de logiciels, allant de la méthodologie de conception de logiciels adaptatifs jusqu'à leur instanciation effective, dans le contexte d'applications de taille réelle. En fait, à ces différents aspects correspondent des questions fondamentales qu'il est important d'énoncer pour comprendre les enjeux de cette problématique. Comment concevoir un logiciel adaptatif ? Comment rendre un logiciel existant adaptatif ? Comment instancier un logiciel adaptatif ? Comment mesurer les bénéfices de l'approche ?


Ces questions nous amènent à adopter une démarche verticale dans le choix de nos objectifs de recherche depuis l'étude des principes de l'adaptation de programmes jusqu'au développement d'outils effectuant cette adaptation dans le cas d'applications de taille réelle.

Conception de logiciels adaptatifs.

Notre objectif est de développer des méthodologies de conception de logiciels dont la généricité permet de traiter un problème général, et dont l'instanciation permet de se focaliser sur un sous-problème donné. Afin d'atteindre cet objectif, nous étudions la notion de langage dédié, qui permettent de programmer des familles d'applications. Nous étudions également différents types d'architectures logicielles permettant de rendre explicites les aspects génériques du logiciel.

Principes et techniques.

Nous étudions les principes sur lesquels repose le processus d'adaptation de programmes. L'étude des aspects fondamentaux de ce processus nous conduit à formaliser certaines de ses phases, telles que des analyses et des transformations de programmes. Ce travail nous permet un développement rigoureux de techniques de mise en oeuvre du processus d'adaptation de programmes.

Développement d'outils.

Pour compléter notre approche de conception de logiciels adaptatifs nous développons des outils permettant de spécialiser un logiciel générique en fonction d'un certain contexte d'utilisation.

Applications de taille réelle.

La validation de notre approche passe inévitablement par son utilisation dans des applications industrielles. Nos outils doivent ainsi traiter des langages de programmation utilisés dans l'industrie tel que C. Nous visons en premier lieu, les domaines des télécommunications et des systèmes embarqués grand public dans lesquels nous collaborons déjà avec des industriels, et où des besoins d'adaptabilité ont été clairement identifiés.



 

previous up next contents
Précédent : Composition de l'équipe Remonter : Conception de programmes et systèmes Suivant : Fondements scientifiques