• Non ci sono risultati.

3.2 Stato della Ricerca

3.2.2 Fasi Trattate

3.2.2.1 Approcci alla Fase di Adattamento

Come abbiamo gi`a accennato in precedenza, il concetto di adattamento `e precedente a quello di mashup, infatti ricordiamo che gi`a nel 1997 in [190] viene data una nozione di adattatore, definito come “un frammento di codi- ce che si interpone tra due componenti e compensa le differenze tra le loro interfacce”. Gli autori specificano che in un certo senso questa definizione di adattatore si pu`o considerare una realizzazione del concetto di “mediatore”, cos`ı come lo aveva definito Wiederhold nel 1991 [185]. Dunque l’idea di adat- tamento risale a diversi anni fa, sebbene sia stata riadattata successivamente al contesto dei mashup e della composizione di servizi Web. In effetti molti dei lavori che abbiamo avuto modo di analizzare ([23], [179], [29], [75], [28], [14]) partono da concetti sull’adattamento sviluppati in [190].

assistito al susseguirsi di diversi approcci al problema dell’adattamento. Ad esempio un approccio formale all’adattamento `e quello seguito in [23], che for- nisce una metodologia formale per l’adattamento di componenti con incom- patibilit`a comportamentali. Questo studio sottolinea l’importanza dell’adat- tamento dei protocolli dei componenti, spesso trascurata in favore dell’adat- tamento a livello di firma. Ricordiamo che incompatibilit`a comportamentali possono verificarsi ad esempio per via dell’ordine in cui vengono scambiati i messaggi, il che potrebbe portare a condizioni bloccanti che sarebbe pre- feribile riuscire a determinare a priori, in modo da facilitare il processo di sviluppo. Per individuare a priori eventuali incompatibilit`a tra componenti che interagiscono dinamicamente ed essere in grado di verificare in maniera rigorosa alcune propriet`a, `e necessaria una descrizione formale dell’interazio- ne dei componenti. A tale scopo si propone un’estensione delle interfacce con descrizioni comportamentali che descrivano il protocollo dei singoli compo- nenti. Le interfacce vengono descritte per mezzo di Linguaggi di Descrizione di Interfacce (IDL) tradizionali in cui verranno specificati sia i servizi che un componente offre, sia quelli che richiede all’ambiente in cui `e immerso. A tali descrizioni verr`a affiancato un formalismo ricavato da un sottoinsieme del π-calcolo, per esprimere le specifiche comportamentali. A partire da infor- mazioni sull’interfaccia e il comportamento dei componenti, sar`a necessario individuare un metodo per adattare i componenti. In questo contesto viene introdotta una notazione per esprimere specifiche di adattatori, nella forma di un insieme di corrispondenze tra azioni e parametri di coppie di componenti. Data una specifica per l’adattatore e una descrizione dell’interazione tra due componenti, il procedimento di sintesi dell’adattatore `e automatizzato e pro-

duce un componente che garantisce l’esecuzione parallela non bloccante dei due servizi adattati e che soddisfa tutte le specifiche di adattamento stabilite.

L’approccio formale all’adattamento definito in [23] `e stato ripreso in di- versi studi successivi sullo stesso argomento ([17], [29], [75], [27], [28]). Un’ulteriore tendenza nell’ambito dell’adattamento di componenti che si af- fermata col tempo `e quella relativa all’aggiunta di informazioni semantiche per guidare il processo di adattamento. Questa tendenza `e stata rafforza- ta ulteriormente dalla nascita di linguaggi mirati ad estendere i tradizionali metodi di definizione delle interfacce di servizi Web al fine di riuscire ad in- cludere informazioni semantiche. Si pensi ad esempio a SAWSDL [133], nato per poter permettere l’aggiunta di annotazioni semantiche all’interno di com- ponenti WSDL. L’importanza delle informazioni semantiche nella descrizione dei servizi `e il nucleo di [66], che affronta il problema con un’ottica rivolta in particolar modo ai servizi REST.

L’approccio utilizzato nasce da un parallelismo con SAWSDL, che utilizza frammenti XML inseriti nelle descrizioni WSDL dei servizi. Tuttavia il pro- blema dei servizi REST `e che non sono descritti attraverso WSDL, pertanto la strategia utilizzata da SAWSDL non pu`o essere applicata. Proprio per questo motivo viene introdotto l’approccio SA-REST motivato dal fatto che l’aggiunta di informazioni semantiche ai servizi REST pu`o aiutare a risol- vere diversi problemi tipici di questa categoria di servizi. Ad esempio uno dei punti chiave `e che l’aggiunta di annotazioni agli input ed output dei ser- vizi facilita la manipolazione di dati, dal momento che per i servizi REST non esiste un metodo per specificare il formato di input/output del servizio.

La manipolazione di dati viene realizzata in SA-REST non solo specificando il concetto (all’interno di un’ontologia) che un certo messaggio rappresenta, ma soprattutto specificando uno schema di “lifting” e uno di “lowering” che traducono strutture dati al livello dell’ontologia. Facendo un parallelo al pa- radigma object-oriented, “lo schema di lifting pu`o essere considerato un cast in su mentre lo schema di lowering rappresenta un cast in gi`u, in un contesto in cui l’ontologia rappresenta l’oggetto padre e gli input ed output del ser- vizio rappresentano l’oggetto figlio” [66]. Inoltre le annotazioni semantiche aiutano a determinare in che modo il servizio deve essere invocato. Come gi`a detto, i servizi Web tradizionali possono sfruttare WSDL per includere informazioni semantiche, mentre nel caso dei servizi REST si assumer`a che ciascun servizio disponga di una pagina che lo descrive e tale pagina verr`a arricchita con annotazioni semantiche. In uno scenario simile si affronta la creazione di SMashup, ovvero mashup di servizi REST semantici.

Come `e naturale che sia, col tempo sono aumentati gli studi mirati all’au- tomatizzazione completa del processo di adattamento e una notevole quantit`a di questi studi ha confermato l’idoneit`a dell’utilizzo di adattatori come so- luzione alle incompatibilit`a tra componenti. E’ opportuno sottolineare che in un ambiente distribuito non `e sempre possibile o conveniente introdurre adattatori centralizzati. In [14] viene descritto SYNTHESIS, uno strumento che, attraverso un approccio decentralizzato e basato sulla specifica, permet- te la generazione automatica di adattatori distribuiti per la composizione di componenti black box. In Figura 3.7 viene schematizzata la struttura di SYNTHESIS. A partire dalla specifica delle interfacce dei componenti e della

Fig. 3.7: Struttura di SYNTHESIS

loro interazione, e del comportamento desiderato del sistema, viene costruito il modello comportamentale di un adattatore centralizzato, modellato nella forma di un Sistema di Transizione Etichettato (LTS). Il LTS cos`ı ottenuto viene successivamente raffinato in modo da eliminare possibili stati bloccan- ti o comportamenti che esulano dalla specifica richiesta. A partire dal LTS modificato si ricavano automaticamente dei wrapper per i componenti, che implementano la versione distribuita e senza possibilit`a di stallo dell’adatta- tore centralizzato. SYNTHESIS offre la possibilit`a di produrre in output il codice per l’adattatore distribuito sia utilizzando la tecnologia COM/DCOM che Enterprise Java Beans.