Strumenti di Build Automation - Jenkins

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Strumenti di Build Automation - Jenkins"

Transcript

1 Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Ingegneria del Software Strumenti di Build Automation - Jenkins Anno Accademico 2016/2017 Candidato: Simone Borrelli matr. N

2 Sommario Introduzione... 2 Strumenti di Build Automation Make ANT Maven POM File di Configurazione Gestione delle Dipendenze Ereditarietà Gradle Struttura Gestione delle dipendenze La Continuous Integration - Jenkins Cos è l integrazione continua? Test Driven Development Continuous Integration Continuous Development Continuous Integration: Le Tecnologie Jenkins Installazione e configurazione I Job di Jenkins Esempio Esempio #2 Jenkins & Maven Dalla Continuous Integration al Continuous Deployment User Acceptance Test Conclusione e Sviluppi Futuri Bibliografia

3 Introduzione Nel contesto dello sviluppo del software, la creazione si riferisce al processo che converte file e altre attività sotto la responsabilità degli sviluppatori in un prodotto software nella sua forma finale o consumabile. In particolare, i tools per la build automation ci permettono di automatizzare alcune attività del ciclo di vita di un software, tra cui: Compilazione: operazione di traduzione di una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni in codice binario (codice oggetto), leggibili della macchina; Linking: consiste nel procedimento di integrazione dei vari moduli a cui un programma fa riferimento con lo scopo di creare una singola unità eseguibile; Packaging dei binari: il risultato della compilazione deve assumere una forma compatta ed una chiara connotazione in base al suo scopo: eseguibile, libreria da esportare, etc.; Esecuzione di test: per evitare bug, è necessario attuare una fase di sperimentazione che dimostri l affidabilità del software in ogni sua sfaccettatura, cercando di verificarne le funzionalità in ogni possibile situazione; Distribuzione della soluzione software: una volta che il software è il pronto, deve essere installato e configurato sui sistemi per la quali è stato implementato; Creazione di documentazione: data la complessità dei prodotti informatici, è fondamentale la redazione di opportuni documenti che ne spieghino l utilizzo e le funzionalità; 2

4 I prodotti di build automation sono tools utilizzati per automatizzare tutte le fasi appena descritte Tramite un efficace codice di build automation è possibile: Eliminare una fonte di variazione e quindi di difetti. Un processo di compilazione manuale contenente un gran numero di passaggi necessari offre tante possibilità di errore; Migliorare la qualità del prodotto; Accelerazione i tempi di compilazione e della fase di collegamento; Generare e deployare 1 automaticamente diverse versioni del programma; Reperire automaticamente le risorse necessarie a completare l esecuzione del programma; Per rendere l elaborato più leggibile, ho deciso di dividerlo in due punti principali, ovvero: 1. Analisi degli strumenti di Build Automation più importanti, indicandone vantaggi e svantaggi; 2. Nel secondo punto mi concentrerò sullo strumento Jenkins, andando a sviluppare l argomento sotto diversi punti; 1 Il deployment indica la consegna o rilascio al cliente, con relativa installazione e messa in funzione di una applicazione o strumento software 3

5 Strumenti di Build Automation 1.1 Make L origine di Make risale al 1977, creato da Stuart Feldman. Prima dell invenzione di make il sistema di build di UNIX consisteva semplicemente in make e install, ovvero, semplici shellscript, insieme al codice sorgente di un programma. Il Make è una utility sviluppata sui sistemi operativi della famiglia UNIX, che automatizza il processo di creazione di file che dipendono da altri file, risolvendo le dipendenze e invocando programmi esterni per il lavoro necessario. Sotto il nome make è possibile raggruppare molte utility diffuse sui vari sistemi Linux o Windows. La più nota è GNU Make. La gestione delle dipendenze in make è molto semplice, si utilizza un meccanismo di controllo tale da confrontare ogni modulo con la sorgente o con i file intermedi da cui esso deriva; se tali file hanno subito qualche modifica dall ultima compilazione, essi vengono ricompilati. Per determinare se un file è non aggiornato rispetto alle sue fonti, Make confronta la data di modifica del modulo con quella del file di dipendenza. Una volta definite le dipendenze esse vengono processate dal programma Make che si occupa di eseguire le istruzioni nel Makefile. Il Makefile è uno script in un linguaggio dichiarativo, non imperativo, che permette di specificare come debbano avvenire le operazioni di deployment e installazione di un software. 4

6 Esso contiene una serie di ricette per generare dei file a partire da altri file. Tali ricette hanno questo formato: target : prerequisiti ricetta Il target può essere il nome di un file generato da un programma, oppure un nome arbitrario di un azione da eseguire. Lanciando Make senza specificare il target verrà eseguito il primo target del file. Per questo, se si vuole eseguire più target col semplice make conviene usare un phony target 2 che li comprenda tutti. Tradizionalmente questo target viene chiamato all, ma potrebbe avere qualsiasi altro nome. L importante è che sia il primo target del Makefile. Esempio: all: target1 target2 target3 Uno degli aspetti più importanti da gestire sono i prerequisiti, in quanto Make serve anche a ridurre le operazioni non necessarie. Voglio che un certo target sia eseguito solo quando vengono modificati alcuni file. Per non dover aggiungere esplicitamente tutti i file da cui dipende il target, si usano delle scorciatoie (ad esempio wildcar). Tra gli svantaggi del Make abbiamo che: Esistono poche altre possibilità di implementare strutture di controllo nell ambito di un Makefile; Make dipende dal sistema operativo: con sistemi operativi diversi non è possibile riutilizzare identicamente gli stessi script, in quanto questi dipendono dal linguaggio di Shell; 2 I phony target sono target fittizi inseriti per provocare l esecuzione del comando in ogni caso 5

7 1.2 ANT Apache Ant (Another Neat Software) è stato concepito da Apache Tomcat agli inizi del È simile a Make, ma scritto in Java. Ant nasce soprattutto con l intento di sostituire Make, in quanto esso sopperisce ai sui difetti. Come abbiamo spiegato nel paragrafo precedente, il maggior difetto di Make era, infatti, la non portabilità. Ant risolve tale problema fornendo una grande quantità di funzionalità incorporate in modo tale da avere lo stesso comportamento su tutte le piattaforme. Tra i vantaggi offerti da ANT dobbiamo andare a nominare soprattutto il fatto che esso può essere richiamato da linea di comando, in modo da poter essere facilmente integrato in altri programmi ed inoltre non necessita di installazione in quanto è sufficiente copiare i file ed eventualmente, settarne il percorso tra i path predefiniti. Ant, inoltre, è abbastanza flessibile, ma non dà alcuna indicazione su come strutturare il progetto e rende ogni script di build unico e difficile da comprendere. Tuttavia, dopo la sua versione iniziale, ANT è stato migliorato con la possibilità di installare plug-in. I comandi che Ant esegue sono letti da file XML. In tale file bisogna definire: Le operazioni disponibili, ovvero i target; Per ciascuna delle operazioni, i comandi da eseguire, ovvero i task; Da ciò possiamo capire che, praticamente, la sintassi sarà la stessa del Make. Il maggior inconviente di ANT è proprio l utilizzo di XML: esso sarà efficiente per la descrizione dei dati in modo gerarchico, poiché si basa su una struttura di tipo gerarchica, ma la sua efficienza andrà a scemare nell esprimere il flusso del programma 6

8 e la logica condizionale. Tuttavia, nonostante gli evidenti vantaggi introdotti tramite ANT, anche esso soffre di alcune limitazioni, ovvero: Nella maggior parte dei casi, gli script ant sono generati automaticamente da altri programmi, ad esempio da IDE come Eclipse; Gli script ant sono limitati, in quanto a strutture di controllo e ad altre possibilità di introdurre comportamenti dinamici; Gli script ant possono indirizzare soltanto file su disco, non risorse remote; 1.3 Maven Maven è un software usato non unicamente per la gestione di progetti di build automation, ma anche per la gestione di progetti Java. In particolare fu pensato per unificare il modo di sviluppare e organizzare diversi progetti della famiglia Apache. Per funzionalità è molto similare ad ANT, ma basato su concetti differenti. Maven non si occuperò soltanto della costruzione, installazione e deployment dei progetti, ma anche della generazione della documentazione, di metriche, reports e casi di test inoltre è un valido strumento in quanto esso si basa sull applicazione di modelli per realizzare un infrastruttura che mostra le caratteristiche di visibilità, riutilizzabilità, manutenibilità e comprensibilità. Il soddisfacimento di tali caratteristiche è importante in quanto, senza di esse, è altamente improbabile che più persone riescano ad elaborare produttivamente insieme. 7

9 Anche Maven, come Ant legge uno o più file XML di configurazione, tuttavia, Maven ignora completamente tutti quei punti dolorosi creati da ANT, e mira a risolvere un problema completamente diverso. Maven gestisce il ciclo di vita del software, dalla scrittura del codice al deploy in ambiente di produzione. Le fasi standard di Maven sono: 1. Validate; 2. Generate-Sources; 3. Process-Sources; 4. Generate-Resources; 5. Process-Resources; 6. Compile; 7. Process-test-sources; 8. Process-test-resources; 9. Test-Compile; 10. Test; 11. Package; 12. Install; 13. Deploy 8

10 1.3.1 POM 3 File di Configurazione È una rappresentazione XML di un progetto Maven, contenuto in un file nominato pom.xml, che contiene informazioni sul progetto e dettagli sulla configurazione utilizzata da Maven per costruire il progetto. Il POM contiene anche informazioni sugli obiettivi e plugins. Mentre sta eseguendo un task o un obiettivo, Maven va alla ricerca del POM nella directory corrente. Maven legge il POM, estrae le informazioni di configurazione di cui ha bisogno, e poi esegue l obiettivo. Alcune delle configurazioni che è possibile specificare nel POM sono: Dipendenze del Progetto; Plugins; Goals; Build Profiles Versione del progetto Sviluppatori Mailing List Prima di creare un POM, abbiamo bisogno di decidere prima il groupdid (identificatore del gruppo), il suo nome, artifactid (identificatore del manufatto) e la sua versione, in quanto tali attributi aiutano a identificare unicamente tale progetto nella repository. Di questi, I primi due possono essere ereditati da un POM genitore. 3 Project Object Model 9

11 Ad esempio: Gestione delle Dipendenze Come abbiamo già specificato in precedenza, una delle innovazioni più importanti portata da Maven è la gestione delle dipendenze. Le coordinate di un progetto sono un elemento molto importante poiché costituiscono il criterio utilizzato da Maven per referenziare I vari progetti. Queste, per esempio sono necessarie per gestire il grafo delle dipendenze, area che tradizionalmente ha creato non pochi problemi nell elaborazione dei script di build. In effetti, la quasi totalità dei progetti, per poter essere costruiti e eseguiti correttamente, necessità di includere opportune librerie sia appartenenti al progetto stesso sia fornite da terze parti. La sincronizzazione delle varie librerie, il prelievo della versione corretta, la relativa distribuzione sono aspetti che da sempre hanno complicato il processo di build dei vari progetti. Maven è in grado di gestire queste problematiche attraverso la lista delle dipendenze, effettuando il download automatico dei manufatti richiesti ed effettuando i collegamenti necessari durante le varie fasi. Maven risolve automaticamente eventuali dipendenze transitive, ossia esegue la stessa procedura anche per eventuali dipendenze della libreria presente nella lista delle dipendenze del progetto in esame. 10

12 1.3.3 Ereditarietà Un altra caratteristica molto potente e unica di Maven è la possibilità di relazionare tra loro i progetti con legami di ereditarietà. I file POM di Maven prevedono nativamente la possibilità di dichiarare tale relazione. I progetti genitori e quelli esclusivamente aggregabili devono specificare il valore POM all interno del campo packaging. Questo campo serve per specificare la natura del manufatto prodotto (Per default Maven suppone che si voglia generare un file JAR). 1.4 Gradle Gradle è un sistema open source fondato sulle idee di Apache Ant e Apache Maven, esso è stato ideato e realizzato da Hans Dockter, fondatore della compagnia Gradle. Gradle introduce un domainspecific language (DSL) basato su Groovy, al posto della modalità XML usata da Maven e Ant per dichiarare la configurazione del progetto. Gradle è stato progettato per sviluppi multi-progetto che possono crescere fino a divenire abbastanza grandi e sopporta sviluppi incrementali determinando in modo intelligente quali parti del build tree sono aggiornate, in modo che tutti I processi che dipendono solo da quelle parti non avranno bisogno di essere rieseguiti; così facendo, il software riduce significativamente il tempo di costruzione del progetto, in quanto, durante il nuovo tentativo di costruzione, verranno eseguite solo le attività il cui codice è effettivamente stato alterato a partire dall ultima costruzione del progetto per processi concorrenti, il che consente di svolgere alcuni compiti, durante la costruzione, in parallelo su più core delle medesima CPU, su più CPU o su più computer. 11

13 Il software integra in sé alcuni punti di forza di Apache Maven, ovvero: convenzione sulla configurazione, ciclo di vita, gestione delle dipendenze nello stile di Apache Ivy o Maven e l utilizzo di repository. Gradle offre I seguenti vantaggi: Possibilità di definire il meccanismo di costruzione in linguaggio Groovy, nel file build; Possibilità di modificare il comportamento di alcune attività; Una notazione compatta per descrivere le dipendenze; Un motore di produzione progettato per ottenere progetti multilingue; Struttura La struttura di Gradle è costituita da un nucleo astratto e da una serie di plugin che ne espandono le funzionalità. Anche la costruzione dei progetti Java avviene per mezzo di un plugin. Gradle include alcuni plugin ufficiali che consentono la costruzione di progetti Java, Groovy, Scala e C++; inoltre è supportata la costruzione degli Java Enterprise Archive (gli archivi WAR ed EAR). Il processo di costruzione di Gradle si suddivide in due fasi principali: 1. Configurazione; 2. Esecuzione; Durante la configurazione, vengono delineati I passi dell intera costruzione per generare il grafico di dipendenza che contiene la sequenza di tutte le fasi da eseguire. Durante l esecuzione, invece, si attraversano le attività precedentemente rilevate. 12

14 Gradle utilizza tre file principali per personalizzare la costruzione: build.gradle (necessario); settings.gradle (opzionale) gradle.properties (opzionale) Il file setting.gradle contiene la definizione dei moduli di cui si compone il multi-progetto. Il file gradle.properties contiene un elenco di valori validi per l inizializzazione delle proprietà di uno specifico progetto Gradle Gestione delle dipendenze La gestione delle dipendenze è una caratteristica critica, e Gradle ha posto una particolare enfasi sull offrire meccanismi che permettono di gestire la dipendenza sia in modo semplice, e sia compatibile con un numero molto ampio di approcci. La capacità di Gradle di gestire le dipendenze non si limita all utilizzo di librerie esterne, poichè se gli elementi DSL standard non si adattano alle esigenze del progetto, si può anche definire un vocabolario proprio attravero l utilizzo delle estensioni di Gradle. Un requisito fondamentale è la riproducibilità, ovvero se è possibile riprodurre il programma su una nuova macchina. Per risolvere tale problema, Gradle considera ciascuno dei moduli di un progetto di grandi dimensioni, un progetto separato il quale può definire le dipendenze a librerie esterne o altri moduli. Inoltre, ogni sottoprogetto può essere eseguito singolarmente. Gradle, quindi, capisce quale sottoprogetto richiede la ricostruzione delle dipendenze, senza dover memorizzare artefatti nella cache locale. 13

15 È facile capire che, ogni volta che si inizia un nuovo processo in Gradle, il caricamento di tutte le sue dipendenze interne e l esecuzione della logica di build, richiedono un paio di secondi prima che inizi ad eseguire. Per migliorare le prestazioni di avvio, Gradle può essere eseguito in modalità demone 4. In modalità demone, Gradle, non esegue solo la build, ma mantiene l esecuzione in background, così invocazioni di build successe saranno sulle spalle del processo daemon esistente. 4 Programma eseguito in background, senza che sia sotto il controllo diretto dell utente. 14

16 La Continuous Integration - Jenkins 2.1 Cos è l integrazione continua? L integrazione continua è una pratica che si applica in contesti in cui lo sviluppo del software avviene attraverso un sistema di versioning. Consiste nell allineamento frequente 5 degli ambienti di lavoro degli sviluppatori verso l ambiente condiviso. Il concetto è stato originariamente proposto nel contesto dell extreme programming, come contromisura preventiva per il problema dell integration hell 6. L integrazione continua è stata originariamente concepita per essere complementare rispetto ad altre pratiche, in particolare legate al Test Driven Development. In particolare, la CI viene spesso applicata in ambienti in cui siano presenti sistemi di build automatica e/o esecuzione automatica di test, come Jenkins. 2.2 Test Driven Development Si tratta di una pratica concettualmente semplice, basata sullo sviluppo del software a partire dai test automatici. Nel TDD si sviluppa prima il codice di test, e successivamente il codice applicativo vero e proprio della funzionalità da implementare. Ciò è svolto attraverso diversi strumenti e con una precisa progressione di test falliti e superati. 5 Più volte al giorno 6 Tutte le difficoltà dell integrazione di porzioni software sviluppati in modo indipendente su lunghi periodi di tempo 15

17 Grazie a tecnologie come i framework di mock, è possibile fare test che verifichino condizioni di malfunzionamento particolare, per esempio problemi di rete, oppure eccezioni derivanti dal file system. Tali possibili situazioni vanno prese in considerazione già in fase di sviluppo per non avere problemi in fase di produzione. È possibile, poi, conoscere quanti e quali test sono stati effettuati, per avere un idea globale del livello di copertura dei test sull applicazione 2.3 Continuous Integration Prima di effettuare una modifica sul codice sorgente, uno sviluppatore prende una copia del codice corrente sulla quale lavorare. Man mano che gli altri sviluppatori fanno modifiche sul repository, la copia smette di rappresentare il codice del repository. Le modifiche non si riflettono unicamente sul codice, ma anche sulle librerie ed altre risorse che possono creare dipendenze e potenziali conflitti. Più è lungo il tempo durante il quale un branch di codice rimane scaricato, maggiore è il rischio di conflitti di integrazione quando il branch viene reintegrato nel repository. Quando gli sviluppatori vogliono sottomettere il codice, devono prima aggiornare le proprie copie locali del codice con i cambiamenti che sono stati fatti al repository dal momento in cui loro hanno aggiornato la copia locale. Più modifiche sono state fatte e più lavoro è necessario fare prima di sottomettere le proprie modifiche. È possibile che il repository sia diventato così diverso dalla copia locale dello sviluppatore che il tempo necessario per integrare le proprie modifiche con quelle fatte dagli altri superi il tempo necessario a fare le modifiche. L integrazione continua è un processo che consiste nell integrare presto e spesso, limitando le possibilità dell integration hell. 16

18 2.4 Continuous Development Un ulteriore passo avanti è rappresentato dal Continuous Development, termine utilizzato per descrivere i diversi aspetti del processo iterativo di sviluppo software che include, appunto, l integrazione continua, il rilascio continuo, il test continuo e il deploy continuo. Il concetto alla base è molto semplice: invece di attendere e inglobare molti cambiamenti, si preferisce rilasciare una versione aggiornata con cambiamenti minimi, ogni volta che una modifica sia stata positivamente implementata e sia pronta. 2.5 Continuous Integration: Le Tecnologie La Continuous Integration prevede l adozione di un server per l integrazione continua, come ad esempio Cruise Control, Jenkins o Bamboo. L importante è che vengano fornite alcune funzionalità fondamentali: Controllare il repository del codice sorgente e verificare ogni check-in; Effettuare il check-out del codice sorgente in conseguenza di ogni check-in; Effettuare la build del codice sorgente; Eseguire i casi di test; Lanciare eventuali build secondarie; In tale elaborato ci concentreremo su Jenkins. 17

19 2.6 Jenkins Jenkins è un tool di integrazione continua, è scritto in Java ed è Open Source. Egli nasce come alternativa ad Hudson. Viene eseguito lato server, all interno di un server web che supporta la tecnologia Servlet, quindi può essere acceduto da remoto, tramite un normale browser. È compatibile con gran parte dei tool con cui si gestisce il codice sorgente: Concurrent Version System, Subversion, Git, Mercurial, AccuRev e altri ancora. È inoltre in grado di eseguire progetti realizzati in Ant o Maven. Può essere mandato in esecuzione sia in sincrono con ogni commit che ad intervalli di tempo prestabiliti. Grazie alla sua architettura open, sono nati per Jenkins molti plugin, che consentono l utilizzo dello stesso con diverse suite di creazione di test automatizzati: JUnit, invece, è supportato nativamente. Perché Jenkins? Come abbiamo già detto, Jenkins sarà installato su un server su cui tutto l accumulo avrà luogo. Jenkins inoltre sarà: Semplice da utilizzare Estensibile Scalabile Flessibile Open Source 18

20 2.6.1 Installazione e configurazione Essendo Jenkins una web application ci sono diversi modi per installare il server: Tutti i sistemi: lancio manuale dell eseguibile java - jenkins.war; *nix: installazione da precompilato; Servlet container: il.war può essere deployato all interno di un web server che supporti Servel 2.4/JSP 2.0 o seguenti; È utile installare Jenkins come servizio separato anche nei casi in cui la macchina abbia un servlet container, questo è utile anche per poter filtrare il traffico in ingresso e limitare l accesso a Jenkins direttamente dal firewall. Una volta installato in servizio sarà possibile osservare i file di configurazione nelle seguenti directory: Windows: C:\Program Files (x86)\jenkins; Debian/Ubuntu: /etc/default/jenkins; *nix: /var/lib/jenkins; Appena connessi tramite browser alla porta configurata, sarà possibile trovare la schermata home: 19

21 Tra le prime impostazioni di Jenkins è possibile notare: # of executors: rappresentano il numero di job eseguibili contemporaneamente nel nodo, il valore di default è 2; Jenkins Location: è l URL pubblica di Jenkins stesso: <indirizzo IP>:<porta>; Maven Configuration: per poter eseguire job di tipo Maven è necessario averne installata almeno una versione; JDK: elenco delle JDK da rendere disponibili come compilatori per i job; I Job di Jenkins Dopo le dovute configurazioni possiamo passare alla creazione di un job. I job di Jenkins possono essere di diversi tipi, ma i principali sono 2: 1. Maven job: Un job che comprende come passo principale l invocazione di Maven con un apposito pom.xl. Le fasi di un job di tipo Maven sono: Lettura dei parametri di input; Gestione del codice sorgente; Pre-build Steps; Maven build; Post-build Steps; Azioni dopo la build; Tutte le fasi sono opzionali (Tranne la fase Maven) e i plugin contribuiscono ad arricchire gli steps con molte funzionalità aggiuntive. Ciascuno step che non venisse completato con successo può far fallire l intero Job; 2. Generic job: Un job che non prevede un passo principale. È utile per eseguire operazioni diverse dalle build come invocare script shell o eseguire plugin specifici; 20

22 Un tipico job orientato alla Continuous Integration, prende in input una stringa con il nome di un tag o di un branch e recupera i sorgenti corrispondenti copiandoli nella cartella del job dentro il workspace di Jenkins. Esegue poi l invocazione di Maven in quell ambiente, con le opzioni e goal predisposti. 21

23 2.7 Esempio Prerequisiti: La prima cosa di cui abbiamo bisogno è che la Java JDK sia installata. Quindi andremo a verificare l installazione tramite il comando: java -version Il quale risultato sarà: Configurare Tomcat: Jenkins sarà disponibile come file con estensione.war, quindi abbiamo bisogno di fare il deploy. Per fare ciò, la prossima cosa da fare sarà quella di configurare un server Tomcat. Per fare ciò basterà avviare il file startup.bat e aspettare l esecuzione del file, che alla fine dovrà mostrare un messaggio del tipo: Ora, andando all indirizzo sarà possibile vedere: 22

24 Creazione del Job: Il nostro obiettivo sarà quindi creare un job che mi permetterà di stampare a video un semplice Hello, World. Innanzitutto, quello che dobbiamo fare, è creare un file Java, che mi permetterà di stampare a video la frase Hello, World : Tale file andrà salvato nella directory del workspace di Jenkins:.jenkins\workspace. Ora dobbiamo configurare Jenkins per un nuovo Job, che chiameremo HelloWorld. Nella sezione Gestione Codice Sorgente dovremo indicare in quale percorso si andrà a prelevare il file. 23

25 Nella sezione Build dovremo indicare di voler eseguire un comando batch Windows, ovvero: Javac HelloWorld.java Java HelloWorld Una volta finita la configurazione, basterà effettuare la build e aspettare il risultato della compilazione, che in questo caso sarà: 24

26 2.8 Esempio #2 Jenkins & Maven In questo secondo esempio andremo a mostrare l integrazione di Jenkins con Maven. Il nostro obiettivo sarà quello di mostrare la JUnit test integration utilizzando Maven come strumento di build e utilizzare una notifica nel caso di build fallita. Prerequisiti: Per l esempio in questione utilizzeremo i seguenti strumenti: 1. JDK versione ; 2. Maven versione 3.5.0; 3. Git; Creazione del Job: Il nostro obiettivo sarà quello di generare un ID unico e andare a svolgere dei test, per controllare che non ci siano due numeri uguali, tramite JUnit. Dobbiamo andare a configurare il nostro Job: Preleviamo il codice da: Quindi dovremo configurare in questo modo: 25

27 Il codice prelevato sarà il seguente: Dove, tramite generateuniquekey() andremo a generare l ID, e tramite randomuuid().tostring() lo renderemo di tipo Stringa. Per quanto riguarda la configurazione di Maven, invece: E per il test JUnit: 26

28 Per il test JUnit utilizzeremo la seguente classe: Tramite il metodo assertequals(int expected, int actual) asseriamo che l intero che ci aspettiamo sia uguale all intero effettivo che stiamo considerando. Assert mostrerà un messaggio di errore soltanto quando l asserzione fallirà. Il risultato sarà il seguente: Per quanto riguarda l invio della mail, in caso di build fallita, basterà aggiungere nel campo Azioni dopo la build l azione Notification e indicare l indirizzo alla quale si dovrà inviare la notifica. 27

29 Supponiamo di fare un errore nella build del progetto, in fase di compilazione avremo il seguente risultato: Infatti, controllando la mail indicata, abbiamo: 28

30 2.9 Dalla Continuous Integration al Continuous Deployment Una volta scritto il codice, i test automatici lo hanno condotto a destinazione e hanno consentito di rimuovere i bug. Possiamo ora utilizzare il framework di Continuous Integration prescelto, poiché è in grado di effettuare una build e di effettuarne il deployment nell ambiente UAT User Acceptance Test UAT sta per User Acceptance Test, ossia quei test che si rivolgono all utente finale, che non dovrà più valutare gli aspetti strettamente programmatici, ma verificare che le soluzioni adottate funzionino. In pratica tali test vanno a replicare quello che si farebbe con quell applicazione in uno scenario reale di utilizzo, quindi servono come verificare finale che le funzionalità previste nei requisiti vengano soddisfatte. Una volta che il processo di UAT è stato completato, siamo pronti per l approvazione della vera e proprio release. 29

31 Conclusione e Sviluppi Futuri In tale elaborato ho analizzato alcuni dei tools per la Build Automation andando ad analizzare pregi e difetti. Abbiamo iniziato con Make, andandone ad analizzare i punti di forza, poi siamo passati ad Ant, che prende in concetti introdotti da Make e li porta ad un livello successivo, andando a limare alcuni difetti di Make. Evoluzione di tale strumento è Maven che non si occuperà soltanto della costruzione, installazione e deployment dei progetti, ma anche della generazione della documentazione, di metriche, reports e casi di test. Infine abbiamo analizzato Gradle, studiandone la struttura e gestione delle dipendenze. Il punto fondamentale, tuttavia, è la Continuous Integration e Jenkins. Uno degli obiettivi sia per il development che per le operations è quello di rilasciare nuove versioni delle applicazioni in tempi brevi: quindi, i tempi di aggiornamento annuali sono ormai sorpassati, per dare spazio al deploy di nuove feature e versioni su base settimanale (o addirittura quotidiana). Infatti, se una nuova funzione è ben identificata e implementata può essere messa a disposizione degli utenti immediatamente. Resta però il problema di come sia possibile testare in maniera adeguata un applicazione di grandi dimensioni, nella visione di uno sviluppo veloce. Tale difficolta viene risolta proprio dalla Continuous Integration. Eventuali sviluppi futuri di tale elaborato mi consentirebbero di approfondire alcuni aspetti che sono stati trascurati. 30

32 Ad esempio, si potrebbero approfondire meglio i concetti che riguardano il Continuous Deployment. Possiamo ad esempio parlare della gestione della configurazione con Chef, strumento scritto in Ruby e in Erlang, potente e versatile, utilizzato da grandissime aziende: Mozilla, Facebook, HP. Chef si può integrare con piattaforme cloud, per effettuare in maniera automatica il provisioning e la configurazione di nuove macchine, sia fisiche che virtuali. Inoltre, potrei inserire altri esempi di Job in Jenkins, che andrebbero ad utilizzare diversi plugin, come ad esempio Blue Ocean o Subversion Plugin, che permettono di espandere le funzionalità di Jenkins per molteplici utilizzi. 31

33 Bibliografia [1]. Porfirio Tramontana, Lucidi del corso di Ingegneria del software II, Cdl Ing.Informatica, Università degli Studi Federico II Napoli, a.a. 2014/15. [2]. [3]. [4]. [5]. tegration_software [6]. [7]. 32

Cosa è importante: pom.xml Goal Plug-in Repository

Cosa è importante: pom.xml Goal Plug-in Repository Cos è Maven? Maven è un software usato principalmente per la gestione di progetti Java e build automation, ma è utile anche per gestire documentazione, report, dipendenze... Cosa è importante: pom.xml

Dettagli

Strumenti per l automazione del testing di applicazioni web Javascript-based

Strumenti per l automazione del testing di applicazioni web Javascript-based tesi di laurea Strumenti per l automazione del testing di applicazioni web Javascript-based Anno Accademico 2005/2006 relatore Ch.mo prof. Porfirio Tramontana 1 candidato Salvatore Agnello Matr. 41/2612

Dettagli

Ambienti di Sviluppo. Linguaggi compilati

Ambienti di Sviluppo. Linguaggi compilati Insieme omogeneo di strumenti adatti allo sviluppo di progetti software. Compilatori e/o interpreti; Editor; Ambienti di Sviluppo Strumenti di debug e/o test; 1 Linguaggi compilati Codice sorgente convertito

Dettagli

Calcolo numerico e programmazione Programmazione

Calcolo numerico e programmazione Programmazione Calcolo numerico e programmazione Programmazione Tullio Facchinetti 11 maggio 2012 14:05 http://robot.unipv.it/toolleeo La programmazione la programmazione è l insieme delle

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Strumenti di Sviluppo: Introduzione versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

Consegna continua: automazione della pipeline di distribuzione

Consegna continua: automazione della pipeline di distribuzione White paper Deployment Automation Consegna continua: automazione della pipeline di distribuzione Sommario pagina Il valore della consegna continua.... 1 La mancanza di un collegamento tra le fasi di creazione

Dettagli

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13 UML Introduzione a UML Linguaggio di Modellazione Unificato Corso di Ingegneria del Software Anno Accademico 2012/13 1 Che cosa è UML? UML (Unified Modeling Language) è un linguaggio grafico per: specificare

Dettagli

Fondamenti di Informatica T2 Modulo 2

Fondamenti di Informatica T2 Modulo 2 Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Integrated Development Environment (IDE)

Dettagli

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009 Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Integrated Development Environment (IDE)

Dettagli

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè L IDE NETBEANS (slide: A. Baratè) Programmazione per la Musica Adriano Baratè NETBEANS: UN PO DI STORIA Lo sviluppo inizia nel 1996 alla Facoltà di Matematica e Fisica di Praga come IDE Java Nel 1999 il

Dettagli

Telematico Digitale. Note di Installazione

Telematico Digitale. Note di Installazione Telematico Digitale Note di Installazione Telematico Digitale INTRODUZIONE NOTE DI INSTALLAZIONE Rel. 1.0 Telematico Digitale si installa direttamente dall indirizzo URL della pagina scaricando uno specifico

Dettagli

Compilazione rapporto di Audit in remoto

Compilazione rapporto di Audit in remoto Compilazione rapporto di Audit in remoto Installazione e configurazione CSI S.p.A. V.le Lombardia 20-20021 Bollate (MI) Tel. 02.383301 Fax 02.3503940 E-mail: info@csi-spa.com Rev. 2.1 16/11/09 Indice Indice...

Dettagli

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC. tesi di laurea Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit. Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana correlatore Ing. Luca Anniciello candidato Gianluca

Dettagli

perror: individuare l errore quando una system call restituisce -1

perror: individuare l errore quando una system call restituisce -1 perror: individuare l errore quando una system call restituisce -1 Quando una system call (o una funzione di libreria) non va a buon fine, restituisce come valore -1 Come si fa a sapere più precisamente

Dettagli

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) Makefile Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) 1 makefile: idea di fondo (1) Permette di esprimere dipendenze fra file

Dettagli

Ingegneria del Software 1: Eclipse

Ingegneria del Software 1: Eclipse Ingegneria del Software 1: Eclipse Da completare entro Marzo 15, 2016 S. Krstić and M. Scavuzzo and F. Marconi and A. Rizzi and C. Menghi 1 Contents 1 Introduzione 3 1.1 Java (JRE vs JDK)..........................................

Dettagli

Modulo 1: Le I.C.T. UD 1.5c: Elaborazione centrata sul. documento e problemi relativi al software

Modulo 1: Le I.C.T. UD 1.5c: Elaborazione centrata sul. documento e problemi relativi al software Modulo 1: Le I.C.T. : Elaborazione centrata sul documento e problemi relativi al software Prof. Alberto Postiglione Corso di Informatica Generale (AA 07-08) Corso di Laurea in Scienze della Comunicazione

Dettagli

Maven2.apache.org: usare un linguaggio formale per descrivere in modo standard tutte le fasi del ciclo di vita del software

Maven2.apache.org: usare un linguaggio formale per descrivere in modo standard tutte le fasi del ciclo di vita del software Maven2.apache.org: usare un linguaggio formale per descrivere in modo standard tutte le fasi del ciclo di vita del software Evoluzione nella gestione dei progetti Ogni riferimento a volti o persone conosciute

Dettagli

Installazione e configurazione DSFPA (Datasoftware Fattura Pubblica Amministrazione)

Installazione e configurazione DSFPA (Datasoftware Fattura Pubblica Amministrazione) Installazione e configurazione DSFPA (Datasoftware Fattura Pubblica Amministrazione) L installazione del software DSFPA avviene in linea generale in due momenti: 1) Installazione lato server, in cui viene

Dettagli

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) Makefile Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) 1 makefile: idea di fondo (1) Permette di esprimere dipendenze fra file

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

Dettagli

Istruzioni installazione

Istruzioni installazione Istruzioni installazione 1. Cygwin64 & 2. GCC - C Cygwin è un software per i sistemi operativi Microsoft Windows, che simula l'ambiente dei sistemi operativi Unix-like ( Unix, GNU/Linux ) e che è composto

Dettagli

Gestione della Configurazione. Porfirio Tramontana - Ingegneria del Software Gestione della Configurazione 1

Gestione della Configurazione. Porfirio Tramontana - Ingegneria del Software Gestione della Configurazione 1 Gestione della Configurazione Porfirio Tramontana - Ingegneria del Software Gestione della Configurazione 1 Riferimenti Sommerville, Capitolo 29 G.A. Di Lucca, Slide del corso di Gestione dei Sistemi Software,

Dettagli

Riferimenti. Sommerville, Capitolo 29

Riferimenti. Sommerville, Capitolo 29 Build Automation 1 Riferimenti Sommerville, Capitolo 29 http://grokcode.com/538/java-build-systems-a-sad-state-ofaffairs/ http://mrbook.org/tutorials/make/ http://ant.apache.org/manual/tutorial- HelloWorldWithAnt.html

Dettagli

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola 633688 Sicurezza e Permission in Android La sicurezza al giorno d oggi è uno degli aspetti più importanti dell informatica!

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

UD 1.5b: Elaborazione centrata sul documento e problemi relativi al software

UD 1.5b: Elaborazione centrata sul documento e problemi relativi al software UD 1.5b: Elaborazione centrata sul documento e problemi relativi al software 2 Bibliografia Curtin, Foley, Sen, Morin Informatica di base, Mc Graw Hill Ediz. Fino alla III : cap. 6.8, 6.9 IV ediz.: cap.

Dettagli

Manuale d uso della piattaforma per lo sviluppo e rilascio di componenti software. QMSS - Continuous Integration

Manuale d uso della piattaforma per lo sviluppo e rilascio di componenti software. QMSS - Continuous Integration Manuale d uso della piattaforma per lo sviluppo e rilascio di componenti software Verifica massiva - ReadMe 13/12/2017 README 1 di 7 AGGIORNAMENTI Versione Data Paragrafi modificati Motivo modifica 1.0.0

Dettagli

Password di accesso al database criptata

Password di accesso al database criptata Password di accesso al database criptata Come rendere più sicura la password di connessione al database? Le credenziali di accesso al database vengono salvate, di default, in chiaro all interno di un file

Dettagli

Java il Corso Fondamentale

Java il Corso Fondamentale Java il Corso Fondamentale Imparare a Programmare APP per Android, applicativi per Server e Desktop, applet e molto altro. IlTuoCorso - Ermes srl Via E.De Amicis 57 20123 Milano Il corso Ciao! Se desideri

Dettagli

Bibliografia. Elaborazione Centrata sul Documento. Documento composto. Documento composto DOCUMENTO

Bibliografia. Elaborazione Centrata sul Documento. Documento composto. Documento composto DOCUMENTO UD 15b:Elaborazione : centrata sul documento e problemi relativi al software Informatica Generale (Laurea in ) Bibliografia Curtin, Foley, Sen, Morin Informatica di base, Mc Graw Hill Ediz. Fino alla III

Dettagli

Strumenti Java. Fondamenti di informatica L-B A.A Alessandra Toninelli

Strumenti Java. Fondamenti di informatica L-B A.A Alessandra Toninelli Strumenti Java Fondamenti di informatica L-B A.A. 2006-2007 Alessandra Toninelli atoninelli@deis.unibo.it Cosa installare? J2SE SDK Software Development Kit (JDK): Contiene: tutte le classi con relativo

Dettagli

Capitolo I1: Laboratorio con DevC++

Capitolo I1: Laboratorio con DevC++ 1. Introduzione DevC++ è un ambiente di sviluppo integrato (IDE, ovvero Integrated Development Environment) che permette di scrivere e verificare programmi in linguaggio C o C++, sia in modalità Windows

Dettagli

Iniziare a programmare in C++

Iniziare a programmare in C++ Iniziare a programmare in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Strumenti per lo sviluppo software

Dettagli

Linguaggio di Riferimento: C

Linguaggio di Riferimento: C Programmazione procedurale Linguaggio di Riferimento: C 1 Linguaggio macchina Il linguaggio macchina costituisce la forma espressiva atta a descrivere programmi e ad essere direttamente interpretata dall

Dettagli

Introduzione a Visual Studio 2005

Introduzione a Visual Studio 2005 Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Introduzione a Visual Studio 2005 Outline Solutions e Projects Visual Studio e il linguaggio C Visual Studio Schermata

Dettagli

Elementi di programmazione

Elementi di programmazione Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università

Dettagli

Anno Accademico Laboratorio di Tecnologie Web Introduzione ad Eclipse

Anno Accademico Laboratorio di Tecnologie Web Introduzione ad Eclipse Universita degli Studi di Bologna Facolta di Ingegneria Anno Accademico 2008-2009 Laboratorio di Tecnologie Web Introduzione ad Eclipse http://www-lia.deis.unibo.it/courses/tecnologieweb0809 Cosa è Eclipse

Dettagli

Elaborazione Centrata sul Documento

Elaborazione Centrata sul Documento Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno UD : Elaborazione centrata sul documento e problemi relativi al software

Dettagli

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: Il Software L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: un insieme di programmi che permettono di trasformare un insieme di circuiti

Dettagli

Traduzione e interpretazione

Traduzione e interpretazione Traduzione e interpretazione Parte dei lucidi sono stati gentilmente forniti dal Prof. Salza VII.1 Linguaggi di programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore

Dettagli

I revisori tecnici...xi. Ringraziamenti...xv. Introduzione...xvii. Il software dall idea alla produzione...1

I revisori tecnici...xi. Ringraziamenti...xv. Introduzione...xvii. Il software dall idea alla produzione...1 I revisori tecnici...xi Prefazione...xiii Ringraziamenti...xv Introduzione...xvii Costruire dal niente...xvii Costruire dalle fondamenta...xix Struttura del libro...xx Codice sorgente per esercitazioni

Dettagli

XAMPP - Cos'è e installazione in locale

XAMPP - Cos'è e installazione in locale XAMPP - Cos'è e installazione in locale XAMPP è un acronimo che sta per X - Cross-Platform A Apache M MySQL P PHP P Perl E' una semplice e leggera distribuzione Apache che rende estremamente semplice a

Dettagli

contactsend XMLDelivery engagement marketing contactsend

contactsend XMLDelivery engagement marketing contactsend engagement marketing contactsend contactsend XMLDelivery Crea e spedisci le tue comunicazioni grazie alla flessibilità dell'xml, all affidabilità del database utenti Contactsend e alla potenza delle SOAP

Dettagli

Introduzione a Linux Lezione 7 Programmare in Linux

Introduzione a Linux Lezione 7 Programmare in Linux Introduzione a Linux Lezione 7 Programmare in Linux Angelo Genovese Corso di Sistemi Operativi I/II Prof. V. Piuri Università degli Studi di Milano Dipartimento di Informatica A.A. 2018/2019 2018 2015

Dettagli

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando Eclipse: Cos è? Utilizzare Eclipse: Creare un progetto Creare file sorgenti nel progetto Compilare Lanciare il programma Strumenti alternativi agli IDE La linea di comando su Linux Esplorare e modificare

Dettagli

Predisposizione stampa a fine picking. Manuale utente

Predisposizione stampa a fine picking. Manuale utente Predisposizione stampa a fine picking Manuale utente Stampa a fine picking - Introduzione La stampa a fine picking è una funzionalità implementata al fine di velocizzare le attività di chiusura dell ordine

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA4 B3 Documentazione 1 Prerequisiti Programmazione elementare ad oggetti Documentazione del software Tipi di documentazione 2 1 Introduzione Lo scopo di questa Unità

Dettagli

DESCRIZIONE PROFILI PROFESSIONALI

DESCRIZIONE PROFILI PROFESSIONALI AVVISO DI INDAGINE DI MERCATO finalizzato alla raccolta di manifestazione di interesse per la partecipazione a una procedura negoziata per l affidamento del Servizio di Progettazione, analisi, sviluppo,

Dettagli

Java: un linguaggio per applicazioni di rete

Java: un linguaggio per applicazioni di rete Java: un linguaggio per applicazioni di rete Moreno Falaschi Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena March 3, 2014 1 Caratteristiche di Java (SUN) Linguaggio

Dettagli

Corso di Ingegneria del Software. Modelli di produzione del software

Corso di Ingegneria del Software. Modelli di produzione del software Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it 1. Concetti di base Sommario 2. 2.1 Modello a cascata 2.2 Modelli incrementali 2.3 Modelli evolutivi 2.4 Modelli agili

Dettagli

Università degli Studi di Padova

Università degli Studi di Padova Università degli Studi di Padova SCUOLA DI INGEGNERIA Corso di Laurea in INGEGNERIA DELL INFORMAZIONE Laboratorio di Fondamenti di Informatica A.A. 2017/2018 SOMMARIO 1) (Java Development Kit) Cos è Struttura

Dettagli

L'applicazione integrata con il servizio My Fattura

L'applicazione integrata con il servizio My Fattura L'applicazione integrata con il servizio My Fattura Come funziona einvoicemanger (eim) 2 Per il CICLO ATTIVO 2 Per il CICLO PASSIVO 2 Come può essere utilizzato 2 Installazione di eim 2 Installazione del

Dettagli

SOLUZIONE SW BLUE CODE

SOLUZIONE SW BLUE CODE SOLUZIONE SW BLUE CODE DESCRIZIONE GENERALE BLUE CODE è una soluzione SW integrata che permette la gestione ed il controllo dei costi di stampa, BLUE CODE abilita funzioni di stampa avanzate come il Follow

Dettagli

2. Cenni di sistemi operativi

2. Cenni di sistemi operativi 2. Cenni di sistemi operativi Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Contiene slides dal corso «Sistemi Operativi» dei prof. Gherardi/Scandurra dell Università degli studi di Bergamo

Dettagli

EDUCATION & TRAINING Formazione Tecnica Engine of Your Business

EDUCATION & TRAINING Formazione Tecnica Engine of Your Business EDUCATION & TRAINING Formazione Tecnica Engine of Your Business PARTI STANDARD ST8 Prima installazione e configurazione 1. INDICE 1. Indice... 1 1. Premessa... 2 2. Installazione locale... 3 3. Installazione

Dettagli

APPUNTI DELLA LEZIONE DI DATABASE DEL 20/10/2016 (POMERIGGIO)

APPUNTI DELLA LEZIONE DI DATABASE DEL 20/10/2016 (POMERIGGIO) APPUNTI DELLA LEZIONE DI DATABASE DEL 20/10/2016 (POMERIGGIO) Studenti: Luca Signore, Cristian Annicchiarico Professoressa: Lucia Vaira Lo scopo di questa lezione è quello di introdurre gli strumenti necessari

Dettagli

istruzioni per l'installazione

istruzioni per l'installazione istruzioni per l'installazione vers.11/11 INDICE 1 Cos è Magister Pag. 3 1a Requisiti di sistema Pag. 3 2 Installazione di Magister Pag. 3 3 Dopo l installazione di Magister Pag. 6 3a Aggiornamento da

Dettagli

NOTE DI INSTALLAZIONE

NOTE DI INSTALLAZIONE NOTE DI INSTALLAZIONE Sommario 1. GUIDA AI VARI TIPI DI INSTALLAZIONE... 2 2. INSTALLAZIONE MONOUTENZA (LOCALE)... 3 2.1 Installazione Repository e Application Server... 3 2.2 Installazione DataBase...

Dettagli

HiProg3 Gestione Programmazione Triennale ed Elenco Annuale dei Lavori Pubblici. Manuale d installazione

HiProg3 Gestione Programmazione Triennale ed Elenco Annuale dei Lavori Pubblici. Manuale d installazione HiProg3 Gestione Programmazione Triennale ed Elenco Annuale dei Lavori Pubblici Settembre 2005 Sommario 1 PREMESSA...3 2 CARATTERISTICHE E REQUISITI...4 2.1 Requisiti del PC...4 3 INSTALLAZIONE...5 3.1

Dettagli

Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale

Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale Alma Mater Studiorum - Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2016/2017 Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale A cura di: Stefano

Dettagli

Introduzione ai thread

Introduzione ai thread Introduzione ai thread Processi leggeri. Immagine di un processo (codice, variabili locali e globali, stack, descrittore). Risorse possedute: : (file aperti, processi figli, dispositivi di I/O..),. L immagine

Dettagli

Struttura dei Sistemi Operativi

Struttura dei Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Le presenti note si riferiscono esclusivamente alla procedura di installazione e di aggiornamento di Planet HR.

Le presenti note si riferiscono esclusivamente alla procedura di installazione e di aggiornamento di Planet HR. Planet HR: note per l aggiornamento e l installazione (Pagina 1:9) Premessa Le presenti note si riferiscono esclusivamente alla procedura di installazione e di aggiornamento di Planet HR. Accedere al sistema

Dettagli

Guida a Planner Studio

Guida a Planner Studio Guida a Planner Studio Copyright 2001 - Pesaro System Torna al sommario Pag. 1 di 18 Sommario Introduzione... 3 Calendario a Gestione Utenti... 4 Primo Accesso... 4 Schermata iniziale... 5 Schermata Utente

Dettagli

Introduzione a DevOps

Introduzione a DevOps Introduzione a DevOps Andrea Fornaia, Ph.D. Department of Mathematics and Computer Science University of Catania Viale A.Doria, 6-95125 Catania Italy fornaia@dmi.unict.it http://www.cs.unict.it/~fornaia/

Dettagli

Gestione delle licenze Standalone e Network

Gestione delle licenze Standalone e Network Galleria San Marco 4 33170 Pordenone Tel. 0434 28465 Fax 0434 28466 E-mail: info@csi-italia.eu Web: http://www.csi-italia.eu Gestione delle licenze Standalone e Network COPYRIGHT Copyright CSi Italia Srl.

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il sistema operativo Con il termine sistema operativo si intende l insieme di programmi e librerie che opera direttamente sulla macchina fisica mascherandone le caratteristiche specifiche

Dettagli

Sommario 1 Introduzione progetto Soluzione Integrazione Conclusioni... 10

Sommario 1 Introduzione progetto Soluzione Integrazione Conclusioni... 10 SISS SUITE Sommario 1 Introduzione... 3 2 progetto... 3 3 Soluzione... 3 4 Integrazione... 10 5 Conclusioni... 10 2 1 INTRODUZIONE L OMNICOM SISS Suite è una libreria DLL espressamente concepita per facilitare

Dettagli

Strumento e tecnica a supporto del crash testing automatico di applicazioni mobili basato sul sistema operativo Android Anno Accademico 2010/2011

Strumento e tecnica a supporto del crash testing automatico di applicazioni mobili basato sul sistema operativo Android Anno Accademico 2010/2011 tesi di laurea Strumento e tecnica a supporto del crash testing automatico di applicazioni mobili basato sul sistema operativo Android Anno Accademico 2010/2011 relatore Ch.mo prof. Porfirio Tramontana

Dettagli

Symantec IT Management Suite 8.0 powered by Altiris technology

Symantec IT Management Suite 8.0 powered by Altiris technology Symantec IT Management Suite 8.0 powered by Altiris technology Requisiti indispensabili per l'installazione di IT Management Suite Prima di avviare l'installazione, assicurarsi che il computer sul quale

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

Dipartimento Affari Interni e Territoriali Direzione Centrale per i Servizi Demografici INA-SAIA. SSLProxy. Manuale Utente. versione 1.

Dipartimento Affari Interni e Territoriali Direzione Centrale per i Servizi Demografici INA-SAIA. SSLProxy. Manuale Utente. versione 1. SSLProxy Manuale Utente versione 1.0 Indice 1 Panoramica... 3 2 Installazione...4 2.1 Prerequisiti... 4 2.2 Acquisizione del pacchetto... 4 2.3 Copia dei file sulla postazione client... 4 2.4 Esecuzione

Dettagli

Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2010/2011

Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2010/2011 Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2010/2011 Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale A cura di: Stefano Monti stefano.monti6@unibo.it

Dettagli

Guida per l esecuzione del trasferimento del programma DINAMIC su un nuovo computer

Guida per l esecuzione del trasferimento del programma DINAMIC su un nuovo computer Guida per l esecuzione del trasferimento del programma DINAMIC su un nuovo computer La procedura si applica quando è necessario trasferire su un nuovo computer, per una sostituzione programmata oppure

Dettagli

Horizone Server IN00B02WEB. Horizone PDK

Horizone Server IN00B02WEB. Horizone PDK Horizone Server IN00B02WEB Horizone PDK Prodotto: -- Descrizione: Horizone PDK - Manuale Utente Data: 10/07/2017 Eelectron Spa IN00B02WEBFI00080102_PDK_MANUAL.DOCX 1/12 Qualsiasi informazione all interno

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e

Dettagli

Installazione dell SDK sotto Windows

Installazione dell SDK sotto Windows Installazione dell SDK sotto Windows Fare doppio clic sull eseguibile. Dopo un breve controllo sul sistema operativo, parte l installazione vera e propria. Leggere il contratto con MOLTA attenzione (se

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Concetti Introduttivi

Concetti Introduttivi Concetti Introduttivi Linguaggi di Programmazione http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Linguaggi di Programmazione Impartiscono

Dettagli

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Cosa è un programma. Informatica di Base -- R.Gaeta 18 Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer

Dettagli

MDD Tools in CSI Piemonte: industrializzazione dello sviluppo e progetto open source

MDD Tools in CSI Piemonte: industrializzazione dello sviluppo e progetto open source : industrializzazione dello sviluppo e progetto open source Paolo Arvati CSI Piemonte Direzione Tecnica / Architetture e Tecnologie CSI-Piemonte l informatica per i servizi pubblici siamo una delle principali

Dettagli

SMART CLIENT SaaS 1.1

SMART CLIENT SaaS 1.1 09/06/2014 SMART CLIENT SaaS 1.1 INSTALLAZIONE E CONFIGURAZIONE Gentile cliente, seguendo questa breve guida, potrà facilmente installare e configurare la nuova utility Smart Client rilasciata per tutti

Dettagli

Linguaggi Object Oriented: Principi e Introduzione a Java

Linguaggi Object Oriented: Principi e Introduzione a Java Linguaggi Object Oriented: Principi e Introduzione a Java Sommario: 13 Aprile, 2015 Linguaggi OO: Rilevanza e Note Storiche Principi dei Linguaggi OO. Struttura dei programmi: Classi e Oggetti in Java

Dettagli

Capitolo 6 Le infrastrutture SoftWare

Capitolo 6 Le infrastrutture SoftWare Capitolo 6 Le infrastrutture SoftWare Funzioni del sistema operativo Rendere utilizzabili le risorse fisiche presenti nel sistema informatico: garantire la correttezza e la precisione nell elaborazione

Dettagli

IDE DevC

IDE DevC IDE DevC++ 4.9.8.1.0 Manuale utente Data ultima revisione: 22/01/2005 Fondamenti di informatica Università Facoltà Corso di laurea Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria

Dettagli

Internetworking V a nno

Internetworking V a nno Internetworking V anno Introduzione ad Arduino Introduzione La scheda Arduino nasce nel 2005 dall idea di alcuni giovani ricercatori guidati da Massimo Banzi. Il loro obiettivo era quello di creare una

Dettagli

Appendice Omnia Manager - UM Rainbow Configurator Rev. 1 del 05/05/ Questo manuale è di proprietà esclusiva di FAST S.p.A.

Appendice Omnia Manager - UM Rainbow Configurator Rev. 1 del 05/05/ Questo manuale è di proprietà esclusiva di FAST S.p.A. RAINBOW CONFIGURATOR Omnia Manager 1-12 Sommariio 1 Introduzione... 3 1.1 Tipico ciclo di vita della configurazione della periferica... 4 1.2 Modalità di Withdraw (download)... 4 1.3 Diritti/permessi di

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Cosa è un calcolatore? Hardware Processore Memoria Periferiche Funzionamento Esegue istruzioni elementari Esegue istruzioni molto velocemente Deve essere programmato Il

Dettagli

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico NetBeans Dott. Ing. Rossella Rubino rossella.rubino@unibo.it A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico Software necessario J2SE(TM) Development Kit (JDK) http://java.sun.com/javase/downloads/index.jsp

Dettagli