Linguaggio per la gestione di una videoteca e biblioteca domestica

Slides:



Advertisements
Presentazioni simili
1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
Advertisements

1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Microsoft SQL Server 2008 Utilizzo. Creazione DataBase CREATE DATABASE CREATE DATABASE Cinema.
Seam.
Model – View - Controller
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
Componenti dell’architettura Oracle
© 2005 Avaya Inc. All rights reserved. Applicazioni Avaya IP Office.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
Roma, 16 novembre 2010 SPT – Il sistema di accettazione Gestione centralizzata Dott. Paolo Spadetta.
MIC 2008, Roma Antonio Pistoia Università Politecnica delle Marche MOODLELab Uno strumento per MOODLE per la gestione dei telelaboratori durante i corsi.
Calcolo di Modelli Stabili Attraverso la Semplificazione di Programmi Logici Fabrizio Magni Relatore: Prof.ssa Stefania Costantini Corelatore: Dott. Alessandro.
Università degli studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica Analisi e valutazione.
Sistema informativo IrisWIN
Sperimentazione CLIL nella scuola primaria in Lombardia
Fotogrammetria elementare
Un esempio: Registrazione e lettura di dati in un file
1Palma AM - G5 TUTORIAL GIMP per realizzare immagini con trasparenze e creare immagini con animazioni EXIT.
GE.CO. Gestione per competenze. Introduzione a GE.CO. Orienta nella scelta di nuovi modelli organizzativi. Elabora modelli concettuali ed operativi. Introduce.
Microsoft Access Maschere.
Il sistema operativo Sistema operativo (in breve) –È costituito dai programmi di gestione delle operazioni più elementari del computer –… gestione di vari.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 4 ARGOMENTI: STRINGHE DI CARATTERI.
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Lambiente operativo. 2 Per avviare e poter utilizzare il computer è necessario un particolare programma che si chiama sistema operativo. Windows è un.
IL METODO FOTOGRAMMETRICO 1
Realizzazione filmati: Carella Carmine Falco Giuseppe Faustinoni Fabrizio Passoni Alberto Piccinelli Luca Visin Francesco Presentazione: Visin Francesco.
Università degli studi di Roma La Sapienza Facoltà di Scienze Matematiche Fisiche E Naturali Corso di Laurea in Tecnologie Informatiche Presentazione Relazione.
Telemarketing & Market Research Advanced on Line Business Oriented Research Solutions ALBORS.
DISPOSITIVI ASIC Application Specific Integrated Circuit De Faveri Martina Classe 3 BET.
PROGETTO “NASTRO FERMI”
Primi passi con Windows: Gestione del Desktop Barra Applicazioni Menu Avvio ISTITUTO COMPRENSIVO N.7 - VIA VIVALDI - IMOLA Via Vivaldi, Imola.
Alcune problematiche di replicazione dati in unorganizzazione geograficamente distribuita Collaborazione CASPUR - ENEA Silvia Eccher - CASPUR Franco Iannone.
C OME CREARE I FRAME. Dal pannello File fai doppio clic sul file default.html per aprire la pagina (figura 1.1). Figura 1.1 Il file default.html.
DA NATIVI DIGITALI A INTERNAUTI CONSAPEVOLI
1 Web Design Internet Agency. 2 Web Design Internet Agency Qual è il valore aggiunto che può portare allimpresa ? Perché è fondamentale oggi avere un.
+ Checkout Linguaggio per la gestione di una cassa Progetto per lesame di Linguaggi e Modelli Computazionali LS Fabio Ferretti Anno Accademico:
Confidential & Proprietary Copyright © 2009 The Nielsen Company Piccoli e grandi a confronto MONICA MANZOTTI Responsabile Bookscan The Nielsen Company.
OUTPUT FORMATTATO La funzione printf consente di effettuare la stampa a video formattata. Sintassi: printf ( stringa_formato, arg0, arg1, … ); La stringa.
Sviluppo di una Xlet per la TV digitale terrestre Vademecum della regione marche 2006 Ventura Luca.
Tutorial relativo al Mio EBSCOhost. Benvenuti al tutorial dedicato a Mio EBSCOhost, verranno fornite le istruzioni per la configurazione e lutilizzo ottimizzato.
PON LEW Landslide Early Warning SAL III Aprile 2013 Autostrade Tech S.p.A. PON LEW Landslide Early Warning SAL III Aprile 2013 Autostrade Tech S.p.A. SISTEMI.
TAQ Identità oggetto Contenuto Modalità di uso Nome oggetto: numero
Innovazioni versione 4 Bari, 17 ottobre Innovazioni versione 4 Il menù dinamico secondo logica operativa Il ruolo dei Ruoli Facilitare la scelta.
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Andrea Barollo ARPA Lombardia - Direzione Generale
OR4 (MODELLI) NOV- FEB.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 6 ARGOMENTI: LAVORARE CON CLASSI METODI DELLISTANZA, COSTRUTTORI.
Sistema Informativo Demanio Idrico marzo Per aumentare lefficienza del servizio abbiamo realizzato un sistema in grado di gestire in modo integrato.
Internet Darshan Telinsoft Servizi Collegamento Via Internet. Inserimento del Questionario. Abilita Utenti o Gruppi compilatori. Salva e copia.
Andrea Petricca Problematiche di rete nella sperimentazione di file-system distribuiti su WAN per applicazioni di GRID-Computing Rapporto trimestrale attività
PROGETTO DI STRUMENTI PER LA CONFIGURAZIONE DI APPLICAZIONI JAVA ENTERPRISE Anno Accademico 2006 / 2007 Sessione III FACOLTÀ DI INGEGNERIA CORSO DI LAUREA.
Voting Sistema di votazione telematica. Che cosè Sito web per gestire votazioni tramite internet La sezione amministratore permette di progettare lo scenario.
Università degli Studi di Palermo Associazione SINTESI - SINergie TEcnologiche in SIcilia CRES - Centro per la Ricerca Elettronica in Sicilia Automatizzazione.
Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A.
CineMan Linguaggio per la descrizione della programmazione di cinema
Realizzazione Grammatica non contestuale –no ricorsioni sinistre –LL(1) produzione individuata dal primo token Ogni non-terminale -> funzione –rappresenta.
L4 Tecniche di Background Subtraction
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
1 Simulated multiple inheritance Sandro Pedrazzini Approfondimento Simulated multiple inheritance in Java.
Corso di Web Services A A Domenico Rosaci Patterns di E-Business D. RosaciPatterns per l'e-Business.
Pippo.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Introduction to automatic ABMs documentation Keywords: Doxygen ODD protocol MASON documentation Simone Romano.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
CORSO elementare su DATABASE Applicativo utilizzato OpenOffice 3.0.
Raccolta ed Analisi dei Requisiti nella Progettazione
Transcript della presentazione:

Linguaggio per la gestione di una videoteca e biblioteca domestica Università degli Studi di Bologna Facoltà di Ingegneria ViBiTech Linguaggio per la gestione di una videoteca e biblioteca domestica Progetto per l’esame di Linguaggi e Modelli Computazionali L-S Studente: Veronica Conti Docente: Enrico Denti Anno Accademico 2008/2009

Obiettivi del progetto Progettare un linguaggio che permetta di gestire un archivio di libri e film Realizzare un interprete per questo linguaggio che controlli gli inserimenti dell’utente e gestisca la persistenza dei dati immessi Realizzare una visualizzazione a tabelle dei dati persistenti presenti gestiti dall'applicazione 21/06/2010 ViBiTech

Linguaggio: esempio Esempio di inserimento di un nuovo libro inserisci libro { TITOLO "Yoga per negati"; AUTORE "Georg Feuerstein, Larry Payne"; EDITORE "Mondadori"; GENERE "sportivo"; COLLANA "Oscar manuali"; ANNO 2008; NRPAG 372; TRAMA "dalle posizioni all’alimentazione e molto altro"; COSTO 13.50 € ; PROVENIENZA comprato da: NOME "Veronica"; COGNOME "Conti"; NRTEL 3343211062; il: 22/02/2010; } 21/06/2010 ViBiTech

Grammatica – NON TERMINALI1 Scopo: punto di partenza per ogni interazione col sistema Scelta dell’operazione eseguire <S> ::= <ViBiTech> <ViBiTech> ::= <Inserisci> | <ApriScheda> | <Aggiorna> | <Prestito> | <Rimuovi> <Inserisci> ::= inserisci (<Libro> | <Film>) <ApriScheda> ::= apriScheda (<CercaLibro> | <CercaFilm>) <Aggiorna> ::= aggiorna (<AggiornaLibro> | <AggiornaFilm>) <Prestito> ::= prestito (<CercaLibro> | <CercaFilm>) a <SGRAF> <Persona> <DGRAF> il <SGRAF> <Data><DGRAF> <Rimuovi> ::= rimuovi ( <RimuoviPrestito> | <CercaLibro> | <CercaFilm>) 21/06/2010 ViBiTech

Grammatica – NON TERMINALI2 Inserimento di una nuova scheda Campi che qualificano una nuova scheda libro <Inserisci> ::= inserisci (<Libro> | <Film>) <Libro> ::= libro <SGRAF> TITOLO <STRINGA> <PTOVIRG> AUTORE <STRINGA> <PTOVIRG> EDITORE <STRINGA> <PTOVIRG> GENERE <STRINGA> <PTOVIRG> <CampiFacoltativiLibri> <DGRAF> Campi che qualificano una nuova scheda film <Film> ::= film <SGRAF> TITOLO <STRINGA> <PTOVIRG> REGISTA <STRINGA> <PTOVIRG> DURATA <NUM> ( \' | min ) ( . )? <PTOVIRG> GENERE <STRINGA> <PTOVIRG> <CampiFacoltativiFilm> <DGRAF> 21/06/2010 ViBiTech

Grammatica – NON TERMINALI3 Apertura di una scheda esistente Produzioni per il ritrovamento di una scheda in base al titolo <ApriScheda> ::= apriScheda (<CercaLibro> | <CercaFilm>) <CercaLibro> ::= libro <SGRAF> TITOLO <STRINGA> <PTOVIRG> <DGRAF> <CercaFilm> ::= film 21/06/2010 ViBiTech

Grammatica – NON TERMINALI4 Aggiornamento dei campi facoltativi <Aggiorna> ::= aggiorna (<AggiornaLibro> | <AggiornaFilm>) <AggiornaLibro>::= <CercaLibro> <SGRAF> <CampiFacoltativiLibro> <DGRAF> <CampiFacoltativiLibro> ::= ( COLLANA <STRINGA> <PTOVIRG> )? ( ANNO <NUM> <PTOVIRG> )? ( NRPAG <NUM> <PTOVIRG> )? ( ISBN <ISBN> <PTOVIRG> )? ( TRAMA ( <STRINGA> )+ <PTOVIRG> )? ( COPERTINA <IMGPERCORSO> <PTOVIRG> )? ( COSTO <FLOAT> ( euro | &#128 | \u20ac )? <PTOVIRG> )? ( GIUDIZIO <GIUDIZIO> <PTOVIRG> )? ( PROVENIENZA <Provenienza> )? <AggiornaFilm >::= <CercaFilm> <SGRAF> <CampiFacoltativiFilm> <DGRAF> <CampiFacoltativiFilm> ::= ( ATTORI <STRINGA> ( <VIRG> <STRINGA> )? <PTOVIRG> )? ( ANNO <NUM> <PTOVIRG> )? ( PRODUZIONE <STRINGA> <PTOVIRG> )? ( TRAMA ( <STRINGA> )+ <PTOVIRG> )? ( COPERTINA <IMGPERCORSO> <PTOVIRG> )? ( GIUDIZIO <GIUDIZIO> <PTOVIRG> )? ( <CercaLibro> )? <Provenienza> ::= ( regalato | comprato ) da <DUEPTI> <Persona> il <DUEPTI> <Data> Possibilità di associare il titolo di un libro al film 21/06/2010 ViBiTech

Grammatica – NON TERMINALI5 Gestione dei prestiti e della rimozione <Prestito> ::= prestito (<CercaLibro> | <CercaFilm>) a <SGRAF> <Persona> <DGRAF> il <SGRAF> <Data><DGRAF> <Persona> ::= NOME <STRINGA> <PTOVIRG> COGNOME <STRINGA> <PTOVIRG> ( NRTEL ( <NUM> )+ <PTOVIRG> )? <Data> ::= <NUM> <DATASEPARATOR> <NUM> <DATASEPARATOR> <NUM> <PTOVIRG> Campo facoltativo: <Persona> viene usato anche nei campi facoltativi di <Libro> <Provenienza> ::= ( regalato | comprato ) da <DUEPTI> <Persona> il <DUEPTI> <Data> <Rimuovi> ::= rimuovi ( <RimuoviPrestito> | <CercaLibro> | <CercaFilm>) <RimuoviPrestito> ::= prestito ( <CercaLibro> | <CercaFilm> ) 21/06/2010 ViBiTech

Grammatica – TOKEN Parole chiave del linguaggio: Per delimitare blocchi logici <SGRAF: "{"> <DGRAF: "}"> <PTOVIRG: ";"> <DUEPTI: ":"> <VIRG: ","> <ISBN: <NUM> "-" <NUM> "-" <NUM> "-" <NUM> "-" <NUM>> <DATASEPARATOR: "/" | "\\" | "_" | "." | "-"> <#PERCORSOFILE: (["a"-"z"] ":\\" | ["A"-"Z"] ":\\" | "..\\" | ".\\")? (<PERCORSOVALIDO> "\\")* | ("/" | "../" | "./")? (<PERCORSOVALIDO> "/")*> <#PERCORSOVALIDO: (["a"-"z","A"-"Z","0"-"9"," ","_","."])+> <IMGPERCORSO: <PERCORSOFILE> <IMGNOME>> <IMGNOME: <PERCORSOVALIDO> "." ("gif" | "GIF" | "jpg" | "JPG" | "png" | "PNG")> <GIUDIZIO: "eccellente" | "ottimo" | "buono" | "discreto" | "mediocre"> <STRINGA: "\"" <LETTER> (<LETTER>)* "\""> <#LETTER: ["a"-"z"] | ["A"-"Z"] | ["0"-"9"] | "!" | "?" | "." | "\'" | " " | ","> <FLOAT: <NUM> ("." | ",") <NUM>> <NUM: ["0"-"9"] (<CIFRA>)*> <#CIFRA: ["0"-"9"]> Per descrivere l’URL di un’immagine di copertina Per la definizione di stringhe Per la definizione di numeri 21/06/2010 ViBiTech

Considerazioni su grammatica & linguaggio1 La grammatica presenta un solo simbolo non terminale in tutte le parti sinistre delle produzioni: A→α con α∈(VT∪VN)*, A ∈VN Secondo la classificazione di Chomsky è una grammatica context-free (tipo 2) Non ha produzioni regolari Alcune produzioni prevedono parti opzionali e possono produrre ε-rules: <CampiFacoltativiLibro> <CampiFacoltativiFilm> Possibilità di eliminazione della stringa vuota tramite tecniche di riscrittura <CampiFacoltativiLibro> ::= ( COLLANA <STRINGA> <PTOVIRG> )? ( ANNO <NUM> <PTOVIRG> )? ( NRPAG <NUM> <PTOVIRG> )? ( ISBN <ISBN> <PTOVIRG> )? ( TRAMA ( <STRINGA> )+ <PTOVIRG> )? ( COPERTINA <IMGPERCORSO> <PTOVIRG> )? ( COSTO <FLOAT> ( euro | &#128 | \u20ac )?<PTOVIRG> )? ( GIUDIZIO <GIUDIZIO> <PTOVIRG> )? ( PROVENIENZA <Provenienza> )? 21/06/2010 ViBiTech

Considerazioni su grammatica & linguaggio2 Se la grammatica fosse LL(1) sarebbe sufficiente un solo simbolo per scegliere la produzione da applicare… La presenza di ε-rules fa venire a meno la condizione sufficiente per la verifica tramite StarterSymbols Calcolo dei DirectorSymbols DS(A→α) = SS(α)∪FOLLOW(A) Insiemi disgiunti Condizione necessaria e sufficiente verificata! Analisi Ricorsiva Discendente (top-down) Una funzione per ogni VN in grado di riconoscere il sottolinguaggio generato da esso Immediata costruzione del riconoscitore Il linguaggio generato è regolare (tipo 3) poiché la grammatica non contiene self-embedding 21/06/2010 ViBiTech

Architettura del sistema1 Package generato in automatico da JTB contenente interfaccia del visitor e implementazione con visita DepthFirst Effettuano l’analisi semantica visitando l’AST grazie al meccanismo del Double Dispatch. Due differenti funzioni di interpretazione… Scanner generato in automatico da JavaCC; individua i singoli token File.vbt Package generato in automatico da JTB a partire dal file di specifica della grammatica AST Parser generato in automatico da JavaCC; effettua l’analisi sintattica etc … 21/06/2010 ViBiTech

Architettura del sistema2 Analisi semantica realizzata dai Visitor ViBiTechVisitor Controllo coerenza con la base di dati esistente: In caso di: Inserimento  creazione di nuova riga nella tabella Ricerca, Aggiornamento  verifica di presenza di una scheda con Prestito, Rimozione titolo coincidente Rimozione di  eventuale effetto collaterale sui prestiti collegati Libro/Film presenti Controllo sulle date  giorno ∈ [1,31], mese ∈ [1,12] ViBiTechTreeVisitor Crea una rappresentazione dell’AST utilizzando classi del package javax.swing.tree omettendo produzioni non significative 21/06/2010 ViBiTech

Architettura del sistema3 Gestione della persistenza: Pattern DataAccessObject per accesso al DB: Il cambiamento del dispositivo di persistenza non ha impatto sui componenti di business Pattern creazionale Factory per ottenere le implementazioni concrete Implementazione: DerbyDB Logica di accesso ai dati: If stabiliscono metodi read/write Implementazione JDBC: astrazione dallo specifico DB sottostante Pattern creazionale Pattern creazionale Pattern creazionale Implementazioni in accordo allo specifico DB Logica di business 21/06/2010 ViBiTech

Architettura del sistema4 Utilities: Classi per inizializzare il DB ed effettuare controlli in fase di progettazione Classi per l’highlighting delle frasi inserite nell’interfaccia grafica Classi per la gestione di apertura e salvataggio di file in formato .vbt 21/06/2010 ViBiTech

Architettura del sistema5 Interfaccia grafica: Frame che lancia e gestisce l’applicazione Classi per la gestione delle tabelle nell’interfaccia grafica Finestra di dialogo per l’eventuale sovrascrittura in fase di salvataggio di file Frame per la gestione di informazioni sull’applicazione 21/06/2010 ViBiTech

Package GUI in azione Visualizzazione a tabelle dei dati esistenti Tasti rapidi per l’inserimento di strutture predefinite dei comandi testuali Albero rappresentante l’esecuzione di un comando Area per l’inserimento dei comandi in forma testuale Syntax highlighting Area di notifica per eventuali messaggi di errore 21/06/2010 ViBiTech

Test e collaudi Al fine di collaudare il sistema sono stati eseguiti test per verificare la correttezza delle analisi semantiche tramite opportuni file .vbt dati in input File con sintassi errata File corretti sintatticamente ma con errori di semantica Previsione di messaggi opportuni in caso di rilevazione di errori sintattici/semantici Area apposita per la visualizzazione sull’interfaccia Suite di test JUnit per verificare la correttezza delle routine DAO 21/06/2010 ViBiTech

Tecnologie Linguaggio di programmazione Ambiente di sviluppo Java 1.6.0_20 Ambiente di sviluppo NetBeans 6.8 Generazione parser e scanner JavaCC 5.0 Generazione documentazione della grammatica JJDoc Generazione APT e visitor Java Tree Builder 1.3.2 Ambiente di test JUnit 4.5 21/06/2010 ViBiTech

Limiti e caratteristiche non supportate Assenza di un effettivo collegamento fra film e libri Realizzare join fra tabelle e inserire controlli semantici in caso sia presenti il campo facoltativo ( <CercaLibro> )? La funzionalità di apertura di una scheda non produce alcun effetto grafico se non la generazione dell’APT Predisporre finestra aggiuntiva che si apra mostrando tutti i campi della scheda 21/06/2010 ViBiTech

Sviluppi futuri... Interazione con il sistema unicamente attraverso interfaccia grafica Finestre che si aprono per l’immissione e la modifica dei vari campi Supporto a diverse modalità di gestione della persistenza Arricchimento delle funzionalità fornite Possibilità di visualizzare l’immagine della copertina se inserita Liste predefinite per il completamento di alcuni campi “relativamente” standard: Autori  tabella associata nel DB Principali editori Genere, Giudizio … 21/06/2010 ViBiTech

Demo START 21/06/2010 ViBiTech