Méthodologie et outils pour la programmation réflexive dans les langages à objets
Auteur / Autrice : | Jean-Christophe Pazzaglia |
Direction : | Jean-Pierre Regourd |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance en 1997 |
Etablissement(s) : | Nice |
Partenaire(s) de recherche : | Autre partenaire : Université de Nice-Sophia Antipolis. Faculté des sciences |
Jury : | Président / Présidente : Michel Rueher |
Examinateurs / Examinatrices : Danièle Hérin-Aimé, Jean-François Perrot, Jean-Paul Rigault | |
Rapporteurs / Rapporteuses : Jean-Pierre Briot, Pierre Cointe, Jacques Ferber |
Mots clés
Mots clés contrôlés
Mots clés libres
Résumé
La distinction entre concepteur et utilisateur d'un langage s'estompe des lors que celui-ci propose des capacités réflexives. Certains langages à objets, le plus souvent par l'intermédiaire d'un protocole métaobjet, décrivent ainsi non plus un point mais une région dans l'espace des langages. Une étude détaillée des modèles et des techniques actuellement utilisés dans ce domaine permet d'exhiber les moyens d'actions offerts et de corréler trois facteurs au centre de nos préoccupations : le potentiel expressif, l'efficacité et la facilité d'utilisation. Une analyse in vivo d'un cas d'école décliné dans trois langages est suivie de plusieurs expérimentations. Ces expériences permettent d'isoler les difficultés propres et les différents degrés d'utilisation de la programmation réflexive. Nous proposons une représentation graphique pour les modèles bijectif et surjectif qui offre une aide aux concepteurs et utilisateurs. Nous insistons sur les contraintes qu'imposent la situation particulière du méta-programmeur. Nous montrons comment l'architecture des langages ou des solutions ad hoc facilitent la programmation d'extensions réflexives. Nous proposons une action en amont qui modifie la démarche de conception dans le domaine réflexif. L'architecture associée permet la combinaison d'extensions compatibles mais offre aussi le moyen de détecter des éventuelles inconsistances. Les principes généraux de cette approche coopérative sont utilisés pour la réalisation de deux prototypes permettant une programmation coopérative : le premier avec un langage du type de clos et le second dans un langage d'acteurs réflexifs. Leurs capacités sont exposées via deux utilisations. Un exemple de rétroconception exhibe les différences entre solution originelle et coopérative. Nous détaillons comment la prise en compte des problèmes de composition permet d'aboutir à des outils génériques compatibles et capables d'analyser l'exécution de programmes réflexifs.