Contattataci

Struttura del corso

Fondamenti del pensiero Agile

  • Il Manifesto Agile e la sua rilevanza al di fuori del mondo dello sviluppo software
  • Confronto tra le metodologie agili e i modelli tradizionali a cascata o pianificati in anticipo
  • Ruoli, eventi e artefatti Scrum adattati ai cicli di progetto accademici
  • Kanban e gestione del flusso per team di ricerca e didattica
  • Scelta di approcci ibridi adatti all’ambiente ingegneristico e progettuale

Pianificazione Agile e Collaborazione

  • Stesura delle cosiddette "user story" e definizione dei criteri di accettazione per problemi ingegneristici.
  • Tecniche di prioritizzazione: metodo MoSCoW, valutazione in base a sforzo e rischio.
  • Pianificazione delle iterazioni (sprint) ed stima dei tempi anche con team non tecnologici.
  • Riunioni di retrospettiva e miglioramento continuo in un contesto universitario.
  • Strumenti di collaborazione e bacheche virtuali per gruppi multidisciplinari.

Introduzione alla cultura DevOps

  • Cos’è il DevOps: superamento dei divari tra sviluppo e operazioni.
  • Il modello CALMS: Cultura, Automazione, Lean, Misurazione e Condivisione.
  • DevOps nei laboratori di ricerca, nelle squadre di ingegneria civile e negli studi di architettura.
  • Creazione di un clima senza colpevolizzazioni e sistemi di feedback in ambienti formativi.
  • Aspetti etici, di sicurezza e conformità normativa nell’adozione DevOps nelle università.

Controllo delle versioni e gestione collaborativa del codice

  • Nozioni fondamentali su Git per il lavoro ingegneristico e progettuale replicabile.
  • Strategie di gestione dei rami: sviluppo centralizzato, rami funzionali e versione semplificata di GitFlow.
  • Richieste di modifica (pull request), revisione tra pari e attribuzione della proprietà del codice nelle squadre didattiche.
  • Gestione di risorse non code: file CAD, modelli BIM e dataset per simulazioni.
  • Organizzazione dei repository in modo da contenere materiali didattici e progetti studenteschi.

Integrazione Continua e Automazione della Build

  • Nozioni sull’integrazione continua e il suo impiego con strumenti ingegneristici compilati o basati su script.
  • Configurazione di processi automatizzati per software, simulazioni e documentazione.
  • Fasi principali del pipeline: compilazione, confezionamento, analisi statica e controlli preliminari.
  • Panoramica delle piattaforme di integrazione continua più diffuse: GitHub Actions, GitLab CI, Jenkins.
  • Gestione di artefatti pesanti, memorizzazione temporanea delle dipendenze e esecuzione parallela dei processi.

Qualità del Software e Analisi Statica

  • Cos’è la qualità del software: manutenibilità, affidabilità, usabilità ed efficienza.
  • Misurazione della complessità del codice, grado di accoppiamento e ripetizioni nel codice stesso.
  • Strumenti di analisi statica per Python, Java, C++ e altri linguaggi tipici nei contesti ingegneristici.
  • Il ruolo della documentazione: formati standardizzati per i commenti, le descrizioni e la guida all’utilizzo.
  • Integrazione di controlli qualitativi nei pipeline CI senza ostacolare il progresso degli studenti.

Strategie di Test e Progettazione dei Test

  • La piramide dei test: unitari, d’integrazione, di sistema e di accettazione.
  • Redazione di test unitari per calcoli ingegneristici, simulazioni e utilità programmative.
  • Nozioni base sullo sviluppo guidato dai test (TDD) e sullo sviluppo basato sui comportamenti (BDD).
  • Simulazione di sistemi esterni: sensori, API o risolutori di problemi mediante elementi finiti.
  • Strutturazione dei piani di test in base alle peculiarità dei progetti multidisciplinari.

Automazione dei Test e Test Continui

  • Esecuzione automatizzata dei test nei pipeline CI/CD.
  • Rapporti sui risultati, soglie di copertura del codice e gestione dei test instabili o non deterministici.
  • Test basati su proprietà e tecniche di generazione casuale per algoritmi ingegneristici.
  • Strategie di regression testing adatte agli aggiornamenti continui degli esercizi universitari.
  • Test di carico e prestazioni per ambienti di simulazione o rendering grafico intensivo.

Concetti di Continuous Delivery e Deployment

  • Fondamenti della CD: differenza tra consegna, distribuzione ed ambienti successivi.
  • Tecniche tipiche di rilascio: approcci blue-green, canary e uso dei toggle per le funzionalità.
  • Applicazione dei principi della CD alla pubblicazione di risultati di ricerca, siti didattici o applicazioni.
  • Nozioni base sui container Docker per la creazione di ambienti ingegneristici riproducibili.
  • Introduzione all’Infrastructure as Code: gestione dichiarativa di infrastrutture di laboratorio e cloud.

Osservabilità, Monitoraggio e Feedback

  • Registrazione degli eventi, raccolta di metriche e tracciamento delle interazioni nei software universitari e nelle simulazioni.
  • Implementazione di sistemi di monitoraggio semplici adatti ai progetti studenteschi e agli strumenti di ricerca.
  • Utilizzo dei dati emersi per aggiornare materiali didattici ed esercizi laboratoriali.
  • Dashboard e avvisi mirati alle necessità formative ed accademiche.
  • Verifiche post-distribuzione e procedure di rollback in caso di problemi rilevati.

Sicurezza Informatica e Best Practice di Qualità

  • Nozioni essenziali sulla scrittura di codice sicuro: validazione degli input, autenticazione e gestione delle chiavi riservate.
  • Rilevamento automatico di vulnerabilità e monitoraggio del materiale software proveniente da fonti aperte.
  • Conformità alle licenze d’uso per codice condiviso tra docenti e studenti.
  • Protezione della privacy dei dati legati agli studenti e ai risultati delle ricerche.
  • Sviluppo di una cultura incentrata sulla sicurezza all’interno degli indirizzi formativi ingegneristici e progettuali.

Trasposizione delle Pratiche in Moduli Didattici

  • Creazione di assegnazioni basate su metodologie Agile per studenti di sistemistica, ingegneria civile, design e architettura.
  • Formulazione di rubriche che valutano sia il processo creativo che la qualità finale dei risultati.
  • Configurazione di repository predefiniti con pipeline CI pronte per l’uso da parte degli studenti.
  • Avvio graduale all’approccio DevOps nel corso di un semestre scolastico.
  • Valutazione delle squadre studentesche in base a indicatori reali di qualità e automazione.

Scelta degli Strumenti e Gestione dei Vincoli Accademici

  • Analisi degli strumenti gratuiti o open source utili per dipartimenti con risorse limitate.
  • Integrazione con i sistemi di gestione dell’apprendimento (LMS), repository e infrastrutture esistenti nei laboratori.
  • Gestione del cosiddetto "debito tecnico" in progetti di ricerca che si sviluppano nel tempo.
  • Introduzione alle tecniche base di utilizzo per studenti e docenti con diverse competenze informatiche.
  • Mantenimento della continuità formativa quando alcuni componenti del gruppo lasciano il corso o vengono sostituiti.

Requisiti

  • Conoscenza di base dei concetti fondamentali dello sviluppo software
  • Familiarità con i normali flussi di lavoro ingegneristici o progettuali
  • Esperienza nell’utilizzo del computer per scopi accademici o legati a progetti concreti

Destinatari

  • Professori e docenti di corsi di Ingegneria dei Sistemi, Ingegneria Civile, Design e Architettura.
  • Docenti universitari interessati ad aggiornare i propri metodi didattici incorporando pratiche professionali.
  • Responsabili di ricerca e coordinatori di laboratori che desiderano integrare la tecnologia nei programmi accademici.
 42 ore

Numero di Partecipanti


Prezzo per partecipante

Recensioni (2)

Corsi in Arrivo

Categorie relative