• Non ci sono risultati.

Progettazione e sviluppo di una piattaforma web per la realizzazione di test cognitivi

N/A
N/A
Protected

Academic year: 2021

Condividi "Progettazione e sviluppo di una piattaforma web per la realizzazione di test cognitivi"

Copied!
80
0
0

Testo completo

(1)

Dipartimento di Filologia, Letteratura e Linguistica

CORSO DI LAUREA MAGISTRALE IN INFORMATICA UMANISTICA

TESI DI LAUREA

Progettazione e sviluppo di una piattaforma web

per la realizzazione di test cognitivi

CANDIDATO RELATORE

Luca Vitrini Paolo Milazzo

RELATRICE

Giovanna Broccia

RELATRICE

Carmen Berrocal Montiel

(2)

Indice

Abstract ... 4

Introduzione... 6

Capitolo 1 – La memoria di lavoro ... 8

1.1 Test sulla working memory ... 10

1.2 Raccolta dati e punteggio dei test ... 14

1.3 Tatool ... 16

Capitolo 2 – Lo sviluppo di un’applicazione web ... 20

2.1 CSS ... 23

2.2 JavaScript ... 25

2.3 Client-side/Server-side ... 27

Capitolo 3 – Il framework ... 29

3.1 XML ... 30

3.2 Struttura di un test ... 32

3.3 Tag principali ... 34

3.4 Questionario ... 36

3.5 Compiti sperimentali... 38

3.6 Il tag <i:div> ... 39

3.7 Salvataggio dati ... 45

Capitolo 4 – Il caso di studio: test di attenzione divisa ... 48

4.1 Training ... 50

4.2 Compito di attenzione divisa ... 53

4.2.1 prepareAtt ... 54

4.2.2 workAtt ... 57

(3)

4.2.4 resetAtt ... 61

Capitolo 5 - Descrizione dell’uso nella pratica ... 63

5.1 Misurazione della working memory capacity ... 65

5.2 Struttura del test ... 71

5.3 Test in laboratorio H dell’08/06/2018 ... 75

Conclusioni e sviluppi futuri ... 77

(4)

4

Abstract

La ricerca nel campo cognitivo vede spesso la necessità di applicare all’atto pratico le ipotesi effettuate durante lo studio, verificandone la bontà e raccogliendo dati utili alla definizione di nuovi concetti in ambito mnemonico. L’obiettivo di questo studio è di fornire uno strumento per la realizzazione di test cognitivi che non tenga conto del background informatico del ricercatore, ma che anzi venga maggiormente incontro agli studiosi privi delle necessarie conoscenze di programmazione. Nel primo capitolo verrà esposto il ruolo della memoria di lavoro nel mantenimento dell’informazione e dell’attenzione. Il secondo capitolo approfondisce lo stato dell’arte nella creazione di una piattaforma web. Il terzo capitolo si incentra sulla realizzazione del framework. Il quarto capitolo riguarda il compito di attenzione divisa definito durante lo studio. Il quinto analizza l’uso nella pratica delle tecnologie e delle ricerche effettuate. Nella conclusione saranno analizzati gli sviluppi futuri dell’applicazione e il ruolo dello studente di Informatica Umanistica.

Research in the cognitive field often sees the need to apply the hypotheses made during the study, verifying their goodness and collecting data useful for defining new concepts in the mnemonic field. The objective of this study is to provide a tool for the realization of cognitive tests that does not take into account the researcher's IT background, but that is more in keeping with scholars lacking the necessary programming knowledge. In the first chapter the role of working memory in the maintenance of information and attention will be exposed. The second chapter explores the state of the art in creating a web platform. The third chapter focuses on the realization of the framework. The fourth chapter concerns the task of divided attention defined during the study. The fifth analyzes the use of technologies

(5)

5 and research carried out in practice. The conclusion covers the future developments of the application and the role of the student of Humanistic Informatics.

(6)

6

Introduzione

L’argomento di questa ricerca parte dal campo di studio della memoria cognitiva, in particolare della “working memory”, e arriva alla progettazione di una piattaforma web per la realizzazione di test psico-cognitivi. Il progetto ha previsto inizialmente l’ideazione di una libreria di tracking in grado di raccogliere i dati generati dall’utente durante l’esecuzione dei test; successivamente sono stati definiti gli elementi, i parametri e le modalità di progettazione per la realizzazione di un test informatico da effettuare in laboratorio, e che portasse alla raccolta di un vasto pool di dati riguardo la gestione dell’attenzione durante l’esecuzione di più task contemporanei; infine si è deciso di astrarre il tutto nella creazione di un framework per la generazione di test cognitivi.

La trasposizione di una ricerca scientifica in uno studio pratico applicato a dei soggetti in laboratorio, volto a confermarne le ipotesi, vede spesso nella realizzazione del test informatizzato il suo ostacolo più grande. Lo scopo di questa tesi è stato quello di fornire uno strumento valido e di facile utilizzo, che permetta ai ricercatori la creazione di test ed esperimenti senza l’ormai annosa necessità di conoscere a fondo gli strumenti informatici utili alla scrittura di codice. La piattaforma web realizzata consente la generazione di test di natura psicologica, non necessariamente cognitiva (pur essendo indirizzato a questo ambito) e la raccolta dei dati utili allo studio dei risultati, attraverso la scrittura di un semplice file di testo. Insieme a questo strumento è stato ideato un compito sperimentale di attenzione divisa, volto allo studio del mantenimento dell’attenzione da parte del soggetto, quando questi si trovi a dover svolgere più compiti contemporaneamente.

Il presente lavoro si articola in cinque capitoli: i primi due costituiscono il fondamento teorico della ricerca, gli altri tre affrontano la realizzazione del progetto illustrato. Il primo capitolo si sofferma sulla definizione di memoria cognitiva e la cosiddetta

(7)

7 “memoria di lavoro”, illustrandone l’importanza e i contesti di studio, oltre a gettare una veloce panoramica sugli strumenti finora in utilizzo nella comunità scientifica per la realizzazione di test cognitivi. Il secondo capitolo approfondisce l’ambito informatico illustrando lo stato dell’arte nello sviluppo di applicazioni web client-side, in particolare nei linguaggi utilizzati. Il terzo capitolo tratta del framework, mostrandone funzionamento e uso; il quarto fornisce un approfondimento sul compito di attenzione divisa; l’ultimo capitolo si concentra sulla trasposizione nella pratica del test realizzato.

(8)

8

Capitolo 1 – La memoria di lavoro

La memoria è la capacità del cervello di conservare informazioni, ovvero quella funzione mentale volta all’assimilazione e al richiamo, sotto forma di ricordo, di informazioni apprese durante l’esperienza o per via sensoriale. Tanti studiosi hanno cercato di comprendere e descrivere approfonditamente il modo attraverso cui il cervello acquisisce, codifica, elabora, immagazzina e poi recupera le informazioni. Uno dei contributi di maggior rilievo è quello relativo al modello del “multimagazzino”, proposto da Atkinson e Shiffrin nel 1968 (1), e che rappresenta tuttora il più diffuso criterio di classificazione della memoria, basato sulla durata della ritenzione del ricordo.

Secondo questo metodo esistono tre distinti tipi di memoria (o magazzini):

- Memoria sensoriale (MS): ha la funzione di tenere traccia dell’informazione sensoriale; ha una capacità di ritenzione molto limitata, di pochi secondi.

- Memoria a breve termine (MBT): definita anche memoria “primaria”, è la parte di memoria capace di conservare in memoria una piccola quantità di informazioni chiamata span (tra i 5 e i 9 elementi) attraverso la reiterazione, per una durata di circa 20 secondi.

- Memoria a lungo termine (MLT): ha una capacità e una durata di ricordo potenzialmente illimitate, ma la sua velocità di immagazzinamento dipende dal tempo di permanenza dello stimolo nella MBT. Le informazioni qui collocate possono essere recuperate quando necessario.

Il modello così proposto prevede quindi un percorso che vede ogni singola informazione venire prima raccolta dal magazzino sensoriale, passare a quello a breve termine per poi venire eventualmente allocata nella memoria a lungo termine. Una delle distinzioni più importanti tra l’MLT e l’MBT riguarda il modo attraverso cui le informazioni ivi mantenute

(9)

9 possono andare perdute; se nel primo caso è legato alla difficoltà di accedere allo stimolo memorizzato, nel secondo dipende da possibili interferenze dovute ad altre informazioni in entrata.

Baddeley e Hitch, ritenendo la memoria a breve termine una struttura molto più articolata di quella proposta da Atkinson e Shiffrin, proposero nel 1974 il termine “working memory” (2). Il loro intento era quello di comprendere se esiste una qualche correlazione tra la capacità di gestire l’attenzione e la quantità di informazioni che possiamo mantenere attivamente in memoria. Definiamo la “Working Memory” (WM), o “memoria di lavoro”, come un sistema formato da due entità: le informazioni immagazzinate in memoria (e ripetibili mentalmente) e un sistema attentivo chiamato “Esecutivo Centrale” che regola i contenuti della porzione attiva di memoria, ossia la capacità di mantenere in uno stato attivo gli elementi memorizzati, pur nel mentre di altre attività. In particolare, a differenza della memoria a breve termine, più correlata con la capacità di mantenere in memoria un numero più o meno ampio di elementi, la WM rappresenta l’abilità di un soggetto di controllare la propria attenzione per mantenere le informazioni immagazzinate in uno stato attivo e facilmente recuperabile. Questo perché, in assenza di distrazioni, le informazioni necessarie alla risoluzione di un compito potrebbero essere facilmente recuperate dalla memoria a lungo termine; la presenza di un task complementare, invece, impone al soggetto di dover fare affidamento sul mantenimento attivo dell’informazione in memoria.

Fino a che punto il mantenimento dipenda dall’attenzione esecutiva generale o dalle conoscenze specifiche dell’individuo varia in base alle abilità del soggetto e al contesto d’uso. Ad esempio, ponendo a confronto due giocatori di scacchi, uno alle prime armi e l’altro esperto, il primo farà maggiormente uso dell’attenzione esecutiva per mantenere informazioni riguardo alla partita in corso, memorizzando le mosse recenti e le possibili posizioni future dei pezzi; il secondo giocatore, invece, farà uso le sue conoscenze specifiche

(10)

10 del gioco per applicare con successo schemi predefiniti e pattern di gioco studiati precedentemente, facendo affidamento sull’attenzione esecutiva solo in momenti di particolare stress. Ne scaturisce una duplice correlazione, la capacità della memoria a breve termine come misura delle conoscenze specifiche e la capacità della working memory come metro delle conoscenze generali; quest’ultima non riguarda quindi le differenze individuali nel numero di elementi che possono essere mantenuti in memoria, ma piuttosto le differenze tra i soggetti nel controllare l’attenzione affinché vengano mantenute in uno stato attivo e facilmente riutilizzabile le informazioni memorizzate. Ne deriva che la “Working Memory Capacity” (WMC) (3) del soggetto non è direttamente collegata alla memoria, quanto più all’utilizzo dell’attenzione per mantenere in memoria le informazioni immagazzinate; più questa è grande e più si è in grado di gestire l’attenzione, mantenendo attivi un maggior numero di elementi ed evitando le distrazioni (4).

Gli studi sul comportamento umano negli ultimi decenni hanno dimostrato la centralità della memoria di lavoro nel costrutto psicologico di un soggetto e nel suo rapporto con molte altre funzionalità cognitive. Non solo; ricerche cliniche hanno dimostrato come la WM sia collegata alla depressione (5), condizioni l’abilità di gestire lo stress (6) e sia influenzata dall’assunzione di alcool (7). È stato dimostrato come un deficit nella WMC possa rappresentare un primo sintomo della malattia di Alzheimer (8) e sembra che lo sviluppo della WMC nei bambini sia di fondamentale importanza per lo sviluppo di capacità cognitive in generale (9).

1.1 Test sulla working memory

I test utilizzati per misurare la working memory capacity sono ormai largamente utilizzati per comprendere e studiare un ampio campo di comportamenti cognitivi complessi tra cui il

(11)

11 linguaggio, la comprensione, il ragionamento e il problem solving (10). Fu seguendo le istruzioni di Baddeley e Hitch che vennero realizzati i primi test, il cui intento era quello non solo di misurare la quantità di informazioni memorizzabili dall’individuo (cosa che veniva già misurata dai test sulla memoria a breve termine), ma di valutare anche l’elaborazione simultanea di informazioni aggiuntive. La loro intuizione fu quella di comprendere l’importanza funzionale di un sistema mnemonico capace di immagazzinare immediatamente una quantità limitata di dati durante differenti attività mentali. I test intervallano quindi la presentazione di un elemento da ricordare, un numero o una parola, con un secondo compito impegnativo quale la verifica di un’equazione, la comprensione di una frase.

Il primo test sulla WM fu realizzato nel 1980 da Daneman & Carpenter (11). Il reading span, così fu chiamato, richiedeva ai soggetti di leggere ad alta voce una frase cercando contemporaneamente di mantenere in memoria l’ultima parola della stessa. Dopo ogni gruppo di proposizioni (da due a sei per gruppo o item, con 3 serie per ogni livello) veniva richiesto al soggetto di ricordare in successione le parole da ricordare mostrategli. Il reading span del soggetto era quindi definito dal livello più alto a cui egli riusciva a ricordare almeno 2 delle 3 serie presentategli. Con il passare del tempo si cercò di raffinare l’efficacia di questo test, progettando test individuali che tenessero conto anche dell’accuratezza nella verifica del compito secondario (ovvero quello di elaborazione dell’informazione, atto a “distrarre” il partecipante dall’azione di recupero), e selezionando le parole o la lettera da ricordare in maniera indipendente rispetto alla frase precedentemente mostrata. Tali modifiche furono fatte per rendere il risultato dei test meno influenzabile dalle caratteristiche dei soggetti, quali ad esempio le differenti velocità di lettura di quest’ultimi.

Un altro importante problema che si cercò di ridurre presentando in ordine randomico i gruppi di frasi fu l’interferenza proattiva, cioè quando la memoria esistente va ad interferire

(12)

12 con l’apprendimento. Ad esempio, quando si cerca di imparare una nuova lingua, spesso gli errori commessi sono dovuti al tentativo di applicare la grammatica della lingua madre a quella oggetto di apprendimento. Questo tipo di interferenza diventa evidente nella presentazione di item con medesima lunghezza, in quanto ciò consente al soggetto di anticipare il numero di parole che gli verrà chiesto di memorizzare e di organizzare strategie di conseguenza. D’altra parte, la conoscenza di questo schema rende più difficile la memorizzazione della nuova sequenza di parole, poiché è proprio l’interferenza proattiva a spingere il soggetto a sovrapporre le sequenze già visionate a quella nuova da ricordare.

Un esempio in questo senso può essere la facilità con cui ricordiamo il primo posto in casa dove poniamo un nuovo oggetto; dopo aver utilizzato e quindi spostato diverse volte lo stesso sarà molto più difficile ricordarne l’ultima posizione, perché la nostra mente andrà a mescolare nei nostri ricordi tutte le varie posizioni precedentemente ricordate, rendendoci effettivamente più complicato ritrovare l’oggetto. Gli effetti di questa interferenza sono quindi maggiormente visibili quando obbligano il soggetto a mantenere le informazioni immagazzinate in uno stato attivo, pronte per essere recuperate, ed è sotto le medesime condizioni che le differenze individuali relative alla working memory dovrebbero acquisire maggiore importanza.

Nel 2000 Kane & Egle (12) sperimentarono con successo questa ipotesi sottoponendo due gruppi di individui ad un test mnemonico così strutturato: ai soggetti era richiesto di memorizzare dieci parole, svolgere una diversa attività per 16 secondi per poi provare a ricordare le parole precedentemente memorizzate. Il primo gruppo, formato da soggetti con buone performance nei test relativi alla WM, mostrava una minore perdita di memoria dovuta all’interferenza proattiva rispetto al secondo gruppo, formato invece da soggetti dagli scarsi risultati nei test WM. Le prestazioni tra i due gruppi risultavano invece quasi sovrapponibili di fronte a compiti ove l’attenzione veniva divisa tra più task. Questo

(13)

13 suggerisce come i soggetti del primo gruppo, in condizioni normali, facciano un uso più controllato dell’attenzione per ridurre gli effetti dell’interferenza proattiva, la quale invece aumenta sotto carichi cognitivi maggiori. Risulta infine come un discorso opposto possa essere fatto per i soggetti appartenenti al secondo gruppo, per i quali l’aumento del carico cognitivo non influenza particolarmente gli effetti dell’interferenza, che infatti essi tendono a non gestire abitualmente attraverso l’attenzione.

I vari reading span (Figura 1 (13)), operation span, digit span condividono la medesima struttura e vengono spesso implementati allo stesso modo. I compiti sottoposti agli utenti hanno l’obiettivo di forzare l’immagazzinamento di informazioni attraverso la memoria di lavoro durante l’esecuzione di altri compiti, per stimolare l’utilizzo dell’attenzione centrale. Il compito distrattore, in particolare, ha il preciso scopo di interferire con la reiterazione dell’informazione; un ritardo sostanziale tra gli stimoli presentati al soggetto consentirebbe

difatti il ripasso, rendendo il test più una misura della memoria a breve termine. I reiterati tentativi di ottimizzare e raffinare la configurazione

maggiormente adatta alla somministrazione del test

hanno fatto luce su alcune condizioni necessarie, che vanno rispettate per non inficiare i risultati dello stesso. Il soggetto tipo è un giovane adulto in buona salute; per limitare gli errori e livellare le differenze tra i partecipanti, il test va sottoposto ad ogni soggetto individualmente. La dimensione degli item deve variare da due a cinque. In questo modo ci

(14)

14 si assicura la migliore configurazione per ottenere dei risultati che siano rappresentativi dell’intera popolazione e che limitino al minimo gli errori dovuti alle caratteristiche dei singoli.

1.2 Raccolta dati e punteggio dei test

A questo punto è necessario capire come valutare i risultati ottenuti nei test. La natura duale degli stessi impone che il punteggio finale tenga conto delle perfomance effettuate dal partecipante sia nel compito di reiterazione che in quello distrattore. Nel caso dell’operation span, ad esempio, potrebbero essere raccolti molteplici dati, come l’accuratezza del soggetto nei problemi matematici, il tempo necessario per risolverli e il tempo speso nel ricordare le parole. Tradizionalmente si preferisce non tener conto del punteggio relativo al compito distrattore; questo per due motivi. Primo, perché tendenzialmente l’accuratezza nel task secondario è quasi assoluta, poiché le istruzioni del task spingono i soggetti a focalizzare la loro attenzione su di esso. Secondo, pur ottenendo una precisione così alta nel compito distrattore, è stata notata una correlazione positiva tra quest’ultimo e il task di memoria. Ne deriva che i soggetti in grado di ricordare un maggior numero di elementi (che essi siano parole o numeri o lettere) ottengono dei risultati migliori anche nel compito distraente. Va inoltre presa in considerazione un’altra prassi usuale nel conteggio dei risultati di un test WM, ossia l’utilizzo di un valore assoluto per il punteggio span. Come già descritto, in un tipico test viene sottoposto al soggetto un item di grandezza crescente (tipicamente, da due a cinque); il punteggio associato al tester sarà quindi la dimensione dell’ultimo set di item da esso correttamente ricordato. Il presupposto a favore di questa pratica è il rapporto tra le abilità di un individuo e la difficoltà di un item: queste due entità vengono così poste sulla stessa scala. Se la criticità di un item è superiore alle capacità del soggetto la probabilità

(15)

15 di successo nel test è minima, proporzionalmente se le abilità individuali superano la complessità dell’item ci sono ottime chance di ottenere una risposta positiva. Dietro questa assunzione si nasconde tuttavia una scorretta valutazione della difficoltà del test; il singolo item è infatti composto da una serie di variabili che potrebbero inficiarne la complessità oggettiva, quali frasi mediamente più lunghe, una similarità semantica tra i vari stimoli, il tempo di visualizzazione delle frasi e così via. E così, svolgendo diverse volte lo stesso test WM, potremmo ottenere differenti span score per il medesimo partecipante. Inoltre, mantenendo una finestra di punteggio così scarna (grande in sostanza quanto le possibili dimensioni degli item) diventa impossibile tener traccia della perfomance totale del soggetto, in primis i suoi risultati negli item precedenti. La soluzione sta nel non classificare gli errori in maniera specifica, prevedendo invece un sistema di valutazione che per ogni elemento assegni un certo valore in caso di risposta corretta, ed un altro in caso di errore. Banalmente, 1 se corretto e 0 se scorretto.

Questa metodologia richiede pertanto un’adeguata procedura per la generazione di un punteggio finale, alla luce di alcune considerazioni non applicabili nel contesto di uno span score assoluto. Decidiamo intanto di assegnare punteggio agli elementi ricordati anche se il soggetto compone errori nel compito distrattore (in cui manteniamo comunque una soglia di successo dell’85%, sotto la quale l’intero test si considera fallito). È necessario inoltre effettuare due scelte, tra di loro ortogonali, che definiscono ben quattro modalità diverse di punteggio relative al task di memorizzazione. La prima considera se sia necessario tener conto degli elementi ricordati pur se affiancati da errori (partial credit), o se invece vada mantenuto un atteggiamento più “duro” dando credito solo agli item correttamente ricordati nella loro interezza (all-or-nothing credit). Inoltre, valutiamo se sia adeguato dare un egual peso agli item, a prescindere dalla loro grandezza, effettuando quindi una proporzione tra gli elementi ricordati e gli elementi totali presenti nell’item (definito come

(16)

16 unit weighting), piuttosto che dar maggiori peso agli item di equivalente dimensione, attraverso la media degli elementi correttamente ricordati (load weighting). L’intersezione tra queste due coppie vede una soluzione ottimale, in base ai risultati empirici già espressi, nel PCU, il Partial-Credit Unit Scoring. Preferiamo quindi dare un egual peso ad ogni elemento ricordato, a prescindere dalla grandezza dell’item che vanno a comporre o dell’accuratezza più o meno totale della risposta nello stesso.

1.3 Tatool

Uno degli strumenti più efficaci per la progettazione di test cognitivi online si chiama Tatool (14) ed è stato rilasciato nel 2012 con lo specifico intento di aiutare i ricercatori nella programmazione di software di training, esperimenti o questionari. Non è il primo ad adempiere a questa funzione: le opzioni fino a quel momento sul mercato, tuttavia, risultavano o di proprietà e quindi difficilmente estensibili secondo le richieste specifiche

(17)

17 degli studi da effettuare, o mono-piattaforma, consentendone quindi un uso relegato ad un solo sistema operativo. Tatool invece è un software multipiattaforma perché basato sul linguaggio Java. Ciò significa che un’applicazione Tatool scritta per Windows funziona perfettamente anche su Linux o Mac OSX, e che vista la presenza ormai sicura del pacchetto di runtime Java (JRE) su praticamente ogni computer, questo consente l’esecuzione immediata del test e una sua condivisione online con pochi click. Il suo essere open-source permette inoltre ai ricercatori, nel caso in cui volessero, di ottimizzare loro stessi il software e modificarlo a loro piacimento per renderlo più malleabile alle loro necessità. L’architettura di Tatool è stata progettata per soddisfare i requisiti richiesti dal design di esperimenti e training psico-cognitivi e propone un set piuttosto ampio di funzioni predefinite utili alla costruzione di test psicologici ad hoc; per questo il framework di Tatool può essere utilizzato a diversi livelli, in dipendenza delle capacità di programmazione dell’utente. Per quelli con una certa familiarità con il codice Tatool mette a disposizione un’API apposita (cioè un insieme di procedure utili all’esecuzione di un compito all'interno di un programma), con un esteso assortimento di classi e metodi. Una volta completata la scrittura delle procedure queste vengono tradotte in XML, un meta-linguaggio che fa da intermediario tra l’utente e Tatool. Per coloro che invece siano nuovi alla programmazione o non vogliano cimentarsi nel codice Java è possibile modificare direttamente i parametri di alcuni modelli base, andando a lavorare sul relativo “modulo”, ovvero l’insieme degli elementi che identifica uno studio o un esperimento. I dati raccolti dal test vengono quindi immagazzinati in un database locale e possono essere successivamente trasferiti in un file CSV o direttamente online.

Dal 2014 Tatool ha interrotto lo sviluppo del client Java per focalizzarsi su una versione Web del medesimo prodotto, sviluppato in HTML, CSS e JS. Tatool Web consente infatti di pubblicare i propri esperimenti rendendoli disponibili alla comunità scientifica,

(18)

18 permettendo inoltre la loro creazione attraverso un editor online di moduli. La presenza sul web di Tatool consente di poter sottoporre al proprio test un numero pressoché infinito di utenti, semplicemente chiedendo a questi di accedere al proprio web browser.

Creando un profilo ed effettuando quindi il login al sito web di Tatool è possibile così accedere ai vari test messi in rete dalla comunità, scaricarli e caricarne di propri. Gli sviluppatori mettono inoltre a disposizione una serie di task base da poter utilizzare e modificare, uno scheletro di partenza per molti test comunemente utilizzati nell’ambito psico-cognitivo; tra questi, il complex span, il digit span e il choice reaction time. Le difficoltà sorgono nel caso in cui si desideri creare un nuovo test e questo non presenti una forte similarità con i modelli già precostituiti: senza nessuna traccia da seguire, si è costretti a progettare il test da zero; questo può risultare molto difficile in assenza di un adeguato background in HTML, CSS e JS. Tatool si prospetta quindi come uno strumento efficace per

(19)

19 la progettazione e sviluppo di test psico-cognitivi, consentendo inoltre la somministrazione e condivisione di questi ultimi attraverso la rete; una piattaforma completa per gli addetti al settore che abbiano anche una discreta maneggevolezza nella scrittura di codice.

(20)

20

Capitolo 2 – Lo sviluppo di un’applicazione web

La progettazione e il layout di una pagina web, ovvero lo strumento utile a visualizzare le informazioni presenti nel World Wide Web, è un processo lungo e scandito da alcune scelte progettuali e stilistiche. Una pagina web è formata fondamentalmente da due elementi: i contenuti veri e propri e la formattazione, ovvero l'aspetto con cui i contenuti sono mostrati

all'utente. Per essere visibile e intelligibile, questa deve essere opportunamente formattata. Per la creazione di un sito si rende necessario l’utilizzo di un insieme di tecnologie, che definiscano la posizione, il comportamento e lo stile grafico degli elementi a schermo. Ad oggi lo standard per la creazione di una pagina web prevede l’utilizzo di tre differenti linguaggi:

- HTML (15): serve a definire quali sono gli elementi presenti a schermo, stabilire collegamenti e riferimenti tra le pagine e il ruolo che svolgono i testi, caricare immagini e video;

- CSS (16): istruisce il browser su come presentare gli elementi presenti nel file di testo HTML, definendone stile, colore, dimensione, eventuali animazioni;

- JavaScript (17): consente di manipolare interamente la pagina HTML, sia nei contenuti che nello stile, gestendo inoltre l’interazione dell’utente con essa.

Questa divisione rende molto chiaro il compito affidato ad ogni strumento, favorendo la manutenzione del codice e soprattutto la sua modularità, ovvero la possibilità di scomporre e riutilizzare parti di codice scritto da noi o da altri, permettendo spesso un guadagno in tempo e fatica. Per la corretta costruzione di una pagina web faremo uso di HTML per definire quali elementi mostrare, CSS per indicare come mostrarli e JavaScript per definire l’interazione pagina-utente.

(21)

21 HTML sta per “HyperText Markup Language” ed è un linguaggio di markup, permette cioè di indicare come disporre gli elementi all’interno di una pagina web; ognuno di essi è contrassegnato da un apposito marcatore chiamato tag, caratterizzato dall’inclusione tra parentesi angolari. Le immagini avranno così l’identificatore <img>, i paragrafi <p>, e così via. Un file di testo in HTML sarà quindi una lunga sequenza di tag, ognuno con la precisa funzione di esprimere quale elemento debba apparire a schermo e come il suo contenuto vada disposto. Nella Figura 4 è possibile vedere un esempio di un file HTML. La sua struttura è basata su alcuni tag obbligatori e necessari per il suo corretto funzionamento; questo serve al browser per comprendere quale sia lo scheletro della pagina.

La prima riga, <!DOCTYPE html>, serve ad indicare che il suddetto file di testo è un file scritto secondo lo standard HTML e che va riconosciuto come tale. Il tag <html> rappresenta

(22)

22 la radice dell’intero documento, e racchiude in sé l’intero codice della pagina web; oltre a questo è possibile indicare qui alcune caratteristiche generali della stessa, come ad esempio la lingua. Vengono poi altri due tag fondamentali, <head> e <body>. Il primo contiene le informazioni utili alla gestione della pagina, come il titolo, la codifica di caratteri utilizzata, il riferimento alle librerie e file esterni impiegati. Il secondo accoglie infine tutti gli elementi da presentare a schermo, come nell’esempio il titolo e il testo di una favola.

Da qui si deduce come manchino ad HTML i costrutti propri della programmazione, cioè la capacità di reagire, ad esempio, all’input dell’utente o ai vari meccanismi che si innescano al verificarsi o meno di una condizione. Per questo HTML rientra tra i cosiddetti “linguaggi di mark up”, ovvero quei linguaggi atti ad indicare cosa debba apparire sullo schermo e in quale sequenza, a differenza dei linguaggi detti “di programmazione”, ossia quelli in cui vengono specificati degli algoritmi e delle funzioni specificatamente costruite per controllare il comportamento della pagina web.

HTML nasce nei primi anni novanta come linguaggio per la pubblicazione degli ipertesti attraverso il neonato World Wide Web e in pochi anni si impone come il linguaggio standard per la formattazione e l’impaginazione di una pagina web. Dal 1994 il World Wide Web Consortium (W3C) ha il compito di sviluppare e pubblicare le “W3C Recommendation” ufficiali per ogni nuova versione di HTML, definendo lo standard per gli anni a venire. Rilasciata nell’ottobre del 2014, la quinta versione di HTML nasce con l’intento di rendere disponibili direttamente agli utenti le funzionalità che in precedenza erano fruibili tramite estensioni, come Adobe Flash e simili; inoltre vengono fatti molteplici passi in avanti verso la compatibilità tra i vari browser, indipendentemente dalla piattaforma utilizzata, questo per favorire l’espansione dei dispositivi mobili. In generale HTML5 assicura un miglior disaccoppiamento tra struttura, stile e contenuti di una pagina web, oltre

(23)

23 ad un più ampio supporto verso la gestione dei contenuti multimediali, le animazioni, la geo localizzazione un utilizzo più saggio della banda di rete disponibile.

2.1 CSS

Il “Cascading Style Sheets” o CSS è un linguaggio usato per la formattazione di documenti relativi a pagine web, un ideale complemento ad HTML. La sua introduzione, avvenuta a cavallo del nuovo millennio, ha definito uno standard leggero e multipiattaforma per la formattazione web e risolto le problematiche attinenti i tag proprietari introdotti da Microsoft e Netscape nei primi anni 90. Questi, figli della guerra tra i due colossi americani, erano scarsamente compatibili con l’introduzione sul mercato di nuove piattaforme quali palmari, tablet e smartphone e non rispettavano gli standard HTML. La scelta vincente del consorzio W3C fu quella di dividere nettamente il contenuto della pagina web dalla sua formattazione. Un tipico file CSS presenta quindi una struttura strettamente legata all’impaginazione web, lasciando la scelta della struttura e dei contenuti al file HTML e risultando così molto più leggero per dimensioni e complessità. Le interazioni tra i due linguaggi avvengono attraverso due attributi del tag HTML, class (identificato da un punto) e id (da un hashtag). Il primo applica le regole ad esso associato a tutti gli elementi della pagina che presentano questo attributo; il secondo ha invece un utilizzo singolo contraddistinguendo l’elemento come unico. Come visibile in Figura 5, un foglio di stile CSS è strutturato come una sequenza di regole, ognuna formata da due elementi:

- un selettore, ossia un predicato che individua uno o più elementi del documento HTML;

- un blocco di dichiarazioni, ovvero una lista di tratti di stile che si vuole modificare, ognuno contrassegnato da uno specifico valore.

(24)

24 La proprietà “color: white” andrà così a modificare il colore del testo dell’elemento designato in bianco, attraverso un linguaggio semplice, standardizzato e intuitivo. Come già detto i fogli di stile CSS presentano la possibilità di gestire, con un po’ di pazienza, la risoluzione dello schermo e la formattazione di ogni singolo elemento in base alla piattaforma desiderata. Questa funzionalità, non ancora del tutto supportata dai browser moderni, avviene attraverso i media tag, i quali consentono di specificare a quale dispositivo vadano associate un determinato numero di regole. Attraverso l’integrazione di un foglio di stile CSS in una pagina HTML si è così in grado di decidere la forma e il contenuto di una pagina web; gestire il suo comportamento spetta invece ad un linguaggio di programmazione come JavaScript.

(25)

25

2.2 JavaScript

Utilizzato comunemente nella programmazione web lato client, JavaScript (o JS) è un linguaggio di scripting per la creazione di eventi ed effetti dinamici interattivi. A differenza di altri linguaggi come il C o il C++, JavaScript viene solitamente utilizzato in forma integrata all’interno di un altro programma, definito quindi “programma ospite”; un esempio tipico in questo senso è il browser. Un’interfaccia chiamata Modelli a Oggetti Del Documento (o DOM) consente a JavaScript di interfacciarsi con il browser; la scrittura di funzioni JS permette così di compiere azioni altrimenti impossibili con il solo HTML, come controllare i campi di una form, nascondere o visualizzare elementi, accedere a dati lato server. Le sue caratteristiche principali sono quelle di essere un linguaggio non compilato ma interpretato (tipicamente l’interprete è incluso nel browser), di essere debolmente tipizzato (imponendo uno scarso controllo sull’uso dei dati rispetto al loro tipo e

(26)

26 discostandosi in questo da Java) con una sintassi simile a C e C++.

L’integrazione con HTML, come avviene per il CSS, si ottiene inserendo il link al file .js o il testo stesso della funzione JS nel tag head del file HTML, attraverso l’apposito tag <script>. Come visibile in Figura 6, la sequenza di istruzioni in JavaScript risulta molto diversa nell’aspetto da HTML o CSS. La presenza di variabili, array e oggetti, oltre a strutture di controllo e funzioni, ne definisce il diverso scopo e utilizzo. La caratteristica principale che lega HTML e JS è la possibilità di rispondere dinamicamente agli eventi generati dall’utente. Questo può avvenire o attraverso gli elementi nella pagina web o tramite qualsiasi strumento di interazione utente-sito, come il mouse o la tastiera. Anche la modifica del campo di una form, il movimento da una finestra all’altra, il click di un pulsante sono tutti eventi tracciabili che permettono di controllare e consentire la massima integrazione tra le funzionalità disponibili all’utente. Attraverso l’uso di HTML, CSS e JS si è quindi in grado di gestire tutti gli aspetti di una pagina web in maniera leggera e dinamica.

Oltre all’utilizzo “puro” di JavaScript, ovvero al linguaggio definito dallo standard, è possibile fare uso di una delle tante librerie presenti online (referenziandole all’interno del tag <head> nel documento HTML), le quali permettono al programmatore l’accesso ad un insieme di funzioni o strutture dati utili a velocizzare lo sviluppo dell’applicazione. Attualmente la libreria JavaScript maggiormente utilizzata risulta essere JQuery (18): essa nasce con l’obiettivo di semplificare la selezione, la manipolazione e la gestione degli eventi e l’animazione degli elementi DOM nelle pagine HTML. Inoltre, consente un utilizzo semplificato di AJAX, ovvero una tecnologia software che consente l’aggiornamento dinamico della pagina web senza il ricaricamento della stessa da parte dell’utente. La libreria JQuery viene spesso scelta per agevolare la scrittura di codice: framework come questo forniscono scorciatoie per gestire i vettori, per la manipolazione di stringhe e per il riconoscimento degli oggetti e delle funzioni, risultando nel contempo, superata una fase

(27)

27 iniziale di adattamento alla sintassi, più intuitivi del puro JavaScript. Per richiamare le funzionalità di JQuery all’interno del documento è necessario sempre far uso del carattere $, come visibile in Figura 7. Altre librerie JavaScript degne di nota e molto utilizzate sono: Dojo Toolkit (usata soprattutto per la creazione di applicazioni web e contenuti dinamici), React (per le interfacce utente) e CreateJS (per suoni, animazioni e interattività, fa uso del supporto Adobe). I framework più in uso nella comunità di programmatori web sono AngularJS, Angular2, Ember, Meteor e Vue.

2.3 Client-side/Server-side

Merita un ultimo approfondimento la possibilità, nell’ambito della programmazione web, di utilizzare un’architettura “client side” rispetto ad una “server side”. Il sistema client-server indica una struttura in cui un computer client si connette ad un server per la fruizione di un determinato servizio, ad esempio la condivisione di una particolare risorsa software o hardware con altri soggetti client. Nel web la distinzione client (anche detta front-end) e server (back-end) di una pagina, identificata tra il web browser che la mostra all’utente e il server che la ospita, si configura nella diversa natura degli script. La maggior parte dei linguaggi di programmazione web nascono con il preciso intento di gestire soltanto una di queste due situazioni. Nel caso della programmazione client, il linguaggio di riferimento è

(28)

28 JavaScript, unito al codice HTML e CSS; nel caso opposto vengono principalmente utilizzati PHP, ASP.NET e Ruby. JavaScript viene definito un linguaggio client-side perché esegue gli script sul web browser dopo il caricamento della pagina. Questo significa che una parte di codice JavaScript come la seguente,

<script>document.getElementById(“testo”).innerHTML = “Benvenuto”;</script>

viene aggiunta dinamicamente al documento HTML, non fa parte del documento originale caricato dal browser, ma va a modificarlo. Un linguaggio back-end ha invece la peculiarità di eseguire i suoi script prima che questa venga caricata, in particolare non sul computer client ma sul server. La stringa di codice PHP in esempio,

<h2 id=””><?php echo “Benvenuto”; ?><h2>

ha lo stesso effetto del codice JavaScript visto precedentemente, ma modifica il documento originale prima che questo arrivi al browser. Così, se nel caso di uno script front-end sarà possibile vederne gli effetti confrontando il documento HTML caricato dal browser con quello originale, lo script server-side sarà “invisibile” perché gestito dal server stesso prima di inviare al browser il documento HTML da mostrare.

Entrambe le soluzioni offrono vantaggi e svantaggi; difatti la maggior parte dei siti online fa uso sia di linguaggi front-end che back-end. I primi sono ottimi per la gestione dell’interazione utente-browser, i secondi più adatti al caricamento dinamico di informazioni e in generale per un maggiore controllo sulla risposta data all’utente in merito a diritti di accesso, immagazzinamento e richieste dati. Si può così dire che la differenza tra le due tipologie di scripting riguardi ciò che l’utente vede effettivamente avvenire sul web browser.

(29)

29

Capitolo 3 – Il framework

La decisione di progettare e sviluppare una piattaforma web, un framework che consentisse la realizzazione di test psico-cognitivi nasce dalla necessità di avere a disposizione un software pratico, veloce e di facile utilizzo. Come già espresso nel capitolo 2, Tatool Web permette di generare test mnemonici e condividerli in rete; questo ne consente la fruizione in molteplici contesti, non più relegati tradizionalmente al laboratorio scientifico. Inoltre, l’opportunità di fare uso di un set di modelli predefiniti, basati su alcuni tra i più comuni test cognitivi, permette la modifica di un insieme di variabili generali e l’effettiva possibilità di avere il proprio test pronto in pochi minuti. Sviluppato in HTML5, CSS e JavaScript, Tatool è un software open-source, estensibile e con una community di ricercatori relativamente attiva a cui appoggiarsi per chiarimenti e riflessioni.

Tuttavia, la creazione di un nuovo test, se distante per struttura e configurazione dai modelli disponibili, è tutt’altro che semplice, e necessita di una conoscenza adeguata dei linguaggi di markup, formattazione e programmazione già descritti. Tatool è infatti pensato per il ricercatore che voglia sviluppare un test basato fortemente sui modelli già formalizzati, che abbia una buona familiarità con la scrittura di codice o che possa affidare il compito ad un soggetto terzo in grado di fare il compito per lui. Nell’eventualità di voler generare un metodo nuovo e che faccia uso di una configurazione originale diventa infatti obbligatorio saper programmare in HTML, CSS e JS, scrivendo l’intero test da zero. Tatool fallisce nel presentare una soluzione di facile utilizzo per i ricercatori non programmatori, limitando le possibilità di progettazione test a loro disposizione.

Nella decisione di creare un software che vada a risolvere questa “falla” è stato quindi deciso di dare molta importanza alla facilità di utilizzo del framework, a prescindere dalle conoscenze dell’utente, consentendo a quest’ultimo di valutare egli stesso quanto

(30)

30 approfondire il suo apporto alla scrittura del metodo. Sono infatti presenti una serie di funzioni, che potremmo, prendendo spunto da Tatool, definire “moduli”, le quali definiscono una singola azione all’interno dello schermo, e che messe assieme possono andare a formare uno o più passaggi di un item. Allo sviluppatore è lasciato quindi ampio margine di manovra, dovendo non tanto andare a confrontarsi con i modelli già formalizzati di reading, operation o digit span e simili, ma potendo creare da zero il proprio test, seguendo un ordine di task e compiti sperimentali da affidare ai partecipanti di sua invenzione, il tutto senza la necessità di conoscere alcun linguaggio di programmazione.

Se all’utente rimane quindi un’interfaccia pulita e la possibilità di svolgere il test cognitivo sul proprio browser (funzionalità presenti in Tatool), al ricercatore resta la facoltà di creare, gestire e modificare il proprio lavoro in maniera quasi immediata, non dovendo tener conto né degli aspetti grafici né della scrittura di codice. Il mediatore tra gli interessi del ricercatore e la piattaforma web risulta essere un foglio XML, attraverso cui indicare tutti i passaggi e le procedure previste dal test; fatto questo, il framework si prenderà carico di tutto il resto e presenterà al partecipante i compiti da effettuare.

3.1 XML

L’eXtensible Markup Language (19) è un metalinguaggio per la definizione di linguaggi di markup, ovvero atto a definire e controllare il significato degli elementi contenuti in un documento. Pur simile per definizione ad HTML, XML nasce con uno scopo ben diverso: mentre il primo serve a descrivere e formattare una pagina web o un ipertesto, il secondo è un metalinguaggio e viene quindi utilizzato per creare nuovi linguaggi, finalizzati a descrivere dei documenti strutturati. Come indica il termine eXtensible, a differenza di HTML che possiede un insieme ben definito di tag, XML permette di creare tag

(31)

31 personalizzati, a seconda delle proprie esigenze. Questo lo rende così adatto a molteplici contesti, come l’esportazione di dati tra diversi database, la rappresentazione di immagini o la definizione di formati di dati. Formalizzato ufficialmente nel 1998 dal W3C nella versione 1.0, nasce anche esso, come HTML, dalle conseguenze della guerra dei browser messa in atto da Microsoft e Netscape negli anni novanta, in particolare con la necessità di creare un linguaggio di markup che desse maggiore libertà nella definizione dei tag, pur rimanendo uno standard.

Come visibile in Figura 8, la struttura di un file XML non si discosta molto da quella di un corrispettivo HTML; salta immediatamente all’occhio come la possibilità di utilizzare dei tag personalizzati renda molto più semplice la lettura del documento e la comprensione dei singoli elementi. I tag, anche in questo caso, possono mantenere informazioni in due modi, o attraverso dei parametri o racchiudendo il testo. A differenza di HTML, XML mantiene tuttavia un atteggiamento molto più rigido sulle regole sintattiche, in particolare:

- Non è consentito dare ad un tag un nome che inizi con numeri o caratteri speciali; - I nomi dei tag non devono contenere spazi;

(32)

32 - Essendo case sensitive, XML riconosce come tag differenti i termini “Nome”,

“nome” e “NOME”;

- Non devono essere presenti errori di annidamento dei tag che ne precludano il bilanciamento;

Il documento XML risultante viene quindi definito “ben formato” se possiede le seguenti caratteristiche strutturali:

- Un prologo, ovvero la prima istruzione ad apparire nel documento e che lo identifica come un documento XML, oltre a definirne alcuni attributi generali. In Figura 1 corrisponde alla riga <?xml version="1.0" encoding="UTF-8"?>;

- Un unico elemento radice che contiene tutti gli altri nodi del documento (nell’esempio questo corrisponde al tag <utenti>);

- Il bilanciamento di ogni tag presente nel documento.

Nella creazione di un test cognitivo che faccia uso di un framework di appoggio, XML risulta essere la scelta ottimale per permettere ai ricercatori di scrivere liberamente uno schema strutturato e di facile comprensione senza alcuna base conoscitiva di carattere informatico.

3.2 Struttura di un test

Per lo sviluppo di questa piattaforma web, o framework che dir si voglia, è stato deciso di mantenere una struttura client-side, ovvero facente uso di un linguaggio, in questo caso JavaScript, che esegua gli script dopo il caricamento della pagina web. Questo perché al momento non è prevista la possibilità di creare un account per gestire i propri file, né di immagazzinare dati per utilizzi che vadano oltre la singola sessione; questo verrà reso possibile attraverso l’uso del linguaggio PHP (20) in una fase successiva.

(33)

33 I linguaggi quindi di cui viene fatto uso sono, come già accennato, HTML per la struttura della pagina, CSS per il layout e JS per gli script. Il ricercatore tuttavia non avrà necessità di andare a gestire obbligatoriamente questi ambiti, ma potrà fare uso (anzi, è invogliato a farlo) dei metodi e del codice integrato nel framework, così da potersi maggiormente concentrare sulla scelta dei parametri del test e soprattutto della sua composizione. Facendo riferimento ai test psico-cognitivi più comunemente utilizzati e formalizzati ormai in molteplici varianti, è facile notare una struttura ricorsiva e che vede lo stesso nucleo di task ripetersi per un numero più o meno alto di volte. Basti pensare al reading span: in questa tipologia di test, al partecipante è richiesto di memorizzare una serie di numeri, la presentazione dei quali è intervallata dalla valutazione di coerenza di una frase. Al termine di questa serie viene richiesto al soggetto il recupero dei numeri mostrati precedentemente, nello stesso ordine in cui essi gli sono stati presentati. Per una serie (che più precisamente definiamo item) di 2 numeri la successione di task portati all’utente sarà quindi la seguente:

numero → frase → numero → frase → recupero primo numero → recupero secondo numero Ne deriva che pur aumentando la grandezza della serie la struttura dell’item sarà sempre la medesima, divisa tra una prima parte di memorizzazione ed elaborazione dell’informazione e una seconda di recupero e verifica della memoria. Questo metodo è comune a moltissimi studi ed esperimenti sulla memoria e quindi, se è lecito aspettarsi che ogni nuovo test creato dai futuri ricercatori manterrà una correlazione più o meno ampia con i suoi predecessori, è altrettanto sensato presumere che la maggior parte dei test futuri di tipo psico-cognitivo possa essere ridotto ad una sequenza dalla lunghezza variabile di task semplici e regolari. Un test, in particolare nella sua natura “automatica” quando trova rappresentazione all’interno del framework, può essere quindi “sezionato” nelle seguenti entità, in una struttura ascendente a matrioska:

(34)

34 - L’ oggetto, ovvero l’elemento base che compone una scena. Può essere un numero mostrato a schermo da recuperare successivamente, la frase da valutare, un’operazione o una forma geometrica;

- La scena, definita dagli oggetti che la compongono. È tutto ciò che si trova a schermo in un lasso di tempo predefinito;

- La serie, composta da una sequenza di scene.

La struttura del file XML che descrive la composizione del test andrà quindi a mantenere la medesima organizzazione, consentendo al ricercatore di modificare i parametri per i singoli oggetti e andando a cascata a cambiare il modello del test intero. Nulla vieta ovviamente di seguire una costruzione o un ordine differente in base alle necessità di ricerca.

3.3 Tag principali

Generalmente il percorso del partecipante nell’esecuzione di un test psico-cognitivo si snoda attraverso tre o quattro passaggi fondamentali. Pur non essendo sempre tutti presenti o nel medesimo ordine, questi definiscono lo scheletro tipico del test. Sono stati quindi identificati altrettanti tag corrispondenti che il ricercatore può decidere di ordinare nella maniera più adeguata, mantenendo intatte le regole di annidamento di XML:

- <q:questions>, corrispondente al questionario. Questo è un momento importante del test che il ricercatore può utilizzare per raccogliere dati anagrafici, presentare al soggetto il consenso informato o il modulo informativo per il trattamento dei dati. Viene posto spesso all’inizio del test per verificare l’inclusione dei possibili partecipanti all’interno dei requisiti predefiniti;

- <d:description>, corrispondente alla descrizione del test. Questo spazio può essere utilizzato per mostrare al partecipante una prima descrizione generale del test o per

(35)

35 presentargli lo scopo della ricerca; se posto alla fine può essere utilizzato con le medesime finalità o per mostrare al soggetto le conclusioni del test e una descrizione finale del compito effettuato;

- <t:test>, tag che include il compito sperimentale da affidare al soggetto. Possono essere posti più tag t:test uno di seguito all’altro; ognuno di essi andrà ad indicare un compito sperimentale differente;

- <p:pause>, utile a presentare una pausa di tempo tra un compito e l’altro.

La presenza dei due punti nel nome del tag non è casuale, ma è dovuto all’utilizzo dei namespace. Questi vengono utilizzati per evitare conflitti tra documenti XML, nell’eventualità in cui due o più documenti contengano tag con lo stesso nome. Poiché i tag vengono riconosciuti in base al loro nome, uno script che si dovesse trovare a lavorare con due o più documenti contenenti il medesimo tag non avrebbe alcun modo di comprendere a quale di questi possa essere riferita la chiamata. All’interno del tag root, ovvero l’elemento radice del documento XML, viene quindi definito per ogni namespace un attributo “xmlns” che combina un indirizzo di rete al tag del documento. In questo modo si crea una corrispondenza univoca tra tag e attributo xmlns che rende effettivamente dissimili i tag, pur aventi medesimo nominativo, presenti nei vari documenti XML.

La successione di tag regola quindi la successione di eventi che caratterizzano e definiscono il test. Attraverso questo semplice sistema in sequenza il ricercatore è libero di definire la struttura del test in base all’ordine dei tag inseriti nel documento; quest’ultimo verrà percorso in verticale e nel medesimo ordine sarà presentato il test al partecipante.

(36)

36

3.4 Questionario

Andiamo a vedere nel dettaglio la struttura del questionario. Il codice ad esso associato è annidato sotto il tag <q:questions>. Ogni domanda viene identificata dal tag <q:question>, il quale contiene a sua volta un gruppo di tag atti a definire le regole necessarie a mostrare e gestire correttamente il quesito (vedere Figura 2). Questi sono:

- <q:text>, il quale contiene il testo della domanda;

- <q:required>, che indica se è obbligatorio che il partecipante risponda alla domanda; - <q:numbera>, ove si precisa quante risposte è possibile selezionare/indicare; - <q:openquestion>, per segnalare se la domanda sia a risposta aperta o multipla; - <q:nrq> indica il numero di risposte totali;

- <q:answer> corrisponde infine alla risposta da mostrare a schermo (ovviamente questo tag va inserito solo nel caso di una risposta multipla).

Ecco che, nel caso specifico mostrato in Figura 2, il primo blocco di codice, riguardante il primo quesito, va a specificare come la domanda “Qual è la tua conoscenza dell’italiano?” necessita obbligatoriamente di una risposta, una sola, da selezionare tra 3 scelte possibili. Pur sembrando un tantino macchinosa questa forma consente di gestire efficacemente ed in poche righe di codice tutte le possibili sfumature del quesito da sottoporre al partecipante. Il secondo blocco descrive invece una domanda aperta, “Qual è il tuo nome?”, che necessita anch’essa obbligatoriamente di una risposta. Il risultato del codice in Figura 9 è visibile in Figura 10.

(37)

37

FIGURA 9 - ESEMPIO SEZIONE QUESTIONARIO

(38)

38

3.5 Compiti sperimentali

Vediamo ora come gestire la creazione dei compiti sperimentali; all’interno del documento XML queste indicazioni sono contenuti all’interno del tag <t:test>. Come indicato all’interno del paragrafo 3.2, un compito sperimentale è generalmente composto da una serie di scene ripetuta un numero definito di volte; ogni scena contiene a sua volta uno o più elementi base. La struttura del documento XML prevede quindi la presenza del tag <s:step> per indicare una serie e <sc:screen> per la scena; quest’ultima è, per astrazione, lo spazio nello schermo in cui sono presenti gli oggetti che compongono le varie fasi del test. Si è quindi scelto di dare una prima organizzazione di questo spazio, che è stato per semplicità diviso in tre sezioni: due campi di testo, una in alto l’altra in basso (identificate dai tag <i:text1> e <i:text2>), mentre l’area al centro è stata chiamata <i:div>. Quest’ultima rappresenta il vero fulcro delle funzionalità offerte dal framework e verrà presentata in dettaglio al paragrafo 3.6. Alcune opzioni del compito più generali possono essere già indicate qui, come attributi dei tag tematicamente affini: in particolare si può indicare la scala di punteggio da utilizzare all’interno del tag <t:test>, o specificare se una data scena debba essere mostrata per uno specifico lasso di tempo o dipenda invece dall’interazione dell’utente per passare a quella successiva. Sia per il tag <s:step> che per <sc:screen> è inoltre necessario indicare l’attributo numerico di identificazione “id”. È anche possibile decidere di dividere la scena in due pannelli diversi e utilizzabili dal partecipante contemporaneamente, per compiti sperimentali ove si voglia ad esempio verificare il mantenimento dell’attenzione da parte del soggetto (come nel caso del task di attenzione divisa, che verrà illustrato al capitolo successivo).

(39)

39

3.6 Il tag <i:div>

La fase più complessa e creativa per la realizzazione, attraverso il framework qui proposto, di un test psico-cognitivo riguarda la compilazione del tag <i:div>. A questo tag è associato un solo attributo ma di grande importanza, “type”. Il suo valore infatti indica quali e quanti oggetti andranno a comporre la scena, ed in particolare, nel caso in cui debba essere mostrato più di un oggetto, bisognerà indicare ognuno di essi come in una lista. I valori che può assumere sono tre:

- text per inserire nell’area centrale una terza casella di testo oltre a <i:text1> e <i:text2>;

- intFun per fare uso di una delle funzioni integrate del framework;

- file per indicare una funzione scritta specificatamente dal ricercatore e che si intende utilizzare in quel contesto. Questa funzionalità è attivabile aggiungendo alla sessione, oltre al documento XML base che rappresenta il test, un secondo file JavaScript contenente al suo interno gli script necessari che vadano a descrivere comportamenti o oggetti non previsti dal framework. Questo per consentire la massima libertà allo sviluppatore di creare e gestire un test adatto agli scopi dello studio e che non lo costringa all’interno di configurazioni predefinite e non modificabili.

Volendo così inserire un testo aggiuntivo e due elementi presenti nelle funzioni integrate, l’attributo type dello <sc:screen> avrà valore “text, intFun, intFun”.

Basandosi sui test psico-cognitivi di maggiore uso il framework mette quindi a disposizione alcune funzioni di uso tipico, le cui caratteristiche possono essere specificate indicando alcuni parametri prestabiliti. L’obiettivo è quello non tanto di fornire lo scheletro o il modello dei test psico-cognitivi più comuni (ovvero ciò che offre Tatool), quanto più di offrire al ricercatore la possibilità di combinare nella maniera più congeniale al test che sta

(40)

40 realizzando gli elementi base comunemente utilizzati nella ricerca. Annidate all’interno del tag <i:div> saranno quindi presenti un numero di <i:option> pari al numero di oggetti che si vuole mostrare a schermo (lo stesso numero di elementi messi “in lista” nell’attributo type del <sc:screen> corrispondente). L’attributo name andrà a indicare la funzione integrata corrispondente all’oggetto che si vuole utilizzare. I possibili valori di name sono:

- grid3, che specifica la creazione di una matrice di nove celle (3x3); l’attributo cell serve per indicare quale cella deve essere colorata (con un valore zero la cella sarà scelta casualmente);

- grid8 atto a generare una matrice 8x8, utilizzata nel caso del symmetry span (la matrice viene infatti considerata come due matrice 8x4 affiancate). Qui si possono indicare gli attributi nrCells per segnalare quante celle per lato debbano essere colorate e sym per rendere la colorazione della matrice simmetrica o asimmetrica; - number per mostrare un numero a schermo. Gli attributi nr e range permettono di

scegliere rispettivamente il valore numerico da mostrare e il range inferiore e superiore tra cui scegliere il numero nel caso lo si desideri random;

- operation, la quale consente di presentare un’operazione a schermo. Qui i molteplici attributi consentono di indicare se l’operazione deve essere corretta o incorretta (e in questo caso, quale debba essere il margine di errore) e se debbano essere scelti o meno operatore e/o operandi casuali;

- phrase per mostrare a schermo una frase, indicando anche le risposte tra cui far scegliere il partecipante;

- arrow, che inserisce a schermo una freccia, di cui è possibile indicare angolo di rotazione dell’immagine e dimensione della stessa;

- buttons, per presentare al partecipante una serie di pulsanti. Questa funzione è in appoggio a quelle precedenti in quanto il suo utilizzo è principalmente legato alla

(41)

41 verifica dell’elaborazione dell’informazione, per esempio chiedendo al soggetto se la frase mostratagli con la funzione phrase sia corretta o meno.

- attDiv, funzione necessaria alla visualizzazione del task di attenzione divisa, il quale viene trattato nei dettagli nel capitolo 4;

Oltre a queste funzioni sono presenti anche supButton, utile alla presentazione di un tasto di controllo, numVerify e cellVerify. Queste ultime due funzioni vengono utilizzate per presentare al partecipante la fase di recupero della memoria, riguardo rispettivamente i numeri mostrati e l’ordine delle celle colorate della matrice.

In Figura 11 è presente un esempio di come utilizzare le funzioni qui descritte per generare un’istanza del compito secondario di un reading span. All’interno del tag <i:div> sono presenti due tag <i:option>, uno per presentare un’operazione a schermo (operation) e l’altro per mostrare due pulsanti, così da richiedere all’utente di valutare se l’operazione sia corretta o incorretta. In particolare, per l’operazione viene indicato con:

- rand se l’operazione deve essere corretta (indicandolo con il valore 1), incorretta (2) o casuale (3);

- op e randoperator se gli operandi e/o l’operatore devono essere scelti casualmente o meno. Con entrambi questi attributi settati a zero saranno entrambi scelti randomicamente, con solo op a zero saranno solo gli operandi ad essere selezionati

(42)

42 casualmente, mentre con un valore di op diverso da zero si potrà indicare in questo attributo l’operazione specifica che si intende presentare al partecipante;

- rlow e rhigh i margini nella eventuale selezione randomica degli operandi; - rerror il margine di errore da applicare per rendere incorretta l’operazione.

La presentazione dell’operazione a schermo viene quindi gestita dallo script JavaScript prima riconoscendo i tag XML dal documento (Figura 12), per poi essere effettivamente portata all’utente attraverso le funzioni visibili in Figura 13 e 14. Attraverso i comandi find() e attr() di JQuery lo script trova nel documento XML i valori associati ai vari attributi rand, op, randoperator, i quali vengono poi passati come argomenti alla funzione showOperation. Qui viene creata la casella di testo in cui mostrare l’operazione, per poi svolgere alcuni controlli rispetto ai valori dati in ingresso, configurando operandi, operatori e margini inferiore, superiore e di errore. Viene quindi chiamata la funzione operation2 la quale, oltre a definire la correttezza o meno dell’operazione, utilizza i parametri precedentemente impostati per generare l’operazione. Questa viene salvata sotto forma di una stringa (la variabile res), la quale viene passata come contenuto alla casella di testo precedentemente creata e restituita all’utente finale.

(43)

43

(44)

44

(45)

45

3.7 Salvataggio dati

Un ultimo approfondimento merita di essere fatto riguardo il salvataggio dei dati ottenuti dal monitoraggio delle azioni svolte dagli utenti. Questa è una funzionalità molto importante perché consente di studiare le reazioni e i processi cognitivi svolti dai partecipanti e permette di trovare un effettivo riscontro agli scopi dello studio, giustificando quindi la realizzazione del test psico-cognitivo stesso. La funzione saveScreen viene chiamata all’interno di ogni funzione integrata e può essere richiamata liberamente all’interno delle funzioni inserite dal ricercatore nel file .js di appoggio (Figura 15). La funzione prende in ingresso cinque argomenti:

- il tipo di oggetto mostrato a schermo (a);

- se l’interazione dell’utente è stata positiva o negativa (b); - l’elemento mostrato a schermo (c);

- la risposta esatta della richiesta di valutazione fatta all’utente (d); - la riposta effettiva data dall’utente (e).

A questi parametri vengono aggiunti:

- il numero identificativo dell’oggetto mostrato (testIndex);

- il tempo necessario all’utente per l’interazione (durStartTime, durEndTime, durationTime);

- il punteggio ottenuto dal partecipante (points).

Tutti questi dati vengono così inseriti in una stringa, tTrack2, la quale viene aggiunta come “record” ad un file .csv. Questo formato è basato su file di testo ed è generalmente utilizzato per l’importazione e l’esportazione di tabelle dati. Le informazioni relative alle azioni dell’utente possono essere quindi studiate gestendo il file .csv corrispondente attraverso un software di visualizzazione e modifica fogli elettronici come Microsoft Excel.

(46)

46 In Figura 16 e 17 vengono presentati un documento XML con due task esempio di reading span e matrix span e il corrispettivo file di salvataggio in formato csv.

(47)

47

FIGURA 16 - DOCUMENTO XML CON TASK DI ESEMPIO: READING SPAN E MATRIX SPAN

(48)

48

Capitolo 4 – Il caso di studio: test di attenzione divisa

Come già trattato nel capitolo 3, definiamo “working memory” o “memoria di lavoro” come l’abilità di un soggetto di controllare la propria attenzione per mantenere le informazioni immagazzinate in uno stato attivo e facilmente recuperabile. Questa capacità del partecipante al test viene generalmente misurata attraverso test specifici, che lo vedono impegnato in due attività da svolgere sequenzialmente, passando dall’una all’altra in serie di esercizi di lunghezza variabile. La prima attività è tipicamente un esercizio mnemonico e prevede la memorizzazione di una lista di numeri, lettere o parole, che vengono poi richiesti al soggetto al termine della serie. La seconda ha invece il compito di distrarlo, sottoponendolo alla valutazione di operazioni aritmetiche o della correttezza sintattica di una frase.

Lo studio qui proposto si sofferma invece sulla somministrazione al soggetto di un task molto simile, nella struttura duale e nell’obiettivo di analisi, ma che presenti due attività da svolgere non in sequenza, bensì contemporaneamente. Il test ha quindi l’intenzione di andare a valutare quanto il compito di elaborazione dell’informazione possa influire sull’attenzione che l’utente distribuisce al compito principale, per cercare di definire a quale soglia diventi impraticabile per il soggetto gestire correttamente entrambi i compiti assegnatigli.

Il task che viene quindi proposto al soggetto si definisce in due attività ben distinte: - Nel compito principale, detto “critico”, i partecipanti al test visualizzano sullo

schermo una catena di cerchi e una pallina nera, la quale si muove casualmente a destra o sinistra lungo la catena di cerchi. Al soggetto è richiesto di evitare che la pallina arrivi all’ultimo cerchio, colorato di rosso (a destra o a sinistra della catena): questo può essere fatto interagendo con due pulsanti presenti a schermo, i quali muovono la pallina in entrambe le direzioni.

Riferimenti

Documenti correlati

Infine recentemente, analizzando 132 carcinomi del colon-retto, caratterizzati da instabilità cromosomica (CIN), sono state identificate 11 mutazioni somatiche in quattro

il programma C del calcolo del volume del parallelepipedo modificato per verificare il rispetto delle precondizioni e visualizzazione di un messaggio di errore .... Modificare

[r]

DALLA CHIESA - OMEGNA QUALIFICA OPERATORE ELETTRICO CORSO DI ESERCITAZIONI PRATICHE CLASSE SECONDA..

Un motore asincrono trifase viene avviato manualmente e ruota in un senso definito convenzionalmente &#34;AVANTI&#34;. Dopo 5 secondi dall'avviamento inverte automaticamente il

Dopo altri 4 secondi il secondo motore si arresta automaticamente e il primo riparte, ruotando nel senso definito &#34;INDIETRO&#34;.. Sei secondi più tardi il primo motore

Un motore asincrono trifase viene avviato manualmente e si arresta automaticamente dopo 10 secondi dall'avviamento.. Si progetti l'automatismo tracciando il diagramma di lavoro

L’allievo dovrà elaborare gli schemi di collegamento ed il programma per il PLC, digitare il programma medesimo e collaudarlo in condizioni simulate, realizzare il cablaggio