Download Introduction
Transcript
VII.2. Interfaces Personne / logiciel gestionnaires d'événements se synchronisent en accédant en lecture et en écriture à un ensemble de données globales qui définissent l'état courant du dialogue. On peut résumer cette différence fondamentale en disant que dans une application conventionnelle le contrôle est fondé sur l'historique alors que dans une application dirigée par événement le contrôle est fondé sur l'état [Cowan…90]. Le problème auquel est confronté le concepteur du dialogue est justement de modéliser cet état, qui représente l'évolution du dialogue entre application et utilisateur ; il lui faut notamment pallier l'absence de structure de contrôle explicite par un formalisme qui lui permette de valider sa modélisation, et notamment de prouver l'absence de blocage (cas ou une commande ne peut plus redevenir accessible), ou d'assurer une rétroaction (feedback) informative et permanente : a tout instant, l'interface doit montrer quelles actions sont légales, et lesquelles sont provisoirement inhibées. Les solutions éprouvées en matière de spécification du dialogue dans les applications conventionnelles (Augmented Transition Networks [Parnas 69, Denert 77] ou grammaires [Olsen 83]) sont malheureusement inadéquates dans le domaine des applications dirigées par événements : elles tendent en effet à modéliser l'utilisateur comme un fichier séquentiel que l'on peut soumettre à une analyse syntaxique, alors que les interfaces modernes souhaitent favoriser un comportement non séquentiel de l'utilisateur, qui peut à volonté interrompre ou différer une tâche, et entretenir des dialogues concurrents avec plusieurs parties de l'application. 2.3. Interprétation du formalisme Nous nous proposons de donner quelques indications méthodologiques pour guider la conception du dialogue d'une application interactive par les Objets Coopératifs. Dans la suite, nous traitons uniquement de la conception du module Dialogue (en référence au modèle Seeheim) de l'application ; bien entendu, le module Abstraction peut lui aussi être modélisé par Objets Coopératifs, si le domaine d'application s'y prête (par exemple, si l'on modélisait l'interface-utilisateur d'un procédé concurrent). Une interface sera conçue comme un système d'Objets Coopératifs, dont les objets primitifs publient des services d'interface (cf §IV.1.2). Pour compléter sa conception, le modélisateur doit définir des liens entre les widgets, éléments de la Présentation (boutons, menus, etc…) et ces services d'interface, en spécifiant par l'intermédiaire de quels éléments un service d'interface est invoqué. Trois types de relation existent entre widgets et services d'interface : • relation 1→1 : un widget est associé à un service d'interface et à un seul. C'est le cas, par exemple, ou un service est déclenché par le clic de l'utilisateur sur un bouton, ou par la sélection d'un élément de menu ; • relation n→1 : plusieurs widgets sont associés au même service. Un tel cas signifie que plusieurs actions différentes de l'utilisateur provoquent la même évolution du dialogue. L'exemple traité plus loin dans ce chapitre présente une relation de ce type ; • relation 1→0 : un widget n'est associé à aucun service d'interface. L'interaction de l'utilisateur avec le widget n'a donc aucune influence sur l'avancement du dialogue. C'est la cas des 214