Stampa la pagina Condividi su Google Condividi su Twitter Condividi su Facebook Scheda Insegnamento

INGEGNERIA DEL SOFTWARE (codice 32279)

Curriculum: ROBOTICA INDUSTRIALE del corso di Ingegneria Informatica - Robotica Industriale
Programmazione per l'A.A.: 2018/2019

Appelli d'esame: Calendario - Prenotazioni
Orari del corso di Ingegneria Informatica - Robotica Industriale: apri


Crediti Formativi Universitari (CFU): 9,00
Settore Scientifico Disciplinare (SSD): ING-INF/05
Ambito disciplinare: Ingegneria informatica
Attività: Attività formative caratterizzanti (B)
Ore aula: 42
Ore laboratorio:15
Ore esercitazioni: 15

Canale unico

Obiettivi:
Il corso ha l’obiettivo di presentare gli aspetti fondamentali (sia metodologici e sia tecnologici), dell’ingegneria del software.
Ha inoltre l’obiettivo di presentare strumenti e metodologie relative alla progettazione di architetture software e, in particolare, di architetture per sistemi software distribuiti.

Programma:
Introduzione.
Il software e l'ingegneria del software. L'evoluzione del ruolo del software. Il software e la sua natura mutevole.
Il software legacy. I miti del software.

Processo di sviluppo del software
L'ingegneria del software, una tecnologia stratificata. La struttura generale di un processo di sviluppo. Pattern per i processi. Valutazione di un processo di sviluppo. Modelli di processo personali e di team.

Sviluppo Agile
Modelli di processi agili e SCRUM.

Modelli di processo prescrittivi
Modello a cascata. Incrementali, evolutivi, specializzati.

Linguaggi, tool e framework
Presentazione di prodotti free per UML: ArgoUML.

Presentazione di prodotti free per Java (IntelliJ)

Java. Fondamenti del linguaggio: java virtual machine. Classi, attributi, metodi. SDK. Package, struttura delle classi standard, API. Allocazione della memoria e garbage collection. Multithreding.
Programmazione event-driven e realizzazione di interfacce grafiche. Scrittura di gestori di eventi. Java DataBase Connectivity (JDBC).

Introduzione a UML
Classi e oggetti.

Relazioni. Definizione Diagrammi degli oggetti, cammini, molteplicità, navigabilità, attributi, associazioni qualificate, classi associazione. Dipendenze: di uso, di astrazione, di permesso.

Ereditarietà e polimorfismo. Classi e generalizzazione. Overriding, classi e operazioni astratte, livelli di astrazione, ereditarietà multipla. Polimorfismo. I powertype.

Package di analisi. Package e spazi dei nomi. Package annidati. Dipendenze tra package: transitività. Generalizzazione tra package. Dipendenze circolari tra package.

Strategie di testing del software.
Un approccio strategico al testing del software. Strategie di testing per il software convenzionale e per quello object oriented. Validation testing. System testing. L'arte del debugging. Cenni alle tecniche di testing whitebox e blackbox.

Concetti di gestione dei progetti
Il panorama gestionale, le persone, il prodotto, il processo, il progetto.

Testi:
R.S. Pressman, "Principi di Ingegneria del software", quinta edizione, McGraw-Hill.

Herbert Schildt "Java: The Complete Reference", Tenth edition, Oracle Press.

Ken Schwaber and Jeff Sutherland, "The Scrum Guide", November 2017.
https://www.scrumguides.org/scrum-guide.html


Letture consigliate:
J. Arlow, I. Neustadt, "UML 2 e Unified Process: Analisi e Progettazione Object-Oriented", McGraw-Hill.
Tutorial java: http://download.oracle.com/javase/tutorial/

Valutazione:
La prova d'esame è incentrata sull'attività progettuale e consisterà nel verificare la piena comprensione delle soluzioni adottate.
Saranno valutate inoltre le conoscenze maturate sugli argomenti del corso non esplicitamente inclusi nel progetto.


[Ultima modifica: mercoledì 30 novembre 2016]