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: