Avant Projet Compose

previous up next contents
Précédent : Composition de l'équipe Remonter : Avant-projet COMPOSE, Conception de programmes Suivant : Fondements scientifiques



Présentation générale et objectifs

  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 [Ber90].


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 une méthodologie 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 explorons des aspects linguistiques pour exprimer les caractéristiques d'un sous-problème. Nous étudions également différents types d'architecture logicielle permettant de rendre explicites les aspects génériques du logiciel.

Principes et techniques.

Nous nous proposons d'énoncer 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, afin notamment de garantir leur correction. 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 devons développer des outils permettant de spécialiser un logiciel générique en fonction d'un certain contexte d'utilisation. Nous étudions la conception et la mise en oeuvre pratique d'un système de spécialisation automatique de programmes.

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 systèmes d'exploitation et des télécommunications 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 : Avant-projet COMPOSE, Conception de programmes Suivant : Fondements scientifiques