SOFTWARE DEVELOPMENT METHODOLOGIES

Anno accademico
2023/2024 Programmi anni precedenti
Titolo corso in inglese
SOFTWARE DEVELOPMENT METHODOLOGIES
Codice insegnamento
CM0634 (AF:451592 AR:245311)
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 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 performance, strumenti DevOps per l'automazione di build e deployment del software.
La terza parte fornirà una visione generale di metodologie di programmazione alternativi: 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 network programming.
- Software Testing: unit testing, integration testing, performance 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. M. Pezzè, M. Young, "Software Testing and Analysis: Process, Principles, and Techniques", Wiley, 2008, ISBN 8126517735.
3. 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
4. R. Meier, I. Lake, "Professional Android", Wiley, 2018.
5. S. Amey, "Software Test Design: Write comprehensive test plans to uncover critical bugs in web, desktop, and mobile apps", Packt Publishing, 2022, ISBN 1804612561
6. M. Winteringham, "Testing Web APIs", Manning, 2022, ISBN 1617299537
7. C.S. Pasareanu, "Symbolic Execution and Quantitative Reasoning: Applications to Software Safety and Security", Morgan & Claypool, 2020, ISBN 1681738562
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 consistono in un problema pratico da risolvere,o nello svolgere una presentazione di un articolo di ricerca di fronte al resto della classe, o un tutorial di un software.
La tesina dà un bonus sul punteggio acquisito all'esame 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: 21/08/2023