Obiettivi formativi
Il corso mira a fornire le conoscenze fondamentali per comprendere la
natura profonda degli strumenti, dei metodi e dei problemi della
specifica di sistemi software basata su canoni di rigore matematico
e orientata da principi di progettazione di alta qualità.
Si presta particolare attenzione agli aspetti concettuali più
che all'esposizione di metodi particolari, al fine di favorire la
costruzione di un bagaglio culturale persistente rispetto alla continua
evoluzione del settore dei metodi formali di specifica del software.
Il programma del corso richiede una precedente familiarità con i
concetti basilari di logica e con le principali tematiche dell'ingegneria
del software.
Attività formative
Il corso prevede lo svolgimento di 40 ore di lezioni ed esercitazioni
frontali in aula.
L'apprendimento della materia è sostenuto dallo studio
dei materiali didattici di riferimento, nonché di eventuali
altri materiali bibliografici opzionali, e dal loro uso per la
produzione di contributi durante lo svolgimento del corso, quali:
sviluppo di esercizi, approfondimento di temi speciali d'interesse,
presentazione di seminari, etc.
Temi speciali di interesse di questa edizione del corso sono:
- metodi di specifica evolutiva di sistemi software
- metodi di specifica formale di architetture software
- metodi di sintesi di sistemi software da specifiche formali
nonché i temi risultanti da combinazioni dei temi suddetti.
Programma del corso
- Introduzione alla specifica formale di sistemi software:
uso delle specifiche formali nel ciclo di vita del software,
ingegnerizzazione dei requisiti e specifiche costruttive,
validazione di requisiti,
verifica di correttezza,
collaudo di conformità,
strumenti di supporto alla specifica formale.
- Fondamenti di specifica algebrica:
algebre segnate, omomorfismi, congruenze, quozienti, sottoalgebre,
teorema del morfismo, algebre di termini, valutazione,
morfismi di segnature, algebre ridotte,
algebre finitamente generate, inizialità, finalità,
reticolo delle congruenze sull'algebra dei termini chiusi,
equazioni, presentazioni, teorie, calcoli equazionali,
consistenza, completezza, inferenza induttiva,
algebre in senso lato, algebre multi-sortali, algebre di tipi,
algebre parziali, strutture algebriche con relazioni,
generalizzazioni dei concetti basilari di specifica algebrica.
- Sistemi di riscrittura di termini e loro estensioni:
sistemi di riduzione, proprietà di confluenza e di terminazione,
regole di riscrittura di termini, algoritmi di calcolo,
elementi di stile di specifica operativa,
sistemi condizionali di riscrittura di termini,
estensioni di sistemi di riscrittura di termini con assegnamenti di tipo.
- Linguaggi di specifica formale:
cenni storici sui linguaggi di specifica algebrica,
introduzione al linguaggio CASL, idee di progetto del linguaggio,
introduzione ai principali costrutti per le specifiche di base,
per la strutturazione di specifiche, per specifiche parametriche,
per specifiche di architettura, strumenti di supporto alla specifica,
librerie di specifiche, casi di studio.
- Cenni di teoria delle categorie:
cenni storici, categorie, dualità, funtori, trasformazioni naturali,
equivalenza di categorie, categorie di funtori, costruzioni categoriali,
frecce universali e aggiunzioni, coni, limiti e loro duali.
- Fondamenti di teoria delle istituzioni:
la teoria delle istituzioni di specifica formale,
sistemi logici e istituzioni semplici,
istituzioni con categorie di modelli,
relazioni di conseguenza, morfismi di istituzioni.
- Cenni di semantica della specifica formale:
semantica lasca, semantiche costruttive, semantiche vincolate,
semantiche osservazionali.