Vendredi 13 février 2009
Cours d'ergonomie
M. PULLVERMULLER

====== Cours ======

Plusieurs critères après avoir fait des centaines et des centaines d'IHM : critères de Bastien

===== Compatibilité =====

Compatibilité entre le logiciel et son utilisateur (pour une cible particulière d'utilisateur)

  * Adéquation du logiciel vis à vis de son utilisateur
    * de ses habitudes de travail
    * de son contexte (physique et social) de travail (simplifier la vie de l'utilisateur)
  * La logique d'utilisation du système doit correspondre à la logique de l'utilisateur : par exemple des liens raccourcis pour des habitudes qu'on a quand on lance le logiciel
  * Objectif : minimiser le transcodage de la connaissance entre le métier et le logiciel (utiliser le vocabulaire de l'utilisateur)
  * Présenter les informations sous forme utilisable : parler le langage de l'utilisateur

===== Guidage =====

  * Moyens mis en ½uvre pour orienter l'utilisateur et lui permettre de s'orienter :
    * faire connaître l'état du système : quand on commence des billets SNCF, pendant la recherche il faut informer l'utilisateur qu'on est en cours de recherche
    * établir des liens de causalité entre les actions de l'utilisateur et l'état du système
  * Objectif : faciliter l'apprentissage et l'utilisation
  * Deux niveaux de guidage :
    * guidage explicite (on explique des choses à l'utilisateur via un message d'aide ou d'erreur)
    * guidage implicite (on s'arrange pour guider l'utilisateur en agissant sur la présentation et l'organisation des informations)

==== Guidage par l'incitation (implicite) ====

Amener l'utilisateur à mener des actions spécifiques :
  * Griser les commandes non disponibles
  * Donner le format de saisie des données (explicite)
  * Compléter les saisies partielles non ambiguës (exemple : Ja -> Janvier)
  * Fournir une liste des saisies attendues (liste de sélection par exemple)
  * établir des liens explicites entre les différentes valeurs à saisir

==== Guidage par groupement/distinction ====

  * Par le format : distinguer visuellement les informations de types différents
  * Par la position : rapprocher les commandes de même type (Functional chunking)

NB : Ordre d'utilisation par la fréquence de l'utilisation ou l'importance de l'utilisation !!!

==== Guidage : lisibilité ====

  * Les minuscules sont moins discriminantes que les majuscules => dans une page Web il ne faut pas écrire en majuscule, sauf quand c'est indiqué de le faire !

==== Lisibilité et typographie ====

  * Choisir une taille correcte : mini 8points, maxi 16 points
  * Police de caractère en fonction des critères de lisibilité : une police de caractère à empattement prend plus de place qu'une police sans
  * éviter plus de 3 polices de caractères différentes dans une même fenêtre (ou sur plusieurs fenêtres affichées simultanément)

Attention, très contextuel à l'applicatif.

===== Homogénéité =====

  * La logique d'utilisation du système doit être constante, tant au niveau des procédures que de la représentation
  * Graphsime, localisation, vocabulaire, etc.
  * Homogénéité syntaxique des items de menu (courts de préférence)

Les trois petits points indiquent à l'utilisateur qu'il y aura une confirmation ou l'ouverture d'une nouvelle fenêtre.

===== Fléxibilité =====

Souplesse, flexibilité = Capacité de l'IHM à s'adapter à une population variée d'utilisateur : 
  * différents types d'utilisateurs
  * différentes stratégies d'utilisation

Donner tout les moyens/procédures possibles pour atteindre le même objectif mais de façon différente.

Objectif : L'utilisateur choisit la procédure qui lui convient le mieux 

Exemple: 
  * accès par menu, pour les débutants
  * par raccourcis clavier (experts)
  * Défauts utilisateur / Paramètrage => avec les macros on peut automatiser une tâche, ce qui assure une rapidité optimale !

===== Contrôle explicite =====

  * Moyens pour permettre à l'utilisateur de maîtriser/contrôler les traitements réalisés par le système
    * Les effets d'une commande doivent être prévisibles aux yeux de l'usager
  * Objectifs : Meilleure compréhension du système (modèle mental exact)
  * Facteur important d'acceptation du système
  * Ex : 
    * Valider explicitement les commandes importantes ou difficilement réversibles
    * Autoriser les interruptions

----

7 mai et 15 Mai TD

22 mai TP : présentation de notre première charte graphique
28 mai TP : pour seconde présentation

Mi - juin rendre la charte d'ergo, la charte graphique et quelques captures d'écran, une ou deux pages HTML de nos écrans montés

----

==== Actions explicites ====

Le système ne doit exécuter que des opérations demandées par l'utilisateur

Ex : action physique de validation, bouton ok ou clic.

===== Les erreurs =====

  * Prévoir que l'utilisateur fera des erreurs
  * Concevoir des moyens de pallier ce problème
  * On doit pouvoir : 
    * protéger l'utilisateur contre des erreurs : détection de la part du système (saisie des dates, décimaux)
    * l'avertir losqu'il a commis une erreur que l'on peut détecter
    * corriger ou l'aider à corriger ses erreurs : guider l'utilisateur (étapes à suivre pour rectifier l'erreur)
  * Minimiser le risque d'erreur améliore l'utilisabilité du système car les erreurs : 
    * rallongent le temps de réalisation de la tâche
    * perturbent la planification
    * diminuent la performance
  * Prévenir des erreurs par une analyse des causes

Ne pas disperser l'utilisateur dans son objectif métier.

On doit toujours caller un libellé à gauche (plus simple à parcourir pour faire une recherche dans un écran).

==== Prévention ====

  * Rendre clairement visible les changements de mode et les états du système
  * éviter les erreurs cognitives (exemple : raccourcis clavier A, B, C, D pour Create, Delete, Append, Backup => il aurait fallu attacher Backup à B, etc.)
  * éviter les incohérences
  * Mettre en jeu la reconnaissance plutôt que le souvenir : 
    * Reconnaissance : choisir parmi plusieurs possibilités
    * Souvenir : Se rappeler de la valeur à saisir
    * La reconnaissance est moins sujette à l'erreur (exemple : utilisation des menus, listes)
  * Erreurs motrices
    * mouvements difficiles : F1, puis F12 : déplacement de la main d'un bout à l'autre du clavier
    * contraintes temporelles
    * faciliter le mouvement de la main
      * augmenter la taille des objets sélectionnés
      * Minimiser l'utilisaterion des modifieurs (Ctrl Alt Shift)
      * Agrandir la taille des objets à sélectionner (éventuellement "au survol")

==== Comment gérer les erreurs ? ====

2 niveaux de protection contre les erreurs : prévention et détection (par correction)

Prévenir des erreurs en guidant l'utilisateur (Guidage/incitation) :
  * Griser les commandes non disponibles
  * Fournir la liste des valeurs possibles
  * Indiquer les modes de fonctionnement du systèmes (feed-back)

Détecter les erreurs au plus tôt.

Faciliter la correction des erreurs :
  * Message d'erreur pertinent :
    * Nature de l'erreur
    * Moyens de la corriger
  * Rendre possible la correction
    * accès et modification partielle => ne pas "scroller pour arriver à l'erreur"

Messages : 
  * mettre en évidence le champ erroné
  * placer le message d'erreur là où l'utilisateur est sensé regarder
  * Messages d'erreurs explicits, brefs, non réprobateurs et auto - suffisants

Correction de l'erreur : 
  * Retour en arrière ("Undo") avec Ctrl + Z

Rendre le message d'erreur **instructif**

Les messages doivent énoncer : 
  * quelle erreur a été détecté
  * quel champ de saisie contient l'erreur
  * quelle action correctrice doit être effectuée

===== Charte mentale =====



