Dipartimento: DIMES
Corso di Laurea: MAGISTRALE INGEGNERIA DELL’AUTOMAZIONE
Indirizzo Internet Corso di Laurea: www.dimes.unical.it
Nome insegnamento: INGEGNERIA DEL SOFTWARE PER SISTEMI IN TEMPO REALE E AD
AGENTI
Condivisione: MAGISTRALE INGEGNERIA INFORMATICA
Articolazione in moduli: NO
Settore Scientifico Disciplinare: ING-INF/05
Docente responsabile: NIGRO LIBERO
Posizione docente responsabile:
PROFESSORE ASSOCIATO
Crediti formativi universitari: 9
Numero ore lezioni: 50
Numero ore riservate attività didattiche assistite: 75
Numero ore esercitazioni: 25
Numero ore attività di laboratorio:0
Numero ore riservate studio individuale: 141
Tipologia: Attività affini o integrative
Lingua di insegnamento: ITALIANO
Collocazione: I ANNO, I SEMESTRE
Prerequisiti:
Obiettivi formativi (risultati d’apprendimento previsti e competenze da acquisire – Descrittori di Dublino):
Il corso introduce l’uso di metodi e strumenti di Ingegneria del Software per la modellazione, l’analisi, il
progetto e l’implementazione di sistemi concorrenti/distribuiti e tempo dipendenti. In particolare
l’attenzione è posta sui sistemi ad agenti e sui sistemi di controllo dotati di vincoli temporali. I linguaggi di
specifica si basano su automi a stati finiti e reti di Petri temporizzate. Le attività di analisi utilizzano la
simulazione discreta ad eventi e la verifica esaustiva tramite i timed automata di Uppaal. Le attività
sperimentali si basano su Java, anche in versione real-time.
In sintesi, l’insegnamento si propone di fornire agli studenti le seguenti competenze







Capacità di modellare in modo rigoroso i requisiti di sistemi tempo dipendenti e segnatamente di sistemi
real-time e ad agenti, mediante strumenti formali di specificazione operazionale.
Analizzare le proprietà di un sistema tempo dipendente astratto da un modello formale e capacità di passare
da un modello di specifica agli aspetti progettuali e implementativi.
Conoscere le principali strutture di schedulazione di sistemi con vincoli temporali.
Conoscere e saper usare il modello di programmazione di Real Time Java.
Saper progettare sistemi ad agenti in ambiente Java centralizzato e distribuito/parallelo ed in presenza di
mobilità degli agenti.
Conoscere le problematiche di interazione, coordinamento e pianificazione di sistemi multi agente.
Saper utilizzare strumenti concreti di modellazione e sviluppo di sistemi multi agente complessi.
Argomenti delle lezioni:
1) Concetti Introduttivi – Richiami di controllo della concorrenza in ambiente globale e locale.
Meccanismi di mutua esclusione basati su busy-waiting, semafori e monitor. Message-passing. CSP e
rendezvous Strategie classiche di scheduling dei processi. Caratterizzazione dei sistemi real-time..
2) Un modello di calcolo basato su attori – Attori e sistemi tempo dipendenti. Messaggi asincroni.
Macchina di controllo. Pura concorrenza, simulazione ad eventi discreti, tempo reale.
3) Linguaggi di specifica di sistemi real-time Sistemi concorrenti modellati con automi a stati finiti.
L’automa “sistema”. Esplosione degli stati. Le reti di Petri classiche. Proprietà e decidibiltà. L’albero
di raggiungibilità/copertura. Rappresentazione matematica di una rete P/T. Analisi di P e T Invarianti.
Archi inibitori. Reti di Petri temporizzate. Ritardo di sparo. Semantica di sparo. Reti GSPN. Le Time
Petri Nets di Merlin e Farber. Albero di raggiungibilità temporale. Timed Automata (TA) e Uppaal.
Clock e canali. Sincronizzazione tra processi. Semantica di una rete di TA. Canali binari e broadcast.
Editor, simulatore e verificatore. Il linguaggio logico di Uppaal. Model checking e grafo degli stati di
un modello TA. Verifica di algoritmi di mutua esclusione basati su busy-waiting. Un template Uppaal
per le Time Petri Nets. Verifica di sistemi real time modellati con Uppaal o con Time Petri Nets.
Proprietà safety e bounded liveness (deadline).
4) Scheduling real-time – Processi e parametri temporali. Processi periodici, sporadici e aperiodici.
Scheduling ciclico statico (SCS). Progetto di major e minor cycle. Problemi implementativi di SCS.
Scheduling dinamico. Priorità statiche e dinamiche. Scheduling fattibile e ottimale. Rate monotonic
(RM). Earliest Deadline First (EDF). Least Slack Time (LST). Deadline monotonic. Fixed priority
scheduling in generale. Analisi esatta di Joseph e Pandya e modello di calcolo del tempo di risposta.
Priority inversion. Priority inheritance. Priority ceiling protocol. Estensione del modello di calcolo con:
tempi di blocco, jitter, tempi di context switch, tempi propri di uno scheduler “tick driven”.
Combinazione di processi periodici e periodici a burst. Tecniche di predizione del worst-case
execution time (WCET). Testing e analisi. Uno schema EDF generale per applicazioni industriali.
Controllo delle preemption. Test di ammissibilità e complessità. Gestione dei sovraccarichi.
5) Linguaggi di programmazione real-time – Real-Time Java: Modello di memoria, strutture di schedulazione,
thread real-time, gestione eventi asincroni, aspetti low level.
6) Architetture ad agenti e meccanismi di interazione – Modello ad agenti e ambiente di influenza. Agenti
intelligenti. Sistemi multi-agente e problematiche di interazione. Utilità e preferenze. Pianificazione,
coordinamento, strategie dominanti ed equilibri di Nash. Mechanism design. Coalizioni, aste,
negoziazione e protocolli di concessione.
7) Metodologie e linguaggi di sistemi ad agenti – Standard di linguaggi di comunicazione (FIPA ACL). La
piattaforma Jade. L’ambiente RePast per la modellazione e lo sviluppo di sistemi ad agenti in Java.
Altre piattaforme e middleware. Design pattern e ciclo di vita di sistemi software ad agenti. Sviluppo
di applicazioni.
Argomenti delle esercitazioni:


Sviluppo di esempi/esercizi/progetti di programmazione concorrente, simulazione ad eventi discreti,
modellazione e analisi di sistemi real time, verifica schedulabilità di task set.
Sviluppo di esempi/esercizi/progetti di sistemi multi-agente in presenza di strategie di coordinamento e
interazione, in ambiente Java centralizzato e distribuito, e basati sulla mobilità.
Argomenti delle attività di laboratorio:
Modalità di frequenza: Obbligatoria
Modalità di erogazione: In aula, con metodologie tradizionali e proiettore collegato al PC
Metodi di valutazione: L’esame consiste nella discussione di progetti didattici assegnati durante le lezioni,
nello sviluppo di un progetto finale individuale, e in una prova orale obbligatoria
Materiali didattici:
L. Nigro, F. Pupo, Appunti dalle lezioni di Ingegneria del Software per Sistemi in Tempo Reale e ad
Agenti, 2010.
K. Tindell, H. Hansson, Real time scheduling by Fixed Priorità Scheduling.
M. Wooldridge, An Introduction to MultiAgent Systems, Wiley, 2nd Edition, 2009.
Testi di approfondimento:
G. Buttazzo, Hard real time computing systems-Predictable scheduling algorithms and Applications, 2nd
Edition, Springer, 2005.
A. Wellings, Concurrent and real-time programming in Java, Wiley, 2004.
Orario e aule lezioni:
Calendario prove valutazione:
http://icampus.ingegneria.unical.it/