Java e solidariet: il progetto Jug4Tenda
Jug MarcheRelatore: Andrea Del Bene
www.jugancona.it
Java e solidariet: il progetto Jug4Tenda
AgendaStoria del progetto
Architettura
Processo di sviluppo
Riferimenti e contatti
Storia del progetto: il Jug Marche
Nell'estate del 2006 Francesco Paladino (Falconara, AN) decide di avviare la fondazione di un Jug (Java User Group) regionale come punto di riferimento per gli appassionati di Java delle Marche (ma non solo... :-) )
Francesco anche volontario di una casa di accoglienza per persone senza fissa dimora chiamata La Tenda di Abramo (d'ora in poi solo Tenda per brevit)
Storia del progetto: La tenda di Abramo (1)
L'attivit quotidiana della Tenda composta da vari compiti: registrare l'arrivo/partenza degli ospiti, comunicare le nuove accoglienze alla questura, organizzare i turni dei volontari, ecc...
La Tenda offre anche un servizio di supporto agli ospiti per la ricerca di una soluzione abitativa e/o un lavoro. Tale servizio realizzato mediante un gruppo di ascolto composto da alcuni volontari.
Storia del progetto: La tenda di Abramo (2)
Tutte queste attivit venivano organizzate e mantenute
manualmente su formato cartaceo, con tutti i problemi del
caso.
Francesco propone di impegnare il Jug nella realizzazione di un software per la gestione e l'automazione delle attivit della Tenda.
Il progetto anche un'occasione per tutto il Jug di esplorare lo stato dell'arte delle tecnologie JEE e per espandere le proprie competenze professionali.
Finalit pratica del progetto
Aiutare la Tenda: ogni software che si rispetti deve far felice il suo committente:-)... La tenda tramite il progetto deve rendere pi efficien -te le sue attivit, risparmiare tempo, migliorare il suo servizio, ecc...
In futuro altri enti benefici simili alla tenda potrebbero adottare il software per la loro attivit.
Finalit tecnica del progetto
Essere un libero laboratorio tecnico: il progetto un continuo laboratorio di idee a cui tutti possono partecipare. E' un'occasione per provare ed imparare ad usare i framework e le applicazioni pi popolari nel mondo JEE (Hibernate, Spring, Tomcat, ecc...)
Alla base del progetto c' la convinzione che usando gli strumenti open source offerti oggi da Java si possano ottenere prodotto di alta qualit, per molti aspetti persino migliori di soluzioni commerciali chiuse.
Startup del progetto
L'avvivo del progetto stato stabilito in un primo meeting (Ottobre 2006) tra membri del Jug e rappresentanti della Tenda
Il meeting importante per:
Formulare un documento dei requisiti, concordato tra sviluppatori e committenti
Creare un dizionario di dominio comune (es:Cos' un Ospite? Ed un' Accoglienza?)
Stabilire quali tecnologie user il gruppo di sviluppo
Scelta della piattaforma tecnica
Il team decide di affidarsi a framework e strumenti che siano:
Open Source: occorre che siano gratuiti e liberi.
Largamente usati: importante che siano strumenti ben documentati e con dei casi d'uso gi esistenti.
Interessanti :-) :il fine del Jug di approfondire e condividere la conoscenza di tecnologie che portino un valore aggiunto alla comunit.
Orientati alla buona programmazione!!
Prima regola aurea
La prima regola che si apprende in questa fase :
Non reinventare la ruota!! Su Internet quasi sicuramente c' un framework che fa quello che desideri meglio di quanto pensi!!
Piattaforma tecnica
Dopo un'attenta analisi (e qualche birra) sono state scelti i seguenti strumenti di partenza
Piattaforma tecnica attuale
Storia del progetto: timeline
Gennaio 2008: aggiunta funzione di ricerca ospiti e restyling grafico.
Estate 2007: inizio trasferimento registro cartaceo nel sistema.
Dicembre 2008: aggiunta funzione di ricerca ospiti full-text e servizio di reportistica.
Ricerca full-text
http://www.jugancona.it/vqwiki/jsp/WikiTutorialRicercaOspite
Generazione report
http://www.jugancona.it/vqwiki/jsp/Wiki?TutorialReportAccoglienzeOdierne
Future implementazioni
Gestione dei turni dei volontari (200 volontari, 7 sempre presenti in tenda)
Gestione dei turni del centro di ascolto
Sul piano funzionale
Miglioramento della reportistica
Invio report via mail
Sul piano tecnico
Integrazione con linguaggi di script...
...
...
Internazionalizzazione i18n
Gli elementi dell'interfaccia e gli elementi di localizzazione (es: formato data dd/mm/yyyy) sono letti da un file messages.properties.
Anche i report fatti con Jasper leggono etichette e testo fisso da questo file!
Il processo di sviluppo: 1 fase
Raccolta e pubblicazione dei requisiti
Raccolta dei requisiti
I meeting sono lo strumento principale per raccogliere requisiti con il committente (faccia a faccia)
Moti feedback vengono raccolti tramite mailing list e forum
La user experience sempre fondamentale per raccogliere nuove idee su migliorie o feature aggiuntive....
Pubblicazione dei requisiti
Alla fine del meeting si traccia una roadmap per il lavoro da fare. Questo documento viene distribuito tramite mailing list degli sviluppatori.
I task che compongono la road map vengono inseriti nell'issue tracker sul sito del progetto (https://jugancona.dev.java.net). Gli avanzamenti dei singoli task vengono notificati al team dall'issue tracker.
Il processo di sviluppo: 2 fase
Sviluppo del codice
Il repository cvs
Lo sviluppo si avvale di un repository cvs (sempre sul sito Sun) tramite il quale vengono condivisi i vari artefatti prodotti dagli sviluppatori (file java, pagine jsp, file sql, ecc...).
Gli sviluppatori sono tenuti ad aggiornarsi regolarmente dal branch principale del repository in modo da lavorare sempre su una copia aggiornata del sorgente.
Sviluppo TDD
Gli sviluppatori sono anche tenuti a scrivere test unitari per il codice prodotto
I test unitari devono garantire un comportamento del codice logicamente corretto e che soddisfi i requisiti
Il codice scritto prima di essere salvato su repository deve passare tutti i test unitari scritti.
Non si deve essere pubblicato codice non consistente, ossia codice che non supera tutti i test unitari
Seconda regola aurea
Una regola, o meglio un effetto che deriva da una buona TDD :
Il debugger deve essere usato il meno possibile, quasi MAI!
Le classi di dominio
Lo sviluppo ruota attorno alle classi di dominio che sono puri POJO
Dalle classi di dominio si ottengono gli altri artefatti di supporto (DAO, controller web, pagine jsp, ecc...)
La struttura risultante ha la tipica organizzazione a layer
Terza regola aurea
Nessuno strato deve dipendere da uno strato superiore,ossia pi vicino alla GUI
Indipendenza tra layer
La regola appena espressa consente di evitare i seguenti problemi architetturali:
Non creare delle dipendenze tra oggetti a forte astrazione (classi di dominio...) e oggetti legati ad una particolare tecnologia implementativa (Spring MVC, JSP, ecc...)
Non creare dipendenze circolari tra classi o package. Questo tipo di legame renderebbe due entit indivisibili.Cit. Juergen Hoeller http://www.infoq.com/presentations/code-organization-large-projects
Il processo di sviluppo: 3 fase
Rilascio del programma
Deploy e branching
Una volta realizzati i lavori pianificati, si procede al deploy del contenuto del repository
Contestualmente viene effettuato il branching del repository stesso (una fotografia del suo contenuto)
Il branching necessario per avere sempre sotto mano il sorgente dell'ultima versione rilasciata, per eventuali esigenze di manutenzione, bugfixing, ecc...
Fasi di sviluppo
Raccolta requisiti
Sviluppo
Sviluppo
...
...
...
CommitCommit
Branching
Prima fase
Seconda fase
Terza fase
Riferimenti:forum e mailing list
Il wiki del nostro Jug www.jugancona.it (sito www.jugmarche.it in allestimento...)
http://www.jugancona.it/mailman/listinfo/juganconanews:la mailing list per poter usare il forum e ricevere le news dello Jug
Il sito Sun https://jugancona.dev.java.net/ che ospita il progetto, il suo repository cvs e il forum.
http://groups.google.com/group/jug4tendadev: la mailing list Google dedicata agli sviluppatori del progetto Jug4Tenda
Riferimenti
Riferimenti:pagina del progetto
http://www.jugancona.it/vqwiki/jsp/Wiki?Jug4Tenda
Storia della Tenda
Requisiti del progetto
Documentazione per l'installazione e architettura
Demo flash del programma in azione
Costantemente aggiornata ed arricchita di contenuti
...
Riferimenti:pagina del progetto
Riferimenti: tutorial Spring
Per chi fosse a digiuno di Spring c' un ottimo tutorial (:-)) sul nostro sito:
http://www.jugancona.it/vqwiki/jsp/Wiki?Tutorial
Contatti
https://jugancona.dev.java.net/servlets/ProjectForumViewforum del progetto (previa iscrizione)
[email protected] mailing list di sviluppo .
[email protected] Mail dell'autore di questa guida (Andrea Del Bene) che presente anche su Facebook per coloro che vogliano interagire usando questo network.
Architettura
Web container (Tomcat)
Hibernate/JDBC driverCompass/Lucene
Database
MySql
Hibernate integ.Compass integ.Data connectionDAO con servizi dichiarativi (transazione,ecc...)AOPDIBean Lifecycle managerClassi Utility Spring MVC...Componenti Spring MVC custom
Spring taglibDisplayTag libFormat taglibSpring framework
Web browser
Titolo della slide
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level
Andrea Del Bene - [email protected] Jug MarcheJavaday Roma III Edizione 24 gennaio 2009
Top Related