SlideShare uma empresa Scribd logo
1 de 52
Marco Montanari




GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Vogliamo permettere ad un utente non esperto di

    programmazione di realizzare una applicazione che
    rispecchi le sue necessità.




                             GENERAZIONE AUTOMATICA DI CODICE
                                ORIENTATO AGLI OGGETTI TRAMITE
                                                PIANIFICAZIONE
GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Creare uno strumento di sviluppo che si occupi

    direttamente di generare il codice, lasciando all’utente
    solo l’onere di spiegare quali sono i suoi requisiti.




                               GENERAZIONE AUTOMATICA DI CODICE
                                  ORIENTATO AGLI OGGETTI TRAMITE
                                                  PIANIFICAZIONE
GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Generazione di codice:

    ◦ Per shell
    ◦ Per semplici applicazioni procedurali
    Analisi dei framework

    ◦ Solo analisi di API
    ◦ Analisi di codice sorgente
    ◦ Analisi di errori nel codice




                                     GENERAZIONE AUTOMATICA DI CODICE
                                        ORIENTATO AGLI OGGETTI TRAMITE
                                                        PIANIFICAZIONE
Cambia l’approccio

    ◦ Partendo dalle stesse premesse(generazione automatica di
      codice
    ◦ L’aggiunta di un linguaggio per descrivere i requisiti
    ◦ L’aggiunta di una analisi approfondita della programmazione
      ad oggetti




                                  GENERAZIONE AUTOMATICA DI CODICE
                                     ORIENTATO AGLI OGGETTI TRAMITE
                                                     PIANIFICAZIONE
GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Relazioni




GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Relazioni




GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Relazioni




GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Relazioni




GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
Come è fatta un’applicazione?

    ◦ Boundary: interfacce disponibili verso l’esterno
    ◦ Control: parte operativa dell’applicazione
    ◦ Entity: parte strutturale dell’applicazione




                                   GENERAZIONE AUTOMATICA DI CODICE
                                      ORIENTATO AGLI OGGETTI TRAMITE
                                                      PIANIFICAZIONE
Come è fatta un’applicazione?

    ◦ Boundary: interfacce disponibili verso l’esterno
    ◦ Control: parte operativa dell’applicazione
    ◦ Entity: parte strutturale dell’applicazione




                                   GENERAZIONE AUTOMATICA DI CODICE
                                      ORIENTATO AGLI OGGETTI TRAMITE
                                                      PIANIFICAZIONE
Come è fatta un’applicazione?

    ◦ Boundary: interfacce disponibili verso l’esterno
    ◦ Control: parte operativa dell’applicazione
    ◦ Entity: parte strutturale dell’applicazione




                                   GENERAZIONE AUTOMATICA DI CODICE
                                      ORIENTATO AGLI OGGETTI TRAMITE
                                                      PIANIFICAZIONE
Come è fatta un’applicazione?

    ◦ Boundary: interfacce disponibili verso l’esterno
    ◦ Control: parte operativa dell’applicazione
    ◦ Entity: parte strutturale dell’applicazione




                                   GENERAZIONE AUTOMATICA DI CODICE
                                      ORIENTATO AGLI OGGETTI TRAMITE
                                                      PIANIFICAZIONE
Rappresentare cosa deve essere possibile fare con le

    entità descritte nel dominio
    UML offre un diagramma molto semplice e poco

    sfruttato:
    ◦ Casi d’Uso




                              GENERAZIONE AUTOMATICA DI CODICE
                                 ORIENTATO AGLI OGGETTI TRAMITE
                                                 PIANIFICAZIONE
Fornisce
  
      ◦   Attore (entità attiva)
      ◦   Caso (operazione o insieme di operazioni)
      ◦   Relazioni tra casi (inclusione, estensione)
      ◦   Scenari (rappresentazioni pratiche e verbali di casi)
Vogliamo una applicazione              uc sample

Che elenchi i link in una
pagina web
                                                         v iew Links on
                                                            Webpage

                                           Utente




                                        GENERAZIONE AUTOMATICA DI CODICE
                                           ORIENTATO AGLI OGGETTI TRAMITE
                                                           PIANIFICAZIONE
A partire dal modello UML semplificato, è possibile

    definire un linguaggio (OOGLang):
       Domain: webpages

       Actor Utente
        : view links on Webpage
       End actor                  uc sample




                                                   v iew Links on
                                                      Webpage

                                      Utente




                                   GENERAZIONE AUTOMATICA DI CODICE
                                      ORIENTATO AGLI OGGETTI TRAMITE
                                                      PIANIFICAZIONE
La rappresentazione semplificata nella struttura ma

    aumentata di semantica nelle operazioni permette di
    trasformare come semplice passaggio logico il caso
    d’uso in interfaccia


                                       class sample_class
    Domain: webpages

                                                            «interface»
    Actor Utente                                              IUtente
     : view links on page
                                             +   ViewLinks(webpage) : List<Link>
    End actor



                             GENERAZIONE AUTOMATICA DI CODICE
                                ORIENTATO AGLI OGGETTI TRAMITE
                                                PIANIFICAZIONE
Dalla definizione del dominio abbiamo ottenuto

    l’Entity
    Dall’introspezione e dalla creazione delle interfacce

    dichiarate nel linguaggio appena definito abbiamo la
    struttura di base del boundary e alcune relazioni
    logiche tra elementi del contol.




                              GENERAZIONE AUTOMATICA DI CODICE
                                 ORIENTATO AGLI OGGETTI TRAMITE
                                                 PIANIFICAZIONE
IUtente

                                                       Link   Sylesheet


Utente
                                                          webpage




                   GENERAZIONE AUTOMATICA DI CODICE
                      ORIENTATO AGLI OGGETTI TRAMITE
                                      PIANIFICAZIONE
GENERAZIONE AUTOMATICA DI CODICE
   ORIENTATO AGLI OGGETTI TRAMITE
                   PIANIFICAZIONE
La Pianificazione è essenzialmente un problema di

    ricerca. (Hendler, Tate, & Drummod, 1990)

    In A.I. è un problema di ricerca in un numero illimitato

    di stati
    ◦ Diventano fondamentali le operazioni




                                 GENERAZIONE AUTOMATICA DI CODICE
                                    ORIENTATO AGLI OGGETTI TRAMITE
                                                    PIANIFICAZIONE
Diventa quindi fondamentale il problema della

    conoscenza.
    Diversi sistemi di pianificazione hanno rappresentato in

    modo diverso le stesse informazioni:




                              GENERAZIONE AUTOMATICA DI CODICE
                                 ORIENTATO AGLI OGGETTI TRAMITE
                                                 PIANIFICAZIONE
Le operazioni dipendono dall’ambiente nel quale si va

    ad operare.
    Dipendono quindi dal framework di sviluppo ad oggetti

    scelto per creare l’applicazione.

    Diventa quindi fondamentale poter andare ad

    analizzare il framework per conoscere le operazioni
    possibili



                              GENERAZIONE AUTOMATICA DI CODICE
                                 ORIENTATO AGLI OGGETTI TRAMITE
                                                 PIANIFICAZIONE
E’ esperienza di ogni sviluppatore che utilizzi linguaggi

    ad oggetti, che la conoscenza di questo modello di
    programmazione si basi sostanzialmente su tre tipi di
    conoscenza:
    ◦ Il modello ad oggetti come concetto teorico
    ◦ Il framework come insieme di librerie di operazioni
    ◦ Il framework come insieme di tipi di dato e trasformazioni




                                  GENERAZIONE AUTOMATICA DI CODICE
                                     ORIENTATO AGLI OGGETTI TRAMITE
                                                     PIANIFICAZIONE
UML (di nuovo) offre un diagramma specifico per la

    modellazione di oggetti:
    ◦ Diagramma delle classi

    Questo diagramma, come tutti gli altri definiti nel

    modello UML, è descritto tramite un meta-modello




                               GENERAZIONE AUTOMATICA DI CODICE
                                  ORIENTATO AGLI OGGETTI TRAMITE
                                                  PIANIFICAZIONE
Utilizzando il meta-modello UML è possibile descrivere

    il modello ad oggetti tramite un insieme di relazioni
    strutturali.
    ◦   Generalizzazione e realizzazione
    ◦   Aggregazione e composizione
    ◦   Uso
    ◦   Riferimento
    Inoltre ogni entità contiene ulteriori elementi quali

    ◦ Operazioni
    ◦ Campi


                                    GENERAZIONE AUTOMATICA DI CODICE
                                       ORIENTATO AGLI OGGETTI TRAMITE
                                                       PIANIFICAZIONE
class sample_class


                «interface»
                  IUtente
    +   ViewLinks(webpage) : List<Link>




                                          GENERAZIONE AUTOMATICA DI CODICE
                                             ORIENTATO AGLI OGGETTI TRAMITE
                                                             PIANIFICAZIONE
Con la diffusione della programmazione ad oggetti, la

    frequente esposizione a problemi simili ha portato alla
    generazione di famiglie di soluzioni modulari
    I pattern sono suddivisi in 3 famiglie

    ◦ Strutturali
    ◦ Creazionali
    ◦ Comportamentali




                              GENERAZIONE AUTOMATICA DI CODICE
                                 ORIENTATO AGLI OGGETTI TRAMITE
                                                 PIANIFICAZIONE
I pattern creazionali cambiano il ciclo di vita degli

    oggetti
    ◦ Il costruttore non si trova (a volte) nel tipo di dato ma in altre
      strutture dati

    Come riconoscere i pattern per creare operazioni

    specializzate nella creazione degli oggetti?




                                     GENERAZIONE AUTOMATICA DI CODICE
                                        ORIENTATO AGLI OGGETTI TRAMITE
                                                        PIANIFICAZIONE
Un modo per rappresentare relazioni fra entità è RDF



                                                  Oggetto
                      Relazione
         Soggetto




                                  GENERAZIONE AUTOMATICA DI CODICE
                                     ORIENTATO AGLI OGGETTI TRAMITE
                                                     PIANIFICAZIONE
Un modo per rappresentare relazioni fra entità è RDF



                                                     Oggetto
                         Relazione
         Soggetto                                                          Oggetto



                                               Oggetto




                    Oggetto
                                                                         Oggetto


                                     GENERAZIONE AUTOMATICA DI CODICE
                                        ORIENTATO AGLI OGGETTI TRAMITE
                                                        PIANIFICAZIONE
Oggetto
                                                                                           Oggetto
                                                                          Relazione
                                             Soggetto




                                                                      Oggetto           Oggetto
                                         Relazione
                    Soggetto                                                                Oggetto
         Un modo per rappresentare relazioni fra entità è RDF
     


o                                                               Oggetto
                                    Relazione
                 Soggetto
                 Oggetto                                                                Oggetto



                                  Oggetto                 Oggetto
           Relazione
to                                                            Oggetto
                                                                                         Oggetto
                                                                 Relazione


                               Oggetto
               Oggetto                                                                Oggetto


     Oggetto                                    GENERAZIONE AUTOMATICA DI CODICE
                                                   ORIENTATO AGLI OGGETTI TRAMITE
                                                             Oggetto
                                                                   PIANIFICAZIONE
Il modello UML permette di esprimere relazioni fra tipi

    di dato
    ◦ Diventa possibile rappresentare tutto il framework come
      enorme grafo di relazioni ontologiche




                                  GENERAZIONE AUTOMATICA DI CODICE
                                     ORIENTATO AGLI OGGETTI TRAMITE
                                                     PIANIFICAZIONE
IsAbstract
                                                                                  Prototype
class UC


           Client                              Prototype
                             -prototype
   +   Operation()                        +    Clone()
        p=
        prototype->Clone()




                                                                                                                         Clone




                                                                                      HasParent
                       ConcretePrototype1                  ConcretePrototype2

                        +    Clone()                       +   Clone()
                              return copy of                    return copy of
                              self                              self




                                                               ConcretePrototype1
                                                                                                            ConcretePrototype2




                                                                                 GENERAZIONE AUTOMATICA DI CODICE
                                                                                    ORIENTATO AGLI OGGETTI TRAMITE
                                                                                                    PIANIFICAZIONE
Possiamo quindi aggiungere le operazioni di creazione

    degli elementi partecipanti a pattern creazionali
    class UC


                   Singleton

       -   singletonData
       -   uniqueInstance

       +   GetSingletonData()
       +   Instance()
             return uniqueInstance
       +   SingletonOperation()




                                     GENERAZIONE AUTOMATICA DI CODICE
                                        ORIENTATO AGLI OGGETTI TRAMITE
                                                        PIANIFICAZIONE
Quindi, riassumendo

                obj ect Comunication analy...



                                                                             UmlStore




                                                                             RDFStore
                        Framework               Analysis

                                                                                            PatternSearch



                                                                           OperationStore




                                                                              Planner




                                                GENERAZIONE AUTOMATICA DI CODICE
                                                   ORIENTATO AGLI OGGETTI TRAMITE
                                                                   PIANIFICAZIONE
Un paio di numeri:



    ◦ 800.000 operazioni

    ◦ 1.250.000 relazioni

    ◦ 1.500 pattern creazionali




                                  GENERAZIONE AUTOMATICA DI CODICE
                                     ORIENTATO AGLI OGGETTI TRAMITE
                                                     PIANIFICAZIONE
Ora con le operazioni disponibili è possibile pianificare

    ◦ Pianificazione ad ordinamento Parziale
       Permette di evitare Anomalia di Sussman
       Elimina la linearizzazione dall’ordinamento parziale
    ◦ Pianificazione Parallela
       Distribuisce il carico di lavoro
       Implica una distribuzione dello stato


    Tempi: 1.5 - 2.5 giorni di calcoli





                                      GENERAZIONE AUTOMATICA DI CODICE
                                         ORIENTATO AGLI OGGETTI TRAMITE
                                                         PIANIFICAZIONE
public class WebsiteManager
 {
   List<Link> GetLinks(Website website) {
      return new List<Link>(website.Links);
   }
 }




                       GENERAZIONE AUTOMATICA DI CODICE
                          ORIENTATO AGLI OGGETTI TRAMITE
                                          PIANIFICAZIONE
public class WebsiteManager
                             public class WebsiteManager WebsiteManager
                                                     public class
                             { public class
     public class WebsiteManager WebsiteManager
                               {                       {
                                List<Link> GetLinks(Website website) {
                                 {
        {        public class WebsiteManager     public class WebsiteManager
                                   List<Link> GetLinks(Website website) {
                                                          List<Link> GetLinks(Website website) {
                                    return new GetLinks(Website website) {
                                     List<Link> List<Link>(website.Links);
            List<Link> GetLinks(Website website) {
                   {                              {
public class WebsiteManager            return new List<Link>(website.Links);
                                                             return new List<Link>(website.Links);
   public class WebsiteManager  } GetLinks(Website website)GetLinks(Website website) {
                      List<Link> } return new List<Link>(website.Links);
               return new List<Link>(website.Links); List<Link> {
 {                                                        }
 public }class WebsiteManager
      {                      }       }
     List<Link> GetLinks(Website website) { }return new List<Link>(website.StyleSheets);
                         return new List<Link>(website.Links);
                               }
    { } List<Link> GetLinks(Website website) {
                                 }
         return newclass WebsiteManager }
                      } List<Link>(website.Links);
                public
        List<Link> new List<Link>(website.Links); class WebsiteManager
             return GetLinks(Website website)public
                                                  }{
                   }
     }                         public class WebsiteManager
                  {
          } return new List<Link>(website.Links);       {
 }                   List<Link> {GetLinks(Website website) {WebsiteManager
        }
      }                                             public class WebsiteManager
                                                           List<Link> GetLinks(Website website) {
                                                     public class
                                     List<Link> GetLinks(Website website) {
                        return new List<Link>(website.Links);
    }                                                 {{      return new List<Link>(website.Links);
                                         return new List<Link>(website.Links);
                     }                                   List<Link> GetLinks(Website website) {{
                                                           }
                                                          List<Link> GetLinks(Website website)
                                     }
                  }
                                                        } return new List<Link>();
                                                             return new List<Link>(website.Links);
                                 }
                                                         }}
                                                      }}


                                                GENERAZIONE AUTOMATICA DI CODICE
                                                   ORIENTATO AGLI OGGETTI TRAMITE
                                                                   PIANIFICAZIONE
Applicazione di matematica



    Dobbiamo convertire una stringa in numero:

    ◦ Numero legato alla vita di una persona? (quindi gestibile
      tramite convertitore per client di posta?)

    ◦ Numero legato a database?

    ◦ Numero legato a matematica?
      (Quindi da convertire con cura)


                                        GENERAZIONE AUTOMATICA DI CODICE
                                           ORIENTATO AGLI OGGETTI TRAMITE
                                                           PIANIFICAZIONE
Applicazione di matematica



    Dobbiamo convertire una stringa in numero:

    ◦ Numero legato alla vita di una persona? (quindi gestibile
      tramite convertitore per client di posta?)

    ◦ Numero legato a database?

    ◦ Numero legato a matematica?
      (Quindi da convertire con cura)


                                        GENERAZIONE AUTOMATICA DI CODICE
                                           ORIENTATO AGLI OGGETTI TRAMITE
                                                           PIANIFICAZIONE
Applicazione di matematica



    Dobbiamo convertire una stringa in numero:

    ◦ Numero legato alla vita di una persona? (quindi gestibile
      tramite convertitore per client di posta?)

    ◦ Numero legato a database?

    ◦ Numero legato a matematica?
      (Quindi da convertire con cura)


                                        GENERAZIONE AUTOMATICA DI CODICE
                                           ORIENTATO AGLI OGGETTI TRAMITE
                                                           PIANIFICAZIONE
Applicazione di matematica



    Dobbiamo convertire una stringa in numero:

    ◦ Numero legato alla vita di una persona? (quindi gestibile
      tramite convertitore per client di posta?)

    ◦ Numero legato a database?

    ◦ Numero legato a matematica?
      (Quindi da convertire con cura e
      Con la libreria adatta)

                                     GENERAZIONE AUTOMATICA DI CODICE
                                        ORIENTATO AGLI OGGETTI TRAMITE
                                                        PIANIFICAZIONE
Poter sapere quale operazione ha senso è quindi un

    problema centrale
    ◦ Sapere quale strada percorrere generalmente aiuta

    Google Code Search, Koders

    ◦ Forniscono ricerca di codice in progetti open-source
    ◦ Manca una API

    Google Code, SourceForge

    ◦ Forniscono supporto ai progetti (quindi classificazione)
    ◦ Forniscono spazio per versioning

                                   GENERAZIONE AUTOMATICA DI CODICE
                                      ORIENTATO AGLI OGGETTI TRAMITE
                                                      PIANIFICAZIONE
Il problema:

    ◦ L’accesso ai sistemi di versioning è lungo e molto oneroso
    ◦ L’analisi del codice implica valutazioni complesse anche da un
      punto di vista concettuale: diversi team hanno diversi stili di
      codifica
    ◦ E’ necessario un periodo di “allineamento” ontologico tra i
      diversi sistemi di gestione dei vari progetti.
    Vantaggi

    ◦ L’accesso a sistemi di versioning permette di considerare
      anche i bug e quindi valutare sia in positivo che in negativo le
      operazioni all’interno del framework

                                    GENERAZIONE AUTOMATICA DI CODICE
                                       ORIENTATO AGLI OGGETTI TRAMITE
                                                       PIANIFICAZIONE
Una volta effettuata la pianificazione è possibile

    perendere direttamente il risultato e tramite parser
    trasformarlo in codice del linguaggio desiderato o in un
    eseguibile.




                              GENERAZIONE AUTOMATICA DI CODICE
                                 ORIENTATO AGLI OGGETTI TRAMITE
                                                 PIANIFICAZIONE
E’ possibile analizzare un framework complesso senza

    conoscere il codice sorgente
    La mancanza di Euristiche fa aumentare in modo

    spropositato i tempi di esecuzione della pianificazione
    con un numero molto alto di operazioni




                               GENERAZIONE AUTOMATICA DI CODICE
                                  ORIENTATO AGLI OGGETTI TRAMITE
                                                  PIANIFICAZIONE
Java   Euristiche                         Nuovi
                                        metodi di
                                        analisi del
                                         codice
            GENERAZIONE AUTOMATICA DI CODICE
               ORIENTATO AGLI OGGETTI TRAMITE
                               PIANIFICAZIONE

Mais conteúdo relacionado

Semelhante a Generazione Automatica Di Codice Orientato Agli Oggetti Tramite

Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...Emerasoft, solutions to collaborate
 
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...Profesia Srl, Lynx Group
 
riskart technical presentation
riskart technical presentationriskart technical presentation
riskart technical presentationframar
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality CodeDaniele Mondello
 
TBIZ 2011- Integra solution. Web Eye
TBIZ 2011- Integra solution. Web EyeTBIZ 2011- Integra solution. Web Eye
TBIZ 2011- Integra solution. Web EyeTechnologyBIZ
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the bossClaudio Cicali
 
Stai guardando i dati sbagliati
Stai guardando i dati sbagliatiStai guardando i dati sbagliati
Stai guardando i dati sbagliatiAlberto Brandolini
 
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...Emerasoft, solutions to collaborate
 
riskart product overview Italian
riskart product overview Italianriskart product overview Italian
riskart product overview Italianframar
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XMLAndrea Castello
 
Design and development of an Online Social Network crawler
Design and development of an Online Social Network crawlerDesign and development of an Online Social Network crawler
Design and development of an Online Social Network crawlerFederico Feroldi
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 
Introduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexaIntroduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexaAntonio Di Motta
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoMavigex srl
 
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Fullone
 

Semelhante a Generazione Automatica Di Codice Orientato Agli Oggetti Tramite (20)

Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
 
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
Cloud Journey e IT Modernization: Da app monolitica a microservizi. vFunction...
 
Software Testing Forum 2012 - Polarion e TRS SpA
Software Testing Forum 2012 - Polarion e TRS SpASoftware Testing Forum 2012 - Polarion e TRS SpA
Software Testing Forum 2012 - Polarion e TRS SpA
 
riskart technical presentation
riskart technical presentationriskart technical presentation
riskart technical presentation
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
TBIZ 2011- Integra solution. Web Eye
TBIZ 2011- Integra solution. Web EyeTBIZ 2011- Integra solution. Web Eye
TBIZ 2011- Integra solution. Web Eye
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the boss
 
Stai guardando i dati sbagliati
Stai guardando i dati sbagliatiStai guardando i dati sbagliati
Stai guardando i dati sbagliati
 
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
 
riskart product overview Italian
riskart product overview Italianriskart product overview Italian
riskart product overview Italian
 
Presentazione CERT-CHECK
Presentazione CERT-CHECKPresentazione CERT-CHECK
Presentazione CERT-CHECK
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 
Cac Es3 2009
Cac Es3 2009Cac Es3 2009
Cac Es3 2009
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XML
 
Design and development of an Online Social Network crawler
Design and development of an Online Social Network crawlerDesign and development of an Online Social Network crawler
Design and development of an Online Social Network crawler
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Introduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexaIntroduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexa
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimento
 
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
 

Mais de Marco Montanari

OpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptxOpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptxMarco Montanari
 
Ohm itwikicon tech - english
Ohm itwikicon tech - englishOhm itwikicon tech - english
Ohm itwikicon tech - englishMarco Montanari
 
ITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMapITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMapMarco Montanari
 
ITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e WikipediaITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e WikipediaMarco Montanari
 
MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018Marco Montanari
 
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGEGEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGEMarco Montanari
 
Saas rad with django, django rest framework
Saas rad with django, django rest frameworkSaas rad with django, django rest framework
Saas rad with django, django rest frameworkMarco Montanari
 
Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017Marco Montanari
 
Open Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politicaOpen Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politicaMarco Montanari
 

Mais de Marco Montanari (20)

OpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptxOpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptx
 
Ohm wikimania 2021
Ohm wikimania 2021Ohm wikimania 2021
Ohm wikimania 2021
 
Ohm itwikicon tech - english
Ohm itwikicon tech - englishOhm itwikicon tech - english
Ohm itwikicon tech - english
 
ITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMapITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMap
 
ITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e WikipediaITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e Wikipedia
 
Storia dell'informatica
Storia dell'informaticaStoria dell'informatica
Storia dell'informatica
 
Bononia 1115
Bononia 1115Bononia 1115
Bononia 1115
 
ChContext
ChContextChContext
ChContext
 
MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018
 
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGEGEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
 
OHM at FOSS4G17
OHM at FOSS4G17OHM at FOSS4G17
OHM at FOSS4G17
 
Mn map poster
Mn map posterMn map poster
Mn map poster
 
Saas rad with django, django rest framework
Saas rad with django, django rest frameworkSaas rad with django, django rest framework
Saas rad with django, django rest framework
 
poster mn-auth
poster mn-authposter mn-auth
poster mn-auth
 
poster holodocker
poster holodockerposter holodocker
poster holodocker
 
Big data, big tourism
Big data, big tourismBig data, big tourism
Big data, big tourism
 
Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017
 
OHM at Kainua17
OHM at Kainua17OHM at Kainua17
OHM at Kainua17
 
OHM Workshop
OHM WorkshopOHM Workshop
OHM Workshop
 
Open Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politicaOpen Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politica
 

Generazione Automatica Di Codice Orientato Agli Oggetti Tramite

  • 1. Marco Montanari GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 2. Vogliamo permettere ad un utente non esperto di  programmazione di realizzare una applicazione che rispecchi le sue necessità. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 3. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 4. Creare uno strumento di sviluppo che si occupi  direttamente di generare il codice, lasciando all’utente solo l’onere di spiegare quali sono i suoi requisiti. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 5. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 6. Generazione di codice:  ◦ Per shell ◦ Per semplici applicazioni procedurali Analisi dei framework  ◦ Solo analisi di API ◦ Analisi di codice sorgente ◦ Analisi di errori nel codice GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 7. Cambia l’approccio  ◦ Partendo dalle stesse premesse(generazione automatica di codice ◦ L’aggiunta di un linguaggio per descrivere i requisiti ◦ L’aggiunta di una analisi approfondita della programmazione ad oggetti GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 8. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 9. Relazioni GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 10. Relazioni GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 11. Relazioni GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 12. Relazioni GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 13. Come è fatta un’applicazione?  ◦ Boundary: interfacce disponibili verso l’esterno ◦ Control: parte operativa dell’applicazione ◦ Entity: parte strutturale dell’applicazione GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 14. Come è fatta un’applicazione?  ◦ Boundary: interfacce disponibili verso l’esterno ◦ Control: parte operativa dell’applicazione ◦ Entity: parte strutturale dell’applicazione GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 15. Come è fatta un’applicazione?  ◦ Boundary: interfacce disponibili verso l’esterno ◦ Control: parte operativa dell’applicazione ◦ Entity: parte strutturale dell’applicazione GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 16. Come è fatta un’applicazione?  ◦ Boundary: interfacce disponibili verso l’esterno ◦ Control: parte operativa dell’applicazione ◦ Entity: parte strutturale dell’applicazione GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 17. Rappresentare cosa deve essere possibile fare con le  entità descritte nel dominio UML offre un diagramma molto semplice e poco  sfruttato: ◦ Casi d’Uso GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 18. Fornisce  ◦ Attore (entità attiva) ◦ Caso (operazione o insieme di operazioni) ◦ Relazioni tra casi (inclusione, estensione) ◦ Scenari (rappresentazioni pratiche e verbali di casi) Vogliamo una applicazione uc sample Che elenchi i link in una pagina web v iew Links on Webpage Utente GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 19. A partire dal modello UML semplificato, è possibile  definire un linguaggio (OOGLang): Domain: webpages Actor Utente : view links on Webpage End actor uc sample v iew Links on Webpage Utente GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 20. La rappresentazione semplificata nella struttura ma  aumentata di semantica nelle operazioni permette di trasformare come semplice passaggio logico il caso d’uso in interfaccia class sample_class Domain: webpages «interface» Actor Utente IUtente : view links on page + ViewLinks(webpage) : List<Link> End actor GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 21. Dalla definizione del dominio abbiamo ottenuto  l’Entity Dall’introspezione e dalla creazione delle interfacce  dichiarate nel linguaggio appena definito abbiamo la struttura di base del boundary e alcune relazioni logiche tra elementi del contol. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 22. IUtente Link Sylesheet Utente webpage GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 23. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 24. La Pianificazione è essenzialmente un problema di  ricerca. (Hendler, Tate, & Drummod, 1990) In A.I. è un problema di ricerca in un numero illimitato  di stati ◦ Diventano fondamentali le operazioni GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 25. Diventa quindi fondamentale il problema della  conoscenza. Diversi sistemi di pianificazione hanno rappresentato in  modo diverso le stesse informazioni: GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 26. Le operazioni dipendono dall’ambiente nel quale si va  ad operare. Dipendono quindi dal framework di sviluppo ad oggetti  scelto per creare l’applicazione. Diventa quindi fondamentale poter andare ad  analizzare il framework per conoscere le operazioni possibili GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 27. E’ esperienza di ogni sviluppatore che utilizzi linguaggi  ad oggetti, che la conoscenza di questo modello di programmazione si basi sostanzialmente su tre tipi di conoscenza: ◦ Il modello ad oggetti come concetto teorico ◦ Il framework come insieme di librerie di operazioni ◦ Il framework come insieme di tipi di dato e trasformazioni GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 28. UML (di nuovo) offre un diagramma specifico per la  modellazione di oggetti: ◦ Diagramma delle classi Questo diagramma, come tutti gli altri definiti nel  modello UML, è descritto tramite un meta-modello GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 29. Utilizzando il meta-modello UML è possibile descrivere  il modello ad oggetti tramite un insieme di relazioni strutturali. ◦ Generalizzazione e realizzazione ◦ Aggregazione e composizione ◦ Uso ◦ Riferimento Inoltre ogni entità contiene ulteriori elementi quali  ◦ Operazioni ◦ Campi GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 30. class sample_class «interface» IUtente + ViewLinks(webpage) : List<Link> GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 31. Con la diffusione della programmazione ad oggetti, la  frequente esposizione a problemi simili ha portato alla generazione di famiglie di soluzioni modulari I pattern sono suddivisi in 3 famiglie  ◦ Strutturali ◦ Creazionali ◦ Comportamentali GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 32. I pattern creazionali cambiano il ciclo di vita degli  oggetti ◦ Il costruttore non si trova (a volte) nel tipo di dato ma in altre strutture dati Come riconoscere i pattern per creare operazioni  specializzate nella creazione degli oggetti? GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 33. Un modo per rappresentare relazioni fra entità è RDF  Oggetto Relazione Soggetto GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 34. Un modo per rappresentare relazioni fra entità è RDF  Oggetto Relazione Soggetto Oggetto Oggetto Oggetto Oggetto GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 35. Oggetto Oggetto Relazione Soggetto Oggetto Oggetto Relazione Soggetto Oggetto Un modo per rappresentare relazioni fra entità è RDF  o Oggetto Relazione Soggetto Oggetto Oggetto Oggetto Oggetto Relazione to Oggetto Oggetto Relazione Oggetto Oggetto Oggetto Oggetto GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE Oggetto PIANIFICAZIONE
  • 36. Il modello UML permette di esprimere relazioni fra tipi  di dato ◦ Diventa possibile rappresentare tutto il framework come enorme grafo di relazioni ontologiche GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 37. IsAbstract Prototype class UC Client Prototype -prototype + Operation() + Clone() p= prototype->Clone() Clone HasParent ConcretePrototype1 ConcretePrototype2 + Clone() + Clone() return copy of return copy of self self ConcretePrototype1 ConcretePrototype2 GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 38. Possiamo quindi aggiungere le operazioni di creazione  degli elementi partecipanti a pattern creazionali class UC Singleton - singletonData - uniqueInstance + GetSingletonData() + Instance() return uniqueInstance + SingletonOperation() GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 39. Quindi, riassumendo  obj ect Comunication analy... UmlStore RDFStore Framework Analysis PatternSearch OperationStore Planner GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 40. Un paio di numeri:  ◦ 800.000 operazioni ◦ 1.250.000 relazioni ◦ 1.500 pattern creazionali GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 41. Ora con le operazioni disponibili è possibile pianificare  ◦ Pianificazione ad ordinamento Parziale  Permette di evitare Anomalia di Sussman  Elimina la linearizzazione dall’ordinamento parziale ◦ Pianificazione Parallela  Distribuisce il carico di lavoro  Implica una distribuzione dello stato Tempi: 1.5 - 2.5 giorni di calcoli  GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 42. public class WebsiteManager { List<Link> GetLinks(Website website) { return new List<Link>(website.Links); } } GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 43. public class WebsiteManager public class WebsiteManager WebsiteManager public class { public class public class WebsiteManager WebsiteManager { { List<Link> GetLinks(Website website) { { { public class WebsiteManager public class WebsiteManager List<Link> GetLinks(Website website) { List<Link> GetLinks(Website website) { return new GetLinks(Website website) { List<Link> List<Link>(website.Links); List<Link> GetLinks(Website website) { { { public class WebsiteManager return new List<Link>(website.Links); return new List<Link>(website.Links); public class WebsiteManager } GetLinks(Website website)GetLinks(Website website) { List<Link> } return new List<Link>(website.Links); return new List<Link>(website.Links); List<Link> { { } public }class WebsiteManager { } } List<Link> GetLinks(Website website) { }return new List<Link>(website.StyleSheets); return new List<Link>(website.Links); } { } List<Link> GetLinks(Website website) { } return newclass WebsiteManager } } List<Link>(website.Links); public List<Link> new List<Link>(website.Links); class WebsiteManager return GetLinks(Website website)public }{ } } public class WebsiteManager { } return new List<Link>(website.Links); { } List<Link> {GetLinks(Website website) {WebsiteManager } } public class WebsiteManager List<Link> GetLinks(Website website) { public class List<Link> GetLinks(Website website) { return new List<Link>(website.Links); } {{ return new List<Link>(website.Links); return new List<Link>(website.Links); } List<Link> GetLinks(Website website) {{ } List<Link> GetLinks(Website website) } } } return new List<Link>(); return new List<Link>(website.Links); } }} }} GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 44. Applicazione di matematica  Dobbiamo convertire una stringa in numero:  ◦ Numero legato alla vita di una persona? (quindi gestibile tramite convertitore per client di posta?) ◦ Numero legato a database? ◦ Numero legato a matematica? (Quindi da convertire con cura) GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 45. Applicazione di matematica  Dobbiamo convertire una stringa in numero:  ◦ Numero legato alla vita di una persona? (quindi gestibile tramite convertitore per client di posta?) ◦ Numero legato a database? ◦ Numero legato a matematica? (Quindi da convertire con cura) GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 46. Applicazione di matematica  Dobbiamo convertire una stringa in numero:  ◦ Numero legato alla vita di una persona? (quindi gestibile tramite convertitore per client di posta?) ◦ Numero legato a database? ◦ Numero legato a matematica? (Quindi da convertire con cura) GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 47. Applicazione di matematica  Dobbiamo convertire una stringa in numero:  ◦ Numero legato alla vita di una persona? (quindi gestibile tramite convertitore per client di posta?) ◦ Numero legato a database? ◦ Numero legato a matematica? (Quindi da convertire con cura e Con la libreria adatta) GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 48. Poter sapere quale operazione ha senso è quindi un  problema centrale ◦ Sapere quale strada percorrere generalmente aiuta Google Code Search, Koders  ◦ Forniscono ricerca di codice in progetti open-source ◦ Manca una API Google Code, SourceForge  ◦ Forniscono supporto ai progetti (quindi classificazione) ◦ Forniscono spazio per versioning GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 49. Il problema:  ◦ L’accesso ai sistemi di versioning è lungo e molto oneroso ◦ L’analisi del codice implica valutazioni complesse anche da un punto di vista concettuale: diversi team hanno diversi stili di codifica ◦ E’ necessario un periodo di “allineamento” ontologico tra i diversi sistemi di gestione dei vari progetti. Vantaggi  ◦ L’accesso a sistemi di versioning permette di considerare anche i bug e quindi valutare sia in positivo che in negativo le operazioni all’interno del framework GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 50. Una volta effettuata la pianificazione è possibile  perendere direttamente il risultato e tramite parser trasformarlo in codice del linguaggio desiderato o in un eseguibile. GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 51. E’ possibile analizzare un framework complesso senza  conoscere il codice sorgente La mancanza di Euristiche fa aumentare in modo  spropositato i tempi di esecuzione della pianificazione con un numero molto alto di operazioni GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE
  • 52. Java Euristiche Nuovi metodi di analisi del codice GENERAZIONE AUTOMATICA DI CODICE ORIENTATO AGLI OGGETTI TRAMITE PIANIFICAZIONE