SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
UNIVERSITÀ DEGLI STUDI DI FIRENZE
                       Facoltà di Ingegneria
                Corso di Laurea in Ingegneria Informatica




                            Tesi di laurea

          Analisi e trasferimento
    di un’applicazione web di servizio
           su piattaforma MHP
Candidato:                                              Relatori:
Mirko Manetti                                           Prof. Vito Cappellini
                                                        Dr. Roberto Caldelli
                                                        Ing. Francesco Filippini
                                                        Ing. Rudy Becarelli
                                                        Ing. Riccardo Giorgetti
                     Anno Accademico 2009/2010
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


                                    Segnale digitale
                                       terrestre


                                                       Broadcaster




  TV & Set Top Box
                             Canale di
                              ritorno
Lo standard DVB
Lo standard DVB fa riferimento alle specifiche
rilasciate dall’ETSI al fine di regolare la
trasmissione televisiva digitale.

                                 MPEG-2
Lo standard MHP
MHP è uno standard aperto per la televisione
digitale interattiva nato come estensione degli
standard esistenti DVB e MPEG.
Applicazioni MHP: le Xlet
MHP si basa su un set di API Java che
forniscono classi e interfacce per lo sviluppo
di servizi interattivi per la televisione digitale

              Xlet                        Application
                                           Manager
Dal Web al DTT
Il 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 progettazione
Realizzazione di un proxy-server con la
funzione di gateway applicativo tra Trenitalia e
la piattaforma DVB-MHP


              Richieste              Richieste
                HTTP      PROXY        HTTP
                                                    Web
     MHP                  SERVER                   Server
     Client                 Java                  Trenitali
                           Servlet     HTML          a
                XML
                                         +
                                     JavaScript
Strategie di progettazione
Realizzazione di un micro-browser di contenuti
XHTML



                         Richieste HTTP
           MHP                                 Web
            Logica
                         Canale di ritorno    Server
            Client                           Trenitali
                         HTML + Javascript      a
                     3
L’ambiente di sviluppo
Iter di sviluppo
Fase 1
 • Studio dell’architettura della piattaforma Web
 • Scelta dei metodi di estrapolazione contenuti
   (Parser XML)
 • Studio delle possibili tecniche di porting (JavaBean)
Funzionamento dell’applicazione

                                                                                                                                                                                                  System
                                                                             Servizio di acquisto biglietti ferroviari su Digitale Terrestre



                                                                             Scegli tariffa viaggio                            <<include>>
                                     Consulta treni                                                                                                            Verifica disponiblità

                                                                    <<include>>
                                                                                                                                        <<include>>
                                                      <<include>>                                     Scegli opzioni viaggio
                                                                                  <<include>>
          Utente                                                                                                                                <<include>>


                                                                                   <<include>>
                                                        Acquista biglietto
                                                                                                         Scegli preferenze viaggio
                                                                                                                                                           Compila intestazione biglietto

                                      <<include>>
                                                                                                                                     <<include>>
                                                                                   <<include>>

                             Conferma acquisto                <<include>>
                                                                                            Scegli modalità consegna biglietto                                Inserisci dati consegna domicilio
                                                                                                                                       <<extend>>

                       <<include>>            Inserisci dati pagamento
                                                                             <<include>>                                        <<include>>


                                                                                  Scegli modalità pagamento                                  Inserisci dati autenticazione
                              Conferma pagamento
Sistema di pagamento
Iter di sviluppo
Fase 2
 • Progettazione architettura lato client MHP
      Natura modulare
      Separazione tra i componenti
      Facile riusabilità e manutenibilità
HTTPSConnection                                   MyConnectionManager
                                   Welcome
                                                                                                                                                                                          <<Singleton>>
                                                                                                     +connect_noCert()                                      #createHTTPConnection()        Dettaglio
                           -init()                                                                   +handshake()                                           #createHTTPSConnection()
                           +getGraphicComponent()                                                    +handshakeCompleted()                                                             -rateList: Vector
                           +setGraphicComponent()                                                    +fireErrorEvent()                                                                 -ratePrice: Vector
                           +componentFocusGained()                                                   +fireContentEvent()                                                               -rateAvail: Vector
                           +componentFocusLost()                                                     +addHTTPSConnectionListener()                                                     -preferences: Vector
                           +componentAtionPerformed()                                                +removeHTTPSConnectionListener()                                                  -rateSelected: String
                           +attivaRitorno()                                                                                                                                            -selectedChoice: int
                                                                                                                                                                                       -car: String
                                                                                                                                           Page1Adapter                                -isRegional: boolean
                                TravelChoice                                     ActionPage1                                                                                           -totalPrice: String
                                                                                                                                        +parse()                                       -stazin: String
                                                                               +actionPerformed()                                       -dataPreProcessing()                           -stazout: String
                           -init()
                                                                                                                                        -getData()                                     -datag: String
                           +displayData()
                                                                                                                                                                                       -datam: String
                           +getGraphicComponent()
                                                                                                                                                                                       -dataa: String
   <<Singleton>>           +setGraphicComponent()
                                                                                                                                                                                       -timesh: String
 ManagerDispatcher         +componentFocusGained()
                                                                                                                                                                                       -okForm: boolean
                           +componentFocusLost()                                                                                            Page2Adapter
                                                                                  ActionPage2                                                                                          -det: String
+init()                                                     <<Singleton>>                                                                                                              -urlOption: String
+getScene()                      RateChoice             SystemEventsManager                                                             +parse()                                       +urlTrenoposti: String
                                                                               +actionPerformed()                                       -dataPreProcessing()
+getContext()                                                                                                   JTidyCleaner                                                           -urlPref: String
+getWelcome()                                           -repository                                                                     -noRegionalParsing()                           -postoclick: boolean
+getTravelChoice()         -init()                                                                                                      -regionalParsing()                             -ordnum: String
                           +setDefaultPageContent()     +registerKeys()                                    +createWellFormedDOM()
+getTravelDetailsPopUp()                                                                                                                -recuperaDatiTariffe()                         -cartnum: String
                           +dataUpdate()                +unregisterKeys()                                  +editDOM()
+getRateChoice()                                                                                                                        -recuperaPreferenze()                          -codicePNR: String
                           +getGraphicComponent()       +userEventReceived()
+getRateInfoPopUp()                                                                                                                     -popolaDettaglioTariffe()                      -codiceMaster: String
                           +setGraphicComponent()       +handleExit()
+getOptionPopUp()                                       +handleRed()                                                                                                                   -tipoPagamento: String
+getPreferencesPopUp()     +componentFocusGained()                                                                                                                                     -importo: String
                           +componentFocusLost()        +handleYellow()
+getDelivery()                                          +handleBlue()                                                                                                                  -valuta: String
                                                                                                                 HTMLAdapter
+getPaySummary()                                        +handleGreen()                                                                                                                 -numOrd: String
+getPostoclick()                                        +handleOk()                                                                                                                    -idNegozio: String
+getPayment()                     Delivery                                                                 +streamToStringConverter()                                                  -emaileserc: String
                                                        +handleDown()
+getPayConfirm()                                                                                           +removeSpecialChar()                                                        -userid: String
                                                        +handleUp()
+getMessagesPopUp()        -init()                                                                         +removeComments()                                                           -email: String
                                                        +handleLeft()                                                                      Page6Adapter
                           +getGraphicComponent()       +handleRight()            ActionPage6                                                                                          -token: String
                           +setGraphicComponent()       +handleBack()                                                                                                                  -cardType: String
                           +componentFocusLost()                                +actionPerformed()                                      +parse()                                       -cardNumber: String
                           +componentFocusGained()                                                                                      -dataPreProcessing()                           -monthExpired: String
                           +setPageContent()                                                                                            -payDataProcess()                              -yearExpired: String
                           +checkDeliveryForm()                                                                                                                                        -cvv2: String
                           +setVisibleForm()                                                                                                                                           -firstName: String
                                                                                                                                                                                       -lastName: String
                                                                                                                                                                                       -PaReq: String
                                  Payment                                                                                                                                              -PaRes: String
                                                                                                                                          Page7Adapter
                                                                                                                                                                                       -termUrl: String
                           -init()                                                ActionPage7                                                                                          -MD: String
                           +getGraphicComponent()                                                                                       +parse()
                           +setGraphicComponent()                                                                                       -dataProcessing()                              +setAttribute()
                                                                               +actionPerformed()
                           +componentFocusGained()                                                                                                                                     +getAttribute()
                           +componentFocusLost()
                           +saveForm()
Funzionamento dell’applicazione
                   : TravelChoice      : SystemEventsManager         : RateChoice      : ActionPage2                : HTMLAdapter                             : JTidyCleaner   : Page2Adapter           : Dettaglio



: Utente
      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
                                                                                                                                          15
                                                                         16
                                                     17 : setVisible()
Iter di sviluppo
Fase 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
                      HTTPS




                              Server del sistema di
      Client MHP              pagamento Sanpaolo


• HttpsUrlConnection non implementata nella JVM 1.3
• Implementazione della classe MyHttpsConnection
• Programmazione a livello trasporto sfruttando i
metodi della classe SSLSocket
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

Weitere ähnliche Inhalte

Andere mochten auch

让数据说话 taobao 淘宝 电子商务 数据分析
让数据说话 taobao 淘宝 电子商务 数据分析让数据说话 taobao 淘宝 电子商务 数据分析
让数据说话 taobao 淘宝 电子商务 数据分析
gps88
 
Peter Smith: Allocating health care budgets to general practices
Peter Smith: Allocating health care budgets to general practicesPeter Smith: Allocating health care budgets to general practices
Peter Smith: Allocating health care budgets to general practices
Nuffield Trust
 
정영찬, GuideBook
정영찬, GuideBook정영찬, GuideBook
정영찬, GuideBook
GSCST
 
Health and med tech opportunities
Health and med tech opportunitiesHealth and med tech opportunities
Health and med tech opportunities
eventsbbaa
 

Andere mochten auch (13)

让数据说话 taobao 淘宝 电子商务 数据分析
让数据说话 taobao 淘宝 电子商务 数据分析让数据说话 taobao 淘宝 电子商务 数据分析
让数据说话 taobao 淘宝 电子商务 数据分析
 
Peter Smith: Allocating health care budgets to general practices
Peter Smith: Allocating health care budgets to general practicesPeter Smith: Allocating health care budgets to general practices
Peter Smith: Allocating health care budgets to general practices
 
Studio e sviluppo di un’applicazione MHP per la realizzazione di una guida tv...
Studio e sviluppo di un’applicazione MHP per la realizzazione di una guida tv...Studio e sviluppo di un’applicazione MHP per la realizzazione di una guida tv...
Studio e sviluppo di un’applicazione MHP per la realizzazione di una guida tv...
 
Sociale Media: kansen en valkuilen
Sociale Media: kansen en valkuilenSociale Media: kansen en valkuilen
Sociale Media: kansen en valkuilen
 
Autenticazione di immagini biomediche in sistemi PACS gerarchici tramite marc...
Autenticazione di immagini biomediche in sistemi PACS gerarchici tramite marc...Autenticazione di immagini biomediche in sistemi PACS gerarchici tramite marc...
Autenticazione di immagini biomediche in sistemi PACS gerarchici tramite marc...
 
Лазар Личеноски
Лазар ЛиченоскиЛазар Личеноски
Лазар Личеноски
 
정영찬, GuideBook
정영찬, GuideBook정영찬, GuideBook
정영찬, GuideBook
 
математичний маятник
математичний маятникматематичний маятник
математичний маятник
 
Draig copyright caro
Draig copyright caroDraig copyright caro
Draig copyright caro
 
Health and med tech opportunities
Health and med tech opportunitiesHealth and med tech opportunities
Health and med tech opportunities
 
MPJC ontbijtsessie Media Academie - Crossmediaal opleiden
MPJC ontbijtsessie Media Academie - Crossmediaal opleidenMPJC ontbijtsessie Media Academie - Crossmediaal opleiden
MPJC ontbijtsessie Media Academie - Crossmediaal opleiden
 
Mlsp bpc
Mlsp bpcMlsp bpc
Mlsp bpc
 
323- Bras dessus bras dessous
323- Bras dessus bras dessous323- Bras dessus bras dessous
323- Bras dessus bras dessous
 

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

  • 1. UNIVERSITÀ DEGLI STUDI DI FIRENZE Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di laurea Analisi e trasferimento di un’applicazione web di servizio su piattaforma MHP Candidato: Relatori: Mirko Manetti Prof. Vito Cappellini Dr. Roberto Caldelli Ing. Francesco Filippini Ing. Rudy Becarelli Ing. Riccardo Giorgetti Anno Accademico 2009/2010
  • 2. 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
  • 3. Obiettivo Sviluppo di un’applicazione MHP che consenta il porting di servizi e contenuti finora disponibili solo su Web, sulla televisione digitale terrestre Segnale digitale terrestre Broadcaster TV & Set Top Box Canale di ritorno
  • 4. Lo standard DVB Lo standard DVB fa riferimento alle specifiche rilasciate dall’ETSI al fine di regolare la trasmissione televisiva digitale. MPEG-2
  • 5. Lo standard MHP MHP è uno standard aperto per la televisione digitale interattiva nato come estensione degli standard esistenti DVB e MPEG.
  • 6. Applicazioni MHP: le Xlet MHP si basa su un set di API Java che forniscono classi e interfacce per lo sviluppo di servizi interattivi per la televisione digitale Xlet Application Manager
  • 7. Dal Web al DTT Il 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
  • 8. Strategie di progettazione Realizzazione di un proxy-server con la funzione di gateway applicativo tra Trenitalia e la piattaforma DVB-MHP Richieste Richieste HTTP PROXY HTTP Web MHP SERVER Server Client Java Trenitali Servlet HTML a XML + JavaScript
  • 9. Strategie di progettazione Realizzazione di un micro-browser di contenuti XHTML Richieste HTTP MHP Web Logica Canale di ritorno Server Client Trenitali HTML + Javascript a 3
  • 11. Iter di sviluppo Fase 1 • Studio dell’architettura della piattaforma Web • Scelta dei metodi di estrapolazione contenuti (Parser XML) • Studio delle possibili tecniche di porting (JavaBean)
  • 12. Funzionamento dell’applicazione System Servizio di acquisto biglietti ferroviari su Digitale Terrestre Scegli tariffa viaggio <<include>> Consulta treni Verifica disponiblità <<include>> <<include>> <<include>> Scegli opzioni viaggio <<include>> Utente <<include>> <<include>> Acquista biglietto Scegli preferenze viaggio Compila intestazione biglietto <<include>> <<include>> <<include>> Conferma acquisto <<include>> Scegli modalità consegna biglietto Inserisci dati consegna domicilio <<extend>> <<include>> Inserisci dati pagamento <<include>> <<include>> Scegli modalità pagamento Inserisci dati autenticazione Conferma pagamento Sistema di pagamento
  • 13. Iter di sviluppo Fase 2 • Progettazione architettura lato client MHP  Natura modulare  Separazione tra i componenti  Facile riusabilità e manutenibilità
  • 14. HTTPSConnection MyConnectionManager Welcome <<Singleton>> +connect_noCert() #createHTTPConnection() Dettaglio -init() +handshake() #createHTTPSConnection() +getGraphicComponent() +handshakeCompleted() -rateList: Vector +setGraphicComponent() +fireErrorEvent() -ratePrice: Vector +componentFocusGained() +fireContentEvent() -rateAvail: Vector +componentFocusLost() +addHTTPSConnectionListener() -preferences: Vector +componentAtionPerformed() +removeHTTPSConnectionListener() -rateSelected: String +attivaRitorno() -selectedChoice: int -car: String Page1Adapter -isRegional: boolean TravelChoice ActionPage1 -totalPrice: String +parse() -stazin: String +actionPerformed() -dataPreProcessing() -stazout: String -init() -getData() -datag: String +displayData() -datam: String +getGraphicComponent() -dataa: String <<Singleton>> +setGraphicComponent() -timesh: String ManagerDispatcher +componentFocusGained() -okForm: boolean +componentFocusLost() Page2Adapter ActionPage2 -det: String +init() <<Singleton>> -urlOption: String +getScene() RateChoice SystemEventsManager +parse() +urlTrenoposti: String +actionPerformed() -dataPreProcessing() +getContext() JTidyCleaner -urlPref: String +getWelcome() -repository -noRegionalParsing() -postoclick: boolean +getTravelChoice() -init() -regionalParsing() -ordnum: String +setDefaultPageContent() +registerKeys() +createWellFormedDOM() +getTravelDetailsPopUp() -recuperaDatiTariffe() -cartnum: String +dataUpdate() +unregisterKeys() +editDOM() +getRateChoice() -recuperaPreferenze() -codicePNR: String +getGraphicComponent() +userEventReceived() +getRateInfoPopUp() -popolaDettaglioTariffe() -codiceMaster: String +setGraphicComponent() +handleExit() +getOptionPopUp() +handleRed() -tipoPagamento: String +getPreferencesPopUp() +componentFocusGained() -importo: String +componentFocusLost() +handleYellow() +getDelivery() +handleBlue() -valuta: String HTMLAdapter +getPaySummary() +handleGreen() -numOrd: String +getPostoclick() +handleOk() -idNegozio: String +getPayment() Delivery +streamToStringConverter() -emaileserc: String +handleDown() +getPayConfirm() +removeSpecialChar() -userid: String +handleUp() +getMessagesPopUp() -init() +removeComments() -email: String +handleLeft() Page6Adapter +getGraphicComponent() +handleRight() ActionPage6 -token: String +setGraphicComponent() +handleBack() -cardType: String +componentFocusLost() +actionPerformed() +parse() -cardNumber: String +componentFocusGained() -dataPreProcessing() -monthExpired: String +setPageContent() -payDataProcess() -yearExpired: String +checkDeliveryForm() -cvv2: String +setVisibleForm() -firstName: String -lastName: String -PaReq: String Payment -PaRes: String Page7Adapter -termUrl: String -init() ActionPage7 -MD: String +getGraphicComponent() +parse() +setGraphicComponent() -dataProcessing() +setAttribute() +actionPerformed() +componentFocusGained() +getAttribute() +componentFocusLost() +saveForm()
  • 15. Funzionamento dell’applicazione : TravelChoice : SystemEventsManager : RateChoice : ActionPage2 : HTMLAdapter : JTidyCleaner : Page2Adapter : Dettaglio : Utente 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 15 16 17 : setVisible()
  • 16. Iter di sviluppo Fase 3 • Analisi dei contenuti HTML e scelta delle librerie  J-Tidy  nanoXML  HAVi/AWT Fase 4 • Scrittura del codice • Testing
  • 17. 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>
  • 19. La fase di pagamento HTTPS Server del sistema di Client MHP pagamento Sanpaolo • HttpsUrlConnection non implementata nella JVM 1.3 • Implementazione della classe MyHttpsConnection • Programmazione a livello trasporto sfruttando i metodi della classe SSLSocket
  • 21. 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