Projet : Orion

previous up next contents
Précédent : Introduction Remonter : Fondements scientifiques Suivant : Interprétation automatique d'images


   
Pilotage de programmes

Mots clés : pilotage de programmes, planification, réutilisation de programmes, génie logiciel .

 

Participants : Monica Crubézy, Mar Marcos, Sabine Moisan, Jean-Paul Rigault, Monique Thonnat.

Résumé :

Nous proposons une approche basée sur les techniques des systèmes à base de connaissances pour automatiser l'utilisation de logiciels complexes. Nous étudions le problème de la modélisation des connaissances spécifiques au pilotage de programmes. Cette modélisation sert à définir, d'une part, des méthodes de vérification de bases de connaissances, et, d'autre part, des moteurs dédiés au pilotage de programmes. Enfin nous réalisons des prototypes de moteurs développés grâce à une plate-forme logicielle dont le but est de fournir un environnement commun à différents systèmes de pilotage.

Le pilotage de programmes a pour but d'automatiser l'utilisation de logiciels complexes (bibliothèques de traitement d'images par exemple), grâce à des systèmes capables de planifier des traitements et d'en contrôler l'exécution. Le pilotage de programmes est un domaine de recherches récent. Un nombre croissant de travaux sont issus de nombreux domaines techniques et applicatifs. Ces activités de recherche sont souvent motivées par un domaine d'application particulier (tel que le traitement d'images, le traitement du signal ou le calcul scientifique).

Nous proposons une approche basée sur les techniques des systèmes à base de connaissances (SBC).

Un système à base de connaissances pour le pilotage de programmes est généralement constitué :

Modélisation du pilotage

Afin de mieux comprendre la problématique du pilotage de programmes, d'améliorer la qualité de l'utilisation des programmes existants et d'élargir leurs domaines d'applications, les connaissances impliquées dans le processus de prise de décision de l'expert doivent être décrites de manière structurée et indépendante de l'implantation. Ceci peut être atteint en appliquant des techniques de modélisation des connaissances. Nous étudions dans quelle mesure les compétences sur le pilotage de programmes peuvent être représentées explicitement. Une description des connaissances de pilotage de programmes permet le transfert des compétences de l'expert qui a développé la bibliothèque vers des utilisateurs novices. Nous avons modélisé les concepts et les mécanismes du pilotage de programmes tout d'abord pour OCAPI [[1]], puis pour les moteurs récemment développés. Pour cela nous avons utilisé le modèle d'expertise de KADS. Ce travail de modélisation a été amélioré en se basant sur des techniques de réutilisation de composants logiciels (génie logiciel), des techniques de planification (intelligence artificielle), des systèmes existants de pilotage de programmes et sur notre expérience pratique sur des applications comme la détection d'obstacles dans des scènes routières, l'imagerie médicale et la classification de galaxies.

Vérification de bases de connaissances

Le problème de la vérification de systèmes à base de connaissances de pilotage de programmes est important pour assurer leur robustesse. Cette exigence de robustesse est encore plus cruciale pour des systèmes autonomes. Nous avons choisi de nous appuyer non seulement sur les propriétés des modes de représentation des connaissances utilisés dans les SBC (schémas et règles), mais aussi sur le modèle sur lequel ces systèmes sont basés. Nous étudions des systèmes à base de connaissances construits grâce à des environnements de développement dédiés au pilotage et intégrant donc une modélisation fine de cette classe de problèmes. Cette approche nous offre un cadre approprié pour définir des méthodes de vérification qui prennent en compte les différents types de connaissance impliqués. Notre but est de fournir aux experts une aide pendant la construction d'une base de connaissances, en intégrant la vérification dans la méthodologie de développement du système à base de connaissances. L'application de méthodes de vérification classiques, fortement basées sur la syntaxe des modes de représentation des connaissances, doit être précédée d'une étude détaillée du rôle que les différents types de connaissances jouent dans les systèmes de pilotage. Ainsi, l'utilisation et la représentation des connaissances sont prises en compte de façon complémentaire pour la vérification. Ceci implique des vérifications syntaxiques, structurelles, aussi bien que sémantiques (sur le rôle des objets, par exemple). Étant donné une base de connaissances et le modèle du moteur de pilotage qui va l'utiliser, notre but n'est pas seulement de vérifier la consistance et la complétude de la base, mais aussi de vérifier l'adéquation de la connaissance par rapport à la façon dont le moteur va l'utiliser. Pour cela, nous avons entrepris la modélisation de différents moteurs de pilotage.

Plate-forme de développement de systèmes de pilotage

La construction d'outils dédiés à une classe de problèmes particulière (ici le pilotage de programmes) offre deux avantages : tout d'abord focaliser les modèles de connaissances fournis par les outils sur les besoins de la classe de problèmes, et ensuite fournir des formalismes unifiés et communs aux bases de connaissances d'une même classe de problèmes. Nous souhaitons aller plus loin et faciliter aussi l'écriture des moteurs eux-mêmes, afin de pouvoir décrire une stratégie de pilotage à un niveau abstrait et de pouvoir facilement changer de stratégie selon les besoins. C'est dans ce but qu'a été développée la plate-forme LAMA, qui fournit un environnement commun à différents systèmes de pilotage, comportant un langage de description et des facilités de vérification de bases de connaissances, ou des interfaces graphiques. Grâce à une telle plate-forme, il est possible de concevoir facilement différents moteurs. Une même base de connaissances peut être utilisée par différents moteurs moyennant quelques modifications bien identifiées en fonction du moteur tout en gardant le même environnement de développement.


  
Figure 1: L'architecture de LAMA. Le centre est constitué d'une bibliothèque de composants réutilisables pour construire des moteurs. La plate-forme comporte le langage de description de bases de connaissances YAKL, des outils de vérification (V&V), des modes de développement sous Emacs et des outils optionnels comme les interfaces graphiques ou un module d'apprentissage.
\includegraphics[width=13cm]{Figures/architecture.id}

La plate-forme (voir figure 1) comprend principalement une bibliothèque de composants réutilisables pour construire des moteurs de pilotage de programmes, un langage de description de base de connaissances ( YAKL), un serveur de messages ( LAd), des interfaces graphiques, et des outils de vérification de base de connaissances.

Bibliothèque de composants. La bibliothèque de composants [VMT96] comprend, d'une part, des structures représentant les concepts intervenant en pilotage de programmes et, d'autre part, des instructions nécessaires à la description des stratégies de raisonnement en pilotage. Elle facilite la construction de moteurs ou de variantes de moteurs en permettant de décrire leurs stratégies de raisonnement à un niveau abstrait, plus simplement et plus rapidement qu'avec un langage de programmation. De plus, les évolutions des moteurs sont simplifiées en cas d'évolution des spécifications, des besoins ou des contraintes. Cette approche permet une vision unifiée de différents moteurs et fournit une base commode de comparaison entre stratégies de pilotages.

Langage de description de bases de connaissances.   YAKL (Yet Another Knowledge base Language) permet de décrire le contenu d'une base de connaissances, sans préjuger du langage d'implémentation cible (Lisp ou C++). Ce langage sert à la fois de format de stockage commun à tous les moteurs de la plate-forme et de langage d'écriture ou de consultation de bases de connaissances. YAKL offre une syntaxe proche de la façon dont s'exprime l'expert pour décrire les opérateurs, les buts, les règles de production qui constituent une base de connaissances. Des outils de vérifications lui sont connectés et le code en langage d'implémentation cible est généré automatiquement.

Un mode Emacs associé a aussi été développé afin de fournir une aide syntaxique à l'écriture de bases de connaissances.

Serveur de messages LAd.  Un système de pilotage de programmes est un système réparti, constitué de plusieurs processus applicatifs communiquant entre eux (interface, moteur, bibliothèque de programmes, etc). En particulier les programmes préexistent souvent au système de pilotage et doivent pouvoir continuer à être utilisés de manière autonome. De plus, un système de pilotage peut être amené à fonctionner comme un sous-système spécialisé d'un système plus général. Par exemple, un système de classification d'objets à partir d'images peut déléguer des tâches de traitement d'images à un système de pilotage [Oss96].

C'est pourquoi nous avons mis en place un mécanisme de communications assez général ( LAd : LAMA communicAtion daemon) sur le principe des bus logiciels, basé sur des communications par sockets Unix TCP. Son architecture, de type client/serveur, centralise la gestion des communications grâce à un serveur de messages. Le serveur communique avec chaque processus client du système au moyen d'un module générique d'émission/réception de messages par client.



previous up next contents
Précédent : Introduction Remonter : Fondements scientifiques Suivant : Interprétation automatique d'images