Présentation et objectifs généraux
Mots clés : évaluation partielle,
spécialisation, compilation, transformation de programmes,
génie logiciel, optimisation de systèmes d'exploitation,
systèmes adaptatifs, systèmes embarqués, systèmes
d'exploitation .
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.
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é permettant 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.
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.
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.
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 tels 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.
Sous-sections