Lavorare con applicazioni Brownfieldil caso di 39x27.com<br />5° UGIALT.NET Conference – Milano<br />23 Gennaio 2010<br />...
Chi siamo<br />Simone Chiaretta<br />Lavora per Avanade Italy<br />Microsoft MVP ASP.NET e ASP Insider<br />Blogger – http...
Cos’è 39x27.com<br />Archivio di salite in bicicletta, con altimetrie e tempi<br />Inventato da Davide<br />Rilasciata sul...
Agenda<br />Cos’è un applicazione “BrownField”<br />Da dove parto?<br />I problemi dell’ambiente di sviluppo<br />I proble...
Cos’è un’applicazione BrownField<br />
Definizione di BrownField<br />Brown Field è l’opposto di Green Field<br />aka progetti Legacy<br />o, come dicono alcuni:...
Da dove partire?<br />I passi iniziali<br />
E’ tutto da rifare<br />Codice sorgente versionato in folder *_data<br />Lista dei bugs su file excel<br />Classi di 10k r...
Piano d’attacco<br />Source Control, Issue Tracking, Build Automation<br />Codice base (DAL, Domain Model, ecc...)<br />Co...
L’ambiente di sviluppo<br />I Problemi dell’ambiente di sviluppo<br />
Version Control System<br />Se siamo veramente sfortunati<br />step 1: configurare un SVN, TFS, Git, ...<br />Se siamo più...
Get and compile experience<br />Obiettivo 2:<br />poter fare get latest e compilare su una macchina “vergine” senza acroba...
Riorganizzare alberatura<br />Mettere tutte le dipendenze sotto VCS<br />No GAC-Hell<br />Sistemare le referenze di proget...
Automatizzare la build<br />Con o senza CI, la build deve andare da sola<br />MSBuild<br />NAnt<br />Continuos Integration...
Chi ha scritto questo codice?<br />I problemi del codice<br />
Analizzare il codice<br />Capire tramite metriche lo stato del codice<br />Usare le metriche per identificare le zone crit...
Riorganizzare la solution<br />Avere vari progetti per i vari layer<br />Repositories<br />Services<br />DomainModel<br />...
Break dependencies, be SOLID<br />Rompi le dipendenze!!<br />Come farlo:<br />Scegli un componente<br />Imposta test funzi...
Demo<br />39x27.com: prima e a metà della cura<br />
Un po’ di UI pattern<br />I problemi della UI<br />
Miglioriamo la UI<br />Anche la UI ha la stessa dignità del data access<br />Pattern MVP/MVC/MVVM per isolare meglio UI da...
Tutto bello, ma...<br />I problemi di attuazione<br />
I problemi più comuni del refactoring<br />Fare di tutto un po’<br />Refactoring o nuove features?<br />
E ora?<br />Cosa fare una volta che siamo tornati VERDI<br />
Come rimanere verdi?<br />Evitare le iterazioni di refactoring<br />Cercare di mantenere alta la qualità<br />Manutenere g...
Get the book<br />Brownfield Application Development in .NET<br />Kyle Baley and Donald Belcham<br />Aprile 2010<br />http...
Contatti – Simone Chiaretta<br />MSN: simone_ch@hotmail.com<br />Blog:<br />English: http://codeclimber.net.nz/<br />Itali...
Contatti – Davide Vosti<br />Skype: davide.vosti<br />Blog: http://vosti.posterous.com/<br />Twitter: @vosti<br />27<br />
Q&A<br />28<br />
Upcoming SlideShare
Loading in …5
×

Lavorare con applicazioni Brownfield: il caso di 39x27.com

1,301 views
1,248 views

Published on

La maggior parte dei progetti software sono progetti legacy. Anche progetti nuovi possono essere considerati legacy se non pensati correttamente. In questa sessione vedremo gli step per portare un progetto legacy verso un progetto facile da manutenere, testare ed estendere.
E lo faremo usando come caso reale 39x27.com, un sito per il tracking di salite in bicicletta.

Slide della presentazione tenuta il 23 Gennaio 2010 alla 5° UGIALT.NET Conference.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,301
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Lavorare con applicazioni Brownfield: il caso di 39x27.com

  1. 1. Lavorare con applicazioni Brownfieldil caso di 39x27.com<br />5° UGIALT.NET Conference – Milano<br />23 Gennaio 2010<br />Simone ChiarettaSolution Developer, Avanade<br />@simonech<br />http://codeclimber.net.nz<br />Davide VostiTeam Lead, YEK SA<br />@vosti<br />http://vosti.posterous.com/<br />
  2. 2. Chi siamo<br />Simone Chiaretta<br />Lavora per Avanade Italy<br />Microsoft MVP ASP.NET e ASP Insider<br />Blogger – http://codeclimber.net.nz<br />Co-fondatore di UGIALT.NET<br />Climber<br />Davide Vosti<br />Team Lead di YEK SA<br />Owner di http://39x27.com<br />Ciclista, podista, parapendista<br />
  3. 3. Cos’è 39x27.com<br />Archivio di salite in bicicletta, con altimetrie e tempi<br />Inventato da Davide<br />Rilasciata sulle preview di ASP.NET MVC 1.0 nel 2008<br />Speriamo di rilasciarla come opensource e come esempio di applicazione completa in ASP.NET MVC<br />Team:<br />Davide Vosti<br />Simone Chiaretta<br />Daniela Panfili - UX<br />
  4. 4. Agenda<br />Cos’è un applicazione “BrownField”<br />Da dove parto?<br />I problemi dell’ambiente di sviluppo<br />I problemi del codice<br />I problemi della UI<br />Problemi di attuazione<br />E dopo?<br />
  5. 5. Cos’è un’applicazione BrownField<br />
  6. 6. Definizione di BrownField<br />Brown Field è l’opposto di Green Field<br />aka progetti Legacy<br />o, come dicono alcuni:<br />“Applicazione non pensata per essere testabile”<br />Tutti i progetti non nuovi sono brownfield<br />Tutte le applicazioni tendono naturalmente a diventare brownfield<br />
  7. 7. Da dove partire?<br />I passi iniziali<br />
  8. 8. E’ tutto da rifare<br />Codice sorgente versionato in folder *_data<br />Lista dei bugs su file excel<br />Classi di 10k righe<br />Metodi con indice di mantenibilità &lt;10<br />Elevatissimo accoppiamento tra i livelli (sempre se ci sono)<br />1000 step manuali per compilare per la prima volta<br />200 step manuali per produrre una release “deployabile”<br />Tutto in un unico progetto<br />
  9. 9. Piano d’attacco<br />Source Control, Issue Tracking, Build Automation<br />Codice base (DAL, Domain Model, ecc...)<br />Codice di UI layer<br />
  10. 10. L’ambiente di sviluppo<br />I Problemi dell’ambiente di sviluppo<br />
  11. 11. Version Control System<br />Se siamo veramente sfortunati<br />step 1: configurare un SVN, TFS, Git, ...<br />Se siamo più fortunati:<br />Sistemare il repository<br />Rimuovere folder Obj, Bin, .user, ecc...<br />svn-ignore FTW!!<br />
  12. 12. Get and compile experience<br />Obiettivo 2:<br />poter fare get latest e compilare su una macchina “vergine” senza acrobazie<br />
  13. 13. Riorganizzare alberatura<br />Mettere tutte le dipendenze sotto VCS<br />No GAC-Hell<br />Sistemare le referenze di progetto<br />Inserire anche eventuali tool necessari:<br />TestRunner<br />Profilers<br />Build Tools<br />
  14. 14. Automatizzare la build<br />Con o senza CI, la build deve andare da sola<br />MSBuild<br />NAnt<br />Continuos Integration se team è sopra le 2-3 persone<br />TFS<br />TeamCity<br />CC.NET<br />Hudson<br />
  15. 15. Chi ha scritto questo codice?<br />I problemi del codice<br />
  16. 16. Analizzare il codice<br />Capire tramite metriche lo stato del codice<br />Usare le metriche per identificare le zone critiche<br />Farci aiutare dai tool come R# per ripulire il codice<br />
  17. 17. Riorganizzare la solution<br />Avere vari progetti per i vari layer<br />Repositories<br />Services<br />DomainModel<br />Codice “infrastrutturale”<br />UI<br />Test<br />
  18. 18. Break dependencies, be SOLID<br />Rompi le dipendenze!!<br />Come farlo:<br />Scegli un componente<br />Imposta test funzionale (automatico o manuale)<br />Rimuovi le sue dipendenze<br />Testalo senza le dipendenze<br />Ripeti con un’altro componente<br />Non gestire le dipendenza a mano, usa un IoC Container<br />
  19. 19. Demo<br />39x27.com: prima e a metà della cura<br />
  20. 20. Un po’ di UI pattern<br />I problemi della UI<br />
  21. 21. Miglioriamo la UI<br />Anche la UI ha la stessa dignità del data access<br />Pattern MVP/MVC/MVVM per isolare meglio UI da strato sottostante<br />Se web application, dobbiamo considerare anche HTML, CSS e Javascript<br />
  22. 22. Tutto bello, ma...<br />I problemi di attuazione<br />
  23. 23. I problemi più comuni del refactoring<br />Fare di tutto un po’<br />Refactoring o nuove features?<br />
  24. 24. E ora?<br />Cosa fare una volta che siamo tornati VERDI<br />
  25. 25. Come rimanere verdi?<br />Evitare le iterazioni di refactoring<br />Cercare di mantenere alta la qualità<br />Manutenere gli ambienti di CI, Build e testing<br />
  26. 26. Get the book<br />Brownfield Application Development in .NET<br />Kyle Baley and Donald Belcham<br />Aprile 2010<br />http://www.manning.com/baley/<br />4 copie in omaggio questa sera<br />
  27. 27. Contatti – Simone Chiaretta<br />MSN: simone_ch@hotmail.com<br />Blog:<br />English: http://codeclimber.net.nz/<br />Italiano: http://blogs.ugidotnet.org/piyo/<br />Twitter: @simonech<br />26<br />
  28. 28. Contatti – Davide Vosti<br />Skype: davide.vosti<br />Blog: http://vosti.posterous.com/<br />Twitter: @vosti<br />27<br />
  29. 29. Q&A<br />28<br />

×