73029 - SISTEMI MOBILI M

Anno Accademico 2015/2016

  • Docente: Paolo Bellavista
  • Crediti formativi: 8
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Bologna
  • Corso: Laurea Magistrale in Ingegneria informatica (cod. 0937)

Conoscenze e abilità da conseguire

Conoscenza dei modelli e delle soluzioni alla base della realizzazione dei sistemi mobili, dei servizi erogati su di essi, e dei sistemi di supporto necessari allo sviluppo e alla gestione runtime di tali servizi.

Contenuti

Il corso intende fornire conoscenze metodologiche, modellistiche e implementative avanzate per la progettazione, la realizzazione e la valutazione runtime di sistemi mobili, di servizi mobili, e di supporti middleware per la gestione efficiente di tali servizi mobili.

 

Propedeuticità: nessuna (ma i contenuti dei “vecchi” corsi di reti di calcolatori - Reti di Calcolatori T e anche, molto parz, Reti di Calcolatori M - e Tecnologie Web T possono essere sicuramente utili)

 

Programma del corso:

-         Introduzione ai sistemi di comunicazione wireless: modelli di propagazione; modelli di fading; panoramica sulle diverse famiglie di comunicazione wireless

o       IEEE 802.11: caratteristiche generali; da CSMA/CD su Ethernet a CSMA/CA; problemi di hidden ed exposed terminal; MACA; configurazione con infrastruttura e ad hoc;

o       IEEE 802.16;

o       IEEE 802.20;

o       IEEE 802.11 per municipal mesh.

o       Reti cellulari e handoff: architettura GSM; handoff con MSC comune; handoff con MSC differenti; classificazione handoff

o       Bluetooth: stack protocollare; possibili topologie; servizio di discovery; scatternet e comunicazioni multi-hop; stack software per programmazione Java Bluetooth

o       Cenni di ZigBee: caratteristiche, architettura, possibili topologie.

-         Mobile Ad Hoc Network (MANET): definizione e campi applicativi; routing in MANET, protocolli reattivi/proattivi/geografici/ibridi; Dynamic Source Routing (DSR); Ad-hoc On Demand Distance Vector (AODV); Greedy Perimeter Stateless Routing (GPSR); parentesi su clustering; LEACH, HEED, REDMAN

-         Mobilità e gestione handoff: introduzione e definizioni

-         Location update e location search. Soluzione Mobile IP: caratteristiche, architettura, protocollo, problemi. Hierarchical Mobile IPv6 (HMIPv6). Split connection e I-TCP.

-         Sistemi di posizionamento: motivazioni; classificazione (fisico/simbolico, centralizzato/distribuito, assoluto/relativo, accuratezza, precisione, costo e limiti). Tecniche di base: lateration, time difference of arrival, angolazione, scene analysis, prossimità.

o       Sistemi di posizionamento per ad-hoc network

o       Sistemi di posizionamento con hardware addizionale. GPS: caratteristiche, limiti, GPS differenziale. Active Badge, AHLoS

o       Sistemi di posizionamento senza hardware addizionale: basati su Bluetooth, PlaceLab, RADAR, Ekahau, Sensor Fusion, Universal Location Framework, JSR-179

-         Piattaforme di sviluppo per sistemi mobili smart phone: panoramica, concetti generali, definizioni; confronto fra J2ME, .NET CF, FlashLite, Android

-         Stack J2ME: architettura generale e problema di frammentazione; configurazioni e profili; modello applicazioni MIDP; esempi ed esercizi; cenni su modello di sicurezza. Esercitazione proposta su J2ME

-         Simulazione di reti e di protocolli a vari livelli, fino a quello applicativo. Esercitazione guidata su simulatore Qualnet.

-         Android: introduzione; architettura; SO kernel layer; power management e wakelock; librerie native; Dalvik VM; application framework; core application; modello applicazioni; ciclo di vita di activity; intent e intent filter; modello di threading; esempi ed esercizi. Esercitazione proposta su Android.

-         Panoramica su iOS: architettura; modello di multi-tasking; piccoli esempi di programmazione; applicazioni native/Web su iOS (cenni di HTML5); unlocking e jailbreaking

-         Mobile middleware: definizione, motivazioni, vantaggi. Rilevanza di identificazione di principi e pattern. Principi Internet: principio end-to-end e principio di robustezza. Principi Web. Principi SOA. Principi per mobile. Esempi di architettura NoTA e di SIP. Principio di cross-layering

o       Pattern architetturali, generali e specifici per mobile computing

o       Pattern generali: model-view-control, broker, micro-kernel, active object

o       Pattern per mobile computing: remote facade, data transfer object, remote proxy, observer, session token, caching, eager/lazy acquisition, rendez-vous, state transfer, connection factory, client-initiated connection, multiplexed connection

-         Servizi di discovery: definizione e categorizzazione, auto-configurazione, scoperta, accesso a risorse/servizi

o       Esempio di Jini, con esercitazione proposta

o       Service location Protocol (SLP).

o       UPnP: architettura, file di descrizione, possibilità di bridging, esempi ed esercizi Esercitazione proposta su UPnP

-         Gestione sessione in reti convergenti 4G: Session Initiation Protocol (SIP), caratteristiche principali, limiti di scalabilità. Gestione sessione in infrastruttura IP Multimedia Sub-system (IMS): architettura, descrizione entità funzionali, esempi di protocolli, limiti per monitoraggio, bilanciamento di carico e scalabilità

-         Supporto a messaging in sistemi mobili: motivazioni; principi e architettura; protocollo di scambio di messaggi; locator

o       JMS: caratteristiche, architettura, modelli di messaging, affidabilità e qualità, esempi.

o       CORBA Messaging (AMI e TII)

o       Cenni su XMPP, Web Services e REST

-         Gestione eventi e modello pub/sub: topologie possibili per event router. Propagazione di interessi e sottoscrizioni. Decisioni di routing

o       Esempi di sistemi per eventi distribuiti: OMG DDS (partizioni e livelli di qualità); modello Java per eventi distribuiti; General Event Notification Architecture (GENA); RSS/Atom; SIP Event Framework; Web Services Eventing & Notification

-         Sincronizzazione dati nel mobile: approccio pessimistico/ottimistico; versioning; detection; reconciliation

o       SyncML: protocollo di rappresentazione; protocollo di sincronizzazione; esempi

-         Domini applicativi di interesse (4 esempi, da vehicular ad hoc applications a federated social spontaneous networks), anche per possibili attività progettuali

-         Numerosi casi di studio (anche tramite seminari aziendali in aggiunta all'orario di lezione)

 

Il corso sarà affiancato da un set di esercitazioni pratiche di laboratorio, in cui gli studenti saranno stimolati a compiere attività a svolgimento guidato in forma di lavoro personale e autonomo. Tali attività saranno necessarie per il completamento della preparazione e il raggiungimento delle abilità desiderate; testi e soluzioni delle esercitazioni saranno rese disponibili sul sito Web del corso. Il set di esercitazioni proposto includerà:

  • 1 esercitazione su piattaforma J2ME
  • 1 esercitazione su piattaforma Android
  • 1 esercitazione su soluzione di discovery UPnP (o in alternativa Jini)
  • 1 esercitazione su ambiente di simulazione Qualnet (handoff orizzontale e verticale)

 

Il corso organizzerà inoltre seminari aziendali a partecipazione facoltativa, svolti al di fuori dell'orario di lezione.

Testi/Bibliografia

Testi suggeriti (di utile consultazione, non adottati):

  • S. Tarkoma, Mobile Middleware, Wiley, 2009
  • Ke-Lin Du, M.N.S. Swamy, Wireless Communication Systems, Cambridge University Press, 2010
  • Z. Mednieks, L. Dornin, G.B. Meike, M. Nakamura, Programming Android, O'Reilly, 2nd edition, 2012
  • D. Sillars, High-Performance Android Apps, O'Reilly, 2014

Altre utili sorgenti on-line di informazioni (per una lista esaustiva sui vari argomenti, vedere slide del corso):

  • J2ME tutorial, http://developers.sun.com/mobility/midp/articles/wtoolkit/
  • Corso di Mobile & Pervasive Computing, Univ. Carnegie-Mellon, 2010
  • Corso di Mobile Computing, Univ. Ohio, 2009
  • Corso di Pervasive Computing, MIT, 2008
  • Corso di Mobile Computing, Virginia Tech, 2010
  • Corso di Mobile Computing and Sensor Networks, NJIT, 2008

Metodi didattici

Durante le lezioni in aula verranno discusse le problematiche generali connesse alla modellazione, progettazione, implementazione e supporto runtime di sistemi e servizi mobili, con particolare attenzione per le caratteristiche dei loro supporti a tempo di sviluppo ma soprattutto a tempo di esecuzione. Le principali tecnologie utilizzate saranno basate sul linguaggio Java, sulla piattaforma Android e sulla piattaforma Java Mobile Edition (JME).

Il corso sarà affiancato da un set di esercitazioni pratiche di laboratorio, in cui gli studenti saranno stimolati a compiere attività a svolgimento guidato in forma di lavoro personale e autonomo. Tali attività saranno necessarie per il completamento della preparazione e il raggiungimento delle abilità desiderate; testi e soluzioni delle esercitazioni saranno rese disponibili sul sito Web del corso.

Le attività di laboratorio includeranno:

  • 1 esercitazione su piattaforma J2ME (opzionale, sostituibile con analoga su iOS)
  • 1 esercitazione su piattaforma Android
  • 1 esercitazione su soluzione di discovery UPnP (o in alternativa Jini)
  • 1 esercitazione su ambiente di simulazione Qualnet (handoff orizzontale e verticale)

 

Modalità di verifica e valutazione dell'apprendimento

Il corso prevede una prova finale orale che cercherà di valutare il livello di apprendimento raggiunto sia in termini di metodologie di progettazione architetturale e modelli, sia in termini di operatività implementativa in relazione alle principali tecnologie descritte e utilizzate nel corso. La prova orale, della durata di circa 60-75 minuti, prevederà almeno quattro domande, in parte dedicate alla risoluzione di esercizi concreti di utilizzo dei meccanismi, protocolli e tecnologie per sistemi mobili investigate durante il corso.

Opzionalmente, gli studenti potranno svolgere un'attività progettuale (dall'impegno commisurato alla quantificazione in 4 cfu a partire dall'aa 2013/2014, 3 cfu precedentemente) tramite approfondimento e lavoro autonomo, su tematiche indicate dal docente durante il corso. In tal caso, gli studenti dovranno presentare una relazione scritta (con eventuale codice sviluppato) e, nel caso usuale in cui l'attività progettuale sia presentata contestualmente allo svolgimento dell'esame, la prova orale partirà dalla discussione dell'attività progettuale svolta. 

Strumenti a supporto della didattica

Il materiale mostrato a lezione (slide, esercizi risolti, esercizi suggeriti, esempi e proposte di progetto) sarà interamente messo a disposizione sul sito Web del corso:

http://lia.disi.unibo.it/Courses/sm1516-info/

Link ad altre eventuali informazioni

http://lia.disi.unibo.it/Courses/sm1516-info/

Orario di ricevimento

Consulta il sito web di Paolo Bellavista