78779 - MOBILE SYSTEMS M

Anno Accademico 2020/2021

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

Conoscenze e abilità da conseguire

At the end of the course the students are able to effectively develop and dynamically manage the runtime provisioning of mobile services. This requires acquiring expertise and theoretical skills, as well as design/implementation abilities, related to models and solutions for mobile systems, for mobile services provided on top of them, and for support systems (middleware) needed for their effective runtime execution.

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, Computer Networks 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 Wi-Fi Direct.

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

- 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. 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

- Piattaforme per Internet of Things (IoT): definizione e architetture di riferimento, principali piattaforme allo stato dell'arte, mobile e industrial IoT, direzioni di ricerca under investigation, esempi di applicazioni industriali

- 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

- Edge/Fog Computing: integrazione efficiente sensori-edge-cloud; controllo e intelligenza distribuiti; offloading; approcci proattivi e predizioni di mobilità

o ETSI Mobile Edge Computing: specifiche standard emergenti; approcci di deployment in 5G; orchestrazione e ETSI MANO

- 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 è descritto nella sezione di "Metodi Didattici".

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):

  • 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 ns-3 o 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) 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/sm2021-info/

Come possibile utile riferimento, si veda anche il materiale dell'anno accademico precedente e già disponibile presso:

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

 

Tale materiale deve essere considerato il principale materiale di studio per la preparazione dell'esame; la bibliografia suggerita è indicata come supporto e integrazione opzionale.

 

Link ad altre eventuali informazioni

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

Orario di ricevimento

Consulta il sito web di Paolo Bellavista

Consulta il sito web di Luca Foschini

SDGs

Imprese innovazione e infrastrutture Città e comunità sostenibili

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.