Nome insegnamento: Ingegneria del Software per Sistemi in Tempo Reale e ad Agenti
Articolazione in moduli: no
Settore Scientifico Disciplinare: ING-INF/05
Docente responsabile:
Prof. Libero Nigro
Crediti formativi universitari: 9
Numero ore lezioni: 50
Numero ore riservate attività didattiche assistite: 75 Numero ore esercitazioni: 25
Numero ore attività di laboratorio:
Tipologia di attività formativa (TAF): caratterizzante
Lingua di insegnamento: Italiano
Anno di corso e Periodo didattico di erogazione: I ANNO, I SEMESTRE
Insegnamento/i Propedeutico/i:
Risultati d’apprendimento previsti e competenze da acquisire:
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 di controllo real-time in presenza di vincoli temporali, e sui sistemi
distribuiti multi-agente. 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 e su strumenti di larga
diffusione per il supporto di sistemi multi-agente (es. Repast Simphony e JADE).
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 Simphony per la modellazione e lo sviluppo di sistemi ad agenti
in Java. Design pattern e ciclo di vita di sistemi software ad agenti. Sviluppo di applicazioni.
Argomenti delle esercitazioni:
Modellazione e analisi di sistemi tempo-dipendenti secondo i formalismi sviluppati nelle lezioni. Sviluppo
di sistemi multi-agente per l’esecuzione in ambiente distribuito/parallelo e per la simulazione discreta ad
eventi.
Argomenti delle attività di laboratorio:
Le attività di laboratorio, svolte su base individuale degli studenti, sono incentrate sullo sviluppo di
progetti didattici sui vari argomenti sviluppati nelle lezioni, e discussi durante l’orario di ricevimento. I
progetti didattici sono comunque opzionali.
Modalità di erogazione della didattica:
lezioni frontali alla lavagna e mediante l’uso di personal computer e proiettore.
Metodi di valutazione:
Esame scritto, esame orale, valutazione dei progetti didattici.
Criteri di valutazione dell’apprendimento:
 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.
Criteri di misurazione dell’apprendimento:
Voto finale
Criteri di attribuzione del voto finale:
Voto scritto tra 15 e 30, incremento massimo di tre punti per l’orale, incremento massimo di tre punti per
i progetti (se sviluppati).
Testi di riferimento e materiale didattico utilizzato e consigliato:
L. Nigro, Appunti dalle lezioni di Ingegneria del Software per Sistemi in Tempo Reale e ad Agenti.
K. Tindell, H. Hansson, Real time scheduling by Fixed Priorità Scheduling. On-line.
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:
http://www.dimes.unical.it/index.php/didattica
Calendario prove valutazione: