INF/01

Curriculum: PERCORSO COMUNE

A.A.
CFU Durata (ore)
Periodo Sede
2016/2017 12 96 Ciclo Annuale Unico URBINO

Didattica in lingua straniera
Insegnamento interamente in lingua straniera nel percorso online:

* Per questo insegnamento erogato in modalità mista presenza/online, la didattica online è svolta interamente in lingua straniera e l'esame può essere sostenuto in lingua straniera.

Assegnato ai Corsi di Studio

Docente


Edoardo Bontà

edoardo.bonta@uniurb.it

Obiettivi Formativi
Il corso presenta le metodologie, le tecniche e gli strumenti fondamentali per la gestione delle varie fasi del processo di sviluppo di sistemi software complessi, con particolare riferimento al paradigma di progettazione e programmazione orientato agli oggetti.

Programma
01. Fondamenti di ingegneria del software
      01.01 Concetti di base dell'ingegneria del software
      01.02 La qualità del software
      01.03 Il processo di sviluppo software

02. Analisi e progettazione ad oggetti
      02.01 Il paradigma ad oggetti
      02.02 Introduzione alla modellazione del software
      02.03 Unified Process

03. Unified modeling language (UML)
      03.01 Introduzione a UML
      03.02 Diagrammi di struttura: classi, oggetti, package
      03.03 Diagrammi di comportamento: casi d’uso
      03.04 Analisi di robustezza e interazione fra entità
      03.05 Diagrammi di interazione: comunicazione, sequenza
      03.06 Macchine a stati, attività e altri diagrammi

04. Programmazione orientata agli oggetti
      04.01 Introduzione: tipi di dato, istruzioni, metodi
      04.02 Classi e oggetti
      04.03 Ereditarietà
      04.04 Polimorfismo, classi astratte e interfacce
      04.05 Gestione delle eccezioni
      04.06 Generics

05. Design pattern
      05.01 Introduzione ai design pattern
      05.02 Pattern creazionali: Singleton, Factory
      05.03 Pattern strutturali: Proxy
      05.04 Pattern comportamentali: Observer, Visitor

06. Metodi di ingegneria del software
      06.01 Analisi dei requisiti
      06.02 Principi di progettazione del software
      06.03 Tecniche di collaudo del software
      06.04 Metriche del software

07. Gestione di progetti software
      07.01 Pianificazione del progetto software
      07.02 Stime di progetto
      07.03 Analisi e gestione dei rischi
      07.04 Pianificazione temporale
      07.05 Gestione delle configurazioni software
      07.06 La documentazione di progetto
      07.07 Strumenti CASE

08. Argomenti avanzati
      08.01 I metodi formali
      08.02 Ingegneria del software cleanroom
      08.03 Reingegnerizzazione

Eventuali Propedeuticità
Non vi sono propedeuticità obbligatorie, tuttavia si suggerisce di sostenere l'esame di Programmazione ad Oggetti e Ingegneria del Software dopo aver sostenuto gli esami di Programmazione Procedurale e Logica e Algoritmi e Strutture Dati.

Risultati di Apprendimento (Descrittori di Dublino)
  • Conoscenza e comprensione

Lo studente acquisirà le conoscenze fondamentali relative allo sviluppo di sistemi software complessi, con particolare riferimento al paradigma di progettazione e programmazione orientato agli oggetti, esemplificato attraverso il linguaggio C#. Conoscerà inoltre differenti processi di sviluppo per gestire il ciclo di vita di sistemi software di grandi dimensioni, assieme alla notazione visuale UML per la modellazione del software, ed ai "design pattern" come modelli logici di soluzione a problemi frequentemente ricorrenti nelle fasi di progettazione e sviluppo del software.

  • Capacità di applicare conoscenza e comprensione

Lo studente sarà in grado di applicare le pratiche più diffuse nei modelli di processo agili e prescrittivi per la progettazione, l'implementazione e il collaudo di sistemi software di medie/grandi dimensioni. Sarà inoltre in grado di stimare i costi relativi allo sviluppo del software utilizzando modelli di stima empirici, nonché pianificare le attività necessarie alla realizzazione di un progetto software, tenendo sotto controllo lo stato di avanzamento ed i costi di un insieme di attività correlate.

  • Autonomia di giudizio

Lo studente sarà in grado di percepire la bontà del software non soltanto in relazione alla propria esperienza e/o a criteri puramente soggettivi, ma anche sulla base di norme specifiche per la valutazione della qualità dei processi e dei prodotti.

  • Abilità comunicative

Lo studente sarà in grado di usare in modo appropriato la terminologia dei linguaggi di programmazione ad oggetti, dei design pattern e dei processi di sviluppo prescrittivi ed agili.

  • Capacità di apprendimento

Lo studente acquisirà la capacità di apprendere le peculiarità sintattiche e semantiche di qualsiasi linguaggio di programmazione ad oggetti. 

Materiale Didattico e Attività di Supporto
Il materiale didattico e le comunicazioni specifiche del docente sono reperibili, assieme ad altre attività di supporto, all'interno della piattaforma Moodle › blended.uniurb.it

Modalità Didattiche, Obblighi di Frequenza, Testi di Studio e Modalità di Accertamento
Modalità Didattiche
Lezioni teoriche ed esercitazioni guidate in laboratorio.
Obblighi di Frequenza
Sebbene fortemente consigliata, la frequenza non è obbligatoria.
Testi di Studio
Pressman, "Software Engineering: A Practitioner.s Approach", McGraw-Hill, 2010.
(Pressman, "Principi di Ingegneria del Software", McGraw-Hill, 2008).

Fowler, "UML Distilled", Addison-Wesley, 2003.
(Fowler, "UML Distilled", Pearson Italia (Addison-Wesley), 2010).

Bochicchio et al., "C# 6 e Visual Studio 2015 - Guida completa per lo sviluppatore", Hoepli, 2016.

Gamma, Helm, Johnson, Vlissides, "Design Patterns: Elements of Reusable Object-Oriented Software", Addison-Wesley, 1995.
(Gamma, Helm, Johnson, Vlissides, "Design Patterns: Elementi per il riuso di software ad oggetti", Pearson Italia (Addison-Wesley), 2002).

Modalità di Accertamento
Progetto (da sviluppare individualmente o in gruppo di due studenti), prova scritta e prova orale. Il progetto, il cui tema è scelto liberamente dallo studente, deve essere consegnato almeno 7 giorni prima della prova scritta. Esso è superato se il voto è di almeno 18/30; il voto rimane valido in qualsiasi sessione di esame successiva a quella in cui il progetto viene consegnato. In caso di consegna tardiva, il progetto non viene accettato. Qualora il progetto venga riconsegnato in un successivo appello d'esame, il voto del progetto precedentemente consegnato viene annullato ed al voto del nuovo progetto consegnato viene applicata una penale di 5/30. La prova scritta, che può essere sostenuta solo se il progetto è stato superato, consiste in 6 domande più 1 esercizio - diviso in due parti - da svolgere in 60 minuti.Essa è superata se il voto è di almeno 18/30; il voto rimane valido solo per l'appello d'esame in cui la prova scritta viene sostenuta. La prova orale, che può essere sostenuta solo se il progetto e la prova scritta sono stati superati, consiste in una discussione del progetto e della prova scritta, più ulteriori domande. Se superata, essa determina un aggiustamento compreso tra -3/30 e 3/30 della media dei due precedenti voti, producendo così il voto finale. Per ulteriori informazioni su progetti ed esami scritti > http://www.sti.uniurb.it/bonta/didattica/ingsw/inge_soft.html

Note
L'insegnamento è erogato anche on-line all'interno della piattaforma Moodle > elearning.uniurb.it