Agile Development con Ruby

11

Click here to load reader

Transcript of Agile Development con Ruby

Page 1: Agile Development con Ruby

Agile DevelopmentAgile DevelopmentDalla filosofia alla produzione Dalla filosofia alla produzione aziendale.aziendale.

Relatore: Giovanni MazzaRelatore: Giovanni MazzaProduct Manager – Hgo informatcaProduct Manager – Hgo informatca

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Page 2: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Page 3: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Obiettivi

Soddisfare in pieno il clienteRispettare il contratto e... lasciarsi con un sorriso!

Abbattere i costi di sviluppoPerché spendere 100 se possiamo fare meglio spendendo 1?

Reagire velocemente alle richieste del mercatoNon dire mai di NO! Ad un cliente.

Page 4: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Principi

Iterazione tra gli attoriDivisione dei compiti in team

Un software funzionante vale più di 1000 fogliAlta collaborazione tra clienti e sviluppatori. Un software a misura di cliente è un software migliore!

Reattività nel soddisfare le richieste dei clientepersonalizzazioni e modifiche

Page 5: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

I mezzi

Parola d'ordine: Framework!Php: Selfmade FrameworkRuby: Rails!

Php SelfMadeFramework Ruby on Rails

ProSupporto Ajax (selfmade)Servizi CRUDConnettività DB centralizzataAttivazione RapidaFacilità di installazione e personalizzazioneUNO per tutto e tutto con UNO!

ProSupporto Ajax (Prototype e Scriptacoulus)Rapidità di sviluppoPlugin – Engine - Componenti

ControTempi lunghi di sviluppo inizialeNecessità di ammortare i costi

ControMeccanismo di centralizzazione difficileDeployment e aggiornamenti più complicati

Page 6: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Plugin – Engine – Component

PluginFunzionalità aggiuntiveEditor testuali – file upload – etc...

EngineMini applicazioniGestione login – menu – etc...

ComponentProprio Codice da riusare e richiamare

Scaffolding e generatoriGeneratori di codice per tutti i gusti

Applicazioni senza una riga di codice!

Page 7: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

The best of both worlds...Clientela esigente

Software ad alto costo

Page 8: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Perchè Ruby (1)?

Perché usa un paradigma ad oggetti puroDuck TypingUn oggetto non è definito dal tipo, ma dai messaggi a cui è in grado di rispondere

def text_of(widget) if widget.respond_to? :caption widget.caption elsif widget.respond_to? :text widget.text else raise "no text associated to widget #{widget}" endend

Page 9: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Perchè Ruby (2) ?

Ogni oggetto può essere sovraccaricatoBlocchi ed iteratori

class Integer def times_header_and_footer puts "-- BEGIN --" times do yield end puts "-- END --" endend 5.times_header_and_footer do puts "Hello world"end

Page 10: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Perchè Ruby (3) ?

Integrazione con FrameworkRailsMerbCampingWubyRamazeHalcyonSproutcore...

Estensibile: Gems

Page 11: Agile Development con Ruby

JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008

Verso il futuro...

RESTful Web ServicesServizi RESTful per altre applicazioniAbbattere la ridondanza del codice

Comet – Shooting starServizi push

Ruby + Merb + SproutCoreAbbattere il divario tra web e desktop