Progettazione e Sviluppo di un Ambiente Distribuito per R

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Progettazione e Sviluppo di un Ambiente Distribuito per R"

Transcript

1 Università degli Studi di Torino Scuola di Scienze della Natura Corso di Laurea in Informatica Progettazione e Sviluppo di un Ambiente Distribuito per R Tesi di Laurea di: Davide Dal Farra Matr Relatore: Prof.ssa Rosa Meo a.a. 2012/2013

2

3 Indice Introduzione 1 1 Modelli, tecnologie e stato dell arte I sistemi distribuiti Caratteristiche generali Definizione e architettura di un Web Service REST RESTful Web Services Il linguaggio R Che cos è R Principali funzionalità L ambiente Sistemi e strumenti per l integrazione di R all interno di applicazioni Esecuzione in modalità non interattiva R/WebSockets PL/R RJ Rserve Sistemi distribuiti FastRWeb RevoDeployR iii

4 2 Descrizione del progetto di ricerca I componenti I nodi La libreria Replica Replica Web Service La console di gestione Funzionamento La libreria Replica Replica Web Service Workspace e sessioni La libreria Replica I nodi e la loro configurazione Il sistema operativo R e i suoi moduli Rserve Componenti e configurazioni aggiuntive La libreria Replica Il pacchetto org.rosuda.rengine Istanziare un oggetto Replica Il database relazionale La gestione dei nodi Il metodo connect() Assegnazione dei valori in input Esecuzione di un programma R La gestione dei programmi R iv

5 4 Replica Web Service Il server applicativo Il Cross-Origin Resource Sharing Apache Tomcat Descrizione del processo Autenticazione Esecuzione Implementazione Il framework Spring L Authentication controller Lo ScriptExecutionController Lo schema relazionale Serializzazione dei parametri e dei risultati I parametri in input Serializzazione dei risultati La console amministrativa L interfaccia utente e le funzionalità fornite Funzionalità di configurazione La gestione degli script Gestione degli utenti e assegnazione dei ruoli Gestione dei nodi Il terminale di test L implementazione lato server Il server applicativo Le librerie e il framework Spring v

6 5.2.3 La logica di controllo Lo sviluppo dell interfaccia utente Il modello architetturale Il terminale Un esempio di utilizzo: test di verifica di normalità Il problema: test di verifica di normalità Il test di Anderson-Darling Un implementazione in R La dimensione del dataset Test di normalità distribuito Implementazione Il dataset La funzione R Il codice JavaScript Configurazione del browser Risultato dell analisi Prestazioni e utilizzo della memoria Conclusioni e sviluppi futuri 87 Bibliografia 89 vi

7 Elenco delle figure Un sistema distribuito Metodi per la gestione dei un oggetto WebSocket Definizione di un listener per l evento onmessage Esempio di funzione PL/R e relativa query di selezione Esempio di programma FastRWeb Elaborazione di una richiesta dal pacchetto FastRWeb Diagramma delle tecnologie utilizzate da RevoDeployR Esempio di architettura distribuita su RevoDeployR Componenti del sistema distribuito per il calcolo di analisi statistiche attraverso l uso dell ambiente R Rappresentazione dei singoli nodi La libreria Replica Replica Web Service La console di gestione Schema di esecuzione di uno script R Schema del funzionamento di Replica Web Sevice Esempio di workspace durante l esecuzione di Replica Gestione del workspace durante l esecuzione di Replica Web Service vii

8 3.1.1 Rserve e la gestione dei workspace Diagramma della classe Replica Diagramma della classe REngine Schema del database relazionale in appoggio alla libreria Replica Processo di esecuzione di un programma R Configurazione minima per fornire supporto CORS in Tomcat Diagramma funzionale ed utilizzo del servizio web Replica L autentication controller Lo ScriptExecution controller Schema del database relazionale in appoggio al servizio web Esempio di stringa JSON per l input di un programma R Esempio di serializzazione dell output di un programma R L interfaccia utente suddivisa per aree di contenuto Modifica di un programma R Modifica degli output di un programma R Finestra di modifica utente Interfaccia per la gestione dei nodi del sistema distribuito Il terminale Diagramma delle classi Replica Console per il controllo delle richieste Struttura di un controller Architettura dell interfaccia utente Organizzazione del codice sorgente dell interfaccia utente Funzionamento del terminale Il metodo replica.authenticate Implementazione del test di Anderson-Darlin in linguaggio R viii

9 6.2.1 Diagramma funzionale: test di normalità distribuito Componenti utilizzati per l implementazione del test di normalità distribuito Codice SQL per la selezione di valori casuali Programma R per il calcolo del test di Anderson-Darling su di una partizione di dati prelevata da un database MySQL Distribuzione dei valori del dataset Programma JavaScript per il calcolo del test di normalità attraverso il servizio web Replica Output su terminale con risultato del test e console di debug del browser con visualizzazione delle chiamate AJAX e risposta ix

10

11 Elenco delle tabelle 1.1 Mappatura dei metodi HTTP sulle operazioni più frequenti implementate dai Web Service REST Tipi consentiti nella definizione dei parametri di input e output Elenco dei ruoli utente disponibili Risultato test Anderson-Darling Confronto dei consumi di memoria e tempi di esecuzione del test di Anderson- Darling in esecuzione su Replica Web Service e R xi

12

13 Introduzione L idea di progettare un ambiente distribuito per l analisi statistica nasce dalla necessità di sviluppare applicativi per il controllo della qualità in ambito manifatturiero che sfruttino algoritmi di comprovato funzionamento e fama. Grazie alla vasta disponibilità di librerie per lo Statistical Process Control e per la metodologia Six Sigma, R è risultato essere l unico ambiente con licenza open source in grado di eguagliare, in qualità dell output e funzionalità, prodotti commerciali come SPSS e Minitab. Di difficile integrazione con linguaggi di alto livello, e difficilmente adattabile in ambienti in cui requisiti come scalabilità e fault tolerance sono lo standard, si è pensato di progettare e sviluppare un sistema che permetta di integrare R, indipendentemente dal linguaggio utilizzato, in qualunque applicazione, e di centralizzarne la gestione attraverso un sistema client-server distribuito. Attraverso l analisi delle funzionalità fornite dall ambiente R e attraverso le conoscenze maturate in anni di lavoro su ambienti distribuiti, si è provveduto a sviluppare una serie di componenti che estendono i limiti di utilizzo di R e ne permettano l integrazione in pressoché qualunque ambito. La trattazione dei temi enumerati, in particolare, si divide in 6 capitoli. All interno del primo capitolo si introducono i modelli architetturali, le tecnologie e gli standard che sono alla base dello studio degli argomenti trattati nelle sezioni successive. Il secondo capitolo fornisce una descrizione completa del progetto di ricerca. In modo specifico, in questa parte è stato riservato ampio spazio alla definizione dei componenti e al loro funzionamento, per i quali sono state evidenziate dipendenze e interazioni. 1

14 Terminata l analisi architetturale, i successivi tre capitoli descrivono, ognuno nel dettaglio e fino a definirne i particolari implementativi, uno specifico componente del sistema, dalla libreria Replica, che rappresenta lo strato intermedio del sistema, alla console di amministrazione, un applicazione web progettata per semplificare la gestione dell interno ambiente distribuito. Nel sesto capitolo, allo scopo di individuare anche le applicazioni pratiche del progetto stesse, vengono, infine, affrontati la progettazione e lo sviluppo di un algoritmo per il calcolo del test di normalità distribuito su più nodi del sistema. 2

15 Capitolo 1 Modelli, tecnologie e stato dell arte Prima di passare alla discussione della tesi, si andranno a visionare alcuni degli argomenti chiave analizzati da questa ricerca. Per prima cosa verrano date le definizioni di sistema distribuito e di servizio web, successivamente verrà introdotto l ambiente R insieme alle soluzioni attualmente disponibili per la sua integrazione con altri linguaggi e software; infine si concluderà con l analisi di alcune soluzioni in grado di fornire l accesso ad R in maniera distribuita. 1.1 I sistemi distribuiti Un sistema distribuito può essere visto come un insieme di elaboratori indipendenti in grado, però, di apparire ai propri utenti come un singolo e coerente sistema. Questa definizione, seppure a prima vista elementare, racchiude due concetti fondamentali: il primo è l indipendenza dei singoli nodi, che agiscono in maniera autonoma, il secondo è il punto di vista degli utenti che, di fatto, interagiscono con un unico singolo sistema. Questo significa che i componenti del nostro insieme devono necessariamente collaborare; le modalità di implementazione costituiscono il cuore dello sviluppo di un sistema distribuito [22]. 3

16 Figura 1.1.1: Un sistema distribuito L indipendenza dei nodi appartenenti al sistema permette di delineare ulteriori caratteristiche. L eterogeneità dei singoli elaboratori, così come le modalità di comunicazione, sono spesso nascoste all utente. La stessa affermazione vale anche per l organizzazione interna. Utenti e applicazioni possono interagire con un sistema distribuito in maniera consistente e uniforme, senza considerare quindi dove e quando l interazione ha luogo. Grazie a quanto affermato, in linea di principio i sistemi distribuiti sono adatti all espansione e alla scalabilità. Un ambiente distribuito, infatti, è realizzato in modo tale da essere sempre disponibile, anche quando un nodo viene temporaneamente a mancare. La differenza di architettura dei singoli nodi e delle loro interconnessioni richiede, per offrire un unica visione d insieme, lo sviluppo di uno strato software frapposto tra un livello più alto che consiste nelle applicazioni accedute dagli utenti, e uno più basso, occupato dai singoli sistemi operativi. Come mostrato nella Fig , questo strato intermedio prende il nome di middleware Caratteristiche generali Un sistema distribuito deve generalmente rispettare una serie di requisiti[9]: Eterogeneità Parte del problema è spesso rappresentato dalla varietà di differenti tipologie di rete, sistemi operativi, hardware e linguaggi di programmazione, che devono comunicare e collabo- 4

17 rare tra loro. Protocolli standard come TCP/IP mascherano efficientemente le differenze che si possono avere a livello di rete, il middleware, posizionato subito sopra il sistema operativo, si occupa di livellare le differenze architetturali rimanenti. Apertura Un sistema distribuito nasce per essere estensibile: il primo passo è la pubblicazione dell interfaccia dei componenti. Sicurezza La cifratura può essere utilizzata per fornire un adeguato livello di protezione delle risorse condivise e per mantenere protette le informazioni quando vengono trasmesse, tramite messaggi, attraverso una rete. Scalabilità Un sistema distribuito è scalabile se il costo di aggiunta di un utente è costante in termini di risorse che devono essere aggiunte al sistema stesso. Gli algoritmi utilizzati per accedere ai dati condivisi devono essere scelti in modo da evitare colli di bottiglia 1, mentre l accesso ai dati dovrebbe essere organizzato gerarchicamente in modo da ridurre i tempi di accesso. Frequentemente l accesso ai dati può essere replicato. Tolleranza ai guasti Ogni processo, nodo fisico o rete potrebbe smettere di funzionare correttamente indipendentemente dagli altri. Per questo motivo ogni componente del sistema deve essere in grado di funzionare anche quando uno o più componenti da cui esso dipende non sono disponibili. 1 Il collo di bottiglia è un fenomeno che si verifica quando le prestazioni di un sistema o le sue capacità sono fortemente vincolate da un singolo componente. Il componente viene spesso chiamato anch esso collo di bottiglia o punto del collo di bottiglia. Il termine è una metafora del collo di bottiglia reale, che limita il flusso d uscita dell acqua. 5

18 Concorrenza La presenza di più utenti utilizzatori di un sistema è indice della necessità di permettere un uso delle risorse in maniera concorrente. Ogni risorsa deve essere progettata per essere acceduta in sicurezza. Trasparenza L obiettivo di un sistema distribuito è riuscire a mascherare determinati aspetti della distribuzione. Questo dà la possibilità al programmatore di concentrarsi unicamente sullo sviluppo dell applicazione. 1.2 Definizione e architettura di un Web Service REST Il World Wide Web Consortium 2 definisce i Web Service (Servizi Web) come sistemi software che forniscono agli sviluppatori un mezzo per permettere l interoperabilità tra applicazioni differenti e non vincolate da una medesima tecnologia o framework [1] RESTful Web Services REST, REpresentational State Transfer, è uno stile architetturale per sistemi software distribuiti. Il termine è stato introdotto e definito nel 2000 da Roy Fielding, uno dei principali autori delle specifiche del protocollo HTTP 3. Indica una serie di principi archietturali per la progettazione di Web Service [19]. Concetto centrale di un sistema RESTful è quello di risorsa. Una risorsa è qualunque entità che possa essere indirizzabile tramite web, cioè accessibile e trasferibile tra client 2 Organizzazione non governativa internazionale la cui attività principale consiste nello stabilire standard tecnici per il World Wide Web inerenti sia linguaggi di markup che protocolli di comunicazione. 3 L HyperText Transfer Protocol (HTTP) (protocollo di trasferimento di un ipertesto) è un protocollo applicativo (livello 7 del modello OSI) alla base della trasmissione delle informazioni sul world wide web. 6

19 METODO HTTP OPERAZIONE DESCRIZIONE POST Creazione Crea una nuova risorsa GET Lettura Ottiene una risorsa esistente PUT Aggiornamento Aggiorna una risorsa o ne modifica lo stato DELETE Cancellazione Elimina una risorsa Tabella 1.1: Mappatura dei metodi HTTP sulle operazioni più frequenti implementate dai Web Service REST e server. Ad ogni chiamata quello che viene trasferito è una rappresentazione dello stato interno della risorsa 4. Inizialmente REST viene descritto da Fielding nel contesto del protocollo HTTP e questo è il protocollo, a livello di applicazione, maggiormente utilizzato. A differenza di altre specifiche per Web Service, REST sfrutta, infatti, a pieno la semantica e la ricchezza dei comandi HTTP e le sue funzionalità come, ad esempio, la negoziazione dei contenuti. Perchè un Web Service sia conforme alle specifiche REST deve avere alcune specifiche caratteristiche: identificazione delle risorse. Ciascuna risorsa deve essere identificata univocamente. Essendo in ambito Web, il meccanismo più naturale per individuare una risorsa è dato dal concetto di URI; comunicazione senza stato. Ogni ciclo di richiesta-risposta deve rappresentare un interazione completa del client con il server. In questo modo non è necessario mantenere, sul server, informazioni relative al client, minimizzando così l uso della memoria del server e semplificandone la logica; utilizzo esplicito dei metodi HTTP. Come principio generale, è utile evitare l uso di verbi negli URI, limitandosi ad utilizzare i metodi (o verbi) predefiniti di questo protocollo, e cioè GET, POST, PUT e DELETE. 4 Ad esempio l ultimo post in un blog può essere servito ad un browser come una pagina in formato html, mentre ad un news reader come un documento xml. 7

20 1.3 Il linguaggio R Come si evince dall incipit della sua guida ufficiale, R è un ambiente ed un linguaggio per l analisi statistica [10]. Non è unico nel suo genere, possiamo, infatti, facilmente identificare numerosi prodotti analoghi come SAS, SPSS, MINITAB, solo per citarne alcuni, programmi solitamente costosi, il cui uso viene concesso unicamente su licenza da parte del produttore. R vede la sua nascita proprio da due di questi: S, linguaggio creato da Becker, Chambers e Wilks presso l AT&T Bell Laboratories (luogo in cui videro la luce sia UNIX sia C) e Scheme (Sussman). Il risultato è un linguaggio molto simile, in apparenza, ad S ma di semantica derivata da Scheme. Una delle principali differenze che hanno accelerato la diffusione di R è la licenza tramite la quale viene distribuito. R è un prodotto open source 5 protetto dalla GNU General Public License 6. Questo significa che è possibile ottenere una copia dell ambiente direttamente dal sito installarlo e utilizzarlo senza alcun vincolo ma, soprattutto, grazie alla disponibilità dei sorgenti, alla dettagliata documentazione e al supporto della community, non vi è limite alla sua estensione e alla creazione di nuovi moduli e funzionalità Che cos è R R è un ambiente statistico per la manipolazione, l analisi e la rappresentazione dei dati le cui caratteristiche principali possono essere riassunte in pochi punti: semplicità nella gestione e manipolazione dei dati; 5 In informatica il termine open source indica un software i cui autori (più precisamente i detentori dei diritti) permettono e favoriscono il libero studio e l apporto di modifiche da parte di altri programmatori indipendenti. Questo è realizzato mediante l applicazione di apposite licenze d uso che ne vincolano la distribuzione unitamente al codice sorgente. 6 La GNU General Public License, comunemente indicata con l acronimo GNU GPL o semplicemente GPL, è una licenza per software libero, originariamente redatta nel 1989 da Richard Stallman per distribuire i programmi creati nell ambito del Progetto GNU della Free Software Foundation (FSF). Essa garantisce agli utenti finali di utilizzare, condividere e persino modificare il software (quest ultima operazione non era invece garantita dalle licenze per software proprietario). 8

21 disponibilità di metodi e funzioni per operazioni su vettori, matrici e altre operazioni complesse; vasta disponibilità di strumenti integrati per l analisi statistica; rappresentazione grafica dei dati semplificata grazie a numerose soluzioni integrate flessibili e personalizzabili; linguaggio ad oggetti che permette una rapida estensione della libreria così come la creazione di nuove funzioni. E un prodotto multi piattaforma, sviluppato nel 1996 per Mac OS da Ross Ihaka e Robert Gentleman del dipartimento di Statistica dell Università di Auckland in Nuova Zelanda, è stato successivamente portato 7 su tutti i principali sistemi operativi. A differenza di altri software statistici, R non viene fornito con una interfaccia grafica; tutte le operazioni devono, infatti, essere eseguite attraverso una console testuale. Esistono tuttavia numerosi progetti in grado di sopperire a questa mancanza. Un importante differenza a livello di filosofia tra R e la maggior parte dei software statistici è la differenza di output. Spesso con prodotti come Minitab 8 ad una analisi statistica seguono una notevole quantità di dati. R invece utilizza una serie di passi i cui risultati intermedi sono memorizzati all interno di oggetti. Ad ogni passo l output è minimo, dando così all utente la possibilità di analizzare e utilizzare il contenuto degli oggetti secondo la reale necessità Principali funzionalità La licenza open source unitamente alla vasta disponibilità di codice scritto in S, hanno permesso un rapido sviluppo dell ambiente, tanto che già nel 1997 potè nascere l R Develo- 7 La portabilità, (in lingua inglese porting), in informatica, indica un processo di trasposizione, a volte anche con modifiche, di un componente software, volto a consentirne l uso in un ambiente di esecuzione diverso da quello originale. 8 Minitab è un software statistico distribuito dalla Minitab Inc., una compagnia privata con sede in State College, Pennsylvania. 9

22 pment Core Team, un gruppo formato da statistici di tutto il mondo che si occupa, ancora oggi, dello sviluppo e della distribuzione del programma, mentre nel 2003 la R Foundation for Statistical Computing iniziò a lavorare incessantemente al solo scopo di diffondere e promuovere il linguaggio. Nuovi pacchetti vengono costantemente inseriti all interno del CRAN 9, aumentando così le funzionalità messe a disposizione dell ambiente. Proprio i pacchetti o package, sono alla base dell ambiente R. Un package è un insieme di strumenti che svolgono determinate funzioni, ma che può contenere anche solo dati oppure solo documentazione. Attualmente è disponibile una vasta gamma di pacchetti, scaricabili dal CRAN repository, utilizzabili per la risoluzione di specifici problemi o per analisi statistiche molto particolareggiate. Il cuore di R è rappresentato da un pacchetto denominato base che permette ad R di funzionare come un linguaggio [12] introducendo funzionalità aritmetiche, di input/output, di flusso, e molte altre. Viene caricato automaticamente insieme ai pacchetti graphics e stats che forniscono all utente gli strumenti per le più importanti e diffuse analisi statistiche come ANOVA, regressione lineare, statistica descrittiva ed inferenziale, grafici elementari, modelli lineari generalizzati, generazione di campioni delle più comuni variabili casuali, operazioni su matrici e vettori, analisi dei dati di serie temporali e test statistici (ad esempio test di normalità, test Chi-quadro, etc). Ad oggi il CRAN repository consta di oltre cinquemila packages che spaziano attraverso i più disparati campi della statistica applicata, tuttavia può essere utile, per comprendere le potenzialità di R, identificare alcuni dei componenti più significativi che abbracciano le più importanti e diffuse tipologie di analisi statistiche dei dati: pacchetti come grid, lattice, rgl e scatterplot3d consentono la realizzazione e manipolazione di grafici avanzati e tridimensionali; nel caso in cui si debbano effettuare analisi su dati multidimensionali, i pacchetti 9 CRAN è l acronimo di Comprehensive R Archive Network, un sistema per documentare e rendere disponibili i moduli aggiuntivi al software statistico R. E una rete di server FTP e di server web che offrono la versione aggiornata di R, assieme alla documentazione ed ai moduli aggiuntivi. 10

23 mva, amap, miltidim, e multiv forniscono, tra le varie funzionalità, analisi delle componenti principali, analisi fattoriale, correlazione canonica, scaling multidimensionale, clustering gerarchico; il pacchetto cluster è il modulo specializzato per l analisi dei gruppi; nls permette, invece, di effettuare l analisi della regressione con modelli non lineari sfruttando i metodi dei minimi quadrati (Nonlinear Least Squares); l uso avanzato di matrici e vettori è permesso dal package matrix, insieme a metodi numerici per l algebra lineare; l integrazione con altri software statistici è fornita dal pacchetto foreign, contenente una serie di funzioni utili all importazione di file provenienti da software statistici come Minitab, S, SAS, SPSS, Stats L ambiente La manualistica a disposizione di R è uno dei fattori che ne hanno determinato il successo. La sua adozione come ambiente di lavoro per molte università di tutto il mondo ha permesso la diffusione di guide, manuali, how-to e paper in grado di accontentare sia il neofita che si avvicina per la prima volta ad R, sia l utente esperto. In questa sezione ci limiteremo ad analizzare unicamente alcuni dei principali comandi, istruzioni che torneranno utili nella gestione di un ambiente R distribuito. La guida in linea Nonostante la mancanza di una interfaccia grafica, R dispone di un efficiente sistema di aiuto in linea che consente di ottenere informazioni dettagliate sulle funzioni in esso implementate. Ad esempio digitando help.start() un HTTP server, contenente la guida in linea, viene attivato sull indirizzo localhost:20134, permettendo così un ra- 11

24 pido accesso alla documentazione tramite un qualunque browser che punti alla locazione /doc/html/index.html. Se si vuole accedere in maniera mirata alle informazioni di un solo specifico comando, è inoltre possibile utilizzare la sintassi?command il cui risultato è comparabile a quello delle manpage di unix. Data la quantità di comandi disponibili l utente può inoltre cercare una parola chiave all interno della guida semplicemente utilizzando la funzione search: > help. search (" keyword ") Il workspace All uscita dall ambiente ogni oggetto definito durante una sessione di lavoro (vettori, matrici, data frames, liste e funzioni) viene solitamente memorizzato all interno del file Rdata, mentre la history, ovvero la cronologia dei comandi, all interno del file Rhistory. L unione di Rdata e Rhistory dà origine al concetto di workspace. Il salvataggio di questi file non è limitato esclusivamente al termine della sessione; può essere, infatti, molto utile memorizzare una istantanea dell ambiente ad un certo punto della sessione e caricarla successivamente, magari perfino su di un altra macchina. Attraverso un piccolo set di funzioni, l utente ha la possibilità di salvare un istantanea dell ambiente di lavoro > save. image ("/ tmp / myworkspace ") > savehistory ("/ tmp / myhistory ") e di poterla ricaricare successivamente > load ("/ tmp / myworkspace ") > loadhistory ("/ tmp / myhistory ") è possibile anche salvare variabili presenti nel workspace su di un file al fine di poterli archiviare o richiamare all occorrenza 12

25 > save ( nomevariabile, file =/ tmp / myvariable ) e, sempre con la funzione load, aggiungerle al workspace corrente > load ("/ tmp / myvariable ") Ridirezione dell output Normalmente R utilizza lo standard output 10 come dispositivo di visualizzazione del risultato dei comandi digitati; tuttavia è possibile reindirizzare lo stream di dati verso una qualunque connessione (file, url, pipe, fifo, socket) permettendo, ad esempio, la memorizzazione dell output di una funzione tramite la ridirezione dello stesso su di un file. Il comando da utilizzare è sink, del pacchetto base > sink (" myoutput. txt ") la cui chiamata senza argomenti determina la chiusura della connessione precedentemente aperta > sink () Personalizzazione Nei capitoli successivi si potrà osservare come una corretta personalizzazione del sistema sia fondamentale, ad esempio, per la gestione degli errori che possono verificarsi durante l esecuzione di un programma utilizzato in modalità non interattiva. Attraverso l oggetto options è possibile controllare numerose impostazioni quali, ad esempio, il numero di cifre decimali da visualizzare o come deve apparire l output. Una lista completa delle opzioni disponibili si può visualizzare digitando in R il comando: 10 I canali standard (o standard streams), in tutti i moderni sistemi operativi, rappresentano i dispositivi logici di input e di output che collegano un programma con l ambiente operativo in cui esso viene eseguito (tipicamente un terminale testuale) e che sono connessi automaticamente al suo avvio. I tre canali di input/output predefiniti sono detti: standard input, standard output e standard error (talvolta abbreviati rispettivamente in stdin, stdout e stderr). 13

26 >? options ad esempio, se all interno del workspace corrente si vogliono visualizzare gli output a virgola mobile con sole quattro cifre decimali, è necessario inserire il comando: > options ( digits =4) La gestione dei pacchetti L elenco di pacchetti della Sez fornisce un idea di come un modulo aggiuntivo possa aumentare le potenzialità di R. La stessa gestione dei package è demandata ad una serie di comandi, tuttavia prima di fornire maggiori dettagli è necessario distinguere due tipologie di pacchetti: moduli disponibili ma non caricati nel workspace; moduli reperibili in rete. Un istanza di R contiene, oltre ai pacchetti base, una serie di librerie aggiuntive generalmente molto utilizzate o spesso usate come dipendenza da librerie più specializzate. L elenco di questi pacchetti è ottenibile attraverso il comando > library () mentre il caricamento di un pacchetto, necessario nel caso in cui si voglia utilizzare anche solo una delle funzioni fornite, deve avvenire attraverso il comando > library (" packagename ") L installazione di un nuovo pacchetto è un operazione che può avvenire secondo due modalità differenti: il pacchetto risiede nel CRAN repository il pacchetto è disponibile sul filesystem locale 14

27 L accesso alle risorse pubblicate sul CRAN repository è gestito direttamente da R. L utilizzo di questo metodo è senz altro da preferirsi, in quanto consente di lavorare sempre con moduli aggiornati e privi di errori noti. Una volta identificato il nome del pacchetto è sufficiente invocare il comando > install. packages (" packagename ") Nel caso in cui si disponga del modulo in locale, uno dei metodi più utilizzati per la sua installazione è la chiamata di R da shell con il parametro INSTALL # R CMD INSTALL / tmp / package. tar. gz 1.4 Sistemi e strumenti per l integrazione di R all interno di applicazioni Tutti i più diffusi ambienti di programmazione possiedono una o più librerie sviluppate per risolvere problemi statistici, tuttavia, la possibilità di poter sfruttare le funzionalità di R da qualunque software, va ben oltre la semplice adozione di una libreria statistica specializzata. La base dell interoperabilità tra R e il mondo esterno, è rappresentata dalle R-API, dove un vasto numero di entry point 11 presenti nell eseguibile di R e nelle sue librerie ne permette la chiamata da codice C 12 [23]. Sebbene molto efficiente da un punto di vista prestazionale, l adozione del linguaggio C può essere molto restrittiva, specie nello sviluppo di applicazioni orientate al web, dove lo standard è dato da linguaggi di più alto livello. 11 In programmazione un entry point è un indirizzo di memoria corrispondente a uno specifico punto del codice sorgente di un programma. Normalmente un programma eseguibile possiede un singolo entry point, mentre una libreria molteplici. 12 Il C è un linguaggio di programmazione ad alto livello sviluppato da Dennis Ritchie. Tuttavia, poiché esso mantiene evidenti relazioni semantiche con il linguaggio macchina e l assembly, risulta molto meno astratto di linguaggi anche affini (appartenenti allo stesso paradigma di programmazione), come per esempio il Pascal. Per questo motivo, talvolta viene anche identificato come linguaggio di medio livello. Il C è rinomato per la sua efficienza, e si è imposto come linguaggio di riferimento per la realizzazione di software di sistema su gran parte delle piattaforme hardware moderne. 15

28 La difficoltà di interfacciamento tramite le R-API ha spinto allo sviluppo di soluzioni alternative, spesso basate sulle API C, ma volte a semplificare il lavoro di integrazione fornendo interfacce alternative per l accesso ai metodi. Ecco alcune tra le soluzioni più utilizzate: esecuzione di R in modalità batch non interattiva; RWebSockets; PL/R; RJ; RServe Esecuzione in modalità non interattiva Nonostante la console interattiva rappresenti il metodo più diffuso per lavorare con l ambiente, è la modalità a riga di comando il modo più semplice per eseguire un programma R e prelevarne il suo risultato: # R CMD BATCH [ options ] infile [ outfile ] dove infile rappresenta il nome del file da eseguire e outfile il nome del file su cui memorizzare l output. Il vantaggio principale della modalità batch risiede nell assenza di ulteriori pacchetti o software da installare nel sistema. Un qualunque programma può eseguire una nuova istanza di R, agganciarvi uno script e prelevarne l output semplicemente sfruttando i comandi messi a disposizione dal sistema operativo. Questo modello di esecuzione non è esente da svantaggi. Nel caso in cui il programma preveda l inizializzazione di strutture complesse al momento dell esecuzione, queste devono necessariamente essere riempite prevedendo nella logica la lettura da file o database. 16

29 Di notevole impatto è la latenza introdotta dall avvio dell ambiente R, specie nel caso in cui si preveda l esecuzione di più istanze dello stesso programma contemporaneamente R/WebSockets Grazie all introduzione del pacchetto RWebSockets, R è in grado di interfacciarsi con qualunque browser abilitato ai WebSocket HTML5 13. I WebSocket I WebSockets sono una tecnologia recentemente introdotta dallo standard HTML5 per permettere alle applicazioni web di mantenere una comunicazione bidirezionale 14 con il processo server e fornire così agli sviluppatori uno strumento che può sostituire e migliorare AJAX 15. Basati sul protocollo TCP 16, forniscono un canale di comunicazione bidirezionale (sia client-server sia viceversa) e full duplex (lettura e scrittura avvengono contemporaneamente). Le API esposte sono molto semplici: ad esempio l oggetto JavaScript 17 WebSocket richiede come unico parametro l indirizzo della risorsa var websocket = new WebSocket (" ws :// www. websocket. org " ); 13 L HTML5 è un linguaggio di markup per la strutturazione delle pagine web. Le novità introdotte dall HTML5 rispetto alla versione 4 sono finalizzate soprattutto a migliorare il disaccoppiamento tra struttura, definita dal markup, caratteristiche di resa (tipo di carattere, colori, eccetera), definite dalle direttive di stile, e contenuti di una pagina web, definiti dal testo vero e proprio. Inoltre l HTML5 prevede il supporto per la memorizzazione locale di grosse quantità di dati scaricati dal browser, per consentire l utilizzo di applicazioni basate su web anche in assenza di collegamento a Internet. 14 Una modalità di trasmissione e ricezione di informazioni su un canale di comunicazione con caratteristiche tipiche di completa bidirezionalità. Si contrappone invece alla modalità simplex che ha caratteristiche di unidirezionalità. 15 Acronimo di Asynchronous JavaScript and XML, è una tecnica di sviluppo software per la realizzazione di applicazioni web interattive. Lo sviluppo di applicazioni HTML con AJAX si basa su uno scambio di dati in background fra browser e server, che consente l aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell utente. 16 Il Transmission Control Protocol (TCP) è un protocollo di rete a pacchetto di livello di trasporto. 17 JavaScript è un linguaggio di scripting orientato agli oggetti comunemente usato nella creazione di siti web. 17

30 websocket. send (" Hello world " ); websocket. close (); Figura 1.4.1: Metodi per la gestione dei un oggetto WebSocket websocket. onmessage = function ( event ) { console. log (" Server says " + event. data ); } Figura 1.4.2: Definizione di un listener per l evento onmessage. ed una volta istanziato permette di inviare informazioni al server e gestire il canale attraverso la chiamata di appositi metodi (Fig ). L interazione con i messaggi ricevuti avviene tramite la definizione di eventi specifici, a cui è necessario associare delle funzioni di ascolto, chiamate listener (Fig ). R/WebSockets Introdotto nel 2011 e distribuito sotto licenza GNU LGPL versione 3 (che ne permette quindi l utilizzo anche da software commerciale e non open source), è una implementazione del protocollo WebSocket HTML5 secondo le specifiche W3C, interamente scritta in linguaggio R. Il pacchetto fornisce i metodi per configurare un WebSocket server direttamente dall ambiente R e risulta particolarmente efficace nel permettere l interazione tra R e linguaggi di web scripting come JavaScript. Il supporto di più connessioni simultanee lo rende, inoltre, idoneo per un utilizzo concorrente. Sebbene i vantaggi introdotti da questa architettura siano notevoli, l ambito di utilizzo ristretto dei WebSocket ne limita fortemente la diffusione e adozione in applicativi non orientati al web. Anche in questi ultimi è possibile identificare delle incompatibilità dove l assenza di un sistema in grado di suddividere il carico su più WebSocket pone forti limiti sulla reale utilità in ambienti distribuiti quali quelli tipici del World Wide Web. 18

31 create function r_ logistic ( x0 numeric, length integer, r numeric ) returns setof t_ logistic as $$ ret = rep (x0, length ) index = as. character ( as. Date (1: length, origin = ' ')) for ( i in 2: length ) { ret [i] = r * ret [i -1] * ( 1 - ret [i -1] ) } ret = cbind (r, ret, index ); return ( ret ) $$ language ' plr '; select * from r_ logistic (.5, 10, 3.5); Figura 1.4.3: Esempio di funzione PL/R e relativa query di selezione PL/R L estensione per il database PostgreSQL, denominata PL/R, permette di integrare l ambiente statistico a livello della base dati grazie alla possibilità di definire funzioni e trigger in linguaggio R. Non necessitando di alcuna libreria specifica, PL/R è la soluzione ideale per l integrazione di R in applicazioni prive di codice sorgente, quindi difficilmente modificabili. L output del programma R, solitamente definito a livello di funzione, può essere utilizzato per la creazione di viste o semplici query di selezione. Dato che ogni chiamata diretta all interprete PL/R richiede la creazione di un nuovo processo dell ambiente statistico, l utilizzo dell estensione in concorrenza è scoraggiata, specie se si considera che il deploy di entrambi i software deve avvenire sullo stesso sistema operativo, limitando così la scalabilità, oltre che di R, anche dello stesso database RJ RJ è una libreria open source che fornisce strumenti ed interfacce per integrare R all interno di applicazioni Java. Originariamente sviluppata per l integrazione di una console R nel plugin per Eclipse StatET, è oggi una libreria flessibile che permette l utilizzo dell ambiente statistico da applicazioni Java. Nonostante la completezza delle funzionalità rese disponibili dalla libreria, l adozio- 19

32 ne delle JNI 18 per la comunicazione con R ne vincola l utilizzo in architetture multipiattaforma. La scarsità di documentazione e l assenza di una vera e propria community inoltre, rendono il progetto di difficile adozione Rserve RServe è un server TCP/IP che facilita l utilizzo dell ambiente R da parte di linguaggi di programmazione diversi, senza la necessità di inizializzare R o referenziare le sue API. Costruito su modello client-server, la computazione del codice R è eseguita dall oggetto Rserve, un servizio in grado di rispondere a richieste provenienti da client quali, ad esempio, applicazioni. La comunicazione tra Rserve e i client è basata sull uso di socket di rete, solitamente sfruttando il protocollo TCP/IP. Grazie a questo modello, Rserve può gestire più client simultaneamente. Ogni connessione ad Rserve viene allocata in un proprio spazio di memoria e in una propria directory di lavoro, con l immediato vantaggio di garantire un buon livello di isolamento tra le connessioni. Per ridurre la quantità di dati trasferiti e incrementare la velocità di trasferimento, lo scambio dati tra le applicazioni ed Rserve avviene in forma binaria; inoltre, essendo gli oggetti derivanti dall elaborazione dei programmi R memorizzati internamente ad Rserve, il trasferimento dati è minimizzato dal passaggio dei soli valori di reale interesse. Un tipico utilizzo di Rserve consiste nel caricare tutti i dati necessari all interno di R, eseguire l elaborazione e ritornare i risultati all applicazione. Dati ed oggetti vengono de-allocati unicamente alla chiusura della connessione, questo permette all applicazione di aprire una connessione ed instaurare un dialogo con il server, producendo elaborazioni dipendenti dall input dell utente[24]. 18 La Java Native Interface o JNI è un framework del linguaggio Java che consente al codice Java di richiamare (o essere richiamato da) codice cosiddetto "nativo", ovvero specifico di un determinato sistema operativo o, più in generale, scritto in altri linguaggi di programmazione, in particolare C, C++ e assembly. 20

33 L interfaccia ad Rserve è modulare e documentata, il che ha permesso lo sviluppo di librerie che ne consentono l utilizzo da parte di applicazioni e linguaggi di sviluppo diversi. 1.5 Sistemi distribuiti Le soluzioni esposte in questa sezione permettono non solo di integrare R all interno di applicazioni, ma anche di suddividere la computazione su più istanze dell ambiente FastRWeb Definito dallo stesso autore come un framework, permette di interfacciare R ad un server HTTP che supporti lo standard Common Gateway Interface (CGI) 19. Come per il pacchetto RWebSockets, anche FastRWeb ha come scopo quello di permettere una semplice integrazione dell ambiente R in applicativi web. Sviluppato in linguaggio C e distribuito sotto licenza GNU GPL, necessita dei seguenti componenti installati e configurati: un server web con supporto CGI un istanza dell ambiente R su cui vi sia installato e configurato il pacchetto Rserve La logica è molto simile a quella usata dai linguaggi di scripting, come perl o PHP, per generare il contenuto. Dal punto di vista della programmazione il concetto è semplice: ogni risorsa servita dal server web corrisponde ad una specifica funzione R. Gli argomenti della funzione corrispondono ai parametri in input forniti al momento della richiesta, e possono essere arbitrati o basati sullo stato della sessione. Il risultato della funzione rappresenta il contenuto della risposta e può variare a seconda delle necessità implementative (ad esempio da codice HTML a grafici interattivi). 19 Tecnologia usata dai web server per interfacciarsi con applicazioni esterne e generare contenuti web dinamici. 21

34 # file : kmeans. png.r run <- function ( clusters =3,...) { cl <- kmeans (x, clusters ) p <- WebPlot (600, 400) plot (x, col = cl$ cluster, pch =19) points ( cl$ centers, col = 1: clusters, pch = 8, cex =2) dev. off () p } Figura 1.5.1: Esempio di programma FastRWeb Figura 1.5.2: Elaborazione di una richiesta dal pacchetto FastRWeb La Fig mostra uno script per la generazione di un grafico. I parametri della funzione run, entry point del programma, vengono riempiti al momento della richiesta, che solitamente corrisponde ad un URL come ad esempio: http :// myserver /R/ kmeans. png? clusters =4 Grazie alla combinazione di script parametrizzati ed interfaccia utente, l interattività con il contenuto può facilmente essere implementata con tecnologie quali hyperlinking 20 e AJAX, generando una serie di richieste e risposte interconnesse. Il processo di elaborazione della richiesta schematizzato in Fig mostra che è il browser, o un altro applicativo in grado di istanziare una richiesta HTTP, a fornire un URL con la specifica dello script. L URL, insieme agli eventuali parametri, viene successivamente processato dal server web e passato ad una istanza di R che ne esegue la logica, istanziando, dove necessario, gli oggetti e le strutture di supporto. A computazione avvenuta, il risultato della funzione deve essere convertito in una forma conveniente per essere trasportata dal protocollo HTTP e mostrata in un applicativo. E lasciata all implementatore la decisione di adottare uno standard piuttosto che un altro, e di avvalersi di componenti terze parti per il rendering come, ad esempio, di output in formato HTML. 20 Un collegamento ipertestuale (in inglese hyperlink) è un rinvio da un unità informativa su supporto digitale ad un altra. E ciò che caratterizza la non linearità dell informazione propria di un ipertesto. 22

35 1.5.2 RevoDeployR RevoDeployR è un framework per l integrazione dell ambiente R in applicazioni basate su tecnologie web. All interno del sistema sviluppato da Revolution Analytics è possibile evidenziare quattro componenti principali: un insieme di API per l accesso ai web service; un insieme di web service per la gestione delle sessioni, dell ambiente di esecuzione e degli oggetti R; una console grafica per l amministrazione del sistema; un applicazione per il test dei servizi web. Figura 1.5.3: Diagramma delle tecnologie utilizzate da RevoDeployR Costruito sopra tecnologie open source, il framework dipende da numerosi componenti software come ad esempio lo stesso ambiente R. Tra gli oggetti presenti nel diagramma in figura Fig , è possibile osservare la presenza del pacchetto Rserve, responsabile della comunicazione tra il linguaggio R e i componenti di RevoDeployR. Il database relazionale MySQL è invece utilizzato per mantenere un repository di script ed oggetti R, mentre a livello applicativo il framework Spring fornisce una base per la gestione dei web service e del modello di sicurezza[21]. 23

36 Figura 1.5.4: Esempio di architettura distribuita su RevoDeployR Per poter far fronte ad un aumento del carico di elaborazione, il sistema fornisce la possibilità di variare il numero di istanze dell ambiente R a disposizione degli utenti. La Fig mostra come più istanze di Rserve possano essere associate ad una singola istanza di RevoDeployR. Le frecce di collegamento sono in realtà socket di rete, quindi gli oggetti R ed Rserve che compongono il sistema possono essere posizionati localmente o all interno di una nuvola. Grazie alla completezza delle funzionalità rese disponibili da RevoDeployR, il sistema permette l esecuzione di programmi R secondo due diverse modalità: prelevandoli da un repository di script centralizzato, oppure inviando al server un blocco di codice R da eseguire. La flessibilità dell ambiente, la centralizzazione della gestione e la scalabilità fanno del framework RevoDeployR lo stato dell arte tra i prodotti per l integrazione di programmi R in applicativi connessi al web. Tuttavia la scelta di Revolution Analytics di fornire un software così complesso, ne limita notevolmente l adozione in progetti in cui R viene relegato al semplice uso come libreria statistica 21, dove pertanto molte funzioni del framework si tramuterebbero in soli costi aggiuntivi. Proprio gli alti costi di licenza, uniti all impossibilità di poter personalizzare ed espandere il framework secondo le proprie esigenze, hanno ispirato lo sviluppo di un sistema simile a RevoDeployR come architettura, ma più semplice e distribuito su licenza open source. 21 Un insieme di funzioni specializzate non soggette a frequenti cambiamenti. 24

37 Capitolo 2 Descrizione del progetto di ricerca Nello sviluppo di software statistico, uno degli aspetti principali da valutare in sede di progettazione è la scelta del linguaggio, spesso vincolata dalla disponibilità di librerie in grado di risolvere, se non totalmente, almeno parzialmente il problema. In questo capitolo viene descritta l architettura di un sistema che permetta l utilizzo di un linguaggio statistico specializzato, e delle sue librerie, indipendentemente dalle tecnologie scelte per sviluppare il software. 2.1 I componenti Quando si affronta lo sviluppo di applicazioni statistiche è bene valutare una serie di fattori che andranno poi ad impattare sulle prestazioni e sulla bontà del sistema. La quantità di dati che dovranno essere trattati, ad esempio, è spesso direttamente proporzionale al tempo impiegato dal software per il calcolo dei risultati. Uno dei metodi più utilizzati per garantire delle buone performance è l adozione di strumenti di calcolo distribuito, ovvero di tecniche che permettano la suddivisione del problema su più elaboratori ed in parallelo. Il problema delle performance non è l unica avversità che uno sviluppatore di software statistico deve affrontare. La bontà, cioè la correttezza, dell algoritmo è di fondamentale importanza. L adozione di costosi software statistici garantisce un certo livello di 25

38 sicurezza ma, di contro, ne compromette l espandibilità, vincolando il programmatore all utilizzo di tecnologie spesso proprietarie. L esperienza maturata in anni di sviluppo di software per il controllo statistico della qualità ha portato alla decisione di progettare e realizzare un sistema scalabile e multiutente costruito su tecnologie open source quali Java ed R. La Fig ne elenca i principali componenti, impilati dal basso verso l alto. Figura 2.1.1: Componenti del sistema distribuito per il calcolo di analisi statistiche attraverso l uso dell ambiente R Lo Strato più basso è occupato dai singoli nodi, che insieme contribuiscono alla creazione di un array di macchine, tra di loro indipendenti, sulle quali il calcolo verrà distribuito. Lo strato intermedio vede la libreria Replica come punto di unione tra la griglia e le singole applicazioni utilizzatrici del sistema. Una console di gestione permette inoltre di amministrare agevolmente l aggiunta di nuovi nodi e l inserimento di nuovi algoritmi. Infine, un database relazionale, e un cache server, completano l insieme fornendo ai singoli componenti uno strato dati ad accesso condiviso I nodi In un array di elaboratori ogni elemento è costituito da un singolo computer, nel nostro caso capace di interpretare codice R e comunicarne i risultati al suo strato superiore. 26

39 Requisito fondamentale di ogni nodo è supportare l esecuzione di R e dei suoi pacchetti. Essendo R un linguaggio multi-piattaforma, la scelta del sistema operativo e dell hardware sottostante influenza unicamente le capacità di calcolo del nodo, non la compatibilità con l intero sistema. Figura 2.1.2: Rappresentazione dei singoli nodi La Figura mostra due istanze di R installate su sistemi operativi e hardware diversi. E però indispensabile notare come alcuni elementi del grafico siano comuni, nel dettaglio la presenza del pacchetto Rserve e la sua configurazione, così come l installazione di ulteriori moduli. Nonostante l indipendenza e l eterogeneità dei singoli nodi nel basso livello, ogni istanza di R deve essere identica, come identica dovrà essere la configurazione del pacchetto Rserve, strumento fondamentale per il corretto funzionamento dell intero sistema La libreria Replica Come si può osservare nella Fig , la libreria Replica si posiziona nello stato intermedio del sistema proposto rendendo di fatto possibile la comunicazione tra l insieme di nodi e gli applicativi. Strutturare lo strato middleware come libreria ne permette un doppio utilizzo. Sebbene il sistema nasca con l obiettivo di fornire una interfaccia web service di alto livello, un 27

40 applicativo può referenziare direttamente Replica e sfruttarne le funzionalità in completa autonomia, mantenendo così uno stack applicativo basso. Figura 2.1.3: La libreria Replica La Fig evidenzia questa doppia natura indicando come componente utilizzatore una generica applicazione. Proseguendo verso il basso si osserva come Replica dipenda da una serie di classi e componenti quali REngine e java.sql. REngine è una libreria Java distribuita a corredo del pacchetto Rserve. Insieme a poche altre classi fornisce un completo set di strumenti per comunicare con Rserve e di fatto permettere lo scambio dati con i singoli nodi. La configurazione dell intero sistema, costituita dall elenco dei nodi e dai programmi R a disposizione degli utenti, è memorizzata in un database relazionale acceduto tramite le funzionalità fornite dal package java.sql 1. L adozione di classi quanto più possibile native della distribuzione Java, ha limitato la complessità del sistema pur mantenendo, grazie all adozione di driver specifici JDBC 2, un buon livello di personalizzazione. 1 Parte integrante della libreria JDBC, fornisce le funzioni per l accesso e l elaborazione di dati memorizzati in una sorgente dati (solitamente un database relazionale). 2 JDBC (Java DataBase Connectivity) è un connettore per database che consente l accesso alle basi di dati da qualsiasi programma scritto con il linguaggio di programmazione Java, indipendentemente dal tipo di DBMS utilizzato. 28

41 2.1.3 Replica Web Service Figura 2.1.4: Replica Web Service Salendo lungo la pila di componenti elencati in Fig , incontriamo l oggetto Replica Web Service. Strato applicativo della libreria Replica, estende quest ultima pubblicando la sua interfaccia via HTTP grazie all implementazione di un servizio web di tipo REST. Per il deploy dell oggetto ci si è avvalsi della versatilità del server applicativo Apache Tomcat, una piattaforma software per l esecuzione di applicazioni Web sviluppate in linguaggio Java. Lo sviluppo del componente si basa sul concetto di separazione del modello, della vista e della logica (in inglese model, view, control), noto pattern architetturale 3 la cui implementazione è stata facilitata dall adozione del framework Java Spring. Nel dettaglio Spring ha permesso di gestire in maniera efficiente l interfaccia REST e l accesso alla base dati, attraverso l uso della libreria Hibernate La console di gestione La gestione dell intero sistema è demandata ad un applicativo web appositamente sviluppato per poter efficientemente configurare le varie componenti e testare il corretto funzionamento degli script R. 3 Un design pattern è un concetto che può essere definito come una soluzione progettuale generale a un problema ricorrente. Si tratta di una descrizione o modello logico da applicare per la risoluzione di un problema che può presentarsi in diverse situazioni durante le fasi di progettazione e sviluppo del software, ancor prima della definizione dell algoritmo risolutivo della parte computazionale. 29

42 Figura 2.1.5: La console di gestione Per semplificarne lo sviluppo e il deploy, si è scelto di adottare le stesse tecnologie presenti alla base del Replica Web Service. Anche la console utilizza il pattern MVC e si avvale dei framework Spring e Hibernate. Nello sviluppo del componente ha assunto un ruolo fondamentale il design dell interfaccia utente. Dovendo fornire un semplice e veloce accesso alle molteplici configurazioni del sistema distribuito, si è scelto di adottare una libreria di controlli grafici completa e con supporto multi browser quale ExtJS. Completano il diagramma in Fig , due ulteriori componenti: la libreria JQuery e uno strato di comunicazione tra i nodi e la console occupato dal protocollo SSH 4. La libreria JQuery è alla base del terminale per il test. Una console testuale, accessibile via web, che fornisce un set di comandi per la verifica dei programmi R inseriti nel sistema. L osservazione e la gestione dei nodi avviene attraverso il protocollo SSH. L interfaccia fornisce un piccolo set di funzionalità per l avvio, l arresto e la diagnostica dei processi Rserve in esecuzione sui singoli nodi. 4 SSH (Secure SHell, shell sicura) è un protocollo di rete che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host di una rete informatica. 30

43 2.2 Funzionamento Data l architettura modulare del sistema, è possibile suddividere il processo di esecuzione in due fasi: l invocazione dei metodi della libreria istanziando direttamente l oggetto Replica da un programma Java, e l utilizzo dell interfaccia fornita dal suo web service La libreria Replica In Fig è possibile osservare i passi necessari all esecuzione di uno script R. Figura 2.2.1: Schema di esecuzione di uno script R Il punto di partenza è rappresentato da un generico applicativo Java che, dovendo interfacciarsi con un programma R, istanzia la libreria Replica. Il passo successivo, la selezione del nodo, avviene in contemporanea con l apertura della connessione verso l oggetto Rserve. La libreria preleva, dal database in cui risiede la configurazione del sistema, l elenco dei nodi che insieme costituiscono l array di istanze R. La selezione del nodo candidato all esecuzione avviene attraverso un scelta casuale pesata. 31

44 Instaurata la connessione, lo script oggetto della richiesta viene prelevato (sempre dalla base dati) e i valori specificati in input dall applicazione chiamante, passati all istanza di R. Ottenuti i dati in input e il sorgente del programma, il nodo può eseguire il codice R. Nel caso non siano state sollevate eccezioni la computazione termina con successo permettendo alla libreria di prelevare dal database l elenco delle variabili in output attese e di richiedere all istanza di R il fetching dei valori associati. Una volta ritornato l insieme di coppie variabile, valore all applicazione, la connessione può essere chiusa e le risorse liberate Replica Web Service L esecuzione di programmi R attraverso l interfaccia pubblicata dal Replica Web Service deve essere vista come un estensione delle funzionalità fornite nativamente dalla libreria. Osservando la Fig è possibile notare come la comunicazione fra l applicativo e il sistema sia demandata al protocollo HTTP (o HTTPS 5 nel caso sia presente uno strato SSL aggiuntivo). Dato il differente metodo di distribuzione, ad esempio internet (nel caso si pubblichi il servizio via web), è obbligatorio che l applicazione client si autentichi tramite username e password. Questo layer di protezione, assente nell utilizzo diretto della libreria, impedisce l uso illecito del sistema e, grazie all identificazione dell utente, permette, inoltre, di differenziare il consumo delle risorse (resource shaping). Ottenuto un codice hash 6 come identificativo univoco della sessione, il metodo richiesto dal client viene eseguito. Nel caso il programma necessiti di parametri in input, que- 5 L HTTPS (HyperText Transfer Protocol over Secure Socket Layer) è il risultato dell applicazione di un protocollo di crittografia asimmetrica al protocollo di trasferimento di ipertesti HTTP. Viene utilizzato per garantire trasferimenti riservati di dati nel web, in modo da impedire l intercettazione dei contenuti scambiati. 6 Risultato di una funzione hash, cioè una funzione non iniettiva (e quindi non invertibile) che mappa una stringa di lunghezza arbitraria in una stringa di lunghezza predefinita. 32

45 Figura 2.2.2: Schema del funzionamento di Replica Web Sevice 33

46 Figura 2.3.1: Esempio di workspace durante l esecuzione di Replica sti vengono deserializzati 7 e passati all oggetto Replica che viene istanziato ed eseguito secondo la logica descritta nel paragrafo precedente. A computazione avvenuta l output dello script viene a sua volta serializzato e trasferito all applicazione come corpo della risposta. 2.3 Workspace e sessioni Nel Par si è parlato di workspace, di come questi vengono gestiti da R e quale sia la loro importanza nell esecuzione di un nuovo script. Per una completa descrizione dell architettura è necessario soffermarsi ulteriormente su questa particolarità dell ambiente R, analizzandone le implicazioni sul sistema distribuito. Per comprendere i meccanismi di utilizzo della risorsa, è bene distinguere tra due diverse gestioni del workspace: creato durante l uso di Replica quando utilizzata come libreria da un applicativo Java e quando istanziata dal Web Service. 7 La serializzazione è un processo con il quale è possibile salvare un oggetto in un supporto di memorizzazione lineare (ad esempio, un file o un area di memoria), o trasmetterlo su una connessione di rete. La serializzazione può essere in forma binaria o può utilizzare codifiche testuali (ad esempio il formato XML) direttamente leggibili dagli esseri umani. Lo scopo della serializzazione è di trasmettere l intero stato dell oggetto in modo che esso possa essere successivamente ricreato nello stesso identico stato dal processo inverso, chiamato deserializzazione. 34

47 Figura 2.3.2: Gestione del workspace durante l esecuzione di Replica Web Service Il diagramma in Fig fornisce un esempio del workspace durante l esecuzione della libreria Replica. Non appena viene istanziata la connessione con un nodo, R provvede alla creazione di un workspace vuoto, che verrà riempito con le variabili in input necessarie all esecuzione del programma R. I passi successivi, ovvero l esecuzione del codice e la lettura delle variabili in output, non causano una immediata chiusura e de-allocazione dello spazio di lavoro. E l applicazione che, mantenendo il controllo della connessione, ha il compito di terminare la comunicazione con il nodo, operazione che internamente porta alla cancellazione del workspace associato. Durante l intera durata della connessione l utente può quindi decidere di riutilizzare le risorse presenti nello spazio di lavoro per, ad esempio, eseguire nuovi programmi sulla base dei risultati precedentemente ottenuti e lasciati nel workspace. Il ciclo di vita del workspace cambia notevolmente nel momento in cui Replica viene istanziata attraverso le funzionalità messe a disposizione dal servizio web. L assenza di mantenimento dello stato del processo, caratteristica fondamentale dei web service di tipo REST, non permette di mantenere aperta la connessione con R attraverso chiamate consecutive, causandone così la chiusura immediata al termine dell elaborazione. La Fig mostra come ad ogni richiesta effettuata, un nuovo spazio utente venga creato e distrutto non appena la computazione termini. 35

48

49 Capitolo 3 La libreria Replica Si è parlato più volte della libreria Replica, in questo capitolo se ne descriverà il funzionamento, analizzandone l implementazione, e i componenti ad essa collegati. 3.1 I nodi e la loro configurazione Per comprendere il funzionamento della libreria, è necessario prima fornire una definizione formale di nodo del sistema. Un nodo è un elaboratore collegato ad una rete TCP/IP in cui, tra i processi in background, vi è in esecuzione un istanza di Rserve, opportunamente configurata secondo delle linee guida definite in questo capitolo Il sistema operativo Pur non essendo vincolante, la scelta del sistema operativo è importante per l efficienza del sistema e la gestione dell array di nodi. Le attuali versioni di R ed Rserve possono essere eseguite su sistemi operativi di tipo Windows, OS X, Unix e Linux. Quest ultimo, Linux, più precisamente nella versione Ubuntu LTS, è il sistema operativo utilizzato per la progettazione e lo sviluppo del prototipo realizzato durante il lavoro di ricerca. 37

50 Sistemi operativi diversi da Linux garantiscono una compatibilità con il sistema ma potrebbero introdurre differenze a livello di configurazione e gestione del cluster R e i suoi moduli Non esistendo un metodo univoco per l installazione di R, si lascia alle indicazioni di ogni singola distribuzione il compito di fornire indicazioni per un corretto deploy. Una volta disponibile, l ambiente deve essere personalizzato in modo da supportare tutti i pacchetti necessari all esecuzione dei programmi R eseguibili dal sistema. E importante notare come tutti i nodi dovranno avere gli stessi pacchetti installati. E infine consigliabile mantenere tutte le istanze di R, con i relativi moduli, aggiornati e alla stessa revisione Rserve La presenza del pacchetto Rserve su ogni singolo nodo è obbligatoria. A differenza degli altri pacchetti, generalmente privi di configurazione, Rserve necessita di alcune modifiche e aggiunte al file system. Configurazione La configurazione di Rserve, nel caso si utilizzi un sistema operativo Linux, è memorizzata nel file /etc/rserve.conf. All esecuzione del demone 2, Rserve viene caricato con una configurazione di default spesso sufficiente per la maggior parte degli scenari applicativi. Nel listato che segue viene riportata la configurazione in uso nell ambiente di ricerca. interactive off 1 Un cluster è un insieme di computer connessi tra loro tramite una rete dati. 2 Nei sistemi Unix, e più in generale nei sistemi operativi multitasking, un demone (daemon in inglese) è un programma eseguito in background, senza che vi sia un controllo diretto dell utente. 38

51 remote enable encoding utf8 source / etc / Rserve / RScripts / source.r Lasciando alla guida ufficiale di Rserve la descrizione dettagliata dei parametri di configurazione, ci si soffermerà unicamente sulla direttiva source. Inizializzazione del WorkSpace di R Per una corretta comprensione delle funzionalità disponibili nell ambiente, è fondamentale fornire alcuni dettagli sulla gestione dei workspace, più precisamente su come questi vengano creati. Figura 3.1.1: Rserve e la gestione dei workspace Successivamente all esecuzione del servizio Rserve, si assiste, come evidenziato in Fig alla creazione di una nuova istanza dell ambiente R. Il workspace appena creato viene riempito con l output dell esecuzione del file source.r specificato nella configurazione di Rserve. 39

52 Per limitare la latenza che la generazione di un nuovo processo R introdurrebbe ad ogni istanziamento, Rserve, in seguito ad ogni connessione entrante, esegue un fork 3 del processo R, dando vita ad una nuova istanza copia di quella iniziale. In questo modo tutte le richieste vengono eseguite in un ambiente uguale in cui lo script source.r ha ruolo determinante per la configurazione iniziale. E importante notare come, ad esempio, la decisione di specificare il caricamento delle librerie più di uso comune internamente a source.r ottimizzi l esecuzione dei programmi eseguiti, specie se in condizioni di concorrenza. L uso di una libreria condivisa tra tutti i nodi del sistema permette inoltre di fornire ai programmi un set di istruzioni comuni che, in sistemi orientati alla soluzione di specifici compiti come l analisi qualitativa, semplifica notevolmente la logica dei singoli programmi. Esecuzione di Rserve e log Trattandosi di un pacchetto aggiuntivo per R, è lasciato agli implementatori il compito di fornire un metodo per la corretta esecuzione del servizio sul nodo. Nel caso di sistemi operativi Linux, è possibile reindirizzare l output del demone su di un file sfruttando le funzionalità fornite dalla shell Bash: #!/ bin / sh R CMD Rserve --no - save --RS - conf / etc / Rserve. conf > / var / log / Rserve / log 2 >&1 Il re-indirizzamento dei flussi di error e output (stderr e stdout), permette di ottenere con poco sforzo una efficiente infrastruttura di logging completamente gestita dal sistema operativo. 3 Una fork in programmazione è la modalità attraverso la quale un processo crea in memoria una copia di se stesso: la copia prenderà il nome di processo figlio, mentre il processo originale verrà chiamato processo padre. 40

53 3.1.4 Componenti e configurazioni aggiuntive Da semplici istanze di Rserve in esecuzione su sistemi operativi minimali, i nodi possono richiedere anche configurazioni più complesse. Questo in base al tipo di problemi che verranno trattati dal sistema. Non essendo l obiettivo di questa tesi affrontare una specifica casistica, ci si limiterà alla descrizione di due ulteriori configurazioni che permettono, spesso con le risorse già presenti in un sistema operativo Linux, di risolvere problemi complessi come il calcolo distribuito su di un insieme di nodi. Definizione di una base dati comune La definizione di una base dati comune è forse il primo passo necessario per la costruzione di uno strato che permetta la comunicazione inter-nodo. Di semplice implementazione, richiede il deploy di un database accessibile da tutti gli elementi del cluster e dei pacchetti R necessari alla sua interfaccia. Configurazione di un filesystem condiviso Protocolli come NFS 4, spesso nativamente supportati dal sistema operativo sottostante, permettono la definizione di una porzione di filesystem condivisa in cui, ad esempio, poter salvare un istantanea del workspace corrente. Sebbene l accesso concorrente possa limitare l utilizzo di questo tipo di risorsa, se ben strutturata fornisce un layer di comunicazione inter-nodo veloce ed efficiente, che non necessita di alcun pacchetto aggiuntivo. Redis e calcolo distribuito La soluzione di problemi attraverso l esecuzione di più operazioni distribuite su nodi diversi, ognuno dedicato alla soluzione di una parte del problema, non è nuova nel panorama 4 Il Network File System (NFS) è un protocollo per l implementazione di un file system di rete che consenta ai computer di utilizzare la rete per accedere ai dischi rigidi remoti come fossero dischi locali. 41

54 Figura 3.2.1: Diagramma della classe Replica di R. Redis è una base dati di tipo no-sql che, grazie alla sua velocità nel gestire il flusso di dati in ingresso e uscita, è spesso accoppiata a pacchetti specializzati nel calcolo distribuito. 3.2 La libreria Replica La libreria Replica è formata da un insieme di classi Java che, una volta istanziate, funzionano da interfaccia dell insieme di processi Rserve in esecuzione sull array. Come mostrato nella Fig , è la classe Replica che, istanziando un oggetto di tipo RConnection, permette la comunicazione con i nodi sottostanti. 42

55 3.2.1 Il pacchetto org.rosuda.rengine Prima di passare alla formalizzazione dell oggetto Replica, è necessario soffermarsi sull analisi dei package org.rosuda.rengine e org.rosuda.rengine.rserve. I due package rappresentano lo stato dell arte per la connessione ad un processo Rserve da un applicativo Java. Distribuiti dietro licenza GNU LGPL, possono essere prelevati dal sito ufficiale di Rserve e utilizzati in ogni tipo di software Java (anche non open source). La classe REngine, oggetto principale della libreria, funziona da proxy 5 tra l istanza di Rserve e l applicativo client. Fornisce i metodi per il parsing, l esecuzione di codice R e l assegnazione di valori alle variabili presenti nel workspace. La comunicazione con il server Rserve è gestita dalla classe RConnection che, come mostrato in Fig , estende la classe REngine implementando un set di funzioni per la gestione della connessione TCP/IP Istanziare un oggetto Replica Partendo dall analisi del costruttore, di seguito listato, è possibile iniziare a descrivere nel dettaglio il funzionamento della libreria. public Replica ( String connectionstring, String driver, String prefix, IReplicaCache replicacache ) throws ReplicaException {... } Come evidenziato in Fig , il sistema necessita della presenza di una base dati contenente una serie di informazioni quali l elenco dei nodi e i programmi R eseguibili dal sistema. La dipendenza di Replica da una base dati è evidente se si osservano i primi tre parametri del costruttore: una stringa di connessione 6, un JDBC driver e un prefisso per i nomi delle tabelle. 5 Un proxy è un programma che si interpone tra un client ed un server facendo da tramite o interfaccia tra i due host, ovvero inoltrando le richieste e le risposte da uno all altro. 6 La stringa di connessione specifica: un insieme di regole per identificare la risorsa a cui accedere e la configurazione del canale di comunicazione tra client e server. Alcune informazioni solitamente sono: il 43

56 Figura 3.2.2: Diagramma della classe REngine 44

57 Figura 3.2.3: Schema del database relazionale in appoggio alla libreria Replica Il database relazionale Per permettere una gestione centralizzata del sistema distribuito, l intera configurazione, costituita dall elenco dei nodi Rserve, dai programmi R eseguibili e dai loro output, risiede internamente ad un database relazionale compatibile con lo standard JDBC 7. Il diagramma in Figura fornisce i dettagli dello schema, necessari per istanziare correttamente la libreria Replica La gestione dei nodi Principio fondamentale della libreria è fornire un metodo per l accesso alle risorse del sistema. La gestione, come ad esempio l aggiunta di un nuovo nodo, va considerata come un operazione esterna e pertanto non inclusa nel set di istruzioni pubblicate dalla classe. Premesso questo, è ugualmente importante comprendere come i nodi debbano essere organizzati internamente alla base dati. driver di connessione (dipendente dal tipo di database a cui ci si vuole connettere), il tipo di autenticazione, l indirizzo del server, il database che si vuole utilizzare e informazioni supplementari ( quali ad esempio charset, regole di confronto, gestione dei NULL, etc.) 7 Per lo sviluppo del modello oggetto di questa tesi, si è utilizzato il prodotto Oracle MySQL nella versione 5.5 e il suo connettore JDBC nella versione

58 La tabella server elenca l insieme di istanze Rserve presenti nel sistema. L aggiunta o rimozione di un singolo elemento può avvenire agendo direttamente sulla tabella e sui suoi campi: address è l indirizzo ip dell elaboratore su cui viene eseguito il processo Rserve; port è la porta del socket a cui Rserve risponde; weight è il peso da associare al nodo, un valore intero che influenza la selezione del nodo durante il prelievo random dalla lista; Il metodo connect() Istanziato l oggetto e fornita una configurazione, è possibile aprire una connessione verso uno dei nodi dell array utilizzando il metodo connect pubblicato dalla classe Replica. E a questo punto dell esecuzione che avviene la selezione del nodo. Selezione del nodo e bilanciamento del carico Parlando di sistemi distribuiti, è impossibile non imbattersi sul concetto di load balancing 8. Una corretta distribuzione del carico sui nodi costituenti un sistema assicura che ogni risorsa (cpu, memoria, disco e rete) venga sfruttata in maniera quanto più simile rispetto alle altre. Essendo la selezione del nodo un evento collegato all esecuzione di codice, e quindi al consumo di risorse, influisce in maniera diretta sul bilanciamento del carico. Un buon sistema di load balancing dovrebbe essere generico, stabile, scalabile e non costituire esso stesso una fonte di rallentamento [4]. Considerata l architettura dell array, costituito da elementi non connessi, si è scelto di utilizzare un algoritmo statico, quindi 8 Il load balancing è una tecnica informatica utilizzata nell ambito dei sistemi informatici che consiste nel distribuire il carico di elaborazione di uno specifico servizio tra più server. Ad esempio nel caso in cui vengano effettuate 10 richieste su di un cluster di 3 server, alle prime 3 risponderà il "primo" server, a 3 il "secondo" ed alle ultime 4 il "terzo". 46

59 non basato sull osservazione del sistema in esecuzione ma sul suo comportamento medio atteso. Un algoritmo di selezione randomizzato e pesato Un algoritmo randomizzato utilizza, per la selezione del processo, numeri casuali. Nonostante la semplicità insita nella selezione casuale di un nodo, questo genere di algoritmi può ottenere ottime performance, anche se comparato a metodi di selezione più complessi o dinamici[11]. Durante la lettura dei nodi, questi vengono inseriti all interno di un oggetto di tipo RandomCollection, una struttura dati i cui elementi possono essere estratti in maniera casuale. Nel caso in cui gli elementi del sistema siano eterogenei e le risorse non ugualmente distribuite sui nodi, l equità della scelta viene comunque garantita dalla possibilità di assegnare un peso al singolo elemento, cioè un numero positivo che identifichi una singola istanza di Rserve come maggiore candidata per la selezione Assegnazione dei valori in input In base alla logica e al tipo di programma da eseguire sull istanza Rserve selezionata, può essere necessario inserire nel workspace una o più variabili il cui valore assegnato influenzerà l elaborazione dello script. Per istanziare, e allo stesso tempo riempire, le variabili ospitate nel workspace R, la classe Replica fornisce il metodo assignparameter i cui overload 9 permettono di trattare i principali tipi primitivi di R Esecuzione di un programma R Selezionata un istanza Rserve, è possibile avvalersi del metodo execute per eseguire un programma R e ritornarne i risultati. 9 Caratteristica del linguaggio Java che permette di sovraccaricare un metodo di una classe con diverse varianti, in base ai parametri passati come riferimento. Dal punto di vista dell utilizzo della classe ciò ci consente di definire in maniera dinamica il metodo che meglio si adatta all esigenza di utilizzo. 47

60 Figura 3.2.4: Processo di esecuzione di un programma R Il metodo getscriptcontent, che come mostrato infig rappresenta il primo passo dell esecuzione, si occupa della lettura del listato del programma R prelevato dalla base dati relazionale. Non appena disponibile, lo script viene eseguito sulla connessione Rserve selezionata. In caso di errori l esecuzione viene interrotta sollevando una eccezione di tipio ReplicaException. Eseguito il codice, i risultati sono temporaneamente memorizzati nel workspace dell istanza R: è, infatti, compito del metodo getoutputscript prelevare dal database le variabili specificate come output e prelevarne il valore attraverso una serie di ulteriori chiamate ad Rserve. Terminata la fase di prelievo dell output i risultati, memorizzati all interno di una struttura dati di tipo chiave, valore, sono passati al metodo chiamante. La connessione rimane aperta permettendo al programma successivo di essere eseguito all interno dello stesso workspace La gestione dei programmi R Analogamente alla gestione dei nodi, la libreria non fornisce metodi a supporto della memorizzazione e manipolazione dei programmi R e dei loro output. Tuttavia la scelta di utilizzare una base dati come repository dà all utente la possibilità di centralizzarne la gestione attraverso l utilizzo di uno dei diversi client solitamente a forniti insieme al database engine. 48

61 Ogni programma, per poter essere eseguito dal sistema distribuito, deve essere inserito all interno della tabella script mostrata in Fig In particolare il campo content contiene il listato del programma in linguaggio R, mentre name e id ne associano rispettivamente un nome ed un identificativo univoci che dovranno essere utilizzati per l esecuzione e la configurazione degli output. Come descritto nella Sez , l esecuzione non comporta necessariamente il ritorno di risultati, si pensi ad esempio a programmi il cui output viene memorizzato su di una base dati o a piccoli script creati per eseguire solo una parte dell elaborazione (il cui output è l input del programma successivo). La specifica dei risultati, e le istruzioni su come prevelarli, sono demandati alla tabella output, di seguito descritta: id valore auto-incrementato dal sistema per identificare univocamente il singolo output; script contiene l identificativo del programma a cui l output si riferisce; variable obbligatorio; è il nome della variabile del workspace da cui prelevare il valore; code opzionale; contiene una o più istruzioni in linguaggio R da eseguire e il cui risultato verrà inserito all interno della variabile specificata nel campo variable. 49

62

63 Capitolo 4 Replica Web Service Analizzando la vendita di libri e manuali specializzati [18], oppure osservando come determinati termini siano utilizzati all interno di motori di ricerca 1 [16], è possibile misurare la popolarità e la diffusione di un linguaggio di programmazione quale, ad esempio, Java. Nonostante il prodotto della Oracle sia tra i linguaggi più utilizzati, la sua diffusione è in netto calo [3]; da diversi anni infatti si assiste alla crescita di linguaggi interpretati 2 quali PHP e JavaScript, da cui l utilizzo della libreria Replica, senza lo sviluppo di un servizio che ne permetta l integrazione, risulta impossibile. Per far fronte a questo problema e permettere l integrazione di R anche da applicazioni non-java, si è proceduto con la progettazione e lo sviluppo di un servizio web che permetta l esecuzione dei metodi di Replica attraverso semplici chiamate HTTP. 4.1 Il server applicativo La progettazione del web service ha richiesto innanzitutto l identificazione di un server applicativo adatto all esecuzione del servizio e conforme agli standard e alle tecnologie più recenti che ne permettano l utilizzo indipendentemente dal dominio di origine. 1 Google Trends 2 Eseguiti da un interprete. Un interprete ha lo scopo di eseguire un programma in un linguaggio di alto livello senza la previa compilazione dello stesso. 51

64 4.1.1 Il Cross-Origin Resource Sharing Uno scenario ricorrente nelle applicazioni web è quello in cui la pagina, mediante JavaScript e XmlHttpRequest, accede a dei dati consumando un servizio REST. In questo scenario, per attenuare i rischi derivanti da attacchi di tipo "Cross Site Scripting" o "Man in the middle", i browser applicano una restrizione, detta same-origin, per assicurare un livello di sicurezza adeguato e scongiurare gli attacchi citati. Tutto questo si traduce, in sintesi, nell impossibilità di accesso ai dati esposti da un servizio REST-based sul dominio da parte di un applicazione web esposta su un dominio diverso, ad esempio [26]. Esistono diversi workaround per aggirare la restrizione same-origin, uno dei quali è JSONP ovvero JSON with Padding. Questo espediente consiste nell iniettare uno script, esposto come risorsa remota su un dominio differente. Tipicamente si tratta di una risorsa fittizia, rappresentata da una risposta costruita lato server (ASP.NET, PHP, etc.) contenente codice JavaScript + dati JSON, entrambi vengono utilizzati dal client, nella pagina richiedente, per servire la richiesta iniziale. Con HTML5 si ha facoltà di disabilitare la restrizione same-origin, consentendo chiamate AJAX verso domini differenti, a patto di includere nella risposta (prodotta dal server) l header Access-Control-Allow-Origin in cui sono specificati i domini autorizzati ad effettuare chiamate. La risposta prodotta dall ipotetico servizio REST dovrà quindi contenere l header: Access - Control - Allow - Origin : www. bbb. com oppure, se s intende esporre pubblicamente l api, senza alcuna limitazione (ma con tutti i rischi del caso), sarà sufficiente specificare: Access - Control - Allow - Origin :* 52

65 4.1.2 Apache Tomcat Apache Tomcat (o semplicemente Tomcat) è un web container open source sviluppato dalla Apache Software Foundation. Implementa le specifiche JSP e Servlet di Oracle, fornendo, quindi, una piattaforma per l esecuzione di applicazioni Web sviluppate nel linguaggio Java. Dalla versione , grazie ad un apposito filtro, Tomcat fornisce pieno supporto al Cross-Origin Resource Sharing [2]. Essendo la specifica CORS uno dei requisiti fondamentali per l utilizzo del web service da applicazioni JavaScript, il listato in Fig fornisce un esempio di configurazione minimale. < filter > <filter - name > CorsFilter </ filter - name > <filter - class >org. apache. catalina. filters. CorsFilter </ filter - class > </ filter > <filter - mapping > <filter - name > CorsFilter </ filter - name > <url - pattern >/* </ url - pattern > </ filter - mapping > Figura 4.1.1: Configurazione minima per fornire supporto CORS in Tomcat 4.2 Descrizione del processo L ambito di utilizzo di un web service è spesso molto diverso da quello di una libreria. Nonostante il fine comune, cioè fornire funzionalità aggiuntive al programma, la pubblicazione del servizio, solitamente in ambienti aperti e non sicuri come internet, implica lo sviluppo di una serie di accorgimenti che è possibile ritrovare anche all interno del Replica Web Service Autenticazione L utilizzo dei metodi e delle funzioni pubblicate dal servizio web è subordinato all identificazione del processo consumatore. Per poter eseguire un programma R il primo passo necessario è quindi fornire le credenziali per l accesso, autenticandosi così sul sistema. 53

66 Figura 4.2.1: Diagramma funzionale ed utilizzo del servizio web Replica Il processo di autenticazione prevede la chiamata, da parte del consumatore (solitamente un browser), del metodo authenticate.action a cui, come evidenziato in Fig , dovranno essere comunicate username e password di un utente abilitato all utilizzo di Replica Web Service. Ad autenticazione avvenuta il servizio genera una chiave (authentication token) che viene immagazzinata in una tabella della base dati e infine ritornata come risposta al processo consumatore Esecuzione Ottenuto un authentication token valido l applicativo può utilizzare il metodo exec.action, pubblicato dal web service, per eseguire un qualunque programma R disponibile nel sistema. I dati contenuti nel messaggio HTTP della chiamata, codificati in JSON 3, istruiscono 3 JSON, acronimo di JavaScript Object Notation, è un formato adatto per lo scambio dei dati in applicazioni client-server. Pur essendo basato sul linguaggio JavaScript ne è indipendente. 54

67 il servizio sul programma da eseguire e sulle variabili da inserire nel workspace. A computazione avvenuta, la risposta HTTP conterrà la codifica JSON degli output dello script specificati nella configurazione di Replica. 4.3 Implementazione Oltre all utilizzo del server applicativo Apache Tomcat, la progettazione del servizio web ha richiesto l adozione di ulteriori framework e librerie, permettendo così uno sviluppo secondo paradigmi architetturali moderni, quali RAD e MVC, e una più facile espandibilità futura Il framework Spring Il Framework Spring è una piattaforma open source Java, inizialmente scritta da Rod Johnson e rilasciata sotto licenza Apache 2.0 (nel Giugno 2003). Le funzionalità appartenenti al core del Framework Spring possono essere usate per lo sviluppo di qualsiasi tipo di applicazione Java; esistono poi estensioni apposite per creare Web Application. Il target del framework è quello di rendere più semplice lo sviluppo di applicazione J2EE e quello di usare e promuovere buone consuetudini di programmazione usando un modello di programmazione basato sui POJO 4. Spring MVC Spring MVC è un framework per realizzare applicazioni web basate sul paradigma architetturale Model View Controller. Esso si occupa di mappare metodi e classi Java con La semplicità di JSON ne ha decretato un rapido utilizzo specialmente nella programmazione in AJAX. Il suo uso tramite JavaScript è particolarmente semplice, infatti l interprete è in grado di eseguirne il parsing tramite una semplice chiamata alla funzione eval(). Questo fatto lo ha reso velocemente molto popolare a causa della diffusione della programmazione in JavaScript nel mondo del Web. 4 Con l acronimo POJO, Plain Old Java Object, si usa enfatizzare l utilizzo di oggetti Java discendenti diretti della classe Object. 55

68 determinati url, di gestire differenti tipologie di viste restituite al client, di realizzare applicazioni internazionalizzate e di gestire i cosiddetti temi per personalizzare al massimo l esperienza utente. Il pattern MVC Per comprendere al meglio il framework è necessario introdurre il pattern teorico che esso implementa ovvero il modello MVC (acronimo per Model View Controller). Grazie all adozione di questo modello architetturale, la logica dell applicativo viene separata ed organizzata secondo i criteri di seguito esposti: i Model (modelli), oggetti che si occupano di fornire l accesso ai dati necessari alla logica implementata nell applicazione; le View (viste), classi specializzate nella creazione dell interfaccia (non necessariamente grafica); i Controller (controllori), contenitori di metodi e funzioni che, integrando le due componenti precedenti, ricevendo gli input dell utente, gestendo i modelli per la ricerca dei dati e la creazione di viste da restituire all utente, compongono la logica dell applicazione L Authentication controller La logica responsabile dell autenticazione di un client sul sistema distribuito è specificata all interno della classe AuthenticationController. Grazie al framework Spring MVC, che fornisce un efficiente sistema per il routing delle richieste verso gli oggetti controllori, la richiesta viene intercettata e direzionata al metodo authenticateaction che procede, prima di ogni altra azione, alla verifica delle credenziali. 56

69 Figura 4.3.1: L autentication controller Nel caso in cui l utente non sia già stato precedentemente riconosciuto, i valori di username e password contenuti nella richiesta HTTP vengono confrontati con quelli presenti nel database. A riconoscimento avvenuto, il sistema provvede ad assegnare un codice identificativo della connessione che, salvato nella tabella rest_session, permette di riconoscere il client durante le richieste successive senza la necessità di trasmettere nuovamente le proprie credenziali. Il dialogo termina con la scrittura del codice identificativo creato all interno della risposta HTTP e la sua spedizione all oggetto chiamante Lo ScriptExecutionController La richiesta di esecuzione di un programma R viene intercettata dalla classe ScriptExecutionController e reindirizzata al metodo execaction. Come evidenziato in Fig 4.3.2, la richiesta di esecuzione è costituita da un blocco da- 57

70 Figura 4.3.2: Lo ScriptExecution controller ti serializzato in JSON e, tra gli header HTTP, dal codice ottenuto durante la fase di autenticazione. La check dell autenticazione è la prima operazione eseguita dal controllore. Il metodo verifica che il codice identificativo della sessione sia presente nella tabella rest_session e che il timestamp associato non sia più vecchio di 15 minuti. Il processo prosegue con la deserializzazione dei valori passati in input, da cui viene estratto anche il nome del programma R da eseguire, per permetterne l esecuzione su una nuova istanza della libreria Replica. A computazione terminata, i valori di output attesi vengono prelevati dal workspace e serializzati in una stringa JSON memorizzata nel pacchetto di risposta HTTP. 4.4 Lo schema relazionale Oltre alle tabelle necessarie all esecuzione di un programma R attraverso l uso di Replica, l implementazione del servizio web estende lo schema in Fig introducendo una 58

71 Figura 4.4.1: Schema del database relazionale in appoggio al servizio web serie di nuove tabelle necessarie alla gestione degli utenti e dei client connessi. Gli utenti La tabella users definisce gli utenti abilitati all uso del web service e ne memorizza le credenziali di accesso. Nel dettaglio: id codice identificativo univoco dell utente, normalmente gestito in automatico dal sistema; username nome utente; password campo contenente la codifica della password secondo le specifiche della libreria Spring Security e della classe StandardPasswordEncoder; enabled può contenere il valore 0 se l utente non è abilitato all uso del servizio o 1 nel caso contrario. Le sessioni REST Nonostante i servizi web di tipo REST si basino sul concetto di assenza di stato, per permettere un più efficiente utilizzo del servizio qualora i programmi siano strutturati per svolgere solo parzialmente la soluzione di un problema, e quindi ipotizzando un frequente uso del metodo exec.action, il database ospitala tabella rest_session contenente lo storico delle autenticazioni avvenute sul sistema e di seguito descritta: id identificativo univoco della sessione, normalmente gestito in automatico dal sistema; 59

72 created data e ora dell avvenuta autenticazione; keepalive data e ora della scadenza della sessione; ad ogni richiesta il sistema provvede a mantenere questo campo aggiornato, evitando così la creazione di nuove entry per sessioni già istanziate; token campo contenente l identificativo alfanumerico generato casualmente e associato al momento dell autenticazione. 4.5 Serializzazione dei parametri e dei risultati Il processo di codifica e decodifica dei parametri in formato JSON è affidato alla libreria Jackson, parte integrante del framework Spring. I metodi per la serializzazione e deserializzazione sono pubblicati dal servizio ParameterService, un oggetto Java Bean specializzato nella gestione dei parametri e disponibile a livello di istanza. [{ " name ": " variablename ", " type ": " int []", " value ": [1,1,1,2,3,3,3,4] },{ " name ": " secondvariablename ", " type ": " string ", " value ": " something " }] Figura 4.5.1: Esempio di stringa JSON per l input di un programma R I parametri in input La stringa JSON in Fig mostra un esempio di codifica dei parametri in input accettata dal web service. La struttura in radice è rappresentata da un array di oggetti JSON costruiti secondo le seguenti specifiche: name contiene il nome della variabile del workspace a cui si riferisce l oggetto; 60

73 { } " normality " : { " type " : " double ", " value " : " 1.0 " } Figura 4.5.2: Esempio di serializzazione dell output di un programma R type per permettere una corretta interpretazione dei valori specificati, è necessario indicare in questo campo il tipo di variabile che si andrà a definire nel workspace; la Tab. 4.1 elenca i differenti tipi di input supportati dal sistema; value il valore da assegnare alla variabile TIPO TIPO R SINTASSI JSON int integer 1 int[] integer[] [1,2] double double double[] double[] [0.123,0.1234] string string abc string[] string[] [ abc, def ] Tabella 4.1: Tipi consentiti nella definizione dei parametri di input e output Serializzazione dei risultati La trasmissione dei risultati al programma chiamante avviene grazie alla serializzazione, in formato JSON, delle variabili specificate come output dello script. Come si può osservare dalla Fig , la struttura utilizzata è simile a quella adottata per il passaggio dei valori in ingresso. L array di oggetti è sostituito da un unico JavaScript object composto da una serie di proprietà, ognuna corrispondente ad una delle variabili definite come output dello script. I tipi consentiti sono quelli elencati in Tab

74

75 Capitolo 5 La console amministrativa Nei capitoli precedenti si è sottolineato come la mancanza di un interfaccia di gestione, anche solo a livello di libreria, obblighi gli utenti del sistema ad intervenire manualmente nella configurazione agendo sul database e sui singoli nodi. Per ovviare a questo inconveniente e allo stesso tempo mantenere un architettura dei singoli componenti minimale, si è progettata e sviluppata una apposita applicazione web: Replica Console. 5.1 L interfaccia utente e le funzionalità fornite Un importante metodo per realizzare sistemi semplici all utilizzo e all apprendimento è renderli esplorabili [17]. Come mostrato in Fig , il legame funzionalità-interfaccia utente è stato consolidato organizzando le funzionalità in elenchi accessibili da specifiche aree della pagina web. La porzione superiore della pagina, organizzata attraverso l utilizzo di tab pages, permette la navigazione tra le due macro sezioni di Replica Console: il setup, che fornisce un rapido accesso alle configurazioni maggiormente soggette a cambiamenti; il terminale di test, una console testuale da cui gli utenti del sistema possono testare i programmi R a disposizione di Replica. 63

76 Figura 5.1.1: L interfaccia utente suddivisa per aree di contenuto Funzionalità di configurazione L area posta a sinistra della pagina di setup permette la navigazione delle funzionalità di configurazione disponibili all utente e in uso nel sistema: gestione degli script; gestione degli utenti; gestione dei nodi; gestione della configurazione di Replica Console La gestione degli script Attraverso la gestione degli script viene permesso l inserimento, la rimozione e la modifica dei programmi R presenti nella base dati associata al sistema distribuito. La funzionalità è accessibile dalla sezione R Scripts dell interfaccia di setup, selezionando, appunto, la voce script dal menù di sinistra. Un elenco navigabile permette la selezione dei programmi R, mentre una serie di bottoni alla base ne abilitano la rimozione o la creazione. 64

77 Figura 5.1.2: Modifica di un programma R Figura 5.1.3: Modifica degli output di un programma R L editing avviene tramite il form mostrato in Fig Qui l utente ha la possibilità di variare nome e descrizione dello script e di inserirne il codice R associato. La gestione dei valori di ritorno è invece accessibile aprendo il pannello output alla base della finestra di modifica (Fig ). L editing, abilitato unicamente in seguito all assegnazione di un identificativo numerico allo script, avviene direttamente sulla griglia. 65

78 RUOLO ROLE_USER ROLE_SETUP ROLE_ADMIN DESCRIZIONE Accesso alla console di test Accesso alle funzionalità di configurazione del sistema distribuito Accesso alle funzionalità di configurazione di Replica Console Tabella 5.1: Elenco dei ruoli utente disponibili Gestione degli utenti e assegnazione dei ruoli Per garantire un accesso riservato alle funzionalità pubblicate dalla Console, l infrastruttura utilizzata per la gestione degli utenti Replica Web Service è stata estesa aggiungendo il supporto ai ruoli utente. Grazie alla condivisione della base dati e, nello specifico, della tabella users, Replica Console è in grado di gestire, attraverso un unica interfaccia, sia gli utenti abilitati all esclusivo utilizzo di Replica Web Service, sia quelli amministratori. Per la gestione dei permessi è necessario assegnare uno o più ruoli elencati in Tab Figura 5.1.4: Finestra di modifica utente Gestione dei nodi L inserimento e la rimozione dei nodi, così come l assegnazione e la variazione del peso associato ai singoli componenti del sistema distribuito, è gestibile attraverso l interfaccia di gestione dei server mostrata in Fig

79 Figura 5.1.5: Interfaccia per la gestione dei nodi del sistema distribuito Figura 5.1.6: Il terminale Il terminale di test Accessibile tramite l apposita tab Terminal, il terminale si presenta all utente come una console testuale in stile unix. Proprio alcune delle caratteristiche principali delle interfacce a linea di comando quali la composizione di funzioni e la sinteticità [14], unite alla possibilità di integrare il parser JavaScript già presente nel browser, ha portato allo sviluppo di un terminale non grafico. Comandi e funzioni, richiamabili solitamente attraverso la compilazione di moduli web, sono stati sostituiti da comandi richiamabili da un ambiente JavaScript appositamente strutturato per fornire un accesso rapido alle funzioni del web service e in maniera del tutto analoga ad una implementazione reale. 67

80 Comandi disponibili help mostra i comandi disponibili; replica.authenticate si autentica sul servizio web e ritorna l identificativo di sessione associato all evento; replica.execscript permette l esecuzione di un programma R su di un servizio web Replica; 5.2 L implementazione lato server Per semplificare l implementazione ed il deploy, molti strati dell architettura di Replica Console, così come molte tecnologie utilizzate, sono comuni a quelli adottati per lo sviluppo degli altri componenti del sistema Il server applicativo L intera logica del server viene eseguita da una istanza di Apache Tomcat Le librerie e il framework Spring Sviluppato secondo il paradigma del Model View Controller, anche Replica Console incorpora il framework Spring per la gestione del routing delle richieste e la separazione fra logica, modello e presentazione. La connessione al database è gestita dall estensione Spring per la libreria Hibernate, anch essa parte integrante del progetto La logica di controllo La logica di controllo dei flussi di richieste è gestita dalle classi evidenziate nel diagramma di Fig

81 Figura 5.2.1: Diagramma delle classi Replica Console per il controllo delle richieste Per mantenere una separazione del codice sorgente a livello logico, ad ogni funzionalità elencata nella Sez. 5.1 corrisponde un oggetto di tipo Controller, istanziato dal framework Spring all avvio del servizio. I controller Nonostante ogni controller sia progettato per svolgere una serie di operazioni specializzate e diverse, grazie ad una architettura fortemente orientata agli oggetti è possibile evidenziare i componenti e le classi comunemente coinvolte nell elaborazione dell informazione. Questa struttura ricorrente, realizzata anche grazie alle funzionalità fornite dal framework Spring, ha permesso di concentrarsi maggiormente sulla soluzione del problema piuttosto che sull implementazione dell azione. Come mostrato in Fig , il pacchetto HTTP inviato dal browser contiene i dettagli 69

82 Figura 5.2.2: Struttura di un controller della richiesta serializzati in JSON. La prima operazione effettuata dal controller è quindi la deserializzazione dei dati, che avviene grazie all utilizzo dei metodi della libreria GenericUtil. Non appena disponibili, i parametri della richiesta sono utilizzati per processare l azione. Per permettere il riuso di metodi e funzioni, la logica è implementata da particolari oggetti JavaBean denominati servizi, la cui particolarità è quella di essere allocati a livello di istanza e quindi facilmente riutilizzabili. Per la gestione della persistenza e l interfacciamento con la base dati, necessaria per portare a termine la maggior parte delle operazioni fornite da Replica Console, è stato utilizzato il pattern DAO. I Data Access Object, o classi di persistenza, forniscono i metodi per l interrogazione e la manipolazione delle classi di dominio associate allo schema relazionale. Nel dettaglio è fornita l implementazione delle funzionalità di base CRUD (Create, Read, Update e Delete). Completata l operazione richiesta, il controllo passa al framework Spring che, prelevato il valore di ritorno del metodo controllore, procede alla sua serializzazione, permettendone 70

83 così l inoltro al client. 5.3 Lo sviluppo dell interfaccia utente In un applicativo web come Replica Console, la progettazione dell interfaccia utente deve tenere conto di numerosi fattori, primo tra tutti la necessità di fornire un prodotto semplice all utilizzo e graficamente allineato agli standard attuali. Nonostante negli ultimi anni si sia assistito alla diffusione di numerose tecnologie per lo sviluppo web lato client, la scelta è ricaduta sull adozione del framework JavaScript ExtJS, considerato lo stato dell arte per la creazione di applicativi web dinamici e conformi allo standard HTML5. Il framework ExtJS ExtJS è un framework JavaScript per lo sviluppo di applicazioni web interattive. Basato sugli standard Ajax, DHTML e DOM, dalla versione 4, grazie all adozione del paradigma MVC, è in grado di garantire scalabilità, semplicità e flessibilità; qualità fino ad ora riservate solitamente alla logica lato server Il modello architetturale Negli applicativi web Java conformi al paradigma MVC, lo sviluppo della logica di presentazione è solitamente demandato alle Java Servlet Page, una tecnologia in grado di fornire contenuti dinamici in formato HTML o XML. Come mostrato nella Fig , Replica Console utilizza le JSP unicamente come contenitore per ospitare un applicazione ExtJS, demandando a quest ultima il compito di creare e gestire l intera interfaccia utente. L oggetto Application è un particolare container della libreria ExtJS che fornisce allo sviluppatore una serie di metodi e funzionalità utili alla definizione di un applicativo web istanziabile dall interprete JavaScript del browser e associabile ad una qualunque porzione di una pagina HTML. 71

84 Figura 5.3.1: Architettura dell interfaccia utente 72

85 Figura 5.3.2: Organizzazione del codice sorgente dell interfaccia utente La differenza principale tra un applicazione ExtJS e una qualunque applicazione web implementata attraverso l uso di HTML e JavaScript, è la totale assenza di codice HTML e CSS. Tutti gli aspetti riguardanti la definizione della grafica sono gestiti dagli oggetti View dell applicazione: ad esempio per mostrare un bottone è necessario istanziarlo all interno di una view, assegnandogli parametri quali il testo dell etichetta e la dimensione. La logica di controllo è gestita da oggetti di tipo Controller in cui viene fornita l implementazione delle funzioni JavaScript associate agli eventi dei componenti istanziati nelle viste. E compito dell oggetto controller iniziare la comunicazione con il server ed elaborarne le risposte aggiornando, dove necessario, la grafica della view. Nel caso di controlli web (oggetti dinamici per l input e output dei dati) orientati alla gestione e visualizzazione di dataset, il framework fornisce uno strato per la manipolazione dei dati costituito da modelli, entità rappresentati i dati, e data store, collezioni di modelli. Nella Fig è possibile vedere la porzione del file system contenente l applicativo ExtJS responsabile della visualizzazione e gestione dell intera interfaccia grafica utente. 73

86 Il file app-setup.js, richiamato dalla JSP, istanzia i vari controller contenuti nell omonima directory, i quali a loro volta, se necessario, provvedono all allocazione di viste, modelli e store Il terminale Nell analisi dello sviluppo dell interfaccia grafica è necessario fornire una descrizione separata per quello che è il terminale di test fornito a corredo dell applicazione Replica Console. L oggetto, pur essendo inserito all interno dell applicativo ExtJS, sfrutta le funzionalità di una libreria JavaScript diversa, jquery. La libreria jquery jquery è una libreria di funzioni JavaScript, browser-indipendente, per le applicazioni web, che si propone come obiettivo quello di semplificare la programmazione lato client delle pagine HTML. Il framework fornisce metodi e funzioni per gestire al meglio aspetti grafici e strutturali come posizione di elementi, effetto di click su immagini, manipolazione del Document Object Model e altro ancora, mantenendo la compatibilità tra browser diversi e standardizzando gli oggetti messi a disposizione dall interprete JavaScript del browser. L architettura Analogamente al resto dell interfaccia utente, anche il terminale è un oggetto JavaScript generato da una apposita JSP. La console si presenta all utente come una pagina web a sfondo nero in grado di ospitare una serie di caratteri costituenti un comando. Come mostrato in Fig il comando, una volta raccolto dall interprete, può essere elaborato in due modi differenti: come comando console o come istruzione JavaScript. 74

87 Figura 5.3.3: Funzionamento del terminale A differenza dei comandi nativi della console, riservati esclusivamente a funzioni di utilità quali l aiuto in linea, le istruzioni JavaScript permettono di sfruttare appieno l interprete del browser permettendo l allocazione di oggetti e la chiamata di funzioni. L oggetto replica Specificato internamente al file bin.js, un contenitore di classi JavaScript a disposizione dell utente per il test e la diagnostica del sistema distribuito, replica è l oggetto che permette di testare i metodi pubblicati dal web service. Istanziato durante l inizializzazione della console, l oggetto replica pubblica le funzioni authenticate (Fig ) ed execscript, utilizzabili, rispettivamente, per l autenticazione e l esecuzione di programmi R attraverso il terminale di Replica Console. 75

88 authenticate : function ( host, username, password ) { var me = this ; $. ajax ({ url : host + '/ authenticate. action? username = ' + username + '& password = ' + password, datatype : ' json ', xhrfields : { withcredentials : true }, statuscode : { 404: function () { me. echo ( ' Host not found '); }, 500: function () { me. echo ( ' Server error '); } } }). done ( function ( data ) { if ( data. success ) { me. echo ( ' Server answer : ' + data. message ); me. echo ( ' Variable < span class =" gray "> authtoken </ span > is ' + data. data [ ' SpcRest - Auth - Token ']); } else { me. echo ( ' Server answer : ' + data. message ); } this. authtoken = data. data [ ' SpcRest - Auth - Token ']; }); return ''; } Figura 5.3.4: Il metodo replica.authenticate 76

89 Capitolo 6 Un esempio di utilizzo: test di verifica di normalità Considerato che la quantità di memoria disponibile per l allocazione del workspace e la complessità degli algoritmi possono influenzare la corretta esecuzione del codice fino anche a impedirne il raggiungimento del risultato, può essere utile analizzare una soluzione che preveda la suddivisione del problema su più istanze di R in parallelo. 6.1 Il problema: test di verifica di normalità La distribuzione normale è considerata il caso base delle distribuzioni di probabilità continue a causa del suo ruolo nel teorema del limite centrale. Più specificamente, assumendo certe condizioni, la somma di n variabili casuali con media e varianza finite tende a una distribuzione normale al tendere di n all infinito. Grazie a questo teorema, la distribuzione normale si incontra spesso nelle applicazioni pratiche, venendo usata in statistica e nelle scienze naturali e sociali come un semplice modello per fenomeni complessi. 77

90 6.1.1 Il test di Anderson-Darling Nonostante i test a disposizione siano molto numerosi, e la maggior parte di questi siano disponibili nei vari pacchetti di R, l implementazione di questo esempio si basa sul test di Anderson-Darling (dai suoi autori Theodore Wilbur Anderson e Donald A. Darling che lo descrissero nel 1952). Spesso utilizzato per il controllo qualità attraverso la metodologia dello Statistical Process Control 1, è un test di verifica d ipotesi utilizzato in statistica per verificare se un campione di valori può essere generato da una determinata variabile casuale. Quando applicato per verificare l appartenenza ad una variabile casuale gaussiana, diventa uno degli strumenti statistici più potenti per individuare la non corrispondenza con la gaussiana Un implementazione in R Disponibile nella libreria nortest (che accoglie numerosi test di normalità), la funzione ad.test(x), dato un vettore contenente i dati da analizzare, restituisce un valore p (livello di significatività osservato) che permette o meno di accettare l ipotesi di normalità. > library ( nortest ) > x <- rnorm (200, 10, 2) > ad. test (x) Anderson - Darling normality test data : x A = , p - value = Figura 6.1.1: Implementazione del test di Anderson-Darlin in linguaggio R L esempio di Fig mostra le righe di codice R necessarie alla generazione di un dataset di 200 elementi (composto da valori normalmente distribuiti aventi media=10 e deviazione standard=2) e al suo test di normalità. Come sottolineato dalla Tab. 6.1, essendo il valore-p ritornato (0,2167) maggiore di 0,05, si può concludere che l insieme di dati analizzati è normalmente distribuito. 1 Una metodologia per il controllo della qualità basata su funzioni statistiche. 78

91 IPOTESI NULLA (H0) I DATI SEGUONO UNA DISTRIBUZIONE NORMALE Accetto H0 p-value > 0,05 Rifiuto H0 p-value <= 0,05 Tabella 6.1: Risultato test Anderson-Darling La dimensione del dataset La dimensione del dataset è direttamente proporzionale alla quantità di memoria e al tempo necessari all esecuzione del test. Ad esempio l elaborazione delle poche centinaia di valori contenuti nel vettore x in Fig richiedono una frazione di secondo e pochi kilobyte di memoria. 6.2 Test di normalità distribuito Nel caso in cui si debba eseguire il test di normalità su popolazioni molto grandi 2, i tempi di elaborazione richiesti e i limiti imposti dall architettura di R, che non permette l allocazione di variabili di dimensione superiore alla quantità di memoria disponibile nel sistema, hanno portato alla progettazione di un algoritmo adatto all esecuzione parallela del test di Anderson-Darling su di un sistema distribuito quale Replica. Per semplificare l implementazione e limitare lo scambio dati client-server ai soli parametri, l algoritmo, definito in Fig , ha come prerequisiti l adozione di una base dati centralizzata su cui vi è memorizzato il dataset e l utilizzo di un numero intero (progressivo e senza interruzioni) come chiave della tabella. A meno che non siano conosciuti a priori, l algoritmo inizia con l estrazione del valore chiave (ID) minimo e massimo associato al set di dati. Il risultato viene utilizzato per popolare una tabella di supporto temporanea, solitamente creata in memoria, che contiene un insieme di valori interi casuali compresi tra il minimo e massimo dell insieme delle chiavi. 2 La cui dimensione è maggiore di

92 Figura 6.2.1: Diagramma funzionale: test di normalità distribuito 80

93 Figura 6.3.1: Componenti utilizzati per l implementazione del test di normalità distribuito Stabilita la dimensione k del sottoinsieme su cui effettuare il test e il numero di osservazioni s da effettuare, per evitare che la distribuzione dei campioni sia stata distorta a causa dell effetto randomico del campionamento, si procede con l esecuzione, in parallelo, del test sugli s sottoinsiemi di k elementi casuali. Terminati i processi e raccolti i livelli di significatività osservati, se il risultato viene confermato per almeno il 95% dei casi allora vi è una probabilità del 95% che i risultati siano normalmente distribuiti. 6.3 Implementazione Prima di procedere con la descrizione dei passi necessari all implementazione dell algoritmo, è utile fornire alcuni dettagli sulla configurazione utilizzata durante il test. Come evidenziato in Fig , il sistema utilizza tre nodi distinti. Un database MySQL ospita il dataset da analizzare e le tabelle di supporto create durante la fase iniziale del test. Le frecce esterne alla superficie tratteggiata indicano collegamenti Gigabit Ethernet. L intera gestione dell array è demandata ad un unica istanza di Replica WebService la cui configurazione è ospitata all interno di un apposito server MySQL. Tutti i test sono effettuati utilizzando un browser connesso al terminale della console di gestione. 81

94 CREATE TABLE tmp_rand_numbers ( number int (11) NOT NULL, KEY IDX_number ( number ) ); DELIMITER $$ CREATE PROCEDURE InsertRand ( IN NumRows INT, IN MinVal INT, IN MaxVal INT ) BEGIN DECLARE i INT ; SET i = 1; START TRANSACTION ; WHILE i <= NumRows DO INSERT INTO tmp_rand_numbers VALUES ( MinVal + CEIL ( RAND () * ( MaxVal - MinVal ))); SET i = i + 1; END WHILE ; COMMIT ; END$$ DELIMITER ; CALL InsertRand (100000, , ); SELECT * from tmp_rand_numbers LEFT JOIN dataset ON tmp_rand_numbers. number = dataset. id Figura 6.3.2: Codice SQL per la selezione di valori casuali Il dataset Non è difficile procedere alla selezione casuale di un certo numero di record appartenenti ad una tabella: la funzione random è ormai presente in tutti i più utilizzati RDBMS, e il suo utilizzo all interno di una SELECT può portare a termine il compito con pochissime istruzioni di codice SQL. Tuttavia, considerata la dimensione della base dati utilizzata per il test, composta da di record, la selezione basata su condizione randomica porta a tempi di elaborazione dell ordine di decine di secondi (anche su sistemi molto performanti). Come mostrato in Fig , per la selezione, in maniera efficiente, di un insieme arbitrario di valori casuali, si è proceduto come prima cosa alla creazione di una tabella temporanea riempita con valori casuali generati dalla procedura InsertRand. La selezione dei valori avviene incrociando, con una clausola di JOIN, i valori generati con le chiavi del dataset. 82

95 drv <- dbdriver ( ' MySQL ') con <- dbconnect (drv, username = ' root ', host = ' ', port = as. numeric ( ' 3306 '), dbname = ' test ', password = '') rs <- dbsendquery ( con, paste ( ' SELECT value FROM tmp _ rand _ numbers LEFT JOIN norm ON tmp _ rand _ numbers. number = norm. id LIMIT ', start, ',', limit )); data <- fetch (rs,n = -1) x <- data $ value n <- ad. test (x) dbdisconnect ( con ) normality <- if ( n [2] >= 0.05) 1 else 0 Figura 6.3.3: Programma R per il calcolo del test di Anderson-Darling su di una partizione di dati prelevata da un database MySQL La funzione R L esecuzione del test di Anderson-Darling è demandata al programma R in Fig che, prelevata una porzione casuale del dataset, ne verifica la normalità ritornando il valore intero 1 quando l ipotesi è accettata e 0 nel caso contrario. Per l accesso alla base dati si è utilizzato il pacchetto RMySQL mentre, per il calcolo della funzione di test di normalità, il pacchetto nortest. In previsione di un utilizzo prevalentemente concorrente, per ridurre il tempo di esecuzione dello script, entrambe le librerie vengono caricate nel workspace di Rserve durante l avvio del servizio. Le direttive library non sono quindi presenti nel listato di Fig perché già inserite nel file source.r La selezione del sottoinsieme da analizzare è affidata alla clausola LIMIT della query SQL istanziata dalla funzione dbsendquery. Gli oggetti R start e limit, sono gli unici valori in input richiesti dal programma. Attraverso la selezione di range sempre diversi, è possibile ripartire l analisi su più chiamate indipendenti Il codice JavaScript La logica responsabile dell istanziamento degli oggetti Replica (attraverso le chiamate al web service) e della ripartizione del test sul sistema distribuito è demandata al programma JavaScript listato in Fig Ottenuto, attraverso la chiamata del metodo replica.authenticate, l accesso al sistema e istanziato il vettore che ospiterà i risultati del test, l esecuzione continua con un ciclo for 83

96 Figura 6.3.4: Distribuzione dei valori del dataset replica. authenticate ( localhost," user "," pass " ); var results = []; var s = 60, k = 5000, p = 0; for (i = 0; i < s; i ++) { input = [{ " name ":" start ", " type ":" int ", " value ":i*k },{ " name ":" limit ", " type ":" int ", " value " :( i +1)* k }]; replica. execscript ( localhost," normality ", replica. authtoken, input, function ( data ) { results. push ( data. data. normality. value ); } ); } Figura 6.3.5: Programma JavaScript per il calcolo del test di normalità attraverso il servizio web Replica di lunghezza s che ha il compito di eseguire il programma R normality su partizioni, diverse e continue del dataset randomizzato, aventi dimensione k. Data l asincronicità delle chiamate AJAX, il risultato delle singole elaborazioni, non appena disponibile, viene infine processato dalla funzione di callback specificata tra i parametri del metodo replica.execscript. I risultati, inseriti in un array di numeri interi, possono essere analizzati e utilizzati per stabilire una percentuale di probabilità. 84

97 6.3.4 Configurazione del browser Le specifiche del protocollo HTTP/1.1 suggeriscono l utilizzo di non più di due connessioni simultanee verso uno stesso dominio[13]. Nonostante i limiti imposti dai normali browser siano notevolmente più ampi (normalmente da 6 a 8 accessi contemporanei), per permette un utilizzo delle risorse in maniera quanto più possibile concorrente, è stato necessario innalzarne il valore. La procedura, permessa solo nei browser in cui il numero non sia specificato a livello di codice sorgente 3, e l hardware a disposizione per i test 4, hanno permesso l allocazione di circa 20 chiamate contemporanee. 6.4 Risultato dell analisi Il test di 60 campioni di 5000 elementi casuali prelevati da un dataset di di record ha confermato, come mostrato dalla Fig , l ipotesi di normalità per il 96.6% delle volte. Considerando che il test di Anderson-Darling effettuato sull intero dataset (Fig ), precedentemente generato dal comando rnorm di R, restituisce un p-value di 0,5585, il risultato ottenuto dall algoritmo proposto risulta attendibile. 3 Firefox dalla versione 17, Opera dalla versione Workstation Linux con processore Intel i7-4700hq, 16GB di memoria RAM e disco SSD. 85

98 Figura 6.4.1: Output su terminale con risultato del test e console di debug del browser con visualizzazione delle chiamate AJAX e risposta Prestazioni e utilizzo della memoria Nonostante le specifiche architetturali imposte dal browser, in particolare l uso di un singolo thread per la gestione delle chiamate AJAX, abbiano limitato l utilizzo in concorrenza dell ambiente, come è possibile osservare nella Tab. 6.2, le prestazioni e il consumo di memoria ottenuti dal sistema distribuito risultano migliori rispetto all esecuzione del processo su di una singola istanza di R. REPLICA WEB SERVICE R Tempo necessario al calcolo del test di normalità 26813ms 78844ms Memoria allocata da R ~30MB per nodo ~600MB Tabella 6.2: Confronto dei consumi di memoria e tempi di esecuzione del test di Anderson-Darling in esecuzione su Replica Web Service e R 86

Corso sul pacchetto R

Corso sul pacchetto R Corso sul pacchetto R Introduzione ad R http://www.r-project.org ! R è un ambiente di sviluppo specifico per elaborare dati, eseguire calcoli ed effettuare rappresentazioni grafiche, che utilizza un linguaggio

Dettagli

Siti web centrati sui dati (Data-centric web applications)

Siti web centrati sui dati (Data-centric web applications) Siti web centrati sui dati (Data-centric web applications) 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 WEB La tecnologia del World Wide Web (WWW) costituisce attualmente

Dettagli

Applicazioni web centrati sui dati (Data-centric web applications)

Applicazioni web centrati sui dati (Data-centric web applications) Applicazioni web centrati sui dati (Data-centric web applications) 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 WEB La tecnologia del World Wide Web (WWW) costituisce attualmente lo strumento di riferimento

Dettagli

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4) Architettura del WWW World Wide Web Sintesi dei livelli di rete Livelli di trasporto e inferiori (Livelli 1-4) - Connessione fisica - Trasmissione dei pacchetti ( IP ) - Affidabilità della comunicazione

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Informatiche. Dal Mainframe al Personal Computer Architetture Informatiche Dal Mainframe al Personal Computer Architetture Le architetture informatiche definiscono le modalità secondo le quali sono collegati tra di loro i diversi sistemi ( livello fisico

Dettagli

Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Informatiche. Dal Mainframe al Personal Computer Architetture Informatiche Dal Mainframe al Personal Computer Architetture Le architetture informatiche definiscono le modalità secondo le quali sono collegati tra di loro i diversi sistemi ( livello fisico

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale La soluzione modulare di gestione del Sistema Qualità Aziendale I MODULI Q.A.T. - Gestione clienti / fornitori - Gestione strumenti di misura - Gestione verifiche ispettive - Gestione documentazione del

Dettagli

Creare una Rete Locale Lezione n. 1

Creare una Rete Locale Lezione n. 1 Le Reti Locali Introduzione Le Reti Locali indicate anche come LAN (Local Area Network), sono il punto d appoggio su cui si fonda la collaborazione nel lavoro in qualunque realtà, sia essa un azienda,

Dettagli

Reti di Telecomunicazione Lezione 6

Reti di Telecomunicazione Lezione 6 Reti di Telecomunicazione Lezione 6 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Lo strato di applicazione protocolli Programma della lezione Applicazioni di rete client - server

Dettagli

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet Indirizzi Internet e Protocolli I livelli di trasporto delle informazioni Comunicazione e naming in Internet Tre nuovi standard Sistema di indirizzamento delle risorse (URL) Linguaggio HTML Protocollo

Dettagli

2 Gli elementi del sistema di Gestione dei Flussi di Utenza

2 Gli elementi del sistema di Gestione dei Flussi di Utenza SISTEMA INFORMATIVO page 4 2 Gli elementi del sistema di Gestione dei Flussi di Utenza Il sistema è composto da vari elementi, software e hardware, quali la Gestione delle Code di attesa, la Gestione di

Dettagli

Lo scenario: la definizione di Internet

Lo scenario: la definizione di Internet 1 Lo scenario: la definizione di Internet INTERNET E UN INSIEME DI RETI DI COMPUTER INTERCONNESSE TRA LORO SIA FISICAMENTE (LINEE DI COMUNICAZIONE) SIA LOGICAMENTE (PROTOCOLLI DI COMUNICAZIONE SPECIALIZZATI)

Dettagli

1. BASI DI DATI: GENERALITÀ

1. BASI DI DATI: GENERALITÀ 1. BASI DI DATI: GENERALITÀ BASE DI DATI (DATABASE, DB) Raccolta di informazioni o dati strutturati, correlati tra loro in modo da risultare fruibili in maniera ottimale. Una base di dati è usualmente

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Protocolli applicativi: FTP

Protocolli applicativi: FTP Protocolli applicativi: FTP FTP: File Transfer Protocol. Implementa un meccanismo per il trasferimento di file tra due host. Prevede l accesso interattivo al file system remoto; Prevede un autenticazione

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

SDD System design document

SDD System design document UNIVERSITA DEGLI STUDI DI PALERMO FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA TESINA DI INGEGNERIA DEL SOFTWARE Progetto DocS (Documents Sharing) http://www.magsoft.it/progettodocs

Dettagli

ESERCITAZIONE Semplice creazione di un sito Internet

ESERCITAZIONE Semplice creazione di un sito Internet ESERCITAZIONE Semplice creazione di un sito Internet Sistemi e Tecnologie Informatiche - Prof. Gregorio Cosentino 1 Internet Una rete globale che connette milioni di computer in tutto il mondo, anarchica

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

Dettagli

MagiCum S.r.l. Progetto Inno-School

MagiCum S.r.l. Progetto Inno-School MagiCum S.r.l. Progetto Inno-School Area Web Autore: Davide Revisione: 1.2 Data: 23/5/2013 Titolo: Innopedia File: Documentazione_tecnica Sito: http://inno-school.netsons.org/ Indice: 1. Presentazione

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

Allegato 3 Sistema per l interscambio dei dati (SID)

Allegato 3 Sistema per l interscambio dei dati (SID) Sistema per l interscambio dei dati (SID) Specifiche dell infrastruttura per la trasmissione delle Comunicazioni previste dall art. 11 comma 2 del decreto legge 6 dicembre 2011 n.201 Sommario Introduzione...

Dettagli

Software per Helpdesk

Software per Helpdesk Software per Helpdesk Padova - maggio 2010 Antonio Dalvit - www.antoniodalvit.com Cosa è un helpdesk? Un help desk è un servizio che fornisce informazioni e assistenza ad utenti che hanno problemi nella

Dettagli

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. E stato previsto l utilizzo di uno specifico prodotto informatico (denominato

Dettagli

Come leggere ed interpretare la letteratura scientifica e fornire al pubblico informazioni appropriate sui farmaci

Come leggere ed interpretare la letteratura scientifica e fornire al pubblico informazioni appropriate sui farmaci Come leggere ed interpretare la letteratura scientifica e fornire al pubblico informazioni appropriate sui farmaci I motori di ricerca in internet: cosa sono e come funzionano Roberto Ricci, Servizio Sistema

Dettagli

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico Introduzione alle basi di dati Introduzione alle basi di dati Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS Gestione delle

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

Informatica DR KLOE Calcolo

Informatica DR KLOE Calcolo Informatica DR KLOE Calcolo Progettazione e gestione sotto il sistema operativo Unix di un database per un esperimento che produce almeno 1200 Terabyte. Informatica DR KLOE Calcolo Tutore: Giuseppe Fortugno

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

Reti di Telecomunicazione Lezione 8

Reti di Telecomunicazione Lezione 8 Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato

Dettagli

DBMS e Linguaggi di programmazione nell'era di Internet

DBMS e Linguaggi di programmazione nell'era di Internet DBMS e Linguaggi di programmazione nell'era di Internet Crippa Francesco fcrippa@tiscalinet.it Crippa Francesco (GPL) 1 Programma del corso DBMS nati per il WEB: MySQL Postgres Il cuore del WWW, il web

Dettagli

Oreste Signore, <oreste@w3.org> Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, 1-56124 Pisa

Oreste Signore, <oreste@w3.org> Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, 1-56124 Pisa http://www.w3c.it/education/2012/upra/basicinternet/#(1) 1 of 16 Oreste Signore, Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, 1-56124 Pisa Master in Comunicazione

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Appunti di Sistemi Distribuiti

Appunti di Sistemi Distribuiti Appunti di Sistemi Distribuiti Matteo Gianello 27 settembre 2013 1 Indice 1 Introduzione 3 1.1 Definizione di sistema distribuito........................... 3 1.2 Obiettivi.........................................

Dettagli

sito web sito Internet

sito web sito Internet Siti Web Cos è un sito web Un sito web o sito Internet è un insieme di pagine web correlate, ovvero una struttura ipertestuale di documenti che risiede, tramite hosting, su un web server e accessibile

Dettagli

Reti di Calcolatori. Il Livello delle Applicazioni

Reti di Calcolatori. Il Livello delle Applicazioni Reti di Calcolatori Il Livello delle Applicazioni Il DNS Gli indirizzi IP sono in formato numerico: sono difficili da ricordare; Ricordare delle stringhe di testo è sicuramente molto più semplice; Il Domain

Dettagli

Manuale Utente Amministrazione Trasparente GA

Manuale Utente Amministrazione Trasparente GA Manuale Utente GA IDENTIFICATIVO DOCUMENTO MU_AMMINISTRAZIONETRASPARENTE-GA_1.0 Versione 1.0 Data edizione 03.05.2013 1 Albo Pretorio On Line TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica). Topologia delle reti Una RETE DI COMPUTER è costituita da un insieme di elaboratori (NODI) interconnessi tra loro tramite cavi (o sostituti dei cavi come le connessioni wireless). Rete Point-to-Point:

Dettagli

Sistemi informativi secondo prospettive combinate

Sistemi informativi secondo prospettive combinate Sistemi informativi secondo prospettive combinate direz acquisti direz produz. direz vendite processo acquisti produzione vendite INTEGRAZIONE TRA PROSPETTIVE Informazioni e attività sono condivise da

Dettagli

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Avviso di mancata consegna L avviso, emesso dal sistema, per indicare l anomalia

Dettagli

1.2.1 - REALIZZAZIONE LAN

1.2.1 - REALIZZAZIONE LAN 1 - CODICE PROGETTO 1.2.1 - REALIZZAZIONE LAN 2 - TIPOLOGIA DI INTERVENTO/AREA FUNZIONALE DEL PPL Il progetto è riconducibile a quella che il Piano Provinciale del Lavoro definisce quale Area 1: organizzazione

Dettagli

Sistemi centralizzati e distribuiti

Sistemi centralizzati e distribuiti Sistemi centralizzati e distribuiti In relazione al luogo dove è posta fisicamente la base di dati I sistemi informativi, sulla base del luogo dove il DB è realmente dislocato, si possono suddividere in:

Dettagli

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo Come funziona il WWW Il funzionamento del World Wide Web non differisce molto da quello delle altre applicazioni Internet Anche in questo caso il sistema si basa su una interazione tra un computer client

Dettagli

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti 20120300 INDICE 1. Introduzione... 3 2. Consultazione... 4 2.1 Consultazione Server Fidati... 4 2.2 Consultazione Servizi Client... 5 2.3 Consultazione Stato richieste... 5 3. Amministrazione... 6 3.1

Dettagli

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Università degli Studi Roma Tre Dipartimento di Informatica ed automazione. Facoltà di Ingegneria Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di Laurea AUTENTICAZIONE PER APPLICAZIONI WEB Relatore

Dettagli

Ipertesti e Internet. Ipertesto. Ipertesto. Prof.ssa E. Gentile. a.a. 2011-2012

Ipertesti e Internet. Ipertesto. Ipertesto. Prof.ssa E. Gentile. a.a. 2011-2012 Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Ipertesti e Internet Prof.ssa E. Gentile a.a. 2011-2012 Ipertesto Qualsiasi forma di testualità parole, immagini,

Dettagli

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento I protocolli del livello di applicazione Porte Nelle reti di calcolatori, le porte (traduzione impropria del termine port inglese, che in realtà significa porto) sono lo strumento utilizzato per permettere

Dettagli

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati Affidabilità nel servizio precisione negli strumenti Chanda LPR Chanda LPR è una piattaforma

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO Descrizione Nell ambito della rilevazione dei costi, Solari con l ambiente Start propone Time&Cost, una applicazione che contribuisce a fornire

Dettagli

MODULO 5 Appunti ACCESS - Basi di dati

MODULO 5 Appunti ACCESS - Basi di dati MODULO 5 Appunti ACCESS - Basi di dati Lezione 1 www.mondopcnet.com Modulo 5 basi di dati Richiede che il candidato dimostri di possedere la conoscenza relativa ad alcuni concetti fondamentali sui database.

Dettagli

F.O.A.M. Free Object Access Method. Un introduzione. Documento: Introduzione FOAM.doc Versione: 0.03.2k30131 Autore: Mario Meo Colombo

F.O.A.M. Free Object Access Method. Un introduzione. Documento: Introduzione FOAM.doc Versione: 0.03.2k30131 Autore: Mario Meo Colombo F.O.A.M. Free Object Access Method Un introduzione Documento: Introduzione FOAM.doc Versione: 0.03.2k30131 Autore: Mario Meo Colombo Il protocollo FOAM. FOAM (Free Object Access Method) è un protocollo

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Confronto tra ISO-OSI e TCP/IP, con approfondimento di quest ultimo e del livello di trasporto in cui agiscono i SOCKET. TCP/IP

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

MetaMAG METAMAG 1 IL PRODOTTO

MetaMAG METAMAG 1 IL PRODOTTO METAMAG 1 IL PRODOTTO Metamag è un prodotto che permette l acquisizione, l importazione, l analisi e la catalogazione di oggetti digitali per materiale documentale (quali immagini oppure file di testo

Dettagli

Internet e posta elettronica. A cura di Massimiliano Buschi

Internet e posta elettronica. A cura di Massimiliano Buschi Internet e posta elettronica A cura di Massimiliano Buschi Concetti fondamentali Internet www Tcp/ip Browser Terminologia Esistono un sacco di termini con cui bisogna famigliarizzare http url Link Isp

Dettagli

InitZero s.r.l. Via P. Calamandrei, 24-52100 Arezzo email: info@initzero.it

InitZero s.r.l. Via P. Calamandrei, 24-52100 Arezzo email: info@initzero.it izticket Il programma izticket permette la gestione delle chiamate di intervento tecnico. E un applicazione web, basata su un potente application server java, testata con i più diffusi browser (quali Firefox,

Dettagli

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015 BASE DI DATI: introduzione Informatica 5BSA Febbraio 2015 Di cosa parleremo? Base di dati relazionali, modelli e linguaggi: verranno presentate le caratteristiche fondamentali della basi di dati. In particolare

Dettagli

Database e reti. Piero Gallo Pasquale Sirsi

Database e reti. Piero Gallo Pasquale Sirsi Database e reti Piero Gallo Pasquale Sirsi Approcci per l interfacciamento Il nostro obiettivo è, ora, quello di individuare i possibili approcci per integrare una base di dati gestita da un in un ambiente

Dettagli

Network Monitoring. Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale

Network Monitoring. Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale Network Monitoring & Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale Nicholas Pocher Poker SpA - Settimo Torinese, Novembre 2013 1 Indice Il Network Monitoring:

Dettagli

Finalità della soluzione... 3. Schema generale e modalità d integrazione... 4. Gestione centralizzata in TeamPortal... 6

Finalità della soluzione... 3. Schema generale e modalità d integrazione... 4. Gestione centralizzata in TeamPortal... 6 Finalità della soluzione... 3 Schema generale e modalità d integrazione... 4 Gestione centralizzata in TeamPortal... 6 Dati gestiti dall Anagrafica Unica... 8 Gestione anagrafica... 9 Storicizzazione...

Dettagli

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28 Indice 25 184 Introduzione XI Capitolo 1 Impostazione dell ambiente di sviluppo 2 1.1 Introduzione ai siti Web dinamici 2 1.2 Impostazione dell ambiente di sviluppo 4 1.3 Scaricamento di Apache 6 1.4 Installazione

Dettagli

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica Consiglio regionale della Toscana Regole per il corretto funzionamento della posta elettronica A cura dell Ufficio Informatica Maggio 2006 Indice 1. Regole di utilizzo della posta elettronica... 3 2. Controllo

Dettagli

Capitolo 4 Pianificazione e Sviluppo di Web Part

Capitolo 4 Pianificazione e Sviluppo di Web Part Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,

Dettagli

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Web PHP Tematiche Trattate

Dettagli

Sistema Informativo di Teleraccolta EMITTENTI

Sistema Informativo di Teleraccolta EMITTENTI Sistema Informativo di EMITTENTI aventi l Italia come Stato membro di origine i cui valori mobiliari sono ammessi alla negoziazione in un altro Stato membro dell Unione Europea Art. 116 bis, comma 1, del

Dettagli

Reti di calcolatori. Reti di calcolatori

Reti di calcolatori. Reti di calcolatori Reti di calcolatori Reti di calcolatori Rete = sistema di collegamento tra vari calcolatori che consente lo scambio di dati e la cooperazione Ogni calcolatore e un nodo, con un suo indirizzo di rete Storia:

Dettagli

Università Politecnica delle Marche. Progetto Didattico

Università Politecnica delle Marche. Progetto Didattico Università Politecnica delle Marche Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e dell Automazione Sede di Ancona Anno Accademico 2011-2012 Corso di Tecnologie WEB Docente prof. Alessandro

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

Software Servizi Web UOGA

Software Servizi Web UOGA Manuale Operativo Utente Software Servizi Web UOGA S.p.A. Informatica e Servizi Interbancari Sammarinesi Strada Caiese, 3 47891 Dogana Tel. 0549 979611 Fax 0549 979699 e-mail: info@isis.sm Identificatore

Dettagli

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA Fornitore: Publisys Prodotto: Intranet Provincia di Potenza http://www.provincia.potenza.it/intranet Indice 1. Introduzione... 3 2. I servizi dell Intranet...

Dettagli

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida Breve introduzione curata da Alessandro Benedetti Struts2-Introduzione e breve guida 22-11- 2008 1 Struts 2 Costruisci,attiva e mantieni! Apache Struts 2 è un framework elegante ed estensibile per creare

Dettagli

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB www.arlatighislandi.it

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB www.arlatighislandi.it INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB www.arlatighislandi.it redatto ai sensi del decreto legislativo n 196/2003 2 GENNAIO 2014 documento pubblico 1 PREMESSA 3 SEZIONE

Dettagli

lem logic enterprise manager

lem logic enterprise manager logic enterprise manager lem lem Logic Enterprise Manager Grazie all esperienza decennale in sistemi gestionali, Logic offre una soluzione modulare altamente configurabile pensata per la gestione delle

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi ControlloCosti Cubi OLAP I cubi OLAP Un Cubo (OLAP, acronimo di On-Line Analytical Processing) è una struttura per la memorizzazione e la gestione dei dati che permette di eseguire analisi in tempi rapidi,

Dettagli

Il Web Server e il protocollo HTTP

Il Web Server e il protocollo HTTP Corso PHP Parte 2 Il Web Server e il protocollo HTTP E un programma sempre attivo che ascolta su una porta le richieste HTTP. All arrivo di una richiesta la esegue e restituisce il risultato al browser,

Dettagli

Componenti Web: client-side e server-side

Componenti Web: client-side e server-side Componenti Web: client-side e server-side side Attività di applicazioni web Applicazioni web: un insieme di componenti che interagiscono attraverso una rete (geografica) Sono applicazioni distribuite logicamente

Dettagli

Sistemi Informativi e Sistemi ERP

Sistemi Informativi e Sistemi ERP Sistemi Informativi e Sistemi Trasformare i dati in conoscenza per supportare le decisioni CAPODAGLIO E ASSOCIATI 1 I SISTEMI INFORMATIVI LI - E IMPRESA SISTEMA DI OPERAZIONI ECONOMICHE SVOLTE DA UN DATO

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

BANCHE DATI. Informatica e tutela giuridica

BANCHE DATI. Informatica e tutela giuridica BANCHE DATI Informatica e tutela giuridica Definizione La banca dati può essere definita come un archivio di informazioni omogenee e relative ad un campo concettuale ben identificato, le quali sono organizzate,

Dettagli

Dal protocollo IP ai livelli superiori

Dal protocollo IP ai livelli superiori Dal protocollo IP ai livelli superiori Prof. Enrico Terrone A. S: 2008/09 Protocollo IP Abbiamo visto che il protocollo IP opera al livello di rete definendo indirizzi a 32 bit detti indirizzi IP che permettono

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

capitolo 8 LA CHECKLIST PER LA VALUTV ALUTAZIONEAZIONE TECNOLOGICA

capitolo 8 LA CHECKLIST PER LA VALUTV ALUTAZIONEAZIONE TECNOLOGICA capitolo 8 LA CHECKLIST PER LA VALUTV ALUTAZIONEAZIONE TECNOLOGICA 8.1 ISTRUZIONI PER IL VALUTATORE Campioni Il processo di valutazione tecnologica si basa su un campione del prodotto, precedentemente

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

SISTEMI OPERATIVI DISTRIBUITI

SISTEMI OPERATIVI DISTRIBUITI SISTEMI OPERATIVI DISTRIBUITI E FILE SYSTEM DISTRIBUITI 12.1 Sistemi Distribuiti Sistemi operativi di rete Sistemi operativi distribuiti Robustezza File system distribuiti Naming e Trasparenza Caching

Dettagli

Power-Studio è un semplice, veloce potente ed intuitivo applicativo software di monitoraggio e supervisione energetica che consente di realizzare:

Power-Studio è un semplice, veloce potente ed intuitivo applicativo software di monitoraggio e supervisione energetica che consente di realizzare: Software di monitoraggio e supervisione energetica Power-Studio & Scada Power-Studio è un semplice, veloce potente ed intuitivo applicativo software di monitoraggio e supervisione energetica che consente

Dettagli

Reti e Internet: introduzione

Reti e Internet: introduzione Facoltà di Medicina - Corso di Laurea in Logopedia Corso di Informatica III anno Prof. Crescenzio Gallo Reti e Internet: introduzione c.gallo@unifg.it Reti e Internet: argomenti Tipologie di reti Rete

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli