analisi e trasferimento di un’applicazione web di servizio su piattaforma mhp

Post on 28-Jan-2015

106 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Analisi e trasferimento di un’applicazione web di servizio su piattaforma mhp - Mirko Manetti - AA 2009-2010 Relatori: Prof. Vito Cappellini, Dr. Roberto Caldelli, Ing. Rudy Becarelli, Ing. Francesco Filippini, Ing. Riccardo Giorgetti

TRANSCRIPT

UNIVERSITÀ DEGLI STUDI DI FIRENZE Facoltà di Ingegneria

Tesi di laurea

Relatori:Prof. Vito CappelliniDr. Roberto CaldelliIng. Francesco FilippiniIng. Rudy BecarelliIng. Riccardo Giorgetti

Corso di Laurea in Ingegneria Informatica

Candidato:Mirko Manetti

Anno Accademico 2009/2010

Analisi e trasferimento di un’applicazione web di servizio

su piattaforma MHP

Sommario

• Obiettivo• Scenario di riferimento: la TV digitale terrestre• Il porting di applicazioni web su piattaforma MHP• Sviluppo dell’applicazione MHP Trenitalia• Dimostrazione dell’applicazione realizzata• Conclusioni e sviluppi futuri

Obiettivo

Sviluppo di un’applicazione MHP che consenta il porting di servizi e contenuti finora disponibili solo su Web, sulla televisione digitale terrestre

TV & Set Top Box

Broadcaster

Segnale digitale terrestre

Canale di ritorno

Lo standard DVBLo standard DVB fa riferimento alle specifiche rilasciate dall’ETSI al fine di regolare la trasmissione televisiva digitale.

MPEG-2

Lo standard MHPMHP è uno standard aperto per la televisione digitale interattiva nato come estensione degli standard esistenti DVB e MPEG.

Applicazioni MHP: le XletMHP si basa su un set di API Java che forniscono classi e interfacce per lo sviluppo di servizi interattivi per la televisione digitale

XletXletApplication

Manager

Dal Web al DTTIl porting di applicazioni web in applicazioni MHP consiste nel trasporto di servizi, contenuti e funzionalità presenti su Web Server sulla Tv digitale interattiva

L’attività di parsing risulta particolarmente impegnativa laddove i contenuti resi disponibili dal content provider non hanno un formato compatibile con la piattaforma MHP

Strategie di progettazioneRealizzazione di un proxy-server con la funzione di gateway applicativo tra Trenitalia e la piattaforma DVB-MHP

MHP Client

PROXYSERVER

Java Servlet

Web Server

Trenitali a

Richieste HTTP

Richieste HTTP

HTML+

JavaScript

XML

Strategie di progettazioneRealizzazione di un micro-browser di contenuti XHTML

MHP Web Server

Trenitali a

Logica Client

3

Canale di ritorno

Richieste HTTP

HTML + Javascript

L’ambiente di sviluppo

Iter di sviluppoFase 1

• Studio dell’architettura della piattaforma Web• Scelta dei metodi di estrapolazione contenuti

• Studio delle possibili tecniche di porting (JavaBean)(Parser XML)

Funzionamento dell’applicazione

System

Utente

Sistema di pagamento

Acquista biglietto

Servizio di acquisto biglietti ferroviari su Digitale Terrestre

Consulta treniScegli tariffa viaggio

Scegli opzioni viaggio

Scegli preferenze viaggio

Scegli modalità consegna biglietto

Verifica disponiblità

Scegli modalità pagamentoConferma pagamento

Compila intestazione biglietto

Inserisci dati autenticazione

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

Inserisci dati consegna domicilio

<<include>>

<<include>>

<<include>>

<<include>>

<<extend>>

<<include>>

Inserisci dati pagamento

<<include>>Conferma acquisto

<<include>>

<<include>>

Iter di sviluppoFase 2

• Progettazione architettura lato client MHP

Natura modulare Separazione tra i componenti Facile riusabilità e manutenibilità

Welcome

-init()+getGraphicComponent()+setGraphicComponent()+componentFocusGained()+componentFocusLost()+componentAtionPerformed()+attivaRitorno()

TravelChoice

-init()+displayData()+getGraphicComponent()+setGraphicComponent()+componentFocusGained()+componentFocusLost()

RateChoice

-init()+setDefaultPageContent()+dataUpdate()+getGraphicComponent()+setGraphicComponent()+componentFocusGained()+componentFocusLost()

Delivery

-init()+getGraphicComponent()+setGraphicComponent()+componentFocusLost()+componentFocusGained()+setPageContent()+checkDeliveryForm()+setVisibleForm()

Payment

-init()+getGraphicComponent()+setGraphicComponent()+componentFocusGained()+componentFocusLost()+saveForm()

ManagerDispatcher<<Singleton>>

+init()+getScene()+getContext()+getWelcome()+getTravelChoice()+getTravelDetailsPopUp()+getRateChoice()+getRateInfoPopUp()+getOptionPopUp()+getPreferencesPopUp()+getDelivery()+getPaySummary()+getPostoclick()+getPayment()+getPayConfirm()+getMessagesPopUp()

SystemEventsManager<<Singleton>>

-repository

+registerKeys()+unregisterKeys()+userEventReceived()+handleExit()+handleRed()+handleYellow()+handleBlue()+handleGreen()+handleOk()+handleDown()+handleUp()+handleLeft()+handleRight()+handleBack()

ActionPage1

+actionPerformed()

ActionPage2

+actionPerformed()

ActionPage6

+actionPerformed()

ActionPage7

+actionPerformed()

MyConnectionManager

#createHTTPConnection()#createHTTPSConnection()

Page1Adapter

+parse()-dataPreProcessing()-getData()

Page2Adapter

+parse()-dataPreProcessing()-noRegionalParsing()-regionalParsing()-recuperaDatiTariffe()-recuperaPreferenze()-popolaDettaglioTariffe()

Page6Adapter

+parse()-dataPreProcessing()-payDataProcess()

Page7Adapter

+parse()-dataProcessing()

JTidyCleaner

+createWellFormedDOM()+editDOM()

HTMLAdapter

+streamToStringConverter()+removeSpecialChar()+removeComments()

Dettaglio<<Singleton>>

-rateList: Vector-ratePrice: Vector-rateAvail: Vector-preferences: Vector-rateSelected: String-selectedChoice: int-car: String-isRegional: boolean-totalPrice: String-stazin: String-stazout: String-datag: String-datam: String-dataa: String-timesh: String-okForm: boolean-det: String-urlOption: String+urlTrenoposti: String-urlPref: String-postoclick: boolean-ordnum: String-cartnum: String-codicePNR: String-codiceMaster: String-tipoPagamento: String-importo: String-valuta: String-numOrd: String-idNegozio: String-emaileserc: String-userid: String-email: String-token: String-cardType: String-cardNumber: String-monthExpired: String-yearExpired: String-cvv2: String-firstName: String-lastName: String-PaReq: String-PaRes: String-termUrl: String-MD: String

+setAttribute()+getAttribute()

HTTPSConnection

+connect_noCert()+handshake()+handshakeCompleted()+fireErrorEvent()+fireContentEvent()+addHTTPSConnectionListener()+removeHTTPSConnectionListener()

Funzionamento dell’applicazione

: Utente

: TravelChoice : RateChoice : SystemEventsManager : JTidyCleaner : HTMLAdapter : Page2Adapter : ActionPage2 : Dettaglio

1 : keyPressed()2 : handleEvent()

3 : actionPerformed()4 : createHTTPConnection()

5 : streamToStringConverter()

6 : removeSpecialChar()

7 : removeComments()

8

9 : createWeelFormedDOM()

10 11 : parse()

12 : getData()

13 : updateData()

14

1516

17 : setVisible()

Iter di sviluppoFase 3

• Analisi dei contenuti HTML e scelta delle librerie J-Tidy nanoXML HAVi/AWT

Fase 4• Scrittura del codice• Testing

Elaborazione dei contenuti<tr class="odd">

<td>09:10<br>FI.SMN</td>

<td>10:45<br>ROMA TE</td>

<td>01:35</td>

<td>9505 FRECCIAROSSA</td>

<td><img alt="ES Italia AV" src="http://static.trenitalia.com/it/......."></td>

<td>62,00 &euro;</td>

<td>44,00 &euro;</td>

</tr>

Elaborazione dei contenuti

La fase di pagamento

Client MHPServer del sistema di pagamento Sanpaolo

HTTPS

• HttpsUrlConnection non implementata nella JVM 1.3

• Programmazione a livello trasporto sfruttando i metodi della classe SSLSocket

• Implementazione della classe MyHttpsConnection

Dimostrazione

Conclusioni e sviluppi futuri• Trasferimento di un servizio web su piattaforma MHP• Rappresentazione fedele dei contenuti unita a semplicità d’uso

Sviluppi futuri:• Suggeritore automatico per inserimento dati• Modulo per il recupero dati carta di credito• Modulo universale per il pagamento su DTT

Grazie per l’attenzione

top related