Università degli studi dell'Insubria

PROGETTAZIONE DEL SOFTWARE

A.A. di erogazione 2019/2020
Insegnamento obbligatorio

Laurea triennale in INFORMATICA
 (A.A. 2018/2019)
Anno di corso: 
2
Tipologia di insegnamento: 
Caratterizzante
Settore disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Crediti: 
8
Ciclo: 
Primo Semestre
Ore di attivita' frontale: 
72
Dettaglio ore: 
Lezione (48 ore), Esercitazione (24 ore)

L'obiettivo del corso è di fornire agli studenti le conoscenze necessarie allo sviluppo di progetti software che siano pienamente soddisfacenti dal punto di vista sia della loro funzionalità sia di tutte le altre qualità importanti per gli utenti e per gli sviluppatori. A tale scopo gli studenti apprendono sia a livello concettuale sia a livello applicativo le tecniche di progettazione del software, il linguaggio de facto standard Unified Modeling Language (UML) e i design pattern.
Al termine del corso, lo studente sarà in grado di
1. Applicare i fondamenti concettuali della progettazione del software.
2. Riconoscere e utilizzare diversi stili di progetto del software, con applicazioni specifiche ai sistemi ad eventi.
3. Conoscere e applicare i diagrammi più importanti e utilizzati di UML, quali Use Case Diagram, Sequence Diagram, Communication Diagram, Class Diagram, Package Diagram, Object Diagram, Statecharts, Activity Diagram, Timing Diagram, Composite Structure Interaction Diagram.
4. Conoscere i principali design pattern e le loro famiglie.
5. Applicare UML e design pattern per la progettazione di sistemi software
Lo studente dovrà inoltre sviluppare una consapevole autonomia di giudizio per affrontare individualmente e in gruppo l’analisi di un progetto di un sistema software anche complesso e a vari livelli.
Lo studente acquisirà la padronanza della terminologia specifica (talvolta standard e anche in lingua inglese) usata nell'ambito della progettazione del software e sarà in grado di presentare con la corretta terminologia le caratteristiche funzionali e di qualità del progetto di un sistema software in modo da poterne illustrare i punti di forza e recepire eventuali proposte per modifiche e miglioramenti dagli altri attori del processo di produzione del software.

È richiesta la conoscenza della programmazione del software. Le conoscenze e abilità necessarie per un proficuo apprendimento di questo insegnamento sono impartite nel corso fondamentale del primo anno di Programmazione, che dunque costituisce propedeuticità obbligatoria. È opportuna una buona conoscenza della lingua inglese scritta, che permetta la comprensione di parte del materiale fornito dal docente e di quello disponibile in rete.

Le lezioni riguarderanno i seguenti argomenti:
La qualità del software e il suo processo produttivo (4 h, obiettivo formativo 1)
- introduzione all'ISO9126
- il modello di sviluppo a cascata
Progettazione Object-oriented in piccolo e relazioni con la codifica (8 h, obiettivo formativo 2)
- principi di progettazione in piccolo
- information hiding
- progettazione dei metodi
Aspetti concettuali della progettazione del software in grande (8 h, obiettivo formativo 2)
- i moduli e le loro relazioni
- l’ereditarietà come strumento concettuale per la progettazione del software
- linguaggi di descrizione dei progetti software
- stili di progetto
I sistemi a eventi e le interfacce grafiche (10 h, obiettivo formativo 2)
- i meccanismi dei sistemi a eventi
- gli elementi grafici
- la gestione degli eventi
Unified Modeling Language (UML) (32 h, obiettivi formativi 3 e 5)
- Struttura di UML e famiglie di diagrammi
- Use Case Diagram, Sequence Diagram, Communication Diagram, Class Diagram, Package Diagram, Object Diagram, Statecharts, Activity Diagram, Timing Diagram, Composite Structure Interaction Diagram
Design pattern (12 h, obiettivi formativi 4 e 5)
- Concetto e utilità dei design pattern
- Tassonomia dei design pattern
- Esempi e applicazioni di design pattern
- Model-View-Controller
L'implementazione delle interfacce grafiche verrà illustrata usando come riferimento il linguaggio di programmazione Java.

Il corso si articola in lezioni frontali (48 ore) ed esercitazioni (24 ore).
Le lezioni sono dedicate all'illustrazione degli aspetti concettuali e applicativi della progettazione del software.
Gli argomenti trattati a lezione sono oggetto di esercitazioni che prevedono la partecipazione attiva degli studenti e riguardano lo sviluppo di sistemi a eventi tramite l'implementazione di interfacce grafiche in Java e lo sviluppo di progetti di piccole e medie dimensioni tramite UML e l'utilizzo opzionale di appositi strumenti di sviluppo.

Il grado di apprendimento viene verificato tramite una prova scritta della durata di 4 ore. Durante il corso sono previste due prove parziali il cui superamento comporta il superamento dell’esame.
Lo scopo della prova scritta (e delle prove parziali) è di verificare l’apprendimento e la comprensione degli elementi relativi alla progettazione dal punto di vista teorico e applicato (in problemi di non elevata complessità). Le prove scritte (come le prove parziali) consistono di:
- domande per la verifica delle conoscenze degli aspetti più propriamente concettuali, con risposte da fornire su carta
- un esercizio per la verifica della comprensione e della conoscenza dei concetti fondamentali di UML e dei design pattern e la capacità di sviluppare progetti software, da sviluppare su carta oppure tramite strumenti su computer a discrezione dello studente
- un esercizio per la verifica della capacità di progettare e realizzare interfacce grafiche, da sviluppare su PC nel linguaggio Java
La conoscenza della terminologia specifica di dominio viene testata implicitamente, poiché domande e specifiche dei problemi utilizzano tale terminologia. L'autonomia di giudizio verrà valutata grazie alle scelte effettuate nello svolgimento dell'esame scritto.
Le risposte alle domande pesano complessivamente per il 35% nella formulazione del voto finale, mentre gli esercizi determinano il restante 65% del voto finale.
Il voto è espresso in trentesimi.

I testi consigliati sono:
• Luciano Baresi, Luigi Lavazza, Massimiliano Pianciamore Dall'idea al codice con UML 2. Guida all'utilizzo di UML attraverso esempi (con CD-ROM). Pearson Italia (ISBN 978-8871922393)
• Martin Fowler. UML distilled. Guida rapida al linguaggio di modellazione standard. Pearson Italia, 2010 (ISBN-10: 887192598X, ISBN-13: 978-8871925981) Creating Components: Object Oriented, Concurrent, and Distributed Computing in Java di Charles W. Kann
Tuttavia, data la generalità degli argomenti trattati, esistono diversi libri che possono proficuamente essere utilizzati dagli studenti al posto di quelli consigliati. Similmente, su Internet è facile trovare documentazione riguardante gli argomenti trattati nel corso.
Le slide delle lezioni in formato PDF sono messe a disposizione sul sito di e-learning di Ateneo. Sullo stesso sito sono disponibili testo dei problemi visti durante le esercitazioni e soluzioni proposte.

Il docente riceve su appuntamento, previa richiesta via e-mail a sandro.morasca@uninsubria.it.

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. 2019/2020

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2017/2018

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2016/2017

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2015/2016

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2014/2015

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2013/2014

Anno di corso: 2
Curriculum: PERCORSO COMUNE