Previous Up Next

Chapter 9  Interface Homme-Machine

L'Interface Homme-Machine (IHM) (Fig. 9.1 page ??) constitue le lien entre l'utilisateur et le programme. Ainsi, elle se doit d'être conviviale, robuste et cohérente.


Figure 9.1: L'Interface Homme-Machine.


9.1  Organisation

L'IHM est constituée de deux parties distinctes : l'interface de commande et l'interface de dialogue.

9.1.1  L'interface de commande

L'interface de commande est constituée des composants qui vont permettre à l'utilisateur d'effectuer une action. Il s'agit dans notre cas de la barre de menu et de la barre d'outils.

La barre de menus



Figure 9.2: La barre de menus.


La barre de menus (Fig. 9.2 page ??) contient toutes les actions que l'utilisateur peut effectuer au sein de l'IHM. Les menus sont au nombre de sept (Fichier, Compilation, JajaCode, MiniJaja, Look & Feel, Fenêtre, ?) et sont tous munis de raccourcis clavier pour faciliter leur utilisation.

Le menu Fichier va permettre de : Le menu Compilation va permettre de compiler le fichier courant.

Le menu JajaCode va permettre de : Le menu MiniJaja va permettre de : Le menu Look And Feel va permettre de changer l'apparence de l'application. Trois apparences peuvent être disponibles dans Java : Métal (Java), Windows et Motif.

Le menu Fenêtre va permettre de vider la fenêtre de messages.

Finalement, le menu d'aide (?) va permettre :

La barre d'outils



Figure 9.3: La barre d'outils.


La barre d'outils (Fig. 9.3 page ??) reprend la plupart des options de la barre de menus pour offrir à l'utilisateur un accès rapide aux principales fonctions disponibles. Celles-ci sont présentées dans le même ordre que dans les menus, et un séparateur permet de différencier les menus concernés. Elles sont matérialisées par des icônes et sont munies d'une bulle d'aide reprenant l'intitulé de l'option du menu correspondante. Les options des menus JajaCode et MiniJaja ayant les mêmes significations, elles sont représentées par des icônes similaires, mais une étiquette permet de les différencier.
La barre d'outils est placée par défaut en dessous de la barre de menus, mais il est possible de l'aggriper à l'aide de la souris pour la placer sur un des autres bords de la fenêtre ou de la laisser flottante.

9.1.2  L'interface de dialogue

L'interface de dialogue est constituée des composants qui vont permettre à l'utilisateur de visualiser les traitements effectués par le programme ou d'intéragir avec ceux-ci. De manière plus pratique, cette interface est composée de plusieurs bureaux, qui sont eux-mêmes composés de plusieurs fenêtres internes.

Les bureaux

Les bureaux représentent les espaces de travail de l'utilisateur. Chaque ouverture ou création d'un fichier MiniJaja provoquera l'ouverture d'un nouveau bureau. De même, la fermeture d'un fichier MiniJaja entraînera la fermeture du bureau correspondant. L'utilisateur peut passer d'un bureau à un autre grâce à une barre d'onglets disposée au dessus de ceux-ci (Fig. 9.4 page ??).


Figure 9.4: La barre d'onglets des différents bureaux.


Les fenêtres internes



Figure 9.5: La fenêtre interne du buffer MiniJaja.


A l'intérieur de chaque bureau sont présentes plusieurs fenêtres internes, qui permettent d'afficher les résultats des différents traitements effectués par l'application. Elles sont au nombre de neuf : Les fenêtres suivantes sont optionnelles et leur affichage pourra être provoqué via la barre de menus ou la barre d'outils : Les fenêtres internes peuvent être manipulées au sein du bureau à la manière des fenêtres classiques : il est possible de fermer, d'agrandir, de redimensionner et d'icônifier une fenêtre interne (Fig. 9.6 page ??).


Figure 9.6: Des fenêtres internes icônifiées.


9.2  Réalisation

L'IHM a été conçue selon le paradigme de programmation Modèle - Vue - Contrôleur  qui permet de séparer les traitements inhérents au programme de ceux appartenant à l'interface graphique proprement dite, pour rendre l'application la plus indépendante possible et évolutive vis-à-vis des librairies d'affichage. Cette méthode présente également l'avantage de modéliser les différents changements de comportement de l'IHM sous forme d'états, induisant ainsi un code source plus propre, plus clair, et surtout plus maîtrisable.
L'IHM est organisée en différentes classes :

9.3  Jeux de test

Contrairement aux autres modules, pour lesquels les jeux de test peuvent être joints sous la forme d'une suite d'instructions, ceux concernant l'Interface Homme Machine sont constitués d'une suite d'actions difficilement reproductibles de manière textuelle. Ainsi, cette partie traite de la méthode considérée pour effectuer les tests, et non des tests en eux-mêmes.
L'utilisateur final étant par nature imprévisible, l'IHM se doit de résister à toutes les incohérences possibles. C'est pourquoi outre le fait de tester son bon fonctionnement lors d'opérations normales , il fallait également pouvoir tester ses réactions en cas d'actions incongrues. Les jeux de test ont donc porté sur quatre cas différents : D'autre part, l'IHM permettant l'ouverture de plusieurs espaces de travail, des tests combinant les trois premiers types de fichiers précités ont été réalisés, afin de valider l'exécution parallèle de différentes tâches. De plus, des tests ont été effectués pour s'assurer de la constante cohérence de l'état de l'application lorsque l'utilisateur passe d'un espace de travail à un autre, qu'il en créé de nouveaux ou ferme certains de ceux existants. Finalement, au sein d'un même espace de travail, certaines actions obéissent à des règles de précédence. Par exemple, il est impossible de lancer l'interprétation JajaCode sans avoir préalablement compilé le fichier MiniJaja. De ce fait, le dernier critère de réalisation des jeux d'essai à été celui-ci : tester la réaction de l'application lorsque l'ordonnancement des actions n'est pas respecté.

9.4  Contraintes fonctionnelles

L'IHM satisfait tous les besoins fonctionnels requis par le cahierdes charges, à savoir : Le seul besoin non fonctionnel ayant rapport avec l'IHM est également satisfait : Finalement, une partie des extensions à réaliser a été implémentée : Il manque donc uniquement l'interprétation avec points d'arrêt d'un programme JaJaCode.
Previous Up Next