4.3 Aggiunta della funzionalità dell’archiviazione di tutte le domande
4.3.1 Descrizione
Era stato richiesto di aggiungere la possibilità ad un operatore di Responsa di archiviare tutte le domande di unaKnowledge Basecon dei opportuni filtri per la selezione delle domande da archiviare.
4.3.2 Soluzione
Per risolvere questa richiesta ho aggiunto alla view della pagina la selezione del intervallo temporale, categorie, status e tipo delle domande da archiviare, poi ho dovuto aggiungere al medesimo controller due before filter per recuperare tutte le categorie e intervallo temporale di tutte le domande associate alla Knowledge Base e quindi avere i dati necessarie per popolare i corrispondenti campi nella view, inoltre ho implementato nel controller un nuovo metodo "mass_archive" che si occupa di schedulare l’azione di archiviazione con opportunoworkere di conseguenza ho dovuto modificare ilrouterper attivare questo metodo del controller. Dopodiché ho modificato ilworker che si occupava della archiviazione delle domande in modo che accetta dei parametri con dei filtri per restringere il numero delle domande da archiviare.
Capitolo 5
Conclusioni
5.1 Raggiungimento degli obiettivi
Alla fine dello stage sono riuscito a:
∗ Sviluppare un modulo della gestione dei ruoli degli utenti;
∗ Migliorare le funzionalità di importazione/esportazione deiCSVdi unaKnowledge Base;
∗ Aggiungere la funzionalità di archiviazione di tutte le domande di una Knowledge Base al sistema.
A fronte del lavoro svolto e vista l’approvazione del tutor aziendale, gli obiettivi dello stage possono considerarsi raggiunti. Tutte le funzionalità sviluppate o migliorate da me sono state già messe in produzione. A livello tecnologico posso affermare con soddisfazione di aver appreso moltissimo nello sviluppo di applicativi web. Ho approfondito moltissime tecnologie diverse ed interessanti cosicché il mio bagaglio di abilità potesse aumentare in maniera sostanziale.
Prima di iniziare lo stage, ero molto incuriosito del mondo delle startup. A fine esperienza posso dire di essere molto affascinato da questa realtà fortemente dinamica ed innovativa,per questo motivo, magari un giorno, riuscirò ad avere una startup propria ed intraprendere una carriera da imprenditore. Infatti, ho avuto l’occasione di lavorare con dei colleghi, con grande esperienza, sia in campi correlati al mio ,ma anche completamente diversi. Infine, lavorando bene e raggiungendo tutte le aspettative che l’azienda aveva posto su di me, ho potuto avere una chance concreta per poter entrare a far parte del team di Responsa Srl. Ho raggiunto così l’obiettivo più importante che mi ero prefissato alla scelta dello stage.
5.2 Conoscenze acquisite
Lo stage mi ha permesso di imparare cose nuove ed innovative, mai utilizzate in precedenza. La mia formazione si è arricchita delle seguenti tecnologie:
Ruby on Rails: grazie allo stage sono riuscito ad imparare un nuovo linguaggio di programmazione ed un framework per lo sviluppo delle applicazioni web molto veloce;
24 CAPITOLO 5. CONCLUSIONI RSpec, FactoryGirl e Capybara: infine ho imparato intero set dei strumenti per scrivere tutti i test necessari per una applicazione web sviluppata in Ruby on Rails.
Ma non è tutto, anche metodologie e nuovi strumenti hanno arricchito il mio bagaglio di conoscenze:
Metodo Agile Kanban: grazie allo stage ho potuto imparare questa nuova tecnica e ho potuto metterla in atto imparando moltissime cose visto che non la mia conoscenza riguardo il project management era isolata solamente al metodo incrementale;
Trello e Jira: grazie allo stage ho potuto imparare l’utilizzo di questi strumenti avanzati per la gestione degli issue e non solo;
Slack: uno strumento che non avevo mai utilizzato prima dello stage è Slack. Questo programma di messaggistica per ambienti business mi ha permesso di comunicare con gli altri membri del team in modo semplice, veloce ed organizzato. Grazie all’innovativo utilizzo di canali e chat per topic, Slack ha sostituito le email come strumento per lo scambio di informazioni migliorando la produttività.
5.3 Valutazione personale
L’esperienza di stage mi ha permesso di conoscere da vicino un mondo a me prima sconosciuto, quello lavorativo. È stata un esperienza interessante e positiva e ritengo sia essenziale affrontarla prima della conclusione del corso di laurea. Inoltre, mi ha portato ad usare ed imparare delle tecnologie mai studiate durante la carriera universitaria e di consolidare quelle che già conoscevo.
Mi ha posto di fronte dei compiti con difficoltà crescente, e sono felice del modo in cui sono riuscito ad affrontarle, ritengo che questo sia stato un approccio molto formativo per me. Ovvero risolvendo dei problemi dai più facili a quelli più impegnativi sono riuscito ad evitare un problema noto del "muro" o blocco dovuto alla mancanza delle conoscenze pratiche e teoriche con un nuovo linguaggio/framework . Il corso di laurea fornisce gli strumenti necessari affinché si possano affrontare e apprendere nuove tecnologie, permette di adattarsi molto velocemente a qualsiasi tipo di attività.
Immergendomi in un ambiente lavorativo ho potuto apprendere come comunicare con i colleghi ed essere parte di un’azienda, tanto che mi è stato proposto di continuare la collaborazione anche dopo la conclusione dello stage.
Glossario
Action Controller è il nucleo di una richiesta web inRuby on Rails. Esso è costituito da una o piùcontroller actioneseguite su richiesta e poi o renderizza un modello oppure reindirizza a un’altra azione.. 18,25
BDD Nell’ambito dell’ingegneria del software, il behavior-driven development (ab-breviato in BDD e traducibile in Sviluppo guidato dal comportamento) è una metodologia di sviluppo del software basata sul test-driven development (TDD).
3, 25
before filter sono i metodi che vengono eseguiti "before", "after" o "around" una azione di controller.. 13,15,25
bug tracking applicativo software usato generalmente dai programmatori per tenere traccia delle segnalazioni di bug all’interno dei software, in modo che tali errori siano mantenuti sotto controllo, con una descrizione della riproducibilità e dei dettagli ad essi correlati.. 3,25
Bundler Bundler fornisce un ambiente coerente per progetti di Ruby per il monitorag-gio e l’installazione delle gemme esatte e le loro versioni che sono necessari.Bundler è un’uscita dall’inferno delle dipendenze, e assicura che le gemme di cui avete bisogno sono presenti in fase di sviluppo, staging e produzione.. 4, 25
CamelCase La Notazione a Cammello è la pratica nata durante gli anni settanta di scrivere parole composte o frasi unendo tutte le parole tra loro, ma lasciando le loro iniziali maiuscole.. 16, 25
Capybara Capybara aiuta a testare le applicazioni web simulando come un vero e
pro-prio utente potrebbe interagire con la vostra applicazione. https://github.com/teamcapybara/capybara.
20,25
Cloud è un paradigma di erogazione di risorse informatiche, come l’archiviazione, l’elaborazione o la trasmissione di dati, caratterizzato dalla disponibilità on demand attraverso Internet a partire da un insieme di risorse preesistenti e configurabili.. 1,25
controller action è definito come un metodo pubblico sul controller, che verrà automaticamente reso accessibile al web-server tramite router.. 19, 21, 25, 30
cron Nei sistemi operativi Unix e Unix-like, il comando crontab consente la pianifi-cazione di comandi, ovvero consente la registrazione di questi presso il sistema
26 Glossary per essere poi mandati in esecuzione periodicamente in maniera automatica dal sistema stesso.. 13,25
CRUD Acronimo di create, read, update and delete. Fa riferimento alle principali operazioni implementate in una base di dati. Un’applicazione con operazioni CRUD è qundi i grado di creare, leggere, modificare ed eliminare dati persistenti..
9,26
CSV Il comma-separated values è un formato di file basato su file di testo utilizzato per l’importazione ed esportazione (ad esempio da fogli elettronici o database) di una tabella di dati.. 7, 8,13,23,26
Customer Care una serie di attività progettate per aumentare il livello di soddisfa-zione del cliente, dandogli la sensasoddisfa-zione che un prodotto o un servizio incontri le sue aspettative.. 1, 26
database relazionali In informatica il modello relazionale è un modello logico di rappresentazione o strutturazione dei dati di un database implementato su sistemi di gestione di basi di dati, detti perciò sistemi di gestione di basi di dati relazionali. Si basa sulla teoria degli insiemi e sulla logica del primo ordine ed è strutturato intorno al concetto matematico di relazione (detta anche tabella). Per il suo trattamento ci si avvale di strumenti quali il calcolo relazionale e l’algebra relazionale.. 3,26
DSL in informatica DSL, Domain-Specific Language (ing. linguaggio specifico di dominio) è un linguaggio di programmazione o un linguaggio di specifica dedicato a particolari problemi di un dominio, a una particolare tecnica di rappresentazione e/o a una particolare soluzione tecnica.. 3,26
ElasticSearch è un server di ricerca basato su Lucene, con capacitàFull Text, con supporto ad architetture distribuite. Tutte le funzionalità sono nativamente esposte tramite interfaccia RESTful, mentre le informazioni sono gestite come documentiJSON. Elasticsearch nel gennaio 2016 risulta essere il motore di ricerca più utilizzato.. 4,26
Embedded Ruby è un sistema di template che incorpora rubino in un documento di testo. E ’spesso usato per incorporare codice Ruby in un documento HTML. Il sistema di template di Embedded Ruby unisce il codicerubye il testo in chiaro per fornire un controllo di flusso e sostituzione delle variabili, rendendo così la presentazione più facile da mantenere.. 19
FactoryGirl è una sostituzione deglifixturescon una sintassi di definizione semplice, il supporto per più strategie di build (saved instances, unsaved instances, attribute hashes, e stubbed objects), e il supporto per più factory per la stessa classe (utente, utente_amministratore, e così via), tra cui l’ereditarietà di factory.. 11, 20,26
fake objects Una classe con i metodi che restituiscono un valore o valori che possono sia essere codificati o impostate a livello di codice fisso.. 11,26
Glossary 27 FAQ Frequently Asked Questions sono una serie di risposte stilate direttamente dall’autore, in risposta alle domande che gli vengono poste, o che ritiene gli verrebbero poste, più frequentemente dagli utilizzatori di un certo servizio:
soprattutto su internet e in particolare nel web e nelle comunità virtuali vi sono domande ricorrenti alle quali si preferisce rispondere pubblicamente con un documento affinché non vengano poste troppo spesso, in modo da sciogliere i dubbi dei nuovi utenti.. 1,26,28,30
fixtures Fixtures sono un modo di organizzare i dati con quali si desidera testare applicazione; nei dati brevi, di esempio.. 26
FrameWork Struttura di supporto su cui un applicativo può essere organizzato e progettato. Un framework si basa su una serie di librerie, su convenzioni di sviluppo e su una serie di strumenti di supporto allo sviluppo dell’applicativo stesso.. 3,8,27,28,30
Full Text La ricerca full text (in italiano: ricerca a testo intero) fa riferimento a quelle tecniche per la ricerca di un documento o di una collezione di essi in una base di dati full text. La ricerca full text si distingue da ricerche basate su metadati o su parti di testi originali rappresentati nelle basi di dati (come titoli, sommari, sezioni selezionate o riferimenti bibliografici). In una ricerca full text il motore di ricerca esamina tutte le parole in ogni documento archiviato e tenta di trovare un riscontro secondo determinati criteri (come parole fornite dall’utente). Questo tipo di ricerca divenne molto comune nelle basi di dati bibliografiche in rete negli anni novanta. Molti siti e applicativi forniscono questo tipo di ricerca.. 26, 27 gemma la libreria per il linguaggio Ruby. https://rubygems.org. 8,9, 27
Git è un sistema software di controllo di versione distribuito, creato da Linus Torvalds nel 2005. La progettazione di Git è stata ispirata da BitKeeper e da Monotone, pensato inizialmente solamente come motore a basso livello che altri potevano usare per scrivere un front-end. In seguito diventato un sistema di controllo versione, direttamente utilizzabile da riga di comando; vari progetti software adesso usano Git per tale attività, principalmente il kernel Linux.. 3,4,27 H-Farm È una piattaforma digitale nata nel 2005 con l’obiettivo di aiutare giovani
imprenditori nel lancio di iniziative innovative e supportare la trasformazione delle aziende italiane in un’ottica digitale.. 1,6,27
helpers forniscono un modo di mettere funzionalità comunemente utilizzati in un metodo che può essere chiamato nella view. Helpers includono funzionalità per il rendering di URL, la formattazione del testo e numeri, le forme di costruzione e molto altro ancora.. 18, 27
issue tracking pacchetto software che gestisce e mantiene liste di problemi, trovati dagli sviluppatori, im maniera organizzata.. 3,27
IT Acronimo del termine inglese information technology, indica l’utilizzo di elaboratori e attrezzature di telecomunicazione per memorizzare, recuperare, trasmettere e manipolare dati, spesso nel contesto di un’attività commerciale o di un’altra impresa. Il termine si usa comunemente come sinonimo di computer e reti di
com-28 Glossary come la televisione e i telefoni. Parecchie industrie sono legate alla tecnologia del-l’informazione, inclusi hardware, software, elettronica, semiconduttori, internet, attrezzature per telecomunicazione, commercio elettronico e servizi informatici..
27,30
JMock JMock è una libreria che supporta lo sviluppo test-driven di codice Java con oggetti mock.. 3,27
JSON JSON, acronimo di JavaScript Object Notation, è un formato adatto all’inter-scambio di dati fra applicazioni client-server .. 3, 26,27
Kanban Tramite il Kanban si rovescia il punto d’osservazione e si concepisce il processo produttivo come un’operazione che va da valle a monte e che lavora i pezzi necessari solo nel momento in cui ce n’è bisogno. Questo è ciò che Ohno (responsabile della produzione di Toyota) chiamava "pensare al contrario".. 2, 3, 24,28
Knowledge Base l’insieme di domande e risposteFAQdi un cliente di Responsa Srl..
1,8,11,13,15,23,28
Knowledge Management l’insieme di strategie e metodi per identificare, raccogliere, sviluppare, conservare e rendere accessibile la conoscenza delle persone che fanno parte di una organizzazione (o, al limite, di una comunità di pratica). 1,28 Lean Production La produzione snella (dall’inglese lean manufacturing o lean
pro-duction) è una filosofia che mira a minimizzare gli sprechi fino ad annullarli.. 3, 28
mentor nell’ambito del mentoring, è il soggetto con più esperienza. Deve avere capacità relazionali, saper condurre colloqui e porre domande sagge, deve saper gestire le fasi del processo di mentoring.. 6,28
Mentoring metodologia di formazione che fa riferimento a una relazione uno a uno tra un soggetto con più esperienza (mentor) e uno con meno esperienza (junior, mentee, protégé), cioè un allievo, al fine di far sviluppare a quest’ultimo competenze in ambito formativo, lavorativo e sociale e di sviluppare autostima, a livello educativo-scolastico.. 6,28
MongoDB è un DBMS non relazionale, orientato ai documenti. Classificato come un database di tipo NoSQL, MongoDB si allontana dalla struttura tradizionale basata su tabelle dei database relazionali in favore di documenti in stile JSON con schema dinamico (MongoDB chiama il formato BSON), rendendo l’integrazione di dati di alcuni tipi di applicazioni più facile e veloce.. 2,4,28
Mongoid è ufficialmente supportato ODM (Object-Document-Mapper)framework per MongoDBinruby.. 7,8,28
multi-canale Un’unicaKnowledge Basesincronizzata su tutte le piattaforme:
∗ Sito web;
∗ App mobile;
∗ pagina Facebook.
Glossary 29 . 1,28
MVC Pattern architetturale che prevede la separazione tra la logica di gestione dei dati e come questi dati vengono presentati. Il pattern prevede la divisione dell’architettura in tre parti:
∗ Model: si occupa della gestione dei dati;
∗ View: si occupa di visualizzare i dati presenti nel model;
∗ Controller: si occupa di aggiornare il model in base alle operazioni che l’utente compie sulla view.
. 3,15,28,30
NoSQL È un movimento che promuove sistemi software dove la persistenza dei dati è caratterizzata dal fatto di non utilizzare il modello relazionale che è di solito usato dai database tradizionali. L’espressione NoSQL fa riferimento al linguaggio SQL, che è il più comune linguaggio di interrogazione dei dati nei database relazionali, qui preso a simbolo dell’intero paradigma relazionale. Questi archivi di dati il più delle volte non richiedono uno schema fisso, evitano spesso le operazioni di unione e puntano a scalare in modo orizzontale. Gli accademici e gli articoli si riferiscono a queste basi di dati come memorizzazione strutturata.. 2,3,29 Open Source Open source (termine inglese che significa sorgente aperta), in
informa-tica, indica un software di cui gli autori (più precisamente, i detentori dei diritti) rendono pubblico il codice sorgente, favorendone il libero studio e permettendo a programmatori indipendenti di apportarvi modifiche ed estensioni. Questa possibilità è regolata tramite l’applicazione di apposite licenze d’uso. Il fenomeno ha tratto grande beneficio da Internet, perché esso permette a programmatori distanti di coordinarsi e lavorare allo stesso progetto.. 29,30
Project Management è l’applicazione di conoscenze, attitudini, strumenti e tecniche alle attività di un progetto al fine di conseguirne gli obiettivi.. 3, 29
refactoring è una tecnica strutturata per modificare la struttura interna di porzioni di codice senza modificarne il comportamento esterno, applicata per migliorare alcune caratteristiche non funzionali del software.. 8,29
rendering è un termine della lingua inglese che in senso esteso indica la resa (o restituzione) grafica, ovvero un’operazione compiuta da un disegnatore per produrre una rappresentazione di qualità di un oggetto o di una architettura (progettata o rilevata).. 19
repository è un ambiente di un sistema informativo, in cui vengono gestiti i metadati, attraverso tabelle relazionali; l’insieme di tabelle, regole e motori di calcolo tramite cui si gestiscono i metadati prende il nome di metabase.. 3,4,29 RESTful Riferisce ad un insieme di principi di architetture di rete, i quali delineano
come le risorse sono definite e indirizzate:
∗ identificazione univoca delle risorse: ad esempio, nel web devono essere
30 Glossary
∗ utilizzo esplicito dei metodi HTTP;
∗ risorse autodescrittive: è possibile utilizzare virtualmente qualsiasi formato per rappresentare le risorse, ma è opportuno
∗ utilizzare formati il più possibile standard in modo da semplificare l’intera-zione con i client;
∗ collegamenti tra risorse: una risorsa deve fornire tutte le informazioni riguardo alle risorse ad essa correlate nella sua rappresentazione o mediante collegamenti ipertestuali;
∗ comunicazione stateless: nessuna richiesta deve avere relazioni con le richieste precedenti e successive ad essa.
Il termine è spesso usato per descrivere ogni interfaccia che trasmette dati mediante HTTP.. 26,29
ROI è un indice di bilancio che indica la redditività e l’efficienza economica della gestione caratteristica a prescindere dalle fonti utilizzate: esprime, cioè, quanto rende il capitale investito in quell’azienda.. 1,30
router in Ruby on Railsriconosce gliURLe li invia acontroller action. Router può anche generare i percorsi e gli URL, evitando la necessità di codificarli con le stringhe nella vostra view.. 15,18,20,25,30
RSpec RSpec è uno strumento di sviluppo Behaviour-Driven per i programmatori Ruby.. 2,7,11,20,30
Ruby è un linguaggio di programmazione altamente dinamico ed orientato agli oggetti.
La sua sintassi è elegante, fortemente orientata alla produttività e all’espres-sività.Ruby nasce negli anni ’90 (progettato nel 1993 dal giapponese Yukihiro
“Matz”), ispirandosi ad altri linguaggi in particolare PERL. Condivide inoltre caratteristiche con Python, Lisp e Java. https://www.ruby-lang.org/it/. 3,4,6, 8,16,28,30
Ruby on Rails spesso chiamato RoR o semplicemente Rails, è unframework open sourceper applicazioni web scritto inrubyda David Heinemeier Hansson per conto della 37signals la cui architettura è fortemente ispirata al paradigma Model-View-Controller (MVC). I suoi obiettivi sono la semplicità e la possibilità di sviluppare applicazioni di concreto interesse con meno codice rispetto ad altri framework. Il tutto con necessità di configurazione minimale.. 2,6–8,15,16,19, 20,25,30
SaaS Software as a service (SaaS) (Software come servizio in italiano) è un modello di distribuzione del software applicativo dove un produttore di software sviluppa, opera (direttamente o tramite terze parti) e gestisce un’applicazione web che mette a disposizione dei propri clienti via Internet.. 2,30
Self-Care Pratica di risoluzione dei problemi non gravi, effettuata con l’ausilio di manuali o FAQ, senza fare ricorso all’operatore. 1,30
Self-Service La tecnica di vendita che elimina l’intervento del personale.. 1, 30 Sidekiq è un framework di elaborazione in background full-optional per Ruby. Ha lo
scopo di essere semplice da integrare con qualsiasi moderna applicazione Rails e prestazioni più elevate rispetto ad altre soluzioni esistenti.. 13, 14, 30,31
Glossary 31 simbolo Un Symbol è l’oggetto più elementare che si possa creare in Ruby. È solo un nome, un ID interno. I simboli sono utili, poiché un dato nome di simbolo si riferisce allo stesso oggetto attraverso un programma Ruby. I simboli sono più efficienti delle stringhe; due stringhe con lo stesso contenuto sono due differenti oggetti, ma per ogni dato nome c’è solo un oggetto Symbol. Questo permette di riservare sia il tempo che la memoria.. 21,30
STAGE-IT un evento annuale promosso da ICT Lab e dalla Sezione Servizi Innovativi e Tecnologici di Confindustria Padova in collaborazione con le Università degli studi di Padova e Ca’ Foscari, il Parco Scientifico Galileo e l’Ufficio Progetto Giovani del Comune di Padova. Questo evento mira a far entrare in contatto studenti universitari, facenti parte del Corso di Laurea in Informatica, di
STAGE-IT un evento annuale promosso da ICT Lab e dalla Sezione Servizi Innovativi e Tecnologici di Confindustria Padova in collaborazione con le Università degli studi di Padova e Ca’ Foscari, il Parco Scientifico Galileo e l’Ufficio Progetto Giovani del Comune di Padova. Questo evento mira a far entrare in contatto studenti universitari, facenti parte del Corso di Laurea in Informatica, di