• Non ci sono risultati.

Come usare il grafo del questionario

il sistema di acquisizione 15

4.2 La modellazione del questionario

4.2.3 Come usare il grafo del questionario

La concettualizzazione dei percorsi di compilazione attraverso la definizione del grafo del questionario è sicuramente interessante di per sé. Tuttavia ciò che giustifica realmente lo sforzo necessario per la sua costruzione e verifica è il fatto che tale modellazione può essere utilizzata sia per attivare/disattivare le varie sezioni e domande del questionario, sia per determinare se le informazioni memorizzate ad un certo momento rappresentano o meno un percorso di compilazione corretto, eventualmente effettuando i "reset" di alcune risposte a seguito di modifiche. Come si è visto in precedenza il grafo del questionario è un Dag (grafo diretto aciclico), che gode di molte importanti proprietà, tra le quali quella di maggior rilevanza nel contesto specifico è la seguente:

Proprietà (ordinamento topologico) – Dato un Dag è sempre possibile definire una relazione di ordinamento topologico < sui nodi del grafo stesso, tale che se (u,v) è un arco (orientato) del Dag si ha sempre u < v.

Equivalentemente si può supporre di definire una funzione s che associ ad ognuno degli N nodi del grafo un valore intero distinto dell’intervallo [1, N]. Tale funzione definisce un ordinamento topologico sui nodi del Dag, se dato un generico arco orientato (u,v), si ha sempre s(u)<s(v) (in questo caso il simbolo < rappresenta il normale operatore di confronto tra interi).

Intuitivamente si può descrivere questa proprietà immaginando di disporre i nodi del grafo lunga una retta secondo l'ordine fissato dalla funzione s (figura 4.3). In base alla proprietà descritta, una volta disposti i nodi secondo l'ordinamento topologico, gli archi del Dag sono tutti orientati "da sinistra a destra".

Figura 4.3 - Ordinamento topologico dei nodi di un Dag

In effetti, nel caso del grafo di questionario, ottenere il suo ordinamento topologico è molto semplice, perché uno (tra i molti esistenti) corrisponde esattamente all'ordine secondo il quale le domande compaiono, pagina dopo pagina, colonna dopo colonna, dall'alto verso il basso, nel questionario cartaceo. Questo corrisponde peraltro alla considerazione che in un questionario cartaceo si fa sempre in modo che, seguendo il normale flusso di compilazione, non si debba mai "tornare indietro". L’informazione sull’indice topologico può quindi essere ricavata una volta per

tutte in fase di progettazione, memorizzata stabilmente nella base dati e utilizzata estensivamente per le finalità che si vedranno.

Nel seguito si può dunque supporre che ai nodi del grafo del questionario sia associato un indice intero secondo l'ordinamento topologico del Dag corrispondente e che gli archi del Dag siano descritti da una lista di coppie di interi ordinata secondo l'indice del nodo sorgente e del nodo destinazione. Ad esempio la lista (ordinata) corrispondente al grafo di figura 4.3 è quella riportata in figura 4.4.

Vista la corrispondenza stabilita, nel seguito si parla indifferentemente di quesito o domanda del questionario, di nodo ad essa associato, o anche di indice associato al nodo stesso dalla relazione di ordinamento topologico. Si può dire che un nodo D del grafo del questionario è compilato se l'utente ha inserito una risposta per la corrispondente domanda del questionario (e non compilato/non specificato altrimenti).

La compilazione di un certo numero di domande fa sì che alcuni archi (che usano tali nodi nelle proprie etichette) non risultino più percorribili per la compilazione del questionario. In altre parole è possibile dire che la compilazione "taglia" progressivamente una serie di cammini che inizialmente facevano parte del grafo di questionario, rendendo un certo numero di nodi (domande) non più raggiungibili da un percorso di compilazione corretto, e quindi, in definitiva, non più compilabili. La progressiva compilazione del questionario determina quindi una modifica dello stato di ciascun nodo-domanda, che dipende sia dalla struttura del grafo che dai nodi compilati (cioè dalle risposte specifiche già fornite dall’utente).

Figura 4.4 - La lista ordinata di coppie di indici che rappresenta il grafo di Figura 4.3

Sorgente Destinazione 1 2 1 3 2 4 3 6 4 5 4 6 5 7 6 8 7 8

La situazione è illustrata graficamente in figura 4.5, dove si considera nuovamente il sotto-grafo di figura 4.2 (corrispondente al frammento di questionario di figura 4.1). Nella parte sinistra della figura si suppone che la compilazione non sia ancora arrivata al frammento di questionario rappresentato e che in particolare non sia stata ancora fornita una risposta alla domanda-nodo D014 (luogo di nascita). I nodi D014 e D015 sono mostrati con tratto continuo, perché saranno necessariamente raggiunti dai successivi passi della compilazione. Non esistono infatti sequenze di risposte (a cui corrispondono naturalmente percorsi di compilazione) che consentono di escludere D014 e D015 dalla compilazione. Al contrario D014A e D014B sono mostrati tratteggiati perché solo potenzialmente raggiungibili: esistono infatti alcune sequenze di risposte che ne determinano la compilazione e altre che fanno sì che non debbano essere compilato.

Nella parte destra della figura si suppone invece che sia stata fornita una risposta al quesito D014 (il nodo D014 risulta compilato ed è stata fornita la modalità di risposta 2), mentre non sono ancora state fornite risposte per le domande successive. I nodi D014A e D015 sono mostrati con tratto continuo, perché saranno necessariamente raggiunti dai successivi passi della compilazione. A partire dal nodo attualmente compilato D014 non esistono infatti sequenze di risposte (a cui corrispondono percorsi di compilazione) che consentono di escludere D014A e D015 dalla compilazione. Al contrario D014B è mostrato in grigio (similmente a quanto accade nell'interfaccia utente del questionario) perché in seguito alla compilazione della domanda-nodo D014, tale nodo diventa irraggiungibile: sulla base delle risposte fornite e della struttura del questionario l’utente non dovrà rispondere a tale domanda, a meno che ovviamente ritorni sui suoi passi e fornisca qualche risposta diversa alle domande precedenti, in particolare alla D014.

Lo stato di ogni nodo determina quindi se una certa domanda deve essere abilitata alla compilazione e/o lo stile di visualizzazione. D’altra parte, come si è visto, lo stato dipende dalle risposte via via fornite dall’utente e deve quindi essere continuamente aggiornato, in corrispondenza di qualunque modifica sul questionario operata dall’utente.

Ne consegue che tale procedura di aggiornamento dello stato deve essere molto rapida per garantire un ricalcolo praticamente istantaneo e non appesantire l’interfaccia utente con fastidiosi ritardi. Il fatto che un grafo del questionario sia un Dag è fondamentale da questo punto di vista, perché si può dimostrare che per aggiornare lo stato di tutti i nodi è sufficiente una singola scansione di tutti gli archi della lista secondo l’ordine determinato dall’ordinamento topologico. In termini più formali l’aggiornamento si può quindi ottenere in tempo lineare nel numero di archi presenti nel grafo, vale a dire in maniera molto efficiente.

Figura 4.5 - Lo stato dei nodi a seconda delle risposte fornite