Insegnamento

Ingegneria e qualità del software

Docente
Prof. Purificato Erasmo

Settore scientifico Disciplinare

ING-INF/05

CFU

12

Descrizione dell'insegnamento

Il corso di “Ingegneria e qualità del software” descrive i principi del processo di sviluppo dei sistemi e dei prodotti software, dall'analisi iniziale dei requisiti, alle metodologie di sviluppo fino al funzionamento e alla manutenzione dei sistemi finali. Lo scopo del corso include l'organizzazione dei progetti di sviluppo del software, la verifica e la validazione dei sistemi, i problemi di sicurezza e privacy, e gli aspetti legati alla qualità, inclusa la protezione del software e la responsabilità del software.

Obiettivi formativi (espressi come risultati di apprendimento attesi)

Al termine del corso, lo studente sarà in grado di:
1. Conoscenza e comprensione

  • Comprendere le differenze principali tra prodotto software e sistema software.
2. Capacità di applicare conoscenze e comprensione
  • Applicare le metodologie “agile” e “plan-driven” per lo sviluppo del software.
  • Progettare un’architettura software nelle sue componenti principali.
  • Documentare un sistema o un prodotto software.
  • Analizzare le problematiche di sicurezza di un sistema o prodotto software.
3. Competenze trasversale
  • Testare un sistema o prodotto software attraverso metodologie specifiche.
  • Gestire e pianificare un progetto.
  • Valutare la qualità di un sistema o prodotto software.

Prerequisiti

Non sono richiesti requisiti specifici.

Contenuti dell'insegnamento

  • Differenze tra sistema software e prodotto software
  • Processi software
  • Metodologie di sviluppo agile
  • Ingegneria dei requisiti
  • Features, scenari e storie
  • Modellazione dei sistemi software
  • Architettura dei sistemi software
  • Architettura dei prodotti software
  • Progettazione e implementazione del software
  • Software basato sul cloud
  • Architettura a microservizi
  • Software testing
  • Sistemi affidabili
  • Programmazione affidabile
  • Sicurezza e Privacy
  • Evoluzione del software
  • DevOps e gestione del codice
  • Ingegneria dei sistemi
  • Gestione del progetto
  • Pianificazione del progetto
  • Gestione della qualità

Attività didattiche

Didattica Erogativa
L'insegnamento prevede, per ciascun CFU, 5 ore di Didattica Erogativa, costituite da 2,5 videolezioni (tenendo conto delle necessità di riascolto da parte dello studente). Ciascuna videolezione esplicita i propri obiettivi e argomenti, ed è corredata da materiale testuale in pdf.

Didattica Interattiva
L'insegnamento segue quanto previsto dalle Linee Guida di Ateneo sulla Didattica Interattiva e l'interazione didattica, e propone, per ciascun CFU, 1 ora di Didattica Interattiva dedicata alle seguenti attività: lettura area FAQ, partecipazione ad e-tivity strutturata costituita da attività finalizzate alla restituzione di un feedback formativo e interazioni sincrone dedicate a tale restituzione.

Modalità di verifica dell'apprendimento

Tutte le prove di verifica e autoverifica intermedie previste dai Corsi ed erogate in modalità distance learning sono da considerarsi altamente consigliate e utili ai fini della preparazione e dello studio individuali. Le prove di verifica e autoverifica intermedie non sono obbligatorie ai fini del sostenimento della prova d´esame, la quale deve essere svolta in presenza dello studente davanti ad apposita Commissione ai sensi dell´art. 11 c.7 lett.e) del DM 270/2004.
La prova d’esame si svolge in forma scritta e sarà costituita da una serie di domande aperte (solitamente 10) e 2 esercizi (ad es. applicazione delle tecniche di stima COCOMO II, definizione di scenari e storie data una determinata specifica o documentazione del software attraverso diagrammi UML).
La prova avrà la durata di 90 minuti.

Libri di testo

Oltre alle lezioni realizzate dal Docente ed ai materiali didattici pubblicati in piattaforma, è obbligatorio lo studio dei seguenti testi:

  • Ian Sommerville, Software Engineering – 10th Edition, Pearson Education Ed., 2016 (per i capitoli a cui fanno riferimento le specifiche lezioni);
  • Ian Sommerville, Engineering Software Products – An introduction to modern software engineering, Pearson Education Ed., 2020.

Ricevimento studenti

Previo appuntamento (e.purificato@unimarconi.it).