Dans un premier temps nous allons identifier les besoins en visualisation liés à l'intégration d'objets flexibles dans un scénario et dans un deuxième temps nous présenterons les besoins et les difficultés liés à la représentation et à la manipulation des opérateurs d'interruption.
Lors de la visualisation d'une solution d'un scénario qui contient des objets flexibles l'auteur peut parcourir l'ensemble des solutions soit :
En réaction à ces modifications, le système de visualisation est amené à déplacer d'autres objets et/ou modifier leur taille pour pouvoir présenter à l'auteur un placement cohérent par rapport au scénario initial.
Il est donc important de distinguer les objets flexibles de manière à ce que l'auteur sache quels sont les objets dont la durée est susceptible d'être modifiée. Une idée intuitive consiste à représenter la flexibilité par une métaphore explicite sur la représentation graphique de l'objet (ex: un ressort). Cependant, cette information est loin d'être suffisante et ce sont tous les besoins liés à l'utilisation d'objets flexibles dans les scénarios qui vont être à présent identifiés. Ceux-ci sont regroupés en trois catégories :
Savoir qu'un objet est flexible dans un scénario donné ne constitue pas une information suffisante pour anticiper les conséquences d'une manipulation (déplacement ou retaillage). Il est important que l'auteur connaisse avant la modification un certain nombre d'informations qui vont lui éviter d'avoir à effectuer de nombreuses manipulations de la vue graphique afin de mieux comprendre l'ensemble des solutions associées à son scénario.
Dans l'exemple de la Fig 0 l'objet B a une durée de 5, mais celle-ci peut varier de 4 à 7 (c'est l'intervalle de flexibilité de sa durée). Dans le premier cas l'objet peut être agrandi de deux et diminué de un par la gauche et par la droite.
Dans le second cas, il ne pourra se retailler que par la droite en considérant que A et D ne sont pas flexibles.
Fig 0. Contrôle de la flexibilité
Il est évident qu'il faut permettre à l'auteur de modifier interactivement la taille des objets. Pour cela il faut lui offrir des moyens de manipuler leur taille, que ce soit au moyen d'une boîte de dialogue et/ou par une manipulation directe à l'aide de la souris sur les bords de la représentation graphique de l'objet. En fait ces deux modes d'interaction sont complémentaires, car la manipulation à la souris est intuitive, et la manipulation par des boîtes de dialogue permet de réaliser des ajustements précis.
Dans l'exemple de la Fig 1 , si l'auteur a décidé de retailler l'objet B par la droite, le système a le choix entre
:
Quelle que soit la solution choisie, il ne faut en visualiser qu'une et permettre à l'auteur d'accéder aux autres (par exemple par manipulation de la solution présentée).
Fig 1. Contrôle de la flexibilité
Le système de visualisation doit pouvoir contrôler la réponse à une déformation de manière à satisfaire les deux critères suivants :
Dans l'exemple de la Fig 2 on peut dire que la déformation des délais d1 et d2, en réponse à une manipulation sur l'objet B, est plus locale que la déformation d'un des objets de la Scène 2. De plus elle privilégie la déformation d'un délai ce qui correspond plus au résultat attendu. C'est cette solution qui nous parait la plus pertinente dans ce cas précis.
Fig 2. Localité des déformations
De manière générale, on essaye en premier lieu de ne perturber que le niveau courant. Dans le niveau courant on essaye d'abord de trouver des délais qui peuvent amortir les déformations de l'auteur. Si plusieurs choix s'offrent à nous, on choisit de déformer les objets qui sont les plus proche de l'objet manipulé. Si les délais ne suffisent pas à amortir les déformations de l'auteur on les utilisent au maximum, et on utilise la flexibilité des objets les plus proches de l'objet déformé.
S'il n'y a pas de possibilité au niveau courant et que l'auteur le demande explicitement, on essaye de faire la même chose au niveau supérieur et ainsi de suite jusqu'à trouver une solution.
Les opérateurs d'interruption ont pour effet de provoquer la terminaison des objets liés par l'opérateur et des objets liés (par transitivité) à l'objet interrompu. Les opérateurs d'interruption définis dans Madeus sont :
Nous pouvons voir graphiquement dans la Fig 3 la sémantique de ces opérateurs.
Fig 3. Les opérateurs d'interruption
Lorsque la durée des objets concernés par les opérateurs d'interruption est unique, il est facile pour le système de déterminer quels sont les objets qui sont interrompus. Par exemple dans la Fig 4 où nous avons deux objets A et B dont la durée peut varier entre 3 et 4, trois cas sont possibles :
Fig 4. Causalité et flexibilité
Il est important pour l'auteur de savoir précisément quels sont les objets qui risquent d'être interrompus, car ceux-ci peuvent potentiellement ne pas délivrer la totalité de leur contenu.
Fig 5. Exemple d'ambiguïté
Par exemple, dans la Fig 7 on visualise la propagation de l'interruption dans le cas de l'opérateur Equal (Cas 1) et de l'opérateur During (cas 2).
Cas 1 : A Parmin B C Equal B |
Cas 2: A Parmin B C During B |
Fig 6. Scénario
Fig 7. Propagation de l'interruption
Lorsque la durée des objets concernés par les opérateurs d'interruption est unique, il est facile pour le système de déterminer quels sont les objets qui sont interrompus, cependant la combinaison de la flexibilité des objets et des opérateurs d'interruption pose des problèmes nouveaux. Les trois configurations présentées dans la section peuvent apparaître successivement dans le même scénario en fonction de la durée des objets A et B.
Dans les trois cas il faut suggérer à l'auteur l'existence des deux autres et lui permettre d'y accéder. En effet, dans le cas d'objets incontrôlables, l'auteur ne pourra pas savoir a priori lequel des trois cas se produira à l'exécution.
Comme nous venons de le voir, nous avons plusieurs besoins liés a l'intégration des opérateurs d'interruption et de la flexibilité des objets. Il est important d'offrir à l'auteur une représentation graphique qui lui permette de bien appréhender le comportement de son scénario.
Les besoins identifiés nécessitent des mécanismes de manipulation de contraintes avancés notamment pour le maintien de la cohérence de la solution visualisée. En effet, comme nous avons pu le dire précédemment, à chaque interaction de l'utilisateur sur la représentation graphique du scénario le système devra apporter les modifications nécessaires au scénario pour tenir compte des manipulation de l'auteur et offrir la visualisation d'une solution cohérente du scénario (Fig 8 ).
Fig 8. Architecture
Dans le chapitre suivant nous allons présenter une étude sur les différentes approches existantes dans un système de contraintes ou pour le maintien de solution en analysant comment celles-ci peuvent répondre aux différents besoins mis en évidence dans ce chapitre, en particulier pour les problèmes liés au traitement des objets flexibles car nous nous verrons que c'est eux qui posent, du point de vue algorithmique, le plus de problèmes. Nous présenterons dans le chapitre une solution qui nous permettra de répondre partiellement à ces besoins et nous permettant ainsi de focaliser notre attention sur les problèmes liés à la représentation graphique du scénario.