Professional Documents
Culture Documents
Architecture logicielle
Philippe Renevier Philippe.Renevier@unice.fr Avec laide de Laurence Nigay (http://iihm.imag.fr/nigay/)
Exemple :
Excel, widgets Swing, bonnes applications web (.Net avec les datasets et les pages aspx, JSP/Servlets/EJBs etc) Jeux avec plusieurs vues camra, Etc
S enregistre
Observer "Martin"
Observer / Observable
Exemple : un timer
class Test { Timer timer; Test() { timer = new Timer(); Toto toto = new Toto(); timer.addObserver(toto); } public static void main(String[] args) Test t = new Test(); t.timer.run(); } }
java.util.Observer
java.util.Observable
Exemple
class Timer extends java.util.Observable { private long zzz = 1000; Les observables doivent private long zero; tre dune sous-classe de Timer(long zzz) { Observable this.zzz = zzz; } public void run () throws InterruptedException { zero = System.currentTimeMillis(); On prvient les observateurs, a while (true) { appelle update() setChanged(); notifyObservers(new Long(System.currentTimeMillis() - zero)); Thread.sleep(zzz); } } }
10
11
Linterface TimerListener.java
package timer; import java.util.*; public interface TimerListener extends EventListener { public void timerTriggered(TimerEvent e); } On peut choisir le nom quon veut ici !
12
La classe TimerEvent.java
package timer; import java.util.*; public class TimerEvent extends EventObject {
public TimerEvent(Object source) { super(source); On peut ajouter dautres paramtres,
mais le premier est obligatoire // ici on peut stocker les // params supplmentaires dans des attributs, etc
13
La classe Timer.java
package timer; import java.awt.event.*; import java.util.*; public class Timer implements Runnable { public static final int DEFAULT_DELAY = 5000; private int delayMs; private transient ArrayList<TimerListener> timerListeners; public Timer() { this(DEFAULT_DELAY); } public Timer(int delayMs) { this.delayMs = delayMs; (new Thread(this)).start(); }
14
15
16
Exemple dcouteur
import timer.*; public class TestTimer { Timer timer1 = new Timer(1000);
Classe interne anonyme dans cet exemple
public TestTimer() { timer1.addTimerListener(new TimerListener() { public void timerTriggered(TimerEvent e) { System.out.println( Une sec sest coule ); } });
17
18
Architecture, Introduction
Constat
Conception dIHM : difficile, donc ncessairement itrative Itrativit implique modifiabilit du logiciel
Savoir-faire artisanal : acceptable pour maquettes, systmes prospectifs Complexit et taille croissantes des IHM Outils de dveloppement des IHM : utiles mais imparfaits
botes outils : niveau dabstraction trop bas, absence de structuration squelettes dapplications : reverse enginering ncessaire pour rutiliser gnrateurs dIHM : le syndrme de lABS (faux sentiment de scurit)
19
Architecture, Plan
Architecture logicielle (aspects gnriques)
dfinition processus et style darchitecture
Modles fonctionnels : Seeheim, Arch Modles agents : MVC, ALV, PAC Modle hybride : PAC-Amodeus
20
Composant
Connecteur
Composant
Une architecture exprime ce qui est important Limportance dpend du contexte et du but Contexte (taille, dure de vie, domaine applicatif, culture en qualit logicielle, ...) But
communication (prcision et non ambigut de la description) reverse-engineering dun systme existant valuation (selon des critres qualit)
21
Architecture globale
Compromis
Technologie
22
23
24
25
Un style dfinit
un vocabulaire dlments des contraintes de configuration de ces lments une smantique pour interprter une configuration permet lanalyse de proprits
26
IHM
API
Prsentation
Noyau fonctionnel
27
Prsentation
Logique
Noyau fonctionnel
Physique
Interaction
28
Prsentation
Portabilit IHM
bote outils abstraite
Noyau fonctionnel
Interaction
Contrleur de dialogue
Adaptateur de toolkit
Toolkit
29
30
31
32
Aspects ralisation Un agent : 3 objets Smalltalk (1 par facette) Hirarchie de Models, de Views, de Controllers
33
34
35
Hirarchisation :
Arbre : relation pre-fils Heuristique de conception Communication par message
36
Aspects ralisation Aucune recommandation dpend de la plate-forme daccueil 1 agent = 1 module C, 1 objet, 1 objet par facette (comme MVC ou ALV)
37
38
Ralit cliquable
Terrain augment
39
Passerelle M2 M2
Reprsentation physique
M2
M2
Reprsentation numrique
M2
Evnements souris (stylet)
M1
M1
Ralit cliquable
40
Objets conceptuels
Objets de Prsentation
Objets du domaine
Objets d'interaction
Noyau Fonctionnel NF
41
Rgles Heuristiques
Ensemble de rgles heuristiques pour construire la hirachie d'agents PAC du Contrleur de Dialogue dans PAC-Amodeus partir dune maquette Source Modle darchitecture des systmes interactifs, chapitre 7.
42
R2 : Vue multiple
Agent vue multiple d'une "uvre"
Environnement
Wall Environment Zone Region Preferences Wall Place Route . x Movable Object Static Object ? ?
Chaleur
Point Environment Zone Region Preferences Wall Place Route . x Movable Object Static Object Point Anchor x (m): Anchor y (m): Mouse x (m): 12 Mouse y (m): 15 Length (m): Anchor x (m): Anchor y (m): Mouse x (m): 12 Mouse y (m): 15 Length (m):
43
R2 : Vue multiple
Agent vue multiple d'une "uvre" Un superagent garantit la cohrence visuelle
superagent vue multiple
agent vue
agent vue
agent vue
44
A C C
V1
P C C
P M
V2
45
Dautres Heuristiques
R1 : fentre = un agent R3 : Palette de concepts
Une palette de classes de concept = un agent Une barre de menu = un agent
R4 : zone ddition
Une zone ddition = un agent Condition : tre suffisamment complexe
46
Heuristiques de liaison
R6 : dune fentre une autre
Les deux sont sous le mme agent parent commun
R9 : Ciment syntaxique
Agent ciment pour "analyse syntaxique distribue
47
R9 : Ciment syntaxique
Agent ciment pour "analyse syntaxique distribue" Un superagent cimente les actions distribues
superagent ciment
agent
agent
agent
action de l'utilisateur
action de l'utilisateur
action de l'utilisateur
48
Heuristiques de simplification
R10 : un agent fils unique peut tre regroup avec son pre
Attention la modularit / rutilisation / volution
R11 : un agent dont la fonction est ralise par un objet de la bote outils graphique devient un composant de la prsentation de son pre.
49
Corollaire de R11
Un objet dinteraction non implment par la plate-forme -> un agent
50
Dlgation smantique
Usage de la dlgation smantique pour performance.
Dans l'exemple du robot mobile, le A de l'agent mur contient la modlisation de mur dans les termes du domaine (mtres, non pas pixels).
Environment Zone Region Preferences Wall . x Place Route Movable Object Static Object Point
Anchor x (m): 12 Anchor y (m): 10 Mouse x (m): 13 Mouse y (m): 2 Length (m): 8.1
Updated Values as the mouse moves Rubber Banding as the wall is resized
51
Arbre de tche
Codage
Note : le cycle de vie dune interface est ici reprsent en V et sans retour sur les tapes prcdentes de manire analytique
52
53
54
55
56
57
58
59
60
Wearable Computer
Controllable by the user, is always on, always accessible and do not disturbs the user attention. [Mann]
61
Multi-dispositifs Alternatifs
Dispositifs dentre textuelle
Chord Keyboard - Wrist Keyboard - Virtual keyboard
Dispositifs de pointage
Essential Reality P5 Glove
62
Multi-dispositifs Alternatifs
Dispositifs de sortie
Eyeglasses
63
64
65