Obiettivi formativi
L'obiettivo finale del corso è quello di trasmettere le basi di tutte le fasi coinvolte nella realizzazione di software con requisiti stringenti di affidabilità e sicurezza, con particolare riferimento ai sistemi critici imbarcati. Dando per scontato le competenze di risoluzione dei problemi mediante la scrittura di programmi in C/C++, il corso copre la specifica, la progettazione, la stesura e la verifica del software; il tutto nel contesto dei processi di sviluppo prescritti dagli standard industriali per la realizzazione di sistemi sicuri.
Conoscenza e capacità di comprensione
Il corso introduce temi importanti riguardanti lo sviluppo di software in ambito industriale e, soprattutto, critico. Tali temi sono tanto più importanti in quanto, in tutti i percorsi di studio universitari o post-universitari, sono spesso tralasciati o limitati ad esposizioni di principio senza alcun concreto collegamento con la realtà industriale. Il corso cita i metodi formali e le loro potenzialità, ma non vi si addentra (lasciando il loro approfondimento ad altri corsi con ben altri prerequisiti di tipo logico-matematico), puntando invece alla comprensione del rapporto tra costi e benefici dei metodi formali, semi-formali e informali applicati a contesti industriali.
Conoscenze applicate e capacità di comprensione
Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici. Il corso di sviluppa intorno ad un esempio concreto di software imbarcato scelto all’inizio del corso. Per tale esempio, gli studenti assisteranno a (e concorreranno a svolgere) tutte le fasi dello sviluppo, dalla stesura dei requisiti alla verifica.
Autonomia di giudizio
Il corso si fonda sulle prescrizioni degli standard industrial di functional-safety. Tali standard fanno riferimento a precisi obiettivi da conseguire e a suddivisioni dei ruoli (sviluppatori, verificatori, assessor ed enti certificatori) che richiedono autonomia di giudizio. Alla fine non si tratta solo di conseguire degli obiettivi, ma di argomentarne l’adeguatezza e il conseguimento di fronte a dei pari.
Abilità comunicative
Per quanto già detto, il corso fa pressante riferimento alla necessità di una generale precisione e chiarezza comunicativa (ad esempio, nella stesura dei requisiti). Più specificatamente, il corso insegna le basi della costruzione di argomentazioni strutturate, supportate da evidenze adeguate, che giustificano il fatto che un sistema è accettabilmente sicuro per una determinata applicazione in un determinato ambiente operativo. Tali argomentazioni (safety case) richiedono l’affinamento delle proprie capacità comunicative.
Capacità di apprendimento
Quasi tutto il materiale didattico ha origine extra-universitaria. Se da una parte questo richiede agli studenti notevole flessibilità (nel passaggio da una fonte all’altra, nella necessità di interpolare le informazioni reperibili nelle varie fonti), dall’altra parte li stimola ad impratichirsi con una modalità di reperimento delle informazioni e di assimilazione dei concetti che sarà una costante di tutta la loro vita professionale.