SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Destaque

Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)Davide Bellettini
 
Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012Davide Bellettini
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebDavide Bellettini
 
Microsoft dynamics crm in healthcare
Microsoft dynamics crm in healthcareMicrosoft dynamics crm in healthcare
Microsoft dynamics crm in healthcareramoncelorio
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick reviewCe.Se.N.A. Security
 
Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010adrianorehder
 
Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011adrianorehder
 
CQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPCQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPDavide Bellettini
 

Destaque (12)

SELinux - overview
SELinux - overviewSELinux - overview
SELinux - overview
 
Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)
 
Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni Web
 
Microsoft dynamics crm in healthcare
Microsoft dynamics crm in healthcareMicrosoft dynamics crm in healthcare
Microsoft dynamics crm in healthcare
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
 
pugBO #10 PSR e Composer
pugBO #10 PSR e ComposerpugBO #10 PSR e Composer
pugBO #10 PSR e Composer
 
Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010
 
Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011
 
Ncp
NcpNcp
Ncp
 
CQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPCQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHP
 
Presentazione UniversiBO
Presentazione UniversiBOPresentazione UniversiBO
Presentazione UniversiBO
 

Semelhante a MyJOrganizer presentazione

Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSergio Santoro
 
Regione Labict Presentazione Wm Cw 20080512 V02
Regione Labict Presentazione Wm Cw 20080512 V02Regione Labict Presentazione Wm Cw 20080512 V02
Regione Labict Presentazione Wm Cw 20080512 V02Gian Luca Matteucci
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
 
Laboratorio internet 6: Piano di qualità
Laboratorio internet 6: Piano di qualitàLaboratorio internet 6: Piano di qualità
Laboratorio internet 6: Piano di qualitàRoberto Polillo
 
Studio e sviluppo di un’interfaccia per applicazione WEB 2.0
Studio e sviluppo di un’interfaccia per applicazione WEB 2.0Studio e sviluppo di un’interfaccia per applicazione WEB 2.0
Studio e sviluppo di un’interfaccia per applicazione WEB 2.0NobelMusic
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfFlorence Consulting
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Lezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del softwareLezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del softwareGiuseppe Cramarossa
 
Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014Paradisi63
 
Test Prestazionali di Web Service
Test Prestazionali di Web ServiceTest Prestazionali di Web Service
Test Prestazionali di Web ServiceDaniele Palladino
 

Semelhante a MyJOrganizer presentazione (20)

Tesi di Laurea
Tesi di LaureaTesi di Laurea
Tesi di Laurea
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven Development
 
Regione Labict Presentazione Wm Cw 20080512 V02
Regione Labict Presentazione Wm Cw 20080512 V02Regione Labict Presentazione Wm Cw 20080512 V02
Regione Labict Presentazione Wm Cw 20080512 V02
 
Total Testing in DevOps
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOps
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
Unit testing 101
Unit testing 101Unit testing 101
Unit testing 101
 
Testing
TestingTesting
Testing
 
Laboratorio internet 6: Piano di qualità
Laboratorio internet 6: Piano di qualitàLaboratorio internet 6: Piano di qualità
Laboratorio internet 6: Piano di qualità
 
Studio e sviluppo di un’interfaccia per applicazione WEB 2.0
Studio e sviluppo di un’interfaccia per applicazione WEB 2.0Studio e sviluppo di un’interfaccia per applicazione WEB 2.0
Studio e sviluppo di un’interfaccia per applicazione WEB 2.0
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
3DD 1e Reconfig
3DD 1e Reconfig3DD 1e Reconfig
3DD 1e Reconfig
 
LucianoZu_CV
LucianoZu_CVLucianoZu_CV
LucianoZu_CV
 
Relazione Agic
Relazione AgicRelazione Agic
Relazione Agic
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Lezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del softwareLezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del software
 
Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014
 
Test Prestazionali di Web Service
Test Prestazionali di Web ServiceTest Prestazionali di Web Service
Test Prestazionali di Web Service
 

MyJOrganizer presentazione

  • 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