S03 – Générateur de mots de passe

Transcription

S03 – Générateur de mots de passe
I N T E R F A C E H O M M E -M A C H I N E 1
I1 + T1
J. BAPST
22.04.2016
HEIA-FR
S03 – Générateur de mots de passe - PASTIS
Conception d'interfaces / Maquettes
OBJECTIFS

Concevoir une interface utilisateur sur la base d'un énoncé général et de spécifications.

Créer des maquettes (prototypes) et concevoir l'interface en se mettant dans la peau de l'utilisateur.

Coder l'intégralité d'une application en structurant correctement les différentes parties du code.

Déployer une application Java / JavaFX sous la forme d'un fichier JAR exécutable contenant l'ensemble
des ressources nécessaires.
CONSIGNES

Relire et appliquer les consignes générales mentionnées dans l'énoncé de la série S01.

Les classes, interfaces et autres éléments de cette série d'exercices seront créés dans le package s03 du
projet IHM1 ou dans un nouveau projet, créé pour cette application. Des packages pourront être créés
de manière à bien structurer le code.

Le codage de l'application respectera l'architecture MVC.

En plus du rapport, le fichier JAR de l'application réalisée sera déposé sur Cyberlearn. Le fichier JAR
comprendra l'intégralité des ressources nécessaires au fonctionnement de l'application ainsi que les
codes sources. Les parties importantes du code (extraits) figureront malgré tout dans le rapport, sous
une forme compacte (police à espacement fixe, max 9 pt).
EXERCICES
1
< 1ère partie >
Créer une application utilitaire, nommée PASTIS (Passwords
Totally Indiscoverable and Secure), destinée à générer des
mots de passe robustes (créés sur une base aléatoire).
L'interface de cette application (la vue) sera préalablement
conçue en respectant les spécifications données ci-après.
L'application sera codée sans faire appel à des librairies externes (hors de la plateforme Java).
2
L'application devra respecter les spécifications suivantes :

L'écran principal comportera le nom de l'application (texte et/ou logo).

Dans l'interface graphique, l'utilisateur devra pouvoir choisir :
 la longueur du mot de passe (nombre de caractères), par défaut 12
 si le mot de passe peut comporter des lettres majuscules
 si le mot de passe peut comporter des lettres minuscules
 si le mot de passe peut comporter des chiffres
 si le mot de passe peut comporter des caractères spéciaux (liste à définir)
 si le mot de passe doit être prononçable (règles à définir)
 si les caractères ambigus (1 I l 0 O) doivent être exclus du mot de passe
IHM1_S03.docx
J. Bapst
1
3

L'application affichera une indication sur la robustesse du mot de passe généré (forme libre)
Vous pouvez vous inspirer des critères pris en compte dans l'outil www.passwordmeter.com.

Quelques bulles d'aide (tooltips) seront créées pour guider l'utilisateur

Le mot de passe généré sera affiché et pourra être placé dans le clipboard de manière à pouvoir
facilement le coller dans une application externe (voir indications ci-après).
Créer une maquette de l'interface en réfléchissant au choix des composants à utiliser, à leur disposition
dans la fenêtre.
Vous pouvez créer la maquette sur papier, en utilisant un outil de dessin ou un outil spécifique.
Mettez-vous à la place de l'utilisateur. Essayez de concevoir une interface visuellement agréable,
intuitive et conviviale.
La maquette de votre interface devra figurer dans le rapport rendu (même si elle ne correspond pas
entièrement à la version finale de l'application).
4
L'interface graphique de cette application pourra être développée soit de manière entièrement
procédurale (ensemble du codage en Java) ou alors de manière déclarative (en utilisant Scene Builder
qui générera le fichier FXML).
Naturellement, vous pouvez également créer parallèlement les deux variantes de manière à
vous faire une opinion sur les avantages et les inconvénients de chacune de ces techniques.
Facultatif
5
Créer le modèle de l'application dans une classe nommée PastisModel qui implémentera l'interface
IPastisModel (également à définir).
Une variante de l'interface IPastisModel est disponible sur : jacques.bapst.home.hefr.ch/ihm1/ex/s03
Vous pouvez vous inspirer, utiliser, adapter ou ignorer cette proposition d'interface qui comprend
quelques méthodes utilitaires concrètes (méthodes par défaut).
Pour la génération aléatoire des mots de passe, vous pouvez utiliser la classe Random (attention à ne
créer l'objet Random qu'une seule fois; à définir par exemple comme champ de la classe).
6
Un ou plusieurs contrôleurs se chargeront de gérer les actions de l'utilisateur.
Le codage des contrôleurs dépendra naturellement de la variante choisie pour le développement de
l'interface (procédurale ou déclarative).
Penser à exploiter le potentiel des propriétés qui permettent d'effectuer des couplages automatiques
(bindings), par exemple entre les composants de la vue et les informations du modèle.
7
Le mot de passe généré pourra être inséré dans le clipboard (presse-papier) du système en cliquant sur
un bouton (ou en utilisant un autre composant d'interaction).
Le code suivant illustre la manière de faire :
final Clipboard
clipboard = Clipboard.getSystemClipboard();
final ClipboardContent cbContent = new ClipboardContent();
cbContent.putString(newPassword);
clipboard.setContent(cbContent);
Ainsi, l'utilisateur pourra facilement coller le mot de passe dans une application externe.
8
Afficher le nombre de combinaisons possibles pour le mot de passe, en fonction des
contraintes qui ont été définies pour sa génération.
Facultatif
Cette information donnera une indication sur le nombre d'essais que devrait tenter un hacker qui
essaierait de cracker le mot de passe (en utilisant des techniques basées sur la force brute).
IHM1_S03.docx
J. Bapst
2
9
Offrir à l'utilisateur la possibilité de donner une contrainte sur le premier caractère du mot
de passe (forcer une lettre majuscule ou un caractère spécial ou …).
Facultatif
10 Facultatif Renforcer les contraintes décrites au point 2 en remplaçant toutes celles où il est indiqué
"… peut comporter …" par "… doit comporter …".
Permettre à l'utilisateur d'imposer le nombre minimal de caractères souhaités pour chaque catégorie
(par exemple "au moins 2 chiffres").
11 Facultatif Permettre à l'utilisateur de donner un modèle (pattern) pour la génération du mot de passe.
Le modèle définira pour chaque caractère s'il s'agit d'une voyelle, d'une consonne (avec distinction
minuscule / majuscule), d'un caractère quelconque ou d'un chiffre (par exemple : "Cvc???V##").
La syntaxe de votre modèle (pattern) est à définir (et à décrire).
12 Facultatif Offrir la possibilité de créer, en une seule opération, une liste de mots de passe (le nombre
de mots de passe à créer sera choisi par l'utilisateur).
13 Facultatif Toute autre extension de l'application qui vous semble utile ou que vous auriez envie de
coder est la bienvenue.
14 Déployer l'application sous la forme d'un fichier JAR exécutable en vous aidant, si nécessaire, des
informations contenues dans le document :
jacques.bapst.home.hefr.ch/pr1/doc/Eclipse4.5_JAR_Deployment.pdf
Tester le fonctionnement du fichier JAR en dehors de l'environnement de développement Eclipse.
15 En plus de ce qui est demandé, mentionner dans le rapport, les principales difficultés que vous avez
rencontrées dans la réalisation de cet exercice.
Indiquer, de votre point de vue, quels sont les points positifs / négatifs de cet exercice et n'hésitez pas
à formuler des suggestions d'amélioration.
1ère partie
IHM1_S03.docx
J. Bapst
3
EXERCICES
< 2ème partie >
16 En tenant compte de vos connaissances et compétences informatiques actuelles (programmation,
algorithmique et IHM), imaginer un petit utilitaire, ou un jeu que vous vous sentez en mesure de réaliser
avec JavaFX.
L'application devra être entièrement réalisée par vos soins (pas de codes ou librairies externes).
Cette application devrait pouvoir être réalisée au sein de votre groupe en comptant une petite dizaine
d'heures de développement par étudiant. Elle comportera une interface utilisateur et devra pouvoir
être utilisée de manière autonome et déployée sous la forme d'un fichier JAR exécutable (pas de jeux
en réseau ou d'applications faisant appel à une base de données ou à un serveur spécifique; l'utilisation
de serveurs ou sites web publics [sans compte/mot de passe] est autorisée).
L'utilité de l'application n'est pas un critère essentiel pour ce TP.
L'application devra comprendre au moins trois des éléments suivants :
 TabPane
 SplitPane
 ScrollPane
 ComboBox
 Spinner
 RadioButton ou CheckBox
 FileChooser
 DatePicker
 ToolBar
 ListView
 Slider
 Hyperlink
 Menu contextuel
 Raccourcis clavier
 Feuille de style CSS
Pour pouvoir gérer au mieux le temps à disposition, il sera utile de distinguer entre :
 Les fonctionnalités principales de l'application (à réaliser impérativement)
 Des fonctionnalités optionnelles "nice to have" (réalisées en fonction du temps à disposition)
17 Donner un nom et rédiger un petit descriptif de l'application que vous avez imaginée, sur une page A4
(recto/verso).
En plus d'une description sommaire du fonctionnement de votre application, le descriptif comprendra
également une maquette sommaire des interfaces graphiques (vues).
Le descriptif ne constituera pas une spécification contraignante. Vous aurez tout loisir de faire des
changements, d'y apporter des compléments et des améliorations lors de la phase de réalisation de
l'application.
Ce descriptif sera déposé sur Cyberlearn comme document indépendant, au format PDF, en plus du
rapport et du fichier JAR. Le nom du fichier sera Descriptif_NomApplic.pdf
18 Le codage de cette application sera réalisé dans le cadre du prochain TP (série S04).
Il n'est naturellement pas interdit de déjà réfléchir à la répartition du travail au sein du groupe,
d'effectuer certains tests préliminaires, de débuter le codage de certaines fonctions, de définir l'API du
modèle ou d'élaborer la première version de l'interface utilisateur.
IHM1_S03.docx
J. Bapst
4