Architetture software (2006/2007)

Corso disattivato non visibile

Codice insegnamento
4S00008
Crediti
10
Coordinatore
Luca Vigano'
Altri corsi di studio in cui è offerto
L'insegnamento è organizzato come segue:
Modulo Crediti Settore disciplinare Periodo Docenti
Teoria (modulo I) 4 INF/01-INFORMATICA 1° Q Luca Vigano'
Laboratorio (modulo I) 1 INF/01-INFORMATICA 1° Q Monica Reggiani
Teoria (modulo II) 4 INF/01-INFORMATICA 2° Q Luca Vigano'
Laboratorio (modulo II) 1 INF/01-INFORMATICA 2° Q Monica Reggiani

Obiettivi formativi

Modulo: Laboratorio (modulo I)
-------
Il corso introduce lo studente alla progettazione e realizzazione di sistemi software. Attraverso la sperimentazione nello sviluppo di diversi progetti, vengono apprese una serie di tecniche avanzate per la realizzazione di sistemi software ad oggetti.


Modulo: Teoria (modulo II)
-------
Il corso fornisce nozioni scientifiche e professionali di base
sulle architetture software, presentando un'analisi comparata
di architetture software assieme a linguaggi di modellazione e
di specifica delle stesse.


Modulo: Laboratorio (modulo II)
-------
Si vedano gli obiettivi formativi del modulo I.


Modulo: Teoria (modulo I)
-------
Il corso fornisce nozioni scientifiche e professionali di
base sull'ingegneria del software, affrontando le diverse
fasi (pianificazione, progettazione, collaudo, manutenzione)
dei processi di sviluppo e produzione del software.

Programma

Modulo: Laboratorio (modulo I)
-------
Il primo modulo del corso copre le motivazioni e i benefici dell'uso dei design pattern per la programmazione ad oggetti.
Dopo una introduzione al concetto di design pattern, diversi problemi di esempio sono lo spunto per analizzare in dettaglio il processo di sviluppo e l'applicazione dei design pattern. Nella discussione degli esempi, particolare attenzione viene prestata alla definizione e uso dei principi base della progettazione orientata agli oggetti. Vengono inoltre discussi in dettaglio alcuni dei pattern piu` noti quali Strategy, Observer, State, Adapter e Abstract Factory.
I progetti di programmazione in linguaggio Java permettono agli studenti di acquisire l'esperienza necessaria per l'applicazione di questi pattern.


Modulo: Teoria (modulo II)
-------
- Analisi e specifica di architetture software:
-- Introduzione all'architettura del software.
-- Tassonomia di architetture software di uso più frequente.
-- Gestione delle configurazioni di architetture software.
-- Modellazione, analisi e specifica di architetture software ad oggetti.
-- Analisi comparata di architetture software in casi di studio.

- Linguaggi di modellazione di architetture software:
-- Il linguaggio standard UML 2 (notazione e metodologie d'uso dei
principali tipi di diagrammi).

- Specifica di vincoli su modelli di architetture ad oggetti:
-- Il linguaggio standard OCL 2 (notazione e metodologie d'uso dei
principali costrutti).

- Validazione e collaudo nelle architetture software:
-- Prototipazione rapida di specifiche di architetture software e automazione nel collaudo di prototipi di architetture.
-- Strategie di collaudo di architettura: di unità, di integrazione, di sistema.
-- Metodi di collaudo di architetture software ad oggetti.


Modulo: Laboratorio (modulo II)
-------
Il secondo modulo del corso fornisce agli studenti gli strumenti necessari nella progettazione di processo.
Vengono presentati programmi per il computer-aided software engineering (CASE) che possono essere utilizzati nella realizzazione dei progetti proposti.
In particolare, gli studenti vengono esposti all'uso di UML nella progettazione e realizzazione di piccoli componenti software e agli strumenti per il controllo delle versioni di progetto

Attraverso lo svolgimento di alcuni progetti in gruppi di lavoro, lo studente apprenderà come lavorare in modo efficace all'interno di un piccolo team di sviluppo e come documentare i concetti di software design attraverso la creazione di opportuni diagrammi UML.


Modulo: Teoria (modulo I)
-------
- Introduzione all'ingegneria del software:
-- Il software: prodotto e processo.
-- Caratteristiche di qualità.
-- Ciclo di vita del software.
-- Fasi ed attività del processo produttivo.
-- Modelli del ciclo di vita dei sistemi software.

- Pianificazione del processo produttivo:
-- Studio di fattibilità.
-- Determinazione di obiettivi e vincoli.
-- Gestione dei rischi.
-- Controllo dei processi di produzione.
-- Gestione delle configurazioni.
-- Versionamento.
-- Amministrazione di progetto.

- Progettazione del software:
-- Cattura ed analisi dei requisiti.
-- Prototipazione rapida di modelli.
-- Specifica e codifica.
-- Verifica di correttezza.
-- Scalabilità.
-- Progettazione basata su componenti.
-- Norme di codifica e di documentazione.

- Validazione e collaudo del software:
-- Metodi e strategie di validazione.
-- Metodi e strategie di collaudo (di unità, di integrazione, funzionale, di sistema).
-- Metodi e strategie di collaudo di software ad oggetti.
-- Metriche di collaudo.

- Valutazione:
-- Metriche del software.
-- Modelli di costo.
-- Misurazione e allocazione delle risorse nei progetti software.
-- Progettazione di qualità.
-- Standard ISO 9001, 9000-3, 9126.

Modalità d'esame

Modulo: Laboratorio (modulo I)
-------
La verifica dell'apprendimento dei concetti proposti avviene mediante lo sviluppo di alcuni progetti in gruppi di lavoro.
Il superamento delle prove porta all'acquisizione di 1 credito che si aggiunge ai 4 crediti del corso di Architetture Software.


Modulo: Teoria (modulo II)
-------
La verifica del profitto avviene mediante uno scritto sugli argomenti
del programma. Il superamento della prova porta all'acquisizione di
4 crediti, a cui si aggiunge 1 credito per il secondo modulo del
corso di Laboratorio di architetture software.

Per gli studenti del Corso di Laurea in Informatica, i crediti si
intendono formalmente acquisiti quando entrambe le prove relative
ai due moduli del corso sono state superate. Ciò dunque porta
all'acquisizione di 8 crediti, a cui si aggiungono 2 crediti per il
Laboratorio, in quanto ciascuna prova include la valutazione del
corrispondente modulo di Laboratorio.


Modulo: Laboratorio (modulo II)
-------
La verifica dell'apprendimento dei concetti proposti avviene mediante lo sviluppo di alcuni progetti in gruppi di lavoro.
Il superamento delle prove porta all'acquisizione di 1 credito che si aggiunge ai 4 crediti del corso di Architetture Software.


Modulo: Teoria (modulo I)
-------
La verifica del profitto avviene mediante uno scritto sugli
argomenti del programma. Il superamento della prova porta
all'acquisizione di 4 crediti, a cui si aggiunge 1 credito per il
primo modulo del corso di Laboratorio di architetture software.

Per gli studenti del Corso di Laurea in Informatica, i crediti si
intendono formalmente acquisiti quando entrambe le prove relative
ai due moduli del corso sono state superate. Ciò dunque porta
all'acquisizione di 8 crediti, a cui si aggiungono 2 crediti per il
Laboratorio, in quanto ciascuna prova include la valutazione del
corrispondente modulo di Laboratorio.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Ian Sommerville Software Engineering (Edizione 8) Addison Wesley 2006 9780321313 Versione italiana: Ingegneria del Software, 7 edizione, Pearson-Addison Wesley, ISBN 88-7192-241-7
E. Gamma, R. Helm, R. Johnson, J. Vlissides Design Patterns - ed. italiana Addison-Wesley 2002
E. Gamma, R. Helm, R. Johnson, J. Vlissides Design Patterns: elements of reusable Object-Oriented Software (Edizione 1) Addison-Wesley 1995
E. Freeman, E. Freeman Head First - Design Patterns (Edizione 1) O'Reilly 2004