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/