La natura di una piattaforma L`analisi dettagliata di una piattaforma

La natura di una piattaforma
L'analisi dettagliata di una piattaforma senza un punto di vista e un approccio unitari rischia di
disperdersi in infiniti dettagli. Si tratta di software complessi, di dimensioni ragguardevoli,
composti da molti files diversi, di cui a volte è difficile cogliere dall'alto la struttura profonda.
Elencare i moduli di cui di solito ogni piattaforma è composta (registrazione utenti, login,
pubblicazione corsi, browsing dei contenuti, test, report, etc) non può che dare un'idea molto
limitata del suo funzionamento reale. Nel capitolo 3 affronteremo questo problema attraverso
l'esame approfondito di una scheda di analisi delle piattaforme proposta dall'Osservatorio
Tecnologico per la Scuola del MIUR; qui invece cerchiamo di capire come deve essere fatta una
piattaforma, di quali parti deve essere composta. Non sarà quindi un discorso sulle funzioni
specifiche, ma sulle strutture generali.
Potreste essere tentati di saltare questo punto, soprattutto se siete interessate/i agli usi sociali, agli
aspetti didattici più che a quelli tecnologici dell'e-learning. A nostro parere però (come abbiamo
accennato nell'introduzione) sarebbe un errore tralasciare questa parte, che anzi può fornirci
indicazioni interessanti sulla "vita" di una piattaforma. In parole povere, pensare ad una piattaforma
come una black box che fornisce funzioni è un modo per mettere tra parentesi il fatto che le
piattaforme per l'e-learning sono ambienti in evoluzione continua, che si modificano nel tempo
grazie all'interazione con gli esseri umani ma anche con altri software. Questo aspetto dinamico,
come ripetiamo più volte nel corso di questo master, non va mai perso di vista.
2.2.1 Un modello generale: DSI
Abbiamo dunque scelto di partire dall'alto, da un modello generale, che distingue in una
piattaforma (in qualsiasi piattaforma) tre elementi principali:
- Dati
- Struttura
- Interfaccia
Questa ennesima tripartizione non è che una formulazione recente di una "forma" di pensiero
molto più antica che separa le cose, la loro organizzazione interna e il rapporto con l'ambiente
esterno. Platone distingueva tra materia, forma e apparenza (doxa), mentre i retori latini
distinguevano inventio (la scelta degli argomenti), dispositio (la loro organizzazione) ed elocutio (il
discorso vero e proprio). E si potrebbe continuare con la distinzione nella linguistica odierna tra
semantica, sintassi e pragmatica, in psicologia tra memoria, pensiero e linguaggio, nelle scienze
cognitive tra conoscenza dichiarativa, conoscenza procedurale e conoscenza comunicativa; e così
via.
In informatica, questa tripartizione viene tradizionalmente espressa con termini diversi, cioè
come "input / elaborazione / output"; ma si tratta di una versione semplificata che fa riferimento ad
un modello di programmazione oggi superato.
Innanzitutto definiamo i tre termini nel nostro specifico settore di interesse, cioè relativamente ad
una piattaforma per l'e-learning.
I dati sono tutte le informazioni conservate dalla piattaforma (profili degli utenti, risultati delle
esercitazioni, contenuti dei corsi, parametri di configurazione, etc). Potrebbero, nel caso più
semplice, essere una serie di semplici files di testo in cui i dati numerici o verbali sono separati da
qualche carattere speciale, come #. Questa modalità è piuttosto facile da implementare, ma presenta
dei rischi di perdita di dati, oltre che delle limitazioni (per esempio, l'accesso in scrittura ad un file
da parte di più moduli in contemporanea è abbastanza difficoltoso da gestire).
Tipicamente, però, questa parte è in realtà affidata ad un sistema esterno specializzato, un Data
Base Management System, che dispone già di funzioni di ottimizzazione, di backup, di
indicizzazione, di ricerca etc., e rende le funzioni di accesso fisico ai files di dati trasparenti (cioè
invisibili) per la piattaforma. Questo significa che la piattaforma “non sa” come realmente i dati
vengono archiviati: se localmente sulla stessa macchina, o su macchine dedicate, o in remoto, etc.
L'unica cosa che è richiesta è che la piattaforma possa avere accesso al database, e che sappia
utilizzare un linguaggio di comunicazione con esso (di solito, SQL: Structured Query Language).
La struttura (o logica) della piattaforma è il motore, l'insieme delle funzioni che presiedono al
reperimento dei dati (unità didattiche), alla loro formattazione e al loro invio all'Interfaccia, ma
anche, nella direzione inversa, alla raccolta di informazioni sullo studente e alla costruzione del suo
profilo e del suo portfolio individuale. La struttura è la relazione tra i dati, statica come dinamica.
Invece di struttura potremmo parlare di modello, facendo riferimento al fatto che di solito
l'organizzazione delle funzioni è fatta sulla base di una metafora, di una situazione che si vuole
simulare. Nel caso dell'e-learning, ad esempio, durante la progettazione della piattaforma si fa
riferimento ad una struttura formativa reale, con i suoi attori (studenti, docenti, etc), i suoi spazi
(classi, segreteria, ambienti comuni) e le sue funzioni (iscrizione, erogazione delle lezioni, esami). I
vari elementi dell'applicazione sono perciò costruiti avendo in mente gli elementi della struttura
reale, di cui essi costituiscono un modello.
L'interfaccia, infine, è costituita da tutti i punti di contatto tra la piattaforma e l'ambiente
esterno. Di questo ambiente fanno parte prima di tutto gli utenti umani (studenti, docenti,
amministratori): in pratica, l'interfaccia è l'insieme di schermate (composte da riquadri di testo,
bottoni, icone etc.) che permettono all'umano di comunicare i suoi comandi alla piattaforma e di
comprenderne le risposte. Queste schermate, che vengono usate più volte, possono essere archiviate
sotto forma di templates HTML, cioè di pagine-modello che di volta in volta vengono richiamate e
riempite con le informazioni del caso. Evidentemente il problema dell'usabilità e dell'accessibilità di
una piattaforma ha a che vedere fondamentalmente con la sua interfaccia.
Più in generale, però, l'ambiente esterno comprende anche altre applicazioni con cui la
piattaforma dovrà interfacciarsi, come le piattaforme dalle quali e verso le quali scambiare dati.1
E all'interno della piattaforma stessa possono essere presenti super-moduli talmente complessi e
autonomi da richiedere una vera e propria interfaccia per interagire con essi. L'interfaccia
comprende quindi le classiche funzioni di input/ouput ma è un concetto molto potente: implica la
definizione - e il rispetto - della sintassi di un linguaggio comune (un protocollo di scambio dati) tra
gli elementi che si vogliono interfacciare, e la presenza, o almeno la disponibilità, di uno strumento
di verifica di questa sintassi. E' facile vedere quanti problemi possono nascondersi in questo:
difficoltà ad accordarsi su uno standard, possibili ambiguità di interpretazione, introduzione di
nuovi elementi non previsti, etc.
Altre rappresentazioni non verbali
Non sempre il linguaggio verbale è il miglior mezzo per definire e comunicare i concetti
complessi. Se volessimo rappresentare graficamente una piattaforma dal punto di vista del modello
sopra definito verbalmente, saremmo costretti - come sempre succede quando si abbandona il
livello verbale per quello iconico, più suggestivo - ad aggiungere alcune informazioni sul rapporto
tra gli elementi: la loro posizione relativa, i rapporti di gerarchia o di inclusione, etc. L'uso di colori,
di frecce, di etichette può aiutarci in quest'operazione.
Potremmo partire da un semplice grafo triangolare, che fa emergere l'equilibrio e la pari
importanza di ognuno degli elementi; equilibrio che la versione verbale necessariamente nasconde
con la necessità di mettere in sequenza le definizioni relative:
1Per esempio, SCORM è uno degli standard che definisce la maniera in cui piattaforme devono esportare ed importare i
corsi per poterli riusare al di fuori dell'ambito in cui sono stati prodotti. In questo senso esteso, SCORM è uno
standard di interfaccia. Vedi http://www.adlnet.org/index.cfm?fuseaction=scormabt
[DSI_1.gif]
Potremmo però voler evidenziare che i dati non hanno contatto diretto con l'interfaccia, ma solo
con la struttura, e rivedere il nostro grafico aggiungendo quest'informazione tramite l'uso accorto
dei legami ed il verso delle frecce:
[DSI_1b.gif ]
Ma potremmo invece puntare a sottolineare la continuità e il fatto che la piattaforma è immersa in
un ambiente esterno, e immaginare i tre elementi come spazi concentrici, con i dati che
costituiscono il nucleo più interno e l'interfaccia che costituisce lo strato più esterno:
[DSI_2.gif]
O invece, abbandonando la simmetria centrale, sottolineare lo scambio continuo e profondo tra
dati e struttura, mentre l'interfaccia viene vista come una specie di "plasma" nel quale gli altri due
elementi sono immersi, quasi a intendere che anche lo scambio tra dati e struttura non può avvenire
senza un qualche tipo di interfaccia per così dire "interna":
[DSI_3.gif]
Sono solo alcuni tra gli esempi possibili, che hanno qui l'obiettivo di stimolarvi a produrre a
vostra volta delle rappresentazioni (vedi sotto le esercitazioni).
In ogni caso, le riflessioni scaturite dalle rappresentazioni non verbali ci portano a ragionare
meglio sul rapporto tra le parti del nostro modello.
Applicazione del modello DSI
Una buona regola delle applicazioni web - ma in realtà applicabile a qualsiasi software - vuole
che interfaccia, logica e dati siano separati e indipendenti non solo logicamente (cioè che siano
facilmente distinguibili), ma il più possibile fisicamente (cioè che siano realmente distinti).
L'autonomia è un requisito essenziale in un sistema complesso come una piattaforma per l'elearning, per permettere da un lato le operazioni di manutenzione (backup quotidiano o
straordinario, controllo di coerenza etc) e dall'altro l'evoluzione della struttura indipendentemente
dai dati.
Da un punto di vista informatico la separazione tra dati, struttura e interfaccia significa che è
possibile intervenire su ognuna di questa parti senza andare a toccare le altre. Per esempio, si può
modificare l'interfaccia in base alle necessità espresse dal cliente o per aumentarne l'accessibilità
semplicemente rispettando alcune raccomandazioni standard2 nei templates delle pagine HTML
utilizzate; oppure, è possibile effettuare una manutenzione della struttura aggiungendo nuove
funzioni o riscrivendole in maniera più efficiente senza riprogettare l'interfaccia; o infine, si può
sostituire in blocco tutta la sezione dati lasciando invariato il resto, per esempio per avere una nuova
installazione "pulita".
Vediamo meglio come questo sia possibile in dettaglio. Immaginiamo di descrivere un modulo di
una piattaforma generica X. L'arte della progettazione del software ha da tempo adottato una logica
modulare, che consiste nel suddividere tutta l'applicazione in pezzetti, in modo da consentire a più
programmatori di lavorare in équipe. Intanto bisogna dire che il concetto di modulo è abbastanza
vago: si intende di solito per modulo un'applicazione dedicata ad una funzione principale e
composta da uno o più files. Può quindi trattarsi di un unico file o di un blocco di files piuttosto
consistente numericamente e la cui organizzazione è complessa.
2E' il caso delle linee guida per l'accessibilità su web (WCAG 2.0) del consorzio W3C
(http://www.w3c.it/traduzioni/WCAG20-WD20041119.html), o della sezione 508 dell'Americans with Disabilities
Act (http://www.section508.gov/index.cfm?FuseAction=Content&ID=12) che corrisponde alla nostra legge n.4 del
9/1/2004 e regolamenti attuativi (http://www.innovazione.gov.it/ita/normativa/normativa_accessibilita.shtml)
Per esempio, il modulo di Report di Classe per il Tutor (RCT) deve fornire i dati relativi alle
interazioni degli studenti di una classe, riportati in una tabella e ordinati secondo una o più chiavi.
Poiché si tratta di un'applicazione web, che utilizza il protocollo HTTP per interagire, tutto dovrà
avvenire secondo il modello client-server che non prevede un'interazione continua, ma una serie di
scambi tra client (il software che richiede un'elaborazione) e server (il software che la fornisce).
Il modulo RCT riceve i dati dal browser del tutor, esplicitamente (attraverso un form HTML che
richiede al tutor di inserire manualmente la classe e il periodo per il quale desidera il report) oppure
implicitamente (attraverso l'uso dei meccanismi di salvataggio e passaggio dei dati attraverso le
transazioni client-server, come i cookies e le sessioni).
Sulla base di questi dati, utilizzati come chiavi di ricerca, RCT accede al database e richiede le
informazioni relative. In caso di successo della richiesta (query), le informazioni vengono
eventualmente filtrate, ordinate e poi assemblate in forma leggibile per il tutor, per esempio come
una tabella a doppia entrata, o come un grafico a barre, come una mappa concettuale o infine come
un riassunto verbale.
Infine tutte le informazioni vengono formattate in HTML dall'interfaccia e inviate al browser del
tutor per la lettura.
[FIG. 4]
L'architettura di una piattaforma prevede di solito che le funzioni relative a dati, struttura e
interfaccia all'interno di ogni modulo siano ben distinte, cioè che ad esempio la funzione che
recupera i dati dal Database non si preoccupi della loro elaborazione né della loro formattazione in
HTML. Questo aiuta ovviamente la lettura del codice e la sua manutenzione da parte dei
programmatori3 ma è piuttosto pesante in termini di dimensioni generali, perché molta parte del
codice si ripete in ogni modulo.4
Per esempio, il modulo RST (Report dello Studente per il Tutor) che è deputato a mostrare al
tutor un report delle informazioni dettagliate relative però non alla classe ma al singolo studente,
condivide con RCT una larga parte del codice: l'accesso al database, la generazione della tabella;
naturalmente il modulo RSS (Report dello Studente per lo Studente) è quasi identico a RST, e così
via.
Il passo successivo è quello di raggruppare tutte le funzioni relative all'accesso al database in un
unico file (o libreria di funzioni) per permettere a tutti i moduli di utilizzarli (LAD). Lo stesso vale
per le funzioni relative alla costruzione dinamica dell'interfaccia sulla base delle informazioni
3La questione della documentazione interna di una piattaforma è spesso cruciale per la sua vita. Ma anche la struttura
modulare del codice è altrettanto importante quando si pensa che una piattaforma è un software complesso che può
facilmente raggiungere le decine di migliaia di righe di codice, e che spesso programmatori diversi mettono le mani
sullo stesso codice, sia in sequenza che contemporaneamente.
4La ripetizione sistematica del codice non è mai una buona cosa, perché tra l'altro costringe - nel caso si voglia o si
debba modificare quel codice - a intervenire in un gran numero di punti diversi.
elaborate, che andranno a far parte di una libreria separata (LCI).
In questo modo all'interno del modulo RCT restano solo le parti di codice relative
all'elaborazione dei dati, più le "chiamate" delle funzioni necessarie per recuperare i dati dal
database e per presentarle all'utente dalle librerie LAD e LCI. Come avrete notato, così facendo
all'interno della stessa struttura abbiamo reduplicato il modello DSI.
[FIG. 4b]
Il modello DSI in prospettiva temporale
Questa tripartizione non va però intesa come una suddivisione statica. Innanzitutto perché accade
che nel corso della vita della piattaforma alcune informazione che erano inserite nel codice
(struttura) vengano isolate, estratte e reificate (dati). Un caso tipico è quello della cosiddetta
parametrizzazione del codice: per rendere più potente una funzione, cioè più generale e applicabile
a molti casi diversi, si trasformano i dati che erano inizialmente inseriti direttamente nella funzione
come quantità fisse (costanti) in valori che possono venir passati dall'esterno della funzione
(variabili). Procedendo in questo processo, alcuni dati fondamentali vengono scritti in un file di
configurazione oppure inseriti nel database.5
In secondo luogo, però, dobbiamo tener presente che non tutti i dati sono presenti fin dall'inizio
nel database, ma anzi la maggior parte viene inserita man mano che la piattaforma viene utilizzata.
Allo stesso modo, l'interfaccia si modifica durante l'uso, sia sulla base di scelte esplicite degli utenti,
sia sulla base di automatismi interni. Per esempio, l'interfaccia di uno studente appena iscritto e
quella di uno studente che ha completato più corsi hanno necessariamente un aspetto diverso; in
alcune piattaforme è inoltre possibile per gli utenti personalizzare l'interfaccia in termini di
dimensioni dei testi, di tipo di carattere usato, sulla base delle proprie preferenze o delle proprie
capacità sensoriali.
Per capire meglio questo punto, possiamo pensare all’apprendimento come ad un processo in cui
un soggetto acquisisce il controllo di un ambiente, interfacciandosi con esso, modificando le proprie
conoscenze (i propri dati) e quindi ristrutturando i propri processi fino a riconfigurare la propria
interfaccia con l'ambiente. E' un processo che ha due fasi e due direzioni: nella prima, le
informazioni vengono assunte dall'ambiente attraverso l'interfaccia, organizzati e strutturati fino a
diventare parte della propria base di dati; nella seconda, quei dati diventano punto di partenza per
5Lo stesso tipo di "decantazione" che nel 1976 portò Wozniac a inserire il BASIC, che era essenzialmente un'interfaccia
esterna, su cassetta, all'interno della ROM del suo Apple II. E si potrebbe continuare con gli esempi.
modificare le proprie strutture di pensiero/azione e quindi la propria maniera di interagire con
l'ambiente, fino a modificare l'ambiente stesso.
Si tratta di un punto di vista analogo a quello assunto del capitolo 3, che ci permetterà, tra l'altro,
di affrontare la classificazione delle piattaforme. In quella sede questa visione "attiva"
dell'apprendimento (come modifica dell'ambiente e non solo del soggetto) ci servirà per definire un
ambiente formativo, inteso come ambiente progettato per favorire questo processo di acquisizione
del controllo da parte del soggetto umano.
In questo caso, però, "soggetto che apprende" (il centro attivo della nostra analisi) non è l'utente
umano, ma è la macchina digitale, mentre "ambiente" è costituito da tutti i canali che forniscono e
ricevono dati da e verso la macchina, compresi quindi gli utenti umani.
Per sfuggire ad una tendenza che tende a vedere le piattaforma digitali come semplici macchine
fisiche, che reiterano le stesse funzioni per sempre, forzeremo il nostro punto di vista verso un
approccio per così dire "naturalistico".
Un ambiente di apprendimento digitale va visto in qualche modo come un organismo che una
volta progettato e realizzato inizia la propria vita autonoma, e da quel momento evolve, si espande,
muta.6 E' un processo naturale legato all'uso stesso della piattaforma: c'è uno scambio di dati con gli
utenti (autori e studenti) che arricchisce, ad esempio, il catalogo dei corsi pubblicati da un lato e
l'archivio delle prestazioni degli studenti dall'altro. Ma ci sono momenti critici, fasi di “crescita”
accelerata, quando i programmatori procedono al debug del codice, o aggiungono moduli nuovi, o
addirittura ristrutturano la piattaforma "live", durante il suo stesso funzionamento.
La piattaforma inizia la sua attività pressoché vuota, senza dati e senza utenti. Man mano che si
procede nel suo uso essa acquisisce unità didattiche, moduli, interi corsi e risorse di vario tipo, e
insieme a questi i dati degli utenti (registrazioni di profili degli studenti ma non solo). Sulla base di
questi dati, e delle richieste dell'ambiente (gli utenti) riconfigura la propria interfaccia. E
lentamente, man mano che viene usata - e che emergono bugs, giungono richieste di funzioni
nuove, o semplicemente si afferma nel mondo esterno una nuova concezione di e-learning ristruttura anche il proprio codice, la propria struttura.
Un movimento dall'interno all'esterno, di acquisizione di dati dall'ambiente esterno, di ristrutturazione interna e infine di modifica dell'interfaccia verso l'utente; in qualche modo, per
estensione, di “apprendimento” da parte della macchina, cioè di riconfigurazione del rapporto tra
dati, struttura e interfaccia.
6La differenza concettuale tra termini come "evoluzione" e "mutazione" non è piccola. Potrebbe sembrare azzardato
parlare di evoluzione - che implica in qualche modo una direzione, un giudizio di valore - a proposito di una
macchina; ma non va dimenticato che tra i motori della modifica ci sono le richieste di un soggetto umano.