POLITECNICO DI MILANO




                          MASHLIGHT:
                          un framework lightweight per mashup.
                          Estensioni ed innovazioni.
                          Relatore: Prof. Luciano BARESI
                          Correlatore: Prof. Sam GUINEA
                          Candidato: Giuseppe De Cicco


 Laurea Magistrale in Ingegneria Informatica
Il concetto di Mashup                     1




‣ Web 2.0
  - Usabilità, Partecipazione, Design...
  - JavaScript, Ajax, Xml, Php, Soap, Rest ...

‣ Mashup
  - Sofware as a Service (SaaS)
    ✓ Semplicità, Standardizzazione, Accessibilità
    ✓ Widget (black box)
  - Riuso e integrazione di componenti
  - Creazione di applicazioni “Goal-oriented”
    ✓ L’utente come “autore” della composizione




          Giuseppe De Cicco                          POLITECNICO DI MILANO
MASHLIGHT                                                       2


Tipo                                                                     Lato server
                                                                         Consumer
utente                                                                      Logic
                                                                          Mashup

          Sviluppatore



           Utente
           esperto
                                    Mashlight
           Utente
           inesperto                                                Lato server
                                                                Lato client            Ambiente di
                         Presentation   Data      Logic                                esecuzione

                                               Complessità

                                                          Funzionalità

• Principali caratteristiche:
  - Tecnologie Web 2.0, Flessibilità, Usabilità
  - Lightweight (ambiente Desktop, iPhone, Android)
     - No Application-Server
  - Approccio “process-like”
  - Standardizzazione dei servizi in blocchi
         Giuseppe De Cicco                                                        POLITECNICO DI MILANO
Modello concettuale                              3



• Il Blocco (o widget):
  - unità funzionale indipendente (Block Manifest XML)
  - Servizio Web standardizzato (gestione dei parametri di input/
  output, scambio di informazioni tra widget)




                                             Cinema




                           coordinates



 • Il SuperBlocco :
   - Contenitore di blocchi(esecuzione parallela di Widget)
   - Trasparenza (definito a livello di processo)
   - Flusso dati (no flusso di processo)
       Giuseppe De Cicco                                  POLITECNICO DI MILANO
Modello concettuale                             4



• Il MASHUP (Process Manifest JS)
 - Flusso di processo: stabilisce l’ordine di attivazione dei blocchi
 - Flusso dati: definisce le dipendenze dati
 - Flussi di esecuzione: possibile ordine di esecuzione dei bocchi




• Funzioni di processo
 - Scambio dati con formato ad-hoc
 - Assegnamenti con cardinalità singola o multipla
 - Operazione di UNDO risalendo il flusso di esecuzione
     Giuseppe De Cicco                                 POLITECNICO DI MILANO
Architettura        5




Giuseppe De Cicco            POLITECNICO DI MILANO
Stato dell’arte                               6




• Cosa permette di fare Mashlight ?
  - Eseguire Mashup predefiniti in ambiente desktop e mobile
  - Mashlight Widget Builder: standardizzare un servizo attraverso
  un plugin Eclipse
  - Mashlight Process Builder: creare un mashup utilizzando un
  applicativo da installare su client.


• Quali sono alcuni dei concetti non presenti nel framework?
  - Non si rivolge a tutto il bacino di utenza per cui è stato pensato
  - La creazione di Mashup non è lightweight
  - Non possono essere eseguiti in ambiente desktop o mobile i
  Mashups creati dall’utente.




      Giuseppe De Cicco                                     POLITECNICO DI MILANO
Il mio lavoro di TESI                        7


• Le innovazioni introdotte:
 • Creazione lightweight di mashup “user-oriented”
   - Composizione direttamente dall’ambiente di esecuzione
     - Scelta dei blocchi con semplici operazioni di drag-and-drop
   -Templates di Mashup
 • Portabilità e riuso dei Mashups
   - Process Manifest XML : load/save/execution
 • Flusso di processo guidato dall’utente
 • Creazione di nuovi widgets con funzionalità avanzate
   - Block Selector
   - Templates builder
   - Multiplexer
   - Calendar
   - Mashup Uploader
   - Maps 2.0
   - Navigator

         Giuseppe De Cicco                              POLITECNICO DI MILANO
Mashups di Mashup                                 8




Creazione lightweight di mashup?
  Ho introdotto il concetto di Mashups di Mashup


La mia definizione:
  ”Composizione semi-automatica di servizi Web a partire da un
  Mashup predefinito”.

Modifiche del framework:
   • Nuovi metadati nel Block Manifest (<description>....<description>)
   • Accesso alla Blocks Library a runtime
   • Templates di Composizione
   • Widgets: Block Selector, Process Builders
   • Composizione predefinita “Create a Mashup”


         Giuseppe De Cicco                                   POLITECNICO DI MILANO
Mashups di Mashup               9


Block Selector: Filtro e Selettore di Blocchi
                              inlink 1
           blockToAdd
        block Selected




            Block Selector


 selectedBlock       infos
                              outlink1   blocksToMash




                 Giuseppe De Cicco                      POLITECNICO DI MILANO
Mashups di Mashup                                                  10


Templates Process Builder (Mashup di alto livello)
                      inlink 1
       blocksToMash




        Process Builder


                      outlink1


      Sequenziale                        Container                    Centralizzato


                                                            Block 2                           Block 3
         Block 1

                                 Block 1          Block 2             Block Principale
         Block 2
                                   ...            Block n
                                                              ...                             Block n
         Block n




          Giuseppe De Cicco
          (a)                               (b)                               POLITECNICO DI MILANO
blockSelected

                            Mashups di Mashup                                                        11
                                                                                 Block Selector

“Create a Mashup”: Il mashup che permette all’utente di creare i
                                                             infos
Mashup personalizzati.
                                   Start                              blocksToMash



                                              SuperBlocco 1           blocksToMash                        SuperBlocco 2


                                       infoPoints
         info
                                                                                                            Centalized
                                                              Tree Process
                                                                                                             Process

      Descriptor                       Maps 2.0

                selected
                                     selectedPoint             Sequential                                   Container
                                                                                     Plan Process
                                                                Process                                      Process

                            blockToAdd
                           blockSelected


                      Block Selector
                                                                                              End
                                               infos

      blocksToMash



      blocksToMash                            SuperBlocco 2

                Giuseppe De Cicco                                                              POLITECNICO DI MILANO
<blockIncludes>
                                                                     <include id="i1" uuid="999999999"/>

            Nuovi concetti: portabilità e riuso                    </blockIncludes>
                                                                   <variables>                                12
                                                                     <variable name="b2_coordinates" refNode="i1" paramName="coordina
                                                                   </variables>
 • Nuova sintassi per Mashup in formato XML                        <flow refStartNode="b2">

 • Estensione del Core Engine: loadXML                               <node id="b2" refInclude="i1" undoable="true" end="true">
                                                                       <assigns>

 • Templates process builder: salvataggio del Mashup                     <assign>
                                                                            <target refVariable="b2_coordinates" xfield="."/>
 • Mashup uploader: riutilizzo del Mashup creato                            <source type="Coordinates">
                                                                              <value>
                                                                                <latitude>45.4791694</latitude>
<process>
                                                                                <longitude>9.2208006</longitude>
  <about>
    <identifier>c0c52910-f91c-11dd-87af-0800200c9a66</identifier>             </value>
    <name>VisualizeCoordinate</name>                                        </source>
    <author>Giuseppe</author>                                            </assign>
    <icon/>                                                            </assigns>
  </about>                                                             <links/>
  <blockIncludes>                                                    </node>
    <include id="i1" uuid="999999999"/>
                                                                   </flow>
  </blockIncludes>
  <variables>
                                                                 </process>
    <variable name="b2_coordinates" refNode="i1" paramName="coordinates"/>
  </variables>
  <flow refStartNode="b2">
    <node id="b2" refInclude="i1" undoable="true" end="true">
      <assigns>
        <assign>
           <target refVariable="b2_coordinates" xfield="."/>     function mashlight_process() {
           <source type="Coordinates">                             engine.doBlockInclusion("999999999");
             <value>                                               engine.doNodeAddition("b2", "999999999", true, true);
               <latitude>45.4791694</latitude>                     engine.doOutConnectionAddition("b2", "out", null);
               <longitude>9.2208006</longitude>
                                                                 }
             </value>
                                                                 function b2() {
           </source>
        </assign>                                                  var tmp= new Coordinates();
      </assigns>                                                   tmp.latitude = "45.4791694";
      <links/>                                                     tmp.longitude= "9.2208006" ;
    </node>                                                        engine.doConstantAssignment("b2_coordinates", ".", tmp);
  </flow>                                                        }
</process>


                Giuseppe De Cicco                                                                     POLITECNICO DI MILANO
Nuovi concetti: flusso gestito dall’utente                                    13



 • Multiplexer
   • Correlazione tra parametri-outlink
   • Parametri di input: array di “outlink - nome nodo”
   • Numero di outlink indefinito
   • Utilizzato in:
     •Mashup centralizzati
     •Mashup Plan
   • Molto importante nel contesto mobile
                                               inlink
                          dataOutlink




                                 Multiplexer

                              outlink 1 outlink 2       ...   outlink n


      Giuseppe De Cicco                                                   POLITECNICO DI MILANO
Widget Calendar                    14




• Uno dei Blocchi Google (Maps 2.0, Navigator)
• Google Calendar (Zend Framework)
• Standardizzazione dei parametri di input e output
• Primo esempio di Widget con funzionalità di:
  • Autenticazione
  • Salvataggio dati nella Cloud di Google
                         inlink
          event                    accessDataIn




                  Calendar

           nextEvent               accessDataOut

                         outlink

          Giuseppe De Cicco                           POLITECNICO DI MILANO
Caso di studio                                15



• NightOut (scenario):
Organizzare una serata con i proprio amici prenotando prima un ristorante
ed in seguito un cinema. L’utente vuole:
 • Scegliere i servizi ed effettuare le opportune prenotazioni.
 • Salvare i dati della prenotazione
 • Ricevere notifiche via mail ed SMS in tempo per partecipare all’evento
 • Avere un supporto che lo aiuti al raggiungimento della meta

• Passi da effettuare con Mashlight:
  1. Selezione dei servizi attraverso il mashup “Create a Mashup”
  2. Utilizzo del template PLAN
  3. Salvataggio ed Esecuzione del processo
  4. Prenotazione utilizzando il servizio del cinema e del ristorante
  5. Utilizzo del dispositivo mobile per caricare il Mashup salvato




         Giuseppe De Cicco                                     POLITECNICO DI MILANO
Caso di studio                                         16



Il template PLAN (Mashup di alto livello creato con effort minimo)
                                                                       outlinks
                                                                        data
                  Start




                    Calendar
                                                                       Outlink
                                                                      Multiplexer

                    Outlink
                   Multiplexer
                                                                      Calendar




                                                                    user
                          End                                     password
   Calendar                         Calendar
    Calendar                         Calendar
event                            event               Calendar        Calendar                Calendar
                                                      Calendar        Calendar                Calendar
                                                  event           event                   event
    Block 1 n
      Block                           Navigator
                                     Block 1
                                                    event           event                    next
                                                                                            event
                                                      Block 1         Block 1                Block 1
                                                        Block 1         Block n               Navigator
   Deactive
    Deactive                        Deactive
                                     Deactive
                                                     Deactive        Deactive                Deactive
                                                      Deactive        Deactive                Deactive




                Giuseppe De Cicco                                                   POLITECNICO DI MILANO
17




              Demo...



Giuseppe De Cicco       POLITECNICO DI MILANO
Mashlight                          18


Conclusione
• Obiettivi raggiunti con successo
  • Applicazioni centrate sugli obiettivi dell’utente
  • Creazione / Esecuzione / Salvataggio / Riuso lightweight di Mashup
  • Mashups complessi creati con semplici passaggi e nascosti all’utente.


Sviluppi Futuri
• Arricchimento della “Blocks Library” con nuovi servizi
• Miglioramento dell’ambiente di esecuzione iPhone/Android
• Concetto di “Stato”



      Giuseppe De Cicco                                  POLITECNICO DI MILANO

More Related Content

PDF
16th issue
PDF
24 march janta ka aaina (3)
PDF
ONDA CARIOCA CONDOMINIUM CLUB NO RECREIO - Ligue (21) 3091-0191
PPS
Blowin in the wind
PDF
Guia matemáticas
PDF
Estrelles
PDF
Estrelles
PPT
UNIDADES ARMAZENADORAS
16th issue
24 march janta ka aaina (3)
ONDA CARIOCA CONDOMINIUM CLUB NO RECREIO - Ligue (21) 3091-0191
Blowin in the wind
Guia matemáticas
Estrelles
Estrelles
UNIDADES ARMAZENADORAS

Similar to Mashlight (20)

PDF
Corso Unified Modeling Language (UML)
PPTX
Le 5 novità di Knos
PDF
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
PPTX
m-v-vm @ UgiAlt.Net
PDF
FLSS: documento di design
PDF
Sviluppo di applicazioni web con Django - - Linux Day 2011
PDF
Facetag: nuova interfaccia per nuovi modi di esplorare le classificazioni
PDF
Spring E Spring Web Flow Nel Progetto Jug Avis Web
PPT
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAX
PPTX
UI Composition
PPT
Basta un Click!
PDF
AreaMVC: un'architettura software basata sulla semplicità
PDF
Spring @Aspect e @Controller
PDF
Docker vs Virtualizzazioni
ODP
Matteo baccan raspberry pi - linox 2015 - corso parte 3
PDF
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...
PDF
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...
PDF
Never Mind the Bollocks: here's the Domain Driven Design
PDF
Struttin' on, novità in casa Struts
PDF
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Corso Unified Modeling Language (UML)
Le 5 novità di Knos
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
m-v-vm @ UgiAlt.Net
FLSS: documento di design
Sviluppo di applicazioni web con Django - - Linux Day 2011
Facetag: nuova interfaccia per nuovi modi di esplorare le classificazioni
Spring E Spring Web Flow Nel Progetto Jug Avis Web
Progettazione e sviluppo di applicazioni web di nuova generazione con AJAX
UI Composition
Basta un Click!
AreaMVC: un'architettura software basata sulla semplicità
Spring @Aspect e @Controller
Docker vs Virtualizzazioni
Matteo baccan raspberry pi - linox 2015 - corso parte 3
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...
Stato di avanzamento dei lavori e roadmap del progetto CMDBuild - CMDBuild Da...
Never Mind the Bollocks: here's the Domain Driven Design
Struttin' on, novità in casa Struts
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Ad

Mashlight

  • 1. POLITECNICO DI MILANO MASHLIGHT: un framework lightweight per mashup. Estensioni ed innovazioni. Relatore: Prof. Luciano BARESI Correlatore: Prof. Sam GUINEA Candidato: Giuseppe De Cicco Laurea Magistrale in Ingegneria Informatica
  • 2. Il concetto di Mashup 1 ‣ Web 2.0 - Usabilità, Partecipazione, Design... - JavaScript, Ajax, Xml, Php, Soap, Rest ... ‣ Mashup - Sofware as a Service (SaaS) ✓ Semplicità, Standardizzazione, Accessibilità ✓ Widget (black box) - Riuso e integrazione di componenti - Creazione di applicazioni “Goal-oriented” ✓ L’utente come “autore” della composizione Giuseppe De Cicco POLITECNICO DI MILANO
  • 3. MASHLIGHT 2 Tipo Lato server Consumer utente Logic Mashup Sviluppatore Utente esperto Mashlight Utente inesperto Lato server Lato client Ambiente di Presentation Data Logic esecuzione Complessità Funzionalità • Principali caratteristiche: - Tecnologie Web 2.0, Flessibilità, Usabilità - Lightweight (ambiente Desktop, iPhone, Android) - No Application-Server - Approccio “process-like” - Standardizzazione dei servizi in blocchi Giuseppe De Cicco POLITECNICO DI MILANO
  • 4. Modello concettuale 3 • Il Blocco (o widget): - unità funzionale indipendente (Block Manifest XML) - Servizio Web standardizzato (gestione dei parametri di input/ output, scambio di informazioni tra widget) Cinema coordinates • Il SuperBlocco : - Contenitore di blocchi(esecuzione parallela di Widget) - Trasparenza (definito a livello di processo) - Flusso dati (no flusso di processo) Giuseppe De Cicco POLITECNICO DI MILANO
  • 5. Modello concettuale 4 • Il MASHUP (Process Manifest JS) - Flusso di processo: stabilisce l’ordine di attivazione dei blocchi - Flusso dati: definisce le dipendenze dati - Flussi di esecuzione: possibile ordine di esecuzione dei bocchi • Funzioni di processo - Scambio dati con formato ad-hoc - Assegnamenti con cardinalità singola o multipla - Operazione di UNDO risalendo il flusso di esecuzione Giuseppe De Cicco POLITECNICO DI MILANO
  • 6. Architettura 5 Giuseppe De Cicco POLITECNICO DI MILANO
  • 7. Stato dell’arte 6 • Cosa permette di fare Mashlight ? - Eseguire Mashup predefiniti in ambiente desktop e mobile - Mashlight Widget Builder: standardizzare un servizo attraverso un plugin Eclipse - Mashlight Process Builder: creare un mashup utilizzando un applicativo da installare su client. • Quali sono alcuni dei concetti non presenti nel framework? - Non si rivolge a tutto il bacino di utenza per cui è stato pensato - La creazione di Mashup non è lightweight - Non possono essere eseguiti in ambiente desktop o mobile i Mashups creati dall’utente. Giuseppe De Cicco POLITECNICO DI MILANO
  • 8. Il mio lavoro di TESI 7 • Le innovazioni introdotte: • Creazione lightweight di mashup “user-oriented” - Composizione direttamente dall’ambiente di esecuzione - Scelta dei blocchi con semplici operazioni di drag-and-drop -Templates di Mashup • Portabilità e riuso dei Mashups - Process Manifest XML : load/save/execution • Flusso di processo guidato dall’utente • Creazione di nuovi widgets con funzionalità avanzate - Block Selector - Templates builder - Multiplexer - Calendar - Mashup Uploader - Maps 2.0 - Navigator Giuseppe De Cicco POLITECNICO DI MILANO
  • 9. Mashups di Mashup 8 Creazione lightweight di mashup? Ho introdotto il concetto di Mashups di Mashup La mia definizione: ”Composizione semi-automatica di servizi Web a partire da un Mashup predefinito”. Modifiche del framework: • Nuovi metadati nel Block Manifest (<description>....<description>) • Accesso alla Blocks Library a runtime • Templates di Composizione • Widgets: Block Selector, Process Builders • Composizione predefinita “Create a Mashup” Giuseppe De Cicco POLITECNICO DI MILANO
  • 10. Mashups di Mashup 9 Block Selector: Filtro e Selettore di Blocchi inlink 1 blockToAdd block Selected Block Selector selectedBlock infos outlink1 blocksToMash Giuseppe De Cicco POLITECNICO DI MILANO
  • 11. Mashups di Mashup 10 Templates Process Builder (Mashup di alto livello) inlink 1 blocksToMash Process Builder outlink1 Sequenziale Container Centralizzato Block 2 Block 3 Block 1 Block 1 Block 2 Block Principale Block 2 ... Block n ... Block n Block n Giuseppe De Cicco (a) (b) POLITECNICO DI MILANO
  • 12. blockSelected Mashups di Mashup 11 Block Selector “Create a Mashup”: Il mashup che permette all’utente di creare i infos Mashup personalizzati. Start blocksToMash SuperBlocco 1 blocksToMash SuperBlocco 2 infoPoints info Centalized Tree Process Process Descriptor Maps 2.0 selected selectedPoint Sequential Container Plan Process Process Process blockToAdd blockSelected Block Selector End infos blocksToMash blocksToMash SuperBlocco 2 Giuseppe De Cicco POLITECNICO DI MILANO
  • 13. <blockIncludes> <include id="i1" uuid="999999999"/> Nuovi concetti: portabilità e riuso </blockIncludes> <variables> 12 <variable name="b2_coordinates" refNode="i1" paramName="coordina </variables> • Nuova sintassi per Mashup in formato XML <flow refStartNode="b2"> • Estensione del Core Engine: loadXML <node id="b2" refInclude="i1" undoable="true" end="true"> <assigns> • Templates process builder: salvataggio del Mashup <assign> <target refVariable="b2_coordinates" xfield="."/> • Mashup uploader: riutilizzo del Mashup creato <source type="Coordinates"> <value> <latitude>45.4791694</latitude> <process> <longitude>9.2208006</longitude> <about> <identifier>c0c52910-f91c-11dd-87af-0800200c9a66</identifier> </value> <name>VisualizeCoordinate</name> </source> <author>Giuseppe</author> </assign> <icon/> </assigns> </about> <links/> <blockIncludes> </node> <include id="i1" uuid="999999999"/> </flow> </blockIncludes> <variables> </process> <variable name="b2_coordinates" refNode="i1" paramName="coordinates"/> </variables> <flow refStartNode="b2"> <node id="b2" refInclude="i1" undoable="true" end="true"> <assigns> <assign> <target refVariable="b2_coordinates" xfield="."/> function mashlight_process() { <source type="Coordinates"> engine.doBlockInclusion("999999999"); <value> engine.doNodeAddition("b2", "999999999", true, true); <latitude>45.4791694</latitude> engine.doOutConnectionAddition("b2", "out", null); <longitude>9.2208006</longitude> } </value> function b2() { </source> </assign> var tmp= new Coordinates(); </assigns> tmp.latitude = "45.4791694"; <links/> tmp.longitude= "9.2208006" ; </node> engine.doConstantAssignment("b2_coordinates", ".", tmp); </flow> } </process> Giuseppe De Cicco POLITECNICO DI MILANO
  • 14. Nuovi concetti: flusso gestito dall’utente 13 • Multiplexer • Correlazione tra parametri-outlink • Parametri di input: array di “outlink - nome nodo” • Numero di outlink indefinito • Utilizzato in: •Mashup centralizzati •Mashup Plan • Molto importante nel contesto mobile inlink dataOutlink Multiplexer outlink 1 outlink 2 ... outlink n Giuseppe De Cicco POLITECNICO DI MILANO
  • 15. Widget Calendar 14 • Uno dei Blocchi Google (Maps 2.0, Navigator) • Google Calendar (Zend Framework) • Standardizzazione dei parametri di input e output • Primo esempio di Widget con funzionalità di: • Autenticazione • Salvataggio dati nella Cloud di Google inlink event accessDataIn Calendar nextEvent accessDataOut outlink Giuseppe De Cicco POLITECNICO DI MILANO
  • 16. Caso di studio 15 • NightOut (scenario): Organizzare una serata con i proprio amici prenotando prima un ristorante ed in seguito un cinema. L’utente vuole: • Scegliere i servizi ed effettuare le opportune prenotazioni. • Salvare i dati della prenotazione • Ricevere notifiche via mail ed SMS in tempo per partecipare all’evento • Avere un supporto che lo aiuti al raggiungimento della meta • Passi da effettuare con Mashlight: 1. Selezione dei servizi attraverso il mashup “Create a Mashup” 2. Utilizzo del template PLAN 3. Salvataggio ed Esecuzione del processo 4. Prenotazione utilizzando il servizio del cinema e del ristorante 5. Utilizzo del dispositivo mobile per caricare il Mashup salvato Giuseppe De Cicco POLITECNICO DI MILANO
  • 17. Caso di studio 16 Il template PLAN (Mashup di alto livello creato con effort minimo) outlinks data Start Calendar Outlink Multiplexer Outlink Multiplexer Calendar user End password Calendar Calendar Calendar Calendar event event Calendar Calendar Calendar Calendar Calendar Calendar event event event Block 1 n Block Navigator Block 1 event event next event Block 1 Block 1 Block 1 Block 1 Block n Navigator Deactive Deactive Deactive Deactive Deactive Deactive Deactive Deactive Deactive Deactive Giuseppe De Cicco POLITECNICO DI MILANO
  • 18. 17 Demo... Giuseppe De Cicco POLITECNICO DI MILANO
  • 19. Mashlight 18 Conclusione • Obiettivi raggiunti con successo • Applicazioni centrate sugli obiettivi dell’utente • Creazione / Esecuzione / Salvataggio / Riuso lightweight di Mashup • Mashups complessi creati con semplici passaggi e nascosti all’utente. Sviluppi Futuri • Arricchimento della “Blocks Library” con nuovi servizi • Miglioramento dell’ambiente di esecuzione iPhone/Android • Concetto di “Stato” Giuseppe De Cicco POLITECNICO DI MILANO