INGEGNERIA DEL SOFTWARE

Andrea DE LUCIA INGEGNERIA DEL SOFTWARE

0512100019
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA
INFORMATICA
2022/2023

OBBLIGATORIO
ANNO CORSO 3
ANNO ORDINAMENTO 2017
PRIMO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
324LABORATORIO


Obiettivi
CONOSCENZA E CAPACITA’ DI COMPRENSIONE

L’INSEGNAMENTO INTRODUCE:
- I CONCETTI DELL’INGEGNERIA DEL SOFTWARE, DEI RELATIVI PROCESSI, ATTIVITA’ E DELIVERABLE;
- I METODI DI ANALISI E PROGETTAZIONE;
- I LINGUAGGI PER LA MODELLAZIONE (IN PARTICOLARE UML);
- LE TECNICHE DI VERIFICA E CONVALIDA.

L’INSEGNAMENTO INTRODUCE ANCHE I CONCETTI ESSENZIALI DI TEAM WORKING E DI ORGANIZZAZIONE E GESTIONE DI PROGETTI SOFTWARE, SEGNANDO IL PASSAGGIO DALLA PROGRAMMAZIONE FATTA SU PROBLEMI DI PICCOLA TAGLIA, REALIZZATA DA SINGOLO STUDENTE, IN UN TEMPO RIDOTTO (PROGRAMMING IN THE SMALL), ALLO SVILUPPO DI SISTEMI SOFTWARE COMPLESSI, CON COINVOLGIMENTO DI UN TEAM E UNA ARTICOLAZIONE TEMPORALE DELLE ATTIVITA’ (PROGRAMMING IN THE LARGE).

L’INSEGNAMENTO MIRA INOLTRE AD APPROFONDIRE LE IMPLICAZIONI SOCIALI, SCIENTIFICHE ED ETICHE DELLA PROFESSIONE.


CAPACITA’ DI APPLICARE CONOSCENZA E COMPRENSIONE

LO STUDENTE DOVRA’ ESSERE IN GRADO DI:
- USARE UN APPROCCIO INGEGNERISTICO ALL’ANALISI, PROGETTAZIONE, REALIZZAZIONE, TESTING E MANUTENZIONE DEL SOFTWARE;
- LAVORARE IN GRUPPO E ORGANIZZARE IL PROPRIO LAVORO TENENDO PRESENTE OBIETTIVI E VINCOLI PER CONTRIBUIRE RESPONSABILMENTE E PROATTIVAMENTE AL SUCCESSO DEL PROGETTO E AL RISPETTO DELLE SCADENZE;


AUTONOMIA DI GIUDIZIO

LO STUDENTE DOVRÀ ESSERE IN GRADO DI:
- INDIVIDUARE LA SOLUZIONE CHE BILANCI AL MEGLIO OBIETTIVI DIVERSI E SPESSO CONTRASTANTI
- MOTIVARE LE SCELTE FATTE


ABILITÀ COMUNICATIVE

LO STUDENTE DOVRÀ ESSERE IN GRADO DI:
- RELAZIONARSI E COMUNICARE CON DIVERSI STAKEHOLDER ADATTANDOSI DINAMICAMENTE ALLE DIVERSE CARATTERISTICHE (CONOSCENZE, ESIGENZE, DOMINIO, LINGUAGGIO) DEGLI INTERLOCUTORI E AGLI OBIETTIVI DELLA COMUNICAZIONE, ADOTTANDO E SELEZIONANDO GLI STRUMENTI DI COMUNICAZIONE (TECNICI E NON TECNICI) CHE RISULTANO PIÙ EFFICACI PER LO SPECIFICO SCOPO


CAPACITÀ DI APPRENDERE

LO STUDENTE DOVRÀ ESSERE IN GRADO DI:
- “ENTRARE” VELOCEMENTE IN DOMINI DI APPLICAZIONE SEMPRE NUOVI IN MODO DA COMPRENDERNE LE ESIGENZE E TRADURLE IN SISTEMI SOFTWARE DI QUALITÀ.
Prerequisiti
GLI STUDENTI DEVONO AVER ACQUISITO LE CONOSCENZE DI BASE:
- DELLA PROGRAMMAZIONE PROCEDURALE;
- DELLA PROGRAMMAZIONE OBJECT-ORIENTED;
- DEGLI ALGORITMI E STRUTTURE DATI;
- DELLE BASI DI DATI.

GLI STUDENTI DEVONO ESSERE IN GRADO DI RISOLVERE PROBLEMI DI PROGRAMMAZIONE (PROGRAMMING IN THE SMALL) SIA UTILIZZANDO APPROCCI PROCEDURALI CHE OBJECT ORIENTED, CON OPPORTUNA SELEZIONE E/O REALIZZAZIONE DI IDONEE STRUTTURE DATI E CON ACCESSO A BASI DI DATI.
Contenuti
I CONTENUTI DELL’INSEGNAMENTO SONO ARTICOLATI IN CINQUE MODULI FORMATIVI.

M1: CONCETTI GENERALI DELL’INGEGNERIA DEL SOFTWARE (12 ORE DI LEZIONE E 6 ORE DI LABORATORIO)

CONCETTI DI BASE DELL'INGEGNERIA DEL SOFTWARE (PRODOTTO, PROCESSO, PRINCIPI, METODI, METODOLOGIE, STRUMENTI, FASI E ATTIVITÀ); INGEGNERIA DEL SOFTWARE E INGEGNERIA DEI SISTEMI; CICLO DI VITA DEL SOFTWARE; MODELLI DI PROCESSO SOFTWARE, DAL MODELLO A CASCATA AI MODELLI EVOLUTIVI, ITERATIVI E INCREMENTALI; PRINCIPI DELLA MODELLAZIONE VISUALE E NOTAZIONE UNIFIED MODELLING LANGUAGE (UML); CONCETTI DI BASE DELLA GESTIONE E DELLA ORGANIZZAZIONE DI PROGETTI SOFTWARE; MECCANISMI PER LA COMUNICAZIONE E LA COLLABORAZIONE TRA I PARTECIPANTI AD UN PROGETTO SOFTWARE; GESTIONE DELLE CONFIGURAZIONI SOFTWARE; EVOLUZIONE DEL SOFTWARE; STRUMENTI A SUPPORTO DELLO SVILUPPO DEL SOFTWARE

M2: ANALISI E SPECIFICA DEI REQUISITI (12 ORE DI LEZIONE E 6 ORE DI LABORATORIO)

RACCOLTA, ANALISI E SPECIFICA DEI REQUISITI; REQUISITI FUNZIONALI E REQUISITI NON FUNZIONALI; USO DELLA NOTAZIONE UML AI FINI DELLA RACCOLTA E ANALISI DEI REQUISITI: CASI D'USO E SCENARI, MODELLAZIONE AD OGGETTI E DIAGRAMMA DELLE CLASSI UML, MODELLAZIONE DINAMICA E DIAGRAMMI UML DI INTERAZIONE, DI STATO E DELLE ATTIVITÀ; DOCUMENTO DI ANALISI DEI REQUISITI.

M3: PROGETTAZIONE DI ALTO LIVELLO E ARCHITETTURALE - SYSTEM DESIGN (8 ORE DI LEZIONE E 4 ORE DI LABORATORIO)

PROGETTAZIONE E DECOMPOSIZIONE MODULARE DEL SOFTWARE; PRINCIPI DI COESIONE E ACCOPPIAMENTO; STILI E PARADIGMI ARCHITETTURALI; ARCHITETTURE CLIENT-SERVER E DISTRIBUITE; DESCRIZIONE DELL'ARCHITETTURA FISICA DI UN SISTEMA SOFTWARE CON COMPONENT DIAGRAM E DEPLOYMENT DIAGRAM; RAZIONALE DI DESIGN.

M4: PROGETTAZIONE DI BASSO LIVELLO (OBJECT DESIGN) E IMPLEMENTAZIONE (8 ORE DI LEZIONE E 4 ORE DI LABORATORIO)

RIUSO DEL SOFTWARE E INTRODUZIONE A DESIGN PATTERN; TECNICHE PER LA SPECIFICA DELLE INTERFACCE DI CLASSI E SOTTOSISTEMI; CONTRATTI IN UML E OBJECT CONSTRAINT LANGUAGE (OCL); DAL MODELLO AL CODICE; PRATICHE E STANDARD DI CODIFICA; CAMBIAMENTI AL CODICE; REFACTORING E REVERSE ENGINEERING.

M5: VERIFICA E CONVALIDA DEL SOFTWARE (8 ORE DI LEZIONE E 4 ORE DI LABORATORIO)

CONCETTI DI VERIFICA E CONVALIDA DEL SOFTWARE; AFFIDABILITA’ DEL SOFTWARE; CONCETTI DI FAULT E FAILURE; VERIFICA STATICA E DINAMICA; ISPEZIONI, REVISIONI E AUDIT DEL SOFTWARE; TESTING E DEBUGGING; LIVELLI DI TESTING; TESTING DI UNITÀ, DI INTEGRAZIONE E DI SISTEMA; ATTIVITÀ DI PIANIFICAZIONE ED ESECUZIONE DEL TESTING; DOCUMENTI DI PIANIFICAZIONE DEL TEST; GENERAZIONE DI CASI DI TEST; TECNICHE BLACK-BOX E WHITE-BOX; TESTING DI REGRESSIONE; TEST AUTOMATION; DOCUMENTAZIONE DEI DIFETTI E REPORT DELL’ESECUZIONE DEL TESTING.
Metodi Didattici
L’INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE PREVEDE:
- LEZIONI FRONTALI (48 ORE) A CARATTERE TEORICO PER IL TRASFERIMENTO DELLE CONOSCENZE NECESSARIE PER L’ANALISI, LA PROGETTAZIONE, L’IMPLEMENTAZIONE E IL TESTING DI SISTEMI SOFTWARE COMPLESSI;
- APPROFONDIMENTO DI ASPETTI PRATICI IN LABORATORIO (24 ORE) CON MOMENTI ESERCITATIVI SVOLTI IN COLLABORAZIONE TRA GLI STUDENTI E CON LA PRESENZA E L’INTERAZIONE DEL DOCENTE;
- PROGETTO DI GRUPPO (57 ORE) CHE SOLLECITA LA PARTECIPAZIONE ATTIVA DEGLI STUDENTI, L'ATTITUDINE ALLA RIELABORAZIONE PERSONALE DELLE NOZIONI ACQUISITE E L’APPLICAZIONE DELLE CONOSCENZE E DELLE CAPACITA’ DI COMPRENSIONE MATURATE;
- STUDIO INDIVIDUALE (96 ORE).

IN PARTICOLARE, TRAMITE IL PROGETTO LO STUDENTE POTRA’:
- SIMULARE DINAMICHE DI GRUPPO CHE AVVENGONO NEL MONDO DEL LAVORO;
- SIMULARE LA RACCOLTA DEI REQUISIT;
- SELEZIONARE, ELABORARE E INTERPRETARE LE INFORMAZIONI UTILI AL RAGGIUNGIMENTO DI OBIETTIVI PREFISSATI;
- IMPARARE AD INDIVIDUARE LA SOLUZIONE PIU’ COST-EFFECTIVE SULLA BASE DELL’ANALISI DEI TRADE-OFF TRA DIVERSI OBIETTIVI DI DESIGN E VERIFICARE CHE TALI OBIETTIVI SIANO STATI EFFETTIVAMENTE RAGGIUNTI;
- CONFRONTARE LE PROPRIE POSIZIONI CON QUELLE DEGLI ALTRI MEMBRI DEL TEAM SU ASPETTI CONCRETI MOTIVANDO ED ARGOMENTANDO OPPORTUNAMENTE LE PROPRIE POSIZIONI;
- COMPRENDERE LE ESIGENZE DI UNA APPROPRIATA COMUNICAZIONE;
- METTERE ALLA PROVA E MIGLIORARE LE PROPRIE ABILITA’ ATTRAVERSO LA CONDIVISIONE DI MODELLI E DOCUMENTI, SIMULAZIONI DI MEETING, REVISIONI DI PROGETTO, REPORT, RICHIESTE DI MODIFICHE, RISOLUZIONI DI PROBLEMI, NONCHE’ ATTRAVERSO L’APPROPRIATO UTILIZZO DI STRUMENTI DI COMUNICAZIONE SINCRONA E ASINCRONA;
- COMPRENDERE L’IMPORTANZA DI UN COMPORTAMENTO RESPONSABILE E PROFESSIONALMENTE ETICO.
Verifica dell'apprendimento
IL RAGGIUNGIMENTO DEGLI OBIETTIVI DELL’INSEGNAMENTO È CERTIFICATO MEDIANTE IL SUPERAMENTO DI UN ESAME CON VALUTAZIONE IN TRENTESIMI. L'ESAME PREVEDE LA REALIZZAZIONE DI UN PROGETTO DI GRUPPO (CON CONSEGNA DELLA RELATIVA DOCUMENTAZIONE), UNA PROVA SCRITTA E UNA PROVA ORALE.

LA CONSEGNA DELLA DOCUMENTAZIONE DEL PROGETTO DI GRUPPO E LA PROVA SCRITTA SONO PROPEDEUTICHE ALLA PROVA ORALE.

LA PROVA SCRITTA CONSISTE IN UN TEST CON DOMANDE SIA A RISPOSTA MULTIPLA CHE A RISPOSTA APERTA SU ARGOMENTI DEL PROGRAMMA DI INSEGNAMENTO. LA PROVA SCRITTA HA DI NORMA UNA DURATA DI CIRCA 60 MINUTI ED È FINALIZZATA A VERIFICARE LA CAPACITÀ DI APPLICARE CORRETTAMENTE LE CONOSCENZE TEORICHE E LA CAPACITÀ DI COMPRENSIONE DELLE PROBLEMATICHE PROPOSTE. LA PROVA SCRITTA SI CONSIDERA SUPERATA CON IL RAGGIUNGIMENTO DEL PUNTEGGIO DI 18/30.

LA PROVA ORALE CONSISTE IN UN COLLOQUIO CON DOMANDE E DISCUSSIONE SUGLI ASPETTI SALIENTI DEL PROGETTO DI GRUPPO REALIZZATO E SUI CONTENUTI TEORICI E METODOLOGICI INDICATI NEL PROGRAMMA DELL’INSEGNAMENTO ED È FINALIZZATA AD ACCERTARE IL LIVELLO DI CONOSCENZA RAGGIUNTO DALLO STUDENTE SUI CONTENUTI TEORICI E METODOLOGICI DEL PROGRAMMA DEL CORSO E LA LORO APPLICAZIONE AL PROGETTO, IL CONTRIBUTO DATO AL PROGETTO, LA COMPLETEZZA, CORRETTEZZA E SINTESI DELLA DOCUMENTAZIONE DI PROGETTO, NONCHÉ A VERIFICARE LA CAPACITÀ DI ESPOSIZIONE RICORRENDO ALLA TERMINOLOGIA APPROPRIATE, LA CAPACITÀ DI ORGANIZZAZIONE AUTONOMA DELL'ESPOSIZIONE E LA CAPACITÀ DI MOTIVARE ED ARGOMENTARE OPPORTUNAMENTE LE SCELTE DI PROGETTO.
Testi
B. BRUEGGE, A.H. DUTOIT, OBJECT ORIENTED SOFTWARE ENGINEERING – USING UML, PATTERNS AND JAVA, PRENTICE HALL, 3D EDITION, 2009

DISPENSE DEL DOCENTE

ALTRI TESTI DI APPROFONDIMENTO:
C. GHEZZI, D. MANDRIOLI, M. JAZAYERI, INGEGNERIA DEL SOFTWARE – FONDAMENTI E PRINCIPI, PRENTICE HALL, 2004
R. S. PRESSMAN, PRINCIPI DI INGEGNERIA DEL SOFTWARE, QUARTA EDIZIONE, MC GRAW HILL ITALIA, 2004
I. SOMMERVILLE, SOFTWARE ENGINEERING, ADDISON WESLEY
RALF BIERIG, STEPHEN BROWN, EDGAR GALVÁN, JOE TIMONEY, ESSENTIALS OF SOFTWARE TESTING, CAMBRIDGE UNIVERSITY PRESS, 2021
Altre Informazioni
SITO DELLA PIATTAFORMA DI E-LEARNING:
HTTP://ELEARNING.INFORMATICA.UNISA.IT/EL-PLATFORM/

CONTATTI DEL DOCENTE:
ADELUCIA@UNISA.IT
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-08-21]