Insegnamento INGEGNERIA DEL SOFTWARE
- Corso
- Informatica
- Codice insegnamento
- 55024706
- Curriculum
- Comune a tutti i curricula
- Docente
- Alfredo Milani
- Docenti
-
- Alfredo Milani
- Ore
- 42 ore - Alfredo Milani
- CFU
- 6
- Regolamento
- Coorte 2019
- Erogato
- 2020/21
- Attività
- Caratterizzante
- Ambito
- Discipline informatiche
- Settore
- INF/01
- Tipo insegnamento
- Obbligatorio (Required)
- Tipo attività
- Attività formativa monodisciplinare
- Lingua insegnamento
- ITALIANO
- Contenuti
- Il software: processo e prodotto.Modelli di Ciclo di Vita del Software.Tecniche di Analisi. Linguaggi di modellazione: UML. Metriche di prodotto e di processo.Tecniche di Test e di Verifica Formale.Standard Valutazione del Software. Secure programming.Tecnologie di supporto al riuso. Design Pattern e integrazione SW.
- Testi di riferimento
- Testi di riferimento (riferirsi alle ultime edizioni):
Appunti del Docente disponibili sulla piattaforma di elearning http://www.unistudium.unipg.it
Testo di Riferimento
Sommerville, SOFTWARE ENGINEERING. Editore : Pearson Education Italia
Altri testi di consultazione:
su Progettazione del SW:
A. Binato, A. Fuggetta, L. Sfardini. Ingegneria del Software. Pearson, 2006.
su UML
G. Booch, J. Rumbaugh, I. Jacobson. The UML user guide. Addison Wesley, 1999.
J. Arlow, I. Neustadt. UML e Unified Process. McGraw-Hill, 2003.
S. Bennett, J. Skelton, K. Lunn. Introduzione a UML. McGraw-Hill, 2002.
E. Damiani, M. Madravio. UML pratico. Addison Wesley, 2003.
H.E. Eriksson, M. Penker. UML Toolkit. Pearson, 2004.
Argomento: Design Pattern
E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns. Addison-Wesley, 2002.
C. Larman. Applicare UML e i pattern. Pearson, 2004. - Obiettivi formativi
- Obiettivo del corso e' l'apprendimento delle tecniche della progettazione software e della gestione del processo di definizione dei requisiti, della progettazione, dello sviluppo, del test, della consegna, integrazione, inizializzazione e manutenzione dei sistemi informatici
in accordo con le principali metodologie, buone pratiche e standard accettate a livello internazionale.
Le conoscenze acquisite al termine del corso comprendono :
le principali tecniche e standard per la analisi, la progettazione, lo sviluppo, l'organizzazione dle processo di produzione software
le metriche di valutazione di un sistema informatico.
le principali tecniche di test software. Buone pratiche di programmazione sicura.
le tecniche di programmazione basate sui design pattern
le tecniche di integrazione software
Le abilita' acquisite al termine del corso comprendono
capacita' di applicare le tecniche di analisi, progettazione, test a casi di studio reali
capacita' di lavorare in gruppo e comprendere attraverso l'esperienza del progetto di gruppo le principali problematiche per la gestione del processo di sviluppo software
capacita' di riconoscere situazioni e applicabilita' delle metodologie di integrazione e soluzioni di design pattern. - Prerequisiti
- I prerequisiti per apprendere e comprendere efficacemente i contenuti di questo insegnamento sono nozioni di base di programmazione e nozioni di programmazione ad oggetti, elementi di logica e comprensione degli elementi di base della complessita' ed efficenza degli algoritmi e delle strutture dati.
- Metodi didattici
- Lezioni frontali.
Esercitazioni, discussioni interattive su casi di studio.
Valutazione continua attraverso progetti ed esercizi di esonero.
Valutazione finale tramite prova scritta
Materiale, informazioni dettagliate e messaggi urgenti sulle lezioni e gli esoneri su http://www.unistudium.unipg.it
Date di Appello su http://www.informatica.unipg.it - Altre informazioni
- Piattaforma di e-learning del corso con materiale e altre informazioni su http://www.unistudium.unipg.it
- Modalità di verifica dell'apprendimento
- L'esame consiste in una prova scritta e un progetto da sviluppare in gruppo e presentare al docente. Per gli studenti frequentanti alcune delle prove o parti di esse possono essere sostituite da prove in itinere.
La prova scritta della durata di due ore che verte sui principali argomenti affrontati durante il corso. Gli esercizi proposti ai candidati consistono nella risoluzione di problemi di analisi, modellazione di domini applicativi reali tramite techniche di ingegneria del software, nella costruzione di test, e in domande aperte su argomenti teorici sui metodi della ingegneria del software.
Il progetto consiste nello sviluppo di un progetto software in gruppo secondo le metodologie apprese in cui ciascuno studente svolge un ruolo operativo predeterminato. Il progetto prevede una relazione finale ed una presentazione da parte dei partecipanti che forma parte integrante della valutazione. Scopo del progetto e' acquisire esperienza pratica ed attitudine al lavoro di gruppo affrontando un problema reale.
Le prove in itinere vengono programmate durante il periodo di svolgimento delle lezioni e sono riservate agli studenti frequentanti.
Per informazioni sui servizi di supporto agli studenti con disabilità e/o DSA visita la pagina http://www.unipg.it/disabilita-e-dsa - Programma esteso
- Programma:
1 Il software: processo e prodotto
- Introduzione
- Modelli di ciclo di vita del software: waterfall, modelli iterativi/incrementali modelli a spirale
- Tecniche, modelli e linguaggi per l' analisi dei requisiti , il progetto, l'implementazione e la verifica del software.
- La manutenzione del software
- Il linguaggio UML (Universal Modeling Language), concetti di base, principali diagrammi e loro correlazione con le fasi di analisi dei requisiti (requirement a.), progetto (design) e implementazione(implementation). Attori, casi d'uso, scenari, stereotipi. Diagrammi casi d'uso, diagrammi di classe/oggetti, diagrammi di sequenza, diagrammi di collaborazione, diagrammi di attività, diagrammi di stato, diagramma di componenti, diagrammi di rilascio/consegna (deployment).
- Esercizi di modellazione tramite UML su scenari applicativi reali. Utilizzo di strumenti UML in ambiente Netbeans o altri strumenti di modellazione basati su UML
- Strumenti e ambienti di sviluppo IDE, sistemi di gestione delle versioni (versioning).
- Strumenti per la generazione della documentazione: loro integrazione in IDE e ambienti UML.Strumenti autonomi (javadoc)
2 Metriche di prodotto e di processo
- Qualità del software
- Metriche di costo: metriche classiche, il metodo dei function point.
3 Tecniche per l'affidabilità e sicurezza
-- La fase di test: test in sviluppo, test del prodotto e test di manutenzione. Il concetto di copertura e classe di copertura di un test.
- Test sistematici e incrementali.
- Test Funzionali (black box), esercizi di creazione di casi di test
- Test Strutturali (white box), esercizi di creazione di casi di test
-- Secure Coding:
- Principali errori software e vulnerabilità (principi guida, aree e Common Weakness Enumeration)
- Standard e buone pratiche per la programmazione sicura. Il CERT Java: regole/raccomandazioni, struttura a livelli e valutazione del rischio vulnerabilità
4 Tecnologie di supporto al riuso
-- Design Pattern: concetti di base ed obiettivi dei design pattern ed esercizi di utlizzo e applicazione dei design pattern. Il pattern Model View Controller ed il pattern Observer, Iterator, Factory e GUI Factory. Classi di design pattern.
DP Strutturali(Adapter, Façade,Composite, Decorator, Proxy,Flyweight), DP
Creazionali(Factory,Abstract Factory,Singleton, Prototype) DP Comportamentali (Observer,Mediator, Iterator , Chain of Responsibility,Interpreter .
--Tecniche per l'Integrazione del software: il concetto di middleware
-integrazione orientata alle informazioni (IOAI), (data integration , interface
processing es.API, user interface, embedded device)
- integrazione orientata ai processi applicativi (BPAI) (applicazioni composte e event driven, autonome/distribuite)
- integrazione orientata ai servizi(SOAI)
- integrazione orientata ai portali(POAI): single system, multiple system, trading community.