INFORMATICA III Parte B -Progettazione e Algoritmi

Documenti analoghi
Progetto di Informatica III. Introduzione al corso

Docenti: Patrizia Scandurra (referente princiaple) Angelo Gargantini.

FONDAMENTI DI INFORMATICA II

Principi di Progettazione del Software a.a " Introduzione al corso! Prof. Luca Mainetti! Università del Salento!

Corso Programmazione Java Standard

Corso di Fondamenti di Informatica e Laboratorio T-AB

Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Corso di Fondamenti di Informatica e Laboratorio ato o T-AB

Dipartimento di INFORMATICA TC - TTRG. Anno Scolastico Piano di Lavoro Disciplinare. INFORMATICA Articolazione: INFORMATICA Classe IV

Tecnologie Informatiche L-31. Corso di Ingegneria del software e Laboratorio di Ingegneria del software

Grafica ed interfacce per la comunicazione. Scienze della Comunicazione A.A.2013/14

Architettura. Nome Modulo Tipologia lezioni Ore Docente SSD Ruolo Interno Affidamento. Vincenzo Conti

Fondamenti di Informatica e Laboratorio T-AB

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

Programmazione ad Oggetti

La programmazione ad oggetti: chiamate di metodi. Overloading. This

CORSO DI PROGRAMMAZIONE. Cosimo Laneve/Ivan Lanese/Elena Giachino

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Corso di Applicazioni di Intelligenza Artificiale LS. Prof. Paola Mello Anno accademico 2008/2009

Materiale didattico. Sommario

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

24 - Possibili approfondimenti

Elementi di Informatica e Programmazione

UML I diagrammi implementativi

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Presentazione del corso

Corso di Laurea in Ingegneria Informatica (L8) Anno Accademico 2015/2016 FONDAMENTI DI INFORMATICA

Ingegneria del Software 4. Introduzione a UML. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring

Progetto di Informatica III

ISTITUTO SUPERIORE ENRICO FERMI. PROGRAMMAZIONE DEL GRUPPO DISCIPLINARE INFORMATICA IT INDIRIZZO INFORMATICA E TELECOMUNICAZIONI a.s.

Docente: Laura Po

Introduzione. Fondamenti di Informatica 1. Dispensa 1 Gennaio Contenuti. Alfonso Miola. K Corso di Fondamenti di Informatica 1

Comprendere come vengono prodotti i manufatti di uso comune. Capire la relazione tra le tecniche di produzione adottate e la qualità del prodotto

LAUREA MAGISTRALE in INGEGNERIA INFORMATICA

SETA Selection Tool del Sistema ARTIST

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE TRIENNIO: TERZA DISCIPLINA: INFORMATICA

Introduzione al Corso. Corso di Progettazione degli Impianti Prof. Sergio Cavalieri, Ing. Stefano Ierace AA

Elementi di Informatica Corso di Laurea in Scienze Geologiche a.a. 2003/2004. Docente. Orario. Da Ottobre-Dicembre:

Sviluppo di un applicazione di front-end per il monitoraggio di un Isola Ecologica

Praticamente Statistica Laboratorio di software open source

Fondamenti di Informatica

APPENDICE 4 AL CAPITOLATO TECNICO

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Sistemi Distribuiti Anno accademico 2009/10

Basi di dati I

Ingegneria degli Algoritmi

Corso di: Economia e Gestione delle Imprese Turistiche a.a. 2011/12

Ingegneria del Software II. Proposte di progetto d esame. a.a. 2016/17

INSEGNAMENTO DI: FONDAMENTI DI INFORMATICA C - IEI

Informatica. Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven

UNIVERSITA' DEGLI STUDI DI MILANO - BICOCCA Facoltà di Scienze Matematiche, Fisiche e Naturali

Università del Salento Facoltà di Scienze della Formazione, Scienze Politiche e Sociali CORSO DI INFORMATICA. UD0. Introduzione.

Progettazione Siti Web: Introduzione al corso

FONDAMENTI DI INFORMATICA

I.T.I. E. MAJORANA SOMMA VESUVIANA PIANO DI LAVORO ANNUALE DEL DOCENTE ANNO SCOLASTICO 2015/2016

Prefazione. Capitolo 1 Sistemi di elaborazione 1

Giuseppe Callegarin Java, Oggetti e Strutture Dati Cedam INDICE

Capitolo I1: Laboratorio con DevC++

Ore settimanali di lezione: 3 h di cui 2 in compresenza con l insegnante di Lab. di Informatica prof.ssa E.De Gasperi

I lucidi messi a disposizione sul sito del corso di Analisi e progettazione del software NON sostituiscono il libro di testo

FONDAMENTI DI RETI DI TELECOMUNICAZIONI

introduzione al corso di ingegneria del software

Le aree dell informatica

Indice dei contenuti del corso su DREAMWEAVER della Adobe

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Ingegneria del Software

Programmazione e Controllo della Produzione. Introduzione

SCIENZE DELLA FORMAZIONE PRIMARIA (V.O.) Metodologia Didattica per la Scuola Primaria* - A.A. 2013/2014 Prof.ssa G. Compagno SCHEDA DI TRASPARENZA


PIANO DI LAVORO PREVENTIVO a. s

Marco Listanti Antonio Cianfrani. Laboratorio di Applicazioni Telematiche A.A. 2014/2015

ISTITUTO DI ISTRUZIONE SUPERIORE J.C. MAXWELL Data: 24 /9 /2016 Pag. 1di 5. PROGRAMMAZIONE ANNUALE A.S. 2016/ 2017 MECCANICA e MECCATRONICA

Principi e Metodologie delle Costruzioni di Macchine

Strutture dati e loro organizzazione. Gabriella Trucco

orario ricevimento via orario ufficio risposta entro 3 giorni

Università degli studi di Bergamo. Informatica II. Programmazione Object Oriented Tutorato. Lezione 1. Dott. Marco Guarnieri Dott. Eros Magri

Le aree dell informatica

Fondamenti VBA. Che cos è VBA

Presentazione corso. Contenuti e diagramma di Pert. Definizione lista di spedizione. UML

classe: 5APT docenti: Fraterno Giovanni - Azzaro Nicola PIANO di LAVORO di SISTEMI a.s Libro di testo: Bufalino Domenico - Fratangelo Pio

ISTITUTO ISTRUZIONE SUPERIORE "L. EINAUDI" - ALBA (CN) ANNO SCOLASTICO 2015/2016

SISTEMI OPERATIVI, RETI, INTERNET

Informatica A - Gestionali

Analisi e specifica dei requisiti

Reti Informatiche Edizione N

Il calcolatore. Architettura di un calcolatore (Hardware)

Introduzione al Calcolo Scientifico

CURRICOLO DIPARTIMENTO INFORMATICA PRIMO BIENNIO

Dispensa di Informatica II.1

Reti Informatiche Edizione N

Corso di Laurea Ingegneria Informatica

Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE

Istituto di Istruzione Superiore Statale Carlo Emilio Gadda PIANO DI LAVORO ANNO SCOLASTICO 2015/2016. I.I.S.S '' C. E. GADDA Sede di FONOVO

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

Lezioni di Costruzione di Macchine

Saranno inoltre proposti dei seminari di approfondimento su tematiche specifiche.

Studio del linguaggio TROPOS per la modellazione dei requisiti orientata agli agenti

Transcript:

INFORMATICA III Parte B -Progettazione e Algoritmi Introduzione Patrizia Scandurra patrizia.scandurra@unibg.it Università degli Studi di Bergamo a.a. 2013-14

Contatti Docente: Patrizia Scandurra (parte B Progettazione ed algoritmi) Email: patrizia.scandurra@unibg.it Sitoweb (parte B): http://cs.unibg.it/scandurra/inf3progalg2014.html Ricevimento (parte B): Edificio B, terzo piano, ufficio 3 Su appuntamento o il mercoledì 11.30-12.30 (dopo la lezione)

Obiettivi Fornire agli studenti conoscenze teoriche metodi e strumenti di sviluppo utili per progettare e implementare in grande ed in piccolo una applicazione software attraverso un processo di sviluppo agile unosviluppo orientato alle componenti e all efficienza degli algoritmi e strutture dati impiegate il linguaggio di programmazione ad oggetti Java e l ambiente Eclipse

Natura Lezioni frontali e di esercitazione (parte B) - si dovranno svolgere alcuni esercizi - entreremo nei dettagli del codice - si dovrà alla fine costruire una applicazione SW complessa Non informativo sulle tecnologie recenti Le tecnologie cambiano rapidamente, ma i principi rimangono evolvendo Prerequisiti: fondamenti di informatica, ingegneria del software e notazione UML, programmazione Java, elementi di analisi matematica su serie e successioni.

Argomenti (parte B) Design, analisi e sviluppo di codice algoritmo: complessità del calcolo e notazione asintotica metodologie di progettazione di algoritmi (incrementale,divide et impera, greedy, programmazione dinamica) e realizzazione di algoritmi e tipi astratti di dati in Java strutture dati e algoritmi fondamentali (liste, pile, code), algoritmi di ordinamento, alberi e loro gestione, alberi di ricerca (alberi binari di ricerca, B-tree), applicazioni degli alberi per il processamentodi documenti XML, tabelle hash, grafi e loro rappresentazione e gestione, cammini minimi. Processi di sviluppo agili: modellazione, sviluppo e testingcon AMDD (Agile Model-driven Development) Design e sviluppo di architetture SW:component-basedsoftware engineering, service-oriented engineering, design pattern Design e sviluppo di GUI e componenti grafiche: JFC/Swing e Java2D, gestione eventi, MVC e componenti Swing di base, Jigloo GUI builder, cenni SWT Analisi statica di un'applicazione SW: definizione/calcolo di metriche con Google CodePro AnalytiX, refactoring del codice, scenari di deployment Analisi dinamica di un'applicazione SW: unittestingcon Junit, copertura del codice con il plug-in EclipseECLEMMA Deployment di un applicazione SW: Java convention, Deployment (jar) e Subversioning

Materialedidattico(parte B) Lucidi e dispense distribuite attraverso il sito del docente e su Dropbox http://cs.unibg.it/scandurra/inf3progalg2014.html https://www.dropbox.com/sh/m4mtb3h9khzcbm0/kzl2_jbbbm C. Demetrescu, I. Finocchi, G. F. Italiano: Algoritmi e strutture dati, McGraw-Hill, ISBN: 978-88-386-6468-7, seconda edizione, Gennaio 2008 http://www.ateneonline.it/demetrescu2e/homea.asp Tutorial su strumenti e tool scaricabili on-line dalla piattaforma di e-learning ILIAS: http://elearning2.unibg.it/ilias4/repository.php?cmd=frameset&ref_id=2094 Per approfondimenti: C.A.Shaffer: A practical Introduction to data structures and algorithm analysis. http://people.cs.vt.edu/~shaffer/book/java3e20100119.pdf The Object Primer 3rd Edition: Agile Model Driven Development with UML 2, Cambridge University Press, 2004 ISBN 0-521-54018-6

Modalitàd esame(parte B) L'esame consta di una parte scritta, e di una discussione oralesull applicazione softwareche avete sviluppato in gruppi di al max3 persone Le funzionalità di tale applicazione sono libere, ma l idea va concordata con il docente e il SW prodotto dovrà esibire certe caratteristiche obbligatorie Il giorno dell'appello (prova scritta) consegnerete anche il progetto (su CD) e la documentazione stampata I progetti verranno discussi nello stesso giorno o nei giorni successivi su appuntamento

Modalità di valutazione (1) Da 0 a 10 per la parte scritta: 6 = sufficiente (BARRIERA per il progetto) Progetto SW e voto finale: ottenuto valutando ognuna delle seguenti caratteristiche pesate : Risultati prova scritta (di cui si è raggiunta almeno la sufficienza) 15% Interesse del problema affrontato e dimensione del progetto 10% Premio l'originalità, difficoltà, l'interdisciplinarietà, fondamenti teorici, l'interesse potenziale di altri, dimensione del progetto e delle librerie, ecc. L idea va comunque comunicata al docente! Bontà delle soluzione proposta: 45% Architettura (15%): opportuna divisione in package (anche tramite analisi statica con strumenti come jdepend, ad esempio presenza di cicli tra i packages), design pattern, stile di programmazione, warningdel javac, ecc.. Algoritmi e strutture dati (15%) impiegate Validazione (15%): risultati ottenuti ad esempio dal testinge dal piano di test, grado di automazione del testing(che sia ripetibile), dalla copertura con Emma, ecc..

Modalità di valutazione (2) Progettazione, sviluppo e documentazione 20% Valutazione della modellazione agile: uso di UML per la modellazione dei casi d uso (requisiti funzionali), per il design dell architettura (diagramma delle componenti e di deployment), diagramma delle classi, piani di test, uso di metodi formali (Reti di Petri, Abstract State Machines) per le parti più critiche, ecc.. Valutazione dello sviluppo agile: uso dei metodi (testing, copertura, refactoring, ecc..), strumenti (tool e Plug-in Eclipse) e tecnologie(librerie, APIs, ecc..) spiegati a lezione e nei tutorial Valutazione della documentazione a corredo Presenza attiva in aula e lab(svolgimento degli esercizi proposti) 10%

Caratteristiche obbligatorie (1) Progettazione e documentazione (file di testo, word, html, o altro) prodotta con le tecniche/strumenti di design imparati nel corso di Ingegneria del Software, relativamente a Requisiti del sistema (funzionalità ed eventualmente altri requisiti non funzionali) Progettazione dell'architettura( in grande ) con sviluppo agile e UML (casi d uso e diagramma delle componenti/deployment) Uso di UML (diagrammi delle classi e altri diagrammi) e ER, Reti di Petri, Abstract State Machines eventualmente per le funzionalità più critiche Progettazione in piccolo di algoritmi e strutture dati Piano di test e spiegazionedelle decisioni fatte durante l'implementazione Manuale d uso e di installazione

Caratteristiche obbligatorie (2) Implementazione Costrutti OO di Java: uso di interfacce e classi astratte, famiglie di costruttori, ereditarietà, overloadinge overridingdi metodi, membri static, final, applicazione dei design pattern, generics(tipi o metodi generici), ecc. Algoritmi: algoritmiuser-defined, uso di JFC (tra cui Liste HashTable) Librerie esterne: ad es. log4j o altre (jcurses, jexcelapi, o di Jakarta) Unit testing: sviluppare e documentare casi di test con Junit Copertura: copertura del codice con Emma (o altri tool) e tale copertura deve essere documentata Analisi statica e metriche Documentazione del codice: completamente documentato con JavaDoc I/O in formato XML: con SAX o DOM (o utilizzare un parsergenerator come AntLRo Javacc) GUI: un interfaccia grafica (differenziare la UI con le funzionalità dell'applicazione); preferite l'uso del pattern Model View Controller

Caratteristiche obbligatorie (3) Distribuzione Al di fuori dell'ide: installazione e funzionamento stand-alone con un installer o con uno script o con Java web start. Usate fatjar se voletemetterepiùjarinununicojar. In linea di principio, non deve richiedere al docente l installazione di SW ausiliario (DBMS o altro) per farlo funzionare. Se necessario, preferite l'uso di Java DB (http://developers.sun.com/javadb/, di soli 2MB!) e notificatelo al docente. Il codice deve essere sviluppato (e consegnato al docente) in un (unico) progetto di Eclipse e deve includere librerie e risorse necessarie per compilare/eseguire i file e i casi di test. I link alle risorse devono essere relativi in modo che spostando il progetto su vari PC esso continui a funzionare. Se utilizzate altri progetti ausiliari, anche questi vanno inclusi.

Progettare in piccolo ed in grande con una metodologia agile Introduzione

Metodologia agile Differenziazione di metodi e modelli di sviluppo: Metodologie pesanti per i vecchi metodi come il Modello a cascata Metodologie iterative per i metodi come il Modello a spirale Metodologie agili (o leggere) che coinvolgono quanto più possibile il committende, ottenendo in tal modo una elevata reattività alle sue richieste Agile alliance, una organizzazione no-profit creata allo scopo di diffonderle Esistono un certo numero di tali metodologie (XP, SCRUM, AMDD,ecc..) Adotteremo AMDD= versione agile del Model Driven Development

Ciclo di vita del software Passi comuni a tutte le metodologie: 15

Ciclo di vita del software Passi comuni a tutte le metodologie: 16

Ciclo di vita del software Passi comuni a tutte le metodologie: 17

Ciclo di vita del software Passi comuni a tutte le metodologie: 18

Ciclo di vita del software Passi comuni a tutte le metodologie: 19

Ciclo di vita del software Passi comuni a tutte le metodologie: 20

Ciclo di vita del software Passi comuni a tutte le metodologie: 21

Ciclo di vita del software Passi comuni a tutte le metodologie: 22

Component-based development: principio diincapsulamento Una netta separazione tra: La vista esterna: l interfaccia esposta dalla componente (come parte della specifica) in termini di funzioni (operazioni) fornite/richieste, struttura e comportamento La vista interna: dettagliimplementativisu funzionalità, struttura e comportamento interni da tenere nascosti Vista esterna Componente Specifica Vista interna Implementazione

Ingegnerizzazione multi-view Vista Funzionale Specifica pseudocodice delle operazioni (algoritmi) Specifica (modello) Implementazione (codice) Vista comportamentale (UML state machine diagram, Reti di Petri, ASM, ecc..) SW Component Vista strutturale Specifica dell architettura (UML component/class diagrams) 24

Esempio: Mobile TouristGuide Progettare in grande (vista strutturale) 25

Esempio: Mobile TouristGuide Progettare in piccolo (vista funzionale) Pseudocodice algoritmo <DA DEFINIRE> 26