468x60
Visualizzazione post con etichetta ingegneria del software. Mostra tutti i post
Visualizzazione post con etichetta ingegneria del software. Mostra tutti i post

mercoledì 18 agosto 2010

Multitenancy

Multi-tenancy (multi-locazione) si riferisce a un principio di architettura del software in cui una singola istanza del software gira su un server, che serve più clienti (tenants, cioè inquilini). Il multi-tenancy è l'opposto di una architettura multi-istanza, dove separate istanze del software (o sistemi hardware) sono istituiti per diversi clienti. Con una architettura multi-tenant, un'applicazione software è progettata per partizionare virtualmente i dati e la configurazione così che ogni cliente lavora con un'istanza personalizzata delle applicazioni virtuali.

mercoledì 23 dicembre 2009

La realtà aumentata

Cos'è
La realtà aumentata (in inglese augmented reality, abbreviato AR) è la sovrapposizione di livelli informativi ( elementi virtuali e multimediali, dati geolocalizzati etc) ad un flusso video che riprende la realtà di tutti i giorni. Gli elementi che "aumentano" la realtà possono essere visualizzati attraverso un device mobile, come un telefonino di ultima generazione, (es. l'iPhone 3GS o un telefono Android) o con l'uso di un pc dotato di webcam. Il sovrapporsi di elementii reali e virtuali crea una "Mixed Reality".

Tipologie di Realtà Aumentata
- La Realtà Aumentata su piattaforma mobile: Il telefonino o smartphone di ultima generazione deve essere dotato necessariamente di Gps per il posizionamento, di magnetometro (bussola) e deve poter permettere la visualizzazione di un flusso video in tempo reale, oltre che di un collegamento internet per ricevere i dati online. Il telefonino inquadra in tempo reale la realtà , alla quale vengono sovrapposti i livelli di contenuto, da dati da PDI Punti di Interesse geolocalizzati ad elementi 3d.

- La Realtà Aumentata su desktop computer è basata su l'uso di markers, o ARtags, dei disegni stilizzati in bianco e nero che vengono mostrati alla webcam, vengono riconosciuti dal pc, ed ai quali vengono sovrapposti in tempo reale i contenuti multimediali: video, audio, oggetti 3d etc. Normalmente le applicazioni di Realtà aumentata sono basati su tecnologia Adobe Flash e quindi fruibili da un qualsiasi browser Internet standard. Anche definita Augmented Advertising è esplosa nel 2009 per numerose campagne di comunicazione da da corporate brands come Toyota Lego, Mini, Kellogs, General Electrics, cantanti come Eminem Johm Mayer o riviste come Colors o Esquire Magazine.

Applicazioni di Realtà Aumentata
Già usata in ambiti molto specifici come nell'ambito militare e medicale o nella ricerca accademica, nel 2009 grazie al miglioramento della tecnologia la realtà aumentata è arrivata al grande pubblico sia come campagne di comunicazione augmented advertising pubblicate sui giornali o sulla rete, sia attraverso un numero sempre crescente di applicazioni per telefonini, in particolare per iPhone. È oggi infatti possibile con la realtà aumentata trovare informazioni rispetto al luogo in cui siamo - alberghi bar ristoranti, stazioni della metro etc - ma anche visualizzare e foto dai social network come Flickr o voci Wikipedia sovrapposte alla Realtà; trovare i Twitters vicino a noi; ritrovare la macchina parcheggiata; trovare le stazioni della metro più vicine; giocare a catturare fantasmi e fate invisibili usando una intera città come campo di gioco; taggare luoghi… inserire dei messaggini in Realtà Aumentata in un luogo specifico come fanno già i teenager giapponesi per incontrarsi...dei graffiti invisibili se non attravero il telefonino.

Alcuni links a bellissimi demo:

mercoledì 30 settembre 2009

Pattern architetturale Model-View-Controller

Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è un pattern architetturale molto diffuso nello sviluppo di interfacce grafiche di sistemi software object-oriented. Originariamente impiegato dal linguaggio Smalltalk, il pattern è stato esplicitamente o implicitamente sposato da numerose tecnologie moderne, come framework basati su PHP (Symfony, Zend Framework), su Ruby (Ruby on Rails), su Python (Django), su Java (Swing, JSF e Struts), su Objective C o su .NET. A causa della crescente diffusione di tecnologie basate su MVC nel contesto di framework o piattaforma middleware per applicazioni Web, l'espressione framework MVC o sistema MVC sta entrando nell'uso anche per indicare specificamente questa categoria di sistemi (che comprende per esempio Ruby on Rails, Struts, Spring, Tapestry e Catalyst).

Struttura

Il pattern è basato sulla separazione dei compiti fra i componenti software che interpretano tre ruoli principali:
  • il model fornisce i metodi per accedere ai dati utili all'applicazione
  • il view visualizza i dati contenuti nel model e si occupa dell'interazione con utenti e agenti
  • il controller riceve i comandi dell'utente (in genere attraverso il view) e li attua modificando lo stato degli altri due componenti
Questo schema, fra l'altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata "logica di business"), a carico del controller e del model, e l'interfaccia utente a carico del view.

lunedì 31 agosto 2009

Correzione differenziale GPS wireless


Lavorando al progetto di ricerca PROMIS ho dovuto realizzare un sistema per la correzione differenziale delle posizioni GPS.
Il Global Positioning System (GPS) permette, mediante la ricezione di informazioni da parte di satelliti in orbita a bassa quota, di determinare la propria posizione sul globo terrestre. La presenza dell'atmosfera determina una componente di variazione aleatoria del ritardo di propagazione dei segnali GPS, e pertanto la misura di posizione terrestre è di accuratezza ridotta, e nota solo a meno di un errore di decine di metri, o più, in caso di condizioni atmosferiche perturbate od infelice posizionamento dei satelliti.
Nel terminal del Porto di Gioia Tauro è presente una stazione differenziale (detta Base Station) la cui posizione è ben nota, e che riceve anch'essa il segnale GPS. Presso la Base Station, viene quindi calcolato un segnale di errore di posizione, che è lo stesso di quello di tutti i ricevitori GPS vicini alla Base Station stessa (le condizioni atmosferiche sono infatti le stesse).
Il segnale di correzione differenziale (DGPS) viene tradizionalmente trasmesso via porta seriale (o via radio), ed una volta integrato con l'informazione GSP, comporta un aumento dell'accuratezza della misura di posizione, il cui errore si riduce a pochi metri.
Nell'ambito del progetto PROMIS ho realizzato un server DGPS che trasmette in multicast le correzioni differenziali a tutti i client in ascolto, ed un client che da un lato riceve le correzioni differenziali trasmesse, e dall'altro comunica il segnale di correzione al ricevitore GPS, e ne visualizza le informazioni di posizione corrette.


venerdì 20 marzo 2009

JavaBeans - codice d'esempio di utilizzo

Vediamo un semplice esempio di JavaBean, realizzato per contenere le informazioni di un utente durante la sua permanenza nel sito web:

Utente.java

public class Utente {
private String nome = null;
private String email = null;
private int pagineViste;

public Utente() {
pagineViste=0;
}

public aggiornaPV(){
pagineViste++;
}

public int getPagineViste(){
return pagineViste;
}

public void setNome(String value) {
nome = value;
}

public String getNome() {
return nome;
}

public void setEmail(String value) {
email = value;
}

public String getEmail() {
return email;
}

public String riassunto(){
String riassunto = null;
riassunto = "Il nome dell'utente è"+nome+",";
riassunto+= "il suo indirizzo e-mail è: "+email;
riassunto+=" e ha visitato "+pagineViste+" del sito";
return riassunto;
}

}//Utente

Come è facile capire, questo JavaBean contiene il nome dell'utente ed i metodi per modificarlo e restituirlo, il suo indirizzo e-mail con i relativi metodi, il numero di pagine viste dall'utente e un metodo che restituisce un riassunto schematico dei dati dell'utente.

Ecco come utilizzarli:

<html>
<head><title>Utilizzo del Bean</title></head>
<body>
<jsp:useBean id="utente" scope="session" class="InfoUtente"/>

Viene creata un'istanza del bean Utente con ambito session.

<jsp:setProperty name="utente" property="nome" value="MioNome"/>

Le proprietà del bean possono essere impostate con l'azione setProperty o agendo direttamente con i metodi creati appositamente.

<%
utente.setNome("MioNome");
utente.setEmail("mionome@miodominio.it");
%>

Lo stesso vale per la lettura dei bean che puo essere fatta con l'azione:
<jsp:getProperty name="utente" property="nome"/>

o con i metodi creati appositamente:
<%
out.println(utente.getNome());
out.println(utente.riassunto());
%>

Per incrementare il numero di pagine viste è sufficiente richiamare il metodo incrementaPV() e per ottenere il valore getPV():
<%
utente.aggiornaPV();
out.println(utente.getPagineViste());
%>

JavaBeans - come utilizzarli

Esistono tre azioni standard per facilitare l'integrazione dei Java Beans nelle pagine JSP:

1)
Permette di associare un'istanza di un JavaBean con un determinato ID ad una variabile script dichiarata con lo stesso ID. In pratica offre la possibilità di associare la classe contenuta nel JavaBean ad un oggetto visibile all'interno della pagina, in modo da poter richiamare i suoi metodi.
Attributi:
Id: codice identificativo dell'oggetto.
Scope: ambito dell'oggetto, i possibili valori sono:
  • page: gli oggetti con questo ambito sono accessibili solo all'interno della pagina in cui sono stati creati, in pratica possono venire paragonati alle variabili locali di un linguaggio di programmazione, vengono distrutte alla chiusura della pagina e i dati saranno persi;
  • request: gli oggetti con questo ambito sono accessibili esclusivamente nelle pagine che elaborano la stessa richiesta di quella in cui è stato creato l'oggetto, quest'ultimo inoltre rimane nell'ambito anche se la richiesta viene inoltrata ad un'altra risorsa;
  • session: gli oggetti definiti in quest'ambito sono accessibili solo alle pagine che elaborano richieste all'interno della stessa sessione di quella in cui l'oggetto è stato creato per poi venire rilasciati alla chiusura della sessione a cui si riferiscono, in pratica restano visibili in tutte le pagine aperte nella stessa istanza (finestra) del Browser, fino alla sua chiusura. Solitamente i JavaBeans istanziati in questo modo vengono utilizzati per mantere le informazioni di un utente di un sito;
  • application: gli oggetti definiti in quest'ambito sono accessibili alle pagine che elaborano richieste relative alla stessa applicazione, in pratica sono validi dalla prima richieta di una pagina al server fino al suo shotdown.
  • class: nome della classe che definisce l'implementazione dell'oggetto beanName: contiene il nome del JavaBean che, come già accennato deve coincidere con il nome del file .class (senza estensione)

Esempio:

Crea un'istanza della classe "nomeClasse" con ambito "session" richiamabile attraverso l'id "nomeBean". Da questo momento sarà possibile accedere a metodi e variabili (pubbliche) attraverso la sintassi nomeBean.nomeMetodo e nomeBean.nomeVariabile, rispettivamente per metodi e variabili.

2)

Permette di impostare il valore di una delle proprietà di un JavaBean.

Attributi:

  • name: nome dell'istanza di JavaBean definita in un'azione
  • property: rappresenta la proprietà di cui impostare il valore
  • param: nome del parametro di richiesta il cui valore si vuole impostare
  • value: valore assegnato alla proprietà specificata

Esempio:

permette di assegnare il valore "parametro" alla proprietà "nomeProp" del bean di nome nomeBean.

3)

Prende il valore di una proprietà di una data istanza di JavaBean e lo inserisce nell'oggetto out implicito (in pratica lo stampa a video).

Attributi:

  • name: nome dell'istanza di bean da cui proviene la proprietà definita da un'azione
  • property: rappresenta la proprietà del bean di cui si vuole ottenere il valore

Vediamo un codice d'esempio di utilizzo...

giovedì 19 marzo 2009

JavaBeans

Le JSP (Java Server Pages) sono estensioni delle servlet Java, di conseguenza consentono di ottenere tutti i risultati di questi ultimi. Lo svantaggio delle Servlet è però rappresentato, come per tutti gli script CGI, dalla difficoltà di manutenzione del codice HTML delle applicazioni eccessivamente complesse, in quanto il più delle volte contengono una quantità di codice script eccessiva.

Soluzione a questo problema è rappresentata dai Java Beans, componenti software contenenti una classe Java, che possono venire inclusi in una pagina JSP, permettendo quindi un ottimo incapsulamento del codice, peraltro riutilizzabile. Al programmatore quindi sarà pressochè invisibile la sezione di codice puro, sostituito da richiami ai metodi delle classi incluse.

I Java Beans sono costituiti esclusivamente da codice Java, salvati con estensione .java e compilati (per esempio con il compilatore Java JDK) generando un file di estensione .class. Sarà il file .class che dovrà venire incluso nella pagina JSP. Da ricordare che in Java i file devono avere lo stesso nome della classe, lettere maiuscole e minuscole comprese.

Vediamo come utilizzarli...

giovedì 12 marzo 2009

Enterprise Service Bus - infrastruttura a supporto di architetture SOA complesse

Un Enterprise Service Bus (ESB) è un'infrastruttura software che fornisce servizi di supporto ad architetture SOA complesse. Un ESB si basa su sistemi disparati, interconnessi con tecnologie eterogenee, e fornisce in maniera consistente servizi di orchestration, sicurezza, messaggistica, routing intelligente e trasformazioni, agendo come una dorsale attraverso la quale viaggiano servizi software e componenti applicativi. Un ESB si contraddistingue come soluzione migliorativa, rispetto ad altre più classiche di tipo SOA oriented in quanto ad esso sono delegati i servizi comuni denominati core service che andrebbero altresì realizzati. L'ESB concettualmente prevede la suddivisione in isole tecnologiche e/o applicative, la connessione al BUS infrastrutturale è assicurata attraverso principi di binding multiplo sia in modalità loose coupling che via adapting.

sabato 31 gennaio 2009

BIRT - Business Intelligence and Report Tools (open source)

BIRT è un progetto open source di Eclipse. BIRT è un sistema di reportistica open source che si integra con le applicazioni web e fornisce funzionalità fondamentali come quelle per impostare il layout dei report, la creazione di grafici, l’accesso ai dati e la gestione di script. I report possono essere generati in formato HTML o PDF.

BIRT ha due componenti principali: un designer di report basato su Eclipse ed un componente di runtime che è possibile aggiungere al proprio application server (io l'ho provato su Tomcat e va benissimo). Inoltre mette a disposizione un sistema che consente la generazione di grafici direttamente dalle applicazioni.

Con BIRT è possibile aggiungere alle applicazioni un’ampia varietà di report:

  • Elenchi - I report più semplici sono elenchi di dati. Via via che gli elenchi si allungano, si possono utilizzare dei raggruppamenti per organizzare i dati correlati (ordini raggruppati per cliente, prodotti raggruppati per fornitore e così via). Se i dati sono numerici, si possono facilmente aggiungere totali, medie e altre funzioni di riepilogo.
  • Grafici - I dati numerici si apprezzano meglio quando sono presentati in forma di grafico. BIRT fornisce vari tipi di grafici: a torta, a linea, a barre e molti altri. I grafici BIRT possono essere rappresentati in SVG e supportano gli eventi per gestire l’interazione con l’utente.
  • Matrici - Dette anche “tabelle incrociate”, visualizzano i dati in due dimensioni: per esempio vendite per trimestre, o hit per pagina web.
  • Lettere e documenti - Con BIRT è facile creare moduli, fatture e altri documenti che possono includere testo, formattazione, elenchi, grafici e altro.
  • Report composti - Molti report devono riunire in un singolo documento vari tipi di dati. Per esempio, una scheda cliente potrebbe elencare le informazioni anagrafiche, i testi delle promozioni correnti ed elenchi per la situazione di pagamenti e commissioni. Un report finanziario potrebbe includere note di esclusione da responbabilità, grafici e tabelle con ampio uso di formattazione in linea con l’immagine coordinata aziendale.

AUTOMA – AUTOmobile logistic MAnagment

Durante lo svolgimento della mia tesi di laurea ho attivamente partecipato ad un altro interessante progetto di ricerca industriale: AUTOMA. I risultati che ho ottenuto col data mining nella sperimentazione per questo progetto sono stati davvero interessanti.

Vediamo cos'è AUTOMA:

Obiettivi. Il progetto punta a ottenere importanti risultati di ricerca nell'area della logistica automobilistica, al fine di sviluppare un sistema innovativo (AUTOMA) per la gestione di hub di distribuzione di automobili.

Tale sistema, sfruttando le opportunità derivanti dalle tecnologie informatiche e delle telecomunicazioni, permetterà di giungere ad una ottimizzazione nei processi di gestione dei flussi di distribuzione di automobili nel porto di Gioia Tauro.

Inoltre, in prospettiva futura, i risultati del progetto saranno funzionali al consolidamento di un indotto in grado di intervenire sul completamento dei processi produttivi delle automobili contribuendo allo sviluppo ulteriore dell'intera area.

Aree di ricerca. Il progetto affronta una serie di ambiti di ricerca fondamentali:

  • Gestione automatizzata di piazzale, ottimizzazione e image processing per lo sfruttamento ottimo del piazzale, miglioramento delle procedure di carico e scarico di lotti di autovetture e verifica automatica di danni;
  • Tracking e localizzazione attraverso l'adozione di sistemi a RF per l'identificazione automatica delle autovetture e relativi metodi automatici di data acquisition;
  • Workflow management per l'erogazione di servizi evoluti e supporto alla distribuzione di automobili;
  • Interfacce adattative, multicanalità, multimodalità, sviluppo di Rich Application su dispositivi, canali e terminali eterogenei anche di tipo mobile.

L'approfondimento di queste linee di ricerca è indirizzato alla realizzazione di alcune funzionalità specifiche che dovranno essere caratterizzanti il nuovo sistema AUTOMA e che consentano di:

  • conoscere, in un dato momento e per ogni automobile, in quale fase del processo distributivo questa è coinvolta, su quale vettore è localizzata, l'insieme degli eventi (ivi compresi eventuali danni subiti) che l'hanno riguardata;
  • ottimizzare le attività di piazzale ed automatizzare alcune delle procedure che coinvolgono lo scarico, il carico e lo stoccaggio dei lotti di autovetture;
  • ottimizzare il processo di distribuzione complessivo tenendo giusto conto delle caratteristiche di intermodalità di questo;
  • fornire un accesso multicanale e multimodale, garantendo la giusta operatività anche su maschere e procedure potenzialmente complesse.

Piano di lavoro. La concretizzazione dei risultati della ricerca avviene attraverso uno specifico piano operativo articolato in più obiettivi realizzativi:

  • OR1. Gestione di piazzale, ottimizzazione e image processing;
  • OR2 Tracking, localizzazione attraverso l'adozione di sistemi a RF per l'identificazione automatica delle autovetture e relativi metodi automatici di data acquisition;
  • OR3 Workflow management per l'erogazione di servizi evoluti e supporto alla distribuzione di automobili;
  • OR4 Definizione di metodi, modelli, tecniche e strumenti per lo sviluppo di interfacce adattative e multicanale;
  • OR5 Architettura del sistema AUTOMA e metodologia d'integrazione dei moduli;

Partner. Il progetto, che dovrà essere realizzato in 30 mesi (Gen. 2006- Giu. 2008) , coinvolge i seguenti soggetti:

  1. BLG Automobile Logistics Italia (BLG) s.r.l.
  2. HOLBE DIALOQUE EUROPE (HDE) s.p.a.
  3. EXEURA s.r.l.
  4. ORANGEE s.r.l.
  5. SO.G.A.S. s.p.a.
  6. 3I s.n.c.
  7. UNIVERSITà DELLA CALABRIA
  8. UNIVERSITà MEDITERRANEA DI REGGIO CALABRIA

PROMIS - logistic PROcess Management and Intelligence System

E' stato molto interessante partecipare al progetto di ricerca industriale PROMIS, svolgendo attività di ricerca finalizzate allo sviluppo di software innovativi. Nell'ambito di tale progetto mi sono occupato di:
  • Data mining per la logistica
  • Rilevamento e trasmissione wireless della posizione GPS di veicoli
  • Tracking delle posizioni GPS su una mappa digitale interattiva
  • Correzione differenziale GPS wireless
  • Berth Allocation Program
Durante la sperimentazione per il progetto PROMIS, sia nella ricerca di tesi che al lavoro presso MCT, ho ottenuto risultati molto interessanti ed ho notevolmente ampliato le mie conoscenze.


Vediamo meglio cos'è PROMIS:

Obiettivo. Obiettivo fondamentale del progetto è quello di sviluppare un sistema innovativo (PROMIS) che conduca ad una ottimizzazione del processo di gestione dei terminali marittimi, fondato su una visione orientata ai processi delle attività di logistica integrata che avvengono all'interno di grandi hub portuali collegati a reti di trasporto intermodali.

Motivazioni. L'attività di un terminale marittimo per container necessita di un sistema di gestione informatizzato che assicuri alle compagnie di navigazione tempi di crociera più brevi, standard di servizio superiori e, allo stesso tempo, permetta di massimizzare l'utilizzo del personale e degli equipaggiamenti.

Sulla base dei risultati dell'attività di ricerca, si procederà alla progettazione e realizzazione di un dimostratore che, attraverso l'implementazione delle metodologie e delle tecniche sperimentate, consenta di verificare i margini esistenti per migliorare l'efficienza delle attività logistiche e conseguentemente l'economicità complessiva di tutta la gestione del terminal portuale.

Inoltre, in considerazione dell'impatto che le attività logistiche hanno sulle filiere produttive dell'indotto, si cercherà di approfondire lo studio delle metodologie per la facilitazione delle interazioni tra il porto e il mondo esterno. Tale attività dovrebbe portare alla creazione di un Collaborative Logistic Network (CNL) che favorisca l'affermarsi di nuovi e più efficienti modelli di business lungo tutto il ciclo che va dalla produzione alla distribuzione di beni.

Aree di ricerca. Date tali finalità, l'attività di ricerca sarà concentrata su alcune aree tematiche ritenute fondamentali:

  • Pianificazione integrata delle operazioni di attracco delle navi, carico e scarico dei contenitori e gestione del piazzale
    Rivisitazione/integrazione dei molteplici modelli di studio di queste operazioni presenti in dottrina e adeguamento degli stessi alle condizioni di concreta operatività del porto di Gioia Tauro.
  • Modelli per la gestione dell'intermodalità e strategie di medio lungo periodo
    In considerazione del previsto potenziamento della dotazione infrastrutturale ferroviaria l'analisi dei processi di gestione delle operazioni di carico/scarico dei container trasportati in ferrovia meritino un adeguato approfondimento. Infatti, l'introduzione in questo ambito di nuove e più innovative tecnologie risulta determinante per un miglioramento complessivo della competitività del porto e dei servizi logistici offerti.
  • Gestione del routing dei mezzi per la movimentazione del piazzale
    I modelli di ricerca sviluppati dovranno analizzare i movimenti di piazzale e ricombinarli in modo tale da minimizzare i movimenti a vuoto e giungere ad una accelerazione complessiva delle operazioni.
  • Simulazione e ottimizzazione mediante simulazione
    Rientrano in questo ambito l'insieme delle attività di verifica e valutazione del valore delle soluzioni adottate mediante in ricorso agli strumenti della simulazione discreta ad eventi.
  • Sistemi wireless per la distribuzione dei dati rilevati
    Sono oggetto di studio soluzioni innovative, basate su tecnologie wireless avanzate, per la distribuzione fra i vari attori del sistema complessivo dei dati provenienti dai sistemi per il posizionamento e per l'identificazione in modalità integrata, in modo da garantire l'accesso alle stesse in maniera ubiqua da parte dei vari operatori e utenti
  • Metodologie e tecniche informatiche a supporto dei processi logistici
    Accanto alle tecniche di ottimizzazione tipiche della ricerca operativa, si propongono tecniche alternative basate sull'utilizzo di agenti software.
  • Metodologie e tecniche informatiche a supporto dei processi decisionali
    Scopo di questa linea di ricerca è lo studio di tecniche ed algoritmi per la costruzione di un data warehouse al fine di ottimizzare il processo di estrazione e analisi di dati e informazioni con scopi di information extraction e competitive intelligence.
  • Architetture software innovative
    La ricerca è indirizzata allo studio e all'adozione di innovative architetture software (service oriented architecture- supporto al lavoro operativo su Grid) per al costruzione di un sistema informatico di gestione complessiva delle attività che permetta un facile accesso ai diversi attori coinvolti.

Piano di lavoro. I risultati delle attività di ricerca saranno conseguiti sulla base di precisi obiettivi realizzativi (OR), sviluppati in un arco temporale di 30 mesi:

  • OR1 - Analisi di scenario e definizione delle caratteristiche del sistema;
  • OR2 - Modelli di ottimizzazione per la gestione integrata delle operazioni di banchina e piazzale;
  • OR3 - Modelli di ottimizzazione per l'innovazione tattico/strategica e tecnologica nella gestione dei terminali per container;
  • OR4 - Event Simulation and Scenario Analysis;
  • OR5 - Metodologie e tecniche informatiche a supporto dei processi logistici;
  • OR6 - Metodologie e tecniche informatiche a supporto dei processi decisionali;
  • OR7 - Tecnologie e dispositivi wireless per la trasmissione dei dati e l'interfacciamento al sistema;
  • OR8 - Architetture software innovative e integrazione dei dimostratori;

Partner. La realizzazione del progetto coinvolge i seguenti soggetti:

  • HERZUM SOFTWARE SOLUTIONS CENTER (HSSC) s.r.l. (Pizzo, VV)
  • HOLBE DIALOQUE EUROPE (HDE) s.p.a. (Udine)
  • EXEURA s.r.l.
  • MEDCENTER CONTAINER TERMINAL (MCT) s.p.a.
  • METHODI s.r.l.
  • UNIVERSITà DELLA CALABRIA
  • UNIVERSITà MEDITERRANEA DI REGGIO CALABRIA

Tecniche di Data Mining per applicazioni della logistica: il caso del porto di Gioia Tauro

L’argomento che ho affrontato nella mia tesi di laurea è stato la ricerca di un nuovo metodo di ottimizazione del piazzale del porto di Gioia Tauro attraverso lo studio, l’analisi e l’utilizzo di tecniche di Data Mining, al fine di realizzare un software che permetta di risolvere i numerosi problemi inerenti all’attività mercantile del porto.
Ogni giorno il porto di Gioia Tauro accoglie una quantità enorme di navi mercantili, le quali, ad ogni sbarco, depositano altrettante partite di merci destinate al commercio e alla distribuzione al di fuori dell’area del porto. Data la grande mole di movimentazione delle merci nelle banchine del porto, le quali a loro volta sostano al suo interno in attesa di essere smaltite, con tempi di permanenza che variano a seconda della merce stessa, sorge la necessità di migliorare la gestione del piazzale, ottimizzando l’organizzazione dello stesso in merito ai tempi e allo spazio innanzitutto.
L’attuale approccio utilizzato nello stoccaggio delle merci usa come criterio di discernimento il porto di destinazione, che in numerosi casi risulta come dato sconosciuto, e le caratteristiche della merce, mirando a conferire alla merce una collocazione ottimale sul piazzale in base alla movimentazione futura ipotizzata. Finora, tale approccio si è dimostrato poco efficiente nell’amministrazione pratica del piazzale, sia perché i dati comunicati dalle navi prima dello sbarco non sono sempre completi e sufficienti, sia perché anche dopo lo sbarco della merce non si riescono a formulare ipotesi corrette, o almeno attendibili, circa il suo futuro prossimo. Da quanto detto deduciamo chiaramente che il tipo di organizzazione nella gestione del piazzale al momento risulta quanto meno inadeguato rispetto alle esigenze di un porto che con una tale movimentazione può presentare. Questo perché i metodi attualmente utilizzati per svolgere questo compito presentano grandi margini di incertezza che comportano come conseguenze prime enormi sprechi e disorganizzazione spaziale e temporale nell’ambiente del piazzale stesso.
Alla luce di tutto ciò, il contributo e lo scopo principali della tesi sono quelli di riuscire a fornire dati altamente attendibili riguardo il futuro prossimo della merce, permettendo così una gestione ottimale del piazzale.

Data Mining e Modellazione predittiva

Negli ultimi dieci anni l’utilizzo a largo raggio di metodologie informatiche applicate alla gestione ha generato, tra le altre conseguenze, una crescita esplosiva nelle capacità sia di generare sia di collezionare dati. Ogni organizzazione, pubblica o privata, raccoglie ogni giorno grandi quantità di dati. I progressi nella tecnologia di memorizzazione dei dati basati su dispositivi di memoria sempre più veloci e con maggiore capacità, ad un costo inferiore, ci permettono di archiviare quest’enorme flusso di informazioni.
Nei diversi contesti la mole di dati immagazzinati è utile alla gestione, ma spesso non alle attività decisionali e strategiche. Questo perché la forma in cui questi dati ci pervengono è da considerarsi come quella di un minerale non ancora raffinato. In queste miniere di dati giace, spesso nascosta, una ricchezza potenzialmente inestimabile in termini di conoscenza strategica. Queste informazioni, se estratte, possono essere utilizzate per aumentare efficacia ed efficienza dei processi produttivi e gestionali, per migliorare la qualità dei servizi, per raggiungere un vantaggio competitivo. La conoscenza nascosta nei sistemi informativi è un capitale strategico, tuttavia, è necessario distillarla, a partire dai dati grezzi su cui operiamo giornalmente sul fronte operativo. La complessità dei dati rende spesso difficile l’analisi degli stessi coi metodi tradizionali. Tali metodi infatti possono creare dei rapporti informativi su tali dati ma non sono in grado di analizzarne il contenuto e focalizzare l'attenzione sulle informazioni interessanti che essi contengono. E' stato stimato che trovare delle relazioni significative in un solo terabyte di dati che è equivalente a due milioni di libri richiederebbe la vita intera di una persona. È necessario lasciare che la conoscenza emerga dall’informazione grezza.

Il Data Mining (letteralmente: estrazione da una miniera di dati) è l'estrazione di informazioni utili da grandi quantità di dati, eseguita in modo automatico o semiautomatico. Le tecniche e gli algoritmi di Data Mining hanno lo scopo di analizzare vasti campioni di dati, allo scopo di identificare interessanti regolarità dette pattern. I pattern così identificati possono essere il punto di partenza per ipotizzare e quindi verificare nuove relazioni di tipo causale fra fenomeni; in generale, possono servire in senso statistico per formulare previsioni su nuovi insiemi di dati. Da questo deduciamo logicamente che, un concetto correlato al Data Mining è quello di Machine Learning (o "apprendimento automatico"): infatti, l'identificazione di pattern può paragonarsi all'apprendimento, da parte del sistema di Data Mining, di una relazione causale precedentemente ignota. Il Machine Learning è il settore della Computer Science che studia gli algoritmi capaci di emulare le modalità di ragionare tipiche dell'uomo: riconoscere, decidere, scegliere, ossia apprendere ed estrarre informazioni su un determinato problema esaminando una serie di esempi ad esso relativi.

- Il processo di apprendimento
Date delle istanze di training di una funzione f sconosciuta, trovare una buona approssimazione di f. Illustriamo alcuni possibili casi:

1) Diagnosi medica
x = caratteristiche del paziente (sua storia medica, sintomi, esami di laboratorio)
f = malattia (o terapia consigliata)

2) Risk assessment
x = caratteristiche del consumatore/assicurato (dati demografici, incidenti passati)
f = livello di rischio

3) Guida automatica
x = immagine bitmap della superficie della strada di fronte al veicolo
f = gradi di sterzatura del volante

4) Fraud/intrusion detection
x = caratteristiche del cliente/utente (tipo cliente, città, reddito, stato civile)
f = frode

5) Predizione vendite
x = caratteristiche della merce (costo, prezzo vendita, frequenza)
f = vendite

- Modellazione predittiva

Una tecnica molto diffusa per il Data Mining è la Modellazione predittiva, ovvero l'apprendimento mediante classificazione. Questo schema di apprendimento parte da un insieme ben definito di esempi di classificazione per casi noti, dai quali ci si aspetta di dedurre un modo per classificare esempi non noti. Tale approccio viene anche detto con supervisione (supervised), nel senso che lo schema d’apprendimento opera sotto la supervisione fornita implicitamente dagli esempi di classificazione per i casi noti; tali esempi, per questo motivo, vengono anche detti training examples, in altre parole esempi per l’addestramento.
Sono state proposte molte e diverse tecniche per la classificazione, ognuna delle quali offre specifiche caratteristiche e vantaggi. Elechiamo alcune tecniche di modellazione predittiva
  • Alberi di decisione
  • Tabelle di decisione
  • K-nearest Neighbor
  • Metodi Bayesiani

mercoledì 15 ottobre 2008

Web Services

Secondo la definizione data dal World Wide Web Consortium (W3C) un Web Service (servizio web) è un sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete; caratteristica fondamentale di un Web Service è quella di offrire un'interfaccia software (descritta in un formato automaticamente elaborabile quale, ad esempio, il Web Services Description Language) utilizzando la quale altri sistemi possono interagire con il Web Service stesso attivando le operazioni descritte nell'interfaccia tramite appositi "messaggi" inclusi in una "busta" (la più famosa è SOAP): tali messaggi sono, solitamente, trasportati tramite il protocollo HTTP e formattati secondo lo standard XML.

Proprio grazie all'utilizzo di standard basati su XML, tramite un'architettura basata sui Web Service (chiamata, con terminologia inglese, Service oriented Architecture - SOA) applicazioni software scritte in diversi linguaggi di programmazione e implementate su diverse piattaforme hardware possono quindi essere utilizzate, tramite le interfacce che queste "espongono" pubblicamente e mediante l'utilizzo delle funzioni che sono in grado di effettuare (i "servizi" che mettono a disposizione) per lo scambio di informazioni e l'effettuazione di operazioni complesse (quali, ad esempio, la realizzazione di processi di business che coinvolgono più aree di una medesima azienda) sia su reti aziendali come anche su Internet: la possibilità dell'interoperabilità fra diversi software (ad esempio, tra Java e Python) e diverse piattaforme hardware (come Windows e Linux) è resa possibile dall'uso di standard "aperti" (per un concetto assimilabile cfr. la voce "open source").

Il consorzio OASIS (Organization for the Advancement of Structured Information Standards) ed il W3C sono i principali responsabili dell'architettura e della standardizzazione dei Web Service; per migliorare l'interoperabilità tra le diverse implementazioni dei Web Service l'organizzazione WS-I sta inoltre sviluppando una serie di "profili" per meglio definire gli standard coinvolti.

Pila protocollare dei Web Service

Esempio di utilizzo dei protocolli per i Web Service

La pila protocollare dei Web Service è l'insieme dei protocolli di rete utilizzati per definire, localizzare, realizzare e far interagire tra di loro i Web Service; è principalmente composta di quattro aree:

  • Trasporto del servizio: responsabile per il trasporto dei messaggi tra le applicazioni in rete, include protocolli quali HTTP, SMTP, FTP, XMPP ed il recente Blocks Extensible Exchange Protocol (BEEP).
  • XML Messaging: tutti i dati scambiati sono formattati mediante "tag" XML in modo che gli stessi possano essere utilizzati ad entrambi i capi delle connessioni; il messaggio può essere codificato conformemente allo standard SOAP, come anche utilizzare JAX-RPC, XML-RPC o REST.
  • Descrizione del servizio: l'interfaccia pubblica di un Web Service viene descritta tramite WSDL (Web Services Description Language) un linguaggio basato su XML usato per la creazione di "documenti" descrittivi delle modalità di interfacciamento ed utilizzo del Web Service.
  • Elencazione dei servizi: la centralizzazione della descrizione e della localizzazione dei Web Service in un "registro" comune permette la ricerca ed il reperimento in maniera veloce dei Web Service disponibili in rete; a tale scopo viene attualmente utilizzato il protocollo UDDI.

Ulteriori protocolli standard utilizzati sono:

  • WS-Security: il protocollo Web Services Security protocol è stato adottato come standard OASIS; tale standard permette l'autenticazione degli utenti e la confidenzialità dei messaggi scambiati con l'interfaccia del Web Service
  • WS-Reliability: si tratta di specifiche basate su SOAP ed accettate come standard OASIS che soddisfano la richiesta di messaggi "affidabili" (reliable), richiesta critica per alcune delle applicazioni che utilizzano i Web Service (come, ad esempio, transazioni monetarie o applicazioni di E-commerce).

Vantaggi dei Web Service

  • permettono l'interoperabilità tra diverse applicazioni software su diverse piattaforme hardware
  • utilizzano standard e protocolli "open"; i protocolli ed il formato dei dati è, ove possibile, in formato testuale, cosa che li rende di più facile comprensione ed utilizzo da parte degli sviluppatori
  • mediante l'uso di HTTP per il trasporto dei messaggi i Web Service non necessitano, normalmente, che vengano effettuate modifiche alle regole di sicurezza utilizzate come filtro sui firewall
  • possono essere facilmente utilizzati, in combinazione l'uno con l'altro (indipendentemente da chi li fornisce e da dove vengono resi disponibili) per formare servizi "integrati" e complessi.
  • consentono il riutilizzo di infrastrutture ed applicazioni già sviluppate e sono (relativamente) indipendenti da eventuali modifiche delle stesse

Svantaggi dei Web Service

  • attualmente non esistono standard consolidati per applicazioni critiche quali, ad esempio, le transazioni distribuite
  • le performance legate all'utilizzo dei Web Service possono essere minori di quelle riscontrabili utilizzando approcci alternativi di distributed computing quali Java RMI, CORBA, o DCOM
  • L'uso dell'HTTP permette ai Web Service di evitare le misure di sicurezza dei firewall (le cui regole sono stabilite spesso proprio per evitare le comunicazioni fra programmi "esterni" ed "interni" al firewall).

Perché creare un Web Service

La ragione principale per la creazione e l'utilizzo di Web Service è il "disaccoppiamento" che l'interfaccia standard esposta dal Web Service rende possibile fra il sistema utente ed il Web Service stesso: modifiche ad una o all'altra delle applicazioni possono essere attuate in maniera "trasparente" all'interfaccia tra i due sistemi; tale flessibilità consente la creazione di sistemi software complessi costituiti da componenti svincolati l'uno dall'altro e consente una forte riusabilità di codice ed applicazioni già sviluppate.

I Web service hanno inoltre guadagnato consensi visto che, come protocollo di trasporto, possono utilizzare HTTP "over" TCP sulla porta 80; tale porta è, normalmente, una delle poche (se non l'unica) lasciata "aperta" dai sistemi firewall al traffico di entrata ed uscita dall'esterno verso i sistemi aziendali e ciò in quanto su tale porta transita il traffico HTTP dei web browser: ciò consente l'utilizzo dei Web Service senza modifiche sulle configurazioni di sicurezza dell'azienda (un aspetto che se da un lato è positivo solleva preoccupazioni concernenti la sicurezza).

Un'ultima ragione che ha favorito l'adozione ed il proliferare dei Web Service è la mancanza, prima dello sviluppo di SOAP, di interfacce realmente funzionali per l'utilizzo di funzionalità distribuite in rete: EDI, RPC, ed altri tipi di API (Application Programming Interface) erano e rimangono meno conosciute e di facile utilizzo che non l'architettura dei Web Service.

Voci correlate

Collegamenti esterni

martedì 26 agosto 2008

Service Oriented Architecture

Nell'ambito dell'informatica, con la locuzione inglese di Service-Oriented Architecture (SOA) si indica un'architettura software atta a supportare l'uso di servizi Web per soddisfare le richieste degli utenti così da consentire l'utilizzo delle singole applicazioni come componenti del processo di business.

Elementi di una SOA, di Dirk Krafzig, Karl Banke, e Dirk Slama. Enterprise SOA. Prentice Hall, 2005
Elementi di una SOA, di Dirk Krafzig, Karl Banke, e Dirk Slama. Enterprise SOA. Prentice Hall, 2005

Indice

Definizioni di SOA

Una SOA è progettata per il collegamento a richiesta di risorse computazionali (principalmente applicazioni e dati), per ottenere un dato risultato per gli utenti, che possono essere utenti finali o altri servizi. L'OASIS (Organizzazione per lo sviluppo di standard sull'informazione strutturata) definisce la SOA così:

Un paradigma per l'organizzazione e l'utilizzazione delle risorse distribuite che possono essere sotto il controllo di domini di proprietà differenti. Fornisce un mezzo uniforme per offrire, scoprire, interagire ed usare le capacità di produrre gli effetti voluti consistentemente con presupposti e aspettative misurabili.

Anche se esistono molteplici definizioni di SOA, solo il gruppo OASIS ha prodotto una definizione formale applicabile profondamente sia alla tecnologia che ai domini aziendali.

Il concetto di SOA (WebServices e non solo ) deriva dalla riconsiderazione delle strutture aziendali: organizzazioni rizomatiche che fonda le sue radici nella cultura biologica. L'evoluzione delle infrastrutture di comunicazione, che ormai sono pervasive consente di pensare l'interconnessione tra soggetti economici, come le aziende, come un processo dinamico, non fissato una volta per tutte.


Elenco definizioni

Sebbene molte definizioni di SOA si limitino alla tecnologia o solo ai Web services, questo aspetto è predominante per i fornitori di tecnologia. Nel 2003 questi parlavano di Web services, e nel 2006 di Motori di Processo.

Descrizione

Nell'ambito di un'architettura SOA è quindi possibile modificare, in maniera relativamente più semplice, le modalità di interazione tra i servizi, oppure la combinazione nella quale i servizi vengono utilizzati nel processo, così come risulta più agevole aggiungere nuovi servizi e modificare i processi per rispondere alle specifiche esigenze di business: il processo di business non è più vincolato da una specifica piattaforma o da un'applicazione ma può essere considerato come un componente di un processo più ampio e quindi riutilizzato o modificato.

L'architettura orientata ai servizi si presenta particolarmente adatta per le aziende che presentano una discreta complessità di processi e applicazioni, dal momento che agevola l'interazione tra le diverse realtà aziendali permettendo, al contempo, alle attività di business di sviluppare processi efficienti, sia internamente che esternamente ed aumentarne la flessibilità e l'adattabilità.

Benché molte aziende offrano prodotti che possono formare la base di una SOA va sottolineato che la SOA non è un prodotto.

Non è affatto vero che un'architettura orientata ai servizi non sia legata ad una specifica tecnologia. Chi dice che può essere realizzata usando una vasta gamma di tecnologie, comprese REST, RPC, DCOM, CORBA, MOM, DDS non ha chiaro il vero valore e l'intrinseco significato delle SOA: nessuna di queste tecnologie è infatti capace di implementare entità che descrivano se stesse come è possibile fare usando i Web services mediante il linguaggio di definizione dei servizi WSDL. Infatti applicazioni di test che a run-time capiscano la semantica di un servizio e lo invochino senza "conoscere" nulla del servizio stesso "a priori", non esistono per nessuna delle tecnologie citate. La chiave sta nella totale assenza di business logic sul client SOA il quale è totalmente agnostico rispetto alla piattaforma di implementazione, riguardo i protocolli, il binding, il tipo di dati, le policy con cui il servizio produrrà l'informazione richiesta Service Level Agreement (SLA). Tutto a beneficio dell'indipendenza dei servizi, che possono essere chiamati per eseguire i propri compiti in un modo standard, senza che il servizio abbia conoscenza dell'applicazione chiamante e senza che l'applicazione abbia conoscenza, o necessiti di averne, del servizio che effettivamente eseguirà l'operazione.

SOA può anche essere vista come uno stile dell'architettura dei sistemi informatici che permetta la creazione delle applicazioni sviluppate, combinando servizi debolmente accoppiati e interoperabilità degli stessi. Questi servizi interoperano secondo una definizione formale, detta protocollo o contratto, come per i WSDL indipendente dalla piattaforma sottostante e dalle tecnologie di sviluppo (come Java, .NET, ecc). I servizi, per esempio, scritti in Java usando la piattaforma Java EE e quelli in C# con .NET possono essere utilizzati dall'applicazione sovrastante. Le applicazioni in esecuzione su una piattaforma possono anche utilizzare servizi in esecuzione su altre, come con i Web services, facilitando quindi la riusabilità.

SOA può supportare l'integrazione e la consolidazione di attività all'interno di complessi sistemi aziendali, ma non specifica o fornisce la metodologia o il framework per documentare capacità e potenzialità dei servizi.

I linguaggi di alto livello come BPEL e le specifiche come WS-CDL e WS-Coordination estendono il concetto di servizio, fornendo un metodo per definire e supportare la coordinazione dei servizi di rifinitura con quelli maggiori, che, di conseguenza, possono essere inclusi in flussi di controllo e processi aziendali implementati con applicazioni composte o portali.

Tecnologie alla base della SOA

Aspetti dello sviluppo della SOA

La validità di un'architettura orientata ai servizi (SOA) è conseguenza degli elementi e degli standard su cui si fonda. In particolare vanno considerati i seguenti aspetti:

  • Standard aperti: per poter operare in ambienti multipiattaforma è necessario, o quantomeno consigliabile, utilizzare esclusivamente standard aperti quali XML, WSDL e WS-Security (WSS).
  • Modularità: bisogna trovare il giusto equilibrio tra i servizi erogati da ogni singolo componente, creando un insieme bilanciato di piccoli servizi riutilizzabili per le funzioni comuni e servizi più grandi per processi specifici.
  • Contratti di servizio: WSDL (Web Services Description Language) è la specifica standard per la creazione di contratti di Web Services, un contratto definito avrà come conseguenza servizi più flessibili.
  • ESB (Enterprise Service Bus): La dorsale di pubblicazione dei servizi ed abilitazione delle applicazioni per accedervi. Inoltre include caratteristiche quali adattatori per i sistemi legacy, capacità di orchestrazione dei servizi, autorizzazione e autenticazione lato sicurezza, trasformazione dei dati, supporto per regole di business e capacità di monitorare i service-level agreement.

Bibliografia

  • Douglas K. Barry. Web Services and Service-Oriented Architectures: The Savvy Manager's Guide. San Francisco, Morgan Kaufmann Publishers, 2003. ISBN 1-55860-906-7
  • Norbert Bieberstein; Sanjay Bose, Marc Fiammante, Keith Jones, Rawn Shah. Service-Oriented Architecture Compass - Business Value, Planning and Enterprise Roadmap. Upper Saddle River, Pearson, 2006. ISBN 0-13-987-0471-768
  • Jason Bloomberg; Ronald Schmelzer. Service- orient or Be Doomed. Hoboken, New Yersey, WILEY, 2006. ISBN 0-13-187002-5
  • Thomas Erl. Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services. Upper Saddle River, Prentice Hall PTR, 2004. ISBN 0-13-142898-5
  • Thomas Erl. Service-Oriented Architecture: Concepts, Technology, and Design. Upper Saddle River, Prentice Hall PTR, 2005. ISBN 0-13-185858-0
  • Judith Hurwitz; Robin Bloor, Carol Baroudi, Marcia Kaufman. Service Oriented Architecture for Dummies. Hoboken, Wiley, 2006. ISBN 0-470-05435-2



Collegamenti esterni

giovedì 21 agosto 2008

Ajax: un nuovo approccio per le applicazioni Web

Incipit

Questo articolo è la traduzione della versione inglese intitolata “Ajax: A New Approach to Web Applications” scritta da Jesse James Garrett.

Introduzione

Qualsiasi progetto interattivo definito “affascinante” è destinato a diventare un’applicazione Web.
Dopo tutto, quando è stata l’ultima volta che abbiamo sentito qualcuno parlare di un progetto interattivo che non era presente sul Web? (Ok, oltre l’iPod.) Tutti i nuovi progetti innovativi sono destinati ad essere online.

Nonostante ciò, i progettisti web non possono fare altro che essere un po’ invidiosi dei colleghi che creano applicazioni Desktop.
Le applicazioni Desktop hanno una completezza e una velocità di risposta elevata che risultano essere fuori dalla portata del Web.
La semplicità che ha portato alla proliferazione del Web ha creato un divario tra le esperienze che noi possiamo fornire mediante le applicazioni Web e le applicazioni Desktop.

Quel divario oramai non esiste più. Basta dare uno sguardo a Google Suggest. Si può vedere come i termini suggeriti durante la digitazione vengano aggiornati quasi istantaneamente. Focalizziamoci su Google Maps. Ingrandiamo la mappa. Usiamo il cursore per trascinare e muovere la mappa. Ancora possiamo notare come qualsiasi cosa che accade è quasi istantanea, senza dover aspettare il ricaricamento della pagina.

Google Suggest e Google Maps sono due esempi del nuovo approccio alle applicazioni web che Adaptive Path chiama Ajax. Il nome è l’abbreviazione di Asynchronous JavaScript + XML e rappresenta una svolta fondamentale su ciò che sarà possibile fare sul Web.

Definiamo Ajax

Ajax non è una tecnologia. E’ l’insieme di più tecnologie indipendenti che insieme danno vita a potenti prospettive. Ajax incorpora a se:

Le classiche applicazioni Web lavorano in questo modo: molte delle operazioni non sono altro che una richiesta HTTP inoltrata al web server. Il server fa l’elaborazione - raccolta dati, manipolazione numeri, dialogo con eventuali sistemi legacy (datati) - e ritorna una pagina HTML al client. Questo è un modello adottato sin dalle origini del Web, considerato medium ipertestuale, ma come sanno i fanatici della User Experience, esso rende il Web ottimale per l’ipertesto ma non necessariamente così ottimale anche per le applicazioni software.

Modello tradizione applicazioni Web confrontato con quello Ajax
Figura 1: Il modello tradizionale delle applicazioni Web (alla sinistra) confrontato col modello Ajax (alla destra).

Questo approccio crea una miriade di soluzioni/quesiti tecnici che annebbiano quelli inerenti la User Experience. Mentre il server stà elaborando, l’utente cosa fa? Aspetta, e sarà costretto a farlo ad ogni richiesta.

Naturalmente, se noi progettavamo l’applicazione Web come un’applicazione software, questo non accadeva. Una volta che è stata caricata l’interfaccia, perchè l’interazione dell’utente deve fermarsi ogni volta che l’applicazione ha bisogno di processare il server? Perchè l’utente deve vedere l’applicazione dialogare con il server così pesantemente?

Ajax fa la differenza

Un’applicazione Ajax elimina la natura del Web ad essere contraddistinta da momenti alternati di dialogo-risposta che fanno attendere l’utente, introducendo un intermediario - un motore Ajax - tra l’utente e il server.
Può sembrare di aggiungere un livello all’applicazione che la rende meno veloce a rispondere, però è vero il contrario.

Invece di caricare una classica pagina web, ad inizio sessione, il browser carica il motore Ajax - scritto in Javascript e usualmente associato ad un frame invisibile. Questo motore è responsabile della comunicazione tra l’interfaccia utente e il server, mettendoli in comunicazione tra di loro. Il motore Ajax, indipendentemente dalla comunicazione con il server, permette all’interazione dell’utente con l’applicazione di essere asincrona. Così l’utente non è mai succube della finestra del browser bianca e dell’iconcina indicante il caricamento, aspettando che il server esegua le operazioni.

Modello di interazione sincrona confrontato con quella asincrona
Figura 2: Modello di interazione sincrona di un’applicazione web (sopra) confrontato con il modello asincrono Ajax (sotto).

Ogni azione dell’utente che normalmente genera una richiesta HTTP prende la forma di una chiamata Javascript verso il motore Ajax. Ogni risposta che non richiede la chiamata diretta al server - come validare alcuni dati, modificare dati in memoria - è un lavoro compiuto dal motore Ajax. Se il motore ha bisogno di interagire con il server per rispondere - invio dati da processare, caricare un interfaccia aggiuntiva, ricevere nuovi dati - il motore rende queste richieste asincrone, usualmente utilizzando XML, senza bloccare l’interazione tra utente e applicazione.

Chi usa Ajax

Google stà facendo molti investimenti nell’utilizzare AJAX come nuovo approccio. La maggior parte dei prodotti di Google introdotti anni fa - Orkut, Gmail, Google Groups, Google Suggest e Google Maps - sono applicazioni basate su Ajax. (per una migliore trattazione tecnica sull’implementazione Ajax, si consiglia di vedere l’analisi di Gmail, Google Suggest e Google Maps) Molti altri stanno seguendo lo stesso approccio: molte funzioni di Flickr sono basate su Ajax e il motore di ricerca di Amazon A9.com usa tecniche similari.

Questi progetti dimostrano che Ajax non risulta essere pura tecnica ma anche un’ottima pratica per la creazione di applicazioni molto utili. Non è una delle tante tecnologie utilizzate solo nei laboratori. Le applicazioni Ajax possono avere dimensioni diverse, dalla più semplice come Google Suggest, alla più complessa come Google Maps.

Uno sguardo al futuro

La maggiore sfida che Ajax pone davanti ai nostri occhi non riguarda la risoluzione dei problemi tecnici da esso derivati, ma il dimenticare tutte le limitazioni che riguardavano il Web, per lanciarsi verso la creazione di applicazioni robuste, veloci e sempre più simili alle applicazione Desktop.

468x60

Cerca su Google

Cerca nel Blog con Google