Agile Development con Ruby
Click here to load reader
-
Upload
mario-cartia -
Category
Technology
-
view
534 -
download
1
Transcript of 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
JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008
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.
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
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
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!
JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008
The best of both worlds...Clientela esigente
Software ad alto costo
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
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
JugSicilia MeetingJugSicilia MeetingRagusa, 21/06/2008Ragusa, 21/06/2008
Perchè Ruby (3) ?
Integrazione con FrameworkRailsMerbCampingWubyRamazeHalcyonSproutcore...
Estensibile: Gems
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