9
Sintesi
La grande diffusione del mobile computing, ossia dell’impiego della tecnologia mentre si è in
movimento, e l’emergere di dispositivi mobili avanzati ha generato molte opportunità di
business. Gli utenti in mobilità a fine anni '90 usavano principalmente i telefoni mobili per
effettuare e ricevere chiamate ed i palmari come agende elettroniche. Oggigiorno, l’utente
business o consumer può usare un unico dispositivo mobile per diversi scopi: musica,
fotografia, multimedia in genere, web, mail, navigazione stradale ed altre applicazioni basate
sulla posizione quali social networking, e così via. A livello business, si sta sviluppando una
nuova disciplina, Mobile Information Systems, che studia l’interazione dell’utente in mobilità
con i sistemi informativi aziendali.
Da un punto di vista puramente tecnico, non è difficile stipare un numero crescente di
funzioni in un dispositivo mobile in grado di elaborare software. Il problema è che occorre
farlo mantenendo una certa semplicità di impiego ( usabilità ). Ad esempio, per un utente
business non è pensabile accedere ad un repository aziendale interagendo con il terminale
mobile in modo simile a come si interagisce con un personal computer di tipo desktop.
Similmente, per un utente consumer in guida non è pensabile adoperare un servizio di
informazione sul traffico stradale che richieda la compilazione di campi “partenza” e
“destinazione”.
Dal punto di vista del progettista, è importante quindi modellare l’interazione utente-
dispositivo e renderla più naturale trasferendo nel software una certa capacità di scegliere
autonomamente, ad esempio in base al contesto di utilizzo di un servizio. In tal senso, la
modellazione di tale interazione, secondo una metodologia standardizzata, non prescinde dalla
conoscenza dei paradigmi di automazione del software. A tale scopo, nella presente tesi sono
stati studiati ed applicati il linguaggio di modellazione UML e la disciplina dell’autonomic
computing, nella modellazione e semplificazione dell’uso di servizi informativi basati su
terminali mobili.
Gli obiettivi che ci siamo prefissati nello svolgimento del lavoro si possono riassumere in
quattro punti fondamentali:
lo studio della disciplina emergente dell’autonomic computing;
la ricerca di software esistenti per l’utente in mobilità;
la modellazione di scenari per tali applicazioni;
10
la ricerca di possibili miglioramenti per automatizzare l’interazione utente-sistema, in
relazione alle potenzialità dell’autonomic computing.
Più in particolare, la disciplina dell’autonomic computing è sorta da IBM nel 2001, ispirandosi
alla connotazione biologica del sistema nervoso autonomo. Esso, infatti, è il più sofisticato
esempio di comportamento autonomo che esiste in natura al giorno d’oggi. Il sistema nervoso
controlla le funzioni vitali quali per esempio il battito cardiaco, la circolazione del sangue, la
produzione di ormoni, ecc… e mantiene l’equilibrio interno senza l’intervento e la
consapevolezza umana.
Il termine Autonomic Computing indica una vasta ed alquanto complicata gerarchia di sistemi
naturali che si auto-governano, molti dei quali sono costituiti da una miriade di componenti
interagenti ed anch’essi auto-governati. L’autonomic computing è in grado di semplificare la
gestione di un servizio per l’utente, rendendo le applicazioni in grado di condurre compiti con
maggiore autonomia ed adeguandosi automaticamente alle condizioni mutevoli.
Le caratteristiche principali di un sistema autonomo, e quindi di tutti gli elementi che lo
compongono, sono:
Self-management: capacità di mantenere e modificare il proprio stato a fronte di esigenze
e cambiamenti sia interni ( componenti, carichi di lavoro, ecc… ) che esterni ( diverse
richieste da parte degli utenti ).
Self-configuration: capacità di adattarsi ai veloci cambiamenti dell’ambiente esterno.
Quando un componente viene introdotto esso determina autonomamente la propria
configurazione ottimale in modo da facilitare l’integrazione con gli altri elementi del
sistema.
Self-optimization: capacità che permette di ottenere un’efficienza operativa attraverso la
regolazione delle risorse e del carico di lavoro per massimizzare l’utilizzo
dell’infrastruttura IT e, contemporaneamente, per mantenere la flessibilità del sistema per
soddisfare tutte le necessità degli utenti.
Self-healing: capacità di rilevare, di diagnosticare e di agire per prevenire la distruzione
dei sistemi di autonomic computing e per garantire l’affidabilità e la disponibilità del
sistema.
Self-protection: capacità che permette di mettere al sicuro informazioni e risorse
anticipando, rilevando, identificando e proteggendo attivamente il sistema contro attacchi
11
nocivi e non. Un sistema autonomo deve scoprire, identificare e proteggersi contro vari
tipi di attacchi per mantenere la propria sicurezza, affidabilità ed integrità globale.
Self-awareness: dettagliata conoscenza che un sistema autonomo ha di sé stesso per auto-
governarsi, ovvero la conoscenza dei propri componenti e del loro comportamento, del
proprio stato corrente e di tutte le connessioni con altri elementi.
Context-awareness: consapevolezza dell’ambiente di esecuzione e del contesto in cui
esso viene eseguito. Questo significa che un sistema deve essere pronto a reagire in caso di
cambiamenti dell’ambiente.
Openness: capacità di operare in ambienti eterogenei nei quali il numero e la tipologia di
componenti non è stabilita a priori; di conseguenza ogni autonomic system deve essere
pronto a far fronte a varie situazioni non conosciute al momento della progettazione.
Quindi un sistema di autonomic computing deve possedere degli standard aperti e
flessibili.
Anticipatory Behaviour: capacità di prevedere ed anticipare le situazioni critiche
effettuando previsioni sulle risorse necessarie in futuro.
Esistono vari livelli di automazione di un sistema IT. Ogni livello descrive una fase attraverso
la quale una comune infrastruttura IT può diventare un autonomic system. Partendo dal livello
più basso, in cui un team di persone altamente specializzate si occupa della gestione delle
risorse, si arriva fino ad un ultimo livello in cui poche persone si occupano unicamente della
definizione degli obiettivi globali che l’autonomic system stesso soddisferà. I livelli di
automazione sono: basic, managed, predictive, adaptive, autonomic.
I sistemi autonomi si possono vedere come una collezione interattiva di “autonomic
elements”, cioè di piccoli sistemi individuali che contengono risorse ed erogano servizi alle
persone ed agli altri elementi autonomici. Questi elementi autonomi gestiscono il proprio
comportamento interno e le loro relazioni con gli altri componenti in accordo con le politiche
stabilite dalle persone o dagli altri elementi.
Un elemento di raccordo tra l’autonomic computing e la possibilità di accedere ad un servizio
in mobilità è la Seamless Mobility, un’iniziativa lanciata da Motorola nel 2005. Essa si
riferisce ad un insieme di soluzioni che forniscono congiuntamente l’esperienza di essere
connessi in mobilità ad un servizio remoto, in modo fluido ed indipendente dal dispositivo e
dalla propria posizione. La seamless mobility è un paradigma di interazione di ultima
generazione che punta all’integrazione tra le applicazioni ed alla fruizione multimodale di
essi.
12
Nella presente tesi, dopo lo studio dell’autonomic computing, sono stati presi in
considerazione i principali dispositivi in grado di fornire servizi in mobilità:
Cellulare: un apparecchio radio trasmittente e ricevente per la comunicazione in
radiotelefonia.
PDA ( Personal Digital Assistant ): un computer di dimensioni contenute, tali da
essere portato sul palmo di una mano, dotato tipicamente di schermo sensibile al tocco.
Smartphone: un dispositivo portatile di nuova generazione con funzionalità di gestione
di dati personali, di telefono, di ambiente per applicazioni software di vario tipo
connesse in rete. Può derivare dall'evoluzione di un PDA a cui si aggiungono funzioni
di telefono o, viceversa, di un telefono mobile a cui si aggiungono funzioni di PDA.
Di particolare rilievo in questa categoria è l’Iphone, uno smartphone di Apple caratterizzato da
paradigmi di interazione fortemente innovativi.
Dal punto di vista metodologico, la progettazione di pattern di interazione uomo-dispositivo si
basa sullo studio di scenari. Uno scenario è una descrizione in forma narrativa di una
situazione concreta di svolgimento delle attività, rappresenta delle situazioni reali ed esprime
in maniera dettagliata una situazione d’uso dei sistemi documentando le azioni eseguite
dall’utente e le interazioni sistema-utente. Gli scenari individuano episodi o sequenze di
attività come in una storia, forniscono il contesto nel quale le attività sono portate a termine,
dando la percezione di quali sono i bisogni, le difficoltà e le motivazioni che le persone hanno
in particolari contesti. Inoltre gli scenari consentono di raccogliere i requisiti, cioè le
caratteristiche che un sistema deve possedere per soddisfare le esigenze degli utenti.
Nella presente tesi sono stati studiati scenari basati sui seguenti servizi:
Tracking sui voli: servizio che permette di monitorare uno o più voli e di ricevere via
mail aggiornamenti automatici sulla loro situazione. Le informazioni che l’utente
riceve sono quelle che generalmente compaiono sui monitor informativi situati negli
aeroporti. Ad esempio: check-in aperto, imbarco, volo partito, volo atterrato, volo in
avvicinamento, volo cancellato, volo in ritardo, volo in arrivo, ecc…. Le mail vengono
inviate con la stessa tempistica con cui le informazioni vengono visualizzate sui
monitor aeroportuali.
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto e auto-protezione.
13
Tracking sui treni: un servizio disponibile su alcuni siti che gestiscono i treni che
offre agli utenti la possibilità di monitorare la condizione del treno di interesse ( dove
si trova, a che ora è partito, quando è previsto l’arrivo, se porta ritardo, ecc… ).
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto ed auto-protezione.
Citysense: un software di intelligenza artificiale che cerca, individua e suggerisce
all’utilizzatore dei locali dove trascorrere la serata, dove andare per il pranzo, quali per
esempio bar, pub, discoteche, ristoranti, pizzerie, club, ecc… ed inoltre descrive anche
lo stato dei luoghi selezionati. In questo modo l’utente può sapere in qualsiasi
momento se quel determinato locale è affollato oppure no, se vi è qualche posto libero
nel parcheggio del locale, ecc....
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto, auto-ottimizzazione ed openness .
Mappe su dispositivi mobili: un servizio basato su tecnologia GPS che, attraverso le
informazioni inviate dai satelliti, è in grado di identificare la posizione di una persona
ed altre informazioni da essa richieste. Un utente può richiedere indicazioni stradali da
e verso qualsiasi luogo e può scegliere anche tra varie alternative possibili.
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto ed auto-ottimizzazione.
Trafficsense: un servizio che monitorizza e tiene sotto controllo le condizioni delle
strade e del traffico veicolare informando gli utenti se vi sono incidenti, buche, dossi,
lavori in corso o se le strade sono affollate e rumorose.
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto, auto-ottimizzazione ed openness.
EbaySempre: un servizio di messaggistica informativa sulle aste online di eBay che
avvisa l’utente se qualcuno supera la sua offerta, dà informazioni riguardo la fine
dell’ asta a cui sta partecipando o che ha bandito e monitora anche le sue vendite.
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto, auto-protezione ed openness.
14
Citizen Journalism: una forma di giornalismo che vede la partecipazione attiva dei
lettori, grazie alla natura interattiva dei nuovi media ed alla possibilità di
collaborazione tra moltitudini offerta da internet.
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione,auto-
consapevolezza, consapevolezza del contesto, auto-protezione ed openness.
Smart Doorplates: una porta semitrasparente che mostra la situazione di lavoro
dell’impiegato all’interno dell’ufficio. I doorplate vengono utilizzati per avere
informazioni riguardo alla posizione ed allo stato degli impiegati. Essi mostrano se una
determinata persona è all’interno della stanza, se è impegnata in riunioni o telefonate
ed in caso di assenza dell’impiegato, sono anche in grado di svolgere dei semplici
compiti di segreteria, quali accettare ed inoltrare messaggi, avvisare i visitatori della
posizione della persona cercata e dell’orario in cui ritornerà.
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto, auto-configurazione, auto-protezione ed
auto-guarigione.
Sixthsense: una forma di mobile computing applicata ad oggetti e persone che serve
per identificarle, per visualizzare le loro posizioni e per rilevare la presenza di
inferenze nell’associazione e nell’interazione tra queste entità. Si basa sull’utilizzo
della tecnologia RFID ( Radio Frequency Identification ).
Aspetti di autonomic computing applicabili a questi servizi sono: auto-gestione, auto-
consapevolezza, consapevolezza del contesto ed auto-configurazione.
Queste applicazioni sono state raggruppate per analogia di utilizzo e di interazione uomo-
macchina in modo tale che per ogni gruppo può essere scelto un rappresentante da modellare.
I gruppi ed i rappresentanti dedotti sono i seguenti:
GRUPPI RAPPRESENTANTI
Tracking sui voli/tracking sui treni Tracking sui voli
Citysense/mappe su dispositivi mobili/trafficsense Mappe su dispositivi mobili
EbaySempre/citizen journalism EbaySempre
Smart doorplates/sixthsense Smart doorplates
15
Per ogni rappresentante, l’interazione è stata modellata utilizzando il linguaggio UML
( Unified Modeling Language ), un linguaggio di modellazione visuale, standard, aperto ed
estensibile. Viene utilizzato per specificare, analizzare, costruire e documentare dei modelli di
un sistema software. Un modello UML è un insieme di elementi e diagrammi correlati,
ciascuno dei quali descrive un particolare aspetto o una particolare porzione del sistema
modellato.
Per ogni scenario sono stati realizzati i seguenti diagrammi:
Diagramma dei casi d’uso: mostra le relazioni tra gli attori ed i casi d’uso all’interno
di un sistema. Un attore è un ruolo che qualche entità esterna interpreta in qualche
contesto quando interagisce direttamente con il sistema. L’attore quindi è colui che
partecipa ad un caso d’uso. Un caso d’uso è “una specifica di sequenze di azioni,
incluse sequenze alternative e di errore, che un sistema, sottosistema o classe possono
eseguire interagendo con attori esterni”.
Quindi il diagramma dei casi d’uso serve per identificare il confine del sistema che si
sta analizzando, per trovare gli attori e per trovare i casi d’uso.
Casi d’uso in dettaglio: mostrano un elenco dettagliato delle operazioni che l’attore
deve svolgere durante il caso d’uso per interagire con il sistema. Devono anche essere
definiti, quando necessario, i flussi alternativi.
Diagrammi di sequenza: mostrano le interazioni tra oggetti organizzate in sequenza
temporale. Essi evidenziano nel particolare gli oggetti che partecipano in
un’interazione ed i messaggi che si scambiano. Quindi questi diagrammi visualizzano
la sequenza, ordinata temporalmente, di messaggi scambiati tra linee di vita. Una linea
di vita rappresenta un partecipante in un’interazione. Un messaggio rappresenta una
specifica di comunicazione tra due linee di vita in un’interazione. La comunicazione
può essere: un’invocazione di un’operazione, la creazione o distruzione di un’istanza,
l’invio di un segnale.
Per rappresentare questi diagrammi è stato utilizzato il software Mega, una piattaforma che
consente di modellare, documentare, analizzare, comunicare ed ottimizzare l'organizzazione
dei processi.