Java&Solidarieta

1,013 views

Published on

Presentation of my project at JavaDay 2009, Rome, Italy

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Java&Solidarieta

  1. 1. Java e solidarietà: il progetto Jug4Tenda Jug Marche Relatore: Andrea Del Bene www.jugancona.it
  2. 2. Java e solidarietà: il progetto Jug4Tenda Agenda <ul><li>Storia del progetto
  3. 3. Architettura
  4. 4. Processo di sviluppo
  5. 5. Riferimenti e contatti </li></ul>
  6. 6. Storia del progetto: il Jug Marche <ul><li>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... :-) ) </li></ul><ul><ul><li>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à) </li></ul></ul>
  7. 7. Storia del progetto: La tenda di Abramo (1) <ul><li>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... </li></ul><ul><li>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. </li></ul>
  8. 8. Storia del progetto: La tenda di Abramo (2) <ul><li>Tutte queste attività venivano organizzate e mantenute manualmente su formato cartaceo, con tutti i problemi del caso. </li></ul><ul><li>Francesco propone di impegnare il Jug nella realizzazione di un software per la gestione e l'automazione delle attività della Tenda. </li></ul><ul><li>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. </li></ul>
  9. 9. 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à.
  10. 10. 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”.
  11. 11. Startup del progetto <ul><li>L'avvivo del progetto è stato stabilito in un primo meeting (Ottobre 2006) tra membri del Jug e rappresentanti della Tenda </li></ul><ul><li>Il meeting è importante per: </li></ul><ul><li>Formulare un documento dei requisiti , concordato tra sviluppatori e committenti
  12. 12. Creare un dizionario di dominio comune ( es:Cos'è un Ospite? Ed un' Accoglienza? )
  13. 13. Stabilire quali tecnologie userà il gruppo di sviluppo </li></ul>
  14. 14. Scelta della piattaforma tecnica <ul><li>Il team decide di affidarsi a framework e strumenti che siano: </li></ul><ul><li>Open Source : occorre che siano gratuiti e liberi. </li></ul><ul><li>Largamente usati : è importante che siano strumenti ben documentati e con dei casi d'uso già esistenti. </li></ul><ul><li>” Interessanti” :-) :il fine del Jug è di approfondire e condividere la conoscenza di tecnologie che portino un valore aggiunto alla comunità . </li></ul><ul><li>Orientati alla buona programmazione !! </li></ul>
  15. 15. 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!!
  16. 16. Piattaforma tecnica Dopo un'attenta analisi (e qualche birra) sono state scelti i seguenti strumenti di partenza
  17. 17. Piattaforma tecnica attuale
  18. 18. Storia del progetto: timeline <ul><li>Gennaio 2008: aggiunta funzione di ricerca ospiti e restyling grafico. </li></ul><ul><li>Estate 2007: inizio trasferimento registro cartaceo nel sistema. </li></ul><ul><li>Dicembre 2008: aggiunta funzione di ricerca ospiti full-text e servizio di reportistica. </li></ul>
  19. 19. Ricerca full-text http://www.jugancona.it/vqwiki/jsp/WikiTutorialRicercaOspite
  20. 20. Generazione report http://www.jugancona.it/vqwiki/jsp/Wiki?TutorialReportAccoglienzeOdierne
  21. 21. Future implementazioni <ul><li>Gestione dei turni dei volontari (200 volontari, 7 sempre presenti in tenda) </li></ul><ul><li>Gestione dei turni del centro di ascolto </li></ul>Sul piano funzionale <ul><li>Miglioramento della reportistica </li></ul><ul><li>Invio report via mail </li></ul>Sul piano tecnico <ul><li>Integrazione con linguaggi di script... </li></ul>... ...
  22. 22. Internazionalizzazione i18n <ul><li>Gli elementi dell'interfaccia e gli elementi di localizzazione (es: formato data dd/mm/yyyy ) sono letti da un file messages.properties . </li></ul><ul><li>Anche i report fatti con Jasper leggono etichette e testo fisso da questo file! </li></ul>
  23. 23. Il processo di sviluppo: 1° fase Raccolta e pubblicazione dei requisiti
  24. 24. Raccolta dei requisiti <ul><li>I meeting sono lo strumento principale per raccogliere requisiti con il committente (”faccia a faccia”) </li></ul><ul><li>Moti feedback vengono raccolti tramite mailing list e forum </li></ul><ul><li>La user experience è sempre fondamentale per raccogliere nuove idee su migliorie o feature aggiuntive.... </li></ul>
  25. 25. Pubblicazione dei requisiti <ul><li>Alla fine del meeting si traccia una roadmap per il lavoro da fare. Questo documento viene distribuito tramite mailing list degli sviluppatori. </li></ul><ul><li>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. </li></ul>
  26. 26. Il processo di sviluppo: 2° fase Sviluppo del codice
  27. 27. Il repository cvs <ul><li>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...). </li></ul>Gli sviluppatori sono tenuti ad aggiornarsi regolarmente dal branch principale del repository in modo da lavorare sempre su una copia aggiornata del sorgente.
  28. 28. Sviluppo TDD <ul><li>Gli sviluppatori sono anche tenuti a scrivere test unitari per il codice prodotto </li></ul>I test unitari devono garantire un comportamento del codice logicamente corretto e che soddisfi i requisiti <ul><li>Il codice scritto prima di essere salvato su repository deve passare tutti i test unitari scritti. </li></ul>Non si deve essere pubblicato codice non consistente, ossia codice che non supera tutti i test unitari
  29. 29. 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!
  30. 30. Le classi di dominio <ul><li>Lo sviluppo ruota attorno alle classi di dominio che sono puri POJO </li></ul><ul><li>Dalle classi di dominio si ottengono gli altri artefatti di supporto (DAO, controller web, pagine jsp, ecc...) </li></ul><ul><li>La struttura risultante ha la tipica organizzazione a layer </li></ul>
  31. 31. Terza regola ”aurea” Nessuno strato deve dipendere da uno strato superiore,ossia più vicino alla GUI
  32. 32. Indipendenza tra layer La regola appena espressa consente di evitare i seguenti problemi architetturali: <ul><li>Non creare delle dipendenze tra oggetti a forte astrazione (classi di dominio...) e oggetti legati ad una particolare tecnologia implementativa (Spring MVC, JSP, ecc...) </li></ul><ul><li>Non creare dipendenze circolari tra classi o package. Questo tipo di legame renderebbe due entità indivisibili.
  33. 33. Cit. Juergen Hoeller http://www.infoq.com/presentations/code-organization-large-projects </li></ul>
  34. 34. Il processo di sviluppo: 3° fase Rilascio del programma
  35. 35. Deploy e branching <ul><li>Una volta realizzati i lavori pianificati, si procede al deploy del contenuto del repository </li></ul><ul><li>Contestualmente viene effettuato il branching del repository stesso (una “fotografia” del suo contenuto) </li></ul><ul><li>Il branching è necessario per avere sempre sotto mano il sorgente dell'ultima versione rilasciata, per eventuali esigenze di manutenzione, bugfixing, ecc... </li></ul>
  36. 36. Fasi di sviluppo ... ... ... Prima fase Seconda fase Terza fase Raccolta requisiti Sviluppo Sviluppo Commit Commit Branching
  37. 37. Riferimenti:forum e mailing list <ul><li>Il wiki del nostro Jug www.jugancona.it (sito www.jugmarche.it in allestimento...) </li></ul><ul><li>http://www.jugancona.it/mailman/listinfo/juganconanews :la mailing list per poter usare il forum e ricevere le news dello Jug </li></ul><ul><li>Il sito Sun https://jugancona.dev.java.net/ che ospita il progetto, il suo repository cvs e il forum. </li></ul><ul><li>http://groups.google.com/group/jug4tendadev : la mailing list Google dedicata agli sviluppatori del progetto Jug4Tenda </li></ul>
  38. 38. Riferimenti
  39. 39. Riferimenti:pagina del progetto <ul><li>http://www.jugancona.it/vqwiki/jsp/Wiki?Jug4Tenda </li></ul>
  40. 40. <ul><li>Storia della Tenda
  41. 41. Requisiti del progetto
  42. 42. Documentazione per l'installazione e architettura
  43. 43. Demo flash del programma ”in azione”
  44. 44. Costantemente aggiornata ed arricchita di contenuti
  45. 45. ... </li></ul>Riferimenti:pagina del progetto
  46. 46. Riferimenti: tutorial Spring <ul><li>Per chi fosse ”a digiuno” di Spring c'è un ottimo tutorial (:-)) sul nostro sito: </li></ul>http://www.jugancona.it/vqwiki/jsp/Wiki?Tutorial
  47. 47. Contatti <ul><li>https://jugancona.dev.java.net/servlets/ProjectForumView forum del progetto (previa iscrizione)
  48. 48. [email_address] mailing list di sviluppo .
  49. 49. [email_address] Mail dell'autore di questa guida (Andrea Del Bene) che è presente anche su Facebook per coloro che vogliano interagire usando questo network. </li></ul>
  50. 50. Architettura Web container (Tomcat) Spring framework Database MySql AOP DI Bean Lifecycle manager Classi Utility Spring MVC ... Spring taglib DisplayTag lib Format taglib Web browser

×