INGEGNERIA DEL SOFTWARE

Carmine GRAVINO INGEGNERIA DEL SOFTWARE

0512100019
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA
INFORMATICA
2016/2017



OBBLIGATORIO
ANNO CORSO 3
ANNO ORDINAMENTO 2008
PRIMO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
330LABORATORIO


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;
- “ENTRARE” VELOCEMENTE IN DOMINI DI APPLICAZIONE SEMPRE NUOVI IN MODO DA COMPRENDERNE LE ESIGENZE E TRADURLE IN SISTEMI SOFTWARE DI QUALITA’;
- INDIVIDUARE LA SOLUZIONE CHE BILANCI AL MEGLIO OBIETTIVI DIVERSI E SPESSO CONTRASTANTI;
- MOTIVARE LE SCELTE FATTE;
- 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 PIU’ EFFICACI PER LO SPECIFICO SCOPO.
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

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

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)

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

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

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 (30 ORE) CON MOMENTI ESERCITATIVI SVOLTI IN COLLABORAZIONE TRA GLI STUDENTI E CON LA PRESENZA E L’INTERAZIONE DEL DOCENTE;
- PROGETTO DI GRUPPO (51 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
LA VERIFICA DELL’APPRENDIMENTO SI BASA SU:

1. REALIZZAZIONE E DISCUSSIONE DI UN PROGETTO DI GRUPPO PER ACCERTARE LE CAPACITA’ PRATICHE ACQUISITE E L’AUTONOMIA DI GIUDIZIO.

I CRITERI DI VALUTAZIONE RIGUARDANO LA COMPLETEZZA, LA CORRETTEZZA E LA SINTESI DELLA DOCUMENTAZIONE DI PROGETTO; LA PROPRIETA’ DI LINGUAGGIO E LA CAPACITA’ DI MOTIVARE ED ARGOMENTARE OPPORTUNAMENTE LE SCELTE DURANTE LA DISCUSSIONE DEL PROGETTO.

2. UNA PROVA SCRITTA E/O ORALE PER ACCERTARE LE CONOSCENZE TEORICHE ACQUISITE.
I CRITERI DI VALUTAZIONE RIGUARDANO LA COMPLETEZZA, LA CORRETTEZZA E LA CHIAREZZA ESPOSITIVA.

IL VOTO VIENE CALCOLATO MEDIANDO I VOTI DELLE PROVE.
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
Altre Informazioni
SITO DELLA PIATTAFORMA DI E-LEARNING:
HTTP://ELEARNING.INFORMATICA.UNISA.IT/EL-PLATFORM/

CONTATTI DEL DOCENTE:
fferrucci@unisa.it
gravino@unisa.it
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2019-03-11]