Tu sei qui

Fondamenti di ingegneria del software

Fondamenti di Ingegneria del Software
Corso di Laurea Magistrale in Informatica F008

SCV0152
Docente: Alberto Coen Porisini


CFU SSD LEZIONI ESERCITAZIONI ANNO LINGUA
9 ING-INF/05 56 24 I Italiano


Obiettivi dell’insegnamento e risultati di apprendimento attesi
Il corso ha lo scopo di fornire i fondamenti di Ingegneria del Software. In particolare, scopo del corso è fornire agli studenti le conoscenze fondamentali sull’organizzazione delle attività di sviluppo del software (cicli di vita), sulla specifica dei requisiti, su verifica e validazione, e sugli aspetti gestionali dello sviluppo. Inoltre il corso presenta i paradigmi computazionali e architetturali dei sistemi sequenziali, concorrenti e distribuiti.
I risultati di apprendimanto attesi sono i seguenti.
Conoscenza e capacità di comprensione

  • Conoscenza delle caratteristiche dei processi di sviluppo del software e dei loro semilavorati (specifiche dei requisiti, modelli, test case, piani di sviluppo, ecc.).
  • Conoscenza delle problematiche e dei metodi di analisi dei requisiti.
  • Conoscenza delle problematiche e delle strategie di verifica e validazione del software.
  • Conoscenza dei modelli computazionali e architetturali dei sistemi informatici.

Conoscenza e capacità di comprensione applicate

  • Conoscenza e capacità di applicare diverse tecniche e linguaggi di specifica dei requisiti (DFD, Reti di Petri, Z, TRIO).
  • Conoscenza e capacità di applicare tecniche di stima dei costi (Per analogia, COCOMO, Function Point).
  • Capacità di applicare diverse tecniche di testing (strutturale e funzionale) e di valutare la copertura ottenuta.
  • Capacità di applicare i diversi paradigmi computazionali e architetturali nella definizione di un sistema.

Autonomia di giudizio

  • Capacità di valutare le strategie di implementazione più convenienti, in base ai requisiti e vincoli presenti.In particolare, saper valutare quale tra i modelli di cicli di vita si adatta meglio alle caratteristiche tipiche di un dato prpocesso e prodotto software.
  • Capacità di scegliere tecniche e linguaggi di specifica dei requisiti adatti alle caratteristiche del software da sviluppare.
  • Capacità di scegliere le tecniche di verifica e validazione adatti alle caratteristiche del software, ai costi sostenibili e ai livelli di confidenza che occorre raggiungere.
  • Capacità di individuare i paradigmi e i modelli computazionali più adeguati rispetto alle caratteristiche del sistema da realizzare
    Capacità di apprendere.
  • Grazie alla capacità –sviluppata durante tutto il corso– di rapportare puntualmente tecniche, metodi e strumenti alle caratteristiche del software e delle relative attività di sviluppo, lo studente viene messo in grado di apprendere nuove tecniche, metodi e strumenti, e anche ad affinare ed adattare autonomamente quanto appreso nel corso.

Abilità comunicative

  • Conoscere e saper usare i formalismi normalmente usati per descrivere analizzare e progettare sistemi software.
  • Conoscere la terminologia inglese comunemente usata nel campo.

Prerequisiti
Nessun prerequisito.

Contenuti e programma del corso

  • Introduzione all’ingegneria del software. Descrizione e analisi dei cicli di vita del software, con particolare enfasi su motivazioni e applicabilità. Modelli a cascata, iterativo, a spirale.
    (6 ore di lez. 0 ore di esercitazione)
  • La specifica dei requisiti: caratteristiche e scopi. Tecniche e linguaggi: DFD, Reti di Petri, Z, TRIO.
    (14 ore di lez. 9 ore di esercitazione)
  • Verifica e Validazione: problematiche, principi e limiti. Tecniche di analisi statica (Analisi di Data Flow). Analisi Dinamica (Fondamenti teorici del testing, testing strutturale e funzionale, criteri di copertura, testing in the large), Cenni all’esecuzione simbolica.
    (10 ore di lez. 5 ore di esercitazione)
  • Stima dei costi dello sviluppo. Principi e tecniche (COCOMO-II, Punti Funzione).
    (8 ore di lez. 4 ore di esercitazione)
  • I paradigmi dei linguaggi programmazione: linguaggi imperativi, funzionali e logici
    (12 ore di lez. 6 ore di esercitazione)
  • I modelli concorrenti e i modelli distribuiti (memoria condivisa vs message passing)
    (6 ore di lez. 0 ore di esercitazione)

Tipologia delle attività didattiche
Le lezioni frontali sono utilizzate per l’esposizione delle problematiche che caratterizzano il software e le varie attività di sviluppo, nonché dei principi e delle tecniche proposti a supporto di tali attività.
Le esercitazioni sono utilizzate per esemplificare e discutere le modalità di utilizzo delle tecniche e dei linguaggi visti a lezione.
Testi e materiale didattico
Il corso si appoggerà su diverso materiale fornito dal docente: i lucidi utilizzati a lezione e articoli scientifici. Tale materiale sarà messo a disposizione sul sito e-learning.

Modalità di verifica dell’apprendimento
Prova scritta costituita da esercizi da risolvere e domande teoriche.

Orario di ricevimento
Su appuntamento.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer