Università degli studi dell'Insubria

FONDAMENTI DI INGEGNERIA DEL SOFTWARE

A.A. di erogazione 2015/2016

Laurea Magistrale in INFORMATICA
 (A.A. 2015/2016)
Anno di corso: 
1
Tipologia di insegnamento: 
Caratterizzante
Settore disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Crediti: 
9
Ore di attivita' frontale: 
72
Dettaglio ore: 
Lezione (72 ore)

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.

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

Prerequisiti: 

Nessuno prerequisito.

- 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)

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.

Cerchi il programma? Potrebbe non essere ancora stato caricato o riferirsi ad insegnamenti che verranno erogati in futuro.
Seleziona l‘anno in cui ti sei immatricolato e troverai le informazioni relative all'insegnamento del tuo piano di studio.

A.A. 2017/2018

Anno di corso: 1
Curriculum: GENERICO

A.A. 2016/2017

Anno di corso: 1
Curriculum: GENERICO

A.A. 2014/2015

Anno di corso: 1
Curriculum: GENERICO

A.A. 2013/2014

Anno di corso: 1
Curriculum: GENERICO