Programmazione Java Avanzata



Похожие документы
Eclipse e Subversion

Eclipse - Nozioni Base

Test e collaudo del software Continuous Integration and Testing

tesi di laurea Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana candidato Pasquale Ludi Matr. 534\000438

Corso Eclipse. Prerequisiti. 1 Introduzione

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

File Server Resource Manager (FSRM)

Manuale d uso della libreria Volta Log

Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

SCHEDA TECNICA. Disaster Recovery e Alta Affidabilità. Twin system architecture. Software IBM i Solution Editions

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

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

Software per Helpdesk

Database 1 biblioteca universitaria. Testo del quesito

Gestione Risorse Umane Web

Approccio stratificato

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo

Tale attività non è descritta in questa dispensa

DRUPAL CONTINUOUS INTEGRATION. Parte I - Introduzione

InitZero s.r.l. Via P. Calamandrei, Arezzo

Esercizio data base "Biblioteca"

STAMPA UNIONE DI WORD

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Gestione della memoria centrale

Approfondimento: Migrazione dei database e backup della posta

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant.

Mac Application Manager 1.3 (SOLO PER TIGER)

WBS-01 Guida rapida alla configurazione

Manuale Terminal Manager 2.0

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

1. BASI DI DATI: GENERALITÀ

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

Guida di Opzioni Fiery 1.3 (client)

Strumenti per la Progettazione

Corso di Sistemi di Elaborazione delle informazioni

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Corso di Amministrazione di Reti A.A. 2002/2003

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC

Registratori di Cassa

Introduzione a Dev-C++

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Dispensa di Informatica I.1

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

Blue s Hotel Pro Il software che hai sempre desiderato per il tuo Hotel!

SQL Server Introduzione all uso di SQL Server e utilizzo delle opzioni Olap. Dutto Riccardo - SQL Server 2005.

Il Web Server e il protocollo HTTP

Manuale di istruzioni sulle maschere per il calcolo del punteggio e del voto (unico) degli studenti che sostengono la Prova nazionale 2011

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Esercizi su. Funzioni

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

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Linguaggi di programmazione

Il database management system Access

RILANCIO ALLARMI SU SWC701

Test di unità con JUnit4

Software di base e software applicativo. Titolo: dic (1 di 9)

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Presentazione Data Base

Evolution 4 & ACUXDBC

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Estensioni e modelli. Ancora poco conosciuti, consentono di estendere la suite per l ufficio. Ecco come servirsene

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Corso di PHP. Prerequisiti. 1 - Introduzione

TUTORIAL REGISTRO ELETTRONICO NUVOLA

Software di parcellazione per commercialisti Ver [10/09/2015] Manuale d uso [del 10/09/2015]

Mon Ami 3000 Lotti e matricole Gestione della tracciabilità tramite lotti/matricole

Guida all attivazione ipase

Database e reti. Piero Gallo Pasquale Sirsi

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

RADAR. Raccolta e Analisi Dati per Attribuzione Rating

GCEWEB Denunce mensili in WEB

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Installazione di GFI Network Server Monitor

NOVITA VERSIONE La soluzione CAD/CAM per il cablaggio elettrico

2 Fortino Lugi. Figura Errore. Nel documento non esiste testo dello stile specificato Finestra attiva o nuovo documento

Visual basic base Lezione 01. L'ambiente di sviluppo

Tutorial KISSsoft: versione di prova e fasi iniziali

UML - Unified Modeling Language

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Identificare le classi in un sistema

ALICE AMMINISTRAZIONE UTENTI WEB

19. LA PROGRAMMAZIONE LATO SERVER

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Транскрипт:

Programmazione Java Avanzata Librerie fondamentali Ing. Giuseppe D'Aquì

Testi Consigliati Eclipse in Action (David Gallardo, Ed Burnette and Robert McGovern), Manning (2003) JUnit Cookbook [http://junit.sourceforge.net/doc/cookbook/cookbook.htm] Log4J Manual [http://logging.apache.org/log4j/1.2/manual.html] Ant manual [http://ant.apache.org/manual/index.html]

Unit Testing Unit Testing è un metodo con cui vengono verificate singole parti di un software Si testano, in modo automatico, parti molto piccole (singole classi o singoli metodi) Si controlla che la classe e i suoi metodi si comportino nel modo corretto I test vengono scritti ed eseguiti in fase di sviluppo, non sono presenti nel software finale

Esempio di Unit Test Esame e = new Esame(); [ ] e.setvoto(40); if(e.getvoto() >30) println( Errore, il voto non può essere maggiore di 30 );

Unit Testing (2) Serve a verificare che le singole parti funzionino perfettamente Ogni test deve essere indipendente dagli altri Non si testa l'interazione tra gli oggetti Ogni test rappresenta un contratto sul comportamento di un singolo oggetto o funzione

Unit Testing (3) I test sono scritti in modo da verificare il comportamento di un oggetto in condizioni estreme (es. input non valido) Spesso sono scritti prima del relativo codice che testano (Test Driven Development, TDD) E' come per le interface: definiamo qual è il risultato che vogliamo ottenere, postponendo i dettagli implementativi I test, infine, sono una sorta di documentazione: sono esempi di come un oggetto si comporta

Unit Testing: Pro Forzano il disaccoppiamento tra le singole unità: se ogni parte deve essere testata indipendentemente, siamo obbligati a progettarle in modo indipendente Prevengono un buon numero di errori ancora prima che il software venga eseguito Sorreggono le modifiche : cambiando il codice di un oggetto rischiamo di danneggiarne il funzionamento; con i test veniamo subito a conoscenza di questi errori Facilitano il debug

Unit Testing: Contro Se i test sono scritti male, potremmo avere dubbi sul funzionamento reale del software I test sono altro codice da scrivere Se un test improvvisamente fallisce, bisogna subito indagare per capire perché È impossibile testare tutte le ramificazioni e le condizioni possibili Se le singole unità funzionano, non è detto che l'insieme funzioni ancora (vedi Integration Testing)

JUnit È un framework per Unit Testing in Java È open source È ben integrato con gli IDE Ogni test prende il nome di test case Insiemi di test case compongono una test suite Gli oggetti preparati prima del test (riutilizzabili in più test) prendono il nome di fixture

JUnit Ogni test prende il nome di test case Insiemi di test case compongono una test suite Gli oggetti preparati prima del test (riutilizzabili in più test) prendono il nome di fixture Mock object sono oggetti finti, utilizzati per testare in modo indipendente le singole parti

JUnit: fixture Spesso il comportamento di un oggetto dipende da come è inizializzato, oppure dall'insieme di dati che gli vengono forniti Es. Classe Studente probabilmente viene inizializzata con una matricola, oppure legge i dati da un DBMS Quindi le fixture servono ad inizializzare oggetti, o riempire database con dati di prova Soto tutti dati che verranno scartati a test finito In JUnit: metodi setup() e teardown()

JUnit: Mock Object Se ogni oggetto deve essere testato indipendentemente dagli altri, come testare quelli che sono intimamente legati tra loro? Es. Se la classe Studente funziona solo quando riceve dati da un DBMS, come possiamo testarla senza testare anche il DBMS? La soluzione è creare un oggetto fittizio (Mock), che sembra un oggetto reale ma in realtà è vuoto e non fa computazioni Restituisce solo quello che ci interessa

JUnit: Mock Object (2) Esempio: Studente preleva i dati da un DBMS Il DBMS è un oggetto che fa le query e restituisce un ArrayList (metodo query() ) Creiamo una classe MockDBMS, che deriva da DMBS, riscrivendo il metodo query() in modo che restituisca sempre lo stesso ArrayList Librerie come EasyMock creano in automatico i Mock Object senza bisogno di scriverli a mano

Software Building Alla fine dello sviluppo, il codice non è tutto quello che va consegnato : Dati inclusi (DBMS, file di configurazione) Documentazione Programma di installazione o pacchetto Sono tutte operazioni: Necessarie Importanti Ripetitive Manualmente, si rischia di fare errori gravi

Software Building (2) Un processo di build è in genere composto da una sequenza di comandi, esempio: compila il file X producendo il file Y comprimi il file Y insieme ai due file W e Z invia quello che ottieni sul server remoto Il nostro lavoro può essere semplificato automatizzando il processo di build

Software Building (3) L'automatizzazione può avvenire all'interno del proprio IDE, ma ci sono alcuni problemi Altri sviluppatori potrebbero avere un IDE diverso Il processo potrebbe dover avvenire quando noi non siamo presenti Il processo potrebbe dover partire da un server remoto È difficile portare il processo su un altro IDE se dovessimo cambiarlo È difficile scambiarsi la definizione del processo

Software Building (4) Per questi motivi l'industria del software usa (da sempre) software specifici per il build Uno dei più famosi è Make, che ha implementazioni su vari sistemi (GNU Make, Microsoft Nmake) In genere si utilizza un linguaggio dichiarativo, il più possibile indipendente dal sistema

Ant Apache Ant è uno dei più famosi software per il build automation in Java Ha un linguaggio dichiarativo basato su XML È multipiattaforma Ha un insieme di task per compiere qualunque operazione

Ant (2) Il file di configurazione (build.xml) si basa su tre concetti: Progetto (project) Obiettivo (target) Operazione (task) Un task è una singola operazione (es. copia file, compila ) Un target è una sequenza di task pensata per raggiungere un certo obiettivo; un target può essere dipendente da un altro

Ant: esempio di build.xml

Maven È un sistema di build automation molto simile ad Ant È maggiormente orientato alla gestione completa di un progetto, mentre Ant si focalizza di più sulle operazioni Si basa sulla convention over configuration, per cui progetti diversi che usano Maven tenderanno ad avere una struttura simile con le stesse convenzioni

Continuous Integration È un insieme di tecniche, che combinano la Build Automation e lo Unit Testing, per avere report continui su: Lo stato di avanzamento dei lavori di sviluppo Lo stato di salute dell'integrazione

Logging In progetti non amatoriali è bene avere un sistema che tenga traccia dell'esecuzione di un software Trovare la parte malfunzionante può essere molto lungo, perché dobbiamo provare sezioni di codice una alla volta Procedere con un debug via breakpoint può essere: Lungo, se il progetto è grande Impossibile, se il software non gira sulla nostra macchina

Logging Spesso si usa, per avere un'idea di quello che sta succedendo, l'output su console: System.out.println() Non è una soluzione ideale: La console deve essere tenuta sotto controllo da una persona competente Per salvare l'output dobbiamo realizzare script al di fuori del nostro programma Tutto l'output viene inviato nello stesso luogo: non c'è modo di separare per priorità o per sottosistema

Logging Un Log è un file di testo che raccoglie l'output da un programma È usato normalmente per segnalazione e per debug È fondamentale quando: Il software è eseguito in modalità non-interattiva (es. server) Si vogliono raccogliere dati sull'uso e i comportamento di determinati oggetti Si vuole avere un resoconto delle funzioni eseguite

Apache Log4J È una libreria usata nei progetti Java È ormai uno standard de facto per il logging Definisce dei livelli di log, a seconda della gravità: FATAL ERROR WARN INFO DEBUG TRACE

Apache Log4J: uso La configurazione ci permette di scegliere la destinazione (appender) dei nostri log Una volta configurato si può usare in modo immediato: log.info( inizio copia file... ); log.warn( Il file non esiste, riprovo ); Si possono creare log che traccino solo un sottoinsieme del sistema: Logger log = Logger.getLogger( it.unirc.pja );