Richiedi Info          Brochure      Seguici su:
      Seguici su:




      
      Seguici su:            

Ingegneria del software

Ingegneria del software

Ingegneria del software

SSD

Crediti

INF/01

12

Obiettivi Formativi

L’obiettivo del corso è fornire agli studenti la conoscenza dei modelli e degli strumenti per l’analisi, il progetto, lo sviluppo e il collaudo dei sistemi software, e di metterli in grado di progettare, sviluppare e collaudare sistemi software.

Competenze acquisite

Lo studente sarà in grado di pianificare lo sviluppo di progetti software di medie dimensioni. Saprà affrontare la modellazione dei requisiti, sviluppare il codice dal modello e convalidarlo.
Avrà acquisito competenze su pattern ricorrenti sia di progettazione che di architetture.

Programma

1. PRODOTTO E PROCESSO. Proprietà del software. Proprietà del software sicuro. Ciclo di vita del software: fasi di sviluppo del software, modelli di ciclo di vita. La sicurezza nel ciclo di vita del software. Ciclo di vulnerabilità. Attacchi a livello di progettazione, di implementazione ed di funzionalità.
2. MODEL-DRIVEN ENGINEERING. Principi dell’ MDE. Modello e meta-modello. Profili UML per la specifica di Domain-Specific Languages.
3. SPECIFICA E PROGETTAZIONE DI SOFTWARE. Proprietà di specifiche di software. Metodi di specifica operazionele: Macchine a stati finiti. Communicating Machines. Metodi di specifica dichiarativa: Design by contract. Il tool JML.
4. MODELLAZIONE UML: SPECIFICA STRUTTURALE. Modellare con le classi (diagramma delle classi, diagramma degli oggetti). Specifica dei vincoli: OCL. Uso dei Design pattern.
5. MODELLAZIONE UML: SPECIFICA COMPORTAMENTALE. Modellare interazioni e comportamento (diagrammi di interazione, macchine di stato, diagrammi di attività).
6. ARCHITETTURE SOFTWARE. Principi di architetture sicure. Java sandbox. MDA (model-driven architecture).
7. PROCESSO UP (UNIFIED PROCESS) E SPECIFICA DI ARCHITETTURE SW. Il processo UP. Principi guida per lo sviluppo di architetture SW. Modellazione UML dell’architettura (diagramma delle componenti, digramma di dislocamento).
8 DESIGN PATTERNS: Pattern strutturali ed architetturali.
9. IMPLEMENTAZIONE. Linee guida per la programmazione sicura. Tipici errori. Sicurezza dei linguaggi di programmazione. Alcune violazioni di sicurezza in C. Programmi sicuri in C. Introduzione al linguaggio Java. Dalla specifica al codice: macchine a stati finiti in Java.
10. TESTING. Il testing nel ciclo di vita del software. Tipi di testing. Tecniche per la validazione e verifica. I limiti del testing. Testing basato sui programmi.

Testi Consigliati

Mark G. Graff, Kenneth R. van Wyk. Secure Coding: Principles and Practices. O’Reilly, 2003.
· Ghezzi Carlo, Jazayeri Mehdi, Mandrioli Dino. Ingegneria del software. Fondamenti e principi. Pearson Education Italia, 2004, 2ª ed.

Craig Larman. Applying UML and Patterns. An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) – Prentice Hall (2004).

Modalità di Verifica

–         Prova scritta con domande aperte e scelta multipla

–         La durata della prova e di massimo 3 ore

–         La valutazione viene espressa in trentesimi