Esercitazione del Corso di Interazione Uomo- Macchina Modulo3: Metodi Formali per la Specifica di Interfacce: un esempio completo (V.Carofiglio)
Esercitazione del Corso di Interazione Uomo-Macchina
Modulo3:Metodi Formali per la Specifica di
Interfacce:
un esempio completo
(V.Carofiglio)
Le Grammatiche Formali
Le Grammatiche formali sono un metodo generativo per la definizione dei linguaggi. Descrivono cioè come generare tutte e sole le stringhe che appartengono ad un linguaggio.
Grammatica Formale G: , V, S, P
alfabeto : a, b, ….variabili V: A, B, ….Sassioma S Vproduzioni P: Pi | Pi : A , * V*
Rappresentazione dell’interazione Utente-Sistema
mediante grammatiche formaliOgni tipo di comunicazione previsto fra Utente e Sistema può essere definito mediante la sequenza di comandi elementari (Linguaggio dei comandi) che l’utente può eseguire.
Il linguaggio dei comandi può essere generato mediante una grammatica formale G: , V, S, P in cui
• e’ l’insieme di tutti i comandi elementari che l’utente può effettuare• V e’ l’insieme di azioni complesse • SV rappresenta l’obbiettivo finale che l’utente deve eseguire• P rappresenta l’insieme di regole che stabiliscono sequenze di comandi elementari (e non) lecite all’utente
Un semplice esempio
Taglia e Incolla in Word
Partiamo dalla Task Analysis…..Taglia e Incolla
Taglia Incolla
Seleziona Oggetto da Tagliare
Comando Taglia
Digita Control Digita X Rilascia
Control
Rilascia X Digita Control DigitaV
Rilascia Control
Rilascia V
Posiziona Cursore
Comando Incolla
Posiziona Cursore Rilascia
Tasto sinistro del mouse
Trascina Cursore
Clicca Tasto sinistro del mouse
…e costruiamo la grammatica (1) = { posiziona-cursore, clicca-tasto-sinistro-del-mouse, rilascia-tasto-sinistro-del-mouse, trascina-cursore, digita-control, digita-x, digita-v, rilascia-control,rilascia-x, rilascia-v}
V = { <TAGLIA-E-INCOLLA>, <TAGLIA>, <INCOLLA>, <SELEZIONA-OGGETTO-DA-TAGLIARE>, <COMANDO-TAGLIA>, <COMANDO INCOLLA>}
S = { <TAGLIA-E-INCOLLA>}
P = {……...}
…e costruiamo la grammatica (2)P = {……...}
1: <TAGLIA-E-INCOLLA> ::= <TAGLIA> <INCOLLA>
2: <TAGLIA>::= <SELEZIONA-OGGETTO-DA-TAGLIARE> <COMANDO-TAGLIA>
3: <SELEZIONA-OGGETTO-DA-TAGLIARE> ::= posiziona-cursore clicca-tasto-sinistro-del-mouse trascina-cursore <SELEZIONA-OGGETTO-DA-TAGLIARE> | trascina-cursore <SELEZIONA-OGGETTO-DA-TAGLIARE> | rilascia-tasto-sinistro-del-mouse
4: <COMANDO-TAGLIA>::= digita-control digita-x rilascia-control rilascia-x | digita-control digita-x rilascia-x rilascia-control 5: <INCOLLA>::= posiziona-cursore <COMANDO INCOLLA>
6: <COMANDO INCOLLA>::= digita-control digita-v rilascia-control rilascia-v | digita-control digita-v rilascia-v rilascia-control
…una stringa generata...<TAGLIA-E-INCOLLA> 1 <TAGLIA> <INCOLLA> 2 <SELEZIONA-OGGETTO-DA-TAGLIARE> <COMANDO-TAGLIA> <INCOLLA> 3 posiziona-cursore clicca-tasto-sinistro-del-mouse trascina-cursore <SELEZIONA-OGGETTO-DA-TAGLIARE> <COMANDO-TAGLIA> <INCOLLA> 3 posiziona-cursore clicca-tasto-sinistro-del-mouse trascina-cursore rilascia-tasto-sinistro-del-mouse <COMANDO-TAGLIA> <INCOLLA> 4 posiziona-cursore clicca-tasto-sinistro-del-mouse trascina-cursore rilascia-tasto-sinistro-del-mouse digita-control digita-x rilascia-control rilascia-x <INCOLLA> 5 posiziona-cursore clicca-tasto-sinistro-del-mouse trascina-cursore rilascia-tasto-sinistro-del-mouse digita-control digita-x rilascia-control rilascia-x posiziona-cursore <COMANDO INCOLLA> 6
posiziona-cursore clicca-tasto-sinistro-del-mouse trascina-cursore rilascia-tasto-sinistro-del-mouse digita-control digita-x rilascia-control rilascia-x posiziona-cursore digita-control digita-v rilascia-control rilascia-v
Limiti della grammatica• Un alto numero di produzioni per descrivere modi diversi (se esistono) di eseguire uno stesso task rende una grammatica illeggibile.
(nel nostro esempio lo stesso comando può essere eseguito cliccando sui comandi opportuni, oppure mescolando interazione da tastiera e comandi grafici in più di un
modo) •Non permette di rappresentare:
1.) la dinamica con cui l’interfaccia evolve in relazione ai comandi inviati dall’Utente al Sistema
(nel nostro esempio non riusciamo a rappresentare ad esempio il fatto che dopo aver eseguito il comando di taglia l’oggetto tagliato sparisce dallo schermo e
ricompare solo dopo aver effettuato il comando di incolla)
2.) l’adattamento dell’interfaccia all’Utente(nel nostro esempio potremmo voler rappresentare il fatto che un utente esperto
debba utilizzare comandi da tastiera, viceversa uno meno esperto comandi grafici)
3.) I casi in cui l’ordine di esecuzione dei comandi non è rigidamente definito (nel nostro esempio il comando “trascina cursore” viene ripetuto in principio un
numero indefinito di volte)
Costruiamo la UAN per il task: “Taglia e Incolla”
( posiziona-cursore clicca-tasto-sinistro-del-mouse (trascina-cursore)n rilascia-tasto-sinistro-del-mouse digita-control digita-x (rilascia-control & rilascia-x) posiziona-cursore digita-control digita-v (rilascia-control & rilascia-v ) )
Una prima soluzione al problema espresso nel punto 3.
•
Metodi Riconoscitivi:le Reti di Petri (PN)
Definizione ‘formale’
Una PN è una tupla: <N, P, T, A, SP, EP, M>, conN: nome della reteP: un insieme di posti, indicati con T: un insieme di transizioni, indicati con A: un insieme di archi orientati fra P e T ( o T e P)SP: un insieme di posti (incluso in P) denotati come ‘start place’ EP: un insieme di posti (incluso in P) denotati come ‘end place’M: una funzione di marcatura dei posti, che associa ad ogni posto il valore di una variabile binaria (a seconda che il posto sia ‘marcato’ o no). Un posto marcato viene indicato con
In questo caso, M(pi) = 1
Costruiamo la rete di Petri per il task: “Taglia e Incolla”(1)
Begin
End
TAGLIA cliccabile INCOLLA cliccabile
SELEZIONA-OGGETTO-DA TAGLIARE
COMANDO-TAGLIA
Oggetto eliminato Oggetto nel buffer
. .Posiziona-cursore
Oggetto selezionato
Cursore posizionato
COMANDO-INCOLLA
Oggetto posizionato
Marcatura iniziale: (TAGLIAcliccabile, INCOLLA cliccabile)
Costruiamo la rete di Petri per il task: “Seleziona oggetto da
tagliare” Begin
End
Cursore posizionabile Tasto sinistro del mouse cliccabile
Posiziona cursore
Cursore posizionato
Oggetto non se
lezionato
. .Clicca tasto sinistro del mouse
Trascina cursore
Oggetto selezionato
Tasto sinistro del mouse cliccato
Rislascia tasto sinistro del mouse
Tasto sinistro del mouse rilasciato
Costruiamo la rete di Petri per il task: “Comando Taglia” (I)
Begin
End
Control digitabile x digitabile
Digita control
Control digitato
Rilascia x
. .Digita x
Rilascia x
X rilasciato
X digitato
Control Rilasciato
Rilascia Control
Rilascia control
Scelta
Costruiamo la rete di Petri per il task: “Comando Taglia” (II)
Begin
End
Control digitabile x digitabile
Digita control
Control digitato
Rilascia x
. .Digita x
X digitato
Rilascia Control
Control Rilasciato
.X Rilasciato
Indipendenza d’ordine
Costruiamo la rete di Petri per il task: “Comando Incolla”
Begin
End
Control digitabile v digitabile
Digita control
Control digitato
Rilascia x
. .Digita v
Rilascia v
v rilasciato
v digitato
Control Rilasciato
Rilascia Control
Rilascia control
Simuliamo il comportamento per la stringa generata
posiziona-cursore clicca-tasto-sinistro-del-mouse trascina-cursore rilascia-tasto-sinistro-del-mouse digita-control digita-x rilascia-control rilascia-x posiziona-cursore digita-control digita-v rilascia-control rilascia-v
Begin
End
TAGLIA cliccabile INCOLLA cliccabile
SELEZIONA-OGGETTO-DA TAGLIARE
COMANDO-TAGLIA
Oggetto eliminato Oggetto nel buffer
. .Posiziona-cursore
Oggetto selezionato
Cursore posizionato
COMANDO-INCOLLA
Oggetto posizionato
Marcatura iniziale: (TAGLIAcliccabile, INCOLLA cliccabile)
. ..
Begin
Cursore posizionabile Tasto sinistro del mouse cliccabile
Posiziona cursore
Cursore posizionato
Oggetto non se
lezionato
. .Clicca tasto sinistro del mouse
Trascina cursore
Oggetto selezionato
Tasto sinistro del mouse cliccato ...
End
Rislascia tasto sinistro del mouse
Tasto sinistro del mouse rilasciato.
Begin
End
TAGLIA cliccabile INCOLLA cliccabile
SELEZIONA-OGGETTO-DA TAGLIARE
COMANDO-TAGLIA
Oggetto eliminato Oggetto nel buffer
. .Posiziona-cursore
Oggetto selezionato
Cursore posizionato
COMANDO-INCOLLA
Oggetto posizionato
..
Begin
End
Control digitabile x digitabile
Digita control
Control digitato
Rilascia x
. .Digita x
Rilascia x
X rilasciato
X digitato
Control Rilasciato
Rilascia Control
Rilascia control
.. .
..
Begin
End
TAGLIA cliccabile INCOLLA cliccabile
SELEZIONA-OGGETTO-DA TAGLIARE
COMANDO-TAGLIA
Oggetto eliminato Oggetto nel buffer
Posiziona-cursore
Oggetto selezionato
Cursore posizionato
COMANDO-INCOLLA
Oggetto posizionato
...
. .
.
Begin
End
Control digitabile v digitabile
Digita control
Control digitato
Rilascia x
Digita v
Rilascia v
v rilasciato
v digitato
Control Rilasciato
Rilascia Control
Rilascia control
. ... .
..
Begin
End
TAGLIA cliccabile INCOLLA cliccabile
SELEZIONA-OGGETTO-DA TAGLIARE
COMANDO-TAGLIA
Oggetto eliminato Oggetto nel buffer
Posiziona-cursore
Oggetto selezionato
Cursore posizionato
COMANDO-INCOLLA
Oggetto posizionato
.
.
Utilizziamo la rete di Petri costruita per simulare il
comportamento Del Comando Taglia e Incolla di
Excell
task: “Taglia e Incolla”di Excell
Begin
End
TAGLIA cliccabile INCOLLA cliccabile
SELEZIONA-OGGETTO-DA TAGLIARE
COMANDO-TAGLIA
Oggetto eliminato Oggetto nel buffer
. .Posiziona-cursore
Oggetto selezionato
Cursore posizionato
COMANDO-INCOLLA
Oggetto posizionato
Marcatura iniziale: (TAGLIAcliccabile, INCOLLA cliccabile)
..
.
.
Questo e’ un esempio di come una rete di petri possa essere
utilizzata per la verifica dell’inconsistenza funzionale
(esterna nell’esempio)