• Aucun résultat trouvé

Les niveaux de généricité et les experts

calcul([1, 2, 3, 4]) fournira 4

6.3. Les niveaux de généricité et les experts

Finalement, la généricité dans Metagen s’applique à trois aspects : le domaine D, le formalisme F du domaine D et le formalisme de spécification informatique S. Il y a cependant certaines dépendances : on ne peut pas changer D quand on a choisi F, et le choix de D restreint les possibilités pour F. La démarche est séduisante en raison de cette triple généricité et aussi parce que plusieurs éléments sont engendrés automatiquement à partir de connaissances déclaratives. Les éléments totalement génériques programmés à la main sont EditeurFormalisme, GenerateurEditeur et GenerateurLangageRegles. Un élément programmé à la main et générique par rapport à D et à F, mais dépendant de S est GenerateurProgramme(S). Les éléments contenant l’essentiel des connaissances sont ConnaissancesDomaine(D) et GenerateurSpecification(Formalisme(D),S).

L’architecture Metagen demande la participation de plusieurs experts humains. Précisons qui sont ces experts, leurs compétences et leurs rôles dans l’architecture.

• Le méta-expert générique sait ce qu’est un formalisme et il connaît le MetaFormalisme. Il sait en quoi consiste la tâche “décrire un formalisme en utilisant le MetaFormalisme” et il est capable d’implémenter un éditeur permettant à un utilisateur d’effectuer cette tâche. Il sait en quoi consiste la tâche “décrire des connaissances en utilisant un formalisme F” et il est capable d’implémenter un programme permettant, à partir d’une description de F, d’engendrer un éditeur permettant à un utilisateur d’effectuer cette tâche. Il sait en quoi consiste la tâche “parcourir et créer des représentations écrites dans le formalisme F” et il est capable d’implémenter un programme permettant, à partir d’une description de F, d’engendrer des primitives de langage pouvant servir d’outils à un utilisateur pour effectuer cette tâche.

• Le méta-expert du domaine D connaît le MetaFormalisme et le formalisme Formalisme(D) attaché au domaine D. Il sait décrire Formalisme(D) à l’aide du MetaFormalisme. Il doit être capable d’utiliser l’éditeur de formalisme mis à sa disposition pour cela.

• L’expert du domaine D connaît les concepts du domaine D et possède des connaissances pour résoudre des problèmes du domaine D. Il connaît le formalisme Formalisme(D) propre au domaine et il sait exprimer les concepts et les connaissances dans ce formalisme. Il doit être capable d’utiliser l’éditeur de connaissances mis à sa disposition pour introduire ses connaissances dans le formalisme Formalisme(D).

• L’ingénieur de la connaissance spécialisé dans le domaine D et dans la spécification de systèmes informatiques dans le formalisme S connaît le MetaFormalisme, le Formalisme(D) et le formalisme S. Il doit être capable d’écrire des règles permettant d’opérationnaliser les connaissances fournies par l’expert du domaine D, c’est-à-dire de les traduire en une spécification d’un système informatique écrite dans le formalisme S. Il peut pour cela utiliser les primitives de langage mises à sa disposition pour parcourir et créer des représentations écrites dans Formalisme(D) et en S. Il est très probable que, pour écrire ces règles, il doit posséder des connaissances sur le domaine D (la traduction n’est pas purement syntaxique) ainsi que des métaconnaissances lui permettant d’évaluer des caractéristiques des connaissances comme leur importance, leur rôle, leur certitude, etc. Il doit de même posséder des connaissances et métaconnaissances sur les concepts liés à la spécification de systèmes dans le formalisme S.

Par rapport aux autres experts, c’est lui qui a la tâche la plus difficile et nécessitant le plus de créativité. Il doit faire le lien entre l’aspect déclaratif des connaissances et l’aspect opérationnel de la spécification d’un système, et ceci en passant parfois au niveau méta. Remarquons qu’il est présenté comme un spécialiste et non pas comme un généraliste : il est spécialisé dans un formalisme et un domaine d’entrée (D) et dans un formalisme et des concepts de sortie (S). Il y a cependant de fortes chances que, pour mener à bien sa tâche spécialisée, il possède aussi des connaissances sur la tâche générique consistant à transformer des connaissances en une spécification de système. Mais un tel niveau de généricité n’a pas été introduit explicitement dans l’architecture.

• L’expert en systèmes informatiques spécifiés en S connaît le formalisme de spécification S et est capable d’implémenter un générateur de programme permettant de produire un programme exécutable à partir d’une spécification écrite en S. Sa tâche n’est a priori pas facile mais il peut bénéficier de toute l’expérience accumulée en informatique dans ce domaine. Les principes de tels générateurs ont été mis au point, du moins pour certains formalismes.

En quoi Metagen se rapproche-t-il du modèle à deux agents que nous avons décrit plus haut ? Notre agent généraliste est indépendant du domaine mais il met en oeuvre une certaine stratégie fixée liée à un certain type de tâche fixé (résolution de problèmes par reformulation-classification pour Syrclad, génération de problèmes par chaînage arrière pour Sygep). Autrement dit, il n’est pas entièrement générique vis-à-vis du domaine. Apparemment, Metagen ne contient pas de tâche prédéfinie ni de stratégie prédéfinie. Cependant, choisir le formalisme de spécification S peut fixer implicitement une tâche et une stratégie, en particulier s’il s’agit d’un formalisme lié à un framework mettant en oeuvre une certaine stratégie pour effectuer un certain type de tâche. Le formalisme du domaine peut ensuite être défini en fonction de cette tâche et de cette stratégie, donc finalement en fonction de S. Par exemple, pour Syrclad, le formalisme de spécification S peut contenir les notions de “graphe de classification” et d’“attributs discriminants” qui sont liées à la stratégie mais indépendantes du domaine. L’agent généraliste serait alors la réunion de GenerateurProgramme et de certaines règles de GenerateurSpecification (celles qui sont indépendantes du domaine D). L’agent spécialiste, quant à lui, serait la réunion de ConnaissancesDomaine(D) et aux règles de GenerateurSpecification qui dépendent du domaine.

7. Conclusion

Nous avons décrit un système opérationnel capable d’effectuer une tâche T dans un domaine D en utilisant une stratégie S comme la réunion d’un agent généraliste possédant des connaissances sur la façon d’effectuer la tâche T avec la stratégie S et d’un agent spécialiste possédant des connaissances sur le domaine D et sur la réalisation particulière de la stratégie S dans le domaine D.

Nous avons envisagé trois types de communication entre les deux agents (délégation, paramétrage, parasitage) et donné des exemples de mécanismes de base utilisables (classes abstraites et méthodes virtuelles, fonctions du deuxième ordre, hooks, callbacks). Nous avons donné des exemples de types d’architectures possibles pour exploiter des systèmes génériques (frameworks, métamodélisation) et nous avons donné l’exemple de l’architecture de Metagen, fondée sur la métamodélisation. Cette revue est loin d’être exhaustive, car le thème de la généricité est présent sous de nombreux aspects : la réutilisabilité, la programmation par composants, les méthodes de résolution de problèmes, les “design patterns”, les ateliers et méta-ateliers de génie logiciel, la programmation automatique à partir de spécifications, les générateurs d’interfaces utilisateur, les outils et méta-outils d’acquisition de connaissances. Voir une revue détaillée dans [Revault 96].

Le concept de généricité est lié au concept de niveau méta. Les deux concepts ne sont cependant pas confondus. Un concept générique comporte des éléments indéterminés destinés à être instanciés par un spécialiste (comme des paramètres ou des méthodes virtuelles). Il résulte d’une abstraction et d’une factorisation des concepts communs à plusieurs domaines. Le concept de niveau méta est plus difficile à cerner [Pitrat 90]. Il est présent ici par deux aspects : d’une part la représentation explicite d’un formalisme dans un métaformalisme et l’exploitation de cette représentation par des méta-outils capables d’engendrer des outils, et d’autre part l’utilisation de métaconnaissances pour opérationnaliser les connaissances d’un domaine. L’utilisation de techniques “méta” dans la réalisation d’un système générique a l’avantage de rendre les connaissances plus

explicites et plus déclaratives (donc plus faciles à exprimer et mieux exploitables), et de mieux répartir “l’intelligence” entre l’agent généraliste et l’agent spécialiste.

8. Références

[GNU Emacs 98] GNU Emacs Lisp Reference Manual - Hooks, URL http://www.tac.nyc.ny.us/manuals/elisp/elisp_292.html

[Guin 97] Guin N., Reformuler et classer un problème pour le résoudre, l’architecture Syrclad et son application à quatre domaines, Thèse de doctorat, Université Paris 6, 12 décembre 1997.

[Kornman 93] Kornman S., Sade : un système de surveillance réflexif à base de connaissances. Thèse de l’Université Paris 6, 1993.

[Parchemal 88] SEPIAR: un systeme a base de connaissances qui apprend a utiliser efficacement une expertise. Thèse de doctorat, Université Paris 6, 22 décembre 1988.

[Pécégo 98] Pecego G., SYGEP, Un système de génération d’énoncés de problèmes dans des domaines variés, Thèse de doctorat, Université Paris 6, 12 juin 1998.

[Pitrat 90] Pitrat J., Métaconnaissance : Futur de l’intelligence artificielle. Paris, Hermes, 1990.

[Revault 96] Revault N., Principes de méta-modélisation pour l’utilisation de canevas d’applications à objets (Metagen et les Frameworks), Thèse de doctorat, Université Paris 6, 19 novembre 1996.