SOFTWARE ENGINEERING

Pierluigi RITROVATO SOFTWARE ENGINEERING

0622700041
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA MAGISTRALE
INGEGNERIA INFORMATICA
2022/2023



OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2022
PRIMO SEMESTRE
CFUOREATTIVITÀ
432LEZIONE
324LABORATORIO
216ESERCITAZIONE


Obiettivi
Il corso presenta i modelli, i metodi e gli strumenti per la progettazione e realizzazione di sistemi software di grandi dimensioni, e dei principali processi che intervengono nel ciclo di vita del software.

Conoscenze e capacità di comprensione
Conoscenza del processo di produzione del software e delle attività correlate. Conoscenza dei principali Design Pattern. Conoscenza dei metodi agili di produzione del software. Comprensione dei documenti di analisi e di progetto realizzati secondo formati standard.

Conoscenza e capacità di comprensione applicate
Saper partecipare a un progetto seguendo un processo formalizzato di produzione del software. Saper progettare un sistema software utilizzando i principali Design Pattern; saper esprimere l’analisi dei requisiti e le scelte progettuali usando formati standard di rappresentazione; saper utilizzare strumenti software per la documentazione e il testing automatici e il controllo delle revisioni dei programmi.
Prerequisiti
PER IL PROFICUO RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI È RICHIESTA LA CONOSCENZA DEL LINGUAGGIO JAVA E DELLA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI.
Contenuti
UNITÀ DIDATTICA 1: IL CICLO DI VITA DEL SOFTWARE (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 16/2/2)
- 1 (2 ORE LEZIONE): INTRODUZIONE. IL CICLO DI VITA DEL SOFTWARE.
- 2 (2 ORE LEZIONE): MODELLI DI PROCESSO.
- 3 (2 ORE LEZIONE): ANALISI DEI REQUISITI
- 4 (4 ORE LEZIONE): PROJECT MANAGEMENT
- 5 (2 ORE ESERCITAZIONE): ESERCITAZIONE SU ANALISI DEI REQUISITI.
- 6 (4 ORE LEZIONE): DESIGN
- 7 (2 ORE LEZIONE): TESTING
- 8 (2 ORE LABORATORIO): USO DELLA LIBRERIA JUNIT CONOSCENZE E CAPACITÀ DI COMPRENSIONE: I PRINCIPALI MODELLI TRADIZIONALI DI PROCESSO SOFTWARE E LE ATTIVITÀ PRINCIPALI DI UN PROCESSO.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: PARTECIPARE A UN PROGETTO SOFTWARE SVOLGENDO LE ATTIVITÀ DI UN PROCESSO TRADIZIONALE.

UNITÀ DIDATTICA 2: I METODI AGILI E SCRUM (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 8/4/2)
- 9 (2 ORE LEZIONE): INTRODUZIONE AI METODI AGILI
- 10 (4 ORE LEZIONE): IL PROCESSO SCRUM
- 11 (4 ORE ESERCITAZIONE): ESERCITAZIONE SUL PROCESSO SCRUM
- 12 (2 ORE LEZIONE): CONTROLLO DELLE REVISIONI
- 13 (2 ORE LABORATORIO): IL SISTEMA GIT CONOSCENZE E CAPACITÀ DI COMPRENSIONE: I PRINCIPI DEI PROCESSI AGILI. IL PROCESSO SCRUM.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: PARTECIPARE A UN PROGETTO SOFTWARE CHE UTILIZZA IL PROCESSO SCRUM.


UNITÀ DIDATTICA 3: DESIGN PATTERNS
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 10/6/0)
- 14 (2 ORE LEZIONE): I DESIGN PATTERN CREAZIONALI
- 15 (2 ORE ESERCITAZIONE): ESERCITAZIONE SUI PATTERN CREAZIONALI
- 16 (4 ORE LEZIONE): I DESIGN PATTERN STRUTTURALI
- 17 (2 ORE ESERCITAZIONE): ESERCITAZIONE SUI PATTERN STRUTTURALI
- 18 (4 ORE LEZIONE): I DESIGN PATTERN COMPORTAMENTALI
- 19 (2 ORE ESERCITAZIONE): ESERCITAZIONE SUI PATTERN COMPORTAMENTALI CONOSCENZE E CAPACITÀ DI COMPRENSIONE: I PRINCIPALI PATTERN DI PROGETTAZIONE CREAZIONALI, STRUTTURALI E COMPORTAMENTALI.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: USO DEI PATTERN DI PROGETTAZIONE PER RISOLVERE PROBLEMI DI PROGETTAZIONE RICORRENTI E COMUNICARE DECISIONI DI PROGETTAZIONE.

UNITÀ DIDATTICA 4: REALIZZAZIONE DI UN PROJECT WORK (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 0/22/0)
- 20 (2 ORE ESERCITAZIONE): DESCRIZIONE DEL PROBLEMA. PRESENTAZIONE DEGLI STRUMENTI E DELLE METODOLOGIE DA UTILIZZARE.
- 21 (4 ORE ESERCITAZIONE): PRE-GAME: DEFINIZIONE INIZIALE DELLE USER STORY.
- 22 (4 ORE ESERCITAZIONE): PRIMA ITERAZIONE DI SVILUPPO.
- 23 (4 ORE ESERCITAZIONE): SECONDA ITERAZIONE DI SVILUPPO.
- 24 (4 ORE ESERCITAZIONE): TERZA ITERAZIONE DI SVILUPPO.
- 25 (4 ORE ESERCITAZIONE): PRESENTAZIONE FINALE CONOSCENZE E CAPACITÀ DI COMPRENSIONE:
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SVILUPPARE UN PROGETTO SOFTWARE COMPLETO IN TEAM SEGUENDO IL PROCESSO SCRUM E APPLICANDO I DESIGN PATTERN.

TOTALE ORE LEZIONE/ESERCITAZIONE/LABORATORIO: 34/34/4
Metodi Didattici
L’INSEGNAMENTO CONTEMPLA LEZIONI TEORICHE, ESERCITAZIONI IN AULA ED ESERCITAZIONI PRATICHE DI LABORATORIO. NELLE ESERCITAZIONI IN AULA VIENE ASSEGNATO AGLI STUDENTI, DIVISI PER GRUPPI DI LAVORO, UN PROGETTO DA SVILUPPARE DURANTE TUTTO LO SVOLGIMENTO DEL CORSO. IL PROGETTO COMPRENDE UNITARIAMENTE TUTTI I CONTENUTI DELL’INSEGNAMENTO ED È STRUMENTALE ALL’ACQUISIZIONE, OLTRE CHE DELLE CAPACITÀ DI PROGETTAZIONE E REALIZZAZIONE DI UN SISTEMA SOFTWARE PARTENDO DALLE SPECIFICHE, ANCHE A SVILUPPARE E RAFFORZARE LE CAPACITÀ DI LAVORARE IN TEAM. NELLE ESERCITAZIONI IN LABORATORIO GLI STUDENTI UTILIZZANO STUMENTI SOFTWARE PER IL TEST AUTOMATICO E IL CONTROLLO DELLE REVISIONI.

La frequenza delle lezioni è obbligatoria. Per accedere all'esame finale, lo studente deve aver frequentato almeno il 70% delle ore di didattica frontale.
Verifica dell'apprendimento
LA PROVA DI ESAME È FINALIZZATA A VALUTARE NEL SUO COMPLESSO: LA CONOSCENZA E LA CAPACITÀ DI COMPRENSIONE DEI CONCETTI PRESENTATI AL CORSO; LA CAPACITÀ DI APPLICARE TALI CONOSCENZE PER LA RISOLUZIONE DI PROBLEMI DI ANALISI E PROGETTAZIONE DEL SOFTWARE; L’AUTONOMIA DI GIUDIZIO, LE ABILITÀ COMUNICATIVE E LA CAPACITÀ DI APPRENDERE
LA PROVA CONSISTE NELLA DISCUSSIONE DI UN ELABORATO, SVOLTO DURANTE IL CORSO, IL CUI SCOPO È VALUTARE LA CAPACITÀ DI APPLICARE LE CONOSCENZE, L’ESPOSIZIONE IN FORMA SCRITTA, L’AUTONOMIA DI GIUDIZIO E LA CAPACITÀ DI LAVORARE IN GRUPPO, E DA UN COLLOQUIO ORALE, IL CUI SCOPO È VALUTARE LE CONOSCENZE E LE CAPACITÀ DI COMPRENSIONE ACQUISITE, LA CAPACITÀ DI APPRENDERE DIMOSTRATA, L’ESPOSIZIONE ORALE.
L'ELABORATO CONSISTE IN UN PICCOLO PROGETTO SOFTWARE, DA SVOLGERE IN GRUPPO (LA CUI SPECIFICA È ASSEGNATA DAL DOCENTE DURANTE IL CORSO) IN CUI OCCORRE SVOLGERE E DOCUMENTARE TUTTE LE FASI DEL CICLO DI VITA.
IL COLLOQUIO ORALE VERTERÀ SUGLI ARGOMENTI TEORICI DEL CORSO E LA VALUTAZIONE TERRÀ CONTO DELLE CONOSCENZE DIMOSTRATE DALLO STUDENTE E DEL GRADO DEL LORO APPROFONDIMENTO, DELLA CAPACITÀ DI APPRENDERE DIMOSTRATA, DELLA QUALITÀ DELL’ESPOSIZIONE.
NELLA VALUTAZIONE FINALE, ESPRESSA IN TRENTESIMI, LA VALUTAZIONE DELL'ELABORATO PESERÀ PER IL 40% MENTRE IL COLLOQUIO ORALE PER IL 60%. LA LODE POTRÀ ESSERE ATTRIBUITA AGLI STUDENTI CHE DIMOSTRINO DI SAPER APPLICARE LE CONOSCENZE ACQUISITE CON AUTONOMIA ANCHE IN CONTESTI DIVERSI DA QUELLI PROPOSTI NEL CORSO.
Testi
F. Tsui, O. Karam, B. Bernal: “Essentials of Software Engineering” (3rd ed.), Jones & Bartlett

Lettura consigliata:
Gamma, Helm, Johnson, Vlissides: “Design Patterns”, Pearson Education Italia

MATERIALE DIDATTICO INTEGRATIVO SARA' DISPONIBILE NELLA SEZIONE DEDICATA DELL'INSEGNAMENTO ALL'INTERNO DELLA PIATTAFORMA E-LEARNING DI ATENEO (HTTP://ELEARNING.UNISA.IT) ACCESSIBILE AGLI STUDENTI DEL CORSO TRAMITE LE CREDENZIALI UNICHE DI ATENEO.
Altre Informazioni
L'INSEGNAMENTO E' EROGATO IN INGLESE
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-08-21]