Précédent : Composition de l'équipe Remonter :
Conception de programmes
et systèmes 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.
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.