Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7:...

26
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks

Transcript of Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7:...

Page 1: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

Object-Oriented Software EngineeringPractical Software Development using UML and Java

Chapitre 7:

Focusing on Users and Their Tasks

Page 2: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 2

7.1 Conception centrée sur l’utilisateur

Le développement d’un logiciel devrait toujours être centré autour des besoins de ses utilisateurs

• Bien comprendre qui sont les utilisateurs

• Bien comprendre les tâches que doivent réaliser ces utilisateurs

• S’assurer que les utilisateurs sont impliqués dans le processus de décision

• Concevoir l’interface utilisateur en suivant bien les lignes directrices établies

• Demander aux utilisateurs d’évaluer les prototypes et de faire part de leurs commentaires

Page 3: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 3

L’importance d’être centré sur les utilisateurs

• Réduit les coûts liés à la formation et au support

• Diminue le temps d’apprentissage

• Permet une utilisation plus efficace

• Permet de ne développer que les options qui sont réellement requises

• Réduit les coûts liés aux modifications subséquentes

• Permet de mieux définir les priorités dans le développement

• Rend le système plus attrayant et mieux adapté à son marché

Page 4: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 4

7.2 Caractéristiques des utilisateurs

L’ingénieur logiciel doit bien connaître les utilisateurs

• Quels sont leurs buts

• De quelle façon utiliseront-ils le logiciel

• Quelle sont les caractéristiques démographiques des utilisateurs

• Quel est leur niveau de connaissance de l’informatique

• Quels sont leur habilités physiques

• Quelles sont leur caractéristiques psychologiques et émotives

Page 5: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 5

7.3 Les bases de la conception des interfaces utilisateur

• La conception des IUs devrait se faire en conjonction avec les autres activités de développement

• L’analyse de cas permet de connaître les tâches que les IUs doivent permettre de réaliser

• Les prototypes de IU se créent de façon itérative, par exemple en incorporant un cas-type à la fois

• Les prototypes produits aident à compléter la liste des exigences

Page 6: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 6

Utilisabilité vs Utilité

Est-ce que le système permet à l’utilisateur de réaliser ses tâches?

• C’est l’utilité

Est-ce que le système permet à l’utilisateur d’apprendre et de comprendre comment utiliser le système?

• C’est l’utilisabiltié aussi appelée convivialité

Ces deux aspects sont essentiels

• Ils se mesurent dans le contexte des utilisateurs particuliers du système

Page 7: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 7

Les différents aspects de l’utilisabilité

L’utilisabilité comprend différents aspects:

• Facilité d’apprentissage—La vitesse à laquelle un nouvel utilisateur peut arriver à utiliser

le système

• Efficacité d’utilisation—Avec quelle rapidité un utilisateur entraîné arrive à accomplir

ses tâches

• Traitement des erreurs—Jusqu’à quel point le système prévient les erreurs, les détecte et

aide à les corriger

• Acceptation

—Jusqu’à quel point les utilisateurs apprécie ce système

Page 8: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 8

Courbes d’apprentissage

0

20

40

60

80

100

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Days of learning

Complexsystem,hard tolearn

Simplesystem,easy tolearn

Simplesystem,hard tolearn

Page 9: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 9

Terminologie de base dans la conception des interfaces utilisateur

• Dialogue: Une fenêtre avec laquelle un utilisateur interagit mais qui n’est pas la fenêtre principale

• Contrôle (Widget): une composante spécifique d’une interface• Affordance: L’ensemble des opérations qu’un utilisateur peut

effectuer à un certain instant• État: à un certain point, le système affiche une certaine

information, certains contrôles, et a une certaine affordance• Mode: une situation où l’IU restreint les opérations que peuvent

faire l’utilisateur• Dialogue modale: Un dialogue plaçant le système dans un mode

restrictif• Rétro-action: la réponse du système à une action de l’utilisateur• Technique de codage: Différentes façons de représenter

l’information afin de communiquer avec l’utilisateur

Page 10: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 10

7.4 Quelques principes pour l’utilisabilité

1. Ne pas se fier seulement sur ces lignes directrices – toujours effectuer des tests avec les utilisateurs

• Les principes mentionnés ici comporte toujours des exceptions; une interface est de bonne qualité seulement si les utilisateurs la jugent ainsi

2: Baser la conception des IUs sur les tâches que doivent réaliser les utilisateurs

• Effectuer une analyse de cas afin de structurer l’IU

3: S’assurer que la séquence des actions requises pour réaliser une tâche est aussi simple que possible

• Réduire la quantité d’information à lire et les manipulations à faire

• S’assurer que les utilisateurs ne doivent pas avoir à se promener un peu partout afin de réaliser une tâche

Page 11: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 11

Quelques principes pour l’utilisabilité

4: S’assurer que les utilisateurs savent toujours ce qu’il doivent faire ensuite

• Les utilisateurs doivent toujours savoir quelles commandes sont disponibles et lesquelles ne le sont pas

• Rendre plus apparente les commandes plus importantes

5: Fournir une bonne rétro-action

• Informer les utilisateurs du progrès des opérations en cours, du point où ils en sont

• Lorsque qu’un problème surgit, expliquer en détails les causes et aider l’utilisateur à résoudre ce problème

Page 12: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 12

Quelques principes pour l’utilisabilité

6: S’assurer qu’il est toujours possible de reculer, de sortir ou de défaire les tâches en cours

• L’action undo devrait toujours être disponible• Les options next et back vont de pair

7: S’assurer que le temps de réponse est adéquat• Les utilisateurs sont très sensibles aux temps de réponse

trop longs—cela peut rendre un système moins attrayant

• Garder le temps de réponse sous la seconde pour la plupart des opérations

• Avertir l’utilisateur lorsqu’un temps réponse plus long est anticipé et l’en informer de la progression

Page 13: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 13

Quelques principes pour l’utilisabilité

8: Utiliser des techniques de codage facilement compréhensibles

• Choisir les représentations avec soin

• Donner toujours accès à une explication textuelle pour assurer que les utilisateur comprennent bien votre symbolique

9: S’assurer que l’IU n’a pas une apparence désordonnée

• Ne pas afficher trop d’information à la fois

• Bien organiser l’information

Page 14: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 14

Quelques principes pour l’utilisabilité

10: Prendre en considération les besoins des différents groupes d’utilisateurs

• Permettre l’affichage en différents langages

• Le système doit être accessibles aux débutants comme aux experts

11: Fournir toute l’aide nécessaire

• Organiser l’aide correctement

• Intégrer l’aide dans l’application

• S’assurer que l’information est précise et à jour

Page 15: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 15

Quelques principes pour l’utilisabilité

12. Être consistant

• Les graphiques, l’organisation doit être consistante à l’intérieur de toute l’application

• Utiliser les standard reconnus

• Demeurer semblables aux applications de même type

Page 16: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 16

Quelques techniques de codage

• Textes et polices de caractères• Icônes• Photographies• Diagrammes et graphiques• Couleurs• Groupement et entourage• Instructions vocales• Musique• Autre sons• Animations et vidéo• Clignotement

Page 17: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 17

Contre-Exemple

Page 18: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 18

Exemple

Page 19: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 19

7.5 Évaluation des interfaces

Évaluation heuristiques

1. Choisir quelques cas-types

2. Pour chacune des fenêtres impliquées

—Identifier minutieusement les problèmes qui peuvent être présents

3. Lorsqu’un défaut est découvert:

—Donner une brève description du problème

—Proposer une solution permettant de corriger ce défaut

Page 20: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 20

Évaluation des interfaces

Évaluation par l’observation des utilisateurs• Sélectionner les utilisateurs représentant les plus

importants acteurs du système• Sélectionner les cas-type les plus importants• Décrire des scénarios d’usage• Bien expliquer le but de l’évaluation aux utilisateurs• Filmer si possible la session• Discuter avec les utilisateurs à mesure qu’ils exécutent

la tâche à faire• A la fin, débattre avec l’utilisateur des difficultés

rencontrées• Formuler des recommandations

Page 21: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 21

7.6 Réaliser une interface simple avec Java

Le Abstract Window Toolkit (AWT)

• Composante (component): ce sont les éléments de base pour construire une interface graphique

—Button, TextField, List, Label, ScrollBar.

• Contenants (container): les éléments servant à contenirles composantes constituant l’IUG

—Frame, Dialog et Panel• Organisateur (LayoutManager): definit la façon dont

les composantes seront assemblées

—GridLayout, BorderLayout

Page 22: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 22

Exemplepublic class ClientGUI extends Frame implements ChatIF{ private Button closeB = new Button("Close"); private Button openB = new Button("Open"); private Button sendB = new Button("Send"); private Button quitB = new Button("Quit"); private TextField portTxF = new TextField(""); private TextField hostTxF = new TextField(""); private TextField message = new TextField(); private Label portLB = new Label("Port: ", Label.RIGHT); private Label hostLB = new Label("Host: ", Label.RIGHT); private Label messageLB = new Label("Message: ", Label.RIGHT); private List messageList = new List(); ...}

Page 23: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 23

Exemplepublic ClientGUI(String host, int port){ super("Simple Chat"); setSize(300,400); setVisible(true);

setLayout(new BorderLayout(5,5)); Panel bottom = new Panel(); add("Center", messageList); add("South", bottom); bottom.setLayout(new GridLayout(5,2,5,5)) bottom.add(hostLB); bottom.add(hostTxF); bottom.add(portLB); bottom.add(portTxF); bottom.add(messageLB); bottom.add(message); bottom.add(openB); bottom.add(sendB); bottom.add(closeB); bottom.add(quitB);

Page 24: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 24

Exemple sendB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { send(); } });}

public void send(){ try { client.sendToServer(message.getText()); } catch (Exception ex) { messageList.add(ex.toString()); messageList.makeVisible(messageList.getItemCount()-1); messageList.setBackground(Color.yellow); }}

Page 25: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 25

7.7 Risques et difficultés dans la modélisation des cas-types et de l’interface utilisateur

• Les utilisateurs diffèrent grandement

—Tenir compte de ces différences

—Concevoir un système pouvant être internationalisé

—Tester le système avec différentes catégories d’utilisateurs

• Les technologies de conception d’IU changent rapidement

—Utiliser des technologies simples et répandues

—Éviter des designs trop élaborés

Page 26: Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 7: Focusing on Users and Their Tasks.

© Lethbridge/Laganière 2001 Chapter 7: Focusing on Users and Their Tasks 26

Risques et difficultés dans la modélisation des cas-types et de l’interface utilisateur

• La conception de l’IU occupe la majorité du temps de développement de l’application:

—Faire de la conception de IU une activité faisant partie intégrale du processus de développement

—Prévoir une conception de IU comptant plusieurs itérations et évaluations

• Les développeurs tendent à sous-estimer l’impact d’une IU

—S’assurer que tous les ingénieurs logiciels ont une formation en conception de IU

—Toujours effectuer des test avec les utilisateurs—Étudier les IU de d’autres applications