Introduzione
Si può accedere ad un servizio Web, identificato da un URI, tramite l’interfaccia che esso
espone. L’interfaccia di un servizio Web descrive le operazioni, il tipo dei messaggi che
saranno scambiati durante un’interazione con il servizio e la locazione fisica delle porte
dove le informazioni saranno effettivamente scambiate. Naturalmente i servizi Web
possono essere anche molto complessi, e in tal caso possono coinvolgere altri servizi
(semplici o complessi).
Il recente successo dei servizi Web è da attribuire alla definizione di un insieme
di standard universalmente accettati, che hanno causato una loro rapida diffusione.
Attualmente, gli standard per i servizi Web sono WSDL , SOAP e UDDI.
WSDL (Web Service Description Language) è un linguaggio basato su XML,
riconosciuto come standard per la descrizione di servizi Web. Una descrizione WSDL
descrive cosa fa un servizio, definendo le operazioni da esso o erte, in termini dei
messaggi di input e di output coinvolti, e come invocarle, specificando uno o più punti
di connessione attraverso la quale si può accedere al servizio. SOAP (Simple Object
Access Protocol) è il protocollo di trasporto standard per lo scambio di messaggi
XML in una rete di calcolatori. Quindi SOAP permette ad un qualsiasi programma
in grado di lavorare con XML e di comunicare via HTTP, di invocare servizi Web.
UDDI (Universal Description, Discovery and Integration) è un insieme di registri
(online) dedicati alla memorizzazione di informazioni relative ai servizi Web, quali
i loro provider, le loro funzionalità, la loro locazione, compreso un riferimento alla
loro descrizione WSDL. UDDI è l’unico standard attualmente riconosciuto per la
ricerca di servizi Web. Tuttavia, il meccanismo di ricerca supportato da UDDI è
orientato verso un uso tipicamente ”umano”, nello stile delle pagine gialle. Ad ogni
6
modo, WSDL, SOAP e UDDI sono i tre standard che hanno fatto dei servizi Web
una tecnologia largamente diffusa.
Un Web Service è un’interfaccia che descrive una collezione di operazioni che sono
accessibili tramite rete attraverso messaggi di XML standard. Un Web service è descritto
utilizzando una nozione XML standard e formale chiamata “service description”. Essa
comprende tutti i dettagli necessari ad interagire con il servizio includendo il formato dei
messaggi, i protocolli di trasporto e la locazione. L’interfaccia di un Web Service nasconde
i dettagli di implementazione del servizio, permettendogli di essere utilizzato
indipendentemente dalla piattaforma hardware o software sulla quale esso è implementato
e anche indipendentemente dal linguaggio di programmazione nel quale è scritto. I Web
Service eseguono uno specifico compito o un set di compiti. Essi possono essere utilizzati
da soli o con altri Web Service per realizzare un’aggregazione complessa o una transazione
business.
Per descrivere l’argomento principale di questa tesi bisogna parlare prima dell’argomento
generale all’interno del quale essa va ad inserirsi che è la migrazione verso i Web Service e
in particolare la “Migrazione da Web Application a Web Service”.
Un’applicazione Web è un’applicazione nella quale tutto o parte di essa è caricato dal Web
ogni qual volta essa è eseguita o ancora, con il termine Web Application ci si potrebbe
riferire a qualsiasi tipo di interazione client/server che usa il Web.
Assegnata un’applicazione Web, migrare da essa verso un Web Service, significa fare in
modo da esportare i suoi servizi per poi poterli accedere come un Web Service.
Come soluzione a tale problema si è utilizzata la tecnica black box reverse engineering
basata su wrapping e si è costruito un automa a stati finiti che rappresenta il modello di
uno strumento per il reverse engineering di interfacce utente di applicazioni web
interazione con una generica Web Application. Ogni stato di interazione dell’automa
rappresenta una delle interazioni tra l’utente e la Web Application per un determinato caso
d’uso nel quale l’applicazione restituisce schermate HTML e aspetta che l’utente invii dati
e comandi di submit. Ad ogni stato d’interazione dell’automa è associato uno
Screen Template che non è altro che un modello che descrive una delle possibili schermate
restituite.
E’ proprio qui che si inserisce il mio lavoro di tesi in quanto mi sono interessato della
descrizione delle schermate e, in particolare, ho sviluppato un’applicazione per
l’individuazione di campi di Output e Label e in pratica di uno Screen Template con i
risultati. Utilità di questo lavoro possono essere per un porting automatico delle varie
7
pagine Web, per applicazioni di traduzione in multilingua di pagine Web e tanti altri.
Il primo capitolo è molto legato all’introduzione in quanto è introdotto il problema della
migrazione, sono analizzate le sue fasi e i primi cenni riguardo a come si è pensato di agire
per arrivare alla soluzione finale. Nel secondo capitolo invece saranno descritte le
tecnologie utilizzate. Nel terzo capitolo sarà descritta l’architettura e la progettazione. Nel
quarto sarà indicato l’utilizzo del tool mediante l’interfaccia. Nel quinto capitolo sarà
presentato un caso di studio che mostrerà appunto l’utilizzo e il funzionamento del
software creato, per poi passare alle Conclusioni e i possibili Sviluppi Futuri.
8
Capitolo 1
Problematica affrontata e i primi cenni verso la soluzione
1.1 Migrazione da Web Application a Web Service
Questo primo capitolo, dopo una breve panoramica di alcuni concetti fondamentali per la
comprensione del lavoro svolto, quale quello di Web Application, quello di Web Service,
introduce la questione della migrazione dalle une verso gli altri, ed illustra una serie di
possibili approcci per la risoluzione di tale problema.
1.1.1 Web Service
Secondo la definizione data dal 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.
Il consorzio OASIS (Organization for the Advancement of Structured Information
Standards) ed il World Wide Web Consortium sono i principali responsabili
dell'architettura e della standardizzazione dei Web Service.
I Web Service presentano diversi vantaggi e svantaggi. I primi consistono nel:
• permettere l’interoperabilità tra diverse applicazioni software su diverse
piattaforme hardware.
9
Uno Strumento per la ricerca di campi Output e Etichetta in pagine Client
10
• utilizzare standard e protocolli open; i protocolli ed il formato dei dati è, ove
possibile, in formato testuale.
• non necessitano, grazie all’uso di HTTP per il trasporto dei messaggi, che
sono effettuate modifiche alle regole di sicurezza utilizzate come filtro sui
firewall.
• poter essere facilmente utilizzati, in combinazione l’uno con l’altro per
formare servizi integrati e complessi.
• consentire il riutilizzo di infrastrutture ed applicazioni già sviluppate ed
essere indipendenti dalle eventuali modifiche delle stesse.
Gli svantaggi, invece, sono i seguenti:
• 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 o CORBA.
• 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).
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.
1.1.2 Web Application
Un'applicazione Web è un’ applicazione software per Internet, a cui gli utenti accedono
tramite un Web browser. Dal punto di vista del browser, l'interazione con un'applicazione
web è indistinguibile dall'accesso a un sito Web statico. Le pagine visualizzate dal
browser, in questo caso, saranno però generate dinamicamente dall'applicazione.
Spesso è importante che i visitatori di un sito web vedano che il contenuto è coerente ed
aggiornato. Il contenuto di un sito che varia nel tempo necessita di cambiare
Uno Strumento per la ricerca di campi Output e Etichetta in pagine Client
11
continuamente. Per esempio, in un sito web commerciale che aiuta i visitatori a vendere ed
acquistare abitazioni, è richiesto che siano pubblicati solamente gli annunci
relativi alle abitazioni che non sono state ancora vendute. È anche importante che i nuovi
annunci siano pubblicati al massimo uno o due giorni dopo che sono stati inviati dal
venditore. Se una di queste condizioni non viene rispettata, il sito probabilmente non avrà
molto successo.
L'impaginazione del testo e delle immagini che compaiono nel browser web, quando
l'utente visita un sito web è spesso creata utilizzando un semplice linguaggio noto come
Hyper Text Markup Language (HTML). Quando un utente visita un sito web, la porzione
di testo che è "delimitata" dall'HTML viene trasferita dal sito web al browser dell'utente. Il
browser interpreta questo testo, mostrando testo ed immagini all'utente. La porzione di
testo che viene trasferita è tipicamente chiamata pagina. Molti visitatori di siti web
concepiscono la navigazione in termini di spostamenti "da pagina a pagina" all'interno di
un sito. Quando fanno click su un collegamento ipertestuale vengono trasportati dai loro
browser in un'altra pagina. Quando premono il pulsante Back invece vengono riportati
all'ultima pagina che hanno visitato.
Alcuni siti web sono statici. I siti web statici richiedono una persona con un livello di
accesso privilegiato (a volte definita webmaster) per "rinfrescare" manualmente il
contenuto. L'aggiornamento del contenuto richiede che la persona visiti ed aggiorni
manualmente l'HTML delle pagine che devono cambiare. Generalmente, questo viene fatto
modificando un insieme di file sul server web (il computer che fa girare il sito web), in cui
ogni file rappresenta una singola pagina.
Le modifiche all'aspetto di un sito web statico richiedono che il manutentore del sito visiti
ed aggiorni ogni file che compone il sito web. I siti web tipicamente possono crescere fino
a comprendere migliaia di file e per questo l'operazione può non essere un compito banale.
Il manutentore responsabile del sito di annunci di automobili ha l'onere aggiuntivo di
tenere aggiornati anche gli annunci stessi. Se ogni pagina nel sito web rappresenta un
annuncio relativo ad una particolare automobile, il webmaster ha la necessità di eliminare
le pagine che compongono l'annuncio scaduto e di creare le pagine per le nuove inserzioni.
Quindi ha anche l'esigenza che nessun collegamento su altre pagine punti alle pagine
rimosse.
La quantità di lavoro da compiere diventa molta in un tempo davvero breve. Può diventare
terribilmente gravosa avendo da aggiornare di più di qualche pagina. Il manutentore del
sito può anche, comprensibilmente, commettere errori (dopo tutto è un essere umano) e
Uno Strumento per la ricerca di campi Output e Etichetta in pagine Client
12
dimenticarsi di aggiornare o rimuovere pagine importanti.
In un sito web generato dinamicamente, al manutentore non è richiesto di visitare ogni
pagina per eseguire l'aggiornamento del contenuto o lo stile. Piuttosto, può estendere
l'aspetto grafico rendendolo uniforme a tutto l'insieme di pagine che formano il sito web. È
anche in grado di istruire il server web perché generi una pagina HTML su richiesta che
includa un contenuto univoco di bit. Se il manutentore del sito degli annunci di automobili
decide di costruire un’ applicazione web per gestire questo sistema potrebbe mantenere una
lista di annunci "attuali" slegata dalla struttura HTML (probabilmente memorizzata in una
generica base di dati). Potrebbe allora istruire la propria applicazione web perché, quando
un utente visita il sito, questa interroghi la base di dati e generi il codice HTML
corrispondente ad un annuncio o all'indice degli annunci.
Troviamo applicazioni web ovunque. Esempi comuni sono quelle applicazioni che ci
permettono di cercare sul web, come Google; di collaborare a progetti, come SourceForge;
di acquistare prodotti da un'asta, come avviene su eBay; di comunicare con altre persone
tramite mail, come Hotmail o di consultare le ultime notizie come CNN.com.
1.2 Descrizione del problema
Il problema generale è quello di rendere i servizi di una generica Web Application
accessibili attraverso il paradigma request/response tipico dei Web Service.
Per risolvere il problema bisogna quindi realizzare un componente da inserire tra la Web
Application e il Web Service. Esso deve interagire con la Web Application e fornire un
messaggio di response Web Service e inoltre deve essere adattabile a qualsiasi Web
Application.
L’ingegneria del software ci fornisce molte tecniche in aiuto tra le quali le ben note
tecniche di riverse engineering, che sono delle tecniche che permettono di analizzar
un’applicazione a partire dalla sua realizzazione finale.
Noi infatti andiamo ad analizzare un’applicazione già esistente, una Web Application.
Abbiamo due tecniche di riverse engineering, la tecnica di reverse engineering di tipo
“white box” e quella di tipo “black box”. La prima richiede una conoscenza approfondita
degli elementi e dei meccanismi utilizzati per la realizzazione dell’applicazione che si va
ad analizzare. La seconda, invece richiede soltanto l’analisi dell’applicazione sulla base