• Non ci sono risultati.

Valutazione frameworks di sviluppo

N/A
N/A
Protected

Academic year: 2021

Condividi "Valutazione frameworks di sviluppo"

Copied!
50
0
0

Testo completo

(1)

Committente

Orion EDP SA

Corso di laurea

Ingegneria informatica (PAP)

Modulo

M00002P

Anno

2019

(2)
(3)

Indice

Abstract v

Progetto assegnato vii

Consegna . . . vii Compiti . . . vii Obbiettivi . . . vii Tecnologie . . . vii 1 Introduzione 1 2 Requisiti e specifiche 3 2.1 La sicurezza . . . 3 3 Analisi 5 3.1 Metodologia . . . 5

3.2 Open source vs Software Proprietario . . . 6

3.3 Dati clienti in rete . . . 8

3.3.1 Recupero tramite VPN . . . 9

3.3.2 Recupero tramite replica del database . . . 9

3.3.3 Recupero tramite conversione database . . . 10

3.3.4 Recupero tramite RPC . . . 10

3.3.5 Soluzione scelta . . . 10

4 Software design 13 4.1 TMS con WEBDEV . . . 13

4.2 TMS con altre tecnologie - PEVN . . . 14

4.3 Struttura ambiente di sviluppo . . . 15

5 Implementazione 17 5.1 Nuovo progetto . . . 17

5.1.1 WEBDEV . . . 18

(4)

ii INDICE

5.2 Codice . . . 24

5.2.1 WEBDEV . . . 25

5.2.2 PEVN stack . . . 26

6 Conclusione 29 6.1 Sviluppo User Interface . . . 29

6.1.1 Responsive design . . . 29

6.1.2 Templating . . . 32

6.2 Manutenibilità . . . 32

6.3 Gestione dei dati . . . 32

6.4 Testabilità . . . 33

6.5 Documentazione, comunità e maturità . . . 34

6.6 Curva d’apprendimento . . . 35

6.7 Dipendenza da terze parti . . . 35

6.8 Particolarità . . . 36

6.8.1 IDE e codice . . . 36

6.8.2 Flessibilità . . . 37

6.8.3 Linguaggio naturale . . . 37

(5)

Elenco delle figure

3.1 Esempio struttura web Orion EDP . . . 8

5.1 Creazione nuovo progetto WEBDEV . . . 18

5.2 Assistente nuovo progetto WEBDEV . . . 18

5.3 Scelta tema WEBDEV . . . 19

5.4 Aggiunta database WEBDEV . . . 20

5.5 Scelta tipo di database WEBDEV . . . 20

5.6 Definizione di una tabella WEBDEV . . . 21

5.7 Definizione di una relazione WEBDEV . . . 22

5.8 Scelta tipo di database WEBDEV . . . 22

5.9 Configurazione collegamento interfaccia e dati WEBDEV . . . 25

5.10 Inizializzazione interfaccia WEBDEV . . . 26

5.11 Salvataggio modifiche WEBDEV . . . 26

5.12 Campo di testo Vuetify . . . 26

5.13 Watch in Vuejs . . . 27

6.1 Esempio layout con Bootstrap,larghezza schermo >= 576px . . . 30

6.2 Esempio layout con Bootstrap,larghezza schermo < 576px . . . 30

6.3 Esempio layout con WebDev,larghezza schermo >= 480px . . . 31

6.4 Esempio layout con WebDev,larghezza schermo < 480px . . . 31

6.5 Esempio test d’unità con WEBDEV . . . 33

6.6 Discussioni nel forum della PC SOFT, agosto 2019 . . . 34

6.7 Cifre del forum ufficiale di Vuejs, agosto 2019 . . . 34

(6)
(7)

Abstract

Le aziende che sviluppano software devono scegliere quali strumenti utilizzare per creare i propri prodotti. Il progetto consiste nel capire come analizzare un framework di sviluppo e, specificatamente, studiare il programma WEBDEV.

Durante l’esecuzione sono stati definiti quali sono i criteri di valutazione di un qualunque strumento ideato per la programmazione di applicazioni web. Questi principi includono la manutenibilità, la testabilità, la documentazione, la dipendenza da terze parti, la curva d’ap-prendimento e lo sviluppo dell’interfaccia grafica. Inoltre, sviluppando in parallelo due pro-grammi, sono stati confrontati dei prodotti open source e una soluzione proprietaria come WEBDEV. In questo modo si è riusciti a evidenziare i pro e i contro di entrambi i sistemi. I risultati hanno mostrato che la differenza tra software aperto e chiuso non è solamente il costo, ma che la scelta dipende da diversi fattori e dal contesto aziendale. Adoperare una soluzione open source tuttavia non esclude l’utilizzo simultaneo di software proprietario e viceversa.

Gli elementi presenti in questo rapporto sono un’ottima base per aiutare il processo decisio-nale nella selezione delle tecnologie da utilizzare per lo sviluppo di applicazioni web. Software vendors have to choose which tools to use to create their products. The project consists in understanding how to analyze a development framework and, specifically, to study the WEBDEV application.

During execution, the evaluation criteria of any tool designed to developing web applications were defined. These principles include maintainability, testability, documentation, depen-dence on third parties, learning curve and the tools to draw the graphic interface. Fur-thermore, by developing two programs in parallel, open source products and a proprietary solution such as WEBDEV were compared. In this way it was possible to highlight the pros and cons of both systems. The results showed that the difference between open and closed software is not only the cost, but that the choice depends on different factors and the busi-ness context. However, using an open source solution does not exclude the simultaneous use of proprietary software and vice versa.

The elements present in this report are an excellent basis to help the decision-making process in the selection of technologies to be used for the development of web applications.

(8)
(9)

Progetto assegnato

Consegna

La ditta Orion EDP SA sviluppa software gestionali per ambienti Windows utilizzando il framework WINDEV della ditta francese PC SOFT. Vista l’esigenza del mercato, vogliono capire come rendere disponibili le funzionalità dei loro programmi in ambito Web. PC SOFT offre un analogo framework per lo sviluppo Web, WEBDEV, e l’azienda deve decidere se questo programma è adatto allo sviluppo di gestionali web, simili ai loro attuali software.

Compiti

Analizzare il framework WEBDEV sviluppando ad esempio il prototipo di un software

• Con WEBDEV

• Con altri strumenti (a scelta)

Analizzare i limiti riscontrati in WEBDEV, il possibile riutilizzo del codice, la facilità di integra-zione di componenti esterni (ad esempio: jQuery, Bootstrap, . . . ), valutare la scalabilità del sistema, le prestazioni in esecuzione, l’accessibilità, la user experience e l’integrazione di database diversi da quello proposto da PC SOFT.

Obbiettivi

Fornire tutti gli elementi necessari per valutare l’utilizzo o meno del framework WEBDEV

Tecnologie

(10)
(11)

Capitolo 1

Introduzione

Orion EDP SA sviluppa software per gestire salari, contabilità, immobili, le attività com-merciali e uffici (timesheet). Tutti i programmi sono stati scritti per Windows utilizzando il framework WINDEV della ditta francese PC SOFT. Da qualche anno, da parte dei clien-ti, iniziano ad arrivare sempre più richieste di nuove funzionalità. Ad esempio vorrebbero accedere da remoto ai programmi quando sono fuori ufficio o visualizzare le informazioni sul telefono. Al momento Orion EDP offre una soluzione cloud sfruttando le RemoteApp1 di Microsoft Windows. Questa soluzione però comporta svariate configurazioni e possibi-li problemi di visuapossibi-lizzazione. Per questo motivo vogpossibi-liono iniziare a sviluppare apppossibi-licazioni web. PC SOFT offre anche un framework per lo sviluppo di questo tipo di software chiamato WEBDEV. Questi prodotti utilizzano un linguaggio proprietario chiamato WLanguage. Orion EDP vuole quindi capire se il prodotto WEBDEV risponde alle loro esigenze o se devono prevedere di utilizzare altri strumenti.

1

La tecnologia delle RemoteApp consente di estrapolare i programmi da un server configurato come host di sessione remoto (Session Host) e visualizzarli come se venissero eseguiti nel computer locale dell’utente finale.[1]

(12)
(13)

Capitolo 2

Requisiti e specifiche

Non sono presenti requisiti per lo studio di WEBDEV o per l’impiego di altri framework open source. È importante però sottolineare che nella valutazione di questi strumenti si analizzi anche l’integrazione con i sistemi esistenti. Infatti i dati dei programmi sono attualmente locati dai clienti stessi in un formato file proprietario della PC SOFT chiamato HFSQL Clas-sic. Quindi per sviluppare applicazioni per visualizzare parte dei dati esistenti, è richiesto di valutare il metodo migliore per esporre i dati in rete.

2.1

La sicurezza

Sviluppare un’applicazione web vuol dire rendere disponibili dati, anche sensibili, in internet. Per questo motivo non bisogna tralasciare l’aspetto della sicurezza. Esistono ormai diverse vulnerabilità tra cui:

SQL Injections: è una vulnerabilità che permette ad una persona malintenzionata

di inserire codice SQL per accedere o corrompere il contenuto del database. Si ve-rifica quando ad esempio il contenuto di un campo input non è filtrato permettendo l’inserimento di caratteri escape.

Cross Site Scripting (XSS): è una tecnica che permette di iniettare codice lato client,

tipicamente Javascript, nell’output di un’applicazione web. Fornisce la possibilità di eseguire script nel browser della vittima che possono dirottare le sessioni utente o reindirizzare quest’ultimo verso siti dannosi.

Broken authentication and session management: indica tutti gli aspetti della

ge-stione dell’autenticazione degli utenti e delle sessioni. Se le credenziali d’autentica-zione o gli identificatori di sessione non sono protetti correttamente e costantemente,

(14)

4 Requisiti e specifiche

un hacker ha la possibilità di hijackare1una sessione attiva e assumere l’identità di un utente.

Referenze dirette non sicure ad oggetti: accade quando un’applicazione web

espo-ne la referenza di un’implementazioespo-ne interna di un oggetto. L’implementazioespo-ne inter-na di un oggetto può contenere file, record di database o chiavi di database. Manipo-lando questi dati un hacker ha la possibilità di accedere ai dati personali dell’utente.

Configurazioni riguardo alla sicurezza eseguite male: configurazioni eseguite

ma-le per disattenzione, anche solo non controllate regolarmente e aggiornate, rendono il nostro sistema vulnerabile. È importante che ogni componente del sistema come l’applicazione, l’application server,il web server, i framework utilizzati e i database, sia configurato nel modo più adeguato possibile.

Cross-site Request Forgery (CSRF): è un attacco che forza un utente ad

esegui-re un’azione non voluta in un’applicazione web dove è attualmente autenticato. Gli obiettivi di questo tipo di attacco sono le richieste di cambio di stato, come ad esem-pio far cambiare all’utente l’indirizzo email, far trasferire dei fondi. Sono utilizzate delle tecniche di Social Engineering2per indurre l’utente ad eseguire queste azioni. Durante l’analisi del framework WEBDEV è importante comprendere se questi problemi sono gestiti dal prodotto o che accorgimenti deve lo sviluppatore prendere per rendere l’applicazione web il più sicura possibile.

1

Il termine hijacking indica una tecnica di attacco informatico che consiste nel modificare opportunamente dei pacchetti dei protocolli TCP/IP al fine di dirottare i collegamenti ai propri siti web e prenderne il controllo.[2]

2

Il social engineering riunisce una serie di tecniche rivolte a spingere le persone a fornire informazioni per-sonali come password o dati bancari o a consentire l’accesso a un computer al fine di installare segretamente software dannosi.[3]

(15)

Capitolo 3

Analisi

3.1

Metodologia

Lo scopo di questo progetto è quello di fornire criteri oggettivi per la valutazione del fra-mework. Di seguito sono riportati quelli che sono risultati più importanti per la scelta di uno strumento di sviluppo. Sono principi che valgono per l’analisi di qualsiasi strumento per lo sviluppo software.

Sviluppo User Interface: in questo punto sono considerati gli elementi che l’utente

vede e con i quali può interagire, ma anche la User Experience. Quest’ultima in-dica quegli aspetti non direttamente visibili all’utente ma che sono comunque parte integrante dell’applicazione e che ne determinano l’usabilità. Alcuni esempi possono essere la velocità di caricamento della pagina, la gestione degli errori, sia del pro-gramma ma anche dell’utilizzatore finale, la latenza, ecc. È importante sviluppare una buona UX/UI, User Experience / User Interface, perché permette ai clienti di ottene-re confidenza con i prodotti venduti dall’azienda facilitando l’utilizzo delle applicazioni senza che debbano leggersi un manuale di 1000 pagine.

Manutenibilità: nel tempo è possibile che diversi sviluppatori lavorino sul programma

ed è importante che si riesca a eseguire le modifiche senza troppi problemi. Questo criterio misura il supporto alla manutenibilità di un’applicazione sviluppata con il fra-mework. Indica quanto sono tracciati i cambiamenti e gli aggiornamenti, con quanta facilità si può ripristinare il programma ad un determinato momento e quanto lavoro richiede inserire o modificare del codice. I programmi evolvono ed è importante quindi che la complessità sia gestibile il più facilmente possibile. Più supporto c’è da parte del framework riguardo alla manutenibilità e meno tempo richiederanno le modifiche al codice.

Gestione dei dati: un altro rilevante punto nella valutazione degli strumenti utilizzati

(16)

6 Analisi

framework per astrarre i dati. Inoltre si analizzano le funzionalità implementate per evitare di perdere dati importanti e per, in caso di necessità, recuperarli. A dipendenza dello strumento adottato cambia anche il modo in cui i dati possono essere spostati su altre piattaforme o altri ambienti.

Testabilità: parametro che denota quanto è facile eseguire il debug1delle applicazio-ni e gli strumenti forapplicazio-niti per testare il programma. Spesso questo è legato anche alla IDE2utilizzata.

Documentazione: valutazione della documentazione disponibile del framework. È

tenuto conto della struttura dei manuali e della facile reperibilità delle informazio-ni. Della documentazione confusa, non chiara o che presenta lacune porta a una programmazione più lenta e rende più difficile il design dell’applicazione.

Comunità e maturità: nella valutazione di un framework bisogna misurare anche lo

stato di sviluppo e la comunità che sta dietro a questi progetti. Non solo la documenta-zione è importante ma anche forum, chat, contatti con altri sviluppatori che adoperano lo stesso strumento, ecc...

Curva d’apprendimento: a dipendenza dello strumento scelto, può essere più

diffi-cile imparare a sfruttare pienamente le funzionalità di un framework, che si traduce in più tempo da dedicare all’istruzione dei programmatori.

Dipendenza da terze parti: valutare anche quanto uno strumento dipende da

ter-ze parti è un requisito importante nella valutazione dei prodotti utilizzati durante lo sviluppo.

3.2

Open source vs Software Proprietario

Come mostrato nei capitoli precedenti, la scelta di un framework per lo sviluppo di applica-zioni è sempre difficile. I fattori che influenzano la decisione non sono pochi. Inoltre spesso ci si trova davanti alla domanda se adottare o meno tecnologie open source. La differenza tra software open source e proprietario non è solamente che il primo è gratis e il secondo a pagamento. Sia che in un caso che nell’altro esistono vantaggi e svantaggi.

Un software open source offre un supporto gratuito. Infatti, soprattutto se il prodotto è molto conosciuto e utilizzato, in rete si possono trovare forum, newsletter e chat live per

1

Il debugging (o semplicemente debug), in informatica, nell’ambito dello sviluppo software, indica l’attività che consiste nell’individuazione e correzione da parte del programmatore di uno o più errori (bug) rilevati nel software[...][4]

2

Un ambiente di sviluppo integrato (in lingua inglese integrated development environment ovvero IDE, an-che integrated design environment o integrated debugging environment, rispettivamente ambiente integrato di progettazione e ambiente integrato di debugging), in informatica, è un software che, in fase di programmazione, aiuta i programmatori nello sviluppo del codice sorgente di un programma.[5]

(17)

di uno staff di una sola azienda. Le aziende che adoperano software open source possono anche implementare le loro correzioni o modifiche al programma, dato che il codice sorgente è disponibile. In generale i progetti open source non dipendono da un singolo fornitore e in questo modo il rischio di ritrovarsi con un software orfano, cioè con un prodotto abbandonato dagli sviluppatori originali, è ridotto.

Esistono naturalmente anche degli svantaggi nell’adottare tecnologie open source. Ad esempio anche se tante persone lavorano ad un progetto non per forza il problema riscon-trato da un’azienda sarà prioritario. Grandi ditte disposte a pagare il supporto di più alto livello di un prodotto proprietario possono però ottenere tutta l’attenzione e il tempo dei for-nitori del software in uso, mentre molto più raramente si può trovare questo tipo di servizio da parte della comunità open source.

Il software proprietario molto spesso è pensato per un mercato più specifico rispetto ai prodotti open source. WEBDEV ad esempio fa parte della suite della PC SOFT incentrato sullo sviluppo software di tipo gestionale. Inoltre la stabilità di un prodotto commerciale è in teoria garantita nel tempo, fornendo aggiornamenti e nuove funzionalità, dato che è nell’interesse della ditta venditrice. Un altro vantaggio è quello di ottenere tutti i diritti sul prodotto disegnato e ci si aspetta che il fornitore procuri updates, risoluzioni di errori e documentazione aggiornata mano a mano che nuove versioni del framework sono rilasciate. Il supporto dei programmi proprietari è specifico e frutto di anni di esperienza con il prodotto scelto. L’istruzione sul programma e il supporto dopo la vendita sono di norma più diretti e sintetici, rendendo più facile il raggiungimento di un obiettivo.

Nonostante i vantaggi del software proprietario esistono anche dei temi a sfavore, lasciando da parte i costi da sostenere. Infatti spesso chi sviluppa con questo tipo di prodotto deve adattarsi al programma. La dipendenza dal programma implica che se il fornitore decide di fornire una certa funzionalità in un certo modo non conveniente all’azienda cliente, quest’ul-tima si dovrà comunque adattare a meno di non essere l’acquirente che procura il maggior fatturato al venditore. Un altro svantaggio è quello del software opaco. Se il programma non funziona l’unica cosa che uno sviluppatore può fare è inoltrare al fornitore i messaggi d’errore, dump della memoria e screenshot e aspettare che questo sia risolto, rischiando anche che non sia un problema di grande priorità per chi vende il framework.

(18)

8 Analisi

3.3

Dati clienti in rete

Una parte di questo progetto è dedicata allo studio di una soluzione per recuperare i dati attualmente presenti dai clienti di Orion EDP ed esporli, anche solo parzialmente, in rete. L’obiettivo è che i consumatori possano usufruire di un servizio web tramite il quale inserire e leggere i dati utilizzati nei programmi attuali dell’azienda. Quest’analisi è importante perché mostra la flessibilità del database utilizzato dai programmi dell’azienda e quali strumenti d’integrazione offre WEBDEV per la risoluzione di questi problemi.

Come accennato in precedenza, i dati sono attualmente salvati in un database su file locale, per ogni cliente, chiamato HFSQL Classic.

Orion Cloud Azienda A Azienda B Internet Azienda A Azienda B Applicazioni web Webservices

(19)

Di seguito sono riportate le possibili soluzioni vagliate.

3.3.1

Recupero tramite VPN

Uno dei vantaggi di programmare con software della stessa azienda è che molto probabil-mente queste applicazioni comunicano facilprobabil-mente tra di loro. Infatti WEBDEV può utilizzare gli stessi database che può utilizzare WINDEV. Una possibile soluzione può essere quella di stabilire un collegamento VPN, anche dinamico, tra la ditta del cliente e Orion EDP. Con questo metodo possono essere riutilizzate le stesse logiche già programmate con WIN-DEV, dato che il codice scritto è per gran parte condivisibile con la suite dei programmi PC SOFT. I database non sono toccati o modificati e rimangono dal cliente, in quanto le applicazioni web sviluppate accederanno direttamente ai dati locati dai consumatori. Chiaramente questa opzione implica che il dato passa da due collegamenti e che quindi de-vono essere affidabili: il primo dal cliente a Orion e il secondo da Orion verso l’utente finale. Per quanto Orion possa aver controllo sulla seconda parte della struttura, la connessione tra la ditta del cliente e Orion può risultare instabile. Inoltre la latenza di accesso rischia di essere elevata in quanto per accedere al database si utilizzano chiamate di sistema.

3.3.2

Recupero tramite replica del database

PC SOFT propone diversi sistemi di replica per il suo database HFSQL: logged, universal e replica tra HFSQL C/S servers. La logged replication, come si può intuire, genera un giornale sul quale sono inserite tutte le modifiche effettuate.

La replica del database permetterebbe di migliorare le prestazioni in quanto l’applicazio-ne web leggerebbe i dati localmente senza l’applicazio-necessariamente passare da una conl’applicazio-nessiol’applicazio-ne VPN o eseguire chiamate ad un webservice. Inoltre si può gestire la replica in modo unidi-rezionale o bidiunidi-rezionale, aggiungendo un ulteriore controllo sulla scrittura di nuovi dati sul database del cliente.

3

Tipo di servizio cloud, accessibile agli utenti tramite un thin client via Web Browser. Tutto quanto è gestito da chi fornisce il servizio: l’infrastruttura, le applicazioni, la virtualizzazione,i dati, ecc... L’utente finale deve solo utilizzare il programma

(20)

10 Analisi

Lo svantaggio principale di questa soluzione è che la soluzione proposta da PC SOFT non è totalmente parametrizzabile, che si traduce in più codice da scrivere.

3.3.3

Recupero tramite conversione database

Una delle possibili soluzioni verificate è quella della conversione del database HFSQL Clas-sic in HFSQL Client/Server. Questo tipo di database si può, a differenza del ClasClas-sic, esporre in rete su una determinata porta. Grazie alla possibilità di gestire anche l’autenticazione, l’applicazione web potrebbe connettersi direttamente al database sul quale sono presenti i dati.

Eseguendo questa conversione si ha la possibilità di riutilizzare il codice già scritto nei pro-grammi della Orion. Non sono richieste particolari configurazioni e il cliente ha il controllo sugli accessi al proprio database.

Questa impostazione tuttavia implica un gran lavoro di migrazione su database HFSQL Classic già in produzione, generando possibili errori durante la conversione dei dati. Le prestazioni del database possono anche peggiorare, in quanto anche i programmi Orion locali non accedono più direttamente ai file ma attraverso una connessione di rete.

3.3.4

Recupero tramite RPC

Un’altra possibilità fornita da PC SOFT è quella di rendere disponibile il database tramite RPC4. In parole tecniche basta installare un loro software e il database sarà disponibile su una determinata porta. In questo modo si può accedere direttamente al database, anche se con alcune limitazioni.

Il principale vantaggio di questa configurazione è che non esiste un passaggio di conversio-ne e che si può esporre in rete il database in pochi e semplici passaggi.

3.3.5

Soluzione scelta

Data la necessità di una soluzione a breve termine e i vincoli posti si è optato per replicare i dati su un database uguale, cioè su file HFSQL, su un server della ditta Orion EDP. Infatti un requisito è quello di evitare che il cliente sia esposto direttamente in rete e che sia esclusiva-mente lui a inviare e/o richiedere dati, anche automaticaesclusiva-mente. In questo modo il processo di replica è avviato dal cliente stesso, ogni tot minuti. Anche se questa soluzione non è realtime, un aggiornamento automatico ogni 5 minuti è stato reputato sufficiente. Inoltre

4

In informatica, l’espressione chiamata di procedura remota (RPC, o Remote Procedure Call) si riferisce all’attivazione da parte di un programma di una procedura o subroutine attivata su un computer diverso da quello sul quale il programma viene eseguito. Quindi l’RPC consente a un programma di eseguire subroutine "a distanza" su computer remoti, accessibili attraverso una rete.[6]

(21)

potrà sempre cambiare strumento, mantenendo la logica già scritta; il secondo invece è la possibilità di vendere o fornire in caso di richieste un servizio di API per recuperare i dati del cliente.

5

I termini front end (in sigla FE) e back end (in sigla BE) (anche scritti, con grafia meno corretta, ma più comune, frontend o front-end e backend o back-end) in informatica denotano, rispettivamente, la parte visibile all’utente di un programma e con cui egli può interagire - tipicamente una interfaccia utente - e la parte che permette l’effettivo funzionamento di queste interazioni.[7]

(22)
(23)

Capitolo 4

Software design

Per capire i vantaggi e gli svantaggi dell’utilizzo del framework WEBDEV si è deciso di svi-luppare in parallelo due prototipi di un software, se non identici, il più simili possibile. Il primo è programmato con WEBDEV, il secondo invece utilizzando altri strumenti; per sem-plicità chiameremo l’ultimo con l’acronimo PEVN che sta per PostgreSQL Express.js Vue.js Node.js che sono le componenti principali del software. L’obiettivo è capire se è possibile raggiungere determinati scopi e mostrare indicativamente con quanta facilità. Il software scelto è un prototipo di Talent Management System (TMS), un’applicazione web pensata per tre tipi di utenti: gli operatori, le aziende e i candidati. La piattaforma permette la condi-visione di annunci di lavoro da parte delle aziende e la ricerca per i candidati. Il programma permetterà quindi di testare il framework sui temi comuni ad un’applicazione: la gestione degli utenti, la gestione degli accessi, il salvataggio di file sul server, form d’iscrizione, ge-stione dei dati, comunicazione con database, creazione dinamica dei contenuti, responsive design, integrazione con componenti esterni, le prestazioni, la facilità di programmazione, la scalabilità del sistema e il supporto.

4.1

TMS con WEBDEV

Il software è sviluppato utilizzando il framework WEBDEV. I dati sono salvati nello stesso database utilizzato e generato dall’applicazione programmata sfruttando le tecnologie open source, PostgreSQL. In questo modo si ha avuto la possibilità di verificare la possibilità e la facilità di integrazione di un database diverso da HFSQL che è quello sviluppato e proposto da PC SOFT. Le icone impiegate nell’applicazione web sono ricavate da Fontawesome 1. Per autenticare l’utente sono eseguite delle chiamate HTTP al servizio Firebase Auth.

1

(24)

14 Software design

4.2

TMS con altre tecnologie - PEVN

Le tecnologie principali scelte per questo programma sono:

Node.js: runtime di JavaScript per l’esecuzione di codice lato server. È open source

sotto licenza MIT

Express.js: framework per applicazioni web per Node.js. Open source sotto licenza

MIT

Sequelize: Node.js ORM2 basato su Promises3, compatibile con i database Postgre-SQL, MyPostgre-SQL, MariaDB, SQLite e Microsoft SQL Server. È open source sotto licenza MIT

Vue.js: è un framework Javascript per lo sviluppo di interfacce web e single page

application. È open source sotto licenza MIT

Vuetify: framework di componenti per Vue.js che seguono le linee guida del Material

Design4. È open source sotto licenza MIT

PostgreSQL: è un completo DBMS5ad oggetti. È open source sotto licenza Postgre-SQL, simile alle licenze BSD o MIT

Firebase: backend as a service per applicazioni mobile e web. È utilizzato

unicamen-te il servizio di auunicamen-tenticazione, Firebase Auth Inoltre sono utilizzati anche questi strumenti:

• Axios: HTTP client per browser e Node.js basato su Promises. È open source sotto licenza MIT

• Helmet.js: collezione di 13 middleware per Express.js che impostano HTTP Headers alle risposte, incrementando la sicurezza dell’applicazione web. È open source sotto licenza MIT

• Vuex: è una libreria per Vue.js per la gestione dello stato. È open source sotto licenza MIT

2In informatica l’Object-Relational Mapping (ORM) è una tecnica di programmazione che favorisce

l’integra-zione di sistemi software aderenti al paradigma della programmal’integra-zione orientata agli oggetti con sistemi RDBMS. Un prodotto ORM fornisce, mediante un’interfaccia orientata agli oggetti, tutti i servizi inerenti alla persistenza dei dati, astraendo nel contempo le caratteristiche implementative dello specifico RDBMS utilizzato.[9]

3Gli oggetti Promise, in Javascript, sono usati per computazioni in differita e asincrone. Una Promise

rappresenta un’operazione che non è ancora completata, ma lo sarà in futuro.[10]

4

Il Material Design (nome in codice Quantum Paper)[1] è un design sviluppato da Google, annunciato il 25 giugno 2014 in occasione del Google I/O.[11]

5

[...]Database Management System, abbreviato in DBMS o Sistema di gestione di basi di dati, è un sistema software progettato per consentire la creazione, la manipolazione e l’interrogazione efficiente di database[12]

(25)

• Vue2Editor: editor di testo per Vue.js. È open source sotto licenza MIT

4.3

Struttura ambiente di sviluppo

Durante la programmazione di un software più metodi sono utilizzati per ottimizzare il pro-cesso di sviluppo. Ad esempio esiste il concetto di CI/CD, Continuous Integration / Conti-nuous Deliver o Deployment. Nel framework WEBDEV esiste uno strumento chiamato Soft-ware Factory che permette di gestire l’integrazione continua. Si possono creare quindi dei robot che aprono i progetti, li compilano, eseguono i test automatici ed eseguire tutte quelle operazioni necessarie allo sviluppo continuo. In un ambiente diverso da quello proposto da PC SOFT esistono soluzioni come Gitlab, Bitucket, Jenkins, Codeship e tantissimi altre proposte. Questi strumenti permettono di automatizzare i processi di test e distribuzione del software.

(26)
(27)

Capitolo 5

Implementazione

In questo capitolo sono riportati esempi che mostrano a grandi linee le differenze nell’u-tilizzo di WEBDEV rispetto allo sviluppo di un’applicazione basata su uno stack PEVN (PostgreSQL Express VueJS NodeJS).

5.1

Nuovo progetto

Non capita tutti i giorni di dover iniziare un nuovo progetto software ma il processo che porta allo stato iniziale del programma, dove si può già implementare la logica di business1, è spesso sottovalutato. A dipendenza della complessità della soluzione da sviluppare è necessario installare dipendenze, preparare gli ambienti di lavoro, le macchine per i test e per la distribuzione. Quello che è risultato dal confronto tra i due programmi, WEBDEV e il prodotto con tecnologie open source, è che WEBDEV offre un assistente dettagliato che porta velocemente a creare un nuovo progetto, che può essere utilizzato senza problemi anche da un programmatore non esperto. Nell’altro modo invece il tutto avviene tramite linea di comando e richiede quindi la conoscenza dei comandi di base per l’utilizzo di questi strumenti. Di seguito è riportato un esempio per mostrare i passaggi necessari in un modo e nell’altro.

1

In informatica l’espressione logica di business (in inglese business logic) si riferisce a tutta quella logica applicativa che rende operativa un’applicazione cioè la parte o nucleo (core) di elaborazione.[13]

(28)

18 Implementazione

5.1.1

WEBDEV

Figura 5.1: Creazione nuovo progetto WEBDEV

(29)

Figura 5.3: Scelta tema WEBDEV

All’avvio del framework si ha la possibilità di creare un nuovo progetto (fig. 5.1) eseguendo un assistente (fig. 5.2) che permette di indicarne le impostazioni e altre particolarità, come il tema grafico (fig. 5.3). WEBDEV infatti propone diversi fogli di stile di default da poter utilizzare nel programma.

(30)

20 Implementazione

Figura 5.4: Aggiunta database WEBDEV

(31)
(32)

22 Implementazione

Figura 5.7: Definizione di una relazione WEBDEV

Figura 5.8: Scelta tipo di database WEBDEV

Una volta creata l’istanza del database si può procedere alla creazione delle tabelle. Anche in questo caso il tutto avviene tramite un assistente. Inoltre esiste un assistente per definire le relazioni tra le tabelle. Basta quindi rispondere a qualche domanda, come ad esempio: "Ogni istituto ha almeno uno studente?" e "Ogni studente può avere più di un istituto?". La relazione è definita quindi in base alle risposte.

A questo punto sempre tramite assistente si crea una nuova pagina che sarà inserita nel progetto e potrà accedere ai dati presenti sul database.

(33)

backend e del frontend. La parte di presentazione è un progetto Vue.js mentre i dati sono salvati in PostgreSQL ed esposti utilizzando Express.js.

Frontend

Per inizializzare un nuovo progetto Vue.js si può utilizzare l’utility da linea di comando vue-cli che esegue un assistente per impostare e strutturare la cartella del programma:

1 vue c r e a t e [ nome_progetto ]

Durante la configurazione si possono scegliere quali componenti installare, come ad esem-pio quali strumenti per i test d’unità utilizzare, il supporto PWA, vue router (navigazione in Vue.js) o vuex (gestione dello stato in Vue.js). Il programma crea quindi tutti i file ne-cessari allo sviluppo dell’applicazione ed installerà i packages e le dipendenze nene-cessarie, sfruttando Node.js.

Per l’interfaccia e lo stile di base è stato scelto di utilizzare una libreria chiamata Vuetify che permette l’inserimento di componenti come tabelle, dialog, forms, button, ecc. Per aggiungerlo al programma bisogna eseguire il comando:

1 vue add v u e t i f y

Anche in questo caso è eseguito un assistente da linea di comando per configurare il plugin Vuetify. A questo punto si può modificare il codice per sviluppare il programma scelto.

Backend

Anche Express.js fornisce un’utility da linea di comando per la preparazione della cartella del progetto. Per iniziare basta quindi digitare i comandi:

1 express −−no−view −−g i t [ n o m e _ c a r t e l l a ] 2 npm i n s t a l l

Con il primo comando si ottiene la struttura della cartella senza la preparazione dei file che si occupano della generazione di HTML, i template engine. Infatti il compito di questo backend sarà solamente quello di esporre delle API per lavorare i dati presenti nel database. La seconda istruzione invece installa le dipendenze definite nel file package.json. Per definire la struttura del database è stato scelto di utilizzare Sequelize.js che come anticipato in precedenza si occupa di astrarre le specifiche di implementazione dei database. In questo modo si può sostituire in qualunque momento il database con uno supportato da questo strumento come: MySQL, PostgreSQL, MicrosoftSQL, MariaDB o SQL Lite.

(34)

24 Implementazione

1 npm i n s t a l l −−save s e q u e l i z e

e la relativa dipendenza in base al database scelto:

1 npm i n s t a l l −−save [ mysql2 , pg pg−h s t o r e , s q l i t e 3 , . . . ]

Sequelize.js dispone inoltre di un assistente sempre da linea di comando per creare i file necessari. Dopo averlo installato si possono eseguire i seguenti comandi per creare i file chiamati migration che servono a sequelize per preparare la struttura del database.

1 s e q u e l i z e i n i t 2

3 s e q u e l i z e model : g e n e r a t e −−name Studente −−a t t r i b u t e s nome : s t r i n g , cognome : s t r i n g , e m a i l : s t r i n g

4

5 s e q u e l i z e model : g e n e r a t e −−name I s t i t u t o −−a t t r i b u t e s nome : s t r i n g , d e s c r i z i o n e : s t r i n g

Una volta eseguiti questi comandi si possono modificare i modelli per indicare le associazioni. Nell’esempio si aggiungerà il codice seguente per creare la relazione studente -istituto:

1 ’ use s t r i c t ’;

2 module . e x p o r t s = ( s e q u e l i z e , DataTypes ) => { 3 c o n s t Studente = s e q u e l i z e . d e f i n e (’ Studente ’, { 4 nome : DataTypes . STRING ,

5 cognome : DataTypes . STRING , 6 e m a i l : DataTypes . STRING 7 } , { } ) ;

8 Studente . a s s o c i a t e = f u n c t i o n( models ) { 9 / / a s s o c i a t i o n s can be d e f i n e d here 10 Studente . belongsTo ( models . I s t i t u t o ) 11 } ;

12 r e t u r n Studente ; 13 } ;

Listing 5.1: models/studente.js

A questo punto, dopo aver definito nel file config/config.json i dati di accesso al database, si può eseguire il comando successivo per ottenere le tabelle sul database:

1 s e q u e l i z e db : m i g r a t e

5.2

Codice

L’obiettivo di WEBDEV è quello di dare la possibilità allo sviluppatore di concentrarsi il più possibile sulla logica di business. Il confronto seguente non è sul linguaggio utilizzato,

(35)

5.2.1

WEBDEV

WEBDEV permette di collegare i campi dell’interfaccia con variabili o con le definizioni delle tabelle del database. Bisogna tuttavia utilizzare delle funzioni per aggiornare e modificare quindi i dati. Dopo aver disegnato l’interfaccia, sotto un menu dedicato al componente scel-to, in questo caso un campo di tesscel-to, si indica quale variabile è direttamente collegata al campo, come si può vedere in figura 5.9. A questo punto nel codice di inizializzazione della pagina bisogna aggiornare l’interfaccia con i dati. Come si vede in figura 5.10, si utilizza una prima funzione per spostare il puntatore corrente del file "candidates" dove si trova il candidato ricercato. Eseguendo la seconda funzione, FileToPage, il programma copia au-tomaticamente i dati correnti nell’interfaccia. Si possono salvare le modifiche effettuate nel campo di testo chiamando un’altra funzione chiamata PageToFile, che esegue l’operazione inversa (fig. 5.11).

Figura 5.9: Configurazione collegamento interfaccia e dati WEBDEV

2

Il Model–view–viewmodel (MVVM) è un pattern software architetturale o schema di progettazione software.[14]

(36)

26 Implementazione

Figura 5.10: Inizializzazione interfaccia WEBDEV

Figura 5.11: Salvataggio modifiche WEBDEV

5.2.2

PEVN stack

Anche Vue.js permette di collegare stato e interfaccia.

Figura 5.12: Campo di testo Vuetify

Grazie all’attributo v-model si può collegare il campo di testo ad una variabile. Modificando questa variabile l’interfaccia sarà modificata direttamente. La differenza con WEBDEV è che l’aggiornamento è eseguito automaticamente senza dover chiamare altre funzioni. Le modifiche però in questo caso avvengono solo su variabili in memoria e non direttamente su database, come invece permette WEBDEV con le funzioni citate nel capitolo precedente. Per persistere i dati, automaticamente, si può quindi aggiungere un watcher (vedi fig. 5.13) sulla variabile utilizzata per il nome. Questo componente di Vuejs definisce una funzione che è chiamata ogni volta che la variabile è modificata e permette di definire quindi le operazioni, asincrone, per salvare le modifiche sul database.

(37)
(38)
(39)

Capitolo 6

Conclusione

Di seguito sono riportati i punti più importanti emersi durante l’analisi del framework WEB-DEV.

6.1

Sviluppo User Interface

6.1.1

Responsive design

Oggigiorno un qualsiasi sviluppatore front-end è abituato a strutturare il layout sfruttan-do un sistema a colonne chiamato "grid" (Bootstrap 12 colonne, Semantic-ui 16 colonne, Foundation 12 colonne, Materialize 12 colonne, ecc). Questi sistemi sono molto intuitivi e permettono di sviluppare il proprio layout semplicemente aggiungendo delle classi agli ele-menti HTML. Questo passo è importante perché il layout si adatta automaticamente alla dimensione dello schermo utilizzando le media query css.

Ad esempio, utilizzando Bootstrap, il layout mostrato in figura 6.1 si ottiene con il codice seguente: 1 <d i v c l a s s=" c o n t a i n e r "> 2 <d i v c l a s s=" row "> 3 <d i v c l a s s=" c o l−sm−8"> c o l−sm−8< /d i v> 4 <d i v c l a s s=" c o l−sm−4"> c o l−sm−4< /d i v> 5 < /d i v> 6 <d i v c l a s s=" row "> 7 <d i v c l a s s=" c o l−sm"> c o l−sm< /d i v> 8 <d i v c l a s s=" c o l−sm"> c o l−sm< /d i v> 9 <d i v c l a s s=" c o l−sm"> c o l−sm< /d i v> 10 < /d i v> 11 < /d i v>

Listing 6.1: Bootstrap responsive layout

Utilizzando la classe col-sm-"x", si indica che l’elemento html sarà largo x parti su 12 colon-ne. Con "sm" si indica che questo layout si applica a tutti gli schermi più grandi di 576px.

(40)

30 Conclusione

Figura 6.1: Esempio layout con Bootstrap,larghezza schermo >= 576px

Figura 6.2: Esempio layout con Bootstrap,larghezza schermo < 576px

Per gli schermi più piccoli non abbiamo definito niente e di default bootstrap fa in modo che l’elemento occupi il 100 % dello spazio. Quando si visualizza il layout su un dispositivo mobile allora è mostrato il layout presentato in figura 6.2.

La soluzione offerta da PC SOFT invece si presenta come evidenziato in figura 6.3. È presente una barra che permette di selezionare la dimensione per la quale disegnare il layout. Ad esempio per riprodurre il layout d’esempio di figura 6.1 si inizia dalla dimensione desktop inserendo gli elementi con drag&drop. Successivamente si seleziona la dimensione "Mobile" e si adatta l’interfaccia. Il sistema non richiede ulteriore codice. Questo metodo, seppur in apparenza comodo, non permette di dividere lo spazio indicando che un elemento deve essere grande il doppio di un altro presente sulla stessa riga. Con l’editor proposto in WEBDEV definire il layout in percentuali non è troppo semplice, bisogna quindi disegnare inserendo le misure giuste, il che lo rendo piuttosto scomodo. Anche questo framework dispone tuttavia di un sistema a 12 colonne (quantità modificabile) per gestire il responsive design.

(41)

Figura 6.3: Esempio layout con WebDev,larghezza schermo >= 480px

(42)

32 Conclusione

6.1.2

Templating

Il framework permette di creare dei modelli di pagina e di campo. Lo sviluppatore può definire dei modelli e, staticamente, generare delle pagine che saranno legate a questo template. Per quanto riguarda invece il caricamento dinamico del contenuto nel mondo web esistono i template engine come Pug, Mustache, ecc. Questi coomponenti si occupano di generare la pagina html in base ai dati richiesti. Il disegno delle pagine in WEBDEV avviene tramite interfaccia grafica, un classico WYSIWYG1, per questo motivo il caricamento dei dati è diverso. Lo sviluppatore ha la possibilità di collegare un campo della pagina ad una variabile nel codice o ad un oggetto presente nell’analisi. Con il termine "Analisi" WEBDEV indica lo schema del database.

6.2

Manutenibilità

WEBDEV dispone di un sistema di versionamento del codice centralizzato. I file possono essere quindi modificati da uno sviluppatore alla volta. Per versionare il codice si può uti-lizzare esclusivamente il loro sistema di gestione del codice sorgente in quanto i file sono proprietari e un sistema di versionamento come Git2non funzionerebbe correttamente. Non vi è la possibilità di utilizzare un sistema distribuito di versionamento del codice.

6.3

Gestione dei dati

Molto spesso si utilizzano degli ORM per astrarre i dati. L’Object-Relational Mapping per-mette di eseguire query ad un database utilizzando il paradigma orientato agli oggetti da un qualsiasi linguaggio. Ne esistono diversi come Hibernate per Java, Entity Framework per .NET, Core Data per MAC OS e iOS, ORM inclusi in framework di sviluppo come Djan-go o CakePHP. Questi software si occupano anche di gestire la modifica dello schema del database.

Anche WEBDEV offre questa funzionalità. Infatti esistono diverse funzioni che permettono di persistere e modificare i dati e connettori nativi per integrare diversi database.

Dato la tipologia di database, HFSQL Classic, il metodo più usato per proteggere i dati sono le copie shadow3di Windows o un sistema di backup. Infatti questa banca dati è un sistema su file. Sempre per questo motivo la migrazione di questo tipo di database è molto semplice.

1"What You See Is What You Get", "Quello che vedi è quello che ottieni" 2

Git è un software di controllo versione distribuito utilizzabile da interfaccia a riga di comando, creato da Linus Torvalds nel 2005.[15]

3

Permette la creazione manuale o automatica di copie di backup di un file, di una cartella o di uno specifico volume ad un dato momento di tempo. È usata da NTBackup e dal servizio Volume Shadow Copy per ripristinare i file.[16]

(43)

registrazione delle azioni eseguite sul sito da verificare e la sessione è salvata su un file. Successivamente si può eseguire il test caricando lo scenario, così è chiamato, registrato in precedenza. Il tool permette di emulare più connessioni simultaneamente, fino ad un massimo di 100.

Figura 6.5: Esempio test d’unità con WEBDEV

Come si può vedere in figura 6.5 il funzionamento dei test d’unità è molto semplice. Si definiscono i diversi casi da testare utilizzando la funzione "TestAddIteration" e nella fun-zione MyScenario si scrive il codice per testare la procedura. L’attributo <controller> in-dicato sul parametro della funzione di test è un’abbreviazione per evitare di scrivere Test-Check(Controller1 = bcheckemail(email)). Quando questa variabile booleana è confrontato con un altro valore se non sono uguali il test fallisce.

4

Il Test di Non Regressione si occupa di verificare che, all’atto di upgrade di un applicativo, tutte le funzionalità che devono continuare ad essere attive non vengano in alcun modo compromesse.[17]

(44)

34 Conclusione

6.5

Documentazione, comunità e maturità

Figura 6.6: Discussioni nel forum della PC SOFT, agosto 2019

Figura 6.7: Cifre del forum ufficiale di Vuejs, agosto 2019

Il poter recuperare determinate informazioni come la documentazione, risoluzioni a problemi conosciuti o discussioni, è una parte importante nella scelta di un framework. Anche la

(45)

confrontare questi numeri con la soluzione PEVN in quanto quest’ultimo è un insieme di strumenti, ma per dare un’idea della differenza nell’immagine 6.7 sono riportate le cifre del forum ufficiale di Vue.js. Si può notare che il numero di argomenti è molto simile, bisogna tener conto però che nei forum PC SOFT sono inclusi tutti i soggetti creati a partire dal 2001 mentre per Vue.js il post più vecchio risale a settembre 2016. Si può verificare inoltre che il forum di Vue.js è molto più attivo confrontando le cifre di replies in WEBDEV, circa 45’800, e i messaggi totali di Vuejs, ben 150’000.

6.6

Curva d’apprendimento

Con il termine curva d’apprendimento si indica con quanta facilità e in quanto tempo una persona apprende determinate nozioni a proposito di uno strumento. Non è un criterio che si riesce facilmente ad esprimere oggettivamente in quanto è un’espressione figurativa e dipende molto dalle esperienze dello sviluppatore. Sviluppando però due sistemi uguali con tecnologie diverse durante questo progetto si è potuto confrontare un po’ quanto si è riuscito a produrre. In aggiunta sono state ricercate nel web le diverse opinioni degli sviluppatori. In generale WEBDEV si presta ad un apprendimento rapido, pensato anche per chi non dispone di molta esperienza come programmatore. Tuttavia alcune volte ci si trova davanti alla barriera della lingua in quanto la documentazione in inglese non sempre è chiara. Anche Vue.js è di facile apprendimento, soprattutto rispetto ad altri framework di frontend come Angular o React. Inoltre si possono sfruttare le conoscenze apprese in javascript per tutti gli strumenti utilizzati in questo progetto. Infatti anche Express.js funziona con javascript. Rispetto a WEBDEV credo necessiti di maggior esperienza in ambito web per produrre ottimi risultati.

6.7

Dipendenza da terze parti

Chi utilizza WEBDEV non dipende da terze parti ma solamente da PC SOFT. Questo può essere positivo, se si pensa che per ogni problema ci si rivolge solamente a un ente, ma anche negativo, in quanto se una cosa non funziona bisogna aspettare che l’azienda risolvi l’inghippo. Inoltre non si ha la possibilità di sostituire una componente del progetto facilmen-te in quanto il funzionamento ottimale di WEBDEV implica un forfacilmen-te accoppiamento delle parti del progetto. Dopo aver testato integrazioni con componenti esterni, la conclusione è quella di utilizzare unicamente gli strumenti e le soluzioni proposte da PC SOFT. Questo

(46)

36 Conclusione

Figura 6.8: Esempio IDE WEBDEV

non vuol dire che l’integrazione non è fattibile ma che si rischia di ottenere del codice mal strutturato per inserire una funzionalità che WEBDEV, attualmente, non offre.

6.8

Particolarità

6.8.1

IDE e codice

Un’altra particolarità del framework WEBDEV è che si deve utilizzare l’ambiente di sviluppo integrato proposto da PC SOFT. Un piccolo svantaggio è che attualmente esiste solamente in lingua francese. Permette una buona gestione del progetto e un buon aiuto durante la scrittura del codice, mostrando per le funzioni i parametri richiesti e suggerendo i nomi delle variabili. Esiste inoltre la possibilità di utilizzare una "Charte de programmation" che serve ad aggiungere dei prefissi in base all’oggetto che si sta definendo. Ad esempio se si sta istanziando una variabile "Button" si può scrivere il nome della variabile ed

(47)

automaticamen-funzionalità e di quanto debba essere visible. Il punto positivo è che si possono creare funzioni globali nelle quali sviluppare la logica mentre nei componenti inserire tutto il codice che gestisce l’interfaccia grafica. La figura 6.8 è un esempio. Si possono vedere tutti i posti dove inserire i metodi legati all’ogetto "PAGE_main" come l’inizializzazione, il caricamento della pagina lato client, ecc.

Dato che le pagine WEBDEV si disegnano trascinando componenti, il codice per lo sviluppo dell’interfaccia non è richiesto o caso contrario è molto meno se confrontato all’utilizzo di altri framework.

6.8.2

Flessibilità

Data l’architettura del framework WEBDEV l’integrazione di componenti esterni non è im-mediata. Un esempio concreto è quello ch nelle due applicazioni sviluppate l’intenzione era quella di sfruttare il servizio Firebase Auth per la gestione dell’autenticazione degli utenti. Con l’applicazione non WEBDEV si è potuto integrare l’SDK fornita da Firebase e quindi utilizzare direttamente le funzioni della libreria, senza dover gestire chiamate HTTP, token, ecc. Con WEBDEV invece integrare e utilizzare l’SDK è risultato difficile tanto da aver scelto l’utilizzo delle API REST del servizio. Queste funzionano correttamente, trattando-si essenzialmente di chiamate HTTP, ma la gestione dello stato dell’autenticazione e della consistenza delle richieste del client devono essere gestite manualmente. A differenza di un sistema aperto, sviluppato in modo da poter sostituire ogni componente in un qualsia-si momento, o quaqualsia-si, il framework WEBDEV non rende facile l’integrazione di componenti esterni.

6.8.3

Linguaggio naturale

Il framework WEBDEV permette l’inserimento di codice sia in lingua inglese che in lingua francese, infatti quasi tutte le parole chiave sono tradotte nelle due lingue. Inoltre c’è la possibilità di usare costrutti del linguaggio naturale, come ad esempio:

1 n o m e v a r i a b i l e i s a s t r i n g 2 n o m e v a r i a b i l e are a s t r i n g 3 n o m e v a r i a b i l e are a s t r i n g s 4

5 nome1 , nome2 i s a s t r i n g 6 nome1 , nome2 are s t r i n g s 7

(48)

38 Conclusione

8 n o m e v a r i a b i l e e s t une chaîne 9 n o m e v a r i a b i l e s o n t des chaînes

Questa funzionalità però rischia di confondere il programmatore riservando parole chiavi che non hanno alcuna implicazione tecnica e che aumentano il codice scritto senza aggiungere nessuna informazione supplementare.

6.9

Conclusione personale

WEBDEV fa parte di una suite di framework di sviluppo nati inizialmente per Windows e pensati per generare gestionali. L’impressione generale che ho avuto utilizzando questo strumento è che sia molto buono a livello di gestione dei dati, di come permette di scrivere il codice e di come sia intuitivo. Il programma permette davvero di concentrarsi sulla logica e lo sviluppatore non deve preoccuparsi troppo di questioni legate a configurazioni, a come deve essere codificato o decodificato un file o una stringa, a come collegare i dati all’inter-faccia e tante altre cose. Quindi, con una buona preparazione e istruzione, sono dell’idea che possa essere utilizzato anche per sviluppare progetti più o meno complessi. Purtroppo però gli utenti di internet attuali, come si può verificare visitando molti siti o servizi web, ri-chiedono una buona interfaccia grafica, un programma che sia facile da utilizzare e intuitivo. Nonostante credo che il software creato con questo framework deve essere prima di tutto funzionale, e solamente in secondo piano "bello da vedere", WEBDEV non rende facile la vita a chi ha la necessità disegnare interfacce complesse, responsive e di qualità. La ge-stione dello stile nelle pagine, per chi è abituato ad utilizzare CSS non è molto comodo e ottenere quello che si vuole non è sempre facile. In conclusione un possibile sviluppo futuro di questo progetto può essere quello di definire un programma generale che permetta di testare tutti i criteri di valutazione di un framework.

(49)

Sitografia

[1] Microsoft remote app. https://www.windowserver.it/2015/02/

windows-server-2012-r2-introduzione-alle-remoteapp/, 2 luglio 2019.

[2] Hijacking.https://it.wikipedia.org/wiki/Hijacking, 27 luglio 2019.

[3] Social engineering. https://www.avast.com/it-it/c-social-engineering, 27 luglio 2019.

[4] Debug. https://it.wikipedia.org/wiki/Debugging, 16 luglio 2019.

[5] Ide. https://it.wikipedia.org/wiki/Integrated_development_environment, 16 luglio 2019.

[6] Rpc. https://it.wikipedia.org/wiki/Chiamata_di_procedura_remota, 23 luglio 2019.

[7] Backend e frontend.https://it.wikipedia.org/wiki/Front-end_e_back-end, 06 agosto 2019.

[8] Font awesome.https://it.wikipedia.org/wiki/Font_Awesome, 25 luglio 2019. [9] Object-relational mapping. https://it.wikipedia.org/wiki/

Object-relational_mapping, 18 luglio 2019.

[10] Promise. https://developer.mozilla.org/it/docs/Web/JavaScript/

Reference/Global_Objects/Promise, 18 luglio 2019.

[11] Material design. https://it.wikipedia.org/wiki/Material_Design, 18 luglio 2019.

[12] Dbms. https://it.wikipedia.org/wiki/Database_management_system, 18 luglio 2019.

[13] Business logic. https://it.wikipedia.org/wiki/Logica_di_business, 20 agosto 2019.

(50)

40 SITOGRAFIA

[14] Model-view-viewmodel. https://it.wikipedia.org/wiki/

Model-view-viewmodel, 19 agosto 2019.

[15] Git. https://it.wikipedia.org/wiki/Git_(software), 18 luglio 2019.

[16] Copie shadow. https://it.wikipedia.org/wiki/Copia_shadow, 20 agosto 2019. [17] Test di non regressione. http://www.assioma.net/blog/portfolio-item/

no-regression-test/, 21 agosto 2019.

[18] Test end-to-end. https://codingjam.it/test-end-end-con-nightwatch-js/, 13 agosto 2019.

[19] Web frameworks. https://ibit.temple.edu/wp-content/uploads/2011/03/

IBITWebframeworks.pdf, 11 luglio 2019.

[20] Open source vs software proprietario. http://www.optimusinfo.com/downloads/

white-paper/open-source-vs-proprietary-software-pros-and-cons.pdf, 10

luglio 2019.

[21] Manutenibilità. https://www.oreilly.com/library/view/ designing-data-intensive-applications/9781491903063/ch01.html#sec_

introduction_maintainability, 15 agosto 2019.

[22] Controllo di versione distribuito. https://www.teamstudio.com/blog/

distributed-vs-centralized-version-control-systems-for-lotus-notes, 15

2019.

[23] Commenti e forum su webdev. https://www.developpez. net/forums/d1426193/environnements-developpement/windev/

Riferimenti

Documenti correlati

Per i pareri edilizi veniva stabilito, nella stessa delibera, che in materia di piani regolatori, stru- menti urbanistici e insediamenti produttivi, l’Agenzia avrebbe supportato

Per presentare le risposte ai quesiti, usare unicamente i fogli prestampati cioè un solo foglio marcato Elettro per la prova di Elettromagnetismo e un solo foglio marcato Ottica

• elaboratore formato da più CPU, ognuna delle quali esegue operazioni diverse su dati diversi. • CPU anche complesse, in

[r]

Nelle righe sottostanti si riportano le variabili fiscali di interesse statistico (identificate con un codice che rappresenta il legame con il quadro, la riga e la colonna

Vi sono 3 paradigmi di programmazione principali: Imperativo, Logico e Funzionale (Logico e funzionale sono anche visti come molto simili tra loro, e vengono anche

Per la progettazione dello strumento software usato nel percorso didattico sulla ricorsione ci si è avvalsi del secondo approccio, poiché per svolgere un lavoro di progettazione di

1.63.- Andamento della riduzione del flusso termico entrante al variare della pendenza La riduzione del flusso termico al variare della lunghezza della camera di ventilazione per