INGEGNERIA DEL SOFTWARE

Nicola CAPUANO INGEGNERIA DEL SOFTWARE

0612700121
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA
INGEGNERIA INFORMATICA
2024/2025



OBBLIGATORIO
ANNO CORSO 3
ANNO ORDINAMENTO 2022
PRIMO SEMESTRE
CFUOREATTIVITÀ
1INGEGNERIA DEL SOFTWARE
432LEZIONE
216ESERCITAZIONE
2PROGETTO DI INGEGNERIA DEL SOFTWARE
324LABORATORIO


Obiettivi
IL CORSO PRESENTA I MODELLI, METODI E STRUMENTI PER LA DOCUMENTAZIONE, PROGETTAZIONE, REALIZZAZIONE E TESTING DI COMPONENTI SOFTWARE.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE
CENNI AL PROCESSO DI PRODUZIONE DEL SOFTWARE E ATTIVITÀ CORRELATE. I REQUISITI E LA SPECIFICA DI UN COMPONENTE SOFTWARE. LA METODOLOGIA DESIGN BY CONTRACT. MODELLI STATICI E DINAMICI PER LA PROGETTAZIONE DI UN COMPONENTE SOFTWARE. IL FORMALISMO UML PER LA DESCRIZIONE DEI MODELLI DEL SOFTWARE. METODOLOGIE PER IL TESTING DI UN COMPONENTE SOFTWARE.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE
PARTECIPARE A UN PROGETTO SEGUENDO UN PROCESSO FORMALIZZATO DI PRODUZIONE DEL SOFTWARE. ANALIZZARE I REQUISITI E DEFINIRE LE SPECIFICHE DI UN COMPONENTE SOFTWARE. PROGETTARE UN COMPONENTE SOFTWARE ATTRAVERSO LA DEFINIZIONE DI MODELLI STATICI E DINAMICI. DESCRIVERE LE SCELTE PROGETTUALI ATTRAVERSO UML. TESTARE UN COMPONENTE SOFTWARE. UTILIZZARE STRUMENTI SOFTWARE PER AUTOMATIZZARE LA DOCUMENTAZIONE, LA COMPILAZIONE E IL TESTING DI COMPONENTI SOFTWARE. UTILIZZARE STRUMENTI AUTOMATICI PER IL CONTROLLO DELLE REVISIONI.
Prerequisiti
PROPEDEUTICITÀ: ALGORITMI E STRUTTURE DATI, ANALISI DEI SEGNALI, ELETTROTECNICA

PER IL PROFICUO RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI È FORTEMENTE CONSIGLIATA LA FREQUENZA DEL CORSO DI PROGRAMMAZIONE AD OGGETTI.
Contenuti
UNITÀ DIDATTICA 1: IL CICLO DI VITA DEL SOFTWARE (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/0/0)
- 1 (2 ORE LEZIONE): INTRODUZIONE AL CICLO DI VITA DEL SOFTWARE E ALLE ATTIVITÀ CORRELATE
- 2 (2 ORE LEZIONE): MODELLI DI PROCESSO A CASCATA E ITERATIVO


CONOSCENZE E CAPACITÀ DI COMPRENSIONE: I PRINCIPALI MODELLI DI PROCESSO SOFTWARE E LE ATTIVITÀ PRINCIPALI DI UN PROCESSO.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: PARTECIPARE A UN PROGETTO SEGUENDO UN PROCESSO FORMALIZZATO DI PRODUZIONE DEL SOFTWARE.


UNITÀ DIDATTICA 2: REQUISITI, SPECIFICA E DOCUMENTAZIONE DI UN COMPONENTE SOFTWARE (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/2)
- 3 (2 ORE LEZIONE): REQUISITI DI UN COMPONENTE SOFTWARE. CATEGORIE DI REQUISITI. CENNI ALLE ATTIVITÀ DI REQUIREMENTS ENGINEERING.
I CASI D'USO. USE CASE DIAGRAM DI UML.
- 4 (2 ORE ESERCITAZIONE): ESEMPI DI DESCRIZIONE DI CASI D'USO E DI USE CASE DIAGRAMS.
- 5 (2 ORE LEZIONE): LA METAFORA DEL CONTRATTO PER LA SPECIFICA DI UN COMPONENTE SOFTWARE. PRECONDIZIONI. POSTCONDIZIONI.
INVARIANTI. SPECIFICA DEI PARAMETRI DI UN SOTTOPROGRAMMA.
- 6 (2 ORE ESERCITAZIONE): ESEMPI DI SPECIFICA DI SOTTOPROGRAMMI E STRUTTURE DATI USANDO LA METAFORA DEL CONTRATTO.
- 7 (2 ORE LABORATORIO): IL TOOL DOXYGEN PER LA GENERAZIONE AUTOMATICA DELLA DOCUMENTAZIONE DI COMPONENTI SOFTWARE.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: I REQUISITI E LA SPECIFICA DI UN COMPONENTE SOFTWARE. LA METODOLOGIA DESIGN BY CONTRACT.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: ANALIZZARE I REQUISITI E DEFINIRE LE SPECIFICHE DI UN COMPONENTE SOFTWARE. DESCRIVERE I CASI D'USO ATTRAVERSO IL LINGUAGGIO UML. UTILIZZARE STRUMENTI AUTOMATICI PER LA DOCUMENTAZIONE DEL SOFTWARE.

UNITÀ DIDATTICA 3: PROGETTAZIONE DI UN COMPONENTE SOFTWARE (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 8/8/0)
- 8 (2 ORE LEZIONE): PROPRIETÀ DI UN SISTEMA SOFTWARE. MODELLI DEL SOFTWARE. MODELLI STATICI E DINAMICI. LA PROGETTAZIONE ATTRAVERSO LA DEFINIZIONE DI MODELLI.
- 9 (2 ORE LEZIONE): DECOMPOSIZIONE DI UN COMPONENTE SOFTWARE. COESIONE E ACCOPPIAMENTO. DIAGRAMMA UML DEI COMPONENTI.
- 10 (2 ORE ESERCITAZIONE): ESEMPI DI DECOMPOSIZIONE DI UN COMPONENTE SOFTWARE E RAPPRESENTAZIONE MEDIANTE DIAGRAMMA UML DEI
COMPONENTI.
- 11 (2 ORE LEZIONE): DECOMPOSIZIONE ORIENTATA AGLI OGGETTI. RELAZIONI DI EREDITARIETÀ, ASSOCIAZIONE, COMPOSIZIONE. LA METAFORA DEL CONTRATTO PER LE RELAZIONI DI EREDITARIETÀ. DIAGRAMMA UML DELLE CLASSI E DIAGRAMMA UML DEGLI OGGETTI.
- 12 (2 ORE ESERCITAZIONE): ESEMPI DI DECOMPOSIZIONE ORIENTATA AGLI OGGETTI E RAPPRESENTAZIONE MEDIANTE DIAGRAMMI UML DELLE CLASSI E DEGLI OGGETTI.
- 13 (2 ORE ESERCITAZIONE): DESCRIZIONE DEL COMPORTAMENTO DI UN COMPONENTE MEDIANTE DIAGRAMMI UML DEGLI STATI E DIAGRAMMI UML DELLE SEQUENZE.
- 14 (2 ORE LEZIONE): PRINCIPI DI BUONA PROGETTAZIONE DEL SOFTWARE: KEEP IT SIMPLE (KISS), DON'T REPEAT YOURSELF (DRY), PRINCIPIO DELLA MINIMA SORPRESA.
- 15 (2 ORE LEZIONE): ESEMPI DI APPLICAZIONE DEI PRINCIPI DI BUONA PROGETTAZIONE.


CONOSCENZE E CAPACITÀ DI COMPRENSIONE: MODELLI STATICI E DINAMICI PER LA PROGETTAZIONE DI UN COMPONENTE SOFTWARE. IL FORMALISMO UML PER LA DESCRIZIONE DEI MODELLI DEL SOFTWARE.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: PROGETTARE UN COMPONENTE SOFTWARE ATTRAVERSO LA DEFINIZIONE DI MODELLI STATICI E DINAMICI. DESCRIVERE LE SCELTE PROGETTUALI ATTRAVERSO UML.

UNITÀ DIDATTICA 4: TESTING E DEBUGGING (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/2)
- 16 (2 ORE LEZIONE): CORRETTEZZA DI UN COMPONENTE SOFTWARE. INTRODUZIONE AL TESTING. TESTING FUNZIONALE.
- 17 (2 ORE LEZIONE): TESTING STRUTTURALE.
- 18 (2 ORE ESERCITAZIONE): ESEMPI DI DEFINIZIONE DI TEST CON APPROCCIO FUNZIONALE E STRUTTURALE.
- 19 (2 ORE LABORATORIO): USO DELLE LIBRERIE CUNIT E JUNIT PER L'AUTOMAZIONE DEI TEST.
- 20 (2 ORE LABORATORIO): USO DI UN DEBUGGER SIMBOLICO.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: METODOLOGIE PER IL TESTING DI UN COMPONENTE SOFTWARE.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: TESTARE UN COMPONENTE SOFTWARE. UTILIZZARE STRUMENTI SOFTWARE PER AUTOMATIZZARE IL TESTING DI COMPONENTI SOFTWARE.

UNITÀ DIDATTICA 5: STRUMENTI PER IL BUILD E IL CONTROLLO DELLE REVISIONI (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/2)
- 21 (2 ORE LABORATORIO): AUTOMAZIONE DEL BUILD IN C TRAMITE MAKE
- 22 (2 ORE LABORATORIO): AUTOMAZIONE DEL BUILD IN JAVA TRAMITE MAVEN
- 23 (4 ORE LABORATORIO): LA GESTIONE DELLE REVISIONI CON GIT

CONOSCENZE E CAPACITÀ DI COMPRENSIONE:
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: UTILIZZARE STRUMENTI SOFTWARE PER AUTOMATIZZARE LA COMPILAZIONE E IL CONTROLLO DELLE REVISIONI.

UNITÀ DIDATTICA 6: PROJECT WORK (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 0/0/24)

CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: SVILUPPARE UN PROGETTO SOFTWARE COMPLETO IN TEAM DOCUMENTANDO I RISULTATI DELLE DIVERSE FASI DEL PROCESSO.

TOTALE ORE LEZIONE/ESERCITAZIONE/LABORATORIO: 20/14/38
Metodi Didattici
L'INSEGNAMENTO (72H DI LEZIONI FRONTALI, ESERCITAZIONI E ATTIVITÀ DI LABORATORIO) È CARATTERIZZATO DA UN SETTING DINAMICO, CHE ABBINA ALLE LEZIONI TEORICHE ESERCITAZIONI PRATICHE CON CASI DI STUDIO PER FACILITARE LA PARTECIPAZIONE ATTIVA DEGLI STUDENTI CHE AVRANNO L'OPPORTUNITÀ DI APPLIACRE CONCRETAMENTE LE CONOSCENZE TEORICHE E METODOLOGICHE.IN PARTICOLARE, LE ATTIVITÀ DIDATTICHE INCLUDERANNO LEZIONI (34 ORE), ESERCITAZIONI (14 ORE) E LABORATORIO (24 ORE), QUESTE ULTIME DEDICATE ALLO SVILUPPO DEL PROJECT WORK. PER LO SVILUPPO DEL PROGETTO GLI STUDENTI, ORGANIZZATI IN GRUPPI DI 2-4 PERSONE, DOVRANNO APPLICARE LE CONOSCENZE ACQUISITE PER LA REALIZZAZIONE DI UN SEMPLICE (DAL PUNTO DI VISTA IMPLEMENTATIVO) SISTEMA SOFTWARE CON PARTICOLARE ENFASI SUGLI ASPETTI DI DOCUMENTAZIONE DELLE DIVERSE FASI DEL PROCESSO DI SVILUPPO.
IL PROGETTO SARÀ ALTRESÌ FUNZIONALE A SVILUPPARE E RAFFORZARE LE CAPACITÀ DI LAVORARE IN TEAM.
LE ATTIVITÀ DIDATTICHE SARANNO SUPPORTATE DALL'USO DELLA PIATTAFORMA DI E-LEARNING DI ATENEO PER FACILITARE E STIMOLARE LA DISCUSSIONE E IL DIBATTITO TRA GLI STUDENTI, NONCHÉ PER LA NOTIFICA E LA DISTRIBUZIONE DI MATERIALE DIDATTICO.
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
L'ESAME È FINALIZZATO A VALUTARE LE CONOSCENZE E LA COMPRENSIONE COMPLESSIVA DEI CONCETTI PRESENTATI NEL CORSO, LA CAPACITÀ DI APPLICARE TALI CONOSCENZE PER REALIZZARE E DOCUMENTARE APPLICAZIONI SOFTWARE E LA CAPACITÀ DI COMUNICARE E PRESENTARE IL LAVORO SVOLTO.
LA PROVA CONSISTE NELLA DISCUSSIONE DI UN ELABORATO, SVOLTO DURANTE IL CORSO, IL CUI SCOPO È VALUTARE LA CAPACITÀ DI APPLICARE LE CONOSCENZE, DI COMUNICARE ATTRAVERSO LA PRESENTAZIONE DEI RISULTATI RAGGIUNTI, 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.
OGNI MEMBRO DEL GRUPPO DOVRÀ PRESENTARE IL PROPRIO CONTRIBUTO PER LA REALIZZAZIONE DEL PROGETTO INSIEME A UNA DISCUSSIONE SUGLI STRUMENTI E LE TECNOLOGIE UTILIZZATE.
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 PROGETTUALE ED IL COLLOQUIO ORALE AVRANNO UGUAL PESO. 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
TESTO DI RIFERIMENTO:
F. TSUI, O. KARAM, B. BERNAL: “ESSENTIALS OF SOFTWARE ENGINEERING” (5TH ED.), JONES & BARTLETT

TESTI DI CONSULTAZIONE:
M. FOWLER: UML DISTILLED (3RD ED.), ADDISON WESLEY.

MATERIALE DIDATTICO INTEGRATIVO SARA' DISPONIBILE NELLA SEZIONE DEDICATA DELL'INSEGNAMENTO ALL'INTERNO DELLA PIATTAFORMA E-LEARNING DI ATENEO (HTTPS://ELEARNING.UNISA.IT) ACCESSIBILE AGLI STUDENTI DEL CORSO TRAMITE LE CREDENZIALI UNICHE DI ATENEO.
Altre Informazioni
L'INSEGNAMENTO È EROGATO IN ITALIANO.
Orari Lezioni

  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-11-18]