Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TESI DI LAUREA
IN
INGEGNERIA DEL SOFTWARE
Relatori:
Chiar.mo Prof Giuseppe VISAGGIO
Dott. Danilo CAIVANO
Laureando:
Damiano Diego de Felice
1.INDICI
2. I NTRODUZIONE ..................................................................10
2.1 S COPO DELL A TESI ..........................................................................11
2.2 S TRUTTURA DELL A TESI ....................................................................12
2
Dallo sviluppo per componenti ai Web Services
3
Dallo sviluppo per componenti ai Web Services
6. S PERIMENTAZIONE ............................................................162
6.1 A PPROCCIO ADOTTATO ....................................................................162
6.2 P ROBLEMA DEI DATI E SIMUL AZIONE ...................................................162
6.2.1 Il tool per la simulazione .....................................................162
6.3 R ISULTATI OTTENUTI .......................................................................166
6.4 C ONSIDERAZIONI SULLE PRESTAZIONI ..................................................173
8. B IBLIOGRAFIA .................................................................176
8.1 R IFERIMENTI COMUNI A TUTTI I CAPITOLI .............................................176
8.2 R IFERIMENTI “I NTRODUZIONE ” .........................................................176
8.3 R IFERIMENTI “D ALLO SVILUPPO PER COMPONENTI AI W EB S ERVICES ” ........176
8.4 R IFERIMENTI “XML W EB S ERVICES ” ................................................177
8.5 R IFERIMENTI “C ASE S TUDY ” ...........................................................179
8.6 R IFERIMENTI “C ONCLUSIONI ” ..........................................................181
4
Dallo sviluppo per componenti ai Web Services
5
Dallo sviluppo per componenti ai Web Services
F IGURA 5-49: R ELAZIONI TRA IL CLR, IL BCL E L ' INTERO SISTEMA ... .91
6
Dallo sviluppo per componenti ai Web Services
F IGURA 5-54: U N W EB F ORM CON ALL ' INTERNO UNA COMPONENTE SERVER
.......................................................................................97
F IGURA 5-62: D ALLA DIPENDENZA DALLA PIAT TAFORMA ALL ' IRRILEVANZA
DELLA PIAT TAFORMA ..............................................................107
F IGURA 5-67: F LUSSO DI DATI ALL ' INTERNO DI S OAP S ERVER 30........114
7
Dallo sviluppo per componenti ai Web Services
F IGURA 5-86: I L GADGET ALL ' INTERNO DEL PORTALE IN MODALITÀ GRAFICA
.....................................................................................137
8
Dallo sviluppo per componenti ai Web Services
F IGURA 6-99: R ICHIESTE SIMULATE ALL ' INTERNO DEL FOGLIO DI CALCOLO
.....................................................................................164
F IGURA 6-104: I L GRAFICO PRIMA DELL ' INSERIMENTO DELLA RICHIESTA 170
9
Dallo sviluppo per componenti ai Web Services
2.INTRODUZIONE
10
Dallo sviluppo per componenti ai Web Services
11
Dallo sviluppo per componenti ai Web Services
12
Dallo sviluppo per componenti ai Web Services
3.1.1Cosa
3.1.1Cosa sono le componenti
Una componente è un’unità di composizione specificata in
modo tale da rendere possibile la sua composizione con altre
componenti e la sua integrazione in modo prevedibile all’interno di
sistemi. Una componente può essere distribuita indipendentemente
ed è soggetta a composizione da terze parti. Affinché una
componente sia distribuibile in modo indipendente, è richiesta una
chiara e netta distinzione dal suo ambiente e dalle altre
componenti. La comunicazione con il suo ambiente avviene
attraverso interfacce: una componente deve avere quindi delle
interfacce specificate in modo chiaro e formale, inoltre la sua
implementazione deve essere incapsulata e non accessibile
dall’ambiente esterno.
La caratteristica più importante di una componente è la
separazione della sua interfaccia dalla sua implementazione.
Questa separazione è differente da quella trovata nella
programmazione orientata agli oggetti (OOP, Object Oriented
Programming), dove la definizione di una classe è separata dalla
sua implementazione.
L’integrazione e la distribuzione di una componente dovrebbero
essere indipendenti dal suo ciclo di sviluppo, e non dovrebbe
essere mai necessario ricompilare un’applicazione che fa uso di
una componente quando si rende necessaria una nuova versione di
quest’ultima. Tutto questo per garantire un corretto uso da parte di
terzi.
Un’altra caratteristica importante di una componente è la sua
visibilità esclusivamente attraverso la sua interfaccia. Ciò implica
la necessità di una sua specifica completa, che includa le sue
proprietà funzionali ed extra-funzionali (ovvero attributi di qualità
come accuratezza, disponibilità, latenza, sicurezza, prestazioni,
risorse richieste), casi d’uso, casi di test, e così via.
13
Dallo sviluppo per componenti ai Web Services
3.1.2Come
3.1.2Come specificare le componenti
Una componente è specificata in termini delle sue proprietà
funzionali ed extra-funzionali. Mentre la specifica dell’interfaccia
cattura la sintassi delle proprietà funzionali, i contratti giocano un
ruolo importante nella comprensione della semantica delle
proprietà funzionali di una componente.
L’interfaccia di una componente può essere definita come la
specifica dei suoi punti d’accesso. Un’applicazione accede ai servizi
forniti dalla componente usando questi punti d’accesso.
Un’interfaccia non comprende alcuna implementazione delle sue
operazioni, al contrario, elenca solo un insieme di operazioni e
fornisce esclusivamente una descrizione di esse. Questa
separazione rende possibile sostituire la parte implementativa
senza il bisogno di cambiare l’interfaccia, e in tal modo rende
superflua la ricompilazione del sistema che la usa.
14
Dallo sviluppo per componenti ai Web Services
3.1.3Implementazione
3.1.3Implementazione e distribuzione delle componenti
I concetti alla base dell’implementazione e della distribuzione
delle componenti sono i pattern e i framework.
Un pattern definisce una soluzione ricorrente a un problema
ricorrente. I pattern possono essere classificati in tre grandi
categorie in relazione al livello di astrazione usato per
documentare una soluzione software. Al livello di astrazione più
alto ci sono i pattern architetturali (architectural pattern), i
quali trattano le proprietà globali e l’architettura di un sistema
composto da componenti di grosse dimensioni. I pattern
architetturali catturano l’intera struttura e organizzazione di un
sistema software, specificano soluzioni di alto livello, descrivono
l’insieme dei sottosistemi partecipanti, i loro ruoli ed esprimono le
relazioni tra di loro. Ad un livello di astrazione più basso, i pattern
1
IDL (Interface Definition Language) è un termine generico usato per indicare un
linguaggio che permette a un programma o a un oggetto scritto in un linguaggio
di comunicare con un altro programma scritto in un linguaggio a lui sconosciuto.
Nelle tecnologie ad oggetti distribuiti, è importante che nuovi oggetti siano in
grado di essere inviati su una qualsiasi piattaforma o ambiente, e che siano in
grado di scoprire come essere eseguiti in tale ambiente.
2
CORBA (Common Object Request Broker Architecture) è un'architettura e un
insieme di specifiche per creare, distribuire e gestire oggetti distribuiti
all'interno di una rete. Permette a programmi in locazioni differenti e sviluppati
da diversi fornitori in linguaggi differenti, di comunicare in una rete attraverso le
cosiddette "interface broker".
3
Component Object Model, verrà trattato in modo approfondito nel paragrafo
5.2.3.1 a pagina 76.
15
Dallo sviluppo per componenti ai Web Services
4
La granularità è la dimensione relativa, la scala, il livello di dettaglio, o la
profondità che caratterizza un oggetto o un'attività. Questo termine è usato in
astronomia, fotografia, fisica, linguistica e molto spesso in informatica. Ci si può
riferire ad essa come livello di una gerarchia di oggetti o azioni, al livello di
dettaglio di una fotografia, o alla quantità di informazioni di un messaggio.
16
Dallo sviluppo per componenti ai Web Services
3.1.4Le
3.1.4Le relazioni tra i concetti di base
Per comprendere meglio le relazioni che ci sono tra i concetti
finora esposti, si può far riferimento alla Figura 3-1.
17
Dallo sviluppo per componenti ai Web Services
3.2.1Cosa
3.2.1Cosa sono i servizi
Un servizio si intende come un’entità software di ampia
granularità e scopribile, che esiste come una singola istanza e
interagisce con applicazioni e altri servizi secondo un modello di
comunicazione a basso accoppiamento (spesso asincrono) e basato
su messaggistica.
5
In tutto il seguito di questa tesi si farà uso del termine italiano “scopribile”
come traduzione dell’originale inglese “discoverable”, usato nei testi di
riferimento. Sebbene il termine “scopribile” in italiano non sia stilisticamente
gradevole, se ne fa uso in quanto è quello che più si avvicina al significato
dell’originale inglese e più ne rende l’idea.
18
Dallo sviluppo per componenti ai Web Services
19
Dallo sviluppo per componenti ai Web Services
3.2.2Architettura
3.2.2Architettura dei sistemi orientati ai servizi
Nell’ingegneria del software ogni nuovo progetto di sviluppo è
basato su tecniche e tool che hanno funzionato con successo in
progetti precedenti. Si è già menzionato il fatto che componenti e
servizi, anche se simili, non sono la stessa cosa: esistono infatti
criteri di progettazione e design pattern differenti. Va tenuto conto
anche del fatto che non tutti i componenti di alta qualità,
trasformati in un servizio, risultino in un servizio di qualità
paragonabile.
La tendenza a risolvere nuovi problemi usando vecchie soluzioni
non è una pratica nuova. In modo simile, nel momento in cui gli
sviluppatori cominciano a creare sistemi basati su componenti, essi
tentano di sfruttare tutta la loro conoscenza nel campo dello
sviluppo orientato agli oggetti, ovviamente con tutti i vecchi
problemi. In modo simile per implementare servizi si usano le
componenti come il metodo migliore. La chiave per effettuare una
transizione da un sistema basato su componenti a uno basato su
21
Dallo sviluppo per componenti ai Web Services
3.2.3Web
3.2.3Web Service
Mentre i servizi incapsulano le funzionalità di business, è
richiesta una forma di infrastruttura per facilitare l’interazione e la
comunicazione tra i servizi stessi. Di questa infrastruttura, sono
possibili diverse forme, in quanto i servizi possono essere
implementati su una singola macchina, distribuiti su una serie di
computer appartenenti a una rete locale (LAN), o distribuiti in
modo più ampio su reti di diverse organizzazioni. Un caso
particolare si ha quando i servizi usano Internet come meccanismo
di comunicazione. Il risultante servizio web (Web Service)
condivide le caratteristiche dei più generali servizi, ma richiede
particolari considerazioni dovuti all’uso di meccanismi di
comunicazione pubblici, insicuri e a bassa affidabilità, per
l’interazione tra servizi.
I Web Service così come appena descritti, rappresentano quindi
l’idea astratta di un servizio usufruibile via web. Un caso
particolare di Web Service sono gli XML Web Service, i quali
verranno trattati in modo più specifico nel seguito.
22
Dallo sviluppo per componenti ai Web Services
23
Dallo sviluppo per componenti ai Web Services
24
Dallo sviluppo per componenti ai Web Services
6
Come specificato nell’RFC (Request For Comment) numero 2396 dell’IETF
(Internet Engineering Task Force), una URI è una stringa compatta di caratteri
usata per identificare in modo univoco una risorsa astratta o fisica.
25
Dallo sviluppo per componenti ai Web Services
26
Dallo sviluppo per componenti ai Web Services
4.1.1eXtensible
4.1.1eXtensible Markup Language (XML)
La specifica XML è un insieme di linee guida, definito dal World
Wide Web Consortium (W3C) 1 1 , per descrivere dati strutturati in
formato testuale. Come HTML, XML è un linguaggio di markup
(marcatura) basato su tag (marcatori) all’interno di parentesi
angolari (< e >), ed è un sottoinsieme del più complesso SGML
(Standard Generalized Markup Language). Come per HTML, la
natura testuale di XML rende i dati altamente portabili e
largamente diffondibili. Diversamente però da HTML, XML non ha
un insieme fisso di tag, ma data la sua natura di metalinguaggio,
permette di creare altri linguaggi di markup mediante la definizione
di nuovi tag. E’ proprio questa possibilità di definire nuovi tag che
rende XML un linguaggio estendibile. Un’altra differenza da HTML, il
quale si concentra più sulla presentazione dei dati, è l’attenzione di
XML sui dati e sulla loro struttura. Per questo motivo XML è molto
più rigoroso nelle sue regole sintattiche: un documento XML deve
essere ben formato (well formed), ovvero a ogni tag deve essere
associato il corrispondente tag di chiusura, i tag non devono
sovrapporsi e altro.
Un esempio di documento XML viene riportato in Figura 4-9. Gli
elementi su cui soffermare l’attenzione sono i già citati tag
(Externa lPerson
, Person, Name, ecc…), gli attributi dei tag (id per
Person), usati per specificare ulteriori informazioni riguardo il
contenuto di un tag e i namespace.
11
Il W3C riveste un ruolo fondamentale per gli XML WS. Essa è un’organizzazione
indipendente consistente di circa 500 membri, formata nel 1994 sotto la
direzione di Tim Berners-Lee. Il suo obiettivo primario è pubblicare standard per
tecnologie direttamente legate al Web (come HTML e XML). Ciò che viene
proposto da W3C non è ufficialmente uno “standard”, infatti il termine usato è
“raccomandazione” (recommendation), comunque tali raccomandazioni sono
standard di fatto in molti settori, grazie alla natura imparziale del W3C stesso.
Una volta che uno standard ha ottenuto lo stato di raccomandazione, questo non
verrà più né modificato né subirà aggiunte. Ma prima di raggiungere tale stato,
gli standard sono classificati prima come schema in lavorazione (Working Draft),
in quanto soggetti ancora a modifiche, e solo alla fine dopo uno schema in
lavorazione di richiamo (Call Working Draft) diventeranno raccomandazioni.
Figura 4 - 9 : Un esempio di file XML
27
Dallo sviluppo per componenti ai Web Services
4.1.2Simple
4.1.2Simple Object Access Protocol (SOAP)
Le specifiche SOAP 1 2 definiscono un framework di messaggistica
per lo scambio di dati formattati in XML attraverso Internet. Il
framework è semplice, facile da sviluppare e completamente
neutrale rispetto al sistema operativo, al linguaggio di
programmazione o della piattaforma hardware. SOAP fornisce un
livello minimo di trasporto sulla base del quale possono essere
costruiti protocolli e interazioni più complessi.
SOAP è fondamentalmente un modello di comunicazione a una
via che assicura che un messaggio coerente sia trasferito dal
mittente al ricevente, includendo anche potenziali intermediari che
possono aggiungere o modificare parti del messaggio.
Le specifiche SOAP contengono convenzioni per adattare la sua
natura di messaggistica unidirezionale al paradigma
richiesta/risposta tipico dello stile di comunicazione del Remote
Procedure Call (RPC). Inoltre definiscono come trasmettere interi
documenti XML e una regola opzionale di codifica per i tipi di dati,
lasciando anche la libertà al ricevente di interpretare liberamente
tali tipi.
Facendo riferimento alla Figura 4-10 e alla Figura 4-11, una
richiesta SOAP trasportata usando il protocollo di rete HTTP, è una
richiesta HTTP di tipo POST. All’interno dell’intestazione HTTP,
oltre ai comuni campi
di una richiesta HTTP,
deve essere
specificato anche il
12
Di recente con SOAP non viene più indicato l’originale Simple Object Access
Protocol, bensì in modo non Figura
ufficiale 4Service-Oriented Access
- 10 : Intestazione Protocol,
della sia per
richiesta
uniformarlo ai concetti di Web
HTTP Service, sia perché SOAP in realtà non è né
semplice né object-oriented.
28
Dallo sviluppo per componenti ai Web Services
29
30
Dallo sviluppo per componenti ai Web Services
4.1.3Web
4.1.3Web Services Description Language (WSDL)
Le specifiche WSDL definiscono un framework estendibile per la
descrizione delle interfacce dei Web Service. Sviluppato
originariamente da Microsoft e IBM, è stato poi approvato e reso
standard dal W3C. WSDL è il cuore del framework dei Web Service,
in quanto fornisce una modalità comune in cui rappresentare i tipi
di dati passati nei messaggi, le operazioni da eseguire sui messaggi
e la corrispondenza dei messaggi con i protocolli di trasporto di
rete.
Un documento WSDL è composto da tre elementi principali:
• Definizione dei tipi di dati;
• Operazioni astratte;
• Modalità di accesso.
Ognuno di questi elementi può essere specificato in un
documento XML separato e poi importato in diverse combinazioni
per creare la descrizione finale del WS, oppure possono essere
definite insieme in un unico documento.
La definizione dei tipi di dati determina la struttura e il
contenuto dei messaggi. Le operazioni astratte determinano le
operazioni eseguite sul contenuto del messaggio, infine le modalità
di accesso determinano il protocollo di trasporto di rete che porterà
il messaggio alla sua destinazione (detta endpoint, ovvero “punto
finale”). Le operazioni e i messaggi sono descritti in modo astratto,
una volta però legati a un protocollo di rete e a un formato di
messaggio, allora definiscono un endpoint. Diversi endpoint
concreti, tra loro legati, sono combinati in endpoint astratti, detti
servizi.
In ognuno dei tre elementi principali esistono ulteriori sotto-
elementi di livello di astrazione più basso, per un totale di sette:
• Tipo (Type ): definisce tutti i tipi di dati usati nei messaggi,
in particolare la loro struttura, la cardinalità e i tipi degli
elementi costituenti, fino ad arrivare ai tipi di dati
primitivi;
• Messaggio (Message ): definisce le diverse parti di un
messaggio (per esempio intestazione (Header), corpo
(Body), parametri);
31
Dallo sviluppo per componenti ai Web Services
32
Dallo sviluppo per componenti ai Web Services
13
Tale rappresentazione viene fornita dal tool di sviluppo XML-Spy 5 di Altova
Inc. (http://www.altova.com/ ), di cui si parlerà anche nel seguito.
33
Dallo sviluppo per componenti ai Web Services
4.1.4Universal
4.1.4Universal Description, Discovery, and Integration (UDDI)
34
Dallo sviluppo per componenti ai Web Services
35
Dallo sviluppo per componenti ai Web Services
4.1.5Scenario
4.1.5Scenario di utilizzo tipico
Dopo aver parlato di tutti i protocolli su cui si basano gli XML
WS, è ora possibile definire il tipico scenario di utilizzo. Così come
per lo sviluppo orientato ai servizi, anche per gli XML WS si
riconoscono tre attori
principali: Service
36
4.2.1Service
4.2.1Service Pattern
L’architettura WS non è perfetta, ma per alcune classi di
problemi è la tecnologia più appropriata attualmente disponibile. I
WS sono particolarmente utili per esporre servizi di gestione dello
stato verso una rete eterogenea di componenti client. I service
pattern presentati di seguito tendono a comprendere funzionalità di
dimensioni molto più ampie dei tradizionali design pattern, i quali
sono generalmente più orientati al livello delle componenti.
4.2.1.1Web
4.2.1.1Web Service Façade
Il façade pattern (pattern di facciata) è un design pattern
comune per le componenti e consiste nel presentare un’interfaccia
“amichevole” per una logica di applicazione “non amichevole”. Di
solito l’uso più comune del façade pattern è quello di nascondere la
chiamata a una risorsa esterna, come un database, la quale
richiede un linguaggio o una sintassi differente da quelle usate nel
resto dell’applicazione.
Il façade service pattern è del tutto simile: agisce come un
front-end XML verso un servizio componente che non è nativo XML,
rispettando al tempo stesso gli stessi requisiti di sicurezza del
servizio originale (autenticazione, accessi privilegiati, ecc…). Alcuni
esempi di possibili applicazioni del façade service pattern sono
quelli di seguito elencati:
• Front-end XML verso database. Servizi di questo tipo si
specializzano nell’offrire interfacce di interrogazione e
modifica di specifici insiemi di dati logici (ad esempio
record di impiegati). La facciata nasconde sia il linguaggio
di interrogazione sia la struttura fisica dei dati nelle
tabelle e nelle viste. L’applicazione di questo pattern
permette di progettare ottimamente il database senza
37
Dallo sviluppo per componenti ai Web Services
4.2.1.2Gestione
4.2.1.2Gestione dei processi di business
I WS possono orchestrare processi complessi all’interno di grosse
organizzazioni (come l’assunzione di personale o la gestione delle
risorse umane), sia processi che si estendono oltre i loro confini
(come pagamenti o acquisti). In questi processi i WS sono molto
utili, in quanto sono progettati per essere indipendenti dalla
tecnologia sottostante e per superare facilmente tutti i ponti tra i
diversi sistemi coinvolti (Figura 4-26).
Tuttavia
quest’area è
ancora in fase
di sviluppo
soprattutto nel
campo della
sicurezza e
delle
transazioni.
38
Dallo sviluppo per componenti ai Web Services
4.2.1.3Portali
4.2.1.3Portali
Sin dai primordi del Web, i portali hanno sempre fornito servizi di
valore: da siti di notizie come MyYahoo!, fino a siti di gestione dei
sistemi di rete sviluppati da settori tecnici di un’organizzazione. I
WS offrono un nuovo approccio per la costruzione dei portali,
definendo un approccio comune e uno schema per lo scambio dei
dati. Con l’esposizione dei dati mediante servizi web, chi pubblica i
dati permette ai client di utilizzare sia i dati senza costringerli a un
determinato schema o formato di rappresentazione, sia le
funzionalità attualmente svolte da pagine web tramite interazione
uomo-macchina, creando così un vero e proprio Web
programmabile.
4.2.1.4Supporto
4.2.1.4Supporto all’EAI
L’integrazione di applicazioni enterprise (EAI, Enterprise
Application Integration) è il processo tradizionalmente costoso
di costruire sistemi di interscambio di dati tra applicazioni di
business. Le soluzioni di EAI devono capire i protocolli e le
interfacce dei servizi delle applicazioni che gestiscono, estrarre i
dati da applicazioni differenti e tradurre i dati in schemi e tipi
compresi dalle altre applicazioni da integrare. Un efficiente modello
per le soluzioni di EAI sono i concentratori (hub ). Un
concentratore solitamente traduce i dati estratti in una
rappresentazione interna, dalla quale produrre rappresentazioni
comprensibili da tutte le applicazioni che supporta. Un
concentratore può usare un approccio a connettore in modo da
aggiungere modularmene applicazioni supportate a un’installazione
preesistente.
Nel mondo dei WS, le rappresentazioni interne dei dati sono un
insieme di documenti XML, mentre i connettori sono WS façade che
producono questi documenti a partire dai dati interni delle
applicazioni supportate. Di supporto alla rappresentazione interna
e alle trasformazioni tra formati differenti vengono in aiuto
rispettivamente gli standard XML-Schema (XSD) e eXtensible
Stylesheet Language Transformations (XSLT), entrambi ratificati
dal W3C e pienamente supportati dai moderni tool di sviluppo.
4.2.2Progettazione
4.2.2Progettazione di Web Service
Lo sviluppo di servizi completi, robusti e scalabili richiede a
volte di pensare in modo differente dal solito. Durante la
progettazione dei sistemi che fanno uso di WS bisogna porre
attenzione ad alcuni particolari che se tralasciati possono portare il
sistema implementato ad essere inefficiente e poco manutenibile
dopo un breve periodo di reale utilizzo.
4.2.2.1Problemi
4.2.2.1Problemi ricorrenti e soluzioni possibili
I WS rendono gli schemi XML centrali nella comunicazione tra
organizzazioni, mentre in passato la definizione di schemi e
39
Dallo sviluppo per componenti ai Web Services
4.2.2.2Linee
4.2.2.2Linee guida
I punti di forza e le limitazioni dei WS suggeriscono design
pattern diversi da quelli usati per sviluppare i tradizionali sistemi,
riassumendo si possono trarre le seguenti linee guida:
• Messaggi a granularità ampia. I servizi non devono esporre
interfacce per eseguire piccole modifiche agli elementi di
un dato, piuttosto devono eseguire modifiche generiche
con una singola chiamata di servizio.
40
Dallo sviluppo per componenti ai Web Services
4.2.2.3Remote
4.2.2.3Remote Procedure Call vs. Document oriented
Per chi utilizza un WS, l’interazione con un Web Service può
apparire come una interazione batch oppure in tempo reale. Gli
standard e le tecnologie per i WS generalmente comprendono due
tipi di pattern di interazione per le applicazioni: Remote Procedure
Call oriented (RPC, chiamata di procedure remote) e Document
oriented (orientato ai documenti).
Nell’interazione RPC oriented, una richiesta ha la forma di una
chiamata di un metodo o di una procedura con i relativi parametri
di input e output. Inoltre nell’interazione RPC oriented viene inviato
un documento in un formato specifico in modo da comunicare con
un’unica applicazione software o stored procedure di un database,
come mostrato in Figura 4-27. Se ad esempio l’ordine di un
prodotto dipende dalle scorte di magazzino, il sistema accede al
database per controllare l’effettiva disponibilità. Se c’è disponibilità
41
Dallo sviluppo per componenti ai Web Services
42
Dallo sviluppo per componenti ai Web Services
4.2.3L’esempio
4.2.3L’esempio rivisitato
Se si considera l’esempio del sistema di gestione clienti esposto
nel capitolo precedente, si può notare come questo, rivisitato
mediante gli XML Web Service, non presenti sostanziali differenze
da come era stato implementato seguendo l’approccio di sviluppo
orientato ai servizi. Nella modellazione UML verranno solo introdotti
due nuovi stereotipi (ovvero estensioni del linguaggio UML
esistente) chiamati «WebService» e «WebDocument».
Web Service così come definito nel suo documento WSDL, come
esempio di uso dei due stereotipi. In realtà questi possono essere
usati in qualsiasi altro diagramma UML oltre a quello di
Deployment. E’ importante notare come questo metodo di
progettare i WS promuove il riuso sia dei documenti che
definiscono lo scambio di dati sia delle interfacce supportate dai
43
Dallo sviluppo per componenti ai Web Services
M ANUFATTO
E LEMENTO UML C OMMENTO
WSDL
44
Dallo sviluppo per componenti ai Web Services
Rete dell’
organizzazione
45
Figura 4 - 30 : L'estensione di un'organizzazione
Dallo sviluppo per componenti ai Web Services
4.3.1La
4.3.1La rivoluzione dei dati
Prima dell’avvento di XML, i dati erano molto spesso in formati
proprietari, accoppiati profondamente con le applicazioni che
capivano come i dati erano strutturati e come elaborarli. I formati
basati su XML specifici per l’industria e l’e-commerce forniscono
un’alternativa alle soluzioni specializzate di Electronic Data
Interchange (EDI), facilitando lo scambio di dati nella logica B2B e
giocando un ruolo chiave nell’infrastruttura di messaggistica per il
modello di elaborazione distribuita.
La forza di XML è l’indipendenza dai dati. XML è pura descrizione
di dati, non legato ad alcun linguaggio di programmazione, sistema
operativo o protocollo di trasporto. I dati sono quindi liberi di
muoversi senza i limiti imposti dalle architetture fortemente
accoppiate e dipendenti da determinati protocolli di trasporto.
XML deriva dalla cultura dei documenti, la quale cultura è
distinta e contrapposta a quella del codice e dei dati, ovvero quelle
che spingono maggiormente il mercato dell’informatica. La cultura
del codice è caratterizzata da un’attenzione sui linguaggi di
programmazione, partendo da Fortran e arrivando a C, C++ e Java.
La cultura dei dati è caratterizzata da COBOL, elaborazione dati e
database. Entrambi i due modi di pensare portano con se la
propensione a vedere la risoluzione dei problemi solo attraverso
codice o dati. Dalla prospettiva del codice, i dati sono unicamente
qualcosa da trasferire attraverso chiamate di procedura. Dalla
prospettiva dei dati, i dati sono solo qualcosa da immagazzinare in
database per poi manipolare. La cultura da cui ha origine XML ha
forzato un ridimensionamento delle modalità di sviluppo delle
applicazioni, soprattutto per chi è legato alla cultura del codice.
Un’organizzazione che decidesse di intraprendere la strada dei Web
46
Dallo sviluppo per componenti ai Web Services
4.3.2La
4.3.2La rivoluzione architetturale
Le tecnologie basate su XML aprono nuove possibilità per
l’elaborazione distribuita potenziando l’attuale infrastruttura del
Web e creando una transizione dai sistemi distribuiti basati su
oggetti ad architetture basate su servizi Web che possono essere
scoperti, usati e assemblati usando tecnologie standard e aperte. Il
cambiamento in quest’area è stato lo spostamento da sistemi ad
alto accoppiamento, basati su infrastrutture come CORBA, RMI 1 4 e
DCOM 1 5 , ognuna con i propri protocolli di trasporto, a sistemi a
basso accoppiamento basati su protocolli Web come TCP/IP. Anche
se i protocolli sottostanti CORBA, RMI e DCOM forniscono un mezzo
di comunicazione efficiente tra i nodi, il loro svantaggio è la
difficoltà di comunicare con altri sistemi o direttamente con il Web.
I sistemi ad accoppiamento lasco basati sul Web, invece, forniscono
ciò che è stato sempre ricercato nell’informatica: la connettività
universale.
Anche se è possibile costruire ponti software che legano sistemi
legacy tra loro o con il Web, questa pratica non è semplice e
aggiunge un ulteriore strato di complessità su un’infrastruttura già
di per se complessa. Tuttavia l’introduzione dei Web Services
all’interno dei sistemi preesistenti rende possibili nuove
architetture.
4.3.3La
4.3.3La rivoluzione del software
Durante gli anni 70 e 80, il software era costruito come
applicazioni monolitiche progettate per risolvere particolari
problemi. Nei progetti più vasti, nel tentativo di risolvere diversi
problemi contemporaneamente, il software decadeva di qualità a
ogni incremento di funzionalità o adattamento a cambiamenti di
tecnologia. Negli anni 90 emerge un nuovo modello di software:
invece di definire tutti i requisiti in anticipo, il nuovo modo di agire
nasceva intorno al concetto di costruire blocchi capaci di
combinarsi con altri già esistenti o non ancora creati.
Il Web è proprio un esempio di questa nuova filosofia: dopo anni
di tentativi di costruire infrastrutture complesse per scambiare
informazioni tra reti distribuite, il Web è nato come l’assemblaggio
14
RMI (Remote Method Invocation) è la modalità in cui uno sviluppatore, usando
il linguaggio di programmazione e la piattaforma di sviluppo Java, può scrivere
codice in cui oggetti Java su diversi computer possono interagire su una rete
distribuita come se fossero però locali all'oggetto che li utilizza. RMI è la
versione Java di quello che è generalmente chiamato col nome RPC (Remote
Procedure Call), di diverso ha la possibilità di passare uno o più oggetti
all'interno di una richiesta.
15
DCOM (Distributed Component Object Model) è la versione di COM per oggetti
distribuiti su un rete.
47
Dallo sviluppo per componenti ai Web Services
4.3.4Le
4.3.4Le fasi di adozione dei Web Services
Nella maggior parte delle ricerche di mercato condotte dagli
analisti (Gartner Group, Forrester, IDC e altri), gli XML Web Services
risultano essere una tecnologia che sarà adottata nelle
organizzazioni coinvolte nelle ricerche. Comunque, l’adozione non
avverrà in una singola ondata. Secondo gli analisti, l’adozione
avverrà mediante tre fasi distinte:
• Fase I (2002-2003 e oltre): in questa fase, le organizzazioni
adotteranno i WS come una modalità più economica e
semplice per eseguire l’integrazione di applicazioni
all’interno dei confini della rete dell’organizzazione stessa. Il
primo uso naturale da parte di un’organizzazione sarà quello
di utilizzare i WS al posto del middleware tradizionale per
integrare informazioni all’interno di portali.
• Fase II (2003-2005): nel momento in cui gli standard
diventano più maturi (specialmente in materia di sicurezza e
controllo delle transazioni), le organizzazioni cominceranno a
integrare processi di business e applicazioni al di fuori dei
propri confini. Gli standard per il workflow saranno anche più
maturi e permetteranno alle organizzazioni di costruire
sistemi sofisticati di collaborazione con i propri partner.
• Fase III (2006 e oltre): in questo periodo, i registri UDDI
dovrebbero contenere un gran numero di WS pubblicamente
disponibili. Questo permetterà agli analisti di cominciare a
costruire applicazioni complesse a partire da WS disponibili e
un tempo di solo appannaggio degli sviluppatori. Soprattutto
grazie agli standard e al software di automazione, sarà
possibile per un agente software mutare dinamicamente il
comportamento del sistema, riconfigurando il workflow in
modo che reagisca al cambiamento di condizioni nel
processo. Lo scenario sarà quello di un mercato globale di WS
in cui organizzazioni diverse usano WS di altre organizzazioni
secondo la logica di mercato B2B.
48
Dallo sviluppo per componenti ai Web Services
5.CASE STUDY
5.1.1Il
5.1.1Il CRM per gli stage
Lo Stage risulta essere la parte pratica del percorso formativo,
un periodo all'interno di un'azienda che permette allo studente di
acquisire esperienza sul campo ed integrare le nozioni apprese
all'Università. La legge definisce lo Stage come uno strumento
49
Dallo sviluppo per componenti ai Web Services
50
Dallo sviluppo per componenti ai Web Services
51
Dallo sviluppo per componenti ai Web Services
5.1.2L’invio
5.1.2L’invio e la visualizzazione delle richieste nel sistema
Una volta nel sistema, l’utente ha la possibilità di inviare
richieste a un destinatario a sua scelta. Per ogni richiesta, oltre al
testo, è possibile indicare anche il tipo e il progetto formativo a cui
si riferisce. In Figura 5-33 viene mostrata la pagina Web in cui
avviene l’inserimento delle richieste. L’accesso a tale pagina
avviene dalla funzione Invio Messaggi nella sezione Funzioni.
52
Dallo sviluppo per componenti ai Web Services
53
Dallo sviluppo per componenti ai Web Services
5.2Componenti a disposizione
Durante la realizzazione del progetto, si è cercato laddove
possibile di preferire l’utilizzo di una componente o di un sistema
preesistente piuttosto che la realizzazione ex-novo di una
componente che svolgesse le funzionalità richieste. Per
componente si intende qui un’applicazione commerciale, ovvero un
COTS. Dopo una breve introduzione ai COTS, verranno approfonditi
i COTS utilizzati, soffermandosi solo sulle caratteristiche utilizzate
durante lo sviluppo del sistema.
5.2.1Commercial
5.2.1Commercial Off-The Shelf (COTS)
Un Commercial Off-The Shelf (COTS) è un prodotto software:
• Sviluppato da un’organizzazione di terze parti, che
controlla il supporto e l’evoluzione di tale prodotto;
• Posseduto, comprato o pagato su licenza;
• Che ha lo scopo di essere integrato in un sistema di
dimensioni più ampie come una parte integrante, ovvero
che sarà poi fornito al cliente come una parte del sistema
e non come un tool;
• Che permette o non permette modifiche al proprio codice
sorgente;
• Che include meccanismi di personalizzazione;
• Posseduto e utilizzato da un numero significativo di
sviluppatori di sistemi.
I sistemi basati su COTS (CBS, COTS-based systems)
includono prodotti COTS a fianco di componenti software sviluppate
ex-novo all’interno dell’organizzazione (ci si riferisce a tali
componenti con il termine “in-house”). La caratteristica più
importante dei prodotti COTS è la loro predisposizione
all’integrazione in sistemi differenti e la loro disponibilità
commerciale. Questi aspetti permettono ai COTS di fornire
funzionalità preconfezionate di alta qualità. Inoltre, l’uso di COTS
come componenti di un nuovo sistema può ridurre lo sforzo nello
sviluppo e incrementare la qualità del sistema stesso. Come
risultato, lo sviluppo CBS può aiutare in modo significativo gli
sviluppatori nel costruire un prodotto migliore in tempi brevi.
Comunque, lo sviluppo CBS può introdurre alcuni specifici
problemi:
• Valutazione: i prodotti COTS vanno valutati per decidere se
devono o non devono essere usati durante la fase di
sviluppo;
54
Dallo sviluppo per componenti ai Web Services
55
Dallo sviluppo per componenti ai Web Services
5.2.2Plumtree
5.2.2Plumtree Corporate Portal 4.5
5.2.2.1Enterprise
5.2.2.1Enterprise Web
L’Enterprise Web è un ambiente aperto che ha lo scopo di
gestire e fornire applicazioni Web. L’Enterprise Web combina servizi
provenienti da fornitori differenti all’interno di uno strato
tecnologico che racchiude piattaforme rivali e sistemi di business,
creando le fondamenta per la costruzione a basso costo di
applicazioni. Queste fondamenta sono costituite dai servizi più
comunemente utilizzati dalle applicazioni Web, inclusi integrazione,
collaborazione, lavoro cooperativo, gestione contenuti e ricerca.
Tutti questi servizi lavorano insieme attraverso i Web Services. Il
portale è il framework per la distribuzione delle applicazioni create
a partire da queste fondamenta. Il risultato è un ambiente che
comprende l’intera organizzazione, aperto a tutte le piattaforme e
disponibile a tutti i tipi di utenti.
Fornendo delle fondamenta comuni per le applicazioni Web
costruite su qualsiasi piattaforma, diminuisce i costi di
infrastruttura e di sviluppo. L’integrazione di risorse provenienti da
sistemi differenti in applicazioni Web, aumenta il ritorno economico
di questi sistemi. La creazione di un’interfaccia comune per gli
utenti di un’organizzazione, favorisce la collaborazione e aumenta
la produttività dell’organizzazione stessa, aumentandone i profitti.
L’Enterprise Web consiste di quattro elementi (Figura 5-35):
• Servizi di base (Foundation Services): i servizi di base
comunemente utilizzati per costruire applicazioni Web;
• Sistemi di integrazione (Integration Products): componenti
che integrano contenuti, altre applicazioni e sicurezza a
partire da sistemi esistenti, quali sistemi di Groupware,
ERP e CRM;
• Portale (Portal Platform): il framework per la
personalizzazione, l’amministrazione e il knowledge
management, capace di racchiudere insieme un vasto
insieme di risorse in formato elettronico attraverso
un’interfaccia di tipo Web-based;
56
Dallo sviluppo per componenti ai Web Services
57
Dallo sviluppo per componenti ai Web Services
5.2.2.2Architettura
5.2.2.2Architettura e caratteristiche di Plumtree Corporate Portal 4.5
Prima di analizzare l’architettura del sistema, si premette che
nel seguito non verranno analizzate tutte le caratteristiche di
questo sistema. Tale scelta è dovuta alla vastità eccessiva delle
funzionalità di un sistema delle dimensioni di un portale e al fatto
che non tutte queste funzionalità sono state poi utilizzate
all’interno del sistema realizzato per questo lavoro di tesi.
Dopo questa doverosa premessa, analizziamo l’architettura di
Plumtree Corporate Portal 4.5 (nel seguito Plumtree).
Plumtree è basato su un modello di architettura distribuita che
separa le funzioni su server logici e fisici separati in modo da
massimizzare sia la scalabilità che la tolleranza ai guasti dell’intero
sistema. L’architettura è progettata per servire un gran numero di
16
In un'organizzazione, per un determinato utilizzo di denaro, il ROI (Return On
Investment) coincide con quanto di questo denaro "ritorna", tipicamente
corrisponde al profitto o al risparmio sui costi. Il calcolo del ROI a volte è usato
insieme ad altri approcci per sviluppare una strategia di business per un
determinato obiettivo. Il ROI totale di un'organizzazione è a volte usato per
capire quanto bene sia gestita tale organizzazione.
58
Dallo sviluppo per componenti ai Web Services
59
60
Dallo sviluppo per componenti ai Web Services
61
Dallo sviluppo per componenti ai Web Services
5.2.2.3Gli
5.2.2.3Gli utenti in
Plumtree
In Plumtree esistono
due tipi di utenti:
utenti anonimi e utenti
registrati. Un utente
Figura 5 - 38 : Il Gateway Space
anonimo è chiunque
acceda alla pagina
principale del portale ma non possiede login e password per
accedere al portale. Un utente registrato invece è un utente
abilitato ad accedervi in quanto dotato di login e password.
Esistono diversi modi per registrare un utente sul portale: un
amministratore può registrare l’utente creando un account sul
portale, oppure si può permettere agli utenti di registrarsi da soli
attraverso il portale stesso, oppure si possono invitare utenti a
registrarsi da soli sul portale o ancora si possono importare utenti
da un dominio NT o un server LDAP.
62
Dallo sviluppo per componenti ai Web Services
63
Dallo sviluppo per componenti ai Web Services
5.2.2.4Sviluppo
5.2.2.4Sviluppo di gadget
Gli sviluppatori di gadget possono scrivere il codice per generarli
usando appositi kit di sviluppo chiamati Gadget Development
Kits (GDK) specifici per un particolare linguaggio o piattaforma. Le
funzioni nel GDK agiscono come API per accedere e gestire
preferenze e informazioni amministrative. I GDK attualmente
disponibili sono per tecnologia ASP, Java, .Net, Perl e Coldfusion, e
sono del tutto equivalenti come funzionalità. Essendo i GDK
disponibili per i più importanti ambienti di sviluppo,
un’organizzazione che sceglie Plumtree può sviluppare i propri
gadget usando il o i linguaggi con cui i propri sviluppatori sono più
esperti, o una qualsiasi combinazione di linguaggi e piattaforme
server (i Gadget Server infatti sono disponibili per piattaforma
Windows 2k/NT, Linux e Sun Solaris) in modo da realizzare
integrazione di sistemi anche eterogenei.
Come detto, i cinque kit di sviluppo sono del tutto equivalenti e
forniscono le medesime funzionalità. Ogni kit di sviluppo una volta
installato sul Gadget Server (o un sistema usato solo per lo
sviluppo) permette di accedere a una serie di componenti che
mettono a disposizione particolari oggetti usati per interagire con il
portale.
L’interfaccia verso il portale è chiamata GSServices e contiene
una serie di oggetti ognuno dotato di una moltitudine di metodi che
rendono possibile controllare la maggior parte dell’interazione col
64
Dallo sviluppo per componenti ai Web Services
65
Dallo sviluppo per componenti ai Web Services
SI APPLICA A :
T IPO S ETTAGGIO
U TENTE G ADGET
66
Dallo sviluppo per componenti ai Web Services
67
Dallo sviluppo per componenti ai Web Services
5.2.3Microsoft
5.2.3Microsoft Excel 2000
Microsoft Excel 2000 è una delle applicazioni comprese nella
suite di prodotti denominata Microsoft Office 2000. Le
funzionalità svolte da Excel sono principalmente quelle svolte da
un tipico foglio di calcolo con in aggiunta alcune funzionalità
specifiche per la produzione di statistiche e analisi di tipo semplice
e reportistica in forma tabellare o grafica. Piuttosto che descrivere
in modo approfondito l’applicazione, è molto più interessante
descrivere le modalità di integrazione offerte.
Ogni applicazione della suite Microsoft Office contiene un
insieme di tool progettati per svolgere un ben determinato insieme
di compiti tra loro correlati. Ogni applicazione può anche essere
integrata con altre della stessa suite o di produttori diversi, in
modo da creare nuove applicazioni dalle funzionalità estese.
La tecnologia chiave che rende le applicazioni Office
“programmabili” e integrabili è la tecnologia Component Object
Model (COM) chiamata Automation (in passato conosciuta con il
nome di OLE Automation). Automation permette a uno sviluppatore
di creare e controllare, nel proprio codice, oggetti esposti da
un’applicazione, da una Dynamic-Link Library (DLL) o da un
controllo ActiveX che supporti l’interfaccia COM.
La possibilità di sviluppare software che integri al suo interno
applicazioni Office dipende quindi pesantemente sull’architettura
software COM.
5.2.3.1Component
5.2.3.1Component Object Model (COM)
Il Microsoft Component Object Model (COM) è un sistema
indipendente dalla piattaforma, distribuito e object-oriented per
creare componenti software binari che possono interagire tra loro.
COM e tutte le tecnologie basate su di esso (come OLE e ActiveX)
non sono un linguaggio object-oriented, bensì uno standard. COM
non specifica come un’applicazione debba essere strutturata: il
linguaggio, la struttura e i dettagli implementativi sono lasciati a
chi programma l’applicazione. Piuttosto, COM specifica un modello
di oggetti e di requisiti che rendono gli oggetti COM (anche dette
componenti COM, o anche semplicemente oggetti) capaci di
interagire con altri oggetti. Questi oggetti possono essere usati in
un processo, in più processi concorrenti, o anche su macchine
remote. Possono essere scritti in linguaggi diversi ed essere anche
strutturalmente differenti.
L’unico requisito del linguaggio per COM è che questo linguaggio
possa creare strutture di puntatori ed effettuare chiamate di
funzione tramite puntatori in modo esplicito o implicito.
Attualmente una componente COM può essere creata in linguaggi
object-oriented come C++, Smalltalk, ma anche in C, Pascal, ADA,
e Visual Basic.
68
Dallo sviluppo per componenti ai Web Services
69
Dallo sviluppo per componenti ai Web Services
Ovviamente gli oggetti figli possono avere altri figli, per esempio
l’oggetto Workbook contiene l’oggetto Worksheets. In particolare
70
Dallo sviluppo per componenti ai Web Services
71
Dallo sviluppo per componenti ai Web Services
5.2.4Statsoft
5.2.4Statsoft Statistica 6 DA-DM-QC
Statistica è un’applicazione completa e integrata per l’analisi dei
dati, la creazione di grafici, l’analisi di basi di dati e lo sviluppo di
applicazioni personalizzate, che fornisce una serie di procedure
avanzate di analisi per applicazioni finanziarie, di data mining,
scientifiche e ingegneristiche.
5.2.4.1Statistical
5.2.4.1Statistical Process Control
La versione utilizzata di Statistica è denominata Statistica 6
DA-DM-QC, dove DA è acronimo di Data Analysis, DM di Data
Mining e QC di Quality Control e contiene una serie di
funzionalità extra rispetto alla versione di base del pacchetto
(chiamata Base). In questa versione, tra tutte le funzionalità
presenti, quelle utilizzate durante la realizzazione del progetto
sono quelle presenti nella parte Quality Control. Tramite le analisi
presenti nel Quality Control è possibile effettuare il controllo
statistico dei processi (SPC, Statistical Process Control),
ovvero un utile strumento statistico per il controllo della stabilità e
della capacità di un processo, oltre che per l’individuazione delle
variazioni nelle prestazioni di un processo dovute a cause
eccezionali.
Lo SPC sfrutta una molteplicità di grafici di controllo
(Control Chart s). Un grafico di controllo, fa riferimento ad una
prefissata caratteristica di un processo, che viene valutata
determinando una misura della tendenza centrale e i limiti (detti
limiti di controllo) entro i quali si disperdono le osservazioni. Se le
osservazioni ricadono entro i limiti individuati e si distribuiscono
uniformemente attorno alla tendenza centrale, allora non ci sono
eventi singolari nel processo. Osservando la Figura 5-43, in blu
vengono rappresentati i valori della caratteristica osservata, le due
Limite Superiore
Tendenza Centrale
Limite Inferiore
72
73
Dallo sviluppo per componenti ai Web Services
5.2.4.2Modalità
5.2.4.2Modalità di integrazione e programmazione
Così come avviene in Microsoft Excel 2000, anche in Statistica,
grazie a COM, tramite il modello di oggetti è possibile accedere
all’architettura completa del sistema. La libreria di oggetti di
Statistica offre la possibilità di accedere a ogni aspetto
dell’ambiente operativo dell’applicazione: analisi, grafici, query sul
database, documenti e ogni aspetto dell’interfaccia grafica
dell’applicazione stessa. Tutto quello che è stato detto riguardo
COM nei paragrafi relativi a Excel, vale anche per Statistica.
Esistono diversi metodi in cui sviluppare applicazioni che si
interfacciano con Statistica:
• Registrare una macro. Quando si esegue un’analisi o si
crea un grafico, il codice Visual Basic corrispondente a
tutte le specifiche grafiche o alle operazioni di output,
sono registrate automaticamente in background. Questo
codice può poi essere personalizzato, parametrizzato ed
eseguito come macro;
• Utilizzare l’ambiente di sviluppo di Statistica Visual
Basic (SVB ). E’ possibile scrivere codice usando
direttamente l’ambiente di sviluppo integrato
nell’applicazione principale. Tale ambiente, mostrato in
Figura 5-45, presenta funzioni avanzate come
completamento del codice, aiuto in tempo reale, editor
visuale di form e debugger. Il codice scritto in questo
modo può poi essere salvato come macro e riutilizzato;
74
Dallo sviluppo per componenti ai Web Services
5.2.5Applix
5.2.5Applix iEnterprise CRM
Con il termine CRM (Customer Relationship Management,
gestione relazioni con la clientela), si intendono le metodologie, il
software e le capacità offerte da Internet che aiutano
75
Dallo sviluppo per componenti ai Web Services
5.2.5.1Modalità
5.2.5.1Modalità di integrazione e programmazione
Applix fornisce come tutti i sistemi analizzati finora la possibilità
di accedere ai suoi oggetti da altre applicazioni. In particolare
viene fornita sia un’interfaccia COM per ambienti Microsoft, sia
un’interfaccia Java per ambienti Java. Ciò che però rende Applix
particolarmente portato per un’integrazione all’interno di
un’applicazione Web o un portale è l’interfaccia denominata
Weblink 2000.
Weblink 2000 è un sistema che permette di eseguire le
applicazioni di Applix all’interno di un browser web. Queste
applicazioni sono le stesse a cui si può accedere tramite il client
standard di Applix, ma sono ospitate sul sito Web
dell’organizzazione. L’interfaccia per utilizzare Weblink 2000 è
chiamata Weblink 2000 API e si appoggia sul server Web Microsoft
IIS, su piattaforma Windows 2k/NT. In Figura 5-46 viene riportata
l’architettura del sistema risultante.
76
Dallo sviluppo per componenti ai Web Services
77
Dallo sviluppo per componenti ai Web Services
5.3.1Microsoft
5.3.1Microsoft .Net
Microsoft .Net è un software che connette informazioni,
persone, sistemi e dispositivi cambiando radicalmente lo scenario
di elaborazione attuale: da un mondo in cui dispositivi e siti Web
sono semplicemente collegati a Internet a un mondo in cui
dispositivi, servizi e computer lavorano in modo cooperativo al fine
78
Dallo sviluppo per componenti ai Web Services
5.3.1.1Microsoft
5.3.1.1Microsoft .Net Framework
.Net Framework è il modello di sviluppo per la costruzione,
distribuzione ed esecuzione di applicazioni Web-based e XML WS.
Esso si occupa dei dettagli di basso livello, permettendo allo
sviluppatore di concentrarsi più sul codice per la business logic
dell’applicazione.
Il .Net Framework è progettato per soddisfare alcuni obiettivi
primari, ovvero fornire:
• un ambiente di sviluppo object-oriented consistente,
all’interno del quale gli oggetti possono essere eseguiti
localmente, oppure eseguiti localmente ma distribuiti su
Internet, o anche eseguiti in remoto;
• un ambiente di esecuzione del codice che minimizzi
conflitti nella distribuzione del software o dovuti a
incompatibilità di versione;
• un ambiente di esecuzione del codice che garantisca
un’esecuzione sicura anche di codice creato da
79
Dallo sviluppo per componenti ai Web Services
5.3.1.1.1C
5.3.1.1.1COMMON LANGUAGE RUNTIME (CLR)
Il Common Language Runtime (CLR) costituisce le
fondamenta del .Net Framework. Si può pensare ad esso come ad
un agente che gestisce il codice durante la sua esecuzione,
fornendo i servizi di base come gestione della memoria e della
concorrenza dei thread, oltre che forzare la tipizzazione forte e
altre forme di accuratezza sul codice e che insieme assicurano
sicurezza e robustezza delle applicazioni sviluppate. Infatti il
concetto di gestione del codice è uno dei principi fondamentali del
CLR. Il codice eseguito all’interno del CLR viene chiamato
managed code (codice gestito che compone applicazioni e
componenti gestite), mentre il codice eseguito all’esterno viene
80
Dallo sviluppo per componenti ai Web Services
17
Se si ha familiarità con Java, si può pensare a questo concetto allo stesso
modo: il codice su .Net viene compilato in un linguaggio intermedio simile al
bytecode Java e poi ricompilato “al volo” nel linguaggio macchina del sistema
che lo esegue come fatto dalla Java Virtual Machine (JVM). Le analogie tra Java e
.Net sono tantissime, in alcuni casi anche imbarazzanti (il linguaggio C# di .Net
è stato a volte definito in modo dispregiativo come una “scopiazzatura” del
linguaggio Java).
81
Dallo sviluppo per componenti ai Web Services
5.3.1.1.2B
5.3.1.1.2BASE CLASS LIBRARY (BCL)
La libreria di classi di .Net Framework (BCL, Base Class
82
Dallo sviluppo per componenti ai Web Services
83
Dallo sviluppo per componenti ai Web Services
5.3.1.1.3I
5.3.1.1.3INTEROPERABILITÀ CON UNMANAGED CODE
Il .Net Framework promuove l’interazione con componenti COM,
servizi COM+, DLL e con la maggior parte dei servizi del sistema
operativo. Per semplificare l’interazione tra componenti del .Net
Framework e l’unmanaged code e per semplificare il processo di
migrazione, il CLR si occupa di gestire tutte le differenze dei diversi
modelli di oggetti su client e server.
.Net Framework è la naturale evoluzione di COM dato che i due
modelli condividono molti dei temi centrali, incluso il riuso di
componenti e l’indipendenza dal linguaggio di programmazione.
Per compatibilità con il passato, l’interoperabilità COM fornisce
accesso a componenti COM esistenti senza che sia necessario
modificare la componente originale. Uno sviluppatore .Net può
incorporare componenti COM all’interno di managed code usando
determinati tool per importare i tipi COM richiesti. Una volta
importati, questi tipi saranno pronti per l’uso.
L’interazione con COM introduce anche una compatibilità al
contrario permettendo ai client COM di accedere al managed code
allo stesso modo in cui accedono ad altri oggetti COM. La
conversione tra i dati COM e .Net avviene in automatico e a run-
time da parte del CLR.
Per superare le differenze tra i due approcci, il CLR fornisce delle
classi wrapper per far in modo che i client managed e unmanaged
pensino di chiamare oggetti nel loro rispettivo ambiente. Quando
un client managed invoca un metodo di un oggetto COM, il CLR
crea un Runtime Callable Wrapper (RCW). Il CLR crea un COM
Callable Wrapper (CCW) nel caso contrario, permettendo così a
un client COM di invocare metodi su un oggetto .Net. Come
mostrato in Figura 5-51, la prospettiva della chiamata del codice
determina quale classe wrapper istanziare a run-time.
84
Dallo sviluppo per componenti ai Web Services
Il CLR espone gli oggetti COM tramite classi proxy RCW. Anche se
un RCW appare come un normale oggetto ai client .Net, la sua
funzione primaria è quella di gestire le chiamate tra un client .Net
e un oggetto COM.
Il CLR istanzia esattamente un RCW per ogni oggetto COM, senza
curarsi del numero di riferimenti che esistono a un oggetto.
L’ambiente di run-time quindi mantiene un singolo RCW per ogni
oggetto. Stessa cosa avviene per i CCW: un solo oggetto CCW
senza badare al numero di client COM che invocano l’oggetto .Net.
Le definizioni dei tipi COM risiedono in una libreria di tipi. Al
contrario un compilatore conforme a .Net Framework per ogni tipo
produce i metadati all’interno di un assembly. Le due risorse di
informazioni sono in realtà completamente differenti.
Le librerie di tipi COM possono essere contenute in particolari
file TLB, ma anche nella sezione risorse di un file DLL o EXE. Una
volta individuata la locazione della libreria di tipi, la generazione
dell’RCW è possibile in tre modi: uso di tool specializzati come ad
esempio quelli inclusi nell’IDE Visual Studio .Net, uso di tool da riga
di comando compresi nel .Net Framework SDK, oppure generazione
manuale dell’RCW. Nel caso di generazione di CCW sono allo stesso
modo disponibili tool specializzati oppure tool compresi nell’SDK. E’
possibile anche che il produttore di una particolare componente
COM o .Net fornisca già i rispettivi RCW e CCW, in tal caso non è
necessario eseguire alcuna operazione di conversione o
generazione.
85
Dallo sviluppo per componenti ai Web Services
5.3.1.2ADO.Net
5.3.1.2ADO.Net
ActiveX Data Objects for .Net Framework (ADO.Net) è un
insieme di classi che rendono disponibile allo sviluppatore .Net una
serie di servizi per l’accesso ai dati. ADO.Net è una parte
integrante del .Net Framework e permette accesso a database
relazionali e XML, sviluppo di front-end per client di database,
oggetti di business nel middle-tier, tool e applicazioni.
Le classi di ADO.Net si trovano nel package Sys tem .Da ta e sono
integrate con le classi XML del package Sys t em .XML , è per questo
86
Dallo sviluppo per componenti ai Web Services
87
Dallo sviluppo per componenti ai Web Services
5.3.1.3ASP.Net
5.3.1.3ASP.Net
Active Server Pages for .Net Framework (ASP.Net) è un
insieme di tecnologie nel .Net Framework per la costruzione di
applicazioni Web e XML WS. Le pagine ASP.Net vengono eseguite
sul server e generano codice HTML, WML e XML poi inviato a un
client, che può essere sia un browser di un normale PC desktop sia
un browser di un dispositivo portatile.
Le pagine ASP.Net usano un modello di programmazione
compilato e guidato da eventi, che incrementa le prestazioni e
permette la separazione dell’application logic dall’interfaccia
utente. Le pagine ASP.Net e gli ASP.Net XML WS, contengono logica
server-side scritta in Visual Basic .Net, C# o uno qualsiasi dei
linguaggi compatibili con .Net. Le applicazioni Web e gli XML WS
ereditano tutti i vantaggi delle caratteristiche del CLR, come
sicurezza, interoperabilità tra linguaggi e sicurezza integrata, così
come le funzionalità del .Net Framework e della BCL. ASP.Net stesso
è un ambiente basato su .Net
ASP.Net è qualcosa di più di una nuova versione del vecchio
Active Server Pages (ASP). Esso infatti fornisce un modello di
sviluppo Web unificato che include i servizi necessari agli
sviluppatori per creare applicazioni Web di classe enterprise.
ASP.Net è in gran parte compatibile con ASP, ma l’approccio da
seguire nella migrazione da ASP ad ASP.Net deve essere
necessariamente graduale.
Nel momento in cui vuole creare un’applicazione ASP.Net, lo
sviluppatore ha la facoltà di scegliere tra due possibilità: Web
Forms e Web Services, o una combinazione delle due. In ogni caso
ognuna delle scelta è supportata dalla stessa infrastruttura.
I Web Forms permettono di costruire pagine Web basate su
form. Quando si costruiscono queste pagine, è possibile usare i
controlli server di ASP.Net per creare elementi comuni delle
interfacce grafiche e programmarli per eseguire compiti comuni.
Questi controlli server permettono di costruire rapidamente form
Web riusando componenti standard o personalizzate, semplificando
così il codice di una pagina. In Figura 5-54, è mostrato un esempio
88
Visual Basic .Net) e il nome della classe (S imp l eWS ). Subito dopo
(linea 4) viene importato il package System.Web .Serv i ces ,
operazione necessaria per poter poi usare le classi al suo interno.
Accanto alla dichiarazione della classe SimpleWS opzionalmente
può essere specificato che tale classe è derivata dalla classe base
WebSe rv i ce. Infine, qualsiasi metodo che sarà accessibile
dall’esterno presenta l’attributo <WebMethod()> davanti alla sua
dichiarazione ([WebMethod] in C#).
Per rendere questo servizio disponibile, non bisogna far altro che
porre il file .asmx all’interno di una directory virtuale sul server
web e accedervi alla tipica URL per il protocollo HTTP (ad esempio
http://myorg.com/ws/SimpleWS.asmx ) usando i comuni metodi
standard di accesso degli XML WS (SOAP o HTTP GET/POST).
89
Dallo sviluppo per componenti ai Web Services
91
Dallo sviluppo per componenti ai Web Services
5.3.1.4Microsoft
5.3.1.4Microsoft ASP.Net Web Matrix
Tra tutti i tool di sviluppo disponibili per .Net sul mercato, uno
dei migliori è senza dubbio Microsoft ASP.Net Web Matrix.
Web Matrix è tool di sviluppo WYSIWYG 1 8 per ASP.Net, semplice
da usare, supportato da una comunità di sviluppatori, ma
soprattutto freeware. Le sue caratteristiche principali sono:
• Un editor di pagine ASP.Net: editor visuale di tipo
WYSIWYG di pagine con costruzione drag-and-drop di
pagine a partire da un insieme di controlli server o client (i
semplici elementi HTML). L’editor dà anche la possibilità di
accedere istantaneamente al codice associato agli eventi
dei controlli e di modificare le proprietà di ogni oggetto;
92
Dallo sviluppo per componenti ai Web Services
93
Dallo sviluppo per componenti ai Web Services
94
Dallo sviluppo per componenti ai Web Services
5.3.1.5Interoperabilità
5.3.1.5Interoperabilità .Net - J2EE
La sfida nella ricerca di una soluzione per la compatibilità
software tra diverse piattaforme hardware e sistemi operativi è uno
dei problemi più grandi e costosi nell’industria del software.
L’iteroperabilità tra .Net e J2EE (Java2 Enterprise Edition) 1 9 è un
argomento essenziale, in quanto la maggior parte delle
organizzazioni sviluppano nuove applicazioni su una o entrambe le
piattaforme. .Net e J2EE rappresentano due approcci differenti per
la soluzione dello stesso problema: sviluppare, distribuire e
mantenere applicazioni di business.
L’interoperabilità tra .Net e J2EE non è così semplice come
creare una connessione HTTP tra applicazioni sviluppate su tali
piattaforme, questo perché le applicazioni sono sviluppate al livello
di astrazione del linguaggio di programmazione poggiando il tutto
su un sistema operativo. Come visibile in Figura 5-61 le differenze
tra le due piattaforme sono molteplici, a partire dai linguaggi di
programmazione utilizzati per lo sviluppo, fino ad arrivare ai tipi di
dati (diversi anche tra gli stessi VB.Net e C#) e ai protocolli di
comunicazione per l’elaborazione distribuita (.Net remoting per
.Net e IIOP 2 0 per J2EE). Le differenze nei linguaggi di
programmazione, nei protocolli nativi per l’elaborazione distribuita,
19
J2EE è una piattaforma Java progettata per l'elaborazione di dimensioni
mainframe, tipica delle grandi organizzazioni. Sun Microsystems (insieme ad altri
partner come IBM) ha progettato J2EE per semplificare lo sviluppo di applicazioni
mediante la creazione standardizzata di componenti riusabili e mediante la
delega alla piattaforma della gestione automatica di diversi aspetti di
programmazione, come gestione di sicurezza, transazioni, connessione ai
database, ecc...
20
IIOP (Internet Inter- ORB Protocol) è un protocollo che rende possibile la
comunicazione tramite Internet di programmi distribuiti, sviluppati in differenti
linguaggi di programmazione. IIOP è una parte dello standard CORBA (Common
Object Request Broker Architecture).
95
Dallo sviluppo per componenti ai Web Services
nei tipi di dati e strutture, insieme con l’isolamento dai servizi del
sistema operativo, tutte insieme influiscono sull’interoperabilità.
Gli XML Web Services invece vengono in aiuto proprio per
risolvere questi problemi di interoperabilità, in particolare tra .Net
e J2EE, tanto che lo sviluppo orientato ai servizi rende l’intero
problema della piattaforma, assolutamente irrilevante (Figura 5-
62).
La sola esposizione dei sistemi come servizi e l’utilizzo degli XML
Web Services, assicurano la trasparente integrazione e
interoperabilità tra i sistemi, indipendentemente dalla piattaforma
su cui sono stati sviluppati. Quello che un tempo aveva realizzato
Java, ovvero l’irrilevanza della piattaforma hardware e del sistema
operativo, è stato portato a un livello di astrazione maggiore dagli
96
Dallo sviluppo per componenti ai Web Services
97
Dallo sviluppo per componenti ai Web Services
5.3.2Microsoft
5.3.2Microsoft SOAP Toolkit 3.0
5.3.2.1XML
5.3.2.1XML Web Services e sistemi legacy
Per un’organizzazione, l’adozione della tecnologia degli XML WS
o del framework Microsoft .Net può rappresentare un’ottima
occasione per aprire il proprio sistema alle nuove tecnologie o a
nuove possibilità di integrazione e di business. Tuttavia il passaggio
da una vecchia tecnologia a una nuova, non è mai così indolore
come spesso dichiarato dai fornitori della tecnologia stessa o da chi
produce tool di sviluppo o applicazioni legati ad essa.
Solitamente esistono due scenari ricorrenti quando si considera
la migrazione di un sistema legacy (o di un sottosistema) verso una
nuova tecnologia:
• l’organizzazione possiede documentazione e codice
sorgente del sistema o sottosistema;
• l’organizzazione possiede il sistema o il sottosistema
esclusivamente in formato binario già compilato, senza
codice sorgente o altro.
Nel primo caso la tecnica adottata è di solito la migrazione di
tutto il codice, o di parte di esso, attraverso tool automatici verso
la nuova tecnologia, nel secondo caso invece l’unica tecnica
adottabile è la costruzione di wrapper. Nel caso di esposizione dei
servizi di un sistema legacy come WS, è possibile migrare il codice
del sistema verso una piattaforma che supporti in modo nativo i WS
(ad esempio il framework .Net) oppure esporre tali servizi tramite
wrapper.
La migrazione del codice è forse la scelta più rischiosa,
soprattutto nel caso di migrazione dell’intero codice del sistema.
Ad esempio la migrazione da Visual Basic a Visual Basic .Net,
nonostante il processo automatizzato, presenta grossi rischi dovuti
soprattutto all’incompatibilità tra VB.Net con il vecchio codiceb VB.
A volte la migrazione è impossibile o perché come detto in
precedenza non si possiede il codice sorgente, oppure perché
nonostante il codice sorgente, questo non presenti alcuna
possibilità di essere portato verso la nuova piattaforma, o presenti
difficoltà eccessive.
La situazione è ancor più aggravata se l’organizzazione ha fatto
un enorme investimento in passato sul sistema e ritiene questo
strategico per il proprio business così come ritiene strategica la
necessità di esporre tale sistema tramite WS. In queste situazioni,
un aiuto viene dato da un semplice tool chiamato Microsoft SOAP
Toolkit.
SOAP Toolkit è essenzialmente uno strumento per esporre i
metodi dell’interfaccia di una componente COM come operazioni di
un XML Web Service. Come si intuisce, uno strumento del genere
98
Dallo sviluppo per componenti ai Web Services
5.3.2.2Panoramica
5.3.2.2Panoramica del tool
Il tool Microsoft SOAP Toolkit nella versione 3.0, consiste
delle seguenti componenti:
• Una componente COM client-side che permette a
un’applicazione di invocare XML WS descritti dal rispettivo
documento WSDL;
• Una componente COM server-side che fa corrispondere le
operazioni invocate di un XML WS alle chiamate dei metodi
di un oggetto COM, come descritto nel documento WSDL e
WSML (di quest’ultimo si parlerà nel seguito);
• Le componenti richieste per costruire, trasmettere, leggere
e processare i messaggi SOAP. A questi processi ci si
riferisce con i termini marshalling e unmarshalling.
In aggiunta, SOAP Toolkit fornisce un tool per la generazione di
documenti WSDL/WSML chiamato WSDL Generator, che
alleggerisce lo sviluppatore del tedioso processo di creazione
manuale di tali documenti.
5.3.2.3Web
5.3.2.3Web Services Meta Language (WSML)
Oltre alla creazione di un documento WSDL che descriva i servizi
e le operazioni sul server, è richiesta la creazione sul server di un
documento nel formato WSML (Web Services Meta Language ),
un formato specifico al tool SOAP Toolkit, di cui non si daranno qui
dettagli tecnici approfonditi in quanto la sua gestione è del tutto
automatizzata e non è richiesto alcun intervento su un documento
in tale formato da parte dello sviluppatore.
Un documento WSML contiene informazioni che fanno
corrispondere le operazioni di un servizio (così come descritte nel
documento WSDL) a specifici metodi in un componente COM. Il
documento WSML determina quali oggetti COM usare in modo da
servire la richiesta per ogni operazione.
99
Dallo sviluppo per componenti ai Web Services
100
Dallo sviluppo per componenti ai Web Services
101
Dallo sviluppo per componenti ai Web Services
23
Document Object Model (DOM) è una specifica di interfaccia di
programmazione sviluppata dal W3C che permette agli sviluppatori di creare e
modificare documenti XML come se fossero dei veri e propri oggetti.
102
Dallo sviluppo per componenti ai Web Services
WSDL e WSML, una collezione di elementi <pa r t> definiti sia per il
messaggio di richiesta sia per quello di risposta. Per ognuno di
questi elementi <pa r t> , l’oggetto SoapServer30 crea un oggetto
SoapMapper e carica in esso i valori contenuti nella richiesta
SOAP. Quindi l’oggetto SoapServer30 richiama il metodo della
componente COM corrispondente all’operazione richiesta. Il metodo
COM elabora i parametri inclusi nella chiamata e ritorna il risultato
all’oggetto SoapServer30, il quale fa corrispondere il valore di
ritorno all’oggetto SoapMapper appropriato. Quindi SoapServer30
usa l’oggetto SoapSerializer30 per costruire il messaggio di
risposta SOAP che contiene il valore di ritorno e lo invia al client.
Esistono quindi due possibilità di sviluppare utilizzando il SOAP
Toolkit:
• Utilizzo della high-level API e gestione automatica di tutti
gli oggetti della low-level API da parte del tool;
• Utilizzo diretto delle componenti della low-level API e
gestione manuale di tutte queste.
Ovviamente vi sono pro e contro nell’uso di una o dell’altra
strategia. Con la prima lo sviluppatore non deve occuparsi di tutti i
dettagli di basso livello come la creazione manuale dei file WSDL e
WSML e la creazione della corrispondenza tra l’operazione invocata
sul servizio e l’invocazione del metodo corrispondente nella
componente COM. Con la seconda invece si rinuncia a tutti gli
automatismi del tool, ma si guadagna la possibilità di
personalizzare alcuni dettagli di basso livello, o di aggiungere
caratteristiche non contemplate dal tool.
5.3.2.5Il
5.3.2.5Il tool WSDL Generator
Come detto in precedenza, la creazione dei file WSDL e WSML
può essere un’operazione tediosa. All’interno di SOAP Toolkit viene
fornito un tool che ha lo scopo proprio di generare
automaticamente questi file.
Data in input una libreria DLL, il tool analizza la libreria di tipi e
fornisce una lista delle interfacce dell’oggetto COM nella DLL dalla
quale lista è possibile selezionare i metodi che si vogliono esporre
come operazioni del WS. Una volta selezionati i metodi e aver
indicato un nome per il servizio (NomeServizio), una URL dove sarà
disponibile il servizio, il tipo di listener (ASP o ISAPI) e i namespace
desiderati, il tool produce una serie di file:
• NomeServizio.wsdl: il file che contiene il documento WSDL
usato dal WS;
• NomeServizio.wsml: il file che contiene il documento WSML
usato dal WS;
• NomeServizioClient.wsml: una versione semplificata del
file WSML di solito distribuita insieme al client. Questa
103
Dallo sviluppo per componenti ai Web Services
104
Dallo sviluppo per componenti ai Web Services
105
Dallo sviluppo per componenti ai Web Services
5.3.3Altova
5.3.3Altova XML-Spy Enterprise Edition 5
Come si intuisce dal nome, XML-Spy è un tool per la generazione
e modifica di file XML. Ciò che però distingue XML-Spy da altri tool
simili, è la gestione nativa degli XML WS. Tramite XML-Spy è infatti
possibile eseguire una serie di operazioni come: creazione,
modifica e visualizzazione di documenti WSDL in maniera visuale,
generazione di messaggi SOAP di richiesta e risposta per XML WS,
106
Dallo sviluppo per componenti ai Web Services
107
Dallo sviluppo per componenti ai Web Services
108
Dallo sviluppo per componenti ai Web Services
5.4.1Gli
5.4.1Gli utenti del sistema e la personalizzazione
Gli utenti che possono avere accesso al sistema STATCRM sono
una parte di quelli che hanno accesso al sistema CRM completo. In
particolare gli utenti del gruppo Docenti e Manager Didattici.
Questa scelta è dovuta alla loro funzione di controllo dell’attività
degli stage: infatti gli utenti di questi due gruppi sono quelli più
interessati ad eseguire statistiche e a tenere sotto controllo
l’andamento degli stage nel tempo.
La mansione di Manager Didattico è solitamente svolta
all’interno di una facoltà da un impiegato amministrativo, avviene
quindi che i dati e i tipi di statistiche a cui può essere interessato
siano differenti da quelle di un Docente, solitamente con un
background culturale maggiore in materia di statistica. Sfruttando
quindi le possibilità fornite dal portale Plumtree di
personalizzazione dei contenuti in base al gruppo di appartenenza
di un utente, a seconda che un utente appartenga al gruppo dei
Docenti o al gruppo dei Manager Didattici, esso è abilitato a
eseguire e visualizzare solo determinate statistiche.
Il sistema STATCRM è in grado di realizzare statistiche di tipo
semplice rappresentate come diagrammi a torta, istogrammi o
diagrammi a punti, e statistiche di tipo complesso come diagrammi
per il controllo statistico dei processi. Un Docente avrà accesso sia
alle statistiche di tipo semplice che quelle di tipo complesso,
mentre un Manager Didattico avrà accesso solo a quelle di tipo
semplice.
Oltre alla possibilità di scelta della statistica da eseguire, il
sistema permette agli utenti di entrambi i gruppi di personalizzare
le statistiche eseguibili, in modo da adattarle maggiormente ai
propri interessi o restringerle a un particolare periodo
d’osservazione o ancora indicare sulla base di quali parametri
scegliere i dati da elaborare.
109
Dallo sviluppo per componenti ai Web Services
5.4.2Studio
5.4.2Studio delle richieste nel sistema CRM
Come detto in precedenza, le richieste
vengono inviate al sistema CRM tramite
un form dell’applicazione che gestisce gli
stage. Dallo studio di tale sezione del
sistema, si è appreso che tutte le
richieste vengono immagazzinate in
un’unica tabella del database di sistema
di Applix. Il nome di questa tabella è
HD_ INC IDENT , è contenuta nello spazio
delle tabelle AXENT e viene riportata in
Figura 5-75. Tralasciando le dovute
considerazioni ingegneristiche sulla
struttura di questa tabella, servendosi
della poca documentazione del sistema
ed effettuando un reverse engineering
del sistema stesso, si è arrivati alla
comprensione della quasi totalità dei
campi. In realtà molti di essi sono usati
dal sistema Applix per archiviare dati
utili al monitoraggio dell’attività
dell’utente del sistema. I campi invece di
interesse per la realizzazione delle
statistiche sono risultati essere:
• OWNER_GRP : il gruppo di
appartenenza dell’utente che
ha effettuato la richiesta;
• TYPE: l’argomento cui si
riferisce la richiesta (il tipo);
• CHANGE_DT : la data dell’ultima
modifica avvenuta sulla
richiesta;
• CUST_SAT I S: quando chi ha
inviato la richiesta riceve una
risposta, egli può indicare un
valore con cui quantificare la
sua soddisfazione riguardo la
risposta stessa;
• STATE: uno degli stati in cui
può trovarsi la richiesta
all’interno del suo ciclo di vita.
110
Dallo sviluppo per componenti ai Web Services
C ODICE D ESCRIZIONE
111
Dallo sviluppo per componenti ai Web Services
112
Dallo sviluppo per componenti ai Web Services
113
Dallo sviluppo per componenti ai Web Services
5.4.3Componenti
5.4.3Componenti realizzate
Considerando la Figura 5-74, la parte del sistema realmente
implementata si trova nella parte evidenziata con la colorazione
grigia. In Figura 5-78 invece viene riportata l’architettura
rappresentata ad un livello di dettaglio maggiore.
114
Dallo sviluppo per componenti ai Web Services
5.4.3.1Databanker
5.4.3.1Databanker Server
La funzione principale della componente Databanker Server è
quella di accedere alla base di dati del sistema CRM al fine di
leggere le informazioni richieste. Realizzato secondo il design
pattern façade (vedere Pagina 40), è in grado di fare astrazione sia
sulla locazione fisica del database, sia sul tipo di database, sia sui
dati contenuti al suo interno. Inoltre è progettato in modo da
essere parametrico.
Si è detto che una richiesta è caratterizzata da una data, da un
gruppo, da un tipo, da uno stato e da un livello di soddisfazione del
cliente. Dovendo il sistema effettuare statistiche sulle richieste, si
è osservato che al variare della statistica, la modalità di
interrogazione della base di dati non cambia come struttura, ma
solo come parametri. In particolare, essendo la base di dati di tipo
relazionale, le query SQL usate per effettuare le interrogazioni
hanno tutte la stessa struttura.
Inoltre, data la natura prototipale del sistema CRM, è stato
deciso di fare in modo che cambiamenti nella struttura della base
di dati avessero un impatto minimo se non nullo sulla componente.
Per ottenere ciò, il Databanker fa uso di metadati.
5.4.3.1.1M
5.4.3.1.1METADATI
I metadati descrivono i dati presenti nel database e il database
stesso. Il formato scelto per la loro archiviazione sul server è quello
XML, in alternativa sarebbe stato possibile archiviarli all’interno del
database stesso, ma questo avrebbe creato un legame troppo forte
con ciò su cui si voleva effettuare astrazione, ovvero il database
stesso.
All’interno del documento XML sono presenti diverse sezioni,
ognuna descrive un elemento differente su cui fare astrazione:
115
Dallo sviluppo per componenti ai Web Services
116
Dallo sviluppo per componenti ai Web Services
117
Dallo sviluppo per componenti ai Web Services
118
Dallo sviluppo per componenti ai Web Services
5.4.3.1.2I
5.4.3.1.2INTERFACCIA DELLA COMPONENTE
119
Dallo sviluppo per componenti ai Web Services
120
Dallo sviluppo per componenti ai Web Services
5.4.3.1.3C
5.4.3.1.3COSTRUZIONE DELLA QUERY SQL
I parametri del metodo Ge tDa ta ( ) e i metadati, insieme,
permettono al Databanker di costruire automaticamente la query
SQL che servirà ad estrarre i dati richiesti dal client.
Una query SQL standard ha la seguente forma:
SELECT campi
FROM tabella
WHERE condizione
GROUP BY campi
ORDER BY campi
121
Dallo sviluppo per componenti ai Web Services
Gruppo: STUDENTI
Periodo: Settembre (01/09/2002 - 30/09/2002)
Tipi: STUDENTE-CARENZA DI SPAZI, STUDENTE-VARIE
Soddisfazioni: Indifferente, Insoddisfatto
Stati: Assegnata, Ricevuta, Chiusa
InformazioniRisultati: Periodi,Tipi,count(Tipi)
RaggruppamentoRisultati: Periodi,Tipi
OrdineRisultati: Tipi,Periodi
Produrrà, secondo le attuali informazioni contenute nei metadati,
la seguente query SQL:
5.4.3.1.4T
5.4.3.1.4TECNICHE DI REALIZZAZIONE E MOTIVAZIONI
La componente Databanker è stata realizzata come un XML Web
Service, in Visual Basic .Net usando la tecnologia ASP.Net del .Net
Framework.
L’accesso al database è stato realizzato usando la tecnologia
ADO.Net in quanto ha reso estremamente semplice la restituzione
dei dati estratti dal database al client richiedente. Infatti in
ADO.Net una volta eseguita una query SQL i risultati sono posti in
un oggetto di tipo Da taSe t. Tale oggetto, se usato come tipo di
ritorno di un metodo di un Web Service ASP.Net, viene
automaticamente convertito in XML e incapsulato in un messaggio
di richiesta SOAP senza alcuno sforzo da parte dello sviluppatore.
In Figura 5-85 viene mostrata la struttura del metodo Ge tDa ta ( ),
con in evidenza l’oggetto di tipo DataSet semplicemente restituito
come parametro di ritorno.
122
Dallo sviluppo per componenti ai Web Services
5.4.3.2Gadget
5.4.3.2Gadget
La funzione principale della componente Gadget è di costruire
tutta l’interfaccia utente del sistema, in modo che possa essere
integrata nel portale. L’interfaccia è costituita da due elementi:
una maschera che rappresenta i risultati delle statistiche e una
123
Dallo sviluppo per componenti ai Web Services
5.4.3.2.1I
5.4.3.2.1INTERFACCIA DELLA COMPONENTE
124
Dallo sviluppo per componenti ai Web Services
125
Dallo sviluppo per componenti ai Web Services
5.4.3.2.2E
5.4.3.2.2ELABORAZIONE DELLE RICHIESTE
Nel momento in cui l’utente accede alla pagina del portale che
contiene il gadget, questo comincia l’elaborazione. Vengono prima
caricate tutte le impostazioni di personalizzazione delle statistiche,
con cui verrà effettuata la chiamata alla componente Statistics
Server in modo da ottenere i risultati nel formato desiderato. Una
volta ottenuti i risultati questi vengono rappresentati o come
immagine o come tabella all’interno del gadget. Se invece l’utente
accede alla sezione di personalizzazione delle statistiche, il sistema
ottiene i metadati dalla componente Statistics Server, ottiene dal
portale i vecchi parametri di personalizzazione relativi all’utente e
infine costruisce la pagina in cui l’utente può effettuare le
modifiche ai parametri.
5.4.3.2.3T
5.4.3.2.3TECNICHE DI REALIZZAZIONE E MOTIVAZIONI
La componente Gadget è stata realizzata come applicazione
Web, in VBScript usando la tecnologia ASP.
Le motivazioni che hanno spinto a sviluppare il sistema in ASP,
rispetto ad ASP.Net (già usato peraltro nel sistema stesso), sono
dovute alla mancanza del Plumtree .Net Gadget Developer Kit al
momento dello sviluppo di alcune parti fondamentali di questa
componente (come la formattazione della tabella e la gestione
delle preferenze dell’utente). La codifica di tale componente in
ASP.Net avrebbe invece comportato una semplificazione notevole
sia della parte di rappresentazione dei risultati (la tabella ad
esempio è disponibile come componente server di ASP.Net e la
decodifica della stringa con l’immagine avviene in automatico in
ASP.Net), sia della parte di invocazione dei Web Services
(utilizzando le classi proxy).
126
Dallo sviluppo per componenti ai Web Services
127
Dallo sviluppo per componenti ai Web Services
128
Dallo sviluppo per componenti ai Web Services
129
Dallo sviluppo per componenti ai Web Services
5.4.3.3Statistics
5.4.3.3Statistics Server
La funzione principale della componente Statistics Server è
quella di fornire un’interfaccia di accesso unica al sistema per la
componente Gadget (quindi la parte del sistema che si occupa della
presentazione). Realizzato secondo il design pattern façade (vedere
Pagina 40), è in grado di presentare alle componenti client i dati
130
Dallo sviluppo per componenti ai Web Services
5.4.3.3.1M
5.4.3.3.1METADATI
I metadati descrivono quali statistiche il sistema è in grado di
eseguire. Il formato scelto per la loro archiviazione sul server è
quello XML, per la semplicità con cui è possibile gestire documenti
di questo tipo e per la loro predisposizione naturale a contenere
informazioni quali i metadati.
All’interno del documento XML (Figura 5-92) sono elencate tutte
le statistiche, ognuna descritta da diversi elementi: un codice
interno al sistema (cod i ce), la componente COTS da utilizzare per
eseguirla (gene ra t o r e), un nome da mostrare all’utente durante la
sua interazione con il sistema (nome), i gruppi di utenti del portale
che sono abilitati a visualizzare la statistica (gruppi) e una serie di
informazioni utilizzate per richiedere al Databanker i dati corretti
sulle richieste (informazioniRisultati, raggruppamentoRisultati,
ordineRisultati), di cui si è parlato in modo approfondito in
precedenza. In aggiunta è presente anche un elenco di nomi
(informazioniRisultatiTitoloTabella) che verranno usati, nel caso di
rappresentazione tabellare dei risultati, come intestazioni delle
colonne della tabella.
131
Dallo sviluppo per componenti ai Web Services
5.4.3.3.2I
5.4.3.3.2INTERFACCIA DELLA COMPONENTE
5.4.3.3.3E
5.4.3.3.3ELABORAZIONE DELLE RICHIESTE
Il modo in cui la componente elabora le richieste è molto
semplice e non cambia tra i due metodi GetStatisticAsGraph() e
GetStatisticAsTable(): quando un client richiede l’esecuzione di una
statistica, Statistics Server legge i metadati sulle statistiche,
individua la componente da utilizzare per eseguire la statistica, di
quest’ultima invoca il metodo relativo al formato richiesto per i
risultati (tabella o grafico), prepara i risultati nel formato unico e li
restituisce al richiedente.
5.4.3.3.4T
5.4.3.3.4TECNICHE DI REALIZZAZIONE E MOTIVAZIONI
La componente Statistics Server è stata realizzata come un XML
Web Service, in Visual Basic .Net usando la tecnologia ASP.Net del
.Net Framework e l’ambiente di sviluppo Web Matrix.
Per ognuno dei Web Service invocati dalla componente, è stata
generata una classe proxy utilizzando il tool di Web Matrix. Questo
ha permesso sia di ridurre e semplificare drasticamente il codice
necessario, sia di riusare strutture dati come quella che contiene i
metadati del Databanker.
Le motivazioni che hanno spinto a realizzare questa componente
come Web Service sono del tutto simili a quelle già citate per il
Databanker.
132
Dallo sviluppo per componenti ai Web Services
5.4.3.4Excel
5.4.3.4Excel Server
La funzione principale della componente Excel Server è eseguire
statistiche di tipo semplice a partire dai dati sulle richieste ottenuti
dal Databanker. Il nome della componente deriva dall’aver usato il
COTS Microsoft Excel 2000 per eseguire le statistiche.
Le statistiche eseguite da questa componente sono tre (Figura 5-
93):
• Andamento richieste per tipo: quando rappresentata come
grafico, mostra un diagramma con due assi: sull’asse X
sono indicati tutti i giorni nel periodo scelto, sull’asse Y è
riportata una scala di valori corrispondenti al numero di
richieste. Per ogni tipo di richiesta viene rappresentato,
con un colore diverso, il numero totale di richieste di
questo tipo per ogni giorno. I punti poi sono legati tra loro
da una linea, in modo da mostrare l’andamento delle
richieste giorno per giorno. Quando rappresentata come
tabella, mostra una tabella a tre colonne: nella prima sono
riportati i giorni nel periodo, nella seconda i tipi e nella
terza il numero di richieste. Chi richiede l’elaborazione,
può indicare i tipi, il periodo, gli stati e i valori di
soddisfazione per poter selezionare le richieste.
• Totale richieste per tipo: quando rappresentata come
grafico, mostra un istogramma con due assi: sull’asse X è
indicata una scala di valori corrispondenti al numero di
richieste, sull’asse Y sono riportati i tipi. Per ogni tipo di
richiesta viene rappresentato il numero totale di richieste
di questo tipo, come valore e come barra. Quando
rappresentata come tabella, mostra una tabella a due
colonne: nella prima sono riportati i tipi e nella seconda il
numero di richieste. Chi richiede l’elaborazione, può
indicare i tipi, il periodo, gli stati e i valori di soddisfazione
per poter selezionare le richieste.
133
Dallo sviluppo per componenti ai Web Services
134
Dallo sviluppo per componenti ai Web Services
5.4.3.4.2E
5.4.3.4.2ELABORAZIONE DELLE RICHIESTE
Il modo in cui la componente elabora le richieste non cambia
sostanzialmente tra i due metodi ge tS t a t i s t i cA sCha r t ( e
)
ge tS t a t i s t i cA s Tab l:e quando
() un client richiede l’elaborazione di
una statistica, Excel Server richiede al Databanker prima i metadati
e poi i dati corrispondenti ai parametri inviati dal client. Una volta
ottenuti i dati, a seconda della statistica richiesta viene richiamata
la funzione che la effettua (attualmente quindi ci sono tre funzioni).
All’interno di ognuna di queste funzioni, viene creato un foglio di
calcolo in Excel e al suo interno vengono inseriti i dati secondo il
formato appropriato. Se la statistica è richiesta in formato grafico,
viene prima creato il grafico con Excel e poi restituito al
richiedente. Se invece la statistica è richiesta in formato tabellare,
viene restituito il contenuto delle celle del foglio di calcolo.
L’elaborazione dei dati richiesti al Databanker richiede
particolari considerazioni: si è detto che il Databanker estrae i dati
dal database usando query SQL. Come è noto, una query SQL di
selezione con un operatore aggregato quale il conteggio di record
(coun t) è in grado di estrarre solo dati realmente esistenti. Ad
esempio, se si richiede di contare tutte le richieste di tipo A, ma nel
database non esiste nessun record con richieste di tipo A, nel
risultato della query non sarà indicato il valore 0 (zero) come ci si
aspetta, semplicemente non apparirà alcun valore. Per ovviare a
questo problema durante l’elaborazione dei dati, viene effettuato
un controllo aggiuntivo sui dati restituiti.
5.4.3.4.3T
5.4.3.4.3TECNICHE DI REALIZZAZIONE E MOTIVAZIONI
La componente Excel Server è stata realizzata come un XML Web
Service, a partire da una componente COM realizzata in Visual
Basic e poi esposta come Web Service attraverso il tool SOAP
Toolkit.
La componente COM è stata realizzata come DLL usando
l’ambiente di sviluppo integrato Microsoft Visual Studio 6. Una volta
compilata, la DLL è stata prima registrata sul sistema server che
ospita il Web Service e poi esposta come Web Service utilizzando il
tool SOAP Toolkit.
La componente è una normalissima classe Visual Basic, per la
quale però vanno fatte alcune considerazioni tecniche: prima di
tutto Visual Basic 6 non fornisce alcun supporto nativo per i Web
Service, quindi tutte le interazioni con essi vanno gestite allo
stesso modo in cui vanno gestite in ASP e di cui si è parlato in
precedenza (vedere Pagina 140). Oltre al mancato supporto dei WS,
non c’è alcun supporto nativo per i documenti XML se non
utilizzando la componente COM XMLDOM .
135
Dallo sviluppo per componenti ai Web Services
136
Dallo sviluppo per componenti ai Web Services
5.4.3.5Statistica
5.4.3.5Statistica Server
La funzione principale della componente Statistica Server è
eseguire statistiche di tipo complesso a partire dai dati sulle
richieste ottenuti dal Databanker. Il nome della componente deriva
dall’aver usato il COTS Statsoft Statistica 6 per eseguire le
statistiche.
Le statistiche eseguite da questa componente sono
essenzialmente una, ovvero il Grafico X and Moving R sulle
richieste. Quando rappresentata come grafico, mostra un
diagramma XmR come quello descritto a Pagina 80 e visibile in
Figura 5-44. La variabile utilizzata per la statistica è quella
contenente per ogni data nel periodo, il numero totale di richieste.
Chi richiede l’elaborazione, può indicare i tipi, il periodo, gli stati e
i valori di soddisfazione per poter selezionare le richieste.
5.4.3.5.1I
5.4.3.5.1INTERFACCIA DELLA COMPONENTE
L’interfaccia di Statistica Server è costituita solo da due metodi:
ge tS t a t i s t i cA sCha r te( ge
) tS t a t i s t i cA s Tab l.e ( )
getStat i s t i cAsChar t ( ) restituisce il risultato dell’elaborazione
della statistica in formato grafico: il grafico corrisponde a una
immagine che viene restituita all’interno di una stringa codificata
secondo l’algoritmo Base64 (confrontare quanto già detto a Pagina
143).
getStat i s t i cAsTab le ( ) invece restituisce il risultato
dell’elaborazione della statistica in formato tabellare: la tabella è
restituita con una matrice linearizzata in un vettore con il
contenuto delle celle.
137
Dallo sviluppo per componenti ai Web Services
5.4.3.5.2E
5.4.3.5.2ELABORAZIONE DELLE RICHIESTE
L’elaborazione delle richieste è del tutto simile a quella della
componente Excel Server, tanto che sia il codice, che le modalità di
utilizzo del COTS sono identiche. Si può far riferimento quindi a
quanto già detto a Pagina 151, sostituendo Excel con Statistica.
Stesse considerazioni vanno fatte riguardo i dati richiesti al
Databanker.
5.4.3.5.3T
5.4.3.5.3TECNICHE DI REALIZZAZIONE E MOTIVAZIONI
La componente Statistica Server è stata realizzata come un XML
Web Service, in Visual Basic .Net usando la tecnologia ASP.Net del
.Net Framework e l’ambiente di sviluppo Web Matrix.
La struttura del sistema e il codice sono del tutto simili a quelli
di Excel Server, tanto che si è riusato molto del codice scritto per
quest’ultimo.
Per l’interazione con il COTS Statsoft Statistica 6 è stato
utilizzato l’RCW fornito da Statsoft all’interno di un pacchetto di
esempi di integrazione. L’utilizzo quindi all’interno del codice è del
tutto identico a quello di una normalissima classe appartenente ad
esempio alla BCL di .Net Framework. A causa però della mancanza
di un RCW per l’espansione Quality Control (QC) del pacchetto, nel
momento in cui si voleva restituire i risultati della statistica in
formato grafico, è stato necessario ricorrere a uno stratagemma:
invece di utilizzare gli oggetti e le funzionalità di QC direttamente
nel codice ASP.Net, si è costruita una macro SVB utilizzando l’editor
interno di Statistica, che viene poi lanciata nel momento richiesto
dal codice ASP.Net. Lo scambio di dati tra la macro e la componente
Statistica Server, avviene mediante file temporanei (nello stesso
modo in cui avviene in Excel Server). Infine anche per Statistica
Server valgono le considerazioni sulla strutturazione del sistema
dettate dalla natura Document oriented dei WS.
Per l’invocazione del Web Service Databanker Server, è stata
generata una classe proxy utilizzando il tool di Web Matrix. Questo
ha permesso sia di ridurre e semplificare drasticamente il codice
necessario, sia di riusare strutture dati come quella che contiene i
metadati del Databanker.
Per quanto riguarda i dati restituiti, in ASP.Net non vi sono
problemi come quelli incontrati durante lo sviluppo di Excel Server:
la conversione in documenti XML è automatica, per qualunque tipo
di dato di .Net Framework. Inoltre in VB.Net i metodi pubblici delle
classi possono restituire oggetti di qualsiasi tipo, anche definito
dall’utente. La codifica delle immagini in Base64 avviene usando
funzionalità delle BCL, senza utilizzare alcun componente esterno.
Si è scelto inoltre di restituire la tabella come vettore, per rendere
uniforme il codice di gestione dei risultati sulla componente
Statistics Server, con quello che gestisce i risultati del WS Excel
Server.
138
Dallo sviluppo per componenti ai Web Services
5.4.3.6Gadget
5.4.3.6Gadget Messaggi CRM
Questa componente non comprare nell’architettura del sistema
in quanto è stata sviluppata solo ai fini della sperimentazione, per
simulare una situazione tipica in cui un utente accede alla sezione
Messaggi del sistema CRM attraverso il portale (facendo
riferimento alla Figura 5-74, questa componente dovrebbe
appartenere in futuro alla parte destra dell’architettura). Non sono
stati quindi curati molto i dettagli implementativi e l’interazione
con il portale non è perfetta.
La componente è composta da un gadget visualizzato all’interno
delle pagine del portale (Figura 5-94), dal quale è possibile
139
Dallo sviluppo per componenti ai Web Services
140
Dallo sviluppo per componenti ai Web Services
5.4.4Allocazione
5.4.4Allocazione del sistema e sicurezza
Il sistema realizzato utilizzando i Web Services ha permesso una
semplice distribuzione delle componenti su diversi sistemi, in modo
da distribuire il carico di lavoro e riprodurre quanto più possibile la
situazione reale di utilizzo di un sistema del genere quando messo
in funzione realmente.
All’interno del laboratorio di ricerca SER_Lab sono state
utilizzate per ospitare il sistema tre macchine:
• Serlab10: sistema Windows 2000 Server con Microsoft IIS
5, Plumtree Gadget Server e Plumtree ASP GDK. Ospita la
componente Gadget e il Gadget Messaggi CRM usato per la
sperimentazione;
• Serlab23: sistema Windows 2000 Server con Microsoft IIS
5, Web Matrix Web Server, Microsoft Excel 2000, Statsoft
Statistica 6, Microsoft .Net Framework. Ospita le
componenti Statistics Server, Excel Server e Statistica
Server. Questa macchina ospita anche il sistema CRM
usato per la sperimentazione;
141
Dallo sviluppo per componenti ai Web Services
24
HTTPS (Hypertext Transfer Protocol over Secure Socket Layer, o HTTP over SSL)
è un protocollo Web sviluppato da Netscape che cripta e decripta le richieste di
pagine così come le pagine restituite dal server Web. HTTPS è uno strato
sottostante il normale stratto HTTP, ma nell'interazione con il livello TCP/IP
sottostante utilizza la porta 443 al posto della normale porta 80. SSL inoltre
utilizza chiavi di 40-bit di dimensione per l'algoritmo di crittazione del flusso
RC4, la dimensione di 40-bit per le chiavi fornisce un livello di crittazione
considerato adeguato per scambi di tipo commerciale.
142
Dallo sviluppo per componenti ai Web Services
5.5.1Oracle
5.5.1Oracle 9i
9i Portal
La soluzione di Oracle per il mercato dei portali segue
l’approccio di tutti i prodotti appartenenti alla famiglia di prodotti
Oracle: integrazione completa con il DBMS Oracle 9i DB, supporto
completo della piattaforma Java2 (soprattutto Enterprise Edition),
attenzione particolare per scalabilità, sicurezza e tolleranza ai
guasti. Tuttavia la valutazione di Oracle Portal ha evidenziato
grosse carenze soprattutto nell’area delle tecnologie supportate.
Oracle, come è noto, è da sempre sostenitrice della tecnologia Java
e in competizione con altri fornitori, soprattutto Microsoft. Come
risultato, il difetto maggiore di Oracle Portal è risultato essere il
supporto esclusivo di Java per lo sviluppo di portlet 2 5 e supporto
pressoché assente di qualsiasi tecnologia Microsoft. Anche se i Web
services permettono di fare astrazione sulla piattaforma, è pur
sempre vero che all’interno di un’organizzazione spesso sia
necessario utilizzare tecnologie diverse da Java, soprattutto per
integrare sistemi legacy pesantemente legati a tecnologie
Microsoft.
I vantaggi di Oracle Portal rispetto agli altri portali valutati,
vanno cercati soprattutto nell’area della formattazione e
disposizione dei contenuti nelle pagine del portale. Inoltre grazie al
legame con il DBMS Oracle 9i, sono presenti numerosi strumenti
per esporre le informazioni presenti all’interno del database
all’interno delle portlet. Tuttavia questo legame profondo con il
database Oracle 9i DB potrebbe anche essere un punto a sfavore,
in quanto all’interno di un’organizzazione che non utilizza Oracle 9i
DB, Oracle Portal non è facilmente implementabile.
5.5.2mySAP
5.5.2mySAP Enterprise Portal 5.0
La soluzione di SAP per il mercato dei portali è un sistema che,
contrariamente all’opinione comune, è completamente
indipendente dagli altri prodotti di SAP (R/3 2 6 e la soluzione
25
Portlet è il termine con cui si indica solitamente un’applicazione Java
sviluppata per essere utilizzata all’interno di un portale. Il termine ha origine
simile ai termini applet e servlet.
26
R/3 è l'insieme di applicazioni di business integrate fornito da SAP. R/3 usa il
modello client/server e fornisce la possibilità di immagazzinare, accedere,
analizzare e processare in modi differenti i dati dell'organizzazione per analisi
finanziarie, ciclo produttivo, gestione delle risorse umane e in generale la
maggiorparte dei processi di business. Un sistema di questo tipo viene indicato
con il nome di Enterprise Resource Planning (ERP), di cui SAP è leader mondiale
143
Dallo sviluppo per componenti ai Web Services
5.5.3Plumtree
5.5.3Plumtree Excel Gadget
Service
Plumtree Excel GS permette
agli utenti del portale di creare
gadget che mostrano le
informazioni presenti all’interno
di fogli di calcolo, tabelle e
grafici archiviati in file di
Microsoft Excel. Questo COTS è
stato valutato al fine di
verificarne l’adeguatezza per
l’integrazione all’interno del
sistema, al fine di evitare
l’implementazione della
componente, poi effettivamente
144
Dallo sviluppo per componenti ai Web Services
29
NTFS (NT file system, o anche New Technology File System) è il file system che
i sistemi operativo basati su Windows NT (NT, 2000, 2003, XP) usano per
archiviare e accedere ai file su hard disk. NTFS è l'equivalente della File
Allocation Table (FAT) di Windows 95/98 e di High Performance File System
(HPFS) di OS/2. Comunque, NTFS offre un gran numero di miglioramenti rispetto
a FAT ed HPFS in termini di prestazioni, estendibilità, sicurezza e multi utenza.
145
Dallo sviluppo per componenti ai Web Services
6.SPERIMENTAZIONE
6.1Approccio adottato
Per testare effettivamente il sistema “sul campo”, sono stati
pensati due possibili scenari. In entrambi si presuppone l’intero
sistema in funzione da diverso tempo, la variante sta invece nel
come si considera il sistema CRM:
• staticamente: i dati all’interno del database del sistema
CRM rimangono immutati durante l’intervallo di tempo nel
quale si testa il sistema STATCRM;
• dinamicamente: i dati all’interno del database del sistema
CRM cambiano durante l’intervallo di tempo nel quale si
testa il sistema STATCRM, in base a possibili interazioni
degli utenti del sistema CRM durante il suo normale uso
attraverso il portale o l’interfaccia Web indipendente.
6.2.1Il
6.2.1Il tool per la simulazione
Per la creazione dei dati per la simulazione, è stato creato un
tool apposito utilizzando l’applicazione Microsoft Excel 2000.
Il tool consiste di un foglio di calcolo e di una macro con relativa
interfaccia grafica. Tramite i dati inseriti all’interno del foglio di
calcolo (che chiameremo dati aggregati) e i parametri inseriti nei
campi dell’interfaccia grafica della macro, il tool genera una serie
di nuovi dati usati per generare le richieste simulate.
146
Dallo sviluppo per componenti ai Web Services
C OMBINAZIONI P ERIODI
G1 G2 Gm
C1 R 1 ,1 R 1 ,2 … R 1 ,m
C2 R 2 ,1 R 2 ,2 … R 2 ,m
… … … … …
Cn R n ,1 R n ,2 … R n ,m
Nella parte sinistra ogni colonna indica uno dei campi della
tabella HD_ INC IDENT (contenente le richieste) che contiene
informazioni utilizzate per eseguire le statistiche, ad esclusione
della data. Sono presenti quindi quattro colonne indicanti il tipo di
richiesta (TYPE), il gruppo di utenti che ha effettuato la richiesta
(OWNER_GRP), il livello di soddisfazione (CUST_SATIS) e lo stato
della richiesta (STATE). Le righe di questa tabella contengono tutte
le possibili combinazioni C i lecite dei valori per questi campi.
Nella parte destra invece ogni colonna corrisponde a un giorno
generico. Fissata la riga i della tabella, al variare della colonna j, la
cella R i,j indica il numero di richieste C i nel giorno G j . Gruppi di
giorni concorreranno a formare periodi di analisi.
147
Dallo sviluppo per componenti ai Web Services
148
Dallo sviluppo per componenti ai Web Services
149
Dallo sviluppo per componenti ai Web Services
6.3Risultati ottenuti
Una volta messo in funzione, il sistema ha eseguito le statistiche
in modo corretto, in entrambi gli scenari citati all’inizio di questo
capitolo. Nel primo scenario, i risultati rappresentati nei grafici e
nelle tabelle all’interno del Gadget corrispondo effettivamente a
quelli che si ottengono eseguendo le query sul database del
sistema CRM.
In Figura 6-101 e in Figura 6-102 viene proprio mostrata la
corrispondenza tra i dati effettivamente presenti nel database e
quelli elaborati dal sistema STATCRM.
150
Dallo sviluppo per componenti ai Web Services
151
152
153
Dallo sviluppo per componenti ai Web Services
154
FiguraFigura
6 - 106 :6 -La
103
tabella
: L'inserimento
prima della
della
chiusura
richiesta
della richiesta
Dallo sviluppo per componenti ai Web Services
155
Figura
Figura 6
6--107
108:: La
La chiusura
tabella dopo
dellalarichiesta
chiusura della richiesta
Dallo sviluppo per componenti ai Web Services
156
Dallo sviluppo per componenti ai Web Services
7.CONCLUSIONI
157
Dallo sviluppo per componenti ai Web Services
158
Dallo sviluppo per componenti ai Web Services
8.BIBLIOGRAFIA
8.2Riferimenti “Introduzione”
A. Brown, S. Johnston, K. Kelly. "Using Service-Oriented Architecture
and Component-Based Development to build Web Service
Applications". Rational Software White Papers, October 2002.
http://www.rational.com/media/whitepapers/TP032.pdf
159
Dallo sviluppo per componenti ai Web Services
160
Dallo sviluppo per componenti ai Web Services
161
Dallo sviluppo per componenti ai Web Services
Autori Vari. "The Gadget Book (Plumtree 4.5 WS) - Plumtree Gadget
Web Services Design and Development". Plumtree Software Press,
8/31/2002.
http://gadgets.plumtree.com/downloads/TheGadgetBook.zip
162
Dallo sviluppo per componenti ai Web Services
163
Dallo sviluppo per componenti ai Web Services
8.6Riferimenti “Conclusioni”
164