Le pilotage de codes de calcul consiste à aider un utilisateur
dans l'utilisation de codes de calcul qui peuvent prendre diverses formes
: bibliothèques de programmes, modules ou composants logiciels.
Le pilotage consiste ici à permettre à l'utilisateur de caractériser
le problème à résoudre, de sélectionner les
méthodes les plus adaptées à la résolution
du problème, de paramétrer les codes de calcul
afin de résoudre au mieux le problème (calage), enfin
d'enchaîner les exécutions des divers codes à utiliser
dans la résolution du problème.
L'Action ROMANS oeuvre dans le but de faciliter l'automatisation partielle
ou complète d'une chaîne de traitements. L'approche choisie
repose sur la mise à disposition de l'utilisateur d'une base de
connaissances lui permettant d'expliciter à la fois les méthodes
de résolution et les informations relatives aux codes de calcul.
Cette base de connaissances repose sur un modèle permettant
la définition des problèmes à résoudre
et des méthodes de résolution, mais également l'explicitation du flot
de données entre les codes qui permet d'enchaîner les codes de calcul. Sur
ce modèle de représentation, appelé modèle
de tâches, se greffent des moteurs de pilotages de codes génériques,
paramétrables et réutilisables.
Les modèles de tâches permettent de décrire des
schémas de résolution de problèmes sous la forme d'une
décomposition récursive du problème initial en sous-problèmes
plus simples. Cette décomposition se termine lorsqu'on obtient des
problèmes élémentaires solubles par l'exécution
d'un fragment de code. En outre, la décomposition est réalisable
de manière coopérative : ainsi, les utilisateurs peuvent, à tout moment, arrêter une décomposition, modifier la
description du problème, et comparer plusieurs schémas de
résolution entre eux. Les modèles de tâches sont ainsi
bien adaptés à la formalisation et l'exploration d'un processus
de résolution quelconque.
L'Action ROMANS étudie et développe un langage de description
de tâches en AROM, basé sur une représentation classe/association,
et permettant d'exécuter les méthodes associées
aux tâches élémentaires sur les sites mêmes où
elles sont développées et maintenues. Pour l'utilisateur,
ce processus reste totalement transparent : tout se passe comme si le schéma
de décomposition et les méthodes élémentaires
étaient présents sur son site. L'avantage d'une telle approche
répartie est double. D'une part, on élimine les problèmes
de portabilité des applications car elles restent sur les sites
où elles ont été développées et d'autre
part, il devient envisageable de paralléliser certains traitements.
Toutefois, la mise en oeuvre d'une exécution répartie nécessite
la définition de mécanismes de localisation des compétences
et l'élaboration de processus de synchronisation permettant aux
tâches réparties d'interagir entre les différents sites.
Ces deux points entraînent évidemment des modifications structurelles
et opérationnelles du modèle de tâches classique. Par
ailleurs, l'utilisation d'un environnement réparti oblige à
prendre en considération des contraintes temporelles et de disponibilité
des ressources matérielles et logicielles. En d'autres termes, les
stratégies de résolution doivent tenir compte de la puissance
de calcul des machines, de leur charge de travail et de la disponibilité
des compétences et des données.