Differenze tra le versioni di "Mobile computing"

Da WikiDsy.
(Lezione di Martedì 25-10-05)
 
(18 versioni intermedie di 11 utenti non mostrate)
Riga 1: Riga 1:
[[Categoria:Corsi]][[Categoria:Corsi Primo Semestre]]
+
{{introduzione}}
<!-- non cancellare le righe precedenti -->
+
== Turni ==
<!-- Allo staff: mi son portato avanti cominciando ad abbozzare la pagina :). Ho copiato e incollato la formattazione dal corso di bioinformatica per la specialistica -->
+
{{Turno|(Claudio Bettini)}}
  
== Mobile Computing, anno 2005/2006 ==
+
== A.A. passati ==
 +
{{Annipassati|2006-2007|(Claudio Bettini)}}
 +
{{Annipassati|2005-2006|(Claudio Bettini)}}
  
'''Mobile Computing''' è un corso complementare aperto alle lauree triennali e specialistiche.
+
== Informazioni ==
  
=== Docenti === Claudio Bettini
+
=== Docenti===
e-mail: mailto:bettini@dico.unimi.it
 
  
Pagina personale: [http://homes.dico.unimi.it/~bettini/ qui]
+
* Prof. Claudio Bettini
 +
** Email: bettini [AT] dico [DOT] unimi [DOT] it
 +
** Pagina personale sul DICo: http://homes.dico.unimi.it/~bettini/  
 +
* Collaborazione di Daniele Riboni
 +
** riboni [AT] dico [DOT] unimi [DOT] it
  
=== Orari delle lezioni ===
+
=== Modalità d'esame ===
  
{| border=1
+
* L'esame consiste in un test scritto durante il corso sugli argomenti affrontati (o alternativamente in un orale durante gli appelli) e nella realizzazione, presentazione e discussione di un progetto (che richiede programmazione su dispositivo e lato server).
! Martedì!! Venerdì
+
* Informazioni dettagliate sullo svolgimento del progetto si trovano sulla pagina del corso
|-
 
| 15:45-17:15 Aula Alfa|| 09:00-10:30 Aula Alfa
 
|}
 
  
=== Orario di ricevimento dei docenti ===
+
=== Prerequisiti al corso ===
  
Non è stato chiarito mi pare,quindi mandate una mail per appuntamento.
+
* Indicato principalmente per studenti della laurea magistrale. Ammessi anche gli iscritti al terzo anno della triennale
 +
* Esami di Programmazione (Java preferibilmente) e Sistemi operativi verbalizzati
 +
* Nozioni di Reti di calcolatori e di Basi di dati (almeno corsi seguiti)
  
=== Sito del corso ===
+
=== Giudizio sul corso ===
 +
{{Giudizio}}
 +
{{Giudizio/Interesse}}
 +
{{Giudizio/Difficoltà}}
 +
{{Giudizio/Nonfrequentanti}}
 +
{{Giudizio/Ore}}
  
Se andate [http://webdid.usr.dico.unimi.it/mobicomp/ qui] trovate il programma del corso e il materiale didattico,per cui si deve disporre della password.
+
[[Categoria:Corsi Primo Semestre]]
 
 
=== Materiale didattico ===
 
 
 
* Slides sul sito;
 
* Libro: M. Mallick, ''Mobile and Wireless Design Essentials'', Wiley Technology Publishing, 2003.
 
 
 
=== Modalità d'esame e prerequisiti ===
 
 
 
* E' utile avere almeno seguito i corsi di reti di calcolatori e basi di dati;
 
* Si richiede la '''verbalizzazione''' dell'esame di informatica generale e programmazione java e dell'esame di Sistemi operativi: la questione non è burocratica ma atta a disincentivare la frequenza del corso a chi nn possiede certe conoscenze di base;
 
* La penultima lezione ci sarà un compitino e nell'ultima la presentazione di un progetto,che andrebbe risolto e discusso entro un anno dalla presentazione;
 
** la validità dello scritto è permanente;
 
** in alternativa al compitino uno può decidere di fare lo scritto e poi portare il progetto,discuterlo e fare l'orale;
 
* I probabili linguaggi di programmazione e mark-up usati saranno:
 
** XML;
 
** XSLT;
 
** HTML;
 
** C#.NET
 
** JAVA;
 
** probabilmente anche SQL o ASP per interazioni server/database;
 
 
 
'''''N.B.: La quasi totalità dei link a pagine esterne al wikiDsy sono stati inseriti dal sottoscritto e NON dal professore. Questo per far si di integrare meglio quanto spiegato a lezione con il vasto materiale disponibile in rete.'''''
 
 
 
Editaggio a cura di: --[[Utente:Voodoo|Voodoo]] 12:21, Nov 9, 2005 (CET)
 
 
 
== Diario del corso ==
 
 
 
=== Lezione di Martedì 4-10-05 ===
 
 
 
Un sito che percorrerà molti degli argomenti del corso è [http://www.html.it/mobile/ questo].
 
 
 
'''Argomenti trattati nella lezione di oggi''':
 
 
 
* Abbiamo visto a grandi linee l'evoluzione dell'hardware ,che ha portato a:
 
** riduzione delle dimensioni delle macchine;
 
** evoluzione rapporto persona/macchina (molte persone singolarmente lavorano con un calcolatore,per approdare ai PC e infine più macchine al servizio di una sola persona);
 
* Evoluzione di Internet;
 
 
 
Abbiamo definito:
 
 
 
* Traditional Computing: capacità di calcolo classico;
 
* [http://en.wikipedia.org/wiki/Mobile_computing Mobile Computing]: la mobilità è la caratteristica principale;
 
* Pervasive Computing: implementazione di funzioni di calcolo e comunicazione in oggetti;
 
* [http://en.wikipedia.org/wiki/Ubiquitous_computing Ubiquitous Computing]: una combinazione dell'aspetto mobile e pervasive;
 
* Disappearing Computing: l'embeddedness dei dispositivi tende a farli divenire oggetti della vita quotidiana,regiscono ad eventi in relazione all'utente e al suo contesto;
 
 
 
Il Mobile Computing,per sua natura,è e sarà oggetto di forti novità e sviluppo,sia per quanto riguarda sistemi operativi,linguaggi, protocolli, architetture, algoritmi ed interfacce;<BR>
 
Parimenti presenta altresì difficoltà non indifferenti,quali la rapida evoluzione con il conseguente invecchiamento precoce delle tecnologie,notevole competizione,sistemi operativi immaturi e instabili e una grande eterogeneità hardware,software e di protocolli in circolo.
 
 
 
Abbiamo visto le sue applicazioni a livello lavorativo/aziendale/quotidiano e i ruoli professionali coinvolti in questo settore.
 
 
 
* Lista degli operatori di reti mobili: [http://en.wikipedia.org/wiki/List_of_mobile_network_operators qui]
 
 
 
----
 
 
 
=== Lezione di Venerdì 7-10-05 ===
 
 
 
Abbiamo trattato la classificazione dei dispositivi secondo certe caratteristiche:
 
 
 
* I/O: schermo,touchscreen,tastiera,slot di espansione,ecc..
 
* Connettività: globale,locale;
 
* Risorse di calcolo: CPU,RAM,ecc..
 
* Autonomia: batteria;
 
* Supporto applicazioni: JVM,.NET Compact Framework,ecc..
 
* Supporto multimediale: audio,video,ecc...
 
 
 
[http://it.wikipedia.org/wiki/Smartphone Smartphones]
 
 
 
[http://it.wikipedia.org/wiki/PDA PDA](Personal Digital Assistent):
 
 
 
* orientati alla gestione/scambio di dati;
 
* supporta solo connettività locale;
 
 
 
'''PDA-phones''':
 
 
 
* supporto UMTS per scambio dati;
 
* risorse di calcolo inferiori ai PDA;
 
 
 
[http://en.wikipedia.org/wiki/BlackBerry Blackberry]:
 
 
 
* frequentemente utilizzati in USA;
 
* usato molto e principalmente per e-mail;
 
* ha una tastierina;
 
 
 
[http://it.wikipedia.org/wiki/Tablet PCTablet PC]:
 
 
 
* più vicini ai laptop che ai dispositivi mobili;
 
* riconoscitore vocale e di scrittura;
 
* costo elevato;
 
* connessione locale integrata;
 
* SO microsoft: il costo elevato e la mancanza di applicazioni utili non ha fatto decollare il loro sviluppo,deludendo Micro$oft;
 
 
 
* Esempio di utilizzo di PDA-phones con riconoscimento vocale in aula;
 
 
 
* <u>analisi dei dispositivi in termini di vendite sul mercato</u>:
 
** frammentazione del mercato;
 
** assenza di un leader dominante;
 
** frequenti novità;
 
** convergenza tra PDA e smart-phones;
 
** supporto navigazione GPS,suite Office,ecc..
 
** si riduce il numero di Sistemi operativi e di piattaforme di sviluppo;
 
 
 
* Introduzione ai '''sistemi operativi''':
 
 
 
* differenze tra quelli generici e quelli per mobili;
 
** molto importante l'aspetto di risparmio delle risorse.
 
* I più usati:
 
*# [http://en.wikipedia.org/wiki/PalmOS PalmOS](il più stabile secondo il prof);
 
*# [http://en.wikipedia.org/wiki/Symbian_OS SymbianOS] (orientato alla telefonia);
 
*# [http://it.wikipedia.org/wiki/Windows_Mobile Windows Mobile](il meno stabile secondo il prof.);
 
*# OS in java e Linux: percentuali ridotte sul mercato;
 
*## [http://en.wikipedia.org/wiki/Mobilinux Mobilinux ]
 
 
 
* Cosa vuol dire [http://en.wikipedia.org/wiki/Original_equipment_manufacturer OEM]
 
 
 
----
 
 
 
=== Lezione di Martedì 11-10-05 ===
 
 
 
* Osservazione dell'architettura dei sistemi operativi per mobili,in particolare:
 
*# [http://it.wikipedia.org/wiki/Windows_Mobile Windows Mobile]: è un OS per dispositivi mobili(PDA e smart phones),dipendente da componenti di [http://en.wikipedia.org/wiki/Windows_CE Windows CE],con le seguenti caratteristiche principali:
 
*## struttura modulare;
 
*## multitasking(supporta sottoinsieme delle [http://en.wikipedia.org/wiki/Windows_API Win32 API] e .NET)
 
*## possibilità di sviluppo attraverso piattaforme di sviluppo comuni anche per i desktop:gli ultimi due punti rendono agibile il compito di sviluppatori che non devono affrontare una lunga curva di apprendimento;<br>L'ultima versione è la [http://it.wikipedia.org/wiki/Windows_Mobile#Windows_Mobile_5.0 5.0],sincronizzazione dei dati pc/dispostivo mobile tramite [http://en.wikipedia.org/wiki/ActiveSync ActiveSync]
 
*# [http://en.wikipedia.org/wiki/PalmOS PalmOS]:
 
*## ha dominato per molto tempo il mercato dei [http://en.wikipedia.org/wiki/Personal_digital_assistant PDA];
 
*## dalla V5 è anche multitasking e multithreading
 
*## le applicazioni possono includere ''Conduits'',cioè software di sincronizzazione dati pc/dispositivo simili per funzione al corrispettivo Microsoft ActiveSync
 
*## versioni principali: [http://www.palmsource.com/palmos/garnet.html Garnet] e [http://www.palmos.com/dev/tech/oses/cobalt60.html Cobalt]
 
*## supporto telefonia,Wifi,Bluetooth,UI migliorata;
 
*# [http://en.wikipedia.org/wiki/Symbian_OS Symbian]:
 
*## OS di riferimento per smart phones
 
*## le versioni precedenti si chiamavano [http://en.wikipedia.org/wiki/EPOC_%28computing%29 EPOC];
 
*## supporto svariati protocolli e piattaforme di sviluppo,sicurezza,applicativi vari;
 
*## [http://www.symbian.com/ home page] e panoramica in flash della versione [http://www.symbian.com/technology/OSoverview/OSoverview_v9.html 9.0]
 
*# Linux:
 
*## poco supportato dai produttori ma diffuso sui sistemi embedded fissi;
 
*## sfrutta [http://docs.kde.org/development/it/kdevelop/kdevelop/qtembedded.html QT Embedded] come piattaforma di sviluppo per le GUI e supporta java(come [http://www.esmertec.com/ Esmertec]);
 
 
 
''Pre-lezione: si è speso qualche parola in merito agli scioperi degli insegnanti riguardo la protesta su D.legisl. della Moratti:''
 
 
 
* ''Posizione ricercatori DICO,ecc.. [http://www.sl-lab.it/cgi-bin/twiki/view/Main/DDLMoratti qui]''
 
 
 
'''Connettività locale'''
 
 
 
{| border=1
 
! WPAN!! WLAN
 
|-
 
| copertura inferiore ai 10m|| copertura inferiore ai 100m
 
|-
 
| Rimpiazza cavi|| estensione o rimpiazzo di una rete locale
 
|-
 
|throughput fino a 4 Mbps|| fino a 54 Mbps
 
|-
 
|standard IrDA,Bluetooth,802.15|| 802.11a/b/g,HIPERLAN/2
 
|}
 
 
 
 
 
* [http://it.wikipedia.org/wiki/Bluetooth Bluetooth]:
 
** non richiede linea diretta(cioè senza ostacoli nel mezzo)per la comunicazione;
 
** copertura fino a 10m,amplificabile fino a 100m;
 
** usa lo spettro 2.4GHz con il [http://en.wikipedia.org/wiki/Frequency-hopping_spread_spectrum frequency hopping]; vedere anche [http://it.wikipedia.org/wiki/Spread_spectrum qui]
 
** scopre automaticamente altri dispositivi nel raggio di portata;
 
** possibilità di crittare la comunicazione,più è grande la chiave più lenta sarà la comunicazione;alcune tecniche d'attacco sono:
 
*** [http://en.wikipedia.org/wiki/BlueJacking BlueJacking]: vedere anche [http://www.bluejackq.com/how-to-bluejack.shtml qui];
 
*** [http://en.wikipedia.org/wiki/Bluesnarfing Bluesnarfing];
 
** permette connessioni simultanee;
 
** la tecnologia bluetooth permette il formarsi di alcuni tipi di rete:
 
*** [http://en.wikipedia.org/wiki/Piconet piconet]:rete wireless di 2 o più dispositivi connessi(fino ad 8);rapporto master/slave fra i dispositivi comunicanti;
 
*** rete ad hoc: costituita da al massimo 8 dispositivi,òa quale non necessita di amministrazione e preconfigurazione,in cui c'è una comunicazione diretta di un dispositivo con gli altri;Vedere <nowiki>http://en.wikipedia.org/wiki/Ad-hoc_network</nowiki> <!-- quell'url non viene considerato!! -->
 
*** [http://en.wikipedia.org/wiki/Scatternet scatternet]: connessione di più piconet con più di 8 dispositivi,dove la comunicazione diretta avviene all'interno delle piconet;
 
* [http://www.irda.org/ IrDA]:
 
** standard per trasmissione di dati tramite connessione ad infrarossi;
 
** serve linea diretta di comunicazione;
 
** raggio di portata ridotto(1-2m);
 
** basso costo;
 
** supporto comunicazione bidirezionale;
 
** thoughput da 9.3 Kbps  fino a 4 Mbps;
 
* 802.15:
 
** specifica dell'[http://en.wikipedia.org/wiki/IEEE IEEE] per creare un ostandard per WPAN;
 
** simile al BLuetooth;
 
** è ancora ''in progress'';
 
* [http://en.wikipedia.org/wiki/WLAN WLAN]:
 
** configurazione ad hoc(la più semplice,non richiede amministrazione o preconfigurazione,non richiedono [http://en.wikipedia.org/wiki/Wireless_access_point Access Point],poichè gli adattatori comunicano direttamente fra loro);
 
** può essere ampliata dagli Access Point,che possono anche eventualmente fornire il collegamento alla rete cablata;
 
** standard:
 
*** [http://en.wikipedia.org/wiki/802.11 802.11]:
 
**** 802.11/b(WiFi):usa lo spettro dei 2.4GHz con la tecnica [http://en.wikipedia.org/wiki/DSSS DSSS];è la più popolare. Throughput massimo di 11 Mbps,scende con l'allontanarsi dall'AP. Può penetrare barriere anche spesse,più facilmente rispetto alle alte frequenze. Lo svantaggio è che usa una frequenza molto usata e può portare a congestioni/interferenze nella comunicazione. L'implementazione del roaming fra gli AP stessi,è a carico degli AP. Schemi di sicurezza tramite [http://en.wikipedia.org/wiki/WEP WEP]
 
**** 802.11a usa l'OFDM e la frequenza 5GHz,frequenza limitata in alcuni paesi. Throughput fino a 54 Mbps,buono per scambio di grossi file,accesso veloce ad internet e per applicazioni multimediali. Ha un raggio di copertura ridotto,per mantenerlo largo servono molti più AP rispetto alla 802.11b. Non è compatibile con la versione b.
 
**** 802.11g: compatibile con la versione b,comunica sulla sua stessa frequenza con il DSSS,ma è in grado di raggiungere tassi di trasmissione fino a 54 Mbps usando l'OFDM sempre all'interno della banda a 2.4 GHz. Quindi gli AP dei due tipi saranno i ngrado di comunicare. Per raggiungere il tasso di 54 Mbps entrambe le reti devono essere di tipo g.
 
* [http://en.wikipedia.org/wiki/WiMAX WiMAX]:estensione del WiFi a raggio chilometrico per la realizzazione di WMAN
 
** [http://www.wimaxforum.org/home/ WiMAX forum]
 
* [http://en.wikipedia.org/wiki/Ultra_wideband UWB]:tecnologia a corto raggio ma a banda larga,con precedenti militari;
 
 
 
 
 
 
 
''Differenza tra FHSS,DSSS e [http://en.wikipedia.org/wiki/OFDM OFDM]''
 
 
 
La tecnica FHSS usa una banda portante stretta che cicla rapidamente le frequenze. Sia il mittente sia il destinatario conoscono il modello di cambio di frequenza usato. L'idea è avere sempre a disposizione una frequenza su cui scambiarsi i dati,altrimenti i dati vengono rispediti. Quindi attraverso una gusta sincronizzazione si ottiene un canale unico attraverso il quale l'informazione viene veicolata. Al resto del mondo,non essendo sincronizzato con la loro modalità di collegamento e scambio di frequenze,tutto ciò appare come raffiche di rumori. Si ha un throughput massimo di 1 Mbps. <br>La tecnica DSSS sparge il segnale lungo una banda larga di frequenze radio simultaneamente. Ogni bit trasmesso ha un bit di modello ridondante chiamato chip,il quale più è lungo è più è affidabile il reperimento dei dati. La maggiore lunghezza dei bit richiede però più banda. Chi non si aspetta i lsegnale lo riceve come un rumore a banda larga di debole potenza e viene rifiutato. E' una tecnica quindi che richiede più potenza dell'FHSS ma incrementa il tasso di trasmissione dei dati fino a 2 Mbps.<br> OFDM trasmette i dati in parallelo,al contrario delle tecniche precedenti,proteggendo meglio i segnali dalle interferenze. Ha un'altissima efficienza di spettro,cioè più dati di quanti ce ne possano stare possono essere trasmessi su una porzione ridotta di banda. Di contro la sua implementazione è più difficile e consuma grandi quantità di potenza.
 
 
 
 
 
----
 
 
 
=== Lezione di Venerdì 14-10-05 ===
 
 
 
'''Connettività geografica'''
 
 
 
* [http://en.wikipedia.org/wiki/WWAN WWAN]:
 
** l'accesso a queste reti comporta un contratto con delle compagnie,al contrario delle WLAN e WPAN;
 
** non operano su frequenze libere,bisogna pagare lo spettro per usarlo;
 
** provvedono copertura wireless nazionale e spesso internazionale per comunicazione voce/dati;
 
 
 
'''''Tipi di reti'''''
 
 
 
* [http://en.wikipedia.org/wiki/1G 1G]:
 
** Costruite alla fine degli anni '70(USA) e ai primi degli '80(Europa);
 
** reti analogiche per trasmissione vocale;
 
** soffrivano di alti livelli d'interferenza,handoff scadenti,capacità ridotte e assenza di sicurezza;
 
** dispotivi abbastanza larghi da permettere l'integrazione dei ricevitori radio per captare il segnale analogico.
 
* [http://en.wikipedia.org/wiki/2G 2G]:
 
** reti digitali a commutazione di circuito,sviluppate nei primi anni '90;
 
** qualità servizi vocali migliorata,aggiunta servizi di base per la trasmissione di dati( ad un tasso variabile tra 9.6 e 19.2 Kbps);
 
** servizi voicemail,attesa di chiamata,identificazione del chiamante,comunicazione a 3;
 
** capacità maggiorate,permettendo  a più utenti di comunicare sullo stesso spettro;
 
** Sicurezza notevolmente irrobustita ;
 
** sistemi che ne fanno parte: TDMA,CDMA,GSM,PDC(incompatibili fra loro,a volte anche fra lo stesso tipo di rete a causa di differenti frequenze. Per questo sono disponibili dispositivi [http://en.wikipedia.org/wiki/Dual_band dual]-[http://en.wikipedia.org/wiki/Tri-band tri] band,che permettono lo switch di frequenza,quindi anche il roaming);
 
* [http://en.wikipedia.org/wiki/2.5G 2.5G]:
 
** sistemi a commutazione di pacchetto;
 
** trasferimento dati innalzato fino a 144 Kbps(in realtà fino a 56 Kbps);
 
** l'upgrade dalla 2G richiede solo un aggiornamento software,non hardware,perchè si sfruttano ancora le reti cellulari esistenti e si gettando le basi per la 3G;
 
** le applicazioni WAP possono disporre di grafica e qualche funzionalità multimediale,ed essendo le reti GPRS simili alle LAN,permettono di costruire applicazioni alloo stesso modo di come le farebbero per una rete Ip-based,tenendo conto delle limitazioni del dispositivo;
 
** GPRS,CDMA2000 1x appartengono a questa generazione;
 
** maggiore efficienza nell'uso dello spettro nella condivisione di connessioni fra più utenti sia per scambio dati sia per la comunicazione vocale;
 
** capacità always on che permettono all'utente di rimanere collegato alla rete senza pagare a tempo il collegamento,permettendo anche il servizio di push dei dati;
 
* [http://en.wikipedia.org/wiki/3G 3G]:
 
** Vi appartengono WCDMA/UMTS,CDMA2000,EDGE;
 
** tasso di spedizione dei dati maggiore,è tanto più alto quanto più si è fermi,e decrescere con la velocità che prendiamo(tipicamente 384 Kbps);esso comunque dipende molto anche dalla distanza dalla Base Station,tanto più si è distanti tanto più difficilmente si ottengono velocità di trasferimento dati veloci;
 
** i dispositivi 3G hanno il supporto per contenuti multimediali,schermi ad alta risoluzione,OS mobili per sofisticate applicazioni client-side;
 
** QoS aumentata;
 
 
 
'''''Protocolli'''''
 
 
 
* [http://it.wikipedia.org/wiki/GSM GSM]:
 
** la tecnologia 2G più usata al mondo;
 
** tecnologia a commutazione di circuito basata su [http://en.wikipedia.org/wiki/TDMA TDMA];
 
** alta qualità della voce,capacità di roaming internazionale;
 
** frequenze europee su cui opera: 900/1800 MHz,1900 MHz Nord America;
 
** trasferimento dati fino a 9.6 Kbps tramite [http://en.wikipedia.org/wiki/Circuit_Switched_Data CSD](abbastanza per sms e WAP browsing,inadeguato per applicazioni di altro tipo); per ovviare a ciò è stata introdotta la tecnologia [http://en.wikipedia.org/wiki/HSCSD HSCSD](che è sempre circuit switched),che permette di usare in una singola connessione segmenti di tempo multipli per il trasferimento di dati fino a 28.8 Kbps(secondo il libro di riferimento per il corso,fino a 57.6 Kbps) ;
 
** tre componenti principali:
 
*# Mobile station([http://en.wikipedia.org/wiki/Cell_phone telefonino] e [http://en.wikipedia.org/wiki/SIM SIM]);
 
*# [http://en.wikipedia.org/wiki/Base_Station_Subsystem BSS](Base Station Subsystem): responsabile di gestire il traffico fra il dispotivio mobile e il Network Switching Subsystem. Le sue componenti sono il [http://en.wikipedia.org/wiki/Base_Transceiver_Station#Base_Transceiver_Station BTS] e il [http://en.wikipedia.org/wiki/Base_Transceiver_Station#Base_Station_Controller BSC].
 
*# [http://en.wikipedia.org/wiki/Network_Switching_Subsystem Network Subsystem]: realizza la comunicazione fra stazioni-mobili o fra mobili-mobili,gestendone le autenticazioni;le sue componenti sono [http://en.wikipedia.org/wiki/Network_Switching_Subsystem#Home_Location_Register_.28HLR.29 l'HLR],[http://en.wikipedia.org/wiki/Network_Switching_Subsystem#Visitors_Location_Register_.28VLR.29 VLR],[http://en.wikipedia.org/wiki/Network_Switching_Subsystem#Authentication_Centre_.28AUC.29 l'AUC] ,[http://en.wikipedia.org/wiki/Network_Switching_Subsystem#EIR l'EIR] e l'[http://en.wikipedia.org/wiki/Mobile_Switching_Center MSC].
 
** [http://en.wikipedia.org/wiki/GSM_services servizi]
 
** Canali di controllo:
 
*** BCCH ( Broadcast Control Channel ): canali che trasportano informazioni di interesse generale. Sono trasmessi in modo monodirezionale downlink (da BTS a MS) punto-multipunto. Per ciascuna cella il canale BCCH trasporta informazioni a tutti gli utenti serviti da quella BTS. Trasmesso in continuazione e in modo downlink. E' costituito da 184 byte che trasportano numerosi parametri, tra i quali: l'identità della cella (Cell Identity), dell'area di localizzazione (Local Area Code) dell'operatore di rete (MCC e MNC), oltre ai parametri richiesti dall'algoritmo di Frequency-Hopping.
 
*** CCCH: canale logico trasmesso in entrambe le direzioni, il quale viene utilizzato quando l'utente non ha ancora allocato le proprie risorse sulla cella (es. in fase di primo accesso alla rete o in fase di riselezione di cella).
 
 
 
L'evoluzione porta ad aumentare la banda di trasferimento dei dati,poichè GSM assolve il suo dovere per quanto riguarda la voce ma non per i dati(lentezza,costo);
 
 
 
* [http://en.wikipedia.org/wiki/GPRS GPRS]:
 
** tecnologia 2.5G;
 
** introduce capacità di commutazione di pacchetto alle reti wireless;
 
** è un upgrade della tecnologia GSM e TDMA,permette quindi il roaming fra reti GPRS e GSM/TDMA;
 
** bit rates di trasferimento dati più alti(fino a 115 Kbps teorici,40 Kbps reali);
 
** capacità always on;
 
** opera sulle stesse frequenze delle reti GSM;
 
** tariffazione a pacchetto invece che a tempo,paghi per quel che richiedi,per dati trasferiti.
 
** il traffico inviato da una stazione mobile viene inviato ad un Base Station Subsystem,il quale smista i pacchetti IP verso l'[http://en.wikipedia.org/wiki/SGSN#Common_SGSN_Functions SGSN](analogo all'MSC/VLR per GSM). Una stazione mobile attiva un PDP context con il suo SGSN.Quest'ultimo gli fornisce indirizzo IP,un QoS,un indirizzo di GGSN. La Mobile station specifica il GGSN da usare,che verrà specificato come APN. L'SGSN risolve l'APN nel corrispondente indirizzo IP,e incapsula i pacchetti IP tramite il protocollo [http://en.wikipedia.org/wiki/SGSN#GPRS_Tunnelling_Protocol_.28GTP.29 GTP]. Il GTP instrada i pacchetti fino ad un gateway [http://en.wikipedia.org/wiki/GGSN#GGSN_-_Gateway_GPRS_Support_Node GGSN]. Questo consulta l'HLR per stabilire la posizione della mobile station,riconverte i pacchetti in IP instradandoli in Internet o Intranet. Nel caso di roaming il gateway comunica con un altro GGSN di un altro operatore;
 
** la convivenza tra GSM e GPRS si evince anche dai tipi di [http://en.wikipedia.org/wiki/General_Packet_Radio_Service#GPRS_Capability_Classes classi] in cui vengono ripartiti i dispositivi mobili:
 
*# A: terminali in grado di trattare voci e trasmissione di dati allo stesso tempo, Richiede due trasmettitori.
 
*# B: trattano entrambe le modalità come nel precedente ma non contemporaneamente. Basta u nsolo trasmettitore;
 
*# C: trattano o solo la voce o solo la trasmissione dati;
 
** vedi [http://en.wikipedia.org/wiki/SGSN architettura] in ampio dettaglio;
 
* [http://en.wikipedia.org/wiki/UMTS UMTS]:
 
** è la versione europea del [http://en.wikipedia.org/wiki/WCDMA WCDMA];
 
** usa il DSCDMA;
 
** progettato per essere l'upgrade delle reti EDGE/GPRS,operando alla frequenza di 2GHz,con data rates fino a 2Mbps;
 
** richiede copertura a differenza dell'EDGE e del GPRS,quindi sono tecnologie che lavorano a fiano,dove non arriva una c'è l'altra,tramite handoff verso differenti tipi di rete,al massimo si comunicherà a livelli più bassi di data rate;
 
* [http://en.wikipedia.org/wiki/EDGE EDGE]:
 
** tecnologia che permette alle reti GSM di offrire servizi 3G all'interno delle frequenze esistenti. TDMA o GSM/GPRS può venire portata all'EDGE col minimo impatto;
 
** tecnologia a banda stretta,formata da canali a 200 KHz,non richiede una licenza 3G,permettendo che influisca poco sui costi;
 
** data rates fino a 384 Kbps,più tipicamente fra 75/150 Kbps;
 
** è anch'essa una tecnologia basata sulla commutazione di pacchetti;
 
 
 
 
 
'''''Glossario'''''
 
 
 
* [http://en.wikipedia.org/wiki/Circuit_switching circuit switching](abbreviato qui con CS) Vs [http://en.wikipedia.org/wiki/Packet_switching packet switching](PS): in breve,CS lavora bene per la comunicazione vocale dove c'è un flusso costante di dati trasferiti,richiedono connessioni dedicate. I dati devon oseguire una rotta precisa.;PS sono efficienti per la comunicazione di dati,dove avviene spesso a raffiche,non richiedono connessioni dedicate,permettendo a più utenti di condividere una singola connessione per massimizzare lo spettro. I pacchetti non devono seguire una rotta precisa, scegliendo il path ottimale.
 
* cella: area geografica che ottiene copertura wireless da una [http://en.wikipedia.org/wiki/Base_station base station]. L'area di copertura dipende dal protocollo di rete,dalla potenza del segnale e ostacoli. Più ci si allontana dalla base station più il segnale s'indebolisce. Il suo raggio vara da 1 a 40 Km. Per le WWAN celle multiple si uniscono in un [http://en.wikipedia.org/wiki/Cellular_network sistema cellulare]. Nelle aree densamente popolate si necessitano microcelle8tipicamente dal raggio di un centinaio di metri) e più base station vicine fra loro per servire un gran numero d'utenti.
 
* Cos'è l'[http://en.wikipedia.org/wiki/Handoff handover] o handoff: passaggio della connessione da una cella ad un'altra,tipicamente quando stiamo parlando al cell. e ci muoviamo,sconfinando dalla cella in cui è iniziata la conversazione. Permette che la connessione rimanga attiva altrimenti se fallisce,cade la linea.Ciò è specialmente vero nelle reti a commutazione di circuito dove  si deve ristabilire al connessione prima di continuare.
 
* Cos'è il [http://en.wikipedia.org/wiki/Roaming roaming]: spostamento fra celle possedute da diversi operatori wireless. Tipicamente quando andate all'estero e vi compare sul cell. il nome dell'operatore straniero(Es. Swiss GSM,Orange,ecc..).
 
* Cos'è il [http://en.wikipedia.org/wiki/Quality_of_service QoS]: grado di affidabilità di una rete. Individuata da 3 parametri:
 
*# velocità: throughput e latenza;
 
*# affidabilità;
 
*# accuratezza: duplicazione o trasmissione errata di pacchetti. Vedere anche sul sito della [http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/qos.htm cisco];
 
* Tecniche di [http://en.wikipedia.org/wiki/Multiplexing multiplexing]: tecnica per dividere un segnale fra più utenti. Questa condivisione dello spettro permette agli operatori wireless di massimizzare l'uso dei loro spettri per accomodare un gran numero d'utenti su canali minori.
 
** [http://en.wikipedia.org/wiki/Time-division_multiplexing TDM]: numerosi segnali sono combinati su un solo canale,ma ognuno di essi viene separato attraverso slot di tempo. I segmenti di tempo vengono assegnati ad un individuo e ruotati ad intervalli regolari,perchè tutti possano disporne. Il ricevente interpreta l'appropriato slot per riceve le informazioni. L'intervallo di tempo viene aggiornato continuamente per permettere un uso ottimale della larghezza di banda.
 
** [http://en.wikipedia.org/wiki/Frequency-division_multiplexing FDM]: anche qui numerosi segnali vengono combinati su un unico canale e a ciasuno di essi viene assegnata una frequenza per la comunicazione. Per comunicare chiamante e ricevente si sintonizzano sulla stessa frequenza(funzionamento simile alle [http://en.wikipedia.org/wiki/Radio_station stazioni radio]).
 
** [http://en.wikipedia.org/wiki/Code-division_multiplexing CDM]: in questo caso ad ogni segnale viene affibiato un codice e li spedisce lungo tutto lo spettro. Ciò offre una grande efficienza nello sfruttamento dello spettro e abbassa molto il livello d'interferenza fra segnali. Un ricevente infatti accetterà solo i segnali con il codice appropriato.
 
 
 
<!-- * [http://it.wikipedia.org/wiki/GPS GPS]: vedere anche [http://home-2.worldonline.nl/~samsvl/ qui] da spostare in qualke altra lezione più avanti -->
 
 
 
----
 
 
 
=== Lezione di Martedì 18-10-05 ===
 
 
 
* [http://en.wikipedia.org/wiki/WAP WAP]: standard mondiale per la trasmissione e presentazione d'informazione via wireless a telefoni mobili e altri dispositivi wireless. La primaversione è stata realizzata nel '98 dal [http://www.wapforum.org/ WAP Forum]. Il WAP forum è stato fondato nel '97 da diverse grandi compagnie(come NOkia ed Ericsson) con l'intento di rendere le applicazioni internet wireless la corrente principale creando specifiche di sviluppo e framewrok per accelerarne lo sviluppo. Nel 2002 si è consolidato insieme ad altre istituzioni/compagnie nell'[http://en.wikipedia.org/wiki/Open_Mobile_Alliance OMA],([http://www.openmobilealliance.org/ sito]).
 
** usa l'approccio pull(normali richieste del client al server) e la tecnica [http://en.wikipedia.org/wiki/Wireless_Application_Protocol#WAP_Push push],dove il contenuto viene spedito dal server al client tramite WTA(che permette di sfruttare le capacità telefoniche del dispositivo client tramite WML/WMLscript ed API).
 
** WAP può richiedere un gateway,a seconda della sua versione(''detto anche WAP proxy'') come intermediario fra client/server responsabile per:
 
*** traduzione delle richieste da protocollo WAP ad HTTP-TCP/IP;
 
*** codifica/decodifica dei contenuti in formati compatti adatti al dispositivo;
 
*** implementa le funzioni di push tramite WTA viste prima;
 
 
 
 
 
''Differenze fra WAP 1.x e WAP 2.x''
 
 
 
{| border=1
 
! WAP 1.x!! WAP 2.x
 
|-
 
| fondato su protocolli propietari|| stack di protocolli basato su quelli di internet
 
|-
 
| usa WML/WMLscript|| usa WML2,basato su XHTML
 
|-
 
|richiede WAP proxy|| non richiede WAP proxy,permette<br> comunicazione diretta client/server<br>anche se usarlo aggiunge dei servizi(location-based e push)
 
|-
 
|WAP gap|| il protocollo TLS elimina il WAP gap
 
|}
 
 
 
 
 
'''Stack del protocollo WAP'''
 
 
 
Le due versioni WAP hanno in comune il livello d'applicazione,sebbene con qualche diversità:
 
* [http://en.wikipedia.org/wiki/Wireless_Application_Protocol#Wireless_Application_Environment_.28WAE.29 WAE]: corrisponde al livello d'applicazone secondo il modello [http://en.wikipedia.org/wiki/Image:Osi-model-jb.png OSI]. Fornisce gli elementi necessari per l'interazione fra le applicazioni Web e il [http://en.wikipedia.org/wiki/Microbrowser microbrowser] del client:
 
** ha delle specifiche per il microbrowser sull'interpretazione del [http://en.wikipedia.org/wiki/Wireless_Markup_Language WML]/WMLscript,così come il supporto per altri tipi di contentuo come le immagini bitmap wireless e altro ancora;nella versione WAP 2.x,si usa XHTML come linguaggio di markup,c'è un supporto per i folgi di stile,un sottoinsieme dei CSS orientato ai dispositivi mobili,mantiene la compatibilità con il WML 1.x,grazie a traformazioni [http://en.wikipedia.org/wiki/XSLT XSLT].
 
 
 
''WAP 1.x stack''
 
 
 
* WSP: fornisce capacità simili all'HTTP/1.1 orientate per larghezza di banda bassa,per reti ad alta latenza,fornendo la possiblità di sospendere e riprendere le sessioni. La comunicazione fra il WAP proxy e il microbrowser avviene su questo livello;vale per le applicazioni basate sulle transazioni(accesso ai database);
 
* WTP: fornisce meccanismo affidabile di trasporto simile al TCP/IP eliminando il trattamento informativo addizionale delle informazioni sui pacchetti spediti fuori ordine e l'handshake a tre vie,per velocizzare il processo;vale per applicazioni basate su datagrammi(multimediali);
 
* [http://en.wikipedia.org/wiki/WTLS WTLS]: versione wireless del [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS],fornisce privacy,integrità dei dati,autenticazione client/server;
 
* WDP: servizio datagram che porta un'interfaccia comune alle portanti wireless(quindi è indipendente da essi). AL di sopra di bearer IP(GPRS/UMTS),c'è proprio UDP.
 
 
 
''WAP 2.x stack''
 
 
 
* WP-HTTP: profilo di HTTP per ambiente wirless,interoperabile con l'HTTP/1.1;
 
* TLS: profilo wireless di TLS,per transazioni sicure,eliminando il WAP gap;
 
* WP-TCP: profilo wireless di TCP,interoperabile con TCP,ma con meno overhead nei flussi di comunicazione;
 
* implementa servizi di:
 
** WAP push: invio di informazioni dal server al client attraverso un documento XML PAP ad un push proxy(PPG);
 
** UAprofile: permette ad un server di ottenere quante più informazioni possibili su un client,basato sulle specifiche [http://www.w3.org/TR/2004/REC-CCPP-struct-vocab-20040115/ CCPP].(vedi anche [http://www.w3.org/Mobile/CCPP/ qui]).
 
** EFI: permette alle applicazioni nel WAE di comunicare con applicazioni esterne,permettendo alle altre applicazioni di estendere le funzionalità delle applicazioni WAP,similmente a quanto fanno i plug-in per i browser;
 
** interfaccia di memorizzazione duratura: permette l'organizzazione,l'accesso e l'immagazzinamento dei dati;
 
** sincornizzazione dei dati: viene adottato [http://en.wikipedia.org/wiki/SyncML SyncML],che fornisce un protocollo basato su XML per sincornizzare i dati attraverso WSP e HTTP;
 
** [http://en.wikipedia.org/wiki/Multimedia_Messaging_System MMS];
 
 
 
'''Glossario'''
 
* WAP gap: nella versione WAP 1.x una connessione sicura in cui si usasse la crittografia per la trasmissione dei dati,aveva un anello debole: all'arrivo dei dati al gateway,a causa della diversità dei protocolli e del suo ruolo di traduttore,doveva decifrare i dati e convertirli nel formato cpmprensibile dall'altra parte della comunicazione,per poi ricrittarli. Per aggiungere sicurezza si può far si che questo processo avvenga dietro un firewall.
 
 
 
 
 
----
 
 
 
=== Lezione di Venerdì 21-10-05 SOSPESA===
 
 
 
Lezione sospesa
 
 
 
----
 
 
 
=== Lezione di Martedì 25-10-05 ===
 
 
 
'''Architetture thin-client e smart-client'''
 
 
 
La scelta di quale architettura usare va pesata considerando vari fattori:
 
 
 
* utenti finali,loro competenze e bakground precedenti a cui sono abituati;
 
* tipo di dispositivo sul quale far girare le applicazioni,cosa permette e non;
 
* il tipo di connessione e in che modo si connette ai server delle imprese;
 
* fruibilità dei dati(solo sul server o se ne permette la gestione anche ''off-line'');
 
* l'uso del servizio di notifica all'utente o meno;
 
* aspetti di sicurezza;
 
* l'autonomia del dispositivo(batteria);
 
 
 
 
 
'''''Componenti dell'architettura thin-client'''''
 
 
 
Il nome stesso richiama l'esiguità di software necessaria per quest'architettura:infatti serve solamente il microbrowser. Qui seguono nel dettaglio le componenti:
 
 
 
* microbrowser: usa URL per contattare il server Web. La sua risposta,contenente i linguaggio di markup,viene poi interpretata e visualizzata dal browser stesso. Se il bearer non è IP-based,ci sarà il solito WAP proxy ad effettuare le conversioni protocollari;
 
** caching: senza connessione solitamente l'utente non può accedere alle applicazioni o ai dati. Tramite il caching si può accedere a del contenuto off-line,anche se solitamente inadeguato a completare delle transazioni;
 
* Wireless Web Server e wireless application server: sta in ascolto su porte appropriate e inoltra le risposte;spesso contiene specifici framework wireless che lo aiutano nella formattazione del contenuto wireless;Le richieste vengono accolte dal Web Server e girate al wireless application server,il quale eseguirà l'appropriata applicazione/azione in conseguenza alla logica della richiesta
 
* Back-end system: il server web tramite meccanismi vari,accederà ai dati/servizi necessari;
 
* il protocollo principale è il WAP;
 
 
 
 
 
''Pro e contro''
 
 
 
{| border=1
 
! Pro!! Contro
 
|-
 
| sviluppo software minimale o nullo,si cura solo il lato server|| richiede la connessione wireless per l'accesso ai <br>dati(ad eccezione del caching dei browser);
 
|-
 
| estende il modello di Internet|| l'UI è semplice,minimale,con capacità limitate per <br>contenuti grafici;
 
|-
 
|UI familiari|| l'eterogeneità vasta dei microbrowser rende la fase di testing<br> delle applicazioni difficile
 
|-
 
|disponibilità dei dati aggiornati|| performance ridotta per via della latenza e <br>al throughput di rete;
 
|-
 
|sicurezza:nessun dato,importante o meno,viene memorizzato<br> sul dispositivo client,ma resta tutto sul server|| se il server è down,i dati non sono più accessibili;
 
|-
 
|""|| problemi di sicurezza:WAP gap
 
|-
 
|""|| alti costi dovuti al tempo di connessione nelle <br>reti ''circuit-switched''
 
|}
 
 
 
 
 
'''Architettura smart-client'''
 
 
 
* si utilizzano applicazioni customizzate;
 
* permette la memorizzazione di dati sul dispositivo;
 
* non necessitano di connettività per poter essere eseguite e lavorare sui dati;
 
* L'integrazione con i dati dell'impresa avviene attraverso un processo di sincronizzazione;
 
* possiedono dei sistemi oeprativi in grado di far ''girare'' le applicazioni,usando librerie native all'OS o java;
 
* vi rientrano PDA,smart-phones,laptops,tabelt-pc,pocket pc;
 
 
 
'''''Componenti dell'architettura smart-client'''''
 
 
 
* smart-client: un eseguibile o un'applicazione java,che provvede ad incorporare i dati per memorizzarli;
 
* server di sincronizzazione: i dati vengono spediti al server di sincronizzazione,gestisce le comunicazioni con i database aziendali;
 
* database: vi accede il server di sincronizzazione attraverso svariati meccanismi
 
 
 
 
 
''Pro e contro''
 
 
 
{| border=1
 
! Pro!! Contro
 
|-
 
| i dati sono sempre disponibili ,anche senza copertura wireless.<br> Al massimo verranno sincronizzati più tardi|| richiede un'integrazione con le funzionalità d'impresa
 
|-
 
| Interfaccia sofisticata|| sviluppo complesso delle applicazioni
 
|-
 
| Performance elevate,per capacità di calcolo del dispositivo|| ""
 
|-
 
|disponibilità dei dati aggiornati|| complessità di sviluppo nella programmazione attraverso le API native del dispositivo(curva d'apprendimento elevata per diversi dispositivi).<br>Java aiuta tramite la sua portabilità a semplificare le cose
 
|-
 
|La tariffazione avviene per dati scambiati su retu packed-switched|| richiede cicli di sviluppo separati,aumentando il costo dello sviluppo stesso
 
|-
 
|Sicurezza gestita in entrambe le parti<br>e non delegata ad un gateway|| si aprono le porte al mondo dei virus
 
|}
 
 
 
 
 
'''''Architettura a messaggi'''''
 
 
 
Tre categorie principali:
 
 
 
# messaggistica utente-utente: si può usare l'e-mail,paging,SMS,I,EMS,MMS. Il software è messo già a disposizione nel dispositivo e lo sviluppo richiede cura per la maggior parte,solo del lato server;
 
# notifiche e allerte: pushing di informazioni urgenti(di solito un URL che permette di raggiungere l'informazione necessaria. Le tecnologie usate sono il WAP push e l'[http://en.wikipedia.org/wiki/HDML HDML]. Qui il software è parte del microbrowser;lo sviluppo richiede cura per la maggior parte,solo del lato server;
 
# messaggi fra applicazioni stesse: non si necessita dell'interazione con l'utente,server e client comunicano automaticamente,utile nelle sincronizzazioni con il server. Qui si richiede lo sviluppo di software che capisca il flusso di comunicazione fra client e server
 
 
 
''Componenti dell'architettura di messaggi applicazione-applicazione''
 
 
 
* Messaging client: usa la tecnica di [http://en.wikipedia.org/wiki/Store_and_forward store-and-forward] dei messaggi(quando c'è la disponibilità di una connessione li spedisce sennò mette i messaggi in coda);
 
* Messaging server: comunica con il client,il suo nome è [http://en.wikipedia.org/wiki/Message_Oriented_Middleware MOM](''Message Oriented Middleware''),molti dei quali sono basati su [http://en.wikipedia.org/wiki/Java_Message_Service JMS](''Java Message Service''). Usa anch'esso la comunicazione asincrona: non appena il client si connette,il server spedisce i messaggi che ha in coda per quel dispositivo;
 
* Sorgenti di dati: comprendono databases,altre applicazioni o sistemi di messaggistica con cui si interrelaziona il server;
 
 
 
 
 
{| border=1
 
! Vantaggi!! Svantaggi
 
|-
 
| funzionalità di push messaging|| aggiunge complessità allo sviluppo dell'applicazione
 
|-
 
| tecnica asincrona di trasmissione store-and-forward|| lo sviluppo deve essere curato sia lato client sia server
 
|-
 
| ricezione personalizzata dei dati(scheduling della consegna)|| incorporare funzionalità di messaging in un'applicazione<br> richiede sviluppo addizionale e testing;
 
|-
 
|opera sia su reti wireless sia wired|| ""
 
|}
 
 
 
 
 
'''''Processazione di una richiesta wireless'''''
 
 
 
# stabilimento di una sessione wireless(se non già connesso o always on);
 
# sottoposizione di una richiesta,attraverso il browser del client. Il server carpisce da essa informazioni varie: URL richiesto,tipo di dispositivo e browser,richiesta POST/GET. SOlitamente le informazioni vengono codificate in formato binario per risparmiare banda,inviate alla base station e poi al gateway,se necessario;;
 
# Traduzione richiesta,da parte del gateway se necessario,convertendo il formato da binario ad ASCII,traducendo dal protocollo WAP all'HTTP da spedire su una rete IP-based(WAP gap);
 
# la richiesta viene accolta dal [http://en.wikipedia.org/wiki/Application_server WAS] ed accede ad altre applicazioni/database attraverso servlet/JSP,ASP,PHP o altre interfacce.
 
# si identifica il client wireless(tipo dispositivo /browser,immagini supportate,linguaggio preferito,ecc).In base a ciò ci si assicura della fruibilità del contentuto da parte del client,formattandolo per le sue capacità;
 
# processazione della richiesta,una volta che l'utente si è autenticato. Se è una risorsa statica verrà ritornata al gateway,se richiede contenuto dinamico,si possono personalizzare i dati basandosi sulle informazioni a disposizione dell'utente. ,accedendo alle sorgenti di dati.
 
# trasformazione del contenuto per il dispositivo(cambiare il linguaggio di markup,tipo di immagini,spesso si usa XML come formato base poi traformato attraverso fogli di stile XSLT  per specifici browser e dispositivi);
 
# ritorno del contenuto al client,una volta appropriatamente formattato;
 
 
 
----
 
 
 
=== Lezione di Venerdì 28-10-05 ===
 
 
 
Meccanismi di richiesta dati da client a server,e sua risposta tramite due metodi principali:
 
# Uso di [http://it.wikipedia.org/wiki/CGI CGI] e simili: viene eseguito un processo separato per : ogni richiesta, l'output del programma viene rispedito in rete al client; '''N.B.:'''CGI non è nè un protocollo di comunicazione nè tanto meno un linguaggio, ma un sistema per definire delle variabili d'ambiente utilizzate dai processi; posso utilizzare i linguaggi che voglio, fra i più utilizzati troviamo [http://en.wikipedia.org/wiki/Perl ''perl''];
 
# Uso di server [http://it.wikipedia.org/wiki/Application_programming_interface API]: si usano librerie dinamiche linkate al codice del server ed eseguito come un tutt'uno. Abbiamo vere e proprie applicazioni client e server. Il server non è iterativo ma multiconcorrente, più thread (processi leggeri) vengono lanciati per ogni richiesta;
 
* Abbiamo visto cosa sono:
 
** [http://it.wikipedia.org/wiki/Servlet Java Servlet]: sono qualcosa di simile alle applet ma eseguite server-side;
 
** [http://en.wikipedia.org/wiki/JavaServer_Pages JSP] (Java Server Page): le richieste di questi file producono la loro compilazione in una servlet; vedi [http://forum.java.sun.com/forum.jspa?forumID=45 forum] della sun per chiarimenti;
 
** PHP 5.0.5: può essere usato per:
 
*** Server-side scripting
 
*** scripting a linea di comando
 
*** applicazioni grafiche client-side
 
   
 
Tutorial su Java Servlet e JSP:
 
* Tutorial della [http://java.sun.com/products/jsp/docs.html Sun]<br>
 
 
 
* Apache:
 
* Sito principale: [http://www.apache.org/ qui]<br>
 
* Guida su Apache: [http://freephp.html.it/guide/lezioni.asp?idguida=6 HTML.it]<br>
 
* Installazione modulo PHP su Apache: [http://openskills.info/topic.php?ID=89 qui] ''(anche se consiglio di leggersi le istruzioni di installazione nel file zip);'' <br>
 
* Tomcat,modulo per Apache: http://tomcat.apache.org/
 
 
 
* Guida ad IIS: [http://www.html.it/iis/01.htm qui]<br>
 
 
 
Tutorial per [http://en.wikipedia.org/wiki/PHP PHP]:
 
* [http://www.php.net/ Home page]
 
* risorse varie: [http://www.latoserver.it/php/pi-acca-pi.php3 qui]
 
* [http://www.zend.com/php/beginners/index.php PHP Absolute beginners]
 
* Guida PHP sul [http://www.php.net/manual/it/ sito ufficiale]
 
* Alcuni [http://www.phpclasses.org/browse/ scripts]
 
* Altre [http://freephp.html.it/ guide];
 
 
 
* [http://www.asp.net/Default.aspx?tabindex=0&tabid=1 ASP.NET]
 
 
 
* Programming links tutorial: http://apps.sholay.com/cgi-bin/jobs/tutoprog.html
 
 
 
----
 
 
 
=== Lezione di Venerdì 4-11-05 ===
 
 
 
Introduzione all'[http://www.w3.org/XML/ XML]
 
* Tutorial:
 
** http://www.w3schools.com/xml/default.asp
 
** http://www.html.it/xml/tutorial/
 
** http://xml.aspitalia.com/
 
** http://www.corsojava.it/testi/xml/index.jsp
 
** http://www.spiderpro.com/bu/buxmlm001.html
 
* XML e Apache: http://xml.apache.org/
 
 
 
----
 
 
 
=== Lezione di Martedì 8-11-05 ===
 
 
 
Linguaggi di markup
 
* WML
 
* [http://www.w3.org/TR/xhtml1/ XHTML], [http://www.w3c.it/traduzioni/REC-xhtml-basic-20001219-it.html XHTML Basic],  [http://www.w3c.it/traduzioni/xhtml1-it.html XHTML-MP]
 
* [http://www.w3.org/TR/REC-html40/ HTML], [http://www.w3.org/TR/voicexml20/ VoiceXML], [http://www.w3.org/TR/SVG/ SVG]
 
* Generazione dinamica con PHP e [http://www.mysql.com/ MySQL]
 
 
 
'''WAP,WML Tutorial:'''
 
* http://www.w3schools.com/wap/
 
* http://wapitalia.html.it/wml/
 
* http://www.wirelessdevnet.com/channels/wap/training/wml.html
 
* http://xml.coverpages.org/wap-wml.html
 
* http://www.zvon.org/xxl/WMLTutorial/Output/introduction.html
 
* http://www.wmlscript.it/j2me/index.asp
 
'''XHTML,riferimenti:'''
 
* http://www.html.it/xhtml/
 
* http://www.w3schools.com/xhtml/
 
* http://www.zvon.org/xxl/xhtmlReference/Output/
 
* http://www.digitalmediaminute.com/reference/entity/index.php
 
* http://www.xhtml.org/
 
'''XHTML-MP:'''
 
* [http://developer.openwave.com/dvl/support/documentation/guides_and_references/xhtml-mp_style_guide/ xhtml-mp_style_guide]
 
* http://www.developershome.com/wap/xhtmlmp/
 
* http://www.xml.com/pub/a/2004/04/14/mobile.html
 
* [http://htmllint.itc.keio.ac.jp/htmllint/tagslist.cgi?HTMLVersion=XHTML-MP tag list]
 
'''HTML:'''
 
* Validator Service: [http://validator.w3.org/ qui]
 
* http://www.w3schools.com/html/html_intro.asp
 
* http://www.cwru.edu/help/introHTML/toc.html
 
* http://www.html.it/guida/
 
'''VoiceXML:'''
 
* http://www.vxmlitalia.com/
 
* http://www.zvon.org/xxl/VoiceXMLReference/Output/
 
* http://www.vxml.org/
 
'''SVG:'''
 
* http://www.html.it/svg/
 
* http://www.svg-whiz.com/wiki/index.php?title=Main_Page
 
* http://www.dmi.unict.it/~snicotra/svgweb/
 
* http://www.w3schools.com/svg/default.asp
 
* [http://www.carto.net/papers/svg/comparison_flash_svg/ .SWF Vs SVG]
 
 
 
----
 
 
 
=== Lezione di Venerdì 11-11-05 ===
 
 
 
* [http://www.w3.org/TR/xslt XSLT]
 
<u>Tutorial</u>: http://www.w3schools.com/xsl/
 
: http://www.zvon.org/xxl/XSLTreference/Output/
 
: http://www.zvon.org/xxl/XSLTutorial/Books/Book1/
 
: http://www.xml.com/pub/a/2000/08/holman/
 
: [http://www.xslt.com/resources.html Risorse varie]
 
: http://www.html.it/xslt/
 
: http://www.topxml.com/xsl/tutorials/intro/default.asp
 
: http://www.topxml.com/xsl/XSLTRef.asp
 
* [http://www.w3.org/TR/xpath XPath]
 
<u>Tutorials</u>:
 
: http://www.w3schools.com/xpath/default.asp
 
: http://www.zvon.org/xxl/XPathTutorial/General/examples.html
 
: http://www.html.it/linguaggi_xml/xml_02.htm
 
: [http://www.topxml.com/xpathvisualizer/ Risorse varie]
 
* Applicare trasformazioni XSLT con PHP
 
----
 
=== Lezione di Martedì 15-11-05 ===
 
 
 
Generazione dinamica con XSLT - Esercitazione
 
----
 
=== Lezione di Venerdì 18-11-05 ===
 
 
 
<u>''J2ME - Prima parte''</u>
 
* [http://java.sun.com/j2me/index.jsp J2ME]
 
* [http://java.sun.com/j2me/docs/index.html Documentazione]
 
* http://www.wmlscript.it/j2me/index.asp  ''(Tutorial)''
 
* [http://billday.com/Work/J2ME/BillDay_j2meIntro.pdf Introduction to Java wireless programming] ''(PDF)'' <br>
 
* [http://billday.com/Work/RapidFire101/BillDay_wireless101.pdf Ricapitolazione argomenti trattati nelle lezioni di teoria]<br>
 
* [http://java.sun.com/products/sjwtoolkit/ Sun Java Wireless Toolkit]
 
* [http://java.sun.com/blueprints/wireless/ Tutorials della Sun]
 
* [http://developers.sun.com/events/techdays/presentations/brazil/DevelopingWirelessApplications.pdf Developing Wireless Applications] ''(PDF)''
 
* [http://developers.sun.com/techtopics/mobility/device/device J2ME Device list]
 
* [https://www6.software.ibm.com/developerworks/education/wi-smart/ Build a smart J2ME mobile application- part I] ''(accessibile previa registrazione)''
 
* [https://www6.software.ibm.com/developerworks/education/wi-smart2/ Build a smart J2ME mobile application- part II] ''(accessibile previa registrazione)''
 
* [http://www.j2mepolish.org/  J2ME Polish] ''(suite of tools for creating "polished" J2ME applications)'' <br>
 
* [http://www.wirelessdevnet.com/channels/java/features/j2me_http.phtml Network programming with J2ME]
 
* [http://wiki.java.net/bin/view/Javapedia Javapedia]
 
* http://www.javastaff.com/
 
* [http://www.microjava.com/ microjava.com]
 
 
 
----
 
 
 
=== Lezione di Martedì 22-11-05 ===
 
 
 
<u>''J2ME - Seconda parte''</u>
 
* [http://jcp.org/aboutJava/communityprocess/final/jsr118/index.html MIDP specification]
 
* [http://www.wmlscript.it/j2me/midp20.asp Guida MIDP 2.0]
 
* [http://en.wikipedia.org/wiki/J2ME '''Java 2 Micro Edition''' from wikipedia ''(EN)'']
 
* [http://en.wikibooks.org/wiki/Programming:J2ME '''Java 2 Micro Edition Programming''' from wikibooks ''(EN)'']
 
 
 
----
 
 
 
=== Lezione di Venerdì 25-11-05 ===
 
Intervento Microsoft sulla programmazione per il .Net Compact Framework.<br>
 
Sono [http://webdid.usr.dico.unimi.it/mobicomp/syllabus/files/499300.VS2005.ppt online] le slides in formato powerpoint.
 
 
 
----
 
=== Lezione di Martedì 29-11-05 ===
 
 
 
'''''[http://en.wikipedia.org/wiki/Location_Based_Services Servizi location-based]'''''
 
 
 
Sono applicazioni che si avvantaggiano dell'informazione spaziale per fornire un servizio tempestivo,usate per:
 
* trovare un luogo d'interesse;
 
* avere informazioni dettagliate su come raggiungere un luogo;
 
* informazioni sul luogo in cui si trova l'utente;
 
* traffico e congestione delle strade;
 
* tracking delle merci;
 
* localizzazione automatica del veicolo;
 
* mapping delle strade;
 
* informazioni meteorologiche;
 
* servizi di pronto soccorso;
 
* notifiche in relazione ad un luogo preciso;
 
 
 
Si dividono in tre generazioni:
 
# generazione: serve un input manuale dell'utente di informazioni di localizzazione(CAP,nome di una città,indirizzo,ecc). In base ad esse l'applicazione provvede a fornire contenuto personalizzato;
 
# generazione: determinano informazioni di localizzazione autonomamente senza coinvolgere l'utente. Offrono servizi simili e hanno un accuratezza simile alle applicazioni di prima generazione(un raggio di 2/3Km);
 
# generazione: ottengono informazioni di localizzazione più accurate e possono autonomamente far partire dei servizi in base al contesto. Forniscono aggiornamenti istantanei su vari servizi)mapping delle strade,direzioni,tracking,ecc). Si discute di problemi legati alla privacy.
 
 
 
 
 
'''''[http://en.wikipedia.org/wiki/GSM_localization Tecniche di localizzazione dei dispositivi]'''''
 
 
 
Hanno come obiettivo quello di localizzare un dispositivo mobile e convertire il luogo in delle coordinate.
 
 
 
* '''soluzioni network-based''': sono meno costose dell'alternativa anche se la loro precisione varia da alcune centinaia di metri a svariati chilometri a seconda della soluzione scelta. Si sfruttano delle base station,ognuna delle quali contiene un equipaggiamento per l'intercettazione radio che può riceve un segnale da un telefono attivo per esempio. Si può determinare la localizzazione del dispositivo prendendo in considerazione i segnali di una o più base stations. Più base stations sono coinvolte,più sarà accurata l'informazione di localizzazione;
 
** <u>Cell-identity</u>: è la tecnica più semplice ed economica. Si determina quale cella di una rete wireless il dispositivo sta usando e si comunica la sua localizzazione. Ha come svantaggio che non si può conoscere con certezza la posizione dell'utente all'interno della cella stessa. Il margine d'errore si aggira all'intorno a 1-2Km.<br>La situazione può migliorare se si considerano le microcelle invece della cella nella sua globalità.<br> Una ancora migliore soluzione è l'uso del [http://en.wikipedia.org/wiki/Timing_advance timing advance](TA):si misura il tempo che impiega il segnale partito da un dispositivo mobile a raggiungere la base station. Questo permette di restingere il raggio di individuazione del dispositivo all'interno della cella.Solitamente vengono sviluppate applicazioni che comunicano con l'MPC(''Mobile Positioning Center''),per carpire le informazioni TA con la tecnica di cell-identity(e si parla di CGI-TA ovvero ''Cell Global Identity Timing Advance''). Poichè in città ci sono più base station l'accuratezza è migliore i nquesti luoghi rispetto a quelli rurali.
 
** <u>Time Of Arrival(TOA)</u>: invece di usare una sola base station per localizzare il dispositivo,si usano le informazioni raccolte da 3 o più base station. Il segnale mandato dal dispositivo viene raccolto da tutte le base station in questione e tramine timing advance si calcolano i tempi di ricezione dei segnali(T1,T2,T3,...Tn).Viene richiesta una sincronizzazione fra le stazioni(usano un sistema GPS o un orologio atomico,entrambe soluzioni costose) ed accuratezza nelle misurazioni. Quindi è possibile effettuare una triangolazione delle coordinate attraverso intersezioni concentriche dei segnali ricevuti. Ha un margine d'errore che spazia dai 50m nelle aree urbane ai 150m nelle campagne.
 
** <u>[http://en.wikipedia.org/wiki/Angle_of_arrival Angle Of Arrival(AOA)]</u>: simile al TOA ma invece del tempo si sfrutta l'angolo con cui un segnale arriva alla stazione. Confrontando l'AOA fra più base stations(almeno 3)si può triangolare la posizione relativa di un dispositivo. Talvolta si usano entrambi AOA e TOA per una maggiore precisione. Tutto ciò sfrutta il [http://it.wikipedia.org/wiki/Teorema_dei_seni teorema dei seni];
 
* '''soluzioni Handset-based''': sono più costose delle network-based ma hanno una precisione maggiore: è possibile localizzare un dispositivo con un margine di errore di alcuni metri dal dispositivo;
 
** E-OTD: simile al TOA ma la misurazione del tempo di arrivo viene eseguita da degli handset. Si misura il tempo di arrivo dei segnali dalla base station a due punti:il dispositivo mobile e la LMU(''Local Measuring Unit''),un luogo fissato. Servono almeno 3 base station per un'accurata triangolazione. Le base station devono mandare al dispositivo un tempo molto preciso,tutti i segnali spediti da esse devono essere spediti contemporaneamente,per considerare meglio il possibile movimento del dispositivo. LMU provvede un'accurata sorgente di misurazione dei tempi. Una volta calcolati i tempi l'handset registra le differenze di tempo dalle base stations. Dopo di che le distanze del dispositivo dalle stazioni possono essere calcolate comparando le differenze di tempo dalle misurazioni precedentemente effettuate. Le differenze di tempo possono essere convertite in una distanza poichè la velocità dei segnali è costante. La locazione relativa può essere calcolata in riferimento alla rete o all'handset. Le misurazioni avvengono attraverso software sopra a dell'hardware per i calcoli. Dalla posizione relativa si ottiene quella assoluta poichè conosciamo le posizioni delle base stations. <br> La precisione dell'E-OTD ha un margine d'errore fra i 50-100m
 
** [http://en.wikipedia.org/wiki/Global_Positioning_System GPS]: tecnologia di localizzazione più popolare utilizzata oggi. Usa 24 satelliti in orbita terrestre che mandano segnali a ricevitori GPS. I ricevitori possono comunicare con 3/4 satelliti contemporaneamente. L'unico svantaggio è che necessita di una linea di vista diretta con il satellite,rendendolo inutilizzabile all'interno di edifici per esempio. Una volta che il ricevitore ha ricevuto le misurazioni di posizionamento,può o calcolare direttamente nel dispositivo stesso le coordinate(richiedendo per questa soluzione hardware appropriato,facendone aumentare il costo) o demandare il calcolo ad un server di rete. Eventualmente si può connettere via Bluetooth(per es.)il ricevitore ad un dispositivo mobile per i calcoli,per non integrare l'hardware nel dispositivo stesso,risparmiando energia sulla batteria.<br> Funzionamento: i satelliti inviano costantemente segnali ai ricevitori GPS. Quest'ultimi calcolano quanto tempo ci mettono (almeno)3 segnali da 3 differenti satelliti ad essere ricevuti. Conoscendo la velocità del segnale,il ricevitore calcola la distanza dal satellite. E' importante la precisione assoluta,per evitare errori chilometrici,quindi a bordo dei satelliti ci sono orologi atomici a garantirla. Dopo di che si eseguono calcoli di triangolazione per calcolare le coordinate assolute. il GPS fornisce un margine d'errore dai 5m ai 40m,e può fornire informazioni tridimensionali date da latitudine,lingitudine ed elevazione.<br>A causa del bisogno della linea diretta di vista fra ricevitore e satellite,si può accompagnare questa tecnologia con una network based come backup in caso il GPS non possa essere usato. Un altro punto a sfavore è il tempo richiesto per ottenere i risultati(20/40 secondi).<br>Una soluzione è il [http://en.wikipedia.org/wiki/A-GPS A-GPS](o network-assisted GPS): si usano handset modificati che ricevono i segnali dai satelliti e li mandano ad un server di rete. Il server usa l'A-GPS per la misurazione dei dati. Quindi raccolgono regolarmente dati forniti dai satelliti fornendoli agli handset,svincolandoli dal peso di decodificare i messaggi satellitari attuali ma permettendogli di fare subito le misurazioni temporali,permettendo di fornire le informazioni di localizzazione in soli 1/8 secondi. Le computazioni complesse vengono fatte sul server.
 
 
 
 
 
----
 
 
 
=== Lezione di Venerdì 2-12-05 ===
 
 
 
'''******************Stato di Updating******************'''
 
{| style="width: 75%; padding: 3px; background: #f7f8ff; border: 1px solid gray; margin: 0 auto;" |
 
|''Questo articolo è solo un abbozzo (''stub''). Se puoi contribuisci adesso a migliorarlo secondo le convenzioni di Wikipedia.''
 
|}[[Immagine:Stub.jpg]]
 
 
 
 
 
* ccpp: recommendation del W3C
 
 
 
----
 
 
 
=== Lezione di Martedì 6-12-05 SOSPESA===
 
 
 
Annullata.
 
 
 
----
 
=== Lezione di Venerdì 9-12-05 SOSPESA===
 
 
 
Annullata.
 
 
 
----
 
=== Lezione di Martedì 13-12-05 ===
 
 
 
'''******************Stato di Updating******************'''
 
 
 
* Architettura CARE
 
 
 
=== Lezione di Venerdì 16-12-05 ===
 
 
 
'''******************Stato di Updating******************'''
 
 
 
* Cocoon
 

Versione attuale delle 11:01, 28 lug 2007

Disambigua compass.PNG
Questa è una pagina di introduzione al corso: contiene i turni, le modalità d'insegnamento, alcune informazioni generali ed eventuali giudizi sul corso in questione. Se sei giunto qui passando da un link, puoi tornare indietro e correggerlo in modo che punti direttamente alla voce appropriata.

Turni

A.A. passati

Informazioni

Docenti

  • Prof. Claudio Bettini
  • Collaborazione di Daniele Riboni
    • riboni [AT] dico [DOT] unimi [DOT] it

Modalità d'esame

  • L'esame consiste in un test scritto durante il corso sugli argomenti affrontati (o alternativamente in un orale durante gli appelli) e nella realizzazione, presentazione e discussione di un progetto (che richiede programmazione su dispositivo e lato server).
  • Informazioni dettagliate sullo svolgimento del progetto si trovano sulla pagina del corso

Prerequisiti al corso

  • Indicato principalmente per studenti della laurea magistrale. Ammessi anche gli iscritti al terzo anno della triennale
  • Esami di Programmazione (Java preferibilmente) e Sistemi operativi verbalizzati
  • Nozioni di Reti di calcolatori e di Basi di dati (almeno corsi seguiti)

Giudizio sul corso

I giudizi di seguito espressi sono il parere personale degli studenti,
e potrebbero non rispecchiare il parere medio dei frequentanti.
Non vi è comunque alcun intento di mettere alla gogna i docenti del corso!
Interesse della materia (da 1 a 5 - aiuto)
____________________
Difficoltà del corso (da 1 a 5 - aiuto)
____________________
Difficoltà del corso per non frequentanti (da 1 a 5 - aiuto)
____________________
Ore di studio richieste (da 1 a 5 - aiuto)
____________________