Avant Projet Compose

Précédent : Composition de l'équipe
Remonter : Avant-projet COMPOSE, Conception de programmes
Suivant : Fondements
scientifiques
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.
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.
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.
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.
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.
Précédent : Composition de l'équipe
Remonter : Avant-projet COMPOSE, Conception de programmes
Suivant : Fondements scientifiques