Your SlideShare is downloading. ×
0
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
MyJOrganizer presentazione
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MyJOrganizer presentazione

411

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
411
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Introduzione Analisi e progettazione Implementazione e test Conclusioni MyJOrganizer uno strumento per la gestione della propria task list Davide Bellettini Progetto di Linguaggi e Modelli Computazionali M 11 novembre 2010 Davide Bellettini MyJOrganizer - strumento di gestione task list 1 / 23
  2. Introduzione Analisi e progettazione Implementazione e test Conclusioni Outline 1 Introduzione 2 Analisi e progettazione Analisi Il linguaggio Architettura 3 Implementazione e test Screenshot Test 4 Conclusioni Limiti Sviluppi futuri Davide Bellettini MyJOrganizer - strumento di gestione task list 2 / 23
  3. Introduzione Analisi e progettazione Implementazione e test Conclusioni Introduzione Obiettivi del progetto: definire un linguaggio che preveda comandi per la manipolazione di una lista di task, permettendo l’inserimento, la modifica e la cancellazione di elementi; realizzare un’interprete per questo linguaggio; creare un’applicazione desktop (Java/Swing) che fornisca pi`u viste grafiche dei dati, per evidenziare i differenti aspetti di interesse; eseguire comandi leggendoli da standard input o da file; esportare il contenuto della lista come elenco di comandi; rendere la lista persistente. Davide Bellettini MyJOrganizer - strumento di gestione task list 3 / 23
  4. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Analisi 1/2 Nell’analisi le entit`a significative che sono emerse sono le seguenti: Task: `e l’entit`a principale dell’applicazione, rappresenta un compito da eseguire; TaskPriority: rappresenta la priorit`a di un task in termini di urgenza e importanza; TaskStatus: rappresenta lo stato di lavorazione del task (aperto, chiuso, annullato, posticipato ecc.); TaskDependency: rappresenta la dipendenza di sequenza tra due task (es. “sollevare l’auto con il cric” prima di “smontare la ruota”). Davide Bellettini MyJOrganizer - strumento di gestione task list 4 / 23
  5. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Analisi 2/2 Davide Bellettini MyJOrganizer - strumento di gestione task list 5 / 23
  6. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Il linguaggio Una tipica frase di inserimento task: insert task esameLinguaggi: title: "Linguaggi e Modelli Computazionali M" description: "Teoria + Progetto" completion: 90% urgent: false important: true status: "open" startdate: 2010-09-01 duedate: 2010-11-10 dependencies: before esameSicurezza end dependencies end task Davide Bellettini MyJOrganizer - strumento di gestione task list 6 / 23
  7. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Il linguaggio Per indicare al sistema che si `e completato un task (impostando il completamento al 100% e lo stato su “closed”): done task esameLinguaggi In alternativa: update task esameLinguaggi: set status: "closed" set completion: 100% end update Per eliminare un task: delete task esameLinguaggi Davide Bellettini MyJOrganizer - strumento di gestione task list 7 / 23
  8. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Grammatica Simboli non terminali 1/3 TaskCommands ::= ( TaskCommand )+ TaskCommand ::= ( TaskInsertCommand | TaskUpdateCommand | TaskDeleteCommand | TaskDoneCommand ) TaskInsertCommand ::= <INSERT> TaskDefinition TaskUpdateCommand ::= <UPDATE> <TASK> <IDENTIFIER> <COLON> ( UpdateField )+ <END> <UPDATE> TaskDeleteCommand ::= <DELETE> <TASK> <IDENTIFIER> TaskDoneCommand ::= <DONE> <TASK> <IDENTIFIER> TaskDefinition ::= <TASK> <IDENTIFIER> <COLON> TaskTitle ( OptionalField )* <END> <TASK> OptionalField ::= ( TaskDescription | TaskCompletion | TaskUrgency | TaskImportance | TaskStatus | TaskStartDate | TaskDueDate | DependencyList ) Davide Bellettini MyJOrganizer - strumento di gestione task list 8 / 23
  9. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Grammatica Simboli non terminali 2/3 TaskTitle ::= <TITLE> <COLON> <STRING LITERAL> TaskDescription ::= <DESCRIPTION> <COLON> ( ( <STRING LITERAL> | <NULL> ) ) TaskCompletion ::= <COMPLETION> <COLON> <INTEGER LITERAL> <PERCENT> TaskUrgency ::= <URGENT> <COLON> <BOOL LITERAL> TaskImportance ::= <IMPORTANT> <COLON> <BOOL LITERAL> TaskStartDate ::= <STARTDATE> <COLON> ( ( <DATE LITERAL> | <NULL> ) ) TaskDueDate ::= <DUEDATE> <COLON> ( ( <DATE LITERAL> | <NULL> ) ) TaskStatus ::= <STATUS> <COLON> <STRING LITERAL> DependencyList ::= <DEPENDENCIES> <COLON> ( DependencyDefinition )+ <END> <DEPENDENCIES> Davide Bellettini MyJOrganizer - strumento di gestione task list 9 / 23
  10. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Grammatica Simboli non terminali 3/3 DependencyDefinition ::= ( ( <BEFORE> | <AFTER> ) ) <IDENTIFIER> UpdateField ::= ( <SET> EditableField | DependencyAdd | DependencyDelete ) EditableField ::= ( TaskTitle | TaskCompletion | TaskUrgency | TaskImportance | TaskStatus | TaskStartDate | TaskDueDate ) DependencyAdd ::= <ADD> <DEPENDENCY> DependencyDefinition DependencyDelete ::= <DELETE> <DEPENDENCY> DependencyDefinition Per l’elenco dei token si rimanda alla documentazione completa della grammatica. Davide Bellettini MyJOrganizer - strumento di gestione task list 10 / 23
  11. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Grammatica Considerazioni: la grammatica `e di tipo 2 (context-free), in particolare LL(1); `e possibile utilizzare strumenti automatici per la generazione del parser (es. JavaCC); non presenta self-embedding; il linguaggio prodotto `e quindi di tipo 3 (regolare); sarebbe possibile definire una grammatica lineare equivalente, che risulterebbe tuttavia meno comprensibile. Davide Bellettini MyJOrganizer - strumento di gestione task list 11 / 23
  12. Introduzione Analisi e progettazione Implementazione e test Conclusioni Analisi Il linguaggio Architettura Architettura Durante la progettazione sono state operate alcune scelte architetturali: per la generazione del parser e dell’AST sono stati utilizzati JavaCC e JTB (mediante un plug-in per Maven); implementazione secondo il pattern Model-View-Controller; largo utilizzo di tecnologie standard Java: JPA (Java Persistence API) per la persistenza dei dati; JSR 303 (Bean Validation) per la validazione dei dati; JSR 296 (Swing Application Framework) per la GUI; MessageBundle per l’internazionalizzazione. thread dedicato alla lettura dei comandi da console (adottando TaskCommand come scopo e reinizializzando il parser dopo ogni comando); Davide Bellettini MyJOrganizer - strumento di gestione task list 12 / 23
  13. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 1/8 Vista sorgente (anteprima esportazione) Davide Bellettini MyJOrganizer - strumento di gestione task list 13 / 23
  14. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 2/8 Vista elenco tabellare Davide Bellettini MyJOrganizer - strumento di gestione task list 14 / 23
  15. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 3/8 Vista ad albero Davide Bellettini MyJOrganizer - strumento di gestione task list 15 / 23
  16. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 4/8 Vista organizzata per priorit`a Davide Bellettini MyJOrganizer - strumento di gestione task list 16 / 23
  17. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 5/8 Statistiche: completamento Davide Bellettini MyJOrganizer - strumento di gestione task list 17 / 23
  18. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 6/8 Statistiche: priorit`a Davide Bellettini MyJOrganizer - strumento di gestione task list 18 / 23
  19. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 7/8 Creazione di un nuovo task Davide Bellettini MyJOrganizer - strumento di gestione task list 19 / 23
  20. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Screenshot 8/8 Interazione da shell Davide Bellettini MyJOrganizer - strumento di gestione task list 20 / 23
  21. Introduzione Analisi e progettazione Implementazione e test Conclusioni Screenshot Test Test Le varie parti dell’applicazione sono state testate adottando approcci differenti: Per le entit`a principali (Task, TaskPriority, TaskStatus, TaskDependency) si `e adottato un approccio test-first, automatizzando i test con l’ausilio di JUnit; Per quanto riguarda l’interprete s`ı preferito testare l’applicazione manualmente: inserendo comandi da console; leggendo i comandi da file (`e possibile automatizzare questo tipo di test); Il comportamento dell’interfaccia grafica `e stato anch’esso testato manualmente. Davide Bellettini MyJOrganizer - strumento di gestione task list 21 / 23
  22. Introduzione Analisi e progettazione Implementazione e test Conclusioni Limiti Sviluppi futuri Limiti Il progetto allo stato attuale presenta i seguenti limiti: l’interfaccia grafica `e adatta pi`u per la visualizzazione che per la manipolazione della lista; il sistema `e pensato per un uso individuale, non conosce il concetto di gruppo di lavoro; non sono presenti meccanismi di sincronizzazione tra pi`u postazioni. Davide Bellettini MyJOrganizer - strumento di gestione task list 22 / 23
  23. Introduzione Analisi e progettazione Implementazione e test Conclusioni Limiti Sviluppi futuri Sviluppi futuri Si individuano come possibili sviluppi futuri: migliorie dell’interfaccia grafica: drag & drop; menu contestuali; editor in linea; console integrata; estensione del linguaggio per aggiungere il concetto di gruppo di lavoro; sincronizzazione con servizi di terze parti (es. Google Tasks, Toodledo ecc.); statistiche pi`u elaborate; porting su altre piattaforme (J2ME, Eclipse RCP). Davide Bellettini MyJOrganizer - strumento di gestione task list 23 / 23

×