Ingegneria del Software orientato ai Servizi



Documenti analoghi
Introduzione ai Web Services Alberto Polzonetti

Ingegneria del Software 2 Service Engineering 1. Sommerville, Ingegneria del Software, 8 edizione, capitolo 31

Presentazione di Cedac Software

Seminario di Sistemi Distribuiti RPC su SOAP

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

Un architettura per la cooperazione di applicazioni: un approccio basato sulla migrazione di applicazioni Legacy

Web Service Architecture

Web Services. Scoperta del servizio UDDI. Descrizione del servizio WSDL. Accesso al servizio SOAP XML. Starto di comunicazione HTTP

API e socket per lo sviluppo di applicazioni Web Based

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

WEB SERVICES SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

Ministero del Lavoro e delle Politiche Sociali

B.P.S. Business Process Server ALLEGATO C10

Il Registro dei Servizi di OpenSPCoop i. Il Registro dei Servizi di OpenSPCoop

Realizzazione di Web Service per l estrazione di informazioni da siti web enciclopedici

Un approccio innovativo per il delivery di servizi in infrastrutture di nomadic computing

Introduzione alle applicazioni di rete

Introduzione alle griglie computazionali LEZIONE N. 10. Università degli Studi di Napoli Federico II Corso di Laurea in Informatica III Anno

Strumenti di modellazione. Gabriella Trucco

Concetti di base di ingegneria del software

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Gestione Richieste Patenti Web

Client e Server comunicano tramite il protocollo SOAP.

DOCFINDERWEB SERVICE E CLIENT

CONTENT MANAGEMENT SYSTEM

19. LA PROGRAMMAZIONE LATO SERVER

Volumi di riferimento

Laboratorio di RETI DI CALCOLATORI

WEB SERVICES SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE PROVA

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

Il Web-Service SDMX dell ISTAT

BPEL: Business Process Execution Language

Web Service medra per la gestione DOI

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

IBM Software Demos The Front-End to SOA

Brochure Internet. Versione The Keyrules Company s.r.l. Pagina 2 di 8

I Sistemi Informativi Geografici. Laboratorio GIS 1

Reti di Telecomunicazione Lezione 6

Portale regionale della Salute. Servizi di prenotazione prestazione e pagamento ticket.

Creare client statici

Infrastruttura di produzione INFN-GRID

Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.

Omeka PURL Plugin. Torino, 30 settembre Emilio Remogna

WorkFlow Management Systems

Portale Multicanale delle PA del territorio della Regione Emilia-Romagna: un inizio di rete semantica di informazioni

L o. Walter Ambu japs: una soluzione agile (

E.S.B. Enterprise Service Bus ALLEGATO C11

Prodotto <ADAM DASHBOARD> Release <1.0> Gennaio 2015

Generazione Automatica di Asserzioni da Modelli di Specifica

Allegato 1 CIG FF PROCEDURA DI AFFIDAMENTO PER LA FORNITURA DI UNA PIATTAFORMA PER SERVICE MASHUP AND DELIVERY CAPITOLATO TECNICO

lem logic enterprise manager

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Indice. Indice Premessa e scopo del documento Ambiente operativo Architettura di sistema... 5

Specifiche Tecnico-Funzionali

PROGETTO WEB SERVICES DOGANE SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

SERVICE BROWSER. Versione 1.0

Architetture software

C Cloud computing Cloud storage. Prof. Maurizio Naldi

Architetture Applicative

Service Oriented Architectures (SOA)

Protocollo di metadata harvesting OAI-PMH Lavoro pratico 2

Approccio stratificato

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

Casi di studio sulla migrazione di applicazioni web verso servizi REST Anno Accademico 2008/2009

Composizione e Coreografia di Web Services

Groups vs Organizational Units. A cura di Roberto Morleo

Programmazione Orientata agli Oggetti in Linguaggio Java

Crea il catalogo dei tuoi prodotti su ipad e iphone con un App. Anzi, con upp!

MONITORAGGIO UNITARIO PROGETTI 2007/2013 PROTOCOLLO DI COLLOQUI ANALISI ATTIVAZIONE SERVIZIO IGRUE IN SPCOOP. Link.it srl - Analisi Servizio IGRUE 1

Interoperabilità e cooperazione applicativa tra sistemi informativi

CREA IL CATALOGO DEI TUOI PRODOTTI SU IPAD E IPHONE CON UN APP. ANZI, CON UPP!

Object Oriented Programming

Registratori di Cassa

Costruire il futuro il valore delle scelte tecnologiche

01KTF CV. Architetture distribuite per i sistemi infomativi aziendali. Presentazione del corso

PRACTICAL DEVELOPMENT OF A WEB SERVICE

Programmazione server-side: Java Servlet

Sistemi informativi secondo prospettive combinate

Lezione 1 Introduzione

automation using workflow technology and web services Vassilacopoulos Med. Inform. (September 2003) vol. 28, no. 3,

Sommario. Modellazione di Kerberos mediante DASM. Kerberos (1) Descrizione Kerberos. Descrizione Kerberos Modellazione Analisi di Correttezza

Siti web centrati sui dati (Data-centric web applications)

Dispensa di Informatica I.1

Cenni di programmazione distribuita in C++ Mauro Piccolo

Università degli studi di Ferrara. Sviluppo di un Web Service per la classificazione del suolo e sua integrazione sul Portale SSE

Introduzione al Semantic Web

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

Architettura Connettore Alfresco Share

Problema del naming. Modello di Naming

Laboratorio di Information Retrieval SOLR. Marco Rossetti Based on Emanuele Panzeri s slides panzeri@disco.unimib.

JBoss ESB Un caso d'uso italiano: La Porta di Dominio per la Cooperazione Applicativa

SDD System design document

Caratteristiche principali. Contesti di utilizzo

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

PROCEDURA APERTA PER L AFFIDAMENTO DELLA REALIZZAZIONE DI UN APP PER LA PRENOTAZIONE DELLE PRESTAZIONI SANITARIE E SERVIZI CONNESSI.

Allegato 3 Sistema per l interscambio dei dati (SID)

SOFTWARE A SUPPORTO DELLA GESTIONE AMMINISTRATIVA DELLO SPORTELLO UNICO SPECIFICA DEI REQUISITI UTENTE

Transcript:

Ingegneria del Software orientato ai Servizi Ingegneria del Software 2 Service Engineering 1 Riferimenti bibliografici Sommerville, Ingegneria del Software, 8 edizione, capitolo 31 Sito del W3C per le specifiche degli standard per Web Services (Es. SOAP, XML, WSDL, ) Unraveling the Web Services Web- An Introduction to SOAP, WSDL, and UDDI - Francisco Curbera, Matthew Duftler, Rania Khalaf,William Nagy,Nirmal Mukhi, and Sanjiva Weerawarana- IEEE INTERNET COMPUTING- Mar. Apr. 2002 Ingegneria del Software 2 Service Engineering 2 1

Argomenti Servizi software come componenti riusabili Ingegnerizzazione dei Servizi (Service Engineering) Sviluppo software basato su Servizi Ingegneria del Software 2 Service Engineering 3 Premessa La realizzazione di sistemi distribuiti su piattaforme eterogenee richiede l utilizzo di middleware che forniscono i servizi atti a consentire la comunicazione fra componenti distribuiti. I middleware possono essere più o meno difficili da usare (es. CORBA vs. Java RMI), e fornire servizi più o meno sofisticati. Non è possibile far comunicare componenti aderenti a diversi modelli di componente e relativi middleware (es. client DCOM e server RMI). I middleware sono usabili sono in ambito intranet, data l impossibilità per i dati scambiati (in binario basati su specifici protocolli) di superare i firewall aziendali. Ingegneria del Software 2 Service Engineering 4 2

Il futuro: Architetture orientate ai servizi Le Architetture Orientate ai Servizi (SOA) sono state proposte per consentire una sistematica interazione fra applicazioni (application-to-application) Svincolandosi dai limiti delle architetture a componenti basate su middleware In particolare: I Web services rappresentano uno sforzo verso la costruzione di una piattaforma di calcolo distribuita basata sull infrastruttura offerta dal Web. I Web services possono essere definiti come servizi che possono essere pubblicati, localizzati, ed invocati via Internet I Web Services consentono il passaggio dal modello primario del Web Human-Centric al modello Application- Centric, fino alla visione del Web Automatico Ingegneria del Software 2 Service Engineering 5 Service-oriented architectures (SOA) Le Architetture Orientate ai Servizi (SOA) sono un modo di progettare sistemi distribuiti i cui componenti sono costituiti da servizi indipendenti. I servizi sono componenti stand-alone, in grado di risolvere specifici problemi, che possono essere offerti da differenti fornitori ed essere eseguiti su computer diversi. Per rendere possibili tali attività, devono essere adottati protocolli standard per supportare: la comunicazione fra servizi lo scambio di informazioni fra servizi Ingegneria del Software 2 Service Engineering 6 3

Attori nelle SOA (UDDI) Service registry Find Publish Service requestor Bind (S OAP) Service provider Service (WSDL) Ingegneria del Software 2 Service Engineering 7 Ingegneria del Software 2 Service Engineering 8 4

Sviluppo di Servizi Obiettivi : Consentire l interoperabilità universale Consentire una diffusa adozione e l ubiquità dei servizi Abilitare il binding dinamico (su scala geografica) Supportare efficacemente sia ambienti aperti (Web) che più vincolati Ingegneria del Software 2 Service Engineering 9 Sviluppo di Servizi Requisiti: Basati su standard (che forniscono un supporto pervasivo) Si richiede solo la disponibilità di una minima infrastruttura (è richiesto solo l implementazione di un set minimo di standard) Possibilità di concentrarsi su messaggi e documenti scambiati, piuttosto che su API Ingegneria del Software 2 Service Engineering 10 5

Sviluppo di servizi: Vantaggi I servizi possono essere sviluppati localmente, o essere prodotti da fornitori esterni Per accedere ai servizi è necessario conoscere unicamente la loro interfaccia L accesso ai servizi è possibile attraverso un linguaggio standard, indipendentemente dal linguaggio con cui i servizi sono stati implementati E possibile recuperare (tramite wrapper) funzionalità di sistemi esistenti (legacy systems) Aziende o altre organizzazioni possono cooperare utilizzando funzioni di business altrui e avvalendosi di un meccanismo di scambio dati semplificato: supporto al Collaborative Computing Ingegneria del Software 2 Service Engineering 11 Stack e protocolli per i Web Services XMLtechnologies (XML, XSD, XSLT,...) Support (WS-Security, WS-Addressing,...) Process (WS-BPEL) Service definition (UDDI, WSDL) Messaging (SOAP) Transport (HTTP, HTTPS, SMTP,...) Ingegneria del Software 2 Service Engineering 12 6

Alcuni standard SOAP Protocollo per lo scambio di messaggio, tipicamente implementato su http o https WSDL (Web Service Definition Language) Protocollo per lo scambio di informazioni descriventi l interfaccia del Web Service e il collegamento con il servizio vero e proprio UDDI (Universal Description, Discovery, and Integration) Definisce la semantica del servizio, in maniera tale da consentire la scoperta automatica dell esistenza del servizio WS-BPEL Permette di definire la modalità di composizione di servizi Ingegneria del Software 2 Service Engineering 13 Servizi come componenti riusabili Definizione di servizio e di Web Service Un componente software riusabile, debolmente accoppiato, che incapsula una funzionalità discreta, può essere distribuito e vi si può accedere mediante programmazione. Un Web Service è un servizio a cui si accede attraverso protocolli standard Internet e protocolli basati su XML. Ingegneria del Software 2 Service Engineering 14 7

Principali analogie e differenze fra servizi e componenti in CBSE Anche I servizi incapsulano funzionalità riusabili in diversi contesti Ma i servizi devono essere necessariamente indipendenti da altri servizi e debolmente accoppiati La loro funzione deve essere eseguita in maniera indipendente dall ambiente di esecuzione In pratica per i servizi non è definita l interfaccia richiede, ma solo l interfaccia fornisce L interazione con i servizi è basata unicamente sullo scambio di messaggi Diversamente dalla comunicazione fra componenti che richiede l invocazione di metodi (API) Ingegneria del Software 2 Service Engineering 15 Differenti modalità di interazione La comunicazione fra componenti è basata sull invocazione di metodi L interazione con i servizi è basata unicamente sullo scambio di messaggi Lo scambio di messaggi è del tipo Request/ Response (e può essere basato su XML) I servizi possono essere visti come funzioni remote (scambio basato su RPC), non come oggetti (scambio basato su chiamata - eventualmente sincrona- di metodi) I servizi adottano un modello di comunicazione asincrona, mentre l interazione fra componenti è più aderente ad un modello di interazione sincrona. Ingegneria del Software 2 Service Engineering 16 8

Esempio di Interazione Sincrona Waiter Diner What would you like? Tomato soup please And to follow? Fillet steak How would you like it cooked? Rare please With salad or french fries? Salad please ETC. L ordinazione viene composta secondo una interazione sincrona tra cameriere e cliente. Ingegneria del Software 2 Service Engineering 17 Un ordinazione espressa in XML <starter> <dish name = soup type = tomato /> <dish name = soup type = fish /> <dish name = pigeon salad /> </starter> <main course> <dish name = steak type = sirloin cooking = medium /> <dish name = steak type = fillet cooking = rare /> <dish name = sea bass > </main> <accompaniment> <dish name = french fries portions = 2 /> <dish name = salad portions = 1 /> </accompaniment> L ordinazione verrà passata in cucina attraverso un unico messaggio XML. Ingegneria del Software 2 Service Engineering 18 9

Web Service Description Language (WSDL) Le interfacce dei servizi sono espresse in linguaggio WSDL. Una specifica WSDL definisce Quali operazioni sono fornite dal servizio (Interfaccia astratta) Per ogni operazione è specificato il formato del messaggio di richiesta e il formato del messaggio di risposta Come accedere al servizio Binding: specifica come devono essere costruiti I messaggi di I/O ed il protocollo daseguire nello scambio dimessaggi Dove si trova il servizio, in termini di URI (Universal Resource Identifier) URI è l indirizzo di una risorsa accessibile via Internet ed è una generalizzazione del concetto di indirizzo web Ingegneria del Software 2 Service Engineering 19 Struttura di una specifica WSDL WSDL service definition Intro Abstract interface Concrete implementation XML namespace declarations Type declarations Interface declarations Message declarations Binding declarations Endpoint declarations (es. SOAP) (URI) Ingegneria del Software 2 Service Engineering 20 10

Struttura XML di una specifica WSDL Ingegneria del Software 2 Service Engineering 21 Un frammento di specifica WSDL (1/2) Define some of the types used. Assume that the name space prefixes ws refers to the name space URI for XML schemas and the namespace prefix associated with this definition is weathns. <types> <xs: schema targetnamespace = http ://.../weathns xmlns: weathns = http:// /weathns > <xs:element name = PlaceAndDate type pdrec = /> <xs:element name = MaxMinTemp type = mmtrec /> <xs: element name = InDataFault type = errmess /> <xs: complextype name = pdrec <xs: sequence> <xs:element name = town type = xs:string /> <xs:element name = country type = xs:string /> <xs:element name = day type = xs:date /> </xs:complextype> Definitions of MaxMinType and InDataFault here </schema> </types> Ingegneria del Software 2 Service Engineering 22 11

Un frammento di specifica WSDL (2/2) Now define the inte rface and its operations. In this case, there is only a single operation to return maximum and minimum temperatures <interface name = weatherinfo > <operation name = getmaxmintemps pattern = wsdlns: in-out > <input messagelabel = In elemen t = weathns: PlaceAndDate /> <output message Label = Out element = weathns:maxmintemp /> <outfault messagelabel = Out e lemen t = weathns:indata Fault /> </operation> </interface> Ingegneria del Software 2 Service Engineering 23 Un Web Service in pratica Consideriamo un semplice esempio di Web Service Quest esempio è fornito insieme all interfaccia utente che si integra con NetBeans per la generazione e testing di Web Service http://websvc.netbeans.org/ Si vuole realizzare un semplice Web Service add che è in grado di restituire la somma di due numeri interi, avuti come parametri di ingresso Si tratta, evidentemente di un servizio che fornisce una interfaccia ma non ne richiede Ingegneria del Software 2 Service Engineering 24 12

Codice del Web Service // Copyright (c) 2007, Sun Microsystems, Inc. All rights reserved. package org.me.calculator; import javax.jws.webmethod; import javax.jws.webparam; import javax.jws.webservice; @WebService() public class CalculatorWS { / Web service operation / @WebMethod(operationName = "add") Con la @ sono indicati deicommenti La classecalculatorws in questo caso implementa un unico metodo add: sarà questo metodo ad essere esposto come Web Service public int add(@webparam(name = "i") int i, @WebParam(name = "j") int j) { return i + j; } } Ingegneria del Software 2 Service Engineering 25 Codice del documento WSDL (1) <?xml version="1.0" encoding="utf-8"?> <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws /2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://calculator.me.org/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetnamespace="http://calculator.me.org/" name="calculatorwsservice"> <types> <xsd:schema> <xsd:importnamespace="http://calculator.me.org/ " schemalocation="http://localhost:8080/calculatorapp/calculatorwsservice?xsd=1"/> </xsd:schema> </types> <message name="add"> <partname="parameters" element="tns:add"/> </message> <message name="addresponse"> <partname="parameters" element="tns:addresponse"/> </message> <porttype name="calculatorws"> <operation name="add"> <input message="tns:add"/> <output message="tns:addresponse"/> </operation> </porttype> Ingegneria del Software 2 Service Engineering 26 13

Codice del documento WSDL (2) <binding name="calculatorwsportbinding" type="tns:calculatorws"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="add"> <soap:operation/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="calculatorwsservice"> <port name="calculatorwsport" binding="tns:calculatorwsportbinding"> <soap:address location="http://localhost:8080/calculatorapp/calculatorwsservice"/> </port> </service> </definitions> Ingegneria del Software 2 Service Engineering 27 Codice del client di prova package org.me.calculator.client; import java.io.;import java.net.;import javax.annotation.resource; import javax.servlet.;import javax.servlet.http.;import javax.xml.ws.webservicecontext;importjavax.xml.ws.webserviceref; public class ClientServletextends HttpServlet{ @WebServiceRef(wsdlLocation = "http://localhost:8080/calculatorapp/calculatorwsservice?wsdl") public CalculatorWSService service; @Resource protected WebServiceContext context; protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf-8"); PrintWriter out = response.getwriter(); try { out.println("<h2>servletclientservlet at " + request.getcontextpath() + "</h2>"); org.me.calculator.client.calculatorws port = service.getcalculatorwsport(); int i = Integer.parseInt(request.getParameter("value1")); int j = Integer.parseInt(request.getParameter("value2")); int result = port.add(i, j); out.println("<br/>"); out.println("result:"); out.println("" + i + " + " + j + " = " + result); ((Closeable)port).close(); } finally { out.close(); } } Ingegneria del Software 2 Service Engineering 28 14

Ingegnerizzazione dei Servizi Ingegneria del Software 2 Service Engineering 29 Argomenti Ingegnerizzazione dei Servizi (Service Engineering) Sviluppo di software basato su Servizi Ingegneria del Software 2 Service Engineering 30 15

Service-oriented software engineering Gli approcci di ingegneria del software esistenti devono necessariamente cambiare per tener conto dell approccio di sviluppo software service-oriented. Due temi fondamentali: Service engineering. Tratta lo sviluppo di servizi dependable e riusabili Sviluppo di software per il riuso Sviluppo Software basato su servizi. Si occupa di sviluppare software fidatoriusando servizisoftware Sviluppo di software con il riuso Ingegneria del Software 2 Service Engineering 31 Service engineering É il processo di sviluppo di servizi riusabili per applicazioni service-oriented. Il servizio deve essere progettato come una astrazione riusabile nell ambito di diversi sistemi. Richiede L identificazione del servizio candidato La progettazione del servizio L implementazione e consegna del servizio Ingegneria del Software 2 Service Engineering 32 16

Il Processo di Service Engineering Identificazione Identificazione Dei Dei servizi servizi Candidati Candidati Progettazione Progettazione del del Servizio Servizio Implementazione ee Consegna Consegna del del Servizio Servizio Requisiti Requisiti del del Servizio Servizio Specifica Specifica dell Interfaccia dell Interfaccia del del Servizio Servizio Servizio Servizio Convalidato Convalidato e e messo messo in in esercizio esercizio Ingegneria del Software 2 Service Engineering 33 (1): Identificazione dei servizi candidati I servizi possono essere classificati in tre categorie fondamentali: Servizi di utilità che implementano funzionalità di carattere generale, applicabili a diversi problemi Servizi di business, utili all interno di una particolare tipologia di dominio aziendale Servizi di coordinazione che supportano la composizione di servizi complessi Interagiscono con i servizi più generali, consentendo di ricavarne astrazioni di domini Un altra classificazione distingue tra servizi orientati alle attività (task) o alle entità Ingegneria del Software 2 Service Engineering 34 17

Esempi di servizi Task Entity Utility Business Coordination Convertitore di Convalida Gestione rimborsi valuta. richiesta Pagamenti Localizzatore di rimborso. fornitori impiegati Verifica stato del credito Verificatore di validità di un documento. Convertitore di un Web form in XML Modulo Spese Modulo di richiesta studente Ingegneria del Software 2 Service Engineering 35 Domande utili per la ricerca di servizi riusabili Nel caso di un servizio orientato alle entità, il servizio è associato ad una singola entità logica che è usata in diversi prcessi di business? Nel caso di un servizio orientato alle attività, tale attività è eseguita da più persone di una organizzazione? Il servizio è indipendente o fino a che punto ha bisogno di altri servizi? Il servizio ha bisogno di mantenere aggiornato uno stato interno? a tal fine, ha bisogno di un database? Il servizio potrebbe essere usato anche all esterno, da più clienti? É probabile che clienti diversi del servizio richiedano diversi requisiti non funzionali ad esso? Ingegneria del Software 2 Service Engineering 36 18

Il servizio di un Catalogo É un esempio di servizio orientato alle entità che supporta operazioni di business. Le operazioni devono permettere ad un produttore di articoli di mostrare il catalogo degli articoli acquistabili (es. Computer) dai suoi clienti Requisiti Funzionali del servizio Una versione specifica del catalogo dovrebbe essere creata per ciascun cliente (con prezzi e config. concordate) Deve essere possibile fare il download del catalogo Si devono confrontare specifiche e prezzi di fino a 6 articoli del catalogo Devono essere fornite funzionalità di ricerca e Browsing Deve esserci una funzione che permette di stimare la data di consegna per gli articoli indicati Gli utenti devono potre fare ordini virtuali da confermare entro 48 ore con un ordine reale. Ingegneria del Software 2 Service Engineering 37 Il Servizio di un Catalogo Requisiti non funzionali del servizio L accesso al catalogo deve essere consentito solo agli impiegati di organizzazioni accreditate. I prezzi e le configurazioni offerte ai vari clienti saranno confidenziali Il catalogo deve essere disponibile dalle07:00 alle 11:00 Il catalogo deve essere in grado di elaborare fino a 10 richieste al secondo. Ingegneria del Software 2 Service Engineering 38 19

Catalogue Descrizione service delle operations Operazioni del Servizio di Catalogo Operazione CreaCatalogo Confronta Visualizza Ricerca DataConsegna CreaOrdine Virtuale Descrizione Crea una versione del catalogo personalizzata per ciascun cliente. Prevede un parametro opzionale per creare una versione scaricabile in PDF del catalogo. Confronta fino a 6 caratteristiche (e.g. price, dimensions, processor speed, etc.) di fino a 4 articoli del catalogo. Mostra tutti i dati associati ad uno specifico elemento del catalogo. Permette di eseguire una ricerca di articoli che soddisfano una certa espressione di ricerca. Fornisce la data stimata per la consegna di un articolo (qualora fosse ordinate oggi). Prenota gli articoli ordinati e fornisce I dati dell ordine al sistema per gli acquisti usato dal cliente. Ingegneria del Software 2 Service Engineering 39 (2) Progettazione dell Interfaccia del servizio Richiede la definizione delle operazioni associate al servizio e dei loro parametri. Il numero di messaggi scambiati per completare una richiesta di servizio dovrebbe essere minimo. I servizi devono essere senza stato: pertanto potrà essere necessario passare informazioni sullo stato (in ingresso o uscita) per mezzo dei messaggi di input/output. Ingegneria del Software 2 Service Engineering 40 20

Le fasi di progettazione dell Interfaccia Logical interface design Si identificano I nomi delle operazioni associate al servizio, i parametri di input e output, e le eventuali eccezioni. Message design Progettazione dei messaggi (struttura dei messaggi in input ed output, ed il tipo dei parametri). Preferibile l uso di linguaggi come l UML (da tradurre poi in XML) piuttosto che direttamente l XML. WSDL description La specifica logica dell interfaccia del servizio è tradotta in WSDL. Ingegneria del Software 2 Service Engineering 41 Progettazione dell Interfaccia del catalogo Operation Inputs Outputs Exceptions CreaCatalogo Confronta Visualizza Ricerca DataConsegna CreaOrdine Virtuale mcin Company id PDF-flag compin Company id Entry attribute (up to 6) Catalogue number (up to 4) lookin Company id Catalogue number searchin Company id Search string gdin Company id Catalogue number Number of items required poin Company id Number of items required Catalogue number mcout URL of the catalogue for that company compout URL of page showing comparison table lookout URL of page with the item information searchout URL of web page with search results gdout Catalogue number Expected delivery date poout Catalogue number Number of items required Predicted delivery date Unit price estimate Total price estimate mcfault Invalid company id compfault Invalid company id Invalid catalogue number Unknown attribute lookfault Invalid company id Invalid catalogue number searchfault Invalid company id Badly-formed search string gdfault Invalid company id Invalid catalogue number No availability Zero items requested pofault Invalid company id Invalid catalogue number Zero items requested Ingegneria del Software 2 Service Engineering 42 21

Struttura dei messaggi di Input e output per l operazione CheckDelivery gdin cid: string catnum: string numitems: integer size (cid) = 6 size (catnum) = 1 0 numitems > 0 gdout catnum: string delivdate: date size (catnum) = 1 0 delivdate > T oday gdfault errcode: integer Invalid company id errcode=1 Invalid catalogue number errcode = 2 No availability errcode = 3 Zero items requested errcode = 4 Ingegneria del Software 2 Service Engineering 43 (3) Implementazione e consegna del Servizio Il servizio può essere implementato usando linguaggi standard di programmazione (come C# o Java) che forniscono librerie per lo sviluppo di servizi. Alternativamente, I servizi possono essere implementati usando componenti preesistenti, sistemi ereditati, o definendo una composizione di servizi pre-esistenti con linguaggi di workflow. I servizi devono essere poi testati partizionando gli input, creando vari messaggi di input, e verificando che I messaggi di output prodotti siano corretti rispetto alla specifica. La consegna richiede che il servizio sia pubblicizzato usando UDDI e che venga installato su un web server. Molti server forniscono supporto per una semplice installazione del servizio. Ingegneria del Software 2 Service Engineering 44 22

Ulteriori caratteristiche I Web Service mostrano solamente l interfaccia dei servizi forniti, mentre non dovrebbero aver bisogno di altre risorse Se il Web Service dovesse aver bisogno di dati persistenti, nel suo codice dovrà essere inglobato il codice per l accesso alla risorsa (ad esempio un database) In questo modo il WS può operare da proxy nell accesso al database I Web Service possono mantenere lo stato unicamente sfruttando variabili di sessione e le altre possibilità messea disposizione dai protocolli della famigliahttp Ingegneria del Software 2 Service Engineering 45 Application server I Web Service devono essere installati (deployed) all interno di un application server L application server, analogamente ad un web server, ascolta su alcuni porti le richieste http in arrivo Le richieste codificate con linguaggi come SOAP vengono processate: Viene eseguito il Web Service richiesto con i parametri che è possibile estrarre dalmessaggio SOAP di richiesta Viene generato e inviato al sender un messaggio SOAP di risposta contenente tra l altro i parametri risultato dell elaborazione L application server rende accessibile anche il catalogo dei WSDL dei servizi messi a disposizione Esempio di application server: Apache Tomcat Tomcat è in realtà un estensione al web server Apache Ingegneria del Software 2 Service Engineering 46 23

UDDI Elemento fondamentale delle architetture SOA è la descrizione della semantica del servizio fornito che permetta, idealmente, la ricerca automatica di un servizio data la sua descrizione funzionale e, eventualmente, i requisiti di qualità richiesti o graditi Il linguaggio più spesso utilizzato per fornire tale descrizione semantica é UDDI (dialetto XML). Un documento UDDI contiene: Dettagli sul fornitore del servizio Descrizione (informale) delle funzionalità fornite Posizione della descrizione WSDL dell interfaccia C è un ampio dibattito sulla definizione di standard: che permettano una più precisadescrizionesemantica dei servizi (utilizzando eventualmente anche ontologie) Che permettano di descrivere più precisamente i requisiti di qualità (Quality of Service QoS) Ingegneria del Software 2 Service Engineering 47 Legacy system services Un importante vantaggio nell uso dei servizi è che essi danno la possibilità di accedere alle funzionalità di legacy systems I Legacy systems offrono funzionalità mature e stabili, il cui riuso può ridurre I costi di sviluppo dei servizi Le applicazioni esterne potranno accedere a queste funzionalità attraverso l interfaccia offerta dai servizi Ingegneria del Software 2 Service Engineering 48 24

Accesso al sistema Legacy <<Servizio>> Orario Treni RicercaTreno Sistema Legacy <<Servizio>> Prenotazioni PrenotaCorsa RicercaPrenotazione Le funzionalità del sistema legacy sono rese disponibili sotto forma di Servizi Ingegneria del Software 2 Service Engineering 49 Migrazione di sistemi legacy verso SOA Le tecnologie SOA (e i Web Service in particolare) sono particolarmente utili per la migrazione di funzionalità critiche di sistemi legacy Spesso, infatti, le funzionalità presenti nei sistemi legacy risolvono problemi particolarmente critici e sono da considerare molto affidabili, in quanto sono in opera da molti anni Migrando tali funzionalità sotto forma di Web Services, si aprono scenari per: L adattamento a interfacce moderne (ad esempio interfacce web) La composizione all interno di architetture moderne Una tecnica di migrazione basata su Wrapping per rendere accessibili le funzionalità di un sistema legacy sotto forma di servizi web è presentata in [1] Ingegneria del Software 2 Service Engineering 50 25

Il ruolo del Wrapper nella migrazione di sistemi legacycon interfaccia utente basata su form Il wrapper ha il ruolo di interagire col sistema legacy (fornendo ad esso dati e comandi) al posto dell utente. Grazie al wrapper il sistema legacy esporterà una interfaccia da Web Service Web Service Request Application Server Wrapper Legacy System Web Service Response Ingegneria del Software 2 Service Engineering 51 Sviluppo Software basato su servizi L idea è di comporre e configurare servizi esistenti per creare nuovi servizi composti ed applicazioni. La base per la composizione del servizio è spesso un workflow I Workflow sono sequenze logiche di attività che, insieme, modellano processiaziendali Ad esempio, una composizione di servizi per prenotare un viaggio che cordina vari servizidi prenotazione volo, auto ed albergo. Ingegneria del Software 2 Service Engineering 52 26

Esempio: workflow per la prenotazione di una vacanza Prenota volo Prenota hotel Noleggia Auto o taxi Esamina le attrazioni Prenota Le attrazioni Arrival/departure dates/times Hotel location Dates/preferences Ingegneria del Software 2 Service Engineering 53 Composizione di servizi Lo scenario ideale prospettato dalle SOA è uno scenario nel quale: Si descrive un problema in un linguaggio formale (ma il più possibile intuitivo e vicino al linguaggio naturale) Un motore di interpretazione scompone il problema in un workflowdi sottoproblemi Vengono automaticamente ricercati e reperiti Web Service in grado dirisolvere ogni sottoproblema Viene automaticamente composto il workflow in grado di risolvere il problema proposto Ingegneria del Software 2 Service Engineering 54 27

Costruzione di un servizio mediante composizione Progettare Progettare Uno Uno schema schema Di Di workflow workflow Scoprire Scoprire i i Servizi Servizi Selezionare Selezionare i i Servizi Servizi Raffinare Raffinare Il Il Workflow Workflow Creare Creare il il Programma Programma Di Di workflow workflow Test Test del del Servizio Servizio Progetto Progetto di di Workflow Workflow Lista Lista dei dei Servizi Servizi Specifica Specifica dei dei Servizi Servizi Progetto Progetto di di Workflow Workflow Workflow Workflow Eseguibile Eseguibile Servizio Servizio completato completato Ingegneria del Software 2 Service Engineering 55 Processo di composizione Le difficoltà legate alla realizzazione di un workflow di servizi provenienti da fonti eterogenee sono comunque notevoli In particolare bisogna tener conto di tutte le possibili eccezioni di ogni servizio e delle conseguenti azioni da intraprendere per recuperare dall eccezione Ad esempio, se la prenotazione del viaggio va a buon fine ma fallisce quella dell albergo, la semantica del servizio potrebbe prevedere la necessità di annullare la prenotazione del viaggio Per fare ciò è necessario un ulteriore Web Service di annullamento prenotazione Ingegneria del Software 2 Service Engineering 56 28

Il workflow per la prenotazione di una camera di hotel Hotels. GetRequirements Retry Hotels. CheckAvailability No rooms Rooms OK Hotels. NoAvailability Cancel Hotels. ReserveRooms Hotels. ConfirmReservation Customer Ingegneria del Software 2 Service Engineering 57 Progetto e implementazione dei workflow Sono stati proposti diversi linguaggi per la descrizione di workflow di servizi web WS-BPEL è al momento il più comune. E anch esso un dialetto XML Esistono componenti che vanno a estendere le funzionalità dell application service, che agiscono da interpreti didocumenti BPEL ed esecutori di Workflow Esempio: BPEL4WS Esistono inoltre strumenti come BPMN per la definizione visuale di workflow di web service Ingegneria del Software 2 Service Engineering 58 29