Introduzione all Ingegneria del Software

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione all Ingegneria del Software"

Transcript

1 Introduzione all Ingegneria del Software Alessandro Martinelli 28 novembre 2014 Introduzione all Ingegneria del Software Ingegneria del Software Modelli di Sviluppo del Software Waterfall Model Modelli a Spirale Sviluppo Incrementale ed Iterativo Agile Software Development ed Extreme Programming Il Rilascio del Software e le Versioni Fondamenti di Informatica II

2 Ingegneria del Software Due parole : Software e Ingegneria Software Linguaggi (C,Java), Paradigmi (Procedurali, ad Oggetti), Metafore di Programmazione Codice di Programmazione Strumenti di Case (Eclipse) Ingegneria Progettazione, Disegno Sviluppo e Produzione Verifica, Collaudo Uso di Strumentazione Tecnica Applicazione di Standard A. Martinelli Modelli di Sviluppo 28 novembre / 72

3 Ingegneria del Software Ingegneria del Software Ingegneria del Software Un insieme di pratiche Ingegneristiche che servono a supportare e a migliorare la realizzazione di un prodotto software. Migliorare? Ridurre i tempi di sviluppo Ridurre gli errori di produzione. Sfruttare soluzioni standard di cui beneficino modularità, riciclabilità, portabilità, usabilità... A. Martinelli Modelli di Sviluppo 28 novembre / 72

4 Alcuni Elementi di Ingegneria del Software Le pratiche dell Ingegneria del Software Tra le pratiche principali dell Ingegneria del Software troviamo: Metriche : forniscono valutazioni oggettive e misurabili del codice. Design Pattern : offrono dei modelli di progettazione utili e riciclabili. Linguaggi di Modellazione : offrono uno strumento per l analisi e la progettazione del Software. Esempio: i Diagrammi delle Classi UML Metodologie e Tool per lo Sviluppo : formalizzano la tecnica di sviluppo del Software, standardizzando lo sviluppo stesso, consentendo un più semplice coordinamento tra gli sviluppatori. Questa lezione è dedicata soprattutto ai Modelli di Sviluppo. A. Martinelli Modelli di Sviluppo 28 novembre / 72

5 Alcuni Elementi di Ingegneria del Software Metriche Alcuni esempi di metriche: LoC (Lines of Code) : ne esistono molte varianti Fattore di qualità : Q = LoC N Errori Critica alle Metriche LoC o simili Famose intorno agli anni 80, venivano usate per misurare la produttività degli sviluppatori e sono state estremamente criticate, perché: Poco significative. Favoriscono la ripetizione e la duplicazione di codice. Sfavoriscono interventi volti a migliorare la riusabilità del codice. Perchè: le metriche buone (come la Lack of Cohesion in Methods) sono quelle che l ingegnere usa per valutare la qualità del proprio operato, non quelle usate dai dirigenti per valutare la produttività degli ingegneri. A. Martinelli Modelli di Sviluppo 28 novembre / 72

6 Modelli di Sviluppo del Software Modelli di Sviluppo del Software Per agevolare l organizzazione ed il flusso di lavoro di grandi progetti è necessario definire un Modello di Sviluppo attraverso il quale vengono pianificate ed organizzate le attività di Sviluppo. La scelta del Modello di Sviluppo è vincolata: Dalle persone coinvolte Dai requisiti temporali (i.e. Pagamento alla consegna) Dalla dimensione del progetto Dalla tipologia di Progetto Dal periodo storico in cui il progetto è iniziato Sulle Metodologie di Sviluppo Il tema della Metodologia di Sviluppo è un tema molto caldo al giorno d oggi. Le Metodologie moderne sono talvolta complesse. C è una forte entropia sull argomento, perchè gli interessati si informano unicamente sul web. C è una diffusa ingenuità ed ignoranza sull argomento. A. Martinelli Modelli di Sviluppo 28 novembre / 72

7 Modelli di Sviluppo del Software Le Fasi dello Sviluppo Ogni Modello di Sviluppo ha come obiettivo quello di pianificare lo Sviluppo in fasi ben determinate Ogni fase avrà obiettivi specifici e farà uso di strumenti differenti. Il coordinamento delle fasi deve consentire di raggiungere l obiettivo finale che è la realizzazione di un progetto. Fasi tipiche dello sviluppo : Definizione dei Requisiti Analisi Codifica Validazione (Testing/Debugging) Rilascio A. Martinelli Modelli di Sviluppo 28 novembre / 72

8 Il Modello a Cascata Il Waterfall Model (Modello a Cascata) Il Modello a Cascata definisce un elenco di attività che devono essere svolte in sequenza. Il concetto di Modello a Cascata può essere applicato a differenti tipologie di Cascate. Il modello originale prevedeva questi passi: Definizione delle Specifiche Progettazione Implementazione Integrazione (con i dispositivi e gli altri sistemi con cui il progetto si deve integrare) Validazione: Testing(per verificare l esistenza di errori) e Debugging (per rimuove gli errori). Installazione. Manutenzione. A. Martinelli Modelli di Sviluppo 28 novembre / 72

9 Il Modello a Cascata Il Waterfall Model (Modello a Cascata) Specifiche Progetto Implementazione Verifica Manutenzione A. Martinelli Modelli di Sviluppo 28 novembre / 72

10 Il Modello a Cascata Il Waterfall Model : Difetti La fase di definizione delle Specifiche è Definita una volta per tutte. Questo rende impossibile rivedere le specifiche qualora durante lo sviluppo si presentassero delle complicazioni. La fase di progettazione avviene prima di tutto lo sviluppo; anche in questo caso è impossibile tornare sui propri passi qualora le cose non andassero come si deve La fase di Manutenzione è particolarmente critica. Il progetto è chiuso. Qualsiasi esigenza aggiuntiva diventa difficile da soddisfare in un secondo momento. A. Martinelli Modelli di Sviluppo 28 novembre / 72

11 Il Modello a Spirale Il Modello a Spirale Le critiche al Modello a Cascata suggeriscono un l uso di un Modello che consenta di tornare sui propri passi. Il Modello a Spirale complica quello a cascata con le seguenti considerazioni: Definito l elenco di specifiche e di funzionalità di un prodotto, gli sviluppatori selezionano alcuni obiettivi iniziali. Il processo di sviluppo, che qui è detto ciclo, prevede questi step: Definizione Specifiche Valutazione dei rischi legati allo sviluppo Implementazione Validazione (Testing-Debugging) Terminato il processo di Validazione, vengono considerati nuovi obiettivi e nuovi requisiti e si ricomincia da capo. Il Modello è a Spirale perchè ad ogni ciclo di sviluppo si produce una nuova versione del progetto, di dimensione crescente. Soprattutto nella fase iniziale, le versioni sono dette Prototipi, ed il processo di selezione dei requisiti nelle prime fasi viene detto Prototipazione. A. Martinelli Modelli di Sviluppo 28 novembre / 72

12 Il Modello a Spirale Il Modello a Spirale 3 4 Implementazione Validazione Rilascio Prototipo 2 Valutazione Rischi Requisiti 1 A. Martinelli Modelli di Sviluppo 28 novembre / 72

13 Il Modello a Spirale Il Modello a Spirale Il Modello a Spirale è in genere vantaggioso perchè consente di descrivere un processo un poco per volta. La fase di valutazione dei rischi rende più robusta la gestione del progetto La progettazione a piccoli passi consente di valutare più rapidamente eventuali difficoltà di sviluppo. Lo sviluppo un poco alla volta rende anche più facili le fasi di testing e debugging: E più facile definire test adeguati. E più facile trovare gli errori se si è modificato meno codice. A. Martinelli Modelli di Sviluppo 28 novembre / 72

14 Il Modello a Spirale Sviluppo Incrementale ed Iterativo Col Modello a Spirale spesso si introducono il concetto di Sviluppo Incrementale ed Iterativo. Sviluppo Iterativo Quando lo sviluppo segue delle iterazioni, ovvero è ciclico. Sviluppo Incrementale Quando lo sviluppo si basa su specifiche che vengono definite un po alla volta. I clienti/commissionanti od utenti possono giocare un ruolo fondamentale. In tutti i casi l uso dello Sviluppo Incrementale ed Iterativo favorisce lo sviluppo dei Prototipi che possono essere rilasciati al commissionante. Questo consente al commissionante di Rivalutare le specifiche, diventando parte integrande e fondamentale del processo di Sviluppo. A. Martinelli Modelli di Sviluppo 28 novembre / 72

15 Il Modello a Spirale Sviluppo Incrementale ed Iterativo Requirements, Testing Analisi, Design Implementation Initial Planning Deployment Evaluation Testing I Rilasci (Deployment) diventano un elemento fondamentale perchè consentono all utente finale di avere una valutazione in corso d opera del lavoro svolto. A. Martinelli Modelli di Sviluppo 28 novembre / 72

16 Il Modello a Spirale I Modelli Evolutivi e l Agile Software Development Modelli Evolutivi L Agile Software Development (in italiano si usa l espressione Metodologie Agili) rientra nei cosidetti Modelli Evolutivi, che si fondano sull idea centrale di coinvolgere il cliente o l utente, fornendogli continue nuove versioni in modo che possa essere partecipe nello sviluppo del progetto. L Obiettivo principale dell Agile Software Development è rendere il cliente il più soddisfatto possibile. Inoltre, si cerca di sostituire il modello di ciclo fisso, con qualcosa di più elastico e dinamico. A. Martinelli Modelli di Sviluppo 28 novembre / 72

17 Il Modello a Spirale Dal Manifesto dell Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. A. Martinelli Modelli di Sviluppo 28 novembre / 72

18 Il Modello a Spirale Dal Manifesto dell Agile Software Development Individuals and interactions Le Persone e le loro relazioni sono molto più importanti della strumentazione tecnica o degli strumenti che vengono utilizzati per produrre software. Working software E inutile realizzare del software difficile da utilizzare o poco comprensibile da capire e poi fornire tonnellate di documentazione. E molto meglio scrivere codice facile da capire e da usare. Nell Agile Software Development il cliente diventa un elemento partecipe del progetto e le considerazioni di cui sopra lo coinvolgono. Customer collaboration La partecipazione del cliente o del committente al progetto, aumenta la probabilità che sia soddisfatto del lavoro che viene svolto. La partecipazione avviene effettuando continui rilasci e dando quindi la possibilità al cliente di vedere il proprio progetto crescere. A. Martinelli Modelli di Sviluppo 28 novembre / 72

19 Il Modello a Spirale Responding to change (Operare per il cambiamento) Responding to change over following a plan : questo punto di vista ha un enorme importanza perché non seguire un piano significa evitare, del tutto o in parte, la fase di analisi. Cambiamento Tutti i sistemi cambiano e si evolvono nel tempo. I Clienti partecipano e contribuiscono con nuove idee, o propongono nuove caratteristiche. I cambiamenti in corso d opera rendono la manutenzione del Software difficile. Come deve avvenire la Progettazione per tenere conto del Cambiamento? A. Martinelli Modelli di Sviluppo 28 novembre / 72

20 Il Modello a Spirale Responding to change : Progettazione Agile La Progettazione Agile non avviene in un momento ben definito. Avviene continuamente, tutte le volte che nel codice si verifica uno dei seguenti problemi. Cambiamento Rigidità: il sistema è difficile da cambiare Fragilità: le modifiche causano malfunzionamenti Immobilità: i sorgenti sono difficili da riutilizzare Viscosità: i cambiamenti compatibili con l architettura sono difficili da realizzare Complessità inutile: il sistema è più complicato del necessario Ripetizioni inutili: i sorgenti contengono codice simile Opacità: la funzione dei moduli non è facilmente comprensibile Nello Sviluppo Agile non si fa mai progettazione, ma si fa piuttosto Riprogettazione (Refactoring) A. Martinelli Modelli di Sviluppo 28 novembre / 72

21 Il Modello a Spirale Responding to Change : Modularità Fin dall inizio della storia della programmazione si è cercato di definire il concetto di Modularità Modularità Lo studio di metodologie agili ha contribuito a migliorare il concetto di Modularità, soprattutto per quanto riguarda la programmazione ad oggetti Il Refactoring aiuta ad ottenere moduli con una elevata Coesione ed un Basso livello di Accoppiamento, e a definire astrazioni, in modo da rende gli oggetti più riciclabili. E l Agile Software Development che ha introdotto i principi SOLID, oggigiorno considerati principi generali di una buona programmazione ad oggetti. Perché è fondamentale nell Agile Software Development rispondere ai cambiamenti di specifiche: Se i moduli sono coesi, sono tanti e piccoli ed è più facile fare le modifiche solo dove occorre. Se i moduli sono disaccoppiati, le modifiche non si propagheranno nel codice. I principi SOLID aiutano a mantenere alta la Coesione e basso l Accoppiamento. A. Martinelli Modelli di Sviluppo 28 novembre / 72

22 Il Modello a Spirale Extreme Programming (XP) (1/4) Formulato da Kent Beck, Ward Cunningham e Ron Jeffries intorno al 1999, Istituisce su una serie di pratiche per lo Sviluppo Agile: Pair Programming Planning Game Test-Driven Development Whole-Team Continuous Integration Refactoring o Design Improvement Small Releases Coding Standards Collective Code Ownership Symple Design System Metaphor Sustainable Pace A. Martinelli Modelli di Sviluppo 28 novembre / 72

23 Il Modello a Spirale Extreme Programming (XP) (2/4) Pair Programming Due Programmatori lavorano allo sviluppo del codice. Questa pratica ha lo svantaggio di aumentare i tempi di sviluppo, ma diminuisce la probabilità che durante lo sviluppo vengano fatti errori. Planning Game La Pianificazione non avviene una volta per tutte, ma avviene continuamente e sulla base di interventi anche del cliente, un po come in un gioco dove il cliente fa la prima mossa, il programmatore lo segue e così via fino a progetto realizzato Test-Driven Development I Test vengono realizzati prima ancora di scrivere codice. Questa prassi ha l enorme vantaggio di aiutare a capire come devono essere sviluppate certe cose, oltre a fornire una base stabile per le fasi di debugging. Whole-Team L Utente finale del sistema DEVE contribuire ed essere parte integrante dello sviluppo, la sua opinione conta più di ogni altra idea su come il progetto debba andare avanti. A. Martinelli Modelli di Sviluppo 28 novembre / 72

24 Il Modello a Spirale Extreme Programming (XP) (3/4) Continuous Integration I cambiamenti vengono integrati continuamente nel codice, e mai rimandati ad una successiva fase di progettazione. Refactoring La riscrittura del codice che non cambia la funzionalità del programma, è usata perchè rende il codice più snello, generale e quindi più semplice da integrare e riutilizzare nel tempo. Small Releases Continue consegne rendono il cliente e l utente sia più responsabile del lavoro che viene svolto, sia più fiducioso. Coding Standards Il codice dovrebbe sempre seguire delle regole standard definite fin dall inizio del progetto A. Martinelli Modelli di Sviluppo 28 novembre / 72

25 Il Modello a Spirale Extreme Programming (XP) (4/4) Collective Code Ownership Tutti sono responsabili di tutto. Il codice è condiviso ed appartiene a tutti. Symple Design Nella progettazione, le soluzioni più semplici dovrebbero essere sempre le migliori System Metaphor Usare delle metafore su come il sistema funziona. Le Metafore possono essere viste come storie (Users Stories) che forniscono informazioni sul sistema, ma che dovrebbero farlo in modo più semplice da capire per tutti. Sustainable Peace Non fare straordinare, non eccedere, fare pause. I programmatori quando sono freschi e riposati fanno meno errori... A. Martinelli Modelli di Sviluppo 28 novembre / 72

26 Il Modello a Spirale Un tipico ciclo di sviluppo nell Extreme Programming Stima rilascio Iterazione con l'utente iterazione Acceptance Test ogni giorno Pianifica Rilascio Pianifica Iterazione Test Driven Development continuamente Implementazione Refactoring Integrazione Working Software A. Martinelli Modelli di Sviluppo 28 novembre / 72

27 Il Modello a Spirale Il Rilascio del Software Rilascio (Deployment) Con rilascio si intende la generazione di una versione che viene messa a disposizione degli utenti finali. Lo Sviluppo Incrementale ed Iterativo e l Extreme Programming prevedono un meccanismo a rilasci continui che consente l interazione con l Utente Finale L utente finale diventa partecipe allo sviluppo del software Ma chi sono gli utenti? Nei software commerciali o comunque pensati per il grande pubblico, gli sviluppatori con chi dovrebbero andare a parlare? A. Martinelli Modelli di Sviluppo 28 novembre / 72

28 Il Modello a Spirale Il Rilascio del Software: le Versioni Il Deployment genera Versioni. Quando l Utente è un commissionante, o comunque una persona fisica Si usa il termine Milestone per indicare un insieme di specifiche ed una data entro cui devono essere raggiunte. Fornitore e commissionante si accordano sulle Milestone valide, e prevedono un rilascio a testimonianza di ogni Milestone. Quando l Utente è un gruppo e non c è una persona fisica a cui rivolgersi Una possibilità è pagare o coinvolgere degli utenti tipo per contribuire allo sviluppo. L avvento di internet ha tuttavia stravolto il modo in cui certi progetti vengono seguiti. I Deployement vengono fatti in rete. Gli utenti possono contribuire attraverso sistemi con chat e dibattiti in rete. A. Martinelli Modelli di Sviluppo 28 novembre / 72

29 Il Modello a Spirale Il Rilascio del Software: Tipologie di Rilascio La pratica di rilasciare versioni in rete ha contribuito alla nascita di una terminologia per la classificazione dei rilasci: Pre-Alpha Una versione Pre-Alpha è una versione esemplificativa delle funzionalità che il programma potrebbe avere. Alpha Una versione Alpha è una versione del programma non completa, ma con alcune cose funzionanti Beta Una versione Beta è una versione di Test. Le versioni Beta dovrebbero avere tutte o quasi tutte le funzionalità già implementate. Versione Candidata per il rilascio (talvolta Gamma o Delta) Una Versione che si suppone essere definitiva. E tuttavia noto che questi termini sono spesso usati in modo approssimativo. A. Martinelli Modelli di Sviluppo 28 novembre / 72

30 Il Modello a Spirale Il Problema delle Licenze (Copyright) (cenni)... la diffusione in rete del software ha anche contribuito ad alimentare il dibattito sul problema dei Diritti Legali correlati al software I Diritti sul Software Il software viene legalmente considerato come Bene Intellettuale. L Autore è proprietario di qualsiasi diritto ed è suo diritto decidere chi è come L insieme di regole fornite dall Autore è detto licenza (copyright). In Teoria ognuno potrebbe scriversi la propria licenza In Pratica esistono delle Licenze preconfezionate ed è consigliabile fare sempre affidamente ad una di esse. A. Martinelli Modelli di Sviluppo 28 novembre / 72

31 Il Modello a Spirale Il Problema del Copyright : le licenze Open (cenni) CopyLeft Nel Mondo delle Licenze stanno assumendo una rilevanza sempre più grande le Licenze Open Source, che rilasciano. Il Software Open si è diffuso soprattutto grazie alla possibilità di rilasciare in rete il codice Sorgente. L idea del Software Open è quella di consentire a chiunque di personalizzare un prodotto software esistente. Licenza GNU GPL (General Public License) Consente a chiunque di modificare il codice sorgente di un programma, ma obbliga a rilasciare le versioni modificate con licenza GNU GPL. Licenza GNU LGPL (Lesser General Public License) Consente a chiunque di modificare il codice sorgente di un programma, e non da obblighi sui rilasci. A. Martinelli Modelli di Sviluppo 28 novembre / 72

32 Il Modello a Spirale La Validazione mediante i Test La Validazione del Codice La Validazione del Codice è l insieme di attività che vengono svolte per verificare la validatà del codice. Alcune tipologie di attività specifiche della Validazione: Test Porzioni di codice dedicate alla verifica di alcune caratteristiche di un sistema. Il Test deve consentire di definire con chiarezza se la funzionalità sta operando correttamente. Test Unitari Test dedicati alla verifica specifica del funzionamento di un componente. Test Automatici Gruppi di Test che vengono validati in automatico, riducendo di molto il tempo di validazione. Debugging Attività di rimozione degli errori dal codice. A. Martinelli Modelli di Sviluppo 28 novembre / 72

33 Test Driven Development Il Test Driven Development Test Driven Development (TDD) Il TDD è il processo di Sviluppo del Software che usa i Test come strumento di Pianificazione e Sviluppo. I Test si realizzano prima di ogni altra cosa Il TDD: Si Basa sull identificazione/valutazione/invenzione di casi pratici di utilizzo di un sistema per capire come deve essere realizzato. Aiuta la pianificazione ad oggetti, perchè dato un modulo consente di scrivere immediatamente codice che descrive come dovrà essere utilizzato Consente agli sviluppatori di riflettere sulle funzionalità prima ancora di implementarle Gli sviluppatori testano più di frequente e scoprono i problemi in anticipo; questo rende più semplice la risoluzione dei problemi. Nei contesti in cui questo è possibile, fa un forte utilizzo di Test Automatici e dei Test Unitari A. Martinelli Modelli di Sviluppo 28 novembre / 72

34 Test Driven Development Nota sui metodi di Test Test Driven Development, Testing Unitario e Testing Automatico sono tre tecniche di Testing distinte, ognuna con un obiettivo specifico: Test Driven Development: fornisce una solida guida alla progettazione del codice basata su esempi. Testing Unitario: spezza i test in test piccoli, in modo che sia più facile individuare l anello debole della catena. Testing Automatico: rende molto più veloce la verifica/validazione dei test (ed è apprezzabile nel caso di test unitari). Data l importanza di tutti e tre i contributi, di solito le 3 tecniche di testing vengono combinate tra di loro, ma questo è a discrezione del team di sviluppo e può dipendere dalla tipologia di progetti presi in considerazione. A. Martinelli Modelli di Sviluppo 28 novembre / 72

35 Test Driven Development Test Driven Development: Esempio di Test Unitario 1 Test dell Area di un Rettangolo public class TestRect{ Rect rect=new Rect (); public void testarea (){ } } rect. setwidth (10); rect. setheight (20); assertequals (200, rect. getarea ()); Questo test è : Unitario : perché esiste un metodo di test specifico per testare il metodo getarea, all interno della classe TestRect che contiene tutti i test dei metodi di Rect Automatico : perché verifica in automatico se la condizione di validità del test. A. Martinelli Modelli di Sviluppo 28 novembre / 72

36 Test Driven Development Test Driven Development: Esempio di Test Unitario 2 Test su un Gioco che gestisce un Labirinto... public void connect( int room1, int room2, String move){//todo } public void setplayerroom( int room){//todo }... public void testmove(){ LabGame g=new LabGame (); g. connect(4,5, E ); g. setplayerroom (4); g. east (); asssertequals (5,g. getplayerroom ()); } I metodi di un modulo vengono progettati mediante i test, e posso essere aggiunti nel modulo in via temporanea con implementazioni parziali ed incomplete. Il vantaggio del Test Driven Development è quello di mettere in luce dall inizio il comportamento che dovranno avere i moduli, nel senso che si chiarisce da subito come si intende usarli. A. Martinelli Modelli di Sviluppo 28 novembre / 72

37 Debugging Bug e Debugging Bug Il termine Bug (Baco in italiano) sta ad indicare un problema o un errore in un programma. E ragionevolmente errato definire bug un errore di compilazione. I bug sono unicamente errori comportamentali che si possono riscontrare esclusivamente a run-time. Il Debugging può essere visto come l insieme di attività che servono a rimuovere i Bug dal Codice: Il Debugging richiede esperienza: i Bug si trovano più facilmente quando rientrano in una categoria di problemi noti e che si verificano di frequente. Esistono tuttavia alcune tecniche e strumenti utili che vengono in aiuto quando il programmatore non è in grado di identificare i problemi sulla base della propria esperienza. Nota importante L Attività di Debugging è una della attività più costose in termini di tempo ed energie che un qualsiasi progetto software debba affrontare. A. Martinelli Modelli di Sviluppo 28 novembre / 72

38 Debugging Tecniche di Debugging : Circoscrivere il problema La Circoscrizione del Problema è uno degli aspetti più critici del Debugging. Spesso infatti, l errore si trova in una o poche righe di codice ed i Sintomi sono tutt altro che Chiari. L Esperienza può aiutare a definire i punti del codice che possono essere causa di un problema più alla svelta. Tuttavia, spesso: E indispensabile conoscere la struttura del programma, la documentazione può venire in aiuto. E necessario utilizzare delle tecniche che consentano di andare a caccia dell errore. A. Martinelli Modelli di Sviluppo 28 novembre / 72

39 Debugging Tecniche di Debugging : Logging Il Logging è il meccanismo di Debugging più semplice ed in molti casi il più efficace. Consiste nello stampare dei messaggi utili attraverso strumenti di stampa come: Stampa sullo stream di Output: printf o System.out Stampa sullo stream di Errore: System.err Stampa su Strumenti di Log specifici della piattaforma Stampa su File Vantaggi: Si tiene traccia dell ordine con cui certi eventi si verificano o con cui sono fatte certe chiamate.... ma i messaggi devono essere riportati in modo sincrono. NOTA Lo Stream di output e di errore sono stream separati. Quando stampati sulla stessa console, i messaggi non sono necessariamente sincronizzati. A. Martinelli Modelli di Sviluppo 28 novembre / 72

40 Debugging Tecniche di Debugging : Debugging ad Eccezioni La Gestione delle Eccezioni è di per sé un Elemento fondamentale per il Debugging. Fornisce uno strumento per il trattamento di casi eccezionali che possono essere rilevati in modo più accurato. (In Java) fornisce l elenco delle chiamate che hanno generato il problema. (In Eclipse) consente di arrivare immediatamente alla righe di codice che hanno generato il problema con un click. Un Uso Pratico La gestione delle Eccezioni può essere sfruttata per capire la causa di un problema, quando è chiaro che il problema è dovuto ad un passaggio di dati errato. L uso delle RunTimeException può essere sfruttato per costringere il programma a stampare la traccia delle chiamate che generano un problema noto all interno di un metodo. A. Martinelli Modelli di Sviluppo 28 novembre / 72

41 Debugging Modalità di Debugging Molti programmi di CASE come Eclipse sono forniti di una modalità di Debugging: Durante la modalità di Debugging, l esecuzione del Codice viene monitorata. Il programmatore è in grado di recuperare informazioni aggiuntive e di controllare il flusso del programma. Caratteristiche della modalità di Debugging: Consente di ottenere informazioni molto precise e dettagliate con facilità. Richiede tuttavia di aver già capito dove si trova il problema. Un Consiglio La Modalità di Debugging rallenta l esecuzione, e andrebbe usata solo una volta che il problema è stato significativamente circoscritto. A. Martinelli Modelli di Sviluppo 28 novembre / 72

42 Debugging Elementi ed Operazioni tipiche della Modalità di Debugging BreakPoint Un BreakPoint è un punto del codice in cui si vuole mettere in pausa (sospendere) l esecuzione del programma. Definito il BreakPoint e lanciato il programma, la Modalità di Debugging fermerà l esecuzione non appena raggiunto il BreakPoint. E possibile rilanciare il programma fino al BreakPoint successivo. Step by Step I Debugger consentono varie tipologie di modalità a Step (Passi), che consentono di eseguire il codice riga per riga; un pulsante di controllo consente di passare alla riga successiva. Solitamente, è più utile usarla dopo un BreakPoint che dall inizio del programma. Monitoring delle Variabili I Debugger sono muniti di pannelli che elencano le variabili utilizzate all interno di un metodo ed i loro valori. Questi pannelli giocano un ruolo fondamentale nel documentare lo stato della situazione quando si arriva ad un BreakPoint o nei passi di una esecuzione a Step. A. Martinelli Modelli di Sviluppo 28 novembre / 72

43 Refactoring Il Refactoring Il Refactoring è una attività il cui obiettivo è quello di migliorare la qualità del codice senza alterarne le funzionalità. Il refactoring contempla operazioni come: La scrittura di nuovi metodi La scrittura di nuove classi e la frammentazione di classi preesitenti. L introduzione di interfacce e di relazioni di ereditarietà. La ridenominazione di alcuni attributi, metodi, variabili. Lo spostamento di attributi e metodi da una classe ad un altra. L introduzione di Design Pattern Solitamente questi interventi si effettuano con l intento di realizzare codice di programmazione modulare, molto spesso nel rispetto dei principi SOLID. Code Smell Un Code Smell è un difetto specifico del codice. I Code Smell sono strumenti molto importanti in fase di Refactoring, perché: più semplici da identificare precisi nell indicare le operazioni di refactoring risolutive. A. Martinelli Modelli di Sviluppo 28 novembre / 72

44 Refactoring I Code Smell Si riportano solo alcuni Code Smell molto significativi. Codice Duplicato Blocchi di codice duplicato o parzialmente duplicato in più punti del codice. Cause: Copia e Incolla Soluzioni L Estrazione di Metodo, cioè la generazione di un metodo contenente il codice duplicato. Metodi Troppo Lunghi Un metodo è molto lungo, e quindi di difficile lettura. Una linea guida da considerare è che un metodo è lungo se supera le 10 righe di codice (anche se ovviamente non è vero in generale). Soluzioni L Estrazione di Metodo, cioè la generazione di uno o più metodi contentente parte del codice del metodo lungo. A. Martinelli Modelli di Sviluppo 28 novembre / 72

Introduzione all Ingegneria del Software

Introduzione all Ingegneria del Software Introduzione all Ingegneria del Software Alessandro Martinelli alessandro.martinelli@unipv.it 10 Dicembre 2013 Introduzione all Ingegneria del Software Ingegneria del Software Modelli di Sviluppo del Software

Dettagli

Ingegneria del Software - Il Ciclo Lungo

Ingegneria del Software - Il Ciclo Lungo Ingegneria del Software - Il Ciclo Lungo Alessandro Martinelli alessandro.martinelli@unipv.it 10 Marzo 2014 Il Ciclo Lungo Il Versioning e la Condivisione di Codice Organizzazione dei Pacchetti La Modellazione

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Processi di Sviluppo Agile Origini dello Sviluppo Agile Proposta di un gruppo di sviluppatori che rilevava una serie di criticità degli approcci convenzionali: Troppa rigidità dei

Dettagli

Architetture Applicative

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

Dettagli

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

Gestione dello sviluppo software Modelli Agili

Gestione dello sviluppo software Modelli Agili Università di Bergamo Facoltà di Ingegneria GESTIONE DEI SISTEMI ICT Paolo Salvaneschi A4_3 V1.1 Gestione dello sviluppo software Modelli Agili Il contenuto del documento è liberamente utilizzabile dagli

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

Poca documentazione: uso di Story Card e CRC (Class Responsibility Collabor) Collaborazione con il cliente rispetto alla negoziazione dei contratti

Poca documentazione: uso di Story Card e CRC (Class Responsibility Collabor) Collaborazione con il cliente rispetto alla negoziazione dei contratti Sviluppo Agile [Cockburn 2002] Extreme Programming (XP) [Beck 2000] Sono più importanti auto-organizzazione, collaborazione, comunicazione tra membri del team e adattabilità del prodotto rispetto ad ordine

Dettagli

Prova Finale Controllo delle versioni

Prova Finale Controllo delle versioni Prova Finale Controllo delle versioni 1 Controllo delle versioni: a cosa serve? Tenere traccia dei cambiamenti Semplificare la collaborazione Gestione di diverse diramazioni (branch) di sviluppo Differen3

Dettagli

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

Agile. mercoledì, 1 luglio 2015, 3:05 p. Prof. Tramontano docente Federico II ingegneria del software. Sviluppo Agile: metaprocesso

Agile. mercoledì, 1 luglio 2015, 3:05 p. Prof. Tramontano docente Federico II ingegneria del software. Sviluppo Agile: metaprocesso Agile mercoledì, 1 luglio 2015, 3:05 p. Prof. Tramontano docente Federico II ingegneria del software Sviluppo Agile: metaprocesso Molti progetti software falliscono Sì parte dagli anni 2000 Millennium

Dettagli

Il diagramma dei casi d uso

Il diagramma dei casi d uso Il diagramma dei casi d uso Laboratorio di Ingegneria del Software Prof. Paolo Ciancarini Dott. Sara Zuppiroli A.A. 2010/2011 Lab di Ingegneria del Software () Il diagramma dei casi d uso A.A. 2010/2011

Dettagli

Rational Unified Process Introduzione

Rational Unified Process Introduzione Rational Unified Process Introduzione G.Raiss - A.Apolloni - 4 maggio 2001 1 Cosa è E un processo di sviluppo definito da Booch, Rumbaugh, Jacobson (autori dell Unified Modeling Language). Il RUP è un

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

extreme Programming in un curriculum universitario

extreme Programming in un curriculum universitario extreme Programming in un curriculum universitario Lars Bendix Department of Computer Science Lund Institute of Technology Sweden Università di Bologna, 18 giugno, 2002 Extreme Programming On-site customer

Dettagli

Ingegneria del Software - Il Ciclo Breve

Ingegneria del Software - Il Ciclo Breve Ingegneria del Software - Il Ciclo Breve Alessandro Martinelli alessandro.martinelli@unipv.it 13 Gennaio 2013 Il Ciclo Breve Test Driven Development Debugging Refactoring Il Ciclo Breve Fondamenti di Informatica

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

metodologie metodologia una serie di linee guida per raggiungere certi obiettivi

metodologie metodologia una serie di linee guida per raggiungere certi obiettivi metodologie a.a. 2003-2004 1 metodologia una serie di linee guida per raggiungere certi obiettivi più formalmente: un processo da seguire documenti o altri elaborati da produrre usando linguaggi più o

Dettagli

13. Ciclo di Vita e Processi di Sviluppo

13. Ciclo di Vita e Processi di Sviluppo 13. Ciclo di Vita e Processi di Sviluppo come posso procedere nello sviluppo? Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 13. Ciclo di Vita e Processi

Dettagli

UML e (R)UP (an overview)

UML e (R)UP (an overview) Lo sviluppo di sistemi OO UML e (R)UP (an overview) http://www.rational.com http://www.omg.org 1 Riassumento UML E un insieme di notazioni diagrammatiche che, utilizzate congiuntamente, consentono di descrivere/modellare

Dettagli

Ingegneria del Software - Il Ciclo Breve

Ingegneria del Software - Il Ciclo Breve Ingegneria del Software - Il Ciclo Breve Alessandro Martinelli alessandro.martinelli@unipv.it 13 Gennaio 2013 Il Ciclo Breve Test Driven Development Debugging Refactoring Il Ciclo Breve Fondamenti di Informatica

Dettagli

Analisi dei Requisiti

Analisi dei Requisiti Analisi dei Requisiti Pagina 1 di 16 Analisi dei Requisiti Indice 1 - INTRODUZIONE... 4 1.1 - OBIETTIVO DEL DOCUMENTO...4 1.2 - STRUTTURA DEL DOCUMENTO...4 1.3 - RIFERIMENTI...4 1.4 - STORIA DEL DOCUMENTO...4

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

Sistemi Informativi DERIVAZIONE DEI REQUISITI FUNZIONALI. Obiettivi Specifica dei Requisiti Assembly Lines Esercizi

Sistemi Informativi DERIVAZIONE DEI REQUISITI FUNZIONALI. Obiettivi Specifica dei Requisiti Assembly Lines Esercizi Sistemi Informativi DERIVAZIONE DEI REQUISITI FUNZIONALI Obiettivi Specifica dei Requisiti Assembly Lines Esercizi Obiettivi Nelle lezioni precedenti abbiamo descritto come modellare i requisiti funzionali

Dettagli

Metodologie Agili per lo sviluppo di applicazioni Internet Distribuite. Agile Group DIEE, Università di Cagliari www.agile.diee.unica.

Metodologie Agili per lo sviluppo di applicazioni Internet Distribuite. Agile Group DIEE, Università di Cagliari www.agile.diee.unica. Metodologie Agili per lo sviluppo di applicazioni Internet Distribuite Agile Group DIEE, Università di Cagliari www.agile.diee.unica.it Agile Group Agile Group, gruppo di ricerca su Ingegneria del SW,

Dettagli

BiblioTech - Personal Digital Library

BiblioTech - Personal Digital Library Albana Gaba Alessandro Pegoraro Mirco Bocedi Fabio Giuseppe Strozzi Gruppo 8 Obiettivo Creare un software efficiente per la catalogazione di documenti digitali in categorie personalizzabili dall utente.

Dettagli

Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9

Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9 Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9 Lezione 15: P.M.: metodologie di progetto Prof.ssa R. Folgieri email: folgieri@dico.unimi.it folgieri@mtcube.com 1 Modelli di conduzione

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

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

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A.

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A. Tutorial utilizzo SVN su piattaforma S.A. Uno dei requisiti principali dello sviluppo di progetti in Team è la necessità di avere uno spazio nel quale condividere il progetto con tutti i TeamMates. Subversion

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

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

Lo Studio di Fattibilità

Lo Studio di Fattibilità Lo Studio di Fattibilità Massimo Mecella Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza Definizione Insieme di informazioni considerate necessarie alla decisione sull investimento

Dettagli

2. Ciclo di Vita e Processi di Sviluppo

2. Ciclo di Vita e Processi di Sviluppo 2. Ciclo di Vita e Processi di Sviluppo come posso procedere nello sviluppo? Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 2. Ciclo di Vita e Processi di

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

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

Gruppo 4: Gelmi Martina, Morelato Francesca, Parisi Elisa. La mia scuola ha un sito Web

Gruppo 4: Gelmi Martina, Morelato Francesca, Parisi Elisa. La mia scuola ha un sito Web Gruppo 4: Gelmi Martina, Morelato Francesca, Parisi Elisa La mia scuola ha un sito Web Presentazione del corso Contenuti e obiettivi del corso Imparare a lavorare con le metodologie dell ingegneria del

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

Server Galileo. http://galileo.dmi.unict.it/

Server Galileo. http://galileo.dmi.unict.it/ Server Galileo http://galileo.dmi.unict.it/ Gestione progetti Wiki Subversion Iscrizione a Galileo Per registrarsi è sufficiente iscriversi da questa pagina: https://galileo.dmi.unict.it/iscrizioni/ L'account

Dettagli

Università degli Studi di Salerno Ingegneria del Software: Tecniche Avanzate

Università degli Studi di Salerno Ingegneria del Software: Tecniche Avanzate Università degli Studi di Salerno Ingegneria del Software: Tecniche Avanzate Mystic Pizza Gestione Pizzeria Scheda di Progetto Version 1.0 Data 19/03/2007 Indice degli argomenti 1. Introduzione 3 a. Scenario

Dettagli

Ciclo di vita del progetto

Ciclo di vita del progetto IT Project Management Lezione 2 Ciclo di vita del progetto Federica Spiga A.A. 2009-2010 1 Ciclo di vita del progetto Il ciclo di vita del progetto definisce le fasi che collegano l inizio e la fine del

Dettagli

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT IT PROCESS EXPERT 1. CARTA D IDENTITÀ... 2 2. CHE COSA FA... 3 3. DOVE LAVORA... 4 4. CONDIZIONI DI LAVORO... 5 5. COMPETENZE... 6 Quali competenze sono necessarie... 6 Conoscenze... 8 Abilità... 9 Comportamenti

Dettagli

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi. PROGETTO SeT Il ciclo dell informazione Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi. Scuola media Istituto comprensivo di Fagagna (Udine) Insegnanti referenti: Guerra Annalja, Gianquinto

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

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

MDaemon e Outlook Connector for MDaemon

MDaemon e Outlook Connector for MDaemon MDaemon e Outlook Connector for MDaemon Introduzione...2 Cos'è il groupware...2 Che cosa significa groupware?...2 Cos è WorldClient...2 MDaemon e l evoluzione delle funzionalità groupware...3 Nuove funzionalità

Dettagli

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere. UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d

Dettagli

Gestione completa delle prestazioni

Gestione completa delle prestazioni Gestione completa delle prestazioni Funziona anche con Windows XP e Windows Vista 2013 Un applicazione agile e potente per la messa a punto e la manutenzione delle prestazioni del vostro computer. Download

Dettagli

Clickomania con Blockly

Clickomania con Blockly Clickomania con Blockly Violetta Lonati Sommario Clickomania è un solitario, noto anche come Chain Shot! o Same Game. Il campo di gioco è costituito da una parete inizialmente coperta di mattoni, uno per

Dettagli

Guida rapida all uso di Moodle per i docenti

Guida rapida all uso di Moodle per i docenti Guida rapida all uso di Moodle per i docenti Avvertenze: 1) Questo NON è un manuale completo di Moodle. La guida è esplicitamente diretta a docenti poco esperti che devono cimentarsi per la prima volta

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

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Progettazione del Software A.A.2008/09

Progettazione del Software A.A.2008/09 Laurea in Ing. Informatica ed Ing. dell Informazione Sede di latina Progettazione del Software A.A.2008/09 Domenico Lembo* Dipartimento di Informatica e Sistemistica A. Ruberti SAPIENZA Università di Roma

Dettagli

LA PIANIFICAZIONE DELLE ATTIVITÀ AZIENDALI E.R.P. (ENTERPRISE RESOURCE PLANNING)

LA PIANIFICAZIONE DELLE ATTIVITÀ AZIENDALI E.R.P. (ENTERPRISE RESOURCE PLANNING) LA PIANIFICAZIONE DELLE ATTIVITÀ AZIENDALI E.R.P. (ENTERPRISE RESOURCE PLANNING) L IMPATTO SULLA GESTIONE LA MISURAZIONE DELL IMPATTO IL SUPPORTO ALLA CREAZIONE DEL VALORE L INTEGRAZIONE ESIGENZE DEL BUSINESS

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)

Dettagli

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

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC 12207. Durante le attività di sviluppo del software applicativo è spesso utilizzato un ciclo di vita incrementale il cui schema di processo è sintetizzato nella figura seguente. In legenda sono riportate le fasi

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

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione 4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:

Dettagli

PTDR Disaster Recovery for oracle database

PTDR Disaster Recovery for oracle database PTDR Disaster Recovery for oracle database INTRODUZIONE... 3 INTRODUZIONE... 3 I MECCANISMI BASE DI ORACLE DATA GUARD... 3 COSA SONO I REDO LOG?... 4 IMPATTO SULL'ARCHITETTURA COMPLESSIVA... 4 CONCLUSIONI...

Dettagli

SISTEMI OPERATIVI DISTRIBUITI

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

Dettagli

Progetto di Informatica III. Introduzione al corso

Progetto di Informatica III. Introduzione al corso Progetto di Informatica III Introduzione al corso Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Contatti Obiettivo Natura Argomenti Organizzazione Materiale didattico Modalità

Dettagli

OGGETTO DELLA FORNITURA...4

OGGETTO DELLA FORNITURA...4 Gara d appalto per la fornitura di licenze software e servizi per la realizzazione del progetto di Identity and Access Management in Cassa Depositi e Prestiti S.p.A. CAPITOLATO TECNICO Indice 1 GENERALITÀ...3

Dettagli

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A. 2004-2005. Marina Mongiello

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A. 2004-2005. Marina Mongiello Corso di Laurea Triennale in Ingegneria Informatica Corso di Ingegneria del A. A. 2004-2005 1 La progettazione È applicata indipendentemente dal modello di processo utilizzato. Parte dal punto in cui sono

Dettagli

Strumenti per lo sviluppo del software

Strumenti per lo sviluppo del software Lo sviluppo del software Strumenti per lo sviluppo del software Lo sviluppo del software è l attività centrale del progetto e ha lo scopo di produrre il codice sorgente che, una volta compilato e messo

Dettagli

Usabilità dei Siti Web

Usabilità dei Siti Web Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Usabilità dei Siti Web Prof.ssa E. Gentile a.a. 2011-2012 Usabilità La efficacia, efficienza e soddisfazione con cui

Dettagli

Ciclo di vita del software

Ciclo di vita del software Ciclo di vita del software Nel corso degli anni, nel passaggio dalla visione artigianale alla visione industriale del software, si è compreso che il processo andava formalizzato attraverso: un insieme

Dettagli

REQUISITI FUNZIONALI DELLE PROCEDURE ELETTRONICHE PER GLI APPALTI PUBBLICI NELL UE VOLUME I

REQUISITI FUNZIONALI DELLE PROCEDURE ELETTRONICHE PER GLI APPALTI PUBBLICI NELL UE VOLUME I REQUISITI FUNZIONALI DELLE PROCEDURE ELETTRONICHE PER GLI APPALTI PUBBLICI NELL UE VOLUME I GENNAIO 2005 eprocurement pubblico Clausola di esclusione della responsabilità Commissione europea Original document

Dettagli

Software Testing. Lezione 2 Livelli di test. Federica Spiga. federica_spiga@yahoo.it. A.A. 2010-2011 Autori: F.Rabini/F.Spiga

Software Testing. Lezione 2 Livelli di test. Federica Spiga. federica_spiga@yahoo.it. A.A. 2010-2011 Autori: F.Rabini/F.Spiga Software Testing Lezione 2 Livelli di test Federica Spiga federica_spiga@yahoo.it A.A. 2010-2011 Autori: F.Rabini/F.Spiga 1 2 Livelli di test Unit Testing Integration Testing System Testing Unit Testing

Dettagli

Introduzione. Il software e l ingegneria del software. Marina Mongiello Ingegneria del software 1

Introduzione. Il software e l ingegneria del software. Marina Mongiello Ingegneria del software 1 Introduzione Il software e l ingegneria del software Marina Mongiello Ingegneria del software 1 Sommario Il software L ingegneria del software Fasi del ciclo di vita del software Pianificazione di sistema

Dettagli

Piattaforma ilearn di Hiteco. Presentazione Piattaforma ilearn

Piattaforma ilearn di Hiteco. Presentazione Piattaforma ilearn Presentazione Piattaforma ilearn 1 Sommario 1. Introduzione alla Piattaforma Hiteco ilearn...3 1.1. Che cos è...3 1.2. A chi è rivolta...4 1.3. Vantaggi nell utilizzo...4 2. Caratteristiche della Piattaforma

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

Progetto software 2008/2009. Docente Marianna Nicolosi Asmundo

Progetto software 2008/2009. Docente Marianna Nicolosi Asmundo Progetto software 2008/2009 Docente Marianna Nicolosi Asmundo Obiettivi del corso Coinvolgervi nello sviluppo di un progetto software in cui mettere a frutto le conoscenze che avete acquisito durante i

Dettagli

Testo Esercizio Sommario Note relative alla modellazione UML. Note relative al testo dell esercizio.

Testo Esercizio Sommario Note relative alla modellazione UML. Note relative al testo dell esercizio. Testo Esercizio Si consideri un sistema per la gestione di un magazzino di un negozio scelto a piacere dal candidato Il sistema è in grado di gestire le seguenti operazioni: Arrivo di nuovi prodotti; Controllo

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

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

SISTEMA E-LEARNING INeOUT

SISTEMA E-LEARNING INeOUT SISTEMA E-LEARNING INeOUT AMBIENTE OPERATIVO 1 Premesse metodologiche La complessità di un sistema informatico dipende dall aumento esponenziale degli stati possibili della sua architettura. Se è vero

Dettagli

2. Strutture dei Sistemi Operativi

2. Strutture dei Sistemi Operativi 1 2. Strutture dei Sistemi Operativi Quali servizi un generico sistema operativo mette a disposizione degli utenti, e dei programmi che gli utenti vogliono eseguire? interfaccia col sistema operativo stesso

Dettagli

Tutorial di FPM c. Poderico Luigi

Tutorial di FPM c. Poderico Luigi Poderico Luigi Introduzione Per rendere più agevole l utilizzo di FPM c, specialmente per chi lo usa per la prima volta, proponiamo di seguito un esempio d utilizzo del programma. Partendo dalla formulazione

Dettagli

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012 Sapienza Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica Corso di Laurea in Ingegneria dei Sistemi Informatici

Dettagli

PROGETTAZIONE B.I.M.

PROGETTAZIONE B.I.M. PROGETTAZIONE B.I.M. Building Information Modeling INTRODUZIONE: Negli ultimi anni, in architettura, ingegneria e nel mondo delle costruzioni è avvenuto un radicale cambiamento negli strumenti e nei metodi

Dettagli

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

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

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

Dettagli

Processo di Sviluppo delle Applicazioni

Processo di Sviluppo delle Applicazioni Processo di Sviluppo delle Applicazioni La realizzazione di un applicazione come Vivere Ateneo App Domenico Zarcone Ognuno ha il suo ambiente Quali sono gli ambienti integrati di sviluppo più utilizzati?

Dettagli

Software Specifico per la Gestione e la Bilanciatura della Linea di Assemblaggio

Software Specifico per la Gestione e la Bilanciatura della Linea di Assemblaggio Tempi & Metodi di Giorgio Andreani Servizi di Controllo e di Organizzazione dei Processi Produttivi Iscrizione al Registro delle Imprese CCIAA di Verona REA 357269 Partita Iva 03686020235 - Cod. Fisc.

Dettagli

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Stampa di dati variabili

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Stampa di dati variabili Xerox 700 Digital Color Press con Integrated Fiery Color Server Stampa di dati variabili 2008 Electronics for Imaging, Inc. Per questo prodotto, il trattamento delle informazioni contenute nella presente

Dettagli

Sistemi software di collaborazione in ambito open source

Sistemi software di collaborazione in ambito open source Sistemi software di collaborazione in ambito open source Testimonianza di: Davide Dalle Carbonare davide.dallecarbonare@eng.it 1 Introduzione Collaborare e cooperare: diverse persone operano contemporaneamente

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

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

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

Dettagli

La Top Ten dei suggerimenti per la progettazione Web

La Top Ten dei suggerimenti per la progettazione Web In questo capitolo Impostare l obiettivo Mantenere le pagine libere e pulite Non travolgere i visitatori con i colori Usare meno di quattro tipi di carattere Essere coerenti Semplificare Essere rapidi

Dettagli

Ferdinando Gorga Rational Europe Tiger Team Twitter: @fergor. Come la tecnologia Rational induce consistenti risparmi economici nei progetti software

Ferdinando Gorga Rational Europe Tiger Team Twitter: @fergor. Come la tecnologia Rational induce consistenti risparmi economici nei progetti software Ferdinando Gorga Rational Europe Tiger Team Twitter: @fergor Come la tecnologia Rational induce consistenti risparmi economici nei progetti software Come risparmiare 10.000 euro all'anno a sviluppatore

Dettagli

Configuration Management

Configuration Management Configuration Management Obiettivi Obiettivo del Configuration Management è di fornire un modello logico dell infrastruttura informatica identificando, controllando, mantenendo e verificando le versioni

Dettagli

Docenti: Patrizia Scandurra (referente princiaple) Angelo Gargantini. patrizia.scandurra@unibg.it

Docenti: Patrizia Scandurra (referente princiaple) Angelo Gargantini. patrizia.scandurra@unibg.it Progetto di Informatica III Introduzione al corso Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Contatti Obiettivo Natura Argomenti Organizzazione Materiale didattico Modalità

Dettagli

Manuale di Desktop Sharing. Brad Hards Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Desktop Sharing. Brad Hards Traduzione: Luciano Montanaro Traduzione: Daniele Micci Brad Hards Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Desktop Sharing 7 3.1 Gestione degli inviti di Desktop Sharing.........................

Dettagli

Test e collaudo del software Continuous Integration and Testing

Test e collaudo del software Continuous Integration and Testing Test e collaudo del software Continuous Integration and Testing Relatore Felice Del Mauro Roma, Cosa è la Continuous Integration A software development practice where members of a team integrate their

Dettagli

Eclipse e Subversion

Eclipse e Subversion Eclipse e Subversion Prerequisito: creare un repository gratuito su http://www.assembla.com Svn: condivisione progetto Svn: condivisione progetto Svn: condivisione progetto Svn: condivisione progetto Svn:

Dettagli

PIÙ IN DETTAGLIO Come si crea una scuola virtuale? Come viene associato un insegnate alla scuola? Cos è il Codice scuola?

PIÙ IN DETTAGLIO Come si crea una scuola virtuale? Come viene associato un insegnate alla scuola? Cos è il Codice scuola? PIÙ IN DETTAGLIO Come si crea una scuola virtuale? Quando si compila il modulo di registrazione, selezionare l opzione scuola.una volta effettuata la registrazione, si può accedere a un ambiente molto

Dettagli

Ingegneria del Software I Prova parziale del 27/4/2015 - ESERCIZI

Ingegneria del Software I Prova parziale del 27/4/2015 - ESERCIZI Cognome Nome Matricola Ingegneria del Software I Prova parziale del 27/4/2015 - ESERCIZI Durata: 1h 15' Esercizio 1 (6 pt.). Si supponga di dover implementare un sistema di lettura ed elaborazione automatica

Dettagli

7.1 Livello di completezza degli esempi

7.1 Livello di completezza degli esempi Luca Cabibbo Analisi e Progettazione del Software Capitolo 7 marzo 2013 Buono, poco costoso, rapidamente. Puoi scegliere due di queste caratteristiche. Anonimo 1 *** AVVERTENZA *** I lucidi messi a disposizione

Dettagli

Installazione del Software. per lo Sviluppo di Applicazioni Java

Installazione del Software. per lo Sviluppo di Applicazioni Java Installazione del Software per lo Sviluppo di Applicazioni Java Ing. Luca Ferrari ferrari.luca@unimore.it Tel. 0592056142 Installazione del Software per lo Sviluppo di Applicazioni Java 1 Il Compilatore

Dettagli