Generazione Automatica Di Codice Orientato Agli Oggetti Tramite

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites

    Generazione Automatica Di Codice Orientato Agli Oggetti Tramite - Presentation Transcript

    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

    + Marco MontanariMarco Montanari, 8 months ago

    custom

    279 views, 2 favs, 1 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 279
      • 274 on SlideShare
      • 5 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 0
    Most viewed embeds
    • 5 views on http://mmosharp.blogspot.com

    more

    All embeds
    • 5 views on http://mmosharp.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories