Projet : COMPOSE

previous up next contents
Précédent : Principes, techniques et outils de Remonter : Résultats nouveaux Suivant : Spécialisation de systèmes d'exploitation


   
Langages dédiés et architectures logicielles génériques



Participants : Charles Consel, Scott Thibault, Renaud Marlet, Gilles Muller.

 

Mots clés : génie logiciel, langage dédié, interprète, machine abstraite .

Glossaire :

Langage dédié langage qui permet d'exprimer des variations à l'intérieur d'un domaine ou d'une famille d'applications.

Résumé :

Nous proposons un cadre général pour le développement de générateurs d'applications reposant sur la notion de langages dédiés [[10]]. Dans ce cadre, l'évaluation partielle nous permet d'obtenir des implémentations efficaces. Plus généralement, l'évaluation partielle permet d'optimiser l'implémentation de nombreuses architectures logicielles.

Les générateurs d'applications sont une approche très prometteuse pour la réutilisation logicielle. En particulier, ils apportent des gains de productivité supérieurs aux méthodes basées sur la réutilisation de composants logiciels et permettent d'appliquer des méthodes formelles. Cependant, malgré ses avantages, l'industrie du logiciel hésite à adopter cette approche du fait de l'absence d'outils d'aide à la construction de générateurs d'applications. Nous avons proposé un cadre général pour le développement de tels générateurs [[21]] reposant sur une approche à deux niveaux. Le premier niveau consiste à identifier les objets et opérations fondamentales du domaine d'applications, de manière à former une machine abstraite. Le second niveau consiste en la conception d'un langage dédié, qui permet d'exprimer des variations à l'intérieur d'une famille d'applications. Un programme dans ce langage dédié est implémenté via un interpréteur à l'aide des opérations de la machine abstraite définie au premier niveau. Cette structure en couche est très flexible, mais pose a priori des problèmes de performance. Grâce à l'utilisation systématique de l'évaluation partielle, il est possible de supprimer le surcoût de l'interprétation [[28]].

Ce schéma général de conception et d'implémentation d'environnements pour les langages dédiés a été validé sur GAL, un langage dédié pour l'écriture de pilotes de cartes graphiques (voir module 5.4), et PLAN-P, un langage dédié pour l'écriture de protocoles dans les réseaux actifs (voir module 5.5). Ces deux langages nous ont permis de mettre en évidence les avantages que l'on attribue généralement aux langages dédiés : productivité accrue, programmation de haut niveau grâce à une plus grande abstraction, vérifications formelles facilitées. À titre d'exemple, le facteur de réduction en taille par rapport à un programme équivalent écrit en C est de 10 pour GAL et de 3 pour PLAN-P. GAL permet la vérification de propriétés sur les drivers comme le non-recouvrement de registres d'entrées/sorties. PLAN-P permet la vérification de propriétés telles que la terminaison des protocoles, la livraison et la non-duplication exponentielle des packets.

Pour de nombreuses approches de génie logiciel, comme celle des langages dédiés, l'évaluation partielle s'avère être un outil tout à fait général pour traiter le compromis flexibilité/efficacité qui existe dans ce domaine [[13],[21]]. Après recherche de la source de l'inefficacité au sein de plusieurs architectures logicielles, nous avons observé que celle-ci était en partie due à l'intégration des données et du contrôle lors de l'assemblage des divers composants d'un système. La raison tient à ce que la flexibilité n'apparaît pas uniquement au stade de la conception, mais se matérialise également dans l'implémentation. Nous proposons d'utiliser la spécialisation comme moyen systématique pour améliorer la performance et, dans certains cas, réduire la taille des programmes. Nous avons étudié pour cela plusieurs implémentations représentatives de mécanismes flexibles employés dans diverses architectures logicielles : diffusion sélective, recherche de motifs, interpréteurs, couches logicielles, bibliothèques génériques. Nous avons montré comment une application systématique de l'évaluation partielle conduisait à l'optimisation de ces mécanismes [[16]].


previous up next contents
Précédent : Principes, techniques et outils de Remonter : Résultats nouveaux Suivant : Spécialisation de systèmes d'exploitation