Giorgo C. Buttazzo, "Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications", Springer, Third Edition
Riferimenti ad articoli scientifici sono riportati nel materiale didattico che sarà reso disponibile sulla pagina Moodle durante il corso.
Obiettivi Formativi
- Conoscenza delle caratteristiche dei sistemi embedded in tempo reale e dei sistemi operativi in tempo reale.
- Conoscenza degli algoritmi di scheduling basilari per sistemi in tempo reale.
- Conoscenza di metodi e tool avanzati per la progettazione, analisi e testing di sistemi software embedded in tempo reale.
- Esperienza pratica nella progettazione e sviluppo di software embedded in tempo reale.
Prerequisiti
Il corso è rivolto a studenti con una buona conoscenza del linguaggio C. Una buona comprensione di principi di ingegneria del software, conoscenza di nozioni matematiche, e attitudine alla formalizzazione dei concetti facilitano la comprensione dei temi del corso ma non costituiscono prerequisiti.
Metodi Didattici
Le lezioni sono tenute presentando i temi del corso principalemente attraverso slide.
Altre Informazioni
Gli studenti sono invitati a prendere visione della pagina del corso su Moodle (https://e-l.unifi.it) per maggiori informazioni.
Modalità di verifica apprendimento
L'esame è volto ad accertare le competenze teoriche e pratiche acquisite sugli argomenti del corso.
Gli studenti che scelgono il corso “Software Engineering for Embedded Systems” abbinando il modulo “Laboratorio Software Engineering for Embedded Systems” oppure che scelgono il corso integrato “Software Engineering for Embedded Systems/Quantitative Evaluation of Stochastic Models” abbinando il modulo “Laboratorio Software Engineering for Embedded Systems” e/o il modulo “Laboratorio Stochastic Models” svolgono l’esame discutendo un elaborato, che può essere sviluppato individualmente o da un gruppo di (tipicamente due o tre) studenti (assicurandosi che il contributo di ciascuno studente sia chiaramente identificabile).
Gli studenti che non scelgono alcun modulo di Laboratorio possono sostenere una prova orale sui contenuti del corso oppure discutere un elaborato sviluppato individualmente o in gruppo. Gli studenti che sostengono la prova orale possono sviluppare individualmente un piccolo elaborato auto-assegnato, dal quale inizia la discussione (l’elaborato viene consegnato una settimana prima della prova).
Programma del corso
Parte 1: Sistemi embedded in tempo reale
- Algoritmi di scheduling per sistemi embedded in tempo reale (basic concepts on real-time scheduling, periodic task scheduling, cyclic executive scheduling, rate monotonic scheduling, deadline monotonic scheduling, earliest deadline first scheduling).
- Protocolli per l’accesso a risorse condivise in sistemi embedded in tempo reale (priority inheritance protocol, priority ceiling protocol, extended schedulability tests).
- Sistemi operativi in tempo reale e relativi standard (RT-POSIX, OSEK/VDX, ARINC-APEX, the real-time operating system VxWorks, development of real-time applications on Raspberry Pi).
Part 2: Temi avanzati riguardanti analisi di schedulabilità e testing
- Temi avanzati riguardanti l’analisi di schedulabilità di sistemi in tempo reale (Petri nets, time Petri nets, preemptive time Petri nets, using preemptive time Petri nets in a V-Model SW life cycle subject to MIL-STD-498, timed automata).
- Software testing (testing methodology, control flow and data flow testing, finite state testing, real-time testing).
Parte 3: Ingegneria dei sistemi
- Elementi di ingegneria dei sistemi basata su modelli (SysML).