SOFTWARE DEVELOPMENT METHODOLOGIES

Anno accademico
2022/2023 Programmi anni precedenti
Titolo corso in inglese
SOFTWARE DEVELOPMENT METHODOLOGIES
Codice insegnamento
CM0634 (AF:398325 AR:215020)
Modalità
In presenza
Crediti formativi universitari
6
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
ING-INF/05
Periodo
I Semestre
Anno corso
1
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
Il corso introduce concetti e tecnologie di sviluppo del software, metodi e strumenti operativi per migliorare la qualità del software.
La prima parte del corso tratterà diversi aspetti avanzati dello sviluppo del software: programmazione multi-threaded, programmazione a eventi e di interfacce grafiche, programmazione di servizi di rete.
La seconda parte si concentrerà su diverse metodologie e strumenti software usati prima e dopo il deployment del software, con particolare attenzione al testing: test di unità, test black-box e white-box, test di integrazione, test di interfacce grafiche, test di performance e sicurezza, strumenti DevOps per l'automazione di build e deployment del software.
La terza parte fornirà una visione generale di metodologie di programmazione alternativi: programmazione reattiva, programmazione a regole, programmazione logica, sviluppo model-driven.
Gran parte degli esempi saranno in linguaggio Java, di cui si richiede una buona conoscenza.
Gli obiettivi del corso sono far acquisire conoscenza di:
- tematiche avanzate di programmazione in Java.
- l'importanza dei diversi tipi di testing del software.
- l'uso di strumenti software per l'automazione della fasi di build e deployment del software
- la conoscenza per la programmazione per diversi tipi di sistemi
Con le esercitazioni si avrà l’opportunità di sperimentare e di acquisire una conoscenza attiva della materia.
E' necessario avere una buona conoscenza del linguaggio Java, e una conoscenza di base di reti e ingegneria del software.
Si consiglia vivamente di frequentare le lezioni, dato che il corso ha componenti teoriche e sperimentali.
L'acquisizione dei concetti avviene anche grazie all'uso di strumenti software in laboratorio e discussioni di casi pratici.
Il corso presenterà diverse tematiche:
- Aspetti avanzati di sviluppo del software: multi-threaded programming, event-based e GUI programming, network programming e microservices.
- Software Testing: unit testing, integration testing, GUI testing, performance testing, security e penetration testing
- DevOps : strumenti per l'automazione di build e deployment del software.
- Argomenti avanzati nello sviluppo software
Documentazione fornita dal docente che farà riferimento a:
1. R. Urma, M. Fusco, A. Mycroft. "Modern Java in Action: Lambdas, streams, functional, and reactive programming." Manning, 2019.
2. J. Bloch. "Effective Java", Addison-Wesley, 2018.
3. M. Pezzè, M. Young, "Software Testing and Analysis: Process, Principles, and Techniques", Wiley, 2008, ISBN 8126517735.
4. G. Kim, P. Debois, J. Willis, J. Humble, "The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations", IT Revolution Press, 2016, ISBN 1942788002
5. C. Walls. "Spring Boot in Action", Manning, 2015, ISBN 9781617292545
La verifica dell'apprendimento avviene attraverso una prova scritta che ha lo scopo di accertare le conoscenze acquisite sui diversi argomenti del corso.
Le tesine sono facoltative e consistono in un problema pratico da risolvere, o nello svolgere una presentazione di un articolo di ricerca di fronte al resto della classe.
La tesina dà un bonus sul punteggio acquisito allo scritto.
Lezioni teoriche e pratiche in aula;
Risorse online (note, slide, video);
Chat e forum;
Tesine su diversi argomenti che daranno punteggio extra.
Laboratori pratici.
Inglese
scritto

Questo insegnamento tratta argomenti connessi alla macroarea "Città, infrastrutture e capitale sociale" e concorre alla realizzazione dei relativi obiettivi ONU dell'Agenda 2030 per lo Sviluppo Sostenibile

Programma definitivo.
Data ultima modifica programma: 12/05/2022