Universit'a degli Studi di Padova - Sviluppo web in ASP.NET MVC - Dipartimento di Matematica "Tullio Levi-Civita" - SIAGAS
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Università degli Studi di Padova Dipartimento di Matematica “Tullio Levi-Civita” Corso di Laurea in Informatica Sviluppo web in ASP.NET MVC Tesi di laurea triennale Relatore Prof. Tullio Vardanega Laureando Michela De Bortoli Anno Accademico 2016-2017
Abstract Questa tesi presenta il lavoro che ho svolto durante il tirocinio formativo effettuato presso l’azienda Treenet S.r.l, della durata di 320 ore. Il primo capitolo, ‘Contesto aziendale’ , presenta l’azienda dove ho svolto il tirocinio, i servizi che offre e le principali tecnologie che utilizza, e i processi interni adottati nello sviluppo e nella manutenzione dei suoi prodotti. Il secondo capitolo, ‘Strategia aziendale’, descrive i problemi affrontati nello stage, obiettivi e vincoli, e le motivazioni della scelta del tirocinio. Il terzo capitolo, ‘Resoconto del tirocinio’, descrive la pianificazione del tirocinio, il metodo di lavoro adottato, i problemi progettuali, tecnologici e applicativi incontrati, e i risultati ottenuti. Il quarto capitolo della tesi, ‘Valutazione retrospettiva’, descrive il grado di soddisfacimento degli obiettivi stabiliti, le problematiche incontrate nel corso del tirocinio, le conoscenze apprese e la distanza fra le competenze richieste dallo stage e le conoscenze erogate dal corso di studi. iii
Indice 1 Contesto aziendale 1 1.1 Treenet S.r.l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Prodotti e servizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 Servizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.2 Prodotti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Processi produttivi . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . 8 1.3.2 Norme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4 Propensione all’innovazione . . . . . . . . . . . . . . . . . . . . . . 9 2 Strategia aziendale 11 2.1 Azienda e stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Scopo del progetto di stage . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Obiettivi del tirocinio . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Vincoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.1 Vincoli tecnologici . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.2 Vincoli metodologici . . . . . . . . . . . . . . . . . . . . . . 16 2.4.3 Vincoli temporali . . . . . . . . . . . . . . . . . . . . . . . . 17 2.5 Scelta del progetto di stage . . . . . . . . . . . . . . . . . . . . . . . 17 2.5.1 Obiettivi personali . . . . . . . . . . . . . . . . . . . . . . . 18 3 Resoconto del tirocinio 19 3.1 Pianificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.1 Analisi dei rischi . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.2 Interazioni con il tutor aziendale . . . . . . . . . . . . . . . . 20 3.1.3 Diagrammi UML . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1.4 Tecnologie adottate . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Lavoro svolto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.1 Formazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.2 Analisi dei requisiti . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.3 Progettazione . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.4 Codifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.2.5 Verifica e validazione . . . . . . . . . . . . . . . . . . . . . . 47 3.2.6 Altre attività . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.3 Risultati raggiunti . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4 Valutazione retrospettiva 53 v
vi INDICE 4.1 Soddisfacimento degli obiettivi . . . . . . . . . . . . . . . . . . . . . 53 4.1.1 Problematiche incontrate . . . . . . . . . . . . . . . . . . . . 54 4.2 Bilancio formativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.3 Preparazione accademica . . . . . . . . . . . . . . . . . . . . . . . . 56 Glossario 57 Acronimi 61 Bibliografia 63
Elenco delle figure 1.1 Logo di Treenet S.r.l. . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Funzionalità di Webstarter . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Ciclo di vita del software nella metodologia Agile . . . . . . . . . . 5 2.1 Stack tecnologici tra cui potevo scegliere nello sviluppo dell’applicazione 12 2.2 Diagramma di Gantt delle attività pianificate . . . . . . . . . . . . 15 3.1 CLR e libreria .NET . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Stack delle componenti del framework .NET . . . . . . . . . . . . . 22 3.3 Design pattern MVC . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.4 Struttura tipica di un progetto di tipo ”Applicazione Web” con pattern MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5 Struttura di Entity Framework . . . . . . . . . . . . . . . . . . . . 26 3.6 Attori che interagiscono con l’applicazione intranet . . . . . . . . . 35 3.7 Bozze grafiche della homepage del sito per dispositivi mobile, tablet e desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.8 Bozze grafiche per dispositivi desktop delle pagine interne . . . . . . 37 3.9 Architettura ad alto livello dell’applicazione intranet . . . . . . . . 38 3.10 Struttura dell’applicazione intranet . . . . . . . . . . . . . . . . . . 40 3.11 Action methods di ToolsController legati alla View Label . . . . . . 40 3.12 Homepage vista da dispositivo desktop (A) e mobile (B). Ho inserito lo slideshow di immagini nella homepage utilizzando gli appositi ShortCode. Le immagini e le transizioni sono gestibili dal cliente attraverso Webstarter. . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.13 Pagina della galleria dei prodotti (layout tablet e mobile). Le immagini e le relative descrizioni sono modificabili dal cliente. . . . 43 3.14 Menu desktop/tablet (A) e mobile (B) . . . . . . . . . . . . . . . . 43 3.15 Funzionalità di ordinamento campi e ricerca . . . . . . . . . . . . . 44 3.16 Richiesta di autenticazione per visualizzare la pagina . . . . . . . . 44 3.17 Esempi di interfacce: interfaccia della pagina del controllo garanzie (A), interfaccia della pagina del controllo di fattibilità (B), interfaccia della pagina di gestione etichette (C) . . . . . . . . . . . . . . . . . 45 3.18 Username dell’utente autenticato . . . . . . . . . . . . . . . . . . . 45 3.19 Creazione di un’etichetta . . . . . . . . . . . . . . . . . . . . . . . . 46 3.20 Modifica di un’etichetta . . . . . . . . . . . . . . . . . . . . . . . . 46 3.21 Metriche del codice (applicazione intranet) . . . . . . . . . . . . . . 48 vii
viii ELENCO DELLE FIGURE 3.22 Risultato di test di pagespeed svolto sull’applicazione n.1 utilizzando Gtmetrix (A) e Pingdom Website Speed Test (B) . . . . . . . 49 3.23 Contenuti del Manuale Utente . . . . . . . . . . . . . . . . . . . . . 50
Elenco delle tabelle 2.1 Attività pianificate . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.1 Familiarità iniziale con le tecnologie . . . . . . . . . . . . . . . . . . 20 3.2 Lavoro svolto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3 Copertura dei requisiti - Applicazione n.1 (interfaccia) . . . . . . . 51 3.4 Copertura dei requisiti - Applicazione n.2 . . . . . . . . . . . . . . . 51 3.5 Copertura dei requisiti - Webstarter . . . . . . . . . . . . . . . . . . 52 4.1 Obiettivi definiti nel Piano di Lavoro . . . . . . . . . . . . . . . . . 54 4.2 Obiettivi definiti nel corso del tirocinio . . . . . . . . . . . . . . . . 54 4.3 Familiarità finale con le tecnologie . . . . . . . . . . . . . . . . . . . 55 ix
Capitolo 1 Contesto aziendale Questo capitolo descrive brevemente l’azienda presso cui ho svolto il mio tirocinio, le tecnologie di cui essa fa uso e la tipologia di clientela a cui si rivolge, i suoi processi produttivi e la sua propensione all’innovazione. 1.1 Treenet S.r.l. Treenet S.r.l. è una piccola impresa che lavora nel campo dell’Information and Communication Technology (ICT) dal 2001 e ha sede a Montebelluna, in provincia di Treviso. La sua clientela è principalmente compresa da piccole e medie imprese del settore privato. Tra i servizi offerti dall’azienda, quello più frequentemente richiesto è lo sviluppo di soluzioni software su misura, specialmente applicazioni che supportano i clienti nelle loro attività. Figura 1.1: Logo di Treenet S.r.l. Treenet è organizzata in due divisioni, web agency, che si occupa di creazione e pubblicizzazione di contenuti digitali, e informatica. Si divide ulteriormente nelle seguenti aree di competenza, che si adoperano per fornire i servizi offerti dall’azienda: ∗ Amministrativa ∗ Commerciale ∗ Sviluppo software ∗ Sviluppo web ∗ Web marketing e Search Engine Optimization (SEO) 1
2 CAPITOLO 1. CONTESTO AZIENDALE ∗ Design e grafica ∗ Sistemistica e assistenza clienti Un singolo dipendente ha la possibilità di lavorare in diverse aree di competenza, tenendo conto della sua formazione. Progetti di portata ridotta che comprendono sia attività di web design che attività di sviluppo web e software vengono comunemente assegnati a una sola risorsa, ed è richiesta l’applicazione di pratiche di accessibilità e usabilità fin dalla fase di design, realizzando layout diversi per dispositivi di varia grandezza e seguendo i principi di design responsive e mobile-first. La presenza di competenze trasversali permette una maggiore flessibilità nelle attività svolte all’interno dell’azienda, facilita l’interazione fra membri del team di diversa specializzazione, e permette di stimare tempistiche e limiti nel design o in aree diverse dello sviluppo. Questo è uno dei motivi che mi hanno influenzato maggiormente nella scelta del tirocinio. 1.2 Prodotti e servizi 1.2.1 Servizi I servizi offerti da Treenet sono i seguenti: ∗ Sviluppo software, in particolare software custom realizzato appositamente per i singoli clienti ∗ Consulenza su scelte progettuali, definizione dei requisiti, stima di costi e tempistiche e scelta delle tecnologie da utilizzare nei progetti ∗ E-commerce, servizio offerto da due prodotti aziendali non-custom, Web- starter e TreeComm ∗ Web marketing e SEO: pubblicizzazione di contenuti digitali su motori di ricerca e social network ∗ Design, grafica e fotografia: web design, realizzazione di icone e logo aziendali, brochure, biglietti da visita, servizi fotografici per aziende, ecc. ∗ Web development: realizzazione di applicazioni web in ambiente Microsoft in ASP.NET MVC o utilizzando il CMS aziendale, o in ambiente Linux utilizzando lo stack Linux, Apache, MySQL, PHP (LAMP) ∗ Assistenza tecnica e sistemistica, offerta gratuitamente per 60 giorni dalla pubblicazione del prodotto, o in presenza di un contratto di assistenza ∗ Formazione del cliente sull’utilizzo del software sviluppato adatta anche a clienti senza un background tecnico ∗ Gestione di server e reti aziendali, effettuata sia remotamente grazie a sistemi di monitoraggio, sia tramite interventi in sede
1.2. PRODOTTI E SERVIZI 3 L’azienda fa prevalentemente uso di prodotti e tecnologie Microsoft, questa decisione è soprattutto motivata dalla possibilità di avvalersi di certificazioni e supporto. Nonostante ciò, l’azienda sviluppa anche in ambiente Linux, facendo uso dello stack LAMP. I tecnici che si occupano di sviluppo software e di assistenza e formazione dei clienti possiedono certificazioni Microsoft e/o di altri partner tecnologici. L’azienda ha inoltre stretto partnership con diversi fornitori tra cui Microsoft, IBM e HP. 1.2.2 Prodotti Il market share di Treenet è composto principalmente da piccole e medie aziende locali e micro-enterprise, prevalentemente private, con esigenze spesso simili ma anche molto specifiche. Si occupa quindi di commercio Business-to-business (B2B), effettuato tra imprese e non consumatori finali. I prodotti più frequentemente sviluppati, come precedentemente menzionato, sono applicazioni web e software custom. Il numero di prodotti off-the-shelf offerti dall’azienda è quindi ridotto. Il principale prodotto non-custom dell’azienda è il Content Management System (CMS) aziendale, Webstarter. Webstarter Webstarter permette la creazione di siti web personalizzati per i singoli clienti attraverso una struttura composta da moduli attivabili e disattivabili secondo le specifiche concordate. Figura 1.2: Funzionalità di Webstarter
4 CAPITOLO 1. CONTESTO AZIENDALE È inoltre possibile per i clienti stessi creare contenuti e pagine o effettuare delle modifiche in alcune aree prestabilite del loro sito, se attive, come gallerie di immagini, cataloghi prodotti, slideshow, newsletter e molte altre. Webstarter è stato realizzato per minimizzare l’utilizzo di CMS open-source o di terze parti, uniformare lo sviluppo web e raccogliere tutte le funzionalità realizzate negli anni dall’azienda per prodotti diversi in un’unica suite modulare. Una nuova versione di Webstarter è correntemente in via di sviluppo. Lo sviluppo del CMS è stato effettuato nel linguaggio C# utilizzando il framework .NET, in particolare ASP.NET MVC. In aggiunta a Webstarter, l’azienda offre una suite e-commerce, Treecomm, e una suite che permette di creare portali nel settore real estate, WebImmobiliare. 1.3 Processi produttivi Metodologia di sviluppo del software L’azienda ha adottato il metodo Agile nello sviluppo del software. Il metodo Agile è più recente degli altri modelli di sviluppo (il suo manifesto è stato redatto nel 2001), è adattivo e si basa su uno sviluppo iterativo. I principi del Manifesto Agile [12] sono i seguenti: 1. ”Individuals and interactions over processes and tools”: le motivazioni individuali e la collaborazione sono più importanti degli strumenti utilizzati, 2. ”Working software over comprehensive documentation”: è più importante presentare al cliente software funzionante piuttosto che documentazione estesa (la quantità richiesta di documentazione nel metodo è la minima quantità necessaria per una comprensione chiara del software), 3. ”Customer collaboration over contract negotiation”: il coinvolgimento del cliente è più importante di un’accurata negoziazione del contratto, 4. ”Responding to change over following a plan”: rispondere rapidamente ed efficacemente al cambiamento è preferibile all’attenersi alla pianificazione iniziale. Sono stabiliti periodi di iterazione, della lunghezza tipicamente compresa fra una e quattro settimane, in cui si svolgono tutte le fasi dello sviluppo del software, da pianificazione e analisi a integrazione e collaudo del sistema. Rischi del metodo Agile Se uno dei punti stabiliti nel manifesto crolla, l’intero progetto rischia di esserne compromesso. Diverse fasi dello sviluppo sono portate avanti in parallelo, e analisi e progettazione possono essere soggette a cambiamenti: è quindi imperativo che all’interno del team ci sia comunicazione continua. Uno dei rischi del metodo Agile è quello della non convergenza causata da cambiamenti continui delle specifiche o iterazioni distruttive, perciò l’azienda gene- ralmente permette modifiche in corso d’opera solo quando queste non stravolgono
1.3. PROCESSI PRODUTTIVI 5 Figura 1.3: Ciclo di vita del software nella metodologia Agile requisiti funzionali obbligatori già in fase di realizzazione, pratica più vicina a metodi incrementali. Documentazione La quantità di documentazione deve essere necessaria e sufficiente per la com- prensione del codice. Una delle critiche più diffuse al metodo Agile è legata all’interpretazione del secondo punto del manifesto come un attacco all’importanza della documentazione, il metodo Agile in realtà sconsiglia soltanto la creazione di documentazione eccessivamente dettagliata in quanto questa può diventare presto obsoleta. Un’importanza fondamentale è attribuita alla presenza di commenti aggiornati nel codice. Comunicazione all’interno del team Treenet effettua briefing giornalieri per riassumere il progresso ed esporre even- tuali problematiche, come previsto nel metodo di amministrazione di progetto Scrum (in cui vengono chiamati Daily Scrum), ma il metodo non è stato adottato esplicitamente. Fasi di sviluppo Nello specifico, le fasi seguite nello sviluppo software all’interno dell’azienda sono: 1. Riunione con il cliente in cui viene definito il progetto di massima 2. Studio di fattibilità e pianificazione iniziale 3. Analisi dei requisiti, che prevede l’individuazione delle user story, la definizione dei requisiti obbligatori e la loro divisione per priorità
6 CAPITOLO 1. CONTESTO AZIENDALE 4. Progettazione, durante la quale viene definita l’architettura ad alto livello e per scenari non banali sono effettuati i diagrammi di attività 5. Codifica, svolta in parallelo seguendo le norme stabilite (sezione 1.3.2) e la pratica di Continuous Integration (CI) 6. Verifica e validazione, effettuata dagli sviluppatori stessi in un apposito server di staging. Sono effettuati test automatici soltanto nei casi l’azienda ritenga sia necessario verificare la sicurezza (vulnerability assessment) e la scalabilità dell’applicazione 7. Pubblicazione, che indica il passaggio dal server di staging a quello di produzione 8. Manutenzione, che comprende la formazione del cliente, assistenza e risolu- zione di bug Ogni progetto viene installato in un server di staging e testato prima di effettuare la migrazione al server di produzione. È inoltre seguita la pratica di Continuous Integration per minimizzare i conflitti nell’integrazione di codice modificato da più persone. La Continuous Integration prevede che vengano effettuati test di unità a ogni merge del codice nel branch principale. L’attività di testing, come menzionato, date le piccole dimensioni dell’azien- da viene effettuata dagli sviluppatori stessi: questo può rendere più difficoltosa l’individuazione di bug. Variazioni nei processi di sviluppo Nello sviluppo web è aggiunta una fase di design e presentazione del layout del sito al cliente, che lo dovrà approvare prima di passare alla fase di sviluppo (modifiche ridotte sono comunque permesse anche in seguito all’approvazione del layout). L’azienda deve inoltre raccogliere o realizzare i materiali necessari per la creazione del sito, solitamente testi, eventuali elementi grafici come icone e banner, e fotografie fornite dai clienti o scattate in sede su richiesta. Le fasi di pianificazione del progetto, analisi dei requisiti e progettazione architet- turale e di dettaglio sono svolte in modo più esaustivo se il prodotto da realizzare non è mai stato sviluppato dall’azienda o sono coinvolte tecnologie nuove, sono invece semplificate nel caso di prodotti di portata ridotta, che prevedono esclusi- vamente sviluppo front-end o con cui l’azienda ha maggiore esperienza. Durante l’analisi dei requisiti, i casi d’uso sono spesso sostituiti da user story tipiche del metodo Agile, che definiscono i requisiti di alto livello in linguaggio naturale. Ho fatto uso di user story nel corso del tirocinio. Tracciamento dei requisiti I requisiti sono tracciati grazie al product backlog, un documento informale usato nello sviluppo Agile per organizzare i requisiti in ordine di priorità e associarli alle user story da cui sono ricavati a ai test di accettazione che saranno usati per verificarne l’adempimento. Le attività di amministrazione di progetto e tracciamento
1.3. PROCESSI PRODUTTIVI 7 dei requisiti sono solitamente effettuate usando i tool di project management Agile offerti da Team Foundation Server (TFS). Avendo lavorato quasi sempre in autonomia, non ho potuto valutare in modo esaustivo l’applicazione di queste pratiche all’interno dell’azienda. 1.3.1 Tecnologie utilizzate Le tecnologie principalmente utilizzate dall’azienda sono: ∗ .NET Framework Framework sviluppato da Microsoft utilizzato nello svi- luppo del software. L’azienda al momento utilizza soprattutto il framework ASP.NET MVC, che estende le funzionalità di .NET ∗ Team Foundation Server Prodotto Microsoft che facilita l’amministrazione di progetto e il controllo di versione ∗ SQL Server Prodotto Microsoft utilizzato con SQL Server Management Studio (SSMS) per la gestione di basi di dati ∗ HTML, CSS e Javascript Linguaggi utilizzati nello sviluppo front-end ∗ Suite Adobe Per attività di design e grafica ∗ Stack LAMP Software stack scelta per lo sviluppo su Linux Alcuni linguaggi sono mantenuti dall’azienda per retrocompatibilità, come Re- port Program Generator (RPG IV) su AS/400, ancora utilizzato da alcuni clienti come software gestionale, particolarmente nel settore assicurativo, calzaturiero e di trasporti. Strumenti di supporto Il sistema operativo correntemente installato nelle macchine aziendali è Windows 10. Come strumenti di supporto allo sviluppo Treenet adopera un calendario interno, comune a tutti i dipendenti, in cui sono segnati impegni e riunioni. Sono inoltre usati strumenti per la generazione di report di lavoro per i singoli dipendenti che descrivono il lavoro svolto, la priorità e il tempo impiegato per svolgerlo. Al momento l’azienda usa principalmente le funzionalità di project management offerte da TFS, in particolare i suoi tool a supporto della metologia Agile, che consentono la gestione del product backlog, pianificazione dei periodi di sprint e gestione di bug e issues. L’Integrated Development Environment (IDE) scelto dall’azienda per la codifica è Visual Studio, e i sistemi di controllo di versione utilizzati sono Git e TFVC, associati a TFS.
8 CAPITOLO 1. CONTESTO AZIENDALE 1.3.2 Norme Le norme di codifica seguite dall’azienda sono quelle indicate nella documentazione Microsoft [13]. Nello sviluppo web, l’azienda si attiene alle direttive World Wide Web Consortium (W3C) e alle best practices indicate da Google. 1.4 Propensione all’innovazione Come menzionato precedentemente, la clientela di Treenet è principalmente compo- sta da piccole e medie imprese con esigenze simili, che spesso desiderano soluzioni personalizzate, adattabili a necessità future. È importante per l’azienda poter aggiungere tempestivamente nuove funzionalità ed eseguire la manutenzione dei prodotti realizzati, questo la porta a fare uso di tecnologie già consolidate e diffuse e operare in maniera reattiva, rispondendo alle necessità dei singoli clienti. Alcune scelte sono dettate dalla necessità di retrocompatibilità con i prodotti dei clienti. Un’eccezione è rappresentata dai prodotti volti a facilitare i processi interni a Treenet stessa, che sono realizzati di iniziativa dell’azienda e comprendono funzionalità di gestione di progetto, calendario e messaggistica. Alcuni di essi potranno essere successivamente destinati anche al pubblico. Le tecnologie esistenti e la relativa formazione sono quindi frequentemente aggiornate, e la scelta delle tecnologie viene effettuata prima di iniziare lo sviluppo di ogni progetto. Cambiamenti drastici nelle tecnologie utilizzate sono tuttavia rari e valutati con accortezza, come la decisione dell’azienda di passare dalla programmazione in Visual Basic utilizzando .NET alla programmazione in C# utilizzando ASP.NET MVC. Nel caso si riscontri un miglioramento nella velocità di scrittura del codice, e nella sicurezza e performance delle applicazioni, l’azienda è consapevole che la necessità di effettuare nuova formazione dei dipendenti viene compensata nel tempo con un ritorno sull’investimento.
Capitolo 2 Strategia aziendale Questo capitolo descrive i problemi affrontati nel corso del tirocinio e la loro relazione con la strategia di sviluppo aziendale, obiettivi e vincoli del progetto, e le motivazioni della scelta del tirocinio. 2.1 Azienda e stage Treenet valuta positivamente la possibilità di offrire stage in azienda a studenti e neolaureati: la presenza di personale proveniente dall’ambiente accademico può portare innovazione nell’azienda, spingendola ad acquisire nuove metodologie di lavoro e conoscere le tecnologie incontrate dai tirocinanti nel corso degli anni universitari. Lo stage consente ai tirocinanti di entrare a contatto con l’ambiente lavorativo, e al contempo permette all’azienda di portare avanti lo sviluppo di progetti con esito incerto o su cui i dipendenti non possono al momento soffermarsi, entrambi ne possono quindi trarre beneficio. La principale difficoltà incontrata dall’azienda nella collaborazione con istituti universitari per lo svolgimento di stage curriculari (in questo caso della durata di due mesi) è riuscire a integrare il tirocinante in progetti complessi o di importanza critica per l’azienda in un periodo di stage relativamente breve. Il coinvolgimento di persone che stanno per inserirsi nel mondo del lavoro e che hanno già goduto della formazione universitaria, riuscendo quindi ad essere rapidamente produttive, permette allo stage di essere effettuato anche in un’ottica di inserimento di nuove risorse umane nell’ambiente aziendale. 2.2 Scopo del progetto di stage Il progetto di stage prevedeva la realizzazione dell’interfaccia di due applicazioni web secondo le specifiche concordate con i rispettivi clienti, partendo dalla creazione delle bozze grafiche, e la collaborazione allo sviluppo lato back-end di una delle due applicazioni, destinata ad uso intranet, utilizzando ASP.NET MVC. I verbali redatti durante le riunioni con entrambi i clienti, che ho utilizzato per definire le user story e i requisiti, erano già forniti dall’azienda. 9
10 CAPITOLO 2. STRATEGIA AZIENDALE Nello sviluppo dell’applicazione di dominio pubblico mi è stata posta la scelta di utilizzare lo stack Windows, Apache, MySQL, PHP (WAMP) oppure il CMS aziendale. Avendo già fatto uso dello stack WAMP nello sviluppo del progetto del corso di Tecnologie Web, ho scelto di utilizzare il CMS aziendale, Webstarter. L’unico CMS che avevo incontrato in precedenza era Wordpress, che peraltro avevo usato in modo marginale, ero quindi interessata alla struttura di Webstarter. Inoltre l’utilizzo di Webstarter, realizzato in C# su .NET, mi avrebbe potuto dare da subito una panoramica concreta delle possibilità offerte dallo sviluppo basato su questo framework. HTML CSS ... HTML CSS ... Webstarter PHP C# .NET MySQL Apache SQL Server IIS WAMP Webstarter Figura 2.1: Stack tecnologici tra cui potevo scegliere nello sviluppo dell’applicazione Questo progetto mi avrebbe anche consentito di essere una delle prime persone ad utilizzare la versione corrente di Webstarter e confrontare opinioni su possibili miglioramenti nell’interfaccia (usabilità, presenza di helper sufficienti per l’utilizzo da parte di utenti senza background tecnico) e l’introduzione di nuove funzionalità (come syntax highlighting del codice HTML e CSS per facilitare le modifiche). Le ultime due settimane di tirocinio, se tutti gli obiettivi da raggiungere nelle prime sei settimane fossero stati soddisfatti, avrebbero dovuto essere dedicate ad attività di analisi, sviluppo e testing sulla nuova versione di Webstarter, con obiettivi più specifici da definire nel corso del tirocinio. Gli obiettivi generali stabiliti per il tirocinio sono stati: ∗ Acquisizione di informazioni dettagliate e operative sulle principali attività aziendali in ambito di sviluppo web ∗ Apprendimento dei processi aziendali ∗ Formazione sui linguaggi di programmazione e sugli strumenti utilizzati dal- l’azienda nella creazione di template grafici e nello sviluppo delle applicazioni stabilite nel Piano di Lavoro ∗ Collaborazione alle attività di sviluppo software di progetti web già avviati o da avviare
2.3. OBIETTIVI DEL TIROCINIO 11 2.3 Obiettivi del tirocinio Nel Piano di Lavoro, redatto prima dell’inizio del tirocinio, sono stati descritti obiettivi obbligatori e desiderabili specifici con granularità settimanale. Settimana Attività 1 Formazione e configurazione dell’ambiente di lavoro 2 Analisi dei Requisiti e realizzazione di due bozze grafiche per lo sviluppo front-end di due applicazioni web 3 Sviluppo dell’User Interface (UI) dell’applicazione n.1 (pubblica) 4 Sviluppo dell’UI dell’applicazione n.2 (intranet) 5 Verifica, validazione e pubblicazione dell’applicazione n.1, stesura del nuovo Manuale Utente di Webstarter 6 Verifica, validazione e pubblicazione dell’applicazione n.2 7e8 Attività di analisi, sviluppo e testing sul CMS aziendale Tabella 2.1: Attività pianificate I principali obiettivi stabiliti sono stati quindi i seguenti: Obiettivi obbligatori ∗ Realizzazione di due bozze grafiche di siti web ∗ Realizzazione dell’interfaccia di un’applicazione web pubblica ∗ Realizzazione dell’interfaccia di un’applicazione web intranet ∗ Collaborazione ad attività di sviluppo lato back-end, verifica e validazione Obiettivi desiderabili ∗ Stesura del Manuale Utente di Webstarter ∗ Attività di analisi, sviluppo e testing sulla nuova versione di Webstarter Ho effettuato la scelta di utilizzare il CMS aziendale nello sviluppo dell’applica- zione n.1 nel corso del tirocinio. Nella pratica, le attività di verifica e validazione si sono rivelate piuttosto ridotte, ho quindi principalmente collaborato allo sviluppo back-end dell’applicazione n.2, specialmente nel corso della quinta settimana di stage. Per quanto riguarda il lavoro da svolgere nelle ultime due settimane di stage, inizialmente era prevista come obiettivo desiderabile l’implementazione di nuove funzionalità su Webstarter, che è
12 CAPITOLO 2. STRATEGIA AZIENDALE stata in seguito sostituita con analisi, testing e miglioramento del codice esistente seguendo le norme di codifica stabilite e il pattern Model View Controller (MVC). Le attività stabilite hanno subito delle modifiche dal punto di vista cronologico rispetto a quanto pianificato, ma le ho portate a termine entro i tempi previsti.
22 mag 2017 28 mag 2017 4 giu 2017 11 giu 2017 18 giu 2017 25 giu 2017 2 lug 2017 9 lug 2017 16 lug 2017 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 SETTIMANA 1 Formazione e configurazione 2.3. OBIETTIVI DEL TIROCINIO SETTIMANA 2 dell'ambiente di lavoro SETTIMANA 3 Analisi dei Requisiti e realizzazione di due bozze grafiche per lo sviluppo frontend di due applicazioni web Sviluppo dell'UI dell'applicazione n.1 (pubblica) SETTIMANA 4 SETTIMANA 5 Sviluppo dell'UI dell'applicazione n.2 (intranet) SETTIMANA 6 Verifica, validazione e pubblicazione dell'applicazione n.1, stesura del nuovo Manuale Utente di Webstarter SETTIMANE 7 E 8 Verifica, validazione e pubblicazione dell'applicazione n.2 Attività di analisi, sviluppo e testing su Webstarter Figura 2.2: Diagramma di Gantt delle attività pianificate 13
14 CAPITOLO 2. STRATEGIA AZIENDALE 2.4 Vincoli Le attività svolte durante il tirocinio sono sottostate ai seguenti vincoli tecnologici, metodologici e temporali. 2.4.1 Vincoli tecnologici I vincoli tecnologici stabiliti per il progetto di stage sono i seguenti: ∗ Il progetto di tirocinio doveva essere svolto in ambiente Windows ∗ Il lavoro doveva essere svolto utilizzando una macchina aziendale su cui era installato il sistema operativo Windows 10 ∗ La codifica doveva essere effettuata utilizzando l’IDE Visual Studio (2017) ∗ Dovevo fare uso del framework ASP.NET MVC e del CMS aziendale, o dello stack WAMP in alternativa a quest’ultimo ∗ Dovevo fare uso del Database Management System (DBMS) SSMS ∗ Dovevo fare uso di TFS per il controllo di versione ∗ Dovevo effettuare la realizzazione delle bozze grafiche usando Adobe Creative Suite Non ho ricevuto direttive stringenti per la raccolta di user story e il tracciamento dei requisiti, ho quindi seguito la pratica aziendale di utilizzare le funzionalità di gestione di progetto di TFS. 2.4.2 Vincoli metodologici Dovendo realizzare il progetto di stage prevalentemente in autonomia, non ho seguito perfettamente le pratiche dello sviluppo Agile. Mi sono attenuta alla pianificazione descritta nel Piano di Lavoro e alle indicazioni che mi sono state fornite in azienda. Ho utilizzato gli strumenti di supporto descritti nel Capitolo 1 (sezione 1.3.1), in particolare il calendario e i report di lavoro. Ho effettuato comunicazioni formali grazie al servizio di posta elettronica aziendale, e comunicazioni informali e brevi chiarimenti attraverso LAN Messenger. Nella realizzazione dell’applicazione intranet, durante la quale ho lavorato a fianco di uno degli sviluppatori, ho utilizzato TFS (associato a Git) per il versionamento e ho seguito la pratica di CI, facendo commit atomici quando possibile. Nello sviluppo che coinvolgeva Webstarter ho lavorato in autonomia creando un branch apposito per le mie modifiche con TFS (in questo caso invece associato a TFVC). Ho svolto test di accettazione manuali facendo uso del product backlog.
2.5. SCELTA DEL PROGETTO DI STAGE 15 2.4.3 Vincoli temporali Gli obiettivi obbligatori stabiliti dovevano essere raggiunti in un massimo di 320 ore, come previsto nel Piano di Lavoro. Ho lavorato dalle 8:30 alle 12:30 e dalle 14:00 alle 18:00. Ho effettuato due giorni di assenza, recuperando in seguito le ore nel corso delle ultime tre settimane di tirocinio. 2.5 Scelta del progetto di stage La scelta dell’azienda dove svolgere il progetto di stage è stata autonoma. Ero a conoscenza del fatto che l’azienda si occupasse principalmente di sviluppo web, per il quale finora ho avuto un maggiore interesse. Volevo entrare in contatto con le metodologie pratiche di sviluppo e design di siti web, soffermandomi maggiormente sullo sviluppo front-end e svolgendo entrambi i ruoli di web designer e web developer. Avevo già utilizzato Adobe Illustrator in precedenza, ma mai in modo approfondito. Nel corso del tirocinio avrei anche avuto modo di partecipare attivamente ad attività di produzione, sotto supervisione, realizzando prodotti che sarebbero stati poi approvati dai clienti stessi. Era quindi necessario che i prodotti rispettassero pienamente le aspettative dei clienti. Lo sviluppo in .NET e l’utilizzo di ulteriori prodotti Microsoft che non avevo mai incontrato prima del tirocinio mi avrebbero consentito di acquisire conoscenze base di tecnologie diffuse sul mercato, ma a me completamente sconosciute. Ad esclusione di ASP.NET MVC, che è open-source dal 2009, durante il tirocinio avrei fatto uso di un buon numero di tecnologie proprietarie con cui avrei potuto avere difficoltà a familiarizzare in autonomia. Microsoft offre versioni gratuite (community o express) dei suoi prodotti, ma spesso con funzionalità ridotte rispetto alle versioni professionali. Nel corso degli anni universitari ho prevalentemente utilizzato la piattaforma Linux e sfruttato le tecnologie open-source disponibili, avere la possibilità di uti- lizzare prodotti proprietati avrebbe quindi potuto offrirmi un confronto utile tra tecnologie e filosofie diverse. Infine, lavorare in una realtà aziendale di piccole dimensioni avrebbe potuto fornirmi delle competenze trasversali e darmi la possibilità di entrare in contatto con tematiche commerciali e di interazione con i clienti, spesso sottovalutate in ambito puramente tecnico e affidate ad un unica persona (ad esempio, nel metodo Scrum il product owner è l’unico membro del team a comunicare con il cliente e raccogliere le user story). Gli svantaggi sono invece individuabili in una parziale incapacità di pianificare adeguatamente un singolo progetto senza che questo subisca interruzioni dettate dalle esigenze contingenti. 2.5.1 Obiettivi personali Ho stabilito i seguenti obiettivi personali per il tirocinio: ∗ Piena realizzazione delle funzionalità richieste dall’azienda
16 CAPITOLO 2. STRATEGIA AZIENDALE ∗ Formazione nello sviluppo front-end in ambito lavorativo. In particolare, svolgimento di entrambe le funzioni di web designer e web developer, che sono solitamente assegnate a figure professionali differenti ∗ Collaborazione allo sviluppo back-end e familiarizzazione con Visual Studio e .NET, che non avevo mai utilizzato in passato ∗ Confronto tra le tecnologie scelte dall’azienda per lo svolgimento del progetto e le tecnologie con cui ho precedentemente lavorato
Capitolo 3 Resoconto del tirocinio Questo capitolo descrive la pianificazione del tirocinio, i problemi progettuali, tecnologici e applicativi incontrati e i risultati ottenuti. 3.1 Pianificazione Il Piano di Lavoro prevedeva che il progetto di stage fosse svolto in 320 ore, divise in 8 settimane a tempo pieno. Le attività sono state organizzate con granularità settimanale, come descritto nel Capitolo 2 (tabella 2.1). Durante la fase di pianificazione è stata effettuata l’analisi dei rischi, la definizione delle interazioni con il tutor aziendale e la scelta delle principali tecnologie da utilizzare. La pianificazione iniziale ha subito qualche variazione, ciò nonostante gli obiettivi stabiliti nel Piano di Lavoro sono stati raggiunti entro il termine del tirocinio. Maggiori informazioni sulle modifiche apportate alla pianificazione sono presenti in questo capitolo, nella sezione 3.2. 3.1.1 Analisi dei rischi Nel corso della pianificazione ho individuato i rischi tecnologici, organizzativi e relativi ai requisiti in cui sarebbe stato possibile incorrere. Rischi tecnologici La mia mancata familiarità con ASP.NET MVC comportava una certa incertezza sulla fattibilità del raggiungimento degli obiettivi entro i tempi stabiliti. Non ero a conoscenza di quanto lo stack .NET fosse complesso, né di quanto tempo avrei impiegato per raggiungere un livello di conoscenza sufficiente. L’utilizzo del CMS aziendale rappresentava un’ulteriore incognita: essendo stato sviluppato internamente all’azienda non ne conoscevo la struttura né la curva d’apprendimento. Rischi organizzativi La mancanza di obiettivi dettagliati nel Piano di Lavoro e l’utilizzo del metodo Agile, meno strutturato di altri modelli di sviluppo del software, avrebbero potuto 17
18 CAPITOLO 3. RESOCONTO DEL TIROCINIO Tecnologia Conoscenza SQL Buona HTML, CSS e Javascript Buona Adobe Suite Scarsa Microsoft Visual Studio Scarsa .NET stack Nessuna Microsoft SQL Server e SSMS Nessuna Team Foundation Server Nessuna Tabella 3.1: Familiarità iniziale con le tecnologie portare a modifiche frequenti della pianificazione. Era quindi importante assicurarsi di aver soddisfatto i requisiti obbligatori previsti prima di iniziare altre attività. Rischi nei requisiti L’utilizzo di user story, informali e ad alto livello, e l’eventuale necessità di effettuare modifiche frequenti ai requisiti potevano rendere impossibile il loro soddisfacimento. Questo rischio è stato accentuato anche da una pianificazione poco dettagliata. 3.1.2 Interazioni con il tutor aziendale Ho effettuato brevi riunione giornaliere con il tutor aziendale, solitamente al ter- mine della giornata lavorativa, per riassumere il progresso del giorno ed esporre eventuali dubbi e problematiche. Non sono avvenute revisioni di progresso ufficiali, l’avanzamento è stato soltanto misurato in modo informale attraverso le riunioni giornaliere e il confronto con le scadenze previste nella pianificazione. 3.1.3 Diagrammi UML Ho utilizzato diagrammi dei package e delle classi durante la fase di progettazione svolta sull’applicazione n.2 e durante l’attività di analisi sul CMS aziendale. Ho utilizzato il programma StarUML, che avevo già usato nella realizzazione dei diagrammi Unified Modeling Language (UML) del progetto del corso di Ingegneria del Software. 3.1.4 Tecnologie adottate In questa sezione descrivo le tecnologie utilizzate nel corso del tirocinio e le loro prin- cipali caratteristiche, soffermandomi soprattutto sui framework .NET e ASP.NET MVC, essendo le tecnologie con le quali avevo meno esperienza e su cui ho effettuato una maggiore attività di formazione.
3.1. PIANIFICAZIONE 19 Il framework .NET è un framework software sviluppato da Microsoft composto da due elementi principali: la libreria .NET e il Common Language Runtime (CLR). . NET FRAMEWORK CLR . NET library JIT Figura 3.1: CLR e libreria .NET CLR Il Common Language Runtime gestisce il codice durante la sua esecuzione ed offre vari servizi, tra cui gestione di memoria e thread, verifica della sicurezza del codice (code safety verification, type safety verification), compilazione, garbage collection e compilazione Just-In-Time (JIT). Analogamente a quanto accade al bytecode in Java, il codice .NET non viene trasformato direttamente in linguaggio macchina, viene invece prima convertito in un linguaggio intermedio: il Common Intermediate Language (CIL). La compilazione JIT converte CIL in linguaggio macchina. Numerosi linguaggi sono supportati dal Framework .NET, tra cui C#, Visual Basic, Visual F#, C++/CLI. Il CLR implementa un’infrastruttura di type-and-code-verification, il Common Type System (CTS), che regola la rappresentazione dei tipi. Il codice che è gestito dal CLR (codice scritto in un linguaggio di programma- zione convertibile in CIL, come C# o VB) è chiamato managed code, mentre il codice che non lo è (cioè codice convertito direttamente in codice nativo) viene chiamato unmanaged code. Il managed code è conforme al CTS. .NET library La libreria .NET (Framework Class Library (FCL)) è una collezione orientata agli oggetti di tipi riutilizzabili, la cui base è la Base Class Library (BCL). Ogni linguaggio di programmazione eseguibile sul CLR può usare la libreria .NET. La struttura dello stack .NET è illustrata nella figura 3.2.
20 CAPITOLO 3. RESOCONTO DEL TIROCINIO . NET STACK VB C# C ++ ... CLS ASP . NET MVC ADO . NET LINQ XML ... FCL BCL CLR Windows Figura 3.2: Stack delle componenti del framework .NET La FCL contiene diverse componenti, tra cui ADO.NET e Language-Integrated Query (LINQ). ADO.NET è una componente dedicata al Data Access, sia da/verso database relazionali che non. Entity Framework, che è descritto in maggior dettaglio nella sezione 3.1.4, fa parte di ADO.NET. LINQ è una componente che offre funzionalità di querying di fonti di dati, tra cui database relazionali e non relazionali, file XML e liste, standardizzando il modo di interrogare fonti diverse. Permette di debuggare facilmente le query ed effettua controlli a tempo di compilazione. I principali obiettivi di .NET sono: ∗ Fornire un ambiente di programmazione ad oggetti consistente, indipendente- mente dal tipo di applicazione creata e dal fatto che il codice sia memorizzato ed eseguito localmente, eseguito localmente ma distribuito, o eseguito da remoto. ∗ Fornire un ambiente di esecuzione del codice che minimizzi i conflitti di deployment e versionamento, promuova l’esecuzione sicura del codice ed elimini i problemi di performance di linguaggi interpretati. ∗ Mantenere degli standard di codifica in modo da assicurare che il codice basato su .NET sia facilmente integrabile con codice esterno. ASP.NET MVC 5.2.3 ASP.NET MVC è un framework MVC costruito su ASP.NET che estende le funzio- nalità del framework .NET per quanto riguarda lo sviluppo web. È frequentemente associato al linguaggio di programmazione C#.
3.1. PIANIFICAZIONE 21 ASP.NET MVC, come suggerito dal nome, fa uso del Design Pattern MVC. Prevede quindi la divisione delle applicazioni in tre componenti: Model: Contiene la business logic dell’applicazione View: Contiene la parte dell’applicazione visibile dagli utenti, con cui essi possono interagire Controller: Contiene la parte l’application logic dell’applicazione, gestisce il flusso dell’applicazione e risponde agli input degli utenti Può essere presente una quarta componente: ViewModel: Componente passica che raggruppa e seleziona informazioni da uno o più Model per facilitarne la rappresentazione nella View (raccogliendo tutti e soltanto i dati necessari alla View) Controller Model DB View Figura 3.3: Design pattern MVC In ASP.NET MVC, è comune associare ogni View a uno o più Action Methods. Un Action Method è mappato 1:1 con un’interazione dell’utente (es. click di un link, submit di una form). ASP.NET MVC utilizza il paradigma ”Convention over configuration” (anche chiamato ”Coding by convention”), che prevede l’utilizzo di convenzioni e default intuitivi per velocizzare lo sviluppo e diminuire il numero di decisioni necessarie per gli sviluppatori. In particolare, nel pattern MVC, cartelle di View e Controller con la stessa nomenclatura che precede il suffisso View e Controller sono automaticamente collegate. La figura 3.4 mostra un esempio della struttura tipica di un progetto di tipo “Applicazione Web” che segue il pattern MVC in Visual Studio. In questo esempio, la View contenute nella cartella Home sono automaticamente associate a un Controller chiamato HomeController, e metodi di HomeController che ritornano ActionResult con nomi corrispondenti. Nello specifico, la view chiamata Index.cshtml è automa- ticamente associata al metodo public ActionResult Index() di HomeController.cs. Questo è sempre valido se non vengono sovrascritte le impostazioni di default mappando manualmente le View con gli opportuni Controller e relativi metodi nel file RouteConfig.cs, solitamente presente nella cartella App_Start.
22 CAPITOLO 3. RESOCONTO DEL TIROCINIO Figura 3.4: Struttura tipica di un progetto di tipo ”Applicazione Web” con pattern MVC ASP.NET MVC offre la possibilità di creare View parziali renderizzabili all’inter- no di altre View, riducendo la necessità di duplicare codice e riutilizzare elementi comuni. I principali elementi comuni dell’interfaccia sono solitamente contenuti nella View parziale _Layout.cshtml. I nomi delle View parziali iniziano con un underscore per convenzione. Entity Framework 6.1.3 Entity Framework è un framework dotato di funzionalità di Object Relational Mapping (ORM) che gestisce centralmente l’accesso e il salvataggio di informazioni in basi di dati, minimizzando la quantità di codice per il Data Access da scrivere esplicitamente. Dalla versione 6 è stato separato da .NET e inserito in ADO.NET. Entity Framework può essere usato secondo i paradigmi: Code-first Utile in presenza di codice esistente, il codice definisce il database Database-first Utile in presenza di database esistente, semplifica la creazione e modifica del model a partire dal database
3.1. PIANIFICAZIONE 23 APPLICAZIONE Interfaccia ORM ENTITY FRAMEWORK Entity Data Model ADO.NET DATABASE Figura 3.5: Struttura di Entity Framework Model-first Entity Framework crea il database basandosi sul modello creato, le modifiche al database partono sempre dal modello La classe DbContext è una componente importante di Entity Framework che collega la business logic dell’applicazione ai dati persistenti, utilizzando i Design Pattern Repository e Unit of Work. DbContext rappresenta un database, mentre DbSet rappresenta una singola tabella o view del database, è quindi comune trovare più DbSet associati a un solo DbContext. Entrambe le applicazioni su cui ho lavorato durante il tirocinio facevano uso di Entity Framework. Razor 3.2.3 La sintassi Razor è composta da markup Razor, codice HTML e C#, e permette di inserire variabili lato server nelle pagine web [6]. Le pagine contenenti sintassi Razor hanno solitamente l’estensione .cshtml. Il carattere @ è usato per inserire codice C# all’interno di porzioni di codice HTML, ad esempio: Il valore della variabile var è: @var. Microsoft Visual Studio 2017 Visual Studio è un IDE che permette la creazione di numerose tipologie di applica- zioni multipiattaforma, da semplici app mobile a soluzioni complesse. Oltre a facilitare e velocizzare la stesura del codice grazie a funzionalità di syntax highlighting e Intellisense (visualizzazione della lista di membri di una classe o un namespace, informazioni sui parametri, completamento automatico), permette di effettuare test, debugging, analisi della qualità del codice e della performance delle applicazioni. Può essere integrato con Team Foundation Server (sezione 3.1.4), facilitando il controllo di versione.
24 CAPITOLO 3. RESOCONTO DEL TIROCINIO Durante il tirocinio ho utilizzato Visual Studio nella scrittura del codice, ad eccezione di modifiche rapide a singoli file, per le quali ho utilizzato Notepad++ (sezione 3.1.4). Team Foundation Server TFS è un prodotto Microsoft che offre varie funzionalità che agevolano lo svilup- po del software collaborativo, tra cui controllo di versione, gestione di progetto (particolarmente per quanto riguarda sviluppo Agile), CI, ecc. TFS può essere integrato con Visual Studio (Visual Studio Team Services) e associato a Git (distribuito, sistema di default) o Team Foundation Version Control (TFVC) (centralizzato) per il controllo di versione. Ho utilizzato entrambi i sistemi durante il corso del tirocinio, Git durante le prime sei settimane di tirocinio, TFVC nelle restanti due settimane. Microsoft SQL Server 2016 Microsoft SQL Server è un prodotto Microsoft composto da un Database Engine e varie tecnologie di supporto, utilizzato con il DBMS SQL Server Management Studio, che permette la configurazione e la gestione di tutte le componenti di SQL Server. HTML5, CSS3 e Javascript HTML5, CSS3 e Javascript sono linguaggi utilizzati nello sviluppo front-end. HTML5 è un linguaggio di markup utilizzato per strutturare contenuti web, quinta versione dello standard Hypertext Markup Language (HTML). CSS3 è la terza versione dello standard Cascading Style Sheets (CSS), linguaggio di stile utilizzato per descrivere la presentazione di pagine web. Javascript è un linguaggio di scripting client-side principalmente utilizzato per manipolare il comportamento di pagine web lato client. Bootstrap 3.3.7 Bootstrap è un framework HTML, CSS e Javascript sviluppato per facilitare la crea- zione di siti responsive, che mantengono accessibilità e usabilità indipendentemente dalla grandezza dello schermo del dispositivo da cui sono visualizzati. Segue il principio del design mobile-first, che prevede la realizzazione di layout per schermi mobile e tablet prima di passare allo sviluppo di layout desktop come strategia per realizzare più facilmente siti responsive. Webstarter Il CMS aziendale Webstarter, sviluppato in ASP.NET MVC, è stato creato per velocizzare lo sviluppo di applicazioni web da parte degli sviluppatori, fornendo già la parte back-end dell’applicazione, e permette ai clienti di scegliere quali funzionalità incluse nel CMS inserire nel proprio sito attraverso specifici moduli,
3.1. PIANIFICAZIONE 25 tra cui gallerie di immagini, slideshow e presentazioni, news e blog, cataloghi di prodotti e funzionalità di e-commerce. Consente inoltre ai clienti di inserire contenuti (testuali e multimediali) e pagine, e modificare porzioni prestabilite del loro sito tramite una specifica area riservata. Nel corso del tirocinio ho principalmente interagito con i moduli relativi a gallerie di immagini, slideshow, news e cataloghi di prodotti. Webstarter fa uso di Tag e ShortCode che individuano porzioni specifiche del sito, come menu, dati del cliente, gallerie immagini e form di contatto, e permettono di richiamarle in altre pagine, velocizzando lo sviluppo. Altre tecnologie Adobe Suite Ho utilizzato Adobe Suite, e in particolare Adobe Illustrator (applicazione per l’editing di immagini vettoriali) per realizzare le bozze grafiche delle interfacce delle applicazioni. StarUML Ho utilizzato il software StarUML per la creazione dei diagrammi UML. TeXstudio Ho utilizzato TeXstudio, editor di testo per LATEX, per svolgere la stesura del Manuale Utente. Notepad++ Per effettuare modifiche rapide a file di configurazione ho utilizzato l’editor di testo Notepad++. Google Chrome Nello sviluppo front-end ho fatto uso frequente dei Developer Tools di Google Chrome, che hanno velocizzato la codifica e la correzione di errori.
26 CAPITOLO 3. RESOCONTO DEL TIROCINIO 3.2 Lavoro svolto Il lavoro svolto durante il tirocinio è illustrato nella tabella 3.2, con ripartizione settimanale. Rispetto a quanto stabilito nel Piano di Lavoro (tabella 2.1), si possono notare delle modifiche nelle attività svolte durante la quinta, settima e ottava settimana di tirocinio. Settimana Attività 1 Formazione e configurazione dell’ambiente di lavoro 2 Analisi dei Requisiti e realizzazione di due bozze grafiche per lo sviluppo front-end di due applicazioni web 3 Sviluppo dell’UI dell’applicazione n.1 (pubblica) utilizzando Webstarter 4 Sviluppo dell’UI dell’applicazione n.2 (intranet), utilizzando ASP.NET MVC e Visual Studio 5 Verifica, validazione e pubblicazione dell’applicazione n.1, stesura del nuovo Manuale Utente di Webstarter, collaborazione allo sviluppo back-end nell’applicazione n.2 6 Verifica, validazione e pubblicazione dell’applicazione n.2 7 Analisi e testing di Webstarter 8 Riorganizzazione del codice di una porzione di Webstarter secondo il pattern Model View Controller e le convenzioni di codifica Microsoft Tabella 3.2: Lavoro svolto Le motivazioni di queste variazioni sono principalmente da attribuire al fatto che l’utilizzo del CMS aziendale abbia ridotto di molto la necessità di effettuare attività di verifica dell’applicazione n.1, e alla sovrastima delle ore necessarie per il testing back-end dell’applicazione n.2. Ho quindi contribuito allo sviluppo di una nuova funzionalità per l’applicazione n.2 durante la quinta settimana di stage, collaborando con un altro sviluppatore. Per quanto riguarda il lavoro da effettuare nelle ultime due settimane di tirocinio, ho concordato con il tutor aziendale che fosse più opportuno effettuare un’analisi della nuova versione del CMS ed effettuare delle modifiche strutturali piuttosto che avviare l’implementazione di nuove funzionalità. Il lavoro che ho svolto può essere suddiviso nelle seguenti attività principali: 1. Sviluppo web (assegnato alle prime sei settimane di tirocinio) (a) Realizzazione dell’interfaccia di un’applicazione web pubblica (applica- zione n.1) volta a presentare l’azienda del cliente, i servizi offerti da essa ed esempi di lavorazioni
3.2. LAVORO SVOLTO 27 (b) Realizzazione dell’interfaccia e collaborazione allo sviluppo back-end di un’applicazione intranet (applicazione n.2) principalmente volta a facilitare il controllo e la gestione di dati relativi a prodotti e vendite dell’azienda cliente 2. Attività di analisi, testing e sviluppo su Webstarter (assegnate alle ultime due settimane di tirocinio) Di seguito includo una breve descrizione di queste tre attività prima di esporre le attività di Formazione, Analisi dei Requisiti, Progettazione, Codifica, e Verifica e Validazione svolte per ognuna di esse. Realizzazione dell’interfaccia di un’applicazione web pubblica La creazione dell’interfaccia della prima applicazione web comprendeva la realizza- zione della bozza grafica, l’approvazione di questa da parte del cliente, la successiva realizzazione dell’interfaccia utilizzando Webstarter, l’ottimizzazione per i motori di ricerca (SEO) del sito e la pubblicazione dell’applicazione. Il prodotto finale doveva contenere una homepage e una galleria dei prodotti che permettesse la loro visualizzazione full screen, una pagina di news, una pagina che contenesse i contatti dell’azienda, e una o più pagine che descrivessero i servizi e le lavorazioni offerte dall’azienda del cliente. Realizzazione dell’interfaccia e collaborazione allo sviluppo back-end di un’applicazione intranet (applicazione n.2) Lo sviluppo dell’applicazione n.2 era già stato avviato dall’azienda: i Controller, il Data Access Layer (DAL) e alcuni dei Model erano già stati sviluppati, per il completamento dell’interfaccia era quindi sufficiente soltanto effettuare la creazione dei Model rimanenti, realizzare i ViewModel, i fogli di stile e le View, inserirendo il codice HTML necessario all’interfaccia nelle apposite View (utilizzando la sintassi Razor). Durante la quinta settimana di tirocinio ho partecipato allo sviluppo di una nuova funzionalità che doveva permettere la gestione delle etichette dei prodotti dell’azienda. Attività di analisi, testing e sviluppo su Webstarter Come precedentemente menzionato, durante il tirocinio ho concordato con il tutor aziendale che sarebbe stato più opportuno effettuare delle modifiche alla versione correntemente in via di sviluppo di Webstarter piuttosto che avviare lo sviluppo di nuove funzionalità. Il CMS infatti non seguiva perfettamente il pattern Model View Controller e la nomenclatura di campi e metodi non era uniforme, ciò combinato alla grandezza dell’applicazione rendeva più difficile la comprensione e la manutenzione del codice.
Puoi anche leggere