MACXIM: uno strumento per la misurazione di applicazioni Java.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "MACXIM: uno strumento per la misurazione di applicazioni Java."

Transcript

1 MACXIM: uno strumento per la misurazione di applicazioni Java. Tesi di laurea di: Vincenzo Pandico Matricola: Relatore: Prof. Vieri Del Bianco Correlatore: Prof. Sandro Morasca Dott. Davide Taibi Anno Accademico

2 Università degli Studi dell Insubria FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea specialistica in Informatica MACXIM: uno strumento per la misurazione di applicazioni Java. Tesi di laurea di: Vincenzo Pandico Matricola: Relatore: Prof. Vieri Del Bianco Correlatore: Prof. Sandro Morasca Dott. Davide Taibi Anno Accademico

3

4 Executive summary Quando si parla di valutazione, si deve prendere in considerazione il fatto che l analisi può risultare molto difficile, soprattutto quando ad essere presi in esame sono progetti di grandi dimensioni, complessi ed articolati. Si deve considerare il codice scritto, le librerie utilizzate, l ambiente in cui il prodotto viene sviluppato. Effettuare valutazioni con una metodologia manuale può risultare molto problematico e portare ad errori di stima. Il risultato di questo lavoro di tesi è stato la realizzazione di uno strumento di misurazione che prende il nome di MACXIM (Model And Code XMLbased Integrated Meter). Questa applicazione permette di effettuare misurazioni metriche su progetti Java in maniera automatizzata. Il lavoro è cominciato a partire dallo studio di cosa si intendesse per misurazioni metriche e come queste potessero essere effettuate sul codice di un progetto. Il codice Java è infatti fonte di metriche, che possono essere utilizzate per misurare la quantità e le qualità del codice prodotto e di conseguenza la produttività del team di sviluppo. L utilizzo della tecnologia XML per rappresentare le entità da misurare e i risultati delle misurazioni dà a MACXIM la possibilità di integrarsi facilmente con altre applicazioni e di rendere i suoi risultati portabili.

5

6 Sommario Capitolo Introduzione Obiettivi Struttura dello sviluppo MACXIM e della tesi...9 Capitolo Analisi del codice Analisi automatizzata e valutazione Qualità La misurazione del codice Analisi di tipo statico Revisione del codice Dipendenze del codice Complessità del codice Benefici dovuti all analisi di tipo statico Tipologie di analisi Analisi sintattica Analisi del flusso Tecniche di analisi del codice Codice sorgente Codice compilato...26 Capitolo Tecnologie utilizzate Java Caratteristiche e qualità Linguaggio Ambiente Java Abstract Syntax Tree XML...35

7 3.4 XQuery e XQueryX exist...40 Capitolo Architettura dell applicazione Architettura MACXIM: descrizione generale Rappresentazione XML di sorgenti Java Rappresentazione XML delle metriche e dei risultati Flusso delle informazioni: dall estrazione ai risultati Estrazione delle informazioni Misurazione del software Visualizzazione dei risultati...51 Capitolo Modulo estrazione informazioni Abstract Syntax Tree Abstract Syntax Tree: Parsing del codice Abstract Syntax Tree: Node Ottenere informazioni da un nodo AST Pattern Visitor Rappresentazione XML di un sorgente Java Inserimento delle informazioni nel database XML Struttura del database XML...69 Capitolo Modulo misurazione e visualizzazione Esecuzione delle misurazioni Metriche in MACXIM Metriche di codice Complessità Ciclomatica Altre metriche...78 Capitolo Conclusioni...81 Bibliografia...83

8

9 Capitolo 1 Introduzione La misurazione del software consiste, per definizione, nella quantificazione delle caratteristiche di un prodotto applicativo e nella possibilità di stimare e pianificare lo sforzo produttivo necessario per la realizzazione di progetti. Questa misurazione assume un ruolo di crescente importanza nel controllo dei progetti di sviluppo con l obiettivo di migliorare la qualità del prodotto finale. Tradizionalmente, i parametri con i quali si può misurare o definire la qualità del software vengono classificati in due categorie: Qualità esterne: qualità del software così come è percepita dai suoi utenti, e includono correttezza, affidabilità, robustezza, efficienza e usabilità. Qualità esterne: qualità del software così come è percepita dagli sviluppatori e includono verificabilità, manutenibilità, riparabilità, evolvibilità, riusabilità, portabilità, leggibilità e modularità. Esiste un legame che correla queste due categorie, si può infatti affermare che un software mal scritto tende a funzionare male. In particolare in questo studio vengono prese in considerazione solo le qualità interne riguardanti la struttura del codice.

10 Il software prodotto con modello di sviluppo Open Source possiede caratteristiche particolari ed interessanti che ne contraddistinguono il processo di sviluppo. Tra queste sicuramente la natura del codice di programmazione, disponibile e modulare, che permette di adattare il prodotto alle esigenze dell'utente. 1.1 Obiettivi L obiettivo della tesi è strettamente legato alla caratteristica di visibilità del codice e consiste nella progettazione e sviluppo di uno strumento di misurazione: MACXIM (Model And Code XML based Integrated Meter), che permetta l'effettuazione di analisi quantitative di software open source java riguardanti il codice del prodotto analizzato. In questa ottica lo strumento realizzato consentirà la creazione di una base di dati di conoscenza, che permetterà di valutare correttamente alcune delle qualità del prodotto di interesse e ne consentirà il confronto con prodotti similari. 1.2 Struttura dello sviluppo MACXIM e della tesi Una volta individuati i requisiti, abbiamo implementato lo strumento di analisi MACXIM. IL processo per ottenere i risultati finali parte dalla preparazione dei dati da analizzare. Successivamente viene segue l'analisi vera e propria. Infine le informazioni ottenute vengono rielaborate e presentate. Entrando nello specifico si è suddivisa la realizzazione in moduli per permetterne la riusabilità.

11 Un primo modulo permette l'estrazione delle informazioni a partire dal codice sorgente fornito. Un secondo modulo, data una rappresentazione delle informazioni estratte ne permette l'analisi. La raccolta dei risultati derivanti da analisi di vari progetti potranno infine costituire materiale per indagini statistiche sulle qualità del software. Nel secondo capitolo vengono descritte alcune tecniche per l analisi del codice, fondamentali per lo sviluppo di MACXIM. Nel terzo capitolo viene fatta una panoramica sulle tecnologie utilizzate e necessarie per spiegare lo sviluppo dello strumento. Nel capitolo seguente, il quarto, viene mostrata l architettura del software, spiegando le scelte intraprese. Nel quinto e sesto capitolo verranno trattati rispettivamente il modulo preposto all estrazione delle informazione a partire dalle classi Java e il modulo anteposto all analisi delle informazioni estratte. Al termine di quest analisi verranno fatte alcune considerazioni sullo strumento realizzato e sui suoi possibili sviluppi futuri.

12

13 Capitolo 2 Analisi del codice Con "analisi del codice" si intende analizzare staticamente il codice per controllare se soddisfa uniformemente le aspettative riguardanti la sicurezza, l'affidabilità, le prestazioni e la manutenibilità. Eseguita correttamente questa operazione fornisce le fondamenta per la produzione di codice di qualità evitando errori strutturali. Non importa quanto uno sviluppatore sia esperto ed organizzato perché, nonostante tutte le sue buone intenzioni, continuerà a scrivere codice che probabilmente avrà qualche bug. La maggior parte delle applicazioni software sono diventate così complesse che è quasi impossibile scrivere codice che soddisfi i requisiti senza creare comportamenti indesiderati nel sistema. Applicazioni di tale livello di complessità sono spesso costituite da un numero molto elevato di componenti e svariate migliaia di righe di codice. Per facilitare la comprensione e l'implementazione di sistemi complessi esistono processi di sviluppo agile. Ma anche con l'utilizzo di queste tecniche continua a presentarsi un largo numero di bugs all'interno dei software. Dove con il termine bug si identifica un errore nella scrittura di un software in grado di causare un funzionamento errato o diverso da quello atteso nell esecuzione del programma. Anche se questo è un passo nella giusta direzione, per arrivare a standard di qualità è necessario avere strumenti di analisi automatizzata. Il momento migliore per scoprire problemi è quando si effettua una revisione del codice appena scritto. Con l'aiuto di strumenti di analisi di tipo statico la maggior parte della rivisitazione del codice può essere effettuata automaticamente.

14 Le Misurazioni di tipo statico forniscono un meccanismo per poter realizzare tool per la revisione di codice attraverso i quali è possibile trovare difetti nella fase di implementazione. Analisi di questo tipo permettono di scovare bug nel codice ancor prima dell esecuzione del programma stesso. L individuazione di bug permette di conseguenza di individuare le soluzioni per una corretta implementazione migliorando la qualità della fase produttiva e l affidabilità del prodotto finale. Le analisi di tipo statico aiutano inoltre a far rispettare convenzioni di codifica, rendendo più facile la manutenibilità. Queste sono le motivazioni che hanno spinto a prendere in considerazione questo tipo di analisi come supporto alla produzione di applicazioni di qualità. 2.1 Analisi automatizzata e valutazione Quando si parla di valutazione, bisogna prendere in considerazione il fatto che l analisi può risultare molto complessa, soprattutto quando ad essere presi in considerazione sono progetti di grandi dimensioni, complessi ed articolati. Si deve considerare il codice scritto, le librerie utilizzate, l ambiente in cui il prodotto viene sviluppato. Effettuare valutazioni di questo tipo con una metodologia manuale può risultare molto difficile e portare ad errori di valutazione. La soluzione migliore consiste nel prendere in considerazione un tipo analisi che possa essere applicata in maniera automatizzata così da migliorare il processo complessivo che porta al perfezionamento del prodotto.

15 Per questo motivo l approccio deve essere di tipo quantitativo, in modo da fornire misure paragonabili, deve poter essere ripetibile e, vista la complessità delle operazioni, automatizzato. Anche avendo dati quantificati, derivanti da analisi, rimane il problema della valutazione di questi. Valutare un applicazione e paragonarla ad un altra infatti non è assolutamente una procedura agevole, specialmente quando si paragonano prodotti di domini differenti. In questa situazione ci si può porre la questione di come interpretare una misurazione, potrebbe, ad esempio, essere valutata in base a dei valori medi oppure avere una scala graduata con cui avere un confronto. Si possono introdurre delle soglie, stabilire cioè dei valori minimi che devono essere rispettati. In questo modo per avere un prodotto di qualità devono essere soddisfatti dei requisiti minimi, ma in un confronto tra software rimarrebbe la questione di interpretare correttamente la distanza tra due o più misurazioni. Probabilmente una valutazione di tipo relativo è più interessante specialmente per comparazioni del tipo il programma X è due volte un certo valore di qualità rispetto ad Y. L'analisi automatica è un approccio interessante, tuttavia bisogna fare delle considerazioni di cui tenere conto per la realizzazione di un tale approccio. Dobbiamo avere delle metriche per progetto che siano il più possibile automatiche, che siano comparabili da progetto a progetto e che siano il più significative possibile. 2.2 Qualità

16 Le qualità che il software deve possedere sono molteplici in relazione all ambito in cui verranno utilizzati. In applicazioni critiche come in medicina, aviazione, attività finanziarie, affidabilità, correttezza e sicurezza assumono un ruolo importante mentre per applicazioni destinate ad un utente, che non richiede come qualità fondamentale l affidabilità solitamente vengono richieste altre qualità quali elevate prestazioni ed usabilità del prodotto. Il produttore invece desidera un software con elevata manutenibilità, verificabilità e riusabilità, in modo da aumentare il rendimento del prodotto, in quanto saranno necessarie minori risorse per individuarne e correggerne i difetti, ed esso potrà essere più facilmente fatto evolvere o riusato in nuovi progetti. Attraverso l'utilizzo di misurazioni è possibile quantificare le qualità e le caratteristiche del progetto in analisi e, a partire da queste misure, sarà poi possibile individuarne le inefficienze, punti di partenza per ogni futuro miglioramento del prodotto. Dunque la misurazione di varie metriche di un prodotto software rappresenta un'insieme di informazioni fondamentali per stimare la qualità del progetto e le misurazioni sul codice ne rappresentano una parte fondamentale. 2.3 La misurazione del codice I metodi quantitativi, che ottengono risultati misurabili e non descrittivi, si sono dimostrati strumenti potenti in altri campi della scienza, per questo motivo per la scienza dei computer pratici e teorici si è studiata una tecnica per mettere a punto un simile approccio nello sviluppo di software.

17 Tom DeMarco ha asserito che " You cannot control what you cannot measure" [1]. Quantificare le qualità e le caratteristiche del progetto in analisi, a partire da una serie di misurazioni, permette di individuarne le inefficienze le quali sono i punti di partenza per ogni futuro miglioramento del prodotto. Avere delle misurazioni è utile inoltre per controllare lo sviluppo del prodotto, [Figura 1]. Figura 1 Uso delle metriche per controllare le fasi di sviluppo del software. Rendere il processo di revisione del codice più gestibile e prevedibile mediante un'analisi statica dello sviluppo del software migliora la produttività e l'affidabilità del prodotto finale. Tuttavia il più grande vantaggio è la capacità di individuare i difetti in fase di codifica, che incidono direttamente sull'affidabilità del software.

18 Per ottenere questi benefici è però indispensabile applicare l'analisi di tipo statico con gli strumenti giusti, con corrette regole di configurazione, di modo da poter essere un meccanismo molto potente per ottenere una misurazione quantitativa che aiuti a migliorare l'accuratezza globale del progetto. MACXIM è realizzato per effettuare delle misurazioni sul codice e quindi per misurare quello che abbiamo appena descritto. 2.4 Analisi di tipo statico Analisi statica significa lo studio di qualcosa che non cambia. In termini software può essere ridefinita come lo studio del codice sorgente non ancora in esecuzione. Sappiamo che i debugger ci permettono di analizzare il codice durante la sua esecuzione, ma possiamo conoscere molto dal codice senza dover eseguire l'applicazione. Ad esempio se si analizzano i file sorgenti di un applicazione è possibile garantire che il codice sorgente aderisca ad uno standard di codifica predefinito. È anche possibile individuare problemi di prestazioni più comuni. Si possono anche esaminare le classi importate per capire le relazioni di dipendenza. Per fare tutto questo non vi è la necessità né di compilare il programma né di eseguirlo. Tuttavia ci sono molti tipi di analisi di tipo statico categorizzati a seconda dei valori che forniscono.

19 2.4.1 Revisione del codice Negli strumenti che effettuano l analisi del codice in maniera automatizzata ogni file sorgente è caricato ed analizzato da un parser il quale scorre il codice alla ricerca di particolari patterns che violano delle regole prestabilite. In alcuni linguaggi, come C++, molte di queste regole sono insite nel compilatore o disponibili in programmi esterni. In altri linguaggi, come Java, il compilatore controlla poco sotto l'aspetto della revisione. La revisione del codice è un buon strumento per forzare alcuni standard del codice, scovare problemi di base relativi alle performance e trovare possibili abusi nell'utilizzo delle API (Application Programming Interface). La revisione del codice può inoltre includere forme di analisi più approfondite come il flusso di dati, controllo di flusso, e così via Dipendenze del codice Piuttosto che esaminare il formato di singoli file sorgente, gli strumenti che analizzano le dipendenze del codice esaminano le relazioni tra i file di origine (in genere le classi) per creare una mappa generale dell'architettura del programma. Strumenti di questo tipo sono comunemente utilizzati per scoprire design pattern funzionali oppure non funzionali a seconda delle esigenze Complessità del codice

20 Gli strumenti che analizzano la complessità del codice del programma effettuano delle metriche del software stabilite per determinare quando risulta inutilmente complesso. Quando un particolare blocco di codice supera una certa soglia di valutazione metrica, può essere marcato come candidato per una ristrutturazione manutenibilità. in modo da migliorarne la 2.5 Benefici dovuti all analisi di tipo statico I benefici dovuti ad analisi di tipo statico non solo apportano miglioramenti qualitativi, ma anche, aspetto di almeno altrettanta importanza, portano a risparmiare tempo e denaro. Un aspetto inerente al risparmio di tempo dovuto a strumenti che permettono analisi di tipo statico è abbastanza ovvio: ci vuole meno tempo per ottenere codice di maggiore qualità. Il risparmio di denaro è strettamente legato alla qualità del codice, in quanto la scrittura di codice con pochi difetti porta al risparmio legato alla risoluzione dei problemi che si possono riscontrare. Scoprire difetti durante il processo di sviluppo costa meno e risolvere bug mentre in ogni fase successiva diventa sempre più costoso. 2.6 Tipologie di analisi In generale, molti progetti spendono più della metà del loro ciclo di vita nella revisione del codice e nella prevenzione di difetti [2]. Questo sforzo può essere significativamente ridotto automatizzando il processo di revisione del codice. L'automatizzazione inoltre aiuta nel

21 realizzare la consistenza in termini di norme di codifica e buone pratiche di realizzazione. Qui ci focalizzeremo su Java esplorando le differenti tecniche usate per ottenere una revisione automatica del codice. Per prima cosa viene descritto il ruolo, come illustra la Figura 2, delle analisi statiche nel ciclo di vita dello sviluppo del software e i partecipanti coinvolti nel processo: Figura 2 Processo di analisi statica.

22 Gli sviluppatori sono responsabili della scrittura del codice e dell'effettuazione delle analisi statiche al fine di identificare e risolvere eventuali difetti e problemi. Gli "architetti" sono responsabili della selezione degli strumenti di analisi statiche e della configurazione delle regole. I consulenti della qualità del software sono responsabili dei difetti delle analisi e della prevenzione. Sempre dalla Figura 2 si può notare che l'analisi statica non compromette l'importanza dei programmatori e degli architetti del software, perché la selezione di tool affidabili e appropriati di analisi statiche è critica. L'automatizzazione di analisi statiche implica che gli sviluppatori debbano garantire l'individuazione di errori e la loro risoluzione. In breve, gli sviluppatori dovrebbero fornirsi di un processo di revisione affidabile e automatizzata che permetta al team di sviluppo di concentrarsi su altri importanti processi di sviluppo per soddisfare le richieste funzionali. Prima di entrare nei dettagli delle varie tecniche usate per automatizzare le misurazioni in MACXIM, è importante comprendere i parametri base richiesti per automatizzare strumenti di revisione dal punto di vista di Java e visionare quali tipologie di misurazioni è possibile effettuare avendo a disposizione un codice sorgente. Le tipologie di analisi possibili per effettuare misurazioni sono varie, di seguito ne vedremo alcune ma vediamone alcune.

23 2.6.1 Analisi sintattica L'analisi sintattica è fatta determinando la struttura del codice java in input e comparandola con modelli predefiniti. I difetti più comuni usando questa metodologia vengono riscontrati utilizzando delle convenzioni, come l'uso di una tipologia di nomi standard, oppure avere sempre la clausola di default negli statement switch (costrutti di controllo utilizzati quando è necessario eseguire una serie di controlli sulla stessa variabile). Per esempio, vedi Figura 3, l'assenza della clausola di default potrebbe nascondere potenziali bugs che potrebbero essere rilevati da questa clausola. Figura 3 Switch statement. switch (expression) { case c1: statements // do these if expression== c1 break; case c2: statements // do these if expression == c2 break; } Analisi del flusso L'analisi del flusso di dati tiene traccia degli oggetti (variabili) e del loro stato (valore del dato) in un particolare momento di esecuzione di un metodo del programma. Questa metodologia monitora la situazione delle variabili in tutti i suoi possibili stati, predicendo così, ad esempio, delle

24 possibili eccezioni dovute a puntatori nulli oppure oggetti di un database che non sono stati chiusi. La figura 4 mostra l'oggetto connessione al database "con2" che non è stato chiuso in tutti i possibili flussi. Questa situazione potrebbe portare ad uno stato critico. Inoltre, se le connessioni a una base di dati sono una risorsa limitata, tenerli in vita potrebbe creare altri problemi. Figura 4 class TestResourceLeak{ public CoreResponse process(entity entity) throws ResourceException { CoreResponse coreresponse = new CoreResponse(); DatabaseConnection dbcon = new DatabaseConnection(); Connection con1 = null; Connection con2 = null; //getting the Data Base Connection try{ con1 = dbcon.getconnection(); con2 = dbcon.getconnection();... } catch(exception e) { con1.close(); throw new ResourceException(e.getMessage(),e) ; } con1.close(); return coreresponse; } }

25 2.7 Tecniche di analisi del codice Fino ad ora abbiamo considerato alcuni possibili tipi di analisi che si possono effettuare sul software, ma adesso prendiamo in esame come effettivamente queste misurazioni possono essere fatte, tenendo presente che da qui in avanti le considerazioni riguarderanno il linguaggio Java. Le tecniche di ispezione possono essere categorizzate in due tipologie che possono essere applicate sul codice sorgente Java (.java File) oppure sul bytecode generato dal compilatore (.class File) Codice sorgente L ispezione del codice sorgente permette di prendere codice Java sorgente in input. Tecniche di questo tipo per prima cosa scansionano il file sorgente usando un parser, successivamente eseguono regole predefinite su questo codice sorgente. La comprensione profonda del linguaggio è imprescindibile per ogni tool che vuole avere la capacità di identificare bugs o problemi in un particolare linguaggio di programmazione. Ci sono numerosi parser del linguaggio Java che si attengono alle specifiche del linguaggio Java (JLS), come ad esempio JavaCC (https://javacc.dev.java.net/) e ANTLR (http://www.antlr.org/). L aspetto importante è che strumenti di questo tipo abbiano la capacità di scansione del codice in modo strutturato e forniscano delle APIs che semplifichino le regole di implementazione. Il Java parser inoltre semplifica il sorgente Java convertendo il codice in una struttura ad albero conosciuta come "Abstract Syntax Tree". La Figura

26 5 mostra un abstract syntax tree (AST) generato per codice Java usando JavaCC e JJTree parser (https://javacc.dev.java.net/) per costruire un programma che riconosca l'abbinamento tra il codice e le specifiche della grammatica. Infine genera un AST del file codice sorgente Java. L utilizzo di questa struttura verrà meglio spiegata nel capitolo 5, poiché rappresenta il nodo centrale per l estrazione delle informazioni necessarie a MACXIM per eseguire le proprie metriche. Figura 5 Abstarct Syntax Tree generato. public class GenerateAST { private String printfuncname() { System.out.println(funcName + "Generate AST"); } } CompilationUnit TypeDeclaration ClassDeclaration:(public) UnmodifiedClassDeclaration(GenerateAST) ClassBody ClassBodyDeclaration MethodDeclaration:(private) ResultType Type Name:String MethodDeclarator(printFuncName) FormalParameters Block BlockStatement Statement StatementExpression PrimaryExpression

27 PrimaryPrefix Name:System.out.println PrimarySuffix Arguments ArgumentList Expression AdditiveExpression:+ PrimaryExpression PrimaryPrefix Name:funcName PrimaryExpression PrimaryPrefix Literal:"Generate AST" Codice compilato La tecnica di scansione di bytecode Java analizza il codice compilato, cioè i file con estensione.class creati dalla compilazione del codice sorgente. Questo approccio, noto come reflection, utilizza delle librerie per accedere al bytecode Java e implementa modelli e regole predefiniti usando queste librerie. Le librerie Java bytecode aiutano l'accesso al compilato fornendo interfacce di astrazione del livello sorgente. Possiamo così leggere una classe e le sue informazioni senza conoscere in modo dettagliato il bytecode. L'API reflection è così un'infrastruttura che permette di ispezionare un oggetto a runtime, al fine di scoprire la classe di appartenenza, la sua composizione in termini di metodi, campi, interfacce implementate, i modificatori utilizzati e persino di lavorare su ciascuno di questi elementi in modo simile a quanto si può fare usando gli

28 appositi operatori del linguaggio durante la stesura di un programma. La "Reflection" consente dunque a Java l'abilità di ispezionare dinamicamente all'interno del proprio codice delle classi caricate. Le API Java Reflection forniscono un meccanismo per prendere le informazioni di una classe (super classe, nomi di metodi...) che sono usati per implementare regole come gerarchie di ereditarietà o il numero massimo di metodi in una classe. La scelta effettuata per la realizzazione di MACXIM è quella di analizzare solo il codice sorgente. Questo perché il nostro strumento si vuole presentare e collocare in ambito open source, motivo per cui suppone che il codice sorgente sia disponibile ed aperto.

29

30 Capitolo 3 Tecnologie utilizzate In questo capitolo saranno introdotte brevemente le tecnologie utilizzate per realizzare MACXIM. Questa panoramica consente di poter meglio comprendere le scelte per lo sviluppo dello strumento, 3.1 Java Il linguaggio di programmazione Java è stato creato verso la metà degli anni novanta, e per questo è ancora in fase evolutiva, tanto che ogni anno circa ne viene rilasciata una nuova release. Da linguaggio nato solo per la rete è divenuto un vero e proprio linguaggio di programmazione, paragonabile, dal punto di vista delle funzionalità, al C Caratteristiche e qualità Java venne creato per soddisfare le seguenti caratteristiche [3]: Il tuo linguaggio di programmazione è orientato agli oggetti, ed è semplice.

31 Il tuo ciclo di sviluppo è molto veloce perché Java è interpretato. Il ciclo compile-link-load-test-debug è obsoleto, ora devi compilare ed eseguire. Le tue applicazioni sono portabili attraverso più piattaforme. Scrivi le applicazioni una sola volta, e non avrai mai bisogno di "portarle", esse sono eseguibili senza modifiche su diverse piattaforme hardware e su diversi sistemi operativi. Le tue applicazioni sono sicure perché il sistema run-time Java gestisce la memoria per te. Le tue applicazioni grafiche interattive sono ad alte prestazioni perché più thread simultanei possono essere attivi, e le tue applicazioni supportano il multithreading incorporato nell ambiente Java. Le tue applicazioni sono adattabili ai cambiamenti di ambiente perché puoi scaricare dinamicamente moduli di codice da qualunque parte sulla rete. I tuoi utenti possono fidarsi delle tue applicazioni esse sono sicure, anche se essi scaricano codice da Internet; il sistema run-time Java ha incorporato protezioni contro virus e altre manipolazioni. Java supporta applicazioni che saranno eseguite su architetture hardware e sistemi operativi diversi. Per risolvere questa diversità di ambienti operativi, il compilatore Java genera il bytecode, un formato di codice intermedio tra il codice ad alto livello e quello macchina, progettato per essere efficientemente trasportato su piattaforme hardware e software diverse. Esso viene poi eseguito da una virtual machine, Java Virtual Machine (JVM), cioè da un interprete. L interprete Java può così eseguire i bytecode Java su ogni macchina sulla quale l interprete e il sistema run

32 time è stato portato. JVM è la specifica di una macchina astratta per la quale il compilatore Java genera il codice. Una specifica implementazione della JVM per piattaforme hardware e software specifiche provvede alla realizzazione concreta di questa macchina virtuale. La compilazione dei sorgenti java avviene con controlli severi, ma il linguaggio è dinamico nella fase di link. Le classi infatti sono collegate solo quando occorre. In questo modo la fase di link di un programma è semplice e leggera e il ciclo di sviluppo del software diventa molto più rapido. Grazie a queste caratteristiche è così possibile eseguire su hardware e sistema operativo diverso programmi scritti in Java ed aspettarsi lo stesso comportamento durante la fase della sua esecuzione. Una Java Virtual Machine è implementata anche nei vari Browser per poter eseguire programmi Java remoti nella rete, i cosidetti Applet. Un Java applet è un particolare tipo di applicazione che può essere avviata all interno del browser dell utente, eseguendo codice scaricato da un server web remoto. Questo codice viene eseguito in un area altamente ristretta, che protegge l utente dalla possibilità che il codice sia malevolo o abbia un comportamento non desiderato. Chi pubblica il codice può applicare un certificato che usa per firmare digitalmente le applet dichiarandole sicure, dando loro il permesso di uscire dall area ristretta e accedere al filesystem e al network, presumibilmente con l approvazione e sotto il controllo dell utente. Java ha introdotto la possibilità di creare applicazioni multi thread, ovvero applicazioni che svolgono in modo concorrente molteplici attività. In Java è anche stato introdotto, aspetto di nostro interesse ai fini dello studio e realizzazione di MACXIM, il supporto per la riflessione,

Principi dell ingegneria del software Relazioni fra

Principi dell ingegneria del software Relazioni fra Sommario Principi dell ingegneria del software Leggere Cap. 3 Ghezzi et al. Principi dell ingegneria del software Relazioni fra Principi Metodi e tecniche Metodologie Strumenti Descrizione dei principi

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli

Informatica Documentale

Informatica Documentale Informatica Documentale Ivan Scagnetto (scagnett@dimi.uniud.it) Stanza 3, Nodo Sud Dipartimento di Matematica e Informatica Via delle Scienze, n. 206 33100 Udine Tel. 0432 558451 Ricevimento: giovedì,

Dettagli

TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE

TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE ISTRUZIONE E FORMAZIONE TECNICA SUPERIORE SETTORE I.C.T. Information and Communication Technology TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE STANDARD MINIMI DELLE COMPETENZE TECNICO PROFESSIONALI DESCRIZIONE

Dettagli

Laboratorio Matematico Informatico 2

Laboratorio Matematico Informatico 2 Laboratorio Matematico Informatico 2 (Matematica specialistica) A.A. 2006/07 Pierluigi Amodio Dipartimento di Matematica Università di Bari Laboratorio Matematico Informatico 2 p. 1/1 Informazioni Orario

Dettagli

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER L architettura CLIENT SERVER è l architettura standard dei sistemi di rete, dove i computer detti SERVER forniscono servizi, e computer detti CLIENT, richiedono

Dettagli

Programmazione Java Avanzata

Programmazione Java Avanzata Programmazione Java Avanzata Accesso ai Dati Ing. Giuseppe D'Aquì Testi Consigliati Eclipse In Action Core J2EE Patterns - DAO [http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html]

Dettagli

Configuratore di Prodotto Diapason

Configuratore di Prodotto Diapason Configuratore di Prodotto Diapason Indice Scopo di questo documento...1 Perché il nuovo Configuratore di Prodotto...2 Il configuratore di prodotto...3 Architettura e impostazione tecnica...5 Piano dei

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Corso Android Corso Online Sviluppo su Cellulari con Android

Corso Android Corso Online Sviluppo su Cellulari con Android Corso Android Corso Online Sviluppo su Cellulari con Android Accademia Futuro info@accademiafuturo.it Programma Generale del Corso di Sviluppo su Cellulari con Android Programma Base Modulo Uno - Programmazione

Dettagli

Corso basi di dati Introduzione alle ASP

Corso basi di dati Introduzione alle ASP Corso basi di dati Introduzione alle ASP Gianluca Di Tomassi Email: ditomass@dia.uniroma3.it Università di Roma Tre Web statico e Web interattivo In principio il Web era una semplice collezione di pagine

Dettagli

Gestione Requisiti. Ingegneria dei Requisiti. Requisito. Tipi di Requisiti e Relativi Documenti. La gestione requisiti consiste in

Gestione Requisiti. Ingegneria dei Requisiti. Requisito. Tipi di Requisiti e Relativi Documenti. La gestione requisiti consiste in Ingegneria dei Requisiti Il processo che stabilisce i servizi che il cliente richiede I requisiti sono la descrizione dei servizi del sistema Funzionalità astratte che il sistema deve fornire Le proprietà

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

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

Tecniche Multimediali

Tecniche Multimediali Chiedersi se un computer possa pensare non è più interessante del chiedersi se un sottomarino possa nuotare Edsger Dijkstra (The threats to computing science) Tecniche Multimediali Corso di Laurea in «Informatica»

Dettagli

ADA. E learning e open source

ADA. E learning e open source 1 ADA. E learning e open source ADA 1.7.1 Come cresce un Ambiente Digitale per l'apprendimento open source Maurizio Graffio Mazzoneschi 2 Cos'è il software libero Libertà 0, o libertà fondamentale: la

Dettagli

APPENDICE A Servlet e Java Server Page

APPENDICE A Servlet e Java Server Page APPENDICE A Servlet e Java Server Page A.1 Cosa è una Servlet e come funziona Una servlet è un particolare tipo di applicazione Java, in grado di essere eseguita all'interno di un web server e di estenderne

Dettagli

Software. Definizione, tipologie, progettazione

Software. Definizione, tipologie, progettazione Software Definizione, tipologie, progettazione Definizione di software Dopo l hardware analizziamo l altra componente fondamentale di un sistema di elaborazione. La macchina come insieme di componenti

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

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

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

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

Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1)

Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1) Pagina 1 di 10 Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1) Nel corso della lezione precedente abbiamo analizzato le caratteristiche dell'architettura CGI.

Dettagli

catalogo corsi di formazione 2015/2016

catalogo corsi di formazione 2015/2016 L offerta formativa inserita in questo catalogo è stata suddivisa in quattro sezioni tematiche che raggruppano i corsi di formazione sulla base degli argomenti trattati. Organizzazione, progettazione e

Dettagli

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione HTML e Linguaggi Politecnico di Facoltà del Design Bovisa Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://home.dei.polimi.it/cugola Indice Il linguaggio del

Dettagli

Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET)

Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET) Tratte da (18. TECNICHE DI ACCESSO AI DATABASE IN AMBIENTE INTERNET) Ipotesi di partenza: concetti di base del networking Le ipotesi di partenza indispensabili per poter parlare di tecniche di accesso

Dettagli

Corso Programmazione Java Android. Programma

Corso Programmazione Java Android. Programma Corso Programmazione Java Android Programma 1.1 Obiettivo e modalità di fruizione L obiettivo del corso è di fornire le conoscenze tecniche e metodologiche per svolgere la professione di Programmatore

Dettagli

Programmazione ad Oggetti. Java Parte I

Programmazione ad Oggetti. Java Parte I Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1 Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere

Dettagli

Introduzione alla Progettazione per Componenti

Introduzione alla Progettazione per Componenti Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica

Dettagli

Il software: natura e qualità

Il software: natura e qualità Sommario Il software: natura e qualità Leggere Cap. 2 Ghezzi et al. Natura e peculiarità del software Classificazione delle qualità del software Qualità del prodotto e del processo Qualità interne ed esterne

Dettagli

Tipi fondamentali di documenti web

Tipi fondamentali di documenti web Tipi fondamentali di documenti web Statici. File associati al web server il cui contenuto non cambia. Tutte le richieste di accesso conducano alla visualizzazione della stessa informazione. Dinamici. Non

Dettagli

SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB

SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB Relatore Chiarissimo

Dettagli

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I Introduzione ad XML G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I XML XML (Extensible Markup Language) è un insieme standard di regole sintattiche per modellare la struttura di

Dettagli

Sistemi Informativi e WWW

Sistemi Informativi e WWW Premesse Sistemi Informativi e WWW WWW: introduce un nuovo paradigma di diffusione (per i fornitori) e acquisizione (per gli utilizzatori) delle informazioni, con facilità d uso, flessibilità ed economicità

Dettagli

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE Relatore: prof. Michele Moro Laureando: Marco Beggio Corso di laurea in Ingegneria Informatica Anno Accademico 2006-2007

Dettagli

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni)

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni) Progettazione di Sistemi Interattivi Struttura e supporti all implementazione di applicazioni in rete (cenni) Docente: Daniela Fogli Gli strati e la rete Stratificazione da un altro punto di vista: i calcolatori

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

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

Corso Android Corso Online Programmatore Android

Corso Android Corso Online Programmatore Android Corso Android Corso Online Programmatore Android Accademia Domani Via Pietro Blaserna, 101-00146 ROMA (RM) info@accademiadomani.it Programma Generale del Corso Modulo Uno - Programmazione J2ee 1) Programmazione

Dettagli

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che Prefazione In questo volume completiamo l esplorazione del linguaggio Java che abbiamo iniziato in Java Fondamenti di programmazione. I due testi fanno parte di un percorso didattico unitario, come testimoniano

Dettagli

Verifica e Validazione (V & V) Software e difetti. Processo di V & V. Test

Verifica e Validazione (V & V) Software e difetti. Processo di V & V. Test Software e difetti Il software con difetti è un grande problema I difetti nel software sono comuni Come sappiamo che il software ha qualche difetto? Conosciamo tramite qualcosa, che non è il codice, cosa

Dettagli

Infrastrutture Software

Infrastrutture Software Infrastrutture Software I componenti fisici di un sistema informatico sono resi accessibili agli utenti attraverso un complesso di strumenti software finalizzati all utilizzo dell architettura. Si tratta

Dettagli

Sviluppo di strumenti per la valutazione automatica di accessibilità e usabilità di applicazioni web

Sviluppo di strumenti per la valutazione automatica di accessibilità e usabilità di applicazioni web tesi di laurea Sviluppo di strumenti per la valutazione automatica di accessibilità e usabilità Anno Accademico 2009-2010 relatore Ch.mo prof. Porfirio Tramontana candidato Paola Lucignano Matr. 832/69

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

TECNICO SUPERIORE PER LE APPLICAZIONI INFORMATICHE

TECNICO SUPERIORE PER LE APPLICAZIONI INFORMATICHE ISTRUZIONE E FORMAZIONE TECNICA SUPERIORE SETTORE I.C.T. Information and Communication Technology TECNICO SUPERIORE PER LE APPLICAZIONI INFORMATICHE STANDARD MINIMI DELLE COMPETENZE TECNICO PROFESSIONALI

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

Elementi del calcolatore: CPU

Elementi del calcolatore: CPU Elementi del calcolatore: CPU Elementi del calcolatore: Memoria Elementi del calcolatore: Memoria Elementi del calcolatore: Hard Disk Antefatto Sistema Operativo Come il computer appare Il calcolatore

Dettagli

Corso di Informatica Modulo T3 B1 Programmazione web

Corso di Informatica Modulo T3 B1 Programmazione web Corso di Informatica Modulo T3 B1 Programmazione web 1 Prerequisiti Architettura client/server Elementi del linguaggio HTML web server SQL server Concetti generali sulle basi di dati 2 1 Introduzione Lo

Dettagli

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente:

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il.NET Framework By Dario Maggiari L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il cuore del.net Framework è costituito dal CLR (Common Language Runtime) che, secondo

Dettagli

Il File System. È la componente del S.O. che si occupa della gestione della memoria di massa e dell organizzazione logica dei dati

Il File System. È la componente del S.O. che si occupa della gestione della memoria di massa e dell organizzazione logica dei dati Il File System È la componente del S.O. che si occupa della gestione della memoria di massa e dell organizzazione logica dei dati Le operazioni supportate da un file system sono: eliminazione di dati modifica

Dettagli

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione Processi (di sviluppo del) software Fase di Analisi dei Requisiti Un processo software descrive le attività (o task) necessarie allo sviluppo di un prodotto software e come queste attività sono collegate

Dettagli

Corso Web programming

Corso Web programming Corso Web programming Modulo T3 A1 Modelli di programmazione 1 Prerequisiti Concetto di rete Processi e thread Concetti generali sui database 2 1 Introduzione Un particolare ambito della programmazione

Dettagli

Siti interattivi e dinamici. in poche pagine

Siti interattivi e dinamici. in poche pagine Siti interattivi e dinamici in poche pagine 1 Siti Web interattivi Pagine Web codificate esclusivamente per mezzo dell HTML non permettono alcun tipo di interazione con l utente, se non quella rappresentata

Dettagli

Implementazione di MVC. Gabriele Pellegrinetti

Implementazione di MVC. Gabriele Pellegrinetti Implementazione di MVC Gabriele Pellegrinetti 2 Come implementare il pattern Model View Controller con le tecnologie JSP, ASP e XML Implementazione del pattern MVC in Java (JSP Model 2) SUN è stato il

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

CONTENT MANAGMENT SYSTEMS

CONTENT MANAGMENT SYSTEMS CONTENT MANAGMENT SYSTEMS ESTRATTO DA: Ileana D'Incecco, Progettare la comunicazione web per organizzazioni non-profit con strumenti open source: ideazione e realizzazione del sito web della Casa delle

Dettagli

Cos è l Ingegneria del Software?

Cos è l Ingegneria del Software? Cos è l Ingegneria del Software? Corpus di metodologie e tecniche per la produzione di sistemi software. L ingegneria del software è la disciplina tecnologica e gestionale che riguarda la produzione sistematica

Dettagli

Piano di gestione della qualità

Piano di gestione della qualità Piano di gestione della qualità Pianificazione della qualità Politica ed obiettivi della qualità Riferimento ad un eventuale modello di qualità adottato Controllo della qualità Procedure di controllo.

Dettagli

Cultura Tecnologica di Progetto

Cultura Tecnologica di Progetto Cultura Tecnologica di Progetto Politecnico di Milano Facoltà di Disegno Industriale - DATABASE - A.A. 2003-2004 2004 DataBase DB e DataBase Management System DBMS - I database sono archivi che costituiscono

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Lezione 6 a.a. 2010/2011 Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono: diversi

Dettagli

4. Requisiti del Software

4. Requisiti del Software 4. Requisiti del Software Cosa? Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 4. Requisiti del Software 1 / 35 Sommario 1 Generalità 2 Categorizzazione

Dettagli

Ingegneria del Software Requisiti e Specifiche

Ingegneria del Software Requisiti e Specifiche Ingegneria del Software Requisiti e Specifiche Obiettivi. Affrontare i primi passi della produzione del software: la definizione dei requisiti ed il progetto architetturale che porta alla definizione delle

Dettagli

PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO 147 6/001.0

PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO 147 6/001.0 PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO 147 6/001.0 PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO ELEMENTI FONDAMENTALI PER LO SVILUPPO DI SISTEMI INFORMATIVI ELABORAZIONE DI

Dettagli

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS CSS e XML Per formatare i documenti XML è possibile seguire due strade: Quando non c è bisogno della potenza elaborativa di XSL, l utilizzo

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL 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

Metriche del software

Metriche del software Sviluppo di Software Applicativo Metriche del software Come misurare le diverse caratteristiche del software: dimensioni, qualità, impegno richiesto per lo sviluppo, ecc. Ercole Colonese IBM Global Services

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

Nota Tecnica Premium HMI 4.0.1152 TN0022

Nota Tecnica Premium HMI 4.0.1152 TN0022 Premium HMI 4.0.1152 Introduzione Il documento raccoglie le note di rilascio per la versione 4.0.1152 di Premium HMI. Le principali novità introdotte riguardano i seguenti aspetti: Nuove funzioni per una

Dettagli

WebRatio. L altra strada per il BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8

WebRatio. L altra strada per il BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 WebRatio L altra strada per il BPM Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 Il BPM Il BPM (Business Process Management) non è solo una tecnologia, ma più a grandi linee una disciplina

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO Linguaggio macchina Uno per ogni processore o famiglia di processori Linguaggio assembler Versione simbolica di quello macchina. LINGUAGGI DI ALTO

Dettagli

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved WEB TECHNOLOGY Il web connette LE persone Indice «Il Web non si limita a collegare macchine, ma connette delle persone» Il Www, Client e Web Server pagina 3-4 - 5 CMS e template pagina 6-7-8 Tim Berners-Lee

Dettagli

Centro Nazionale per l Informatica nella Pubblica Amministrazione. Gara a procedura aperta n. 1/2007. per l appalto dei

Centro Nazionale per l Informatica nella Pubblica Amministrazione. Gara a procedura aperta n. 1/2007. per l appalto dei Centro Nazionale per l Informatica nella Pubblica Amministrazione Gara a procedura aperta n. 1/2007 per l appalto dei Servizi di rilevazione e valutazione sullo stato di attuazione della normativa vigente

Dettagli

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Java: Compilazione e Traduzione Editing, compilazione, esecuzione

Dettagli

Verifica e Validazione del Simulatore

Verifica e Validazione del Simulatore Verifica e del Simulatore I 4 passi principali del processo simulativo Formulare ed analizzare il problema Sviluppare il Modello del Sistema Raccolta e/o Stima dati per caratterizzare l uso del Modello

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Appunti della lezione del 8/10/2008 del corso di Basi di dati I - Università del Salento

Appunti della lezione del 8/10/2008 del corso di Basi di dati I - Università del Salento Appunti della lezione del 8/10/2008 del corso di Basi di dati I - Università del Salento Tecnologie per lo sviluppo di applicazioni La tendenza attuale dell'ingegneria è quella dell'integrazione di componenti

Dettagli

2 - Introduzione al linguaggio Java

2 - Introduzione al linguaggio Java 2 - Introduzione al linguaggio Java Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

Le Basi di dati: generalità. Unità di Apprendimento A1 1

Le Basi di dati: generalità. Unità di Apprendimento A1 1 Le Basi di dati: generalità Unità di Apprendimento A1 1 1 Cosa è una base di dati In ogni modello di organizzazione della vita dell uomo vengono trattate informazioni Una volta individuate e raccolte devono

Dettagli

Università della Svizzera italiana

Università della Svizzera italiana Università della Svizzera italiana Il sito dell Università della Svizzera italiana e l accessibilità Vs.1.0 11 / 12 / 2007 TEC-LAB WEB-SERVICE 1. INTRODUZIONE Avere accesso al web, per un utente disabile,

Dettagli

Ciclo di Vita Evolutivo

Ciclo di Vita Evolutivo Ciclo di Vita Evolutivo Prof.ssa Enrica Gentile a.a. 2011-2012 Modello del ciclo di vita Stabiliti gli obiettivi ed i requisiti Si procede: All analisi del sistema nella sua interezza Alla progettazione

Dettagli

Questo punto richiederebbe uno sviluppo molto articolato che però a mio avviso va al di là delle possibilità fornite al candidato dal tempo a disposizione. Mi limiterò quindi ad indicare dei criteri di

Dettagli

Liceo Scientifico " C. CATTANEO " PIANO DI LAVORO DI INFORMATICA CLASSE 3 LSA SEZ. H

Liceo Scientifico  C. CATTANEO  PIANO DI LAVORO DI INFORMATICA CLASSE 3 LSA SEZ. H Liceo Scientifico " C. CATTANEO " PIANO DI LAVORO DI INFORMATICA CLASSE 3 LSA SEZ. H Sommario PIANO DI LAVORO DI INFORMATICA... 1 INDICAZIONI GENERALI... 2 PREREQUISITI... 2 CONOSCENZE, COMPETENZE E CAPACITA...

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

Web Programming Specifiche dei progetti

Web Programming Specifiche dei progetti Web Programming Specifiche dei progetti Paolo Milazzo Anno Accademico 2010/2011 Argomenti trattati nel corso Nel corso di Web Programming sono state descritti i seguenti linguaggi (e tecnologie): HTML

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

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

Università degli Studi Roma Tre Dipartimento di Informatica ed automazione. Facoltà di Ingegneria. Laurea Magistrale in Ingegneria Informatica Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione Facoltà di Ingegneria Laurea Magistrale in Ingegneria Informatica Tesi di Laurea Sistema informativo per la gestione dei processi

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

DBMS ed Applicazioni Motivazioni

DBMS ed Applicazioni Motivazioni DBMS ed Applicazioni Motivazioni Sin ora abbiamo visto SQL come linguaggio per interrogare DBMS da interfaccia interattiva Nella pratica, un efficace sfruttamento delle potenzialità dei DBMS deriva dalla

Dettagli

Concetti di base di ingegneria del software

Concetti di base di ingegneria del software Concetti di base di ingegneria del software [Dalle dispense del corso «Ingegneria del software» del prof. A. Furfaro (UNICAL)] Principali qualità del software Correttezza Affidabilità Robustezza Efficienza

Dettagli

Introduzione. Perché è stato scritto questo libro

Introduzione. Perché è stato scritto questo libro Introduzione Perché è stato scritto questo libro Sul mercato sono presenti molti libri introduttivi a Visual C# 2005, tuttavia l autore ha deciso di scrivere il presente volume perché è convinto che possa

Dettagli

Seminario di Sistemi Distribuiti: RPC su SOAP

Seminario di Sistemi Distribuiti: RPC su SOAP Corso di Sistemi Distribuiti Prof. S. Balsamo Seminario di Sistemi Distribuiti: RPC su SOAP [ 777775] 1 INTRODUZIONE 3 2 RPC 3 3 SOAP (SIMPLE OBJECT ACCESS PROTOCOL) 3 4 UTILIZZO DI SOAP COME PROTOCOLLO

Dettagli

Benvenuti nella guida completa a PHP5 e MySQL!

Benvenuti nella guida completa a PHP5 e MySQL! Introduzione Benvenuti nella guida completa a PHP5 e MySQL! Gli autori di questo libro, sebbene ammettano di essere di parte, ritengono che il linguaggio di scripting Web PHP possa essere considerato il

Dettagli