Università degli studi dell'Insubria

SPECIFICA E SVILUPPO DI SISTEMI SOFTWARE REAL-TIME

A.A. di erogazione 2018/2019
Insegnamento opzionale

Laurea Magistrale in INFORMATICA
 (A.A. 2017/2018)
Anno di corso: 
2
Tipologia di insegnamento: 
Caratterizzante
Settore disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Crediti: 
6
Ciclo: 
Primo Semestre
Ore di attivita' frontale: 
56
Dettaglio ore: 
Lezione (40 ore), Esercitazione (16 ore)

Obiettivi dell’insegnamento e risultati di apprendimento attesi
Il corso affronta le problematiche relative allo sviluppo dei sistemi real time, partendo dalla specifica dei requisiti e arrivando alla progettazione e all’implementazione di tali sistemi. In effetti, il software real time presenta caratteristiche che lo differenziano decisamente dal software “tradizionale”. Queste differenze hanno portato alla costruzione di piattaforme per l’esecuzione di sistemi real time specifiche, che richiedono la conoscenza delle problematiche tipiche dei sistemi real time da parte dei progettisti e dei programmatori.
Obiettivo del corso è dunque presentare agli studenti le problematiche tipiche dello sviluppo di sistemi real-time (ed embedded), e le tecniche, metodi e strumenti specifici che si possono usare nella costruzione di software real-time.
I risultati di apprendimento attesi sono i seguenti.

Conoscenza e capacità di comprensione
Conoscenza delle caratteristiche dei sistemi real-time e delle problematiche connesse, che li differenziano rispetto ai sistemi software tradizionali.
Capacità di leggere e comprendere la documentazione (data sheet) di microcontrollori e periferiche embedded.

Conoscenza e capacità di comprensione applicate
Conoscenza e capacità di applicare metodologie specifiche di progettazione real-time.
Conoscenza e capacità di applicare tecniche di programmazione e costrutti software specifici per i sistemi real-time.
Capacità di descrivere e modellare sistemi real-time, sia per quanto riguarda l’ambiente sia per quanto riguarda la macchina hardware/software.

Autonomia di giudizio
Capacità di valutare le strategie di implementazione più convenienti, in base ai requisiti e vincoli presenti.
Capacità di apprendere
Grazie alla capacità –sviluppata durante tutto il corso– di rapportare puntualmente tecniche, metodi e strumenti alle caratteristiche del software real-time, lo studente sviluppa la capacità di apprendere nuove tecniche, metodi e strumenti, e anche ad affinare ed adattare autonomamente quanto appreso nel corso.

Abilità comunicative
Conoscere e saper usare i formalismi normalmente usati per descrivere analizzare e progettare sistemi software real-time.
Conoscere la terminologia inglese comunemente usata nel campo.

Il corso presuppone la conoscenza di tutti gli argomenti trattati nei corsi di:
- Architettura degli elaboratori
- Sistemi operativi
- Programmazione concorrente
È inoltre opportuna una almeno discreta conoscenza del linguaggio C.

Contenuti e programma del corso
- Introduzione ai sistemi real-time. Caratteristiche e problematiche. Implementazione del più semplice sistema real-time.
4 ore di lezione
- I/O fondamantale
5 ore di lezione
- Esecutivi ciclici su hardware nudo
2 ore di lezione
- Le machine a stati finite come strumento di progettazione. Le machine a stati finite come strumento di programmazione (conversion in codice di una macchina).
4 ore di lezione
- Multi-tasking. Motivazioni e caratteristiche. Comunicazione tra task. Sincronizzazione di task.
4 ore di lezione
- Real-time executive
2 ore di lezione
- Uso delle interfacce di input/output
2 ore di lezione
- Progettazione dei sistemi in tempo reale. Structured design for RT.
2 ore di lezione
- Progettare sistemi multitasking
2 ore di lezione
- L’approccio object-oriented per sistemi real-time. UML per sistemi real-time
3 ore di lezione
- Scheduling – Priority scheduling, Priority inversion, Tecniche per eliminare la priority inversion.
2 ore di lezione
- Scheduling con deadline - Earliest Deadline First, Least Laxity. Periodic scheduling. Scheduling in condizioni di sovraccarico.
2 ore di lezione
- Scheduling – Rate Monotonic Analysis
1 ore di lezione
Introduzione all'ambiente di sviluppo uVision ed esempi di utilizzo. [5 hours]
Laboratorio: Illustrazione da parte del docente di un semplice progetto [4 hours]
Laboratorio: Sviluppo di un semplice progetto [12 hours]

Tipologia delle attività didattiche
Vengono tenute lezioni frontali (per complessive 40 ore) e sessioni di laboratorio
(per complessive 20 ore).
Le lezioni frontali sono dedicate ad illustrare le problematiche della programmazione Real-time e i metodi e le tecniche comunemente usati per affrontarli.
Le sessioni di laboratiro sono dedicate a illustrare l’utilizzo pratico di uno strumento di sviluppo e simulazione (KEIL μVision). Viene illustrata il pratica la programmazione di un microcontrollore ARM (per la precisione, i microcontrollori della famiglia ST Microelectrics STM32F10x). Viene anche illustrato l’utilizzo del real-time executive RTX.
L’impegno personale di rielaborazione autonoma da parte dello studente è tarato sul valore canonico di 25 ore complessive per CFU.

Modalità di verifica dell’apprendimento
L’apprendimento è verificato mediante un esame che accerta l’acquisizione delle conoscenze e delle abilità attese tramite lo svolgimento di un progetto e di una prova orale.
Il progetto riguarda la realizzazione di un programma di dimensioni ridotte ma di complessità realistica. Il progetto è teso ad accertare la capacità degli studenti di individuare le caratteristiche salienti di un problema real-time, di selezionare la strategia corretta, di implementarla e di verificarne la rispondenza ai requisiti sia funzionali sia non funzionali (in particolare, la soddisfazione dei vincoli temporali).
Il progetto comprende anche la specifica e la documentazione sistematica del problema e della soluzione mediante una delle tecniche viste a lezione.
Il progetto viene valutato in trentesimi. La prova orale verte sull’accertamento della capacità di sintesi delle conoscenze acquisite, con particolare riguardo alla capacità di identificare gli elementi di teoria da utilizzare in attività di progettazione o programmazione real-time. La prova orale può variare il voto del progetto di un massimo di tre punti.

Testi e materiale didattico
Sono consigliati i seguenti testi:
Rob Williams, “Real-Time Systems Development”, Butterworth Heinemann, 2005
Andy Wellings, “Concurrent and Real-Time Programming in Java”, Wiley, 2004
Sul sito dell’e-learning dell’Università è fornito il materiale a supporto delle lezioni svolte in laboratorio:
- i data sheet del microcontrollore di riferimento e delle periferiche in esso integrate
- i manuali delle librerie software e firmware utilizzate
- i manuali di RTX
il codice di tutti gli esempi mostrati e le soluzioni di alcuni problemi selezionati

Il docente riceve su appuntamento, che può essere richiesto a lezione o via email.

clicca sulla scheda dell'attività mutataria per vedere ulteriori informazioni, quali il docente e testi descrittivi.

Cerchi il programma? Potrebbe non essere ancora stato caricato o riferirsi ad insegnamenti che verranno erogati in futuro.
Seleziona l‘anno in cui ti sei immatricolato e troverai le informazioni relative all'insegnamento del tuo piano di studio.

A.A. 2016/2017

Anno di corso: 1
Curriculum: GENERICO

A.A. 2015/2016

Anno di corso: 2
Curriculum: GENERICO

A.A. 2014/2015

Anno di corso: 1
Curriculum: GENERICO

A.A. 2013/2014

Anno di corso: 2
Curriculum: GENERICO