View
107
Download
2
Category
Preview:
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
Citation preview
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 €</td>
<td>44,00 €</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
Recommended