Java&Solidarieta

download Java&Solidarieta

If you can't read please download the document

Transcript of Java&Solidarieta

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