SlideShare a Scribd company logo
1 of 21
Studio del framework di sviluppo Ruby on
Rails e realizzazione di spin, un clone di
Twitter
Relatore:
Prof. Serafino Cicerone
Studente:
Matteo Gentile
Matricola:
173733
A.A. 2012-2013
Tesi di Laurea in Ingegneria Informatica e Automatica
 L’informazione e Internet
• Sempre più persone e aziende sfruttano il web
 Il World wide web si è evoluto:
 Aumento della interattività e dinamicità
 Maggiore complessità delle applicazioni
Introduzione
 Necessità di nuovi strumenti per gestire la
maggiore complessità
 L’ausilio dei frameworks
Cosa sono?
• Struttura logica di supporto allo sviluppo
A cosa servono?
• Aumentano il livello di astrazione dei progetti e la loro
qualità
• ‘’Write less, Do more’’
Introduzione
 Motivare la scelta dell’utilizzo di un framework
• Analisi delle caratteristiche
• Analisi costi-benefici, quando conviene utilizzare un
framework?
 Guida al framework Ruby on Rails
 Definire le specifiche dell’applicazione
 Sviluppare l’applicazione
Obiettivi della Tesi
 Perché utilizzare un framework:
• Principi che favoriscono leggibilità e la manutenibilità
• Facilita l’integrazione con sistemi RDBMS
• Consente si seguire un modello di programmazione
• Aiuta a ridurre i tempi e i costi di sviluppo
• Può integrare funzionalità di verifica della qualità del
software
Motivazioni
 Possibili aspetti negativi:
• Curva di apprendimento spesso ripida
• Ridotta flessibilità per applicazioni molto particolari
Motivazioni
Quando utilizzare
un framework?
• Se il l’applicazione è standard
• Se vogliamo poter scalare o
modificare l’applicazione
• Se desideriamo un’applicazione
modulare
• Se vogliamo un’applicazione
qualitativamente valida
 Punto di partenza:
• Sito web ufficiale http://rubyonrails.org
 Nel sito sono esplicitate la vision e la mission
aziendali:
Vision: ‘Web development that doesn't hurt’
Mission: ‘Ruby on Rails is an open-source web
framework that's optimized for programmer happiness
and sustainable productivity. It let's you write beautiful
code by favoring convention over configuration.’
Ruby on Rails
 Storia di RoR:
• Estratto da Basecamp: uno strumento di project
management
• Sviluppato da David Heinemeier Hansson (per
brevità DHH) presso 37signals
• Rilasciato nel 2004, dal 2005 permette di contribuire
attraverso GitHub
• L’ultima release stabile è la 4.0 rilasciata il 25 giugno
2013
Ruby on Rails
 Filosofia del framework in tre punti:
1. Convention over Configuration
2. Don’t Repeat Yourself (DRY)
3. REST (REpresentational State Transfer)
Ruby on Rails
 Punti di forza:
• Buona Documentazione e comunità attiva
• Design e architettura moderni (MVC,ORM,REST)
• Innovazione continua e differenziazione
• Flessibilità verso la personalizzazione
• Ricca API di facile utilizzo, estendibile con plugins e
gems
• …
Ruby on Rails
 Qual è il ‘‘core business’’ di Ruby on Rails?
• Applicazioni basate sulla gestione dei contenuti
• Applicazioni altamente dinamiche e interattive
• Applicazioni devono mutare velocemente
 Esempi Illustri sviluppati con Rails:
Ruby on Rails
Spin
 Consiste in un clone di Twitter
• Riproduce buona parte delle caratteristiche del social
network
• Scelto essere un banco di prova per i frameworks
 E’ stata realizzata un’altra versione da un altro
tesista
• Con un framework differente
• Per evidenziare le differenze di implementazione
 Sviluppo controllato con Git e rilasciato su GitHub
Spin – Casi d’uso
Caso d’uso: Registrazione utente
 Rails consente di creare tramite riga di comando:
• La model utente e i suoi attributi
• Controller
• View
• Routes
• Prima migration
UC: Registrazione Utente
 Fatto questo resta da fare:
• Aggiungere un metodo new al controller già creato:
 Inserire nella view corrispondente l’helper form_for
UC: Registrazione Utente
 Quello che rimane da fare consiste nel:
• Creare un metodo nel controller che salvi l’utente:
• Rendere effettiva la migration creata da riga di
comando:
• Avviare il server di sviluppo
Conclusioni
 Ruby on Rails riduce i tempi di sviluppo se:
• Si seguono le convenzioni
• Si sfruttano al massimo il pattern MVC, l’ORM e
l’integrazione con Ajax
• Si utilizzano le diverse funzionalità ‘‘Time Saving’’
(es. Helpers)
 Bisogna prestare attenzione allle specifiche
progettuali
Questo lavoro di tesi ha consentito di:
 Conoscere
• Linguaggio Ruby
• Framework Ruby on Rails
 Migliorare le conoscenze riguardanti
• Pattern architetturali
• Organizzazione dello sviluppo
 Aprire la strada verso nuovi strumenti
• ORM
• Meta linguaggi (SASS, CoffeeScript)
Considerazioni Finali
Grazie per l’attenzione

More Related Content

Similar to Tesi8

Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e MicroserviziConsulthinkspa
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web designgowow
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migrationAndrea Cirioni
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)Sabino Labarile
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page ApplicationsRoberto Messora
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...Codemotion
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
Introduzione a DotNetNuke
Introduzione a DotNetNukeIntroduzione a DotNetNuke
Introduzione a DotNetNukeMassimo Bonanni
 

Similar to Tesi8 (20)

Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e Microservizi
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web design
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Kotlin hexagonal-architecture
Kotlin hexagonal-architectureKotlin hexagonal-architecture
Kotlin hexagonal-architecture
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
Devops, Cloud e Container
Devops, Cloud e ContainerDevops, Cloud e Container
Devops, Cloud e Container
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Introduzione a DotNetNuke
Introduzione a DotNetNukeIntroduzione a DotNetNuke
Introduzione a DotNetNuke
 

Tesi8

  • 1. Studio del framework di sviluppo Ruby on Rails e realizzazione di spin, un clone di Twitter Relatore: Prof. Serafino Cicerone Studente: Matteo Gentile Matricola: 173733 A.A. 2012-2013 Tesi di Laurea in Ingegneria Informatica e Automatica
  • 2.  L’informazione e Internet • Sempre più persone e aziende sfruttano il web  Il World wide web si è evoluto:  Aumento della interattività e dinamicità  Maggiore complessità delle applicazioni Introduzione
  • 3.  Necessità di nuovi strumenti per gestire la maggiore complessità  L’ausilio dei frameworks Cosa sono? • Struttura logica di supporto allo sviluppo A cosa servono? • Aumentano il livello di astrazione dei progetti e la loro qualità • ‘’Write less, Do more’’ Introduzione
  • 4.  Motivare la scelta dell’utilizzo di un framework • Analisi delle caratteristiche • Analisi costi-benefici, quando conviene utilizzare un framework?  Guida al framework Ruby on Rails  Definire le specifiche dell’applicazione  Sviluppare l’applicazione Obiettivi della Tesi
  • 5.  Perché utilizzare un framework: • Principi che favoriscono leggibilità e la manutenibilità • Facilita l’integrazione con sistemi RDBMS • Consente si seguire un modello di programmazione • Aiuta a ridurre i tempi e i costi di sviluppo • Può integrare funzionalità di verifica della qualità del software Motivazioni
  • 6.  Possibili aspetti negativi: • Curva di apprendimento spesso ripida • Ridotta flessibilità per applicazioni molto particolari Motivazioni
  • 7. Quando utilizzare un framework? • Se il l’applicazione è standard • Se vogliamo poter scalare o modificare l’applicazione • Se desideriamo un’applicazione modulare • Se vogliamo un’applicazione qualitativamente valida
  • 8.  Punto di partenza: • Sito web ufficiale http://rubyonrails.org  Nel sito sono esplicitate la vision e la mission aziendali: Vision: ‘Web development that doesn't hurt’ Mission: ‘Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It let's you write beautiful code by favoring convention over configuration.’ Ruby on Rails
  • 9.  Storia di RoR: • Estratto da Basecamp: uno strumento di project management • Sviluppato da David Heinemeier Hansson (per brevità DHH) presso 37signals • Rilasciato nel 2004, dal 2005 permette di contribuire attraverso GitHub • L’ultima release stabile è la 4.0 rilasciata il 25 giugno 2013 Ruby on Rails
  • 10.  Filosofia del framework in tre punti: 1. Convention over Configuration 2. Don’t Repeat Yourself (DRY) 3. REST (REpresentational State Transfer) Ruby on Rails
  • 11.  Punti di forza: • Buona Documentazione e comunità attiva • Design e architettura moderni (MVC,ORM,REST) • Innovazione continua e differenziazione • Flessibilità verso la personalizzazione • Ricca API di facile utilizzo, estendibile con plugins e gems • … Ruby on Rails
  • 12.  Qual è il ‘‘core business’’ di Ruby on Rails? • Applicazioni basate sulla gestione dei contenuti • Applicazioni altamente dinamiche e interattive • Applicazioni devono mutare velocemente  Esempi Illustri sviluppati con Rails: Ruby on Rails
  • 13.
  • 14. Spin  Consiste in un clone di Twitter • Riproduce buona parte delle caratteristiche del social network • Scelto essere un banco di prova per i frameworks  E’ stata realizzata un’altra versione da un altro tesista • Con un framework differente • Per evidenziare le differenze di implementazione  Sviluppo controllato con Git e rilasciato su GitHub
  • 15. Spin – Casi d’uso
  • 16. Caso d’uso: Registrazione utente  Rails consente di creare tramite riga di comando: • La model utente e i suoi attributi • Controller • View • Routes • Prima migration
  • 17. UC: Registrazione Utente  Fatto questo resta da fare: • Aggiungere un metodo new al controller già creato:  Inserire nella view corrispondente l’helper form_for
  • 18. UC: Registrazione Utente  Quello che rimane da fare consiste nel: • Creare un metodo nel controller che salvi l’utente: • Rendere effettiva la migration creata da riga di comando: • Avviare il server di sviluppo
  • 19. Conclusioni  Ruby on Rails riduce i tempi di sviluppo se: • Si seguono le convenzioni • Si sfruttano al massimo il pattern MVC, l’ORM e l’integrazione con Ajax • Si utilizzano le diverse funzionalità ‘‘Time Saving’’ (es. Helpers)  Bisogna prestare attenzione allle specifiche progettuali
  • 20. Questo lavoro di tesi ha consentito di:  Conoscere • Linguaggio Ruby • Framework Ruby on Rails  Migliorare le conoscenze riguardanti • Pattern architetturali • Organizzazione dello sviluppo  Aprire la strada verso nuovi strumenti • ORM • Meta linguaggi (SASS, CoffeeScript) Considerazioni Finali

Editor's Notes

  1. Inizio Presentazione Tema tesi
  2. Prima di scendere nei dettagli vorrei parlare del ruolo che l’informazione ha da sempre svolto nella nostra società e di come questo è cambiato con l’avvento di Internet. L’informazione ha subito una rivoluzione senza precedenti, paragonabile solo all’invenzione della stampa o di altri mezzi come tv o radio. Permette di comunicare con persone dall’altra parte del mondo in un attimo, di reperire informazioni su qualsiasi cosa ci interessi, di fare pubblicità alla propria azienda o a sé stessi e ricavarne guadagni inaspettati. Di qui sempre più aziende e persone utilizzano il web per conoscere o farsi conoscere attraverso social come twitter facebook o linkedin. Il web di pari passo ha subiuto un’evoluzione profonda delle interfacce utente ora simili per comportamento e interattività alle applicazioni applicazioni desktop. Con le possibilità è aumentata anche la complessità, di qui la necessità di strumenti che potessero dare una mano allo sviluppatore.
  3. Questi strumenti sono proprio i frameworks per lo sviluppo web che consistono in una struttura logica di supporto su cui un software può essere progettato e realizzato, spesso facilitandone lo sviluppo. Andando un poco più a fondo alla base di un framework c’è sempre una serie di librerie di codice utilizzabili con uno o più linguaggi di programmazione, spesso corredate da una serie di strumenti di supporto allo sviluppo del software, come ad esempio un IDE, un debugger, framework per il testing e molto altro. L’utilizzo di un framework impone al programmatore una precisa metodologia di sviluppo del software e avvalendosi di potenti pattern strutturali, permette di aumentare il livello di astrazione dei progetti, rendendo più semplice scrivere delle applicazioni complesse migliorandone anche la qualità. Riprendendo poi il motto della libreria javascript Jquery ‘’write less, do more’’ molti sono concordi nel dire che grazie a questi strumenti un’applicazione web viene scritta in meno tempo e con meno risorse umane grazie sopratutto a soluzioni che riducono i compiti di routine (sessioni, connesioni al DB..).
  4. Dopo l’introduzione vedremo quali sono gli obiettivi della tesi, Come prima cosa si cercherà di motivare la scelta di utilizzare un framework attraverso un’analisi degli elementi caratterizzanti di questo strumento in senso generale e per lo sviluppo web. Fra gli obiettivi è presente un’analisi costi-benefici, che si pone il problema di trovare una risposta alla domanda: quando conviene utilizzare un framework? Durante lo svolgimento del lavoro di tesi si è deciso di dare alla stessa un taglio di tipo didattico, come vedremo anche più avanti, e in questo contesto si è cercato di far conoscere il framework tramite un mini guida corredata da esempi pratici. Questo modello è stato ripreso anche per illustrare come si è sviluppata l’applicazione spin. Successivamente si affronterà il processo di definizione definizione delle specifiche dell’applicazione e, naturalmente a seguire si illustrerà una parte dello sviluppo della stessa.
  5. Fra le caratteristiche dei framework che fanno pesare l’ago della bilancia verso un suo l’utilizzo ci sono: Seguire dei principi che favoriscono la leggibilità e la manutenibilità del codice; un esempio è il ”DRY - Don’t Repeat Yourself” che impone di evitare inutili ripetizioni nel codice e se applicato correttamente eventuali modifiche allo stesso saranno poco dispendiose. Facilitare l’integrazione di sistemi software aderenti al paradigma della programmazione orientata agli oggetti con sistemi RDBMS. Tramite un livello di astrazione che svincola dall’uso di SQL e dai dettagli della base di dati, rendendo il codice più portabile. Consente di seguire in modo semplice un paradigma di programmazione, imponendo un’architettura di sviluppo. Separa la business logic dall’interfaccia utente rendendo così il codice più pulito ed estendibile. Aiuta a ridurre il tempo e l’energia necessaria per lo sviluppo. Può integrare funzionalità di verifica della qualità del software.(debugger, framework per il testing)
  6. Naturalmente l’utilizzo di un framework non presenta solo benefici, ma anche aspetti negativi alcuni dei quali oggettivi altri suscettibili rispetto all’esperienza dello sviluppatore, in generale fra i più evidenti possiamo annoverare: Per lo sviluppatore poco esperto le difficoltà di approccio con il framework aumentano in modo direttamente proporzionale con la grandezza e il livello di astrazione dello stesso, e spesso costringe il programmatore a dedicare molto tempo allo studio delle caratteristiche del framework piuttosto che allo sviluppo software. La maggior parte dei frameworks non sono l’ideale per progetti di piccole dimensioni soprattutto per la mole di componenti che si portano dietro e che probabilmente rimarrebbero inutilizzati.
  7. Perciò a margine di questa comparazione mi sento di affermare che l’utilizzo di un framework può essere di grande aiuto quando ci troviamo di fronte a scenari simili: Sviluppo di un’applicazione ‘’standard’’ basata sulla gestione di contenuti: social network, negozi on line, siti di notizie. Sviluppo di applicazioni modificabili o scalabili senza troppi sforzi, un esempio concreto può essere un sito per una start up dove si ha la necessità di sviluppare in tempi rapidi delle applicazioni funzionanti ma che probabilmente cambieranno molte volte, finché non viene delineato il business plan definitivo. Se desideriamo un’applicazione modulare dove sia possibile riutilizzare parti di codice o addirittura di applicazioni intere. Se desideriamo un’applicazione qualitativamente valida, il framework impone al programmatore una precisa metodologia di sviluppo del software, rendendo le applicazioni più valide da questo punto di vista.
  8. Finita questa parte in cui si è parlato dei frameworks in modo generale , si affronterà ora la parte dedicata al framework da me utilizzato nello sviluppo dell’applicazione. Ruby on Rails. Tutte le informazioni relative al progetto Ruby on Rails si possono trovare sui vari portali web dedicati. Il punto di partenza principe è il sito web ufficiale, raggiungibile all'indirizzo http://rubyonrails.org. Il sito presenta con estrema chiarezza tutte le informazioni necessarie per capire cos'è Ruby on Rails e come diventare partecipi o semplici usufruitori del framework. Nella home page sono esplicitate immediatamente la vision e la mission aziendali, nel seguito riportate. In queste poche righe risulta essere molto chiaro quale sia lo scopo del progetto, quale la filosofia alla base e il fatto che sia open source. Ad ogni modo nelle prossime slide queste verranno trattate in modo più dettagliato.
  9. Il framework Ruby on Rails è stato estratto da Basecamp: uno strumento di project management sviluppato da David Heinemeier Hansson (DHH per brevità) presso la società 37signals (http://37signals.com). Ruby on Rails venne rilasciato per la prima volta nel 2004, ma è solo dal 2005 che DHH permette ad altre persone di contribuire al progetto. Inizialmente il progetto Ruby on Rails era ospitato su lighthouseapp.com. Attualmente invece lo sviluppo è coordinato attraverso Github (http://www.github.com), una piattaforma di hosting per progetti gestiti tramite controllo di versione Git. L’ultima release stabile è la 4.0 rilasciata il 25 giugno 2013, dopo un approfondito processo di beta e release candidate. E 'un nuova versione ricca di nuove funzioni ma che dà anche un taglio con le versioni passate di Rails soprattutto con la versione 2.
  10. La filosofia di Ruby on Rails include 3 principi guida, il primo si chiamo Convention over Configuration: Convention over configuration – significa che Rails formula ipotesi su cosa si vuole fare e come si ha intenzione di farlo, piuttosto che richiedere ogni volta di specificare tutti i dettagli attraverso i file di configurazione. Questo comportamento vuole ridurre il numero di decisioni che lo sviluppatore deve prendere soprattutto all’inizio, con un guadagno in termini di semplicità senza necessariamente perdere flessibilità in quanto non è difficile ridefinire queste convenzioni con funzionalità personalizzate. DRY (Don’t Repeat Yourself) – Principio della programmazione software che è stato già esposto in precedenza. REST (REpresentational State Transfer) – suggerisce che organizzare l’applicazione intorno alle risorse e ai metodi HTTP standard sia il modo più veloce per sviluppare applicazioni web.
  11. Passiamo ora ai punti di forza di Ruby on Rails: Rails è ben documentato, soprattutto per quanto riguarda il materiale in lingua inglese, che viene costantemente aggiornato. La comunità è una delle più attive nel settore e nonostante lo sviluppo del Core di Rails sia a completo appannaggio dei responsabili di progetto l'apporto di questa è molto importante per tutto il resto. Il framework segue il pattern architetturale MVC semplifica la separazione tra contenuto e presentazione, tra i dati e contenuto. Inoltre sfrutta l’ Object-Relational Mapping (ORM) che è una tecnica di programmazione che favorisce l’integrazione di sistemi software che seguono il modello della programmazione ad oggetti con sistemi RDBMS aumentando di fatto la flessibilità. Oltre a questi il già citato REST. Rails grazie alla comunità che suggerisce modifiche al team di sviluppo del framework è sempre molto innovativo, e integra molti strumenti utili spesso prima rispetto ai suoi concorrenti. Rails è si per una configurazione minimale, ma ciò non toglie che se si vuole rendere il framework più adatto alle proprie esigenze lo si può fare in modo semplice. Rails fornisce moltissimi metodi utili per assolvere compiti di routine quali connessioni al database o per la gestione delle sessioni, ma anche metodi più particolari per esigenze specifiche. La grande disponibilità di Plugins e Gems (pacchetti Ruby per aggiungere funzionalità), semmai ce ne fosse bisogno, aumenta a dismisura il numero degli strumenti ufficiali e non che aiutano lo sviluppatore alle prese con RoR.
  12. Fra le tipologie di applicazioni che più si adattano ad essere sviluppate con un framework di sviluppo web come Rails ci sono: Applicazioni basate sulla gestione dei contenuti: ad esempio aggregatori di notizie, negozi on line situazioni dove si possono sfruttare gli strumenti che li framework dà per velocizzare le operazioni di routine. Applicazioni altamente dinamiche e interattive: qui Rails ha moltissime frecce al suo arco, infatti soprattutto per quanto riguarda l’integrazione con Ajax e il supporto a diverse librerie javascript, ha pochi rivali Applicazioni che possono mutare velocemente: la flessibilità è uno dei punti forti di Rails, quindi quale migliore tipologia di applicazione? Github, Twitter, Groupon e molte altre sono applicazioni famose sviluppate con Rails fanno parte di queste tipologie e devono far fronte a un traffico notevole, quindi sono anche una prova tangibile della propensione di Rails alla scalabilità.
  13. In questa immagine possiamo vedere come sia implementato il pattern MVC in Rails, e come Rails disponga dei moduli ad hoc per generare la risposta per il client. Per fare un esempio: Il client effettua una richiesta al web server, questa può essere in vari formati HTTP, RSS, SOAP,ecc Il server inoltra la richiesta al dispatcher che ‘traduce’ la richiesta e permette così di caricare un metodo del controller Il controller a seconda di come il metodo è implementato e del tipo di richiesta può effettuare una o più di quelle azioni mostrate in figura: può recuperare i dati dal database attraverso l’ORM mediante operazioni CRUD, per poi mostrarli al client (in vari formati..JS, CSS,) oppure ad esempio può delegare ad Action WebService se la richiesta è di tipo SOAP.
  14. Dopo aver parlato di Rails si vedrà l’applicazione sviluppata con esso. Questa prende il nome di Spin e si ispira a Twitter il celebre servizio di microblogging, e si è cercato di prendere le funzionalità più rilevanti e che meglio potessero mettere alla prova i frameworks. Parlo di frameworks al plurale in quanto durante il processo di studio e di sviluppo ho lavorato insieme ad un altro tesista, collaborando per raggiungere un miglior risultato nel realizzare la stessa applicazione con due frameworks differenti: Django e Ruby on Rails in modo da poter fare un confronto costruttivo fra le due implementazioni. I progetti sono stati entrambi sviluppati utilizzando il controllo di versione Git, e poi rilasciati su Github che oltre a ospitare fisicamente il codice sorgente è una vera e propria community all'interno della quale è possibile visionare con estrema semplicità lo stato dello sviluppo di un progetto, estenderlo o addirittura crarne una versione alternativa partendo dalla stessa base.
  15. In questa immagine si possono vedere tutti i casi d’uso analizzati e poi implementati nell’applicazione spin. Questa immagine servirà per introdurre il caso d’uso che andrò ad illustrare brevemente ovvero quello della registrazione di un nuovo utente. Questo caso d’uso consente di mostrare alcune utili caratteristiche del framework nel tempo rimasto.
  16. Vediamo come Rails consente di creare da riga di comando la model per l’utente con la possibilità di definire anche i suoi attributi. Insieme a questa vengono creati anche il controller la view collegati. Vengono poi definite delle routes ovvero degli instradamenti per la risorsa, Questo ultima caratteristica impone l’utilizzo di URL REST che sono appunto orientati al loro recupero. Per finire viene definita una prima migration per poi servirà a creare la tabella per gli utenti nel DB.
  17. Dopo aver creato gli elementi necessari per Modellare gli utenti e posto le basi per gestirli, bisogna poi aggiungere al controller il metodo new che servirà poi alla view per creare la form di registrazione per il nuovo utente. Come possiamo osservare un’istanza della classe User viene assegnata alla variabile d’istanza @user rendendola quindi accessibile alla view che grazie a questa assembla la form con i vari campi e il bottone di submit.
  18. Quello che rimane da fare per dare agli utenti la facoltà di registrarsi consiste in: Creare un metodo che ricevuta la richiesta proveniente dalla form inviata, prenda i parametri e salvi il nuovo utente nel database. Se per qualche ragione ci fossero degli errori il codice reindirizza di nuovo alla pagina con la form di registrazione. Per completare l’opera va resa effettiva la migration che è stata creata da shell insieme alla model User. Questa crea la tabella users necessaria alla persistenza dei dati. Avviare il server di sviluppo per osservare i risultati.
  19. Dopo qualche mese di esperienza di Ruby on Rails posso affermare che il framework mi ha sempre soddisfatto, semplificando e velocizzando il lavoro. Trovo che Rails possa esprimere al massimo il proprio potenziale se: Vengono seguite le convenzioni del framework vedi RESTful applications, DRY, CoC Si sfrutta il pattern MVC per mantenere il principio di separazione degli ambiti. L’ORM per una elevata portabilità e risparmio nella scrittura di codice. L’integrazione con Ajax per aumentare l’interattività con meno sforzo. Inoltre è vivamente consigliato utilizzare le funzioni time saving come gli helpers delle view o le funzioni per la gestione delle sessioni che ci aiutano a effettuare compiti altrimenti ripetitivi. Come nota a margine va detto che bisogna, indipendentemente dal framework fare attenzione alle specifiche dell’applicazione da sviluppare onde evitare possibili complicazioni.
  20. Il lavoro di tesi appena illustrato mi ha permesso di migliorare le mie conoscenze. Grazie all’utilizzo di un framework ho potuto migliorare la comprensione del pattern MVC e più in generale dei pattern architetturali, questo ha comportato una maggiore organizzazione del codice che ha apportato benefici soprattutto quando erano necessarie modifiche o aggiunte. Questo è stato prezioso anche per una maggiore organizzazione dello sviluppo. Oltre a questo mi ha spinto a studiare nuovi strumenti quali le tecniche di ORMing e metalinguaggi come Sass che estende CSS3 aggiungendo la possibilità di usare regole annidate, variabili, mixin e altro ancora. O Coffeescript che viene tradotto in javascript senza perdite di efficienza ma con riduzione di codice. Questi ed altri aspetti hanno reso il lavoro stimolante e non fine a sé stesso, rendendo la progettazione software un processo di apprendimento dinamico non solo limitato al mero raggiungimento dell’obiettivo.