• Non ci sono risultati.

Progettazione e modellazione di sistemi basata su contratti PROSSIMO Progettazione, sviluppo e ottimizzazione di sistemi intelligenti multi-oggetto

N/A
N/A
Protected

Academic year: 2021

Condividi "Progettazione e modellazione di sistemi basata su contratti PROSSIMO Progettazione, sviluppo e ottimizzazione di sistemi intelligenti multi-oggetto"

Copied!
51
0
0

Testo completo

(1)

Progettazione e modellazione di sistemi basata su contratti

PROSSIMO

Progettazione, sviluppo e ottimizzazione di sistemi intelligenti multi-oggetto

Azioni Cluster “Top Down”

Progetto finanziato con fondi POR FESR 2014/2020

ASSE PRIORITARIO I “RICERCA SCIENTIFICA, SVILUPPO TECNOLOGICO E INNOVAZIONE”

(2)

Decomposizione gerarchica

Sistema A

Il sistema A viene decomposto nei sottosistemi B e C

Il sottosistema B viene decom- posto nelle apparecchiature D ed E

La decomposizione gerarchica preserva le porte

(3)

Specifica dei componenti con contratti

Un componente è immerso in un ambiente

Il suo comportamento è specifica- to da contratti

Contratto: assunzioni + garanzie Assunzioni: cosa dovrebbe fare l’ambiente verso il componente Garanzie: cosa deve fare il componente

(4)

Controllo anticipato dei requisiti

Specificare i componenti durante la progettazione

decomposizione delle specifi- che in base alla decomposizio- ne dell’architettura

Garantire la correttezza della decomposizione

Il contratto di A deriva dai contratti di B e C?

(5)

Riutilizzo dei componenti

Libreria di componenti affidabili es. la SRA dell’ESA

Implementazione + contratti Integrabile?

confrontare i contratti!

(6)

Correttezza per costruzione!

(7)

Ulteriori vantaggi

Segue il processo di sviluppo strutturato Esempio, dominio aerospaziale Fornisce supporto formale

Da informale a formale (“gap semantico”) Supporto automatico anticipato

Non sono richiesti modelli di comportamento dettagliati Sfrutta la decomposizione per la scalabilità

Nessuna analisi monolitica intrinsecamente incrementale

Le modifiche locali non influiscono sull’intera decomposizione

(8)

Elementi per la “visione formale”

Un linguaggio formale per speci- ficare i contratti

Logiche Temporali

Un framework per il corretto raffinamento del contratto

Obbligo di prova

Conseguenza logica delle for- mule logiche temporali Un linguaggio formale per speci- ficare l’implementazione

Macchine a stati finiti Verifica dell’implementazione

(9)

Linguaggi di specifica delle proprietà

Linguaggi di specifica delle

proprietà

(10)

Proprietà

Le proprietà sono espressioni in una logica matematica che utilizza simboli della descrizione del sistema.

Utilizzato per formalizzare i requisiti.

Spesso più vicino alle descrizioni informali che comportamentali Ogni proprietà è associata all’insieme del comportamento del sistema.

Problemi:

Specifica: definire le proprietà di un sistema.

Verifica: controlla se il sistema soddisfa le proprietà.

Convalida: controlla se stiamo considerando le giuste proprietà.

Sintesi: costruire un sistema che soddisfi le proprietà.

(11)

Proprietà, tracce e logica

(12)

Logica Temporale Lineare (LTL)

Modelli lineari

Tracce come sequenze di stati Costruito su proposizioni atomi- che

Utilizzo di connettori booleani E operatori temporali

(13)

Esempi LTL

Gp

“sempre p” – invariante G (p → Fq)

“p è sempre seguito da q” – reazione G (p → Xq)

“ogni volta che p è verificato, q è assegnato a true nel ciclo successivo reazione immediata

GFp

“infinite volte p” – fairness FGp

“alla fine in modo permanente p”

G (p → (q U r ))

(14)

Esempio di implicazione semplice

Date le seguenti formule G (request → F (received )) G (received → F (processed )) G (processed → X (grant)) Da cui possiamo implicare

G (request → F (grant))

(15)

Operatori “Past”

Y p:

“nello stato precedente p”

Duale dell’operatore next X O p

“In passato una volta p”

Duale dell’operatore eventually F H p

“In passato sempre p”

Duale dell’operatore always G p S q (p since q)

“in uno stato precedente p, e da allora q”

Duale dell’operatore until U

(16)

Espressioni regolari

RELTL arricchisce LTL con espressioni regolari:

Implicazione del suffisso {r } |→ p significa che ogni sequenza finita corrispondente a r è seguita da un suffisso corrispondente a p

La congiunzione del suffisso {r }  → p significa che esiste una sequenza finita corrispondente a r seguita da un suffisso corrispondente a p Esempi

{{¬p}[∗]; p}[∗3] |→ q

G ({request; busy [∗]; grant} |→ response)

Base formale per il linguaggio di descrizione hardware PSL

(17)

Da finito a infinito

Usa predicati del primo ordine anziché proposizioni G (x ≥ a ∨ x ≤ b)

GF (x = a) ∧ GF (x = b)

Predicati interpretati secondo la teoria specifica T (da qui in poi, ven- gono utilizzati solo i reali)

Operatore “next” per esprimere cambiamenti/transizioni:

G (next(x ) = x + 1) G (next(a) − a ≤ b)

(18)

Logica temporale metrica

G (p → F≤3q)

“p è seguito da q entro 3 unità di tempo”

G (p → G≤20q)

ogni volta che si verifica p, allora q vale nelle seguenti 20 unità di tempo”

G (p → (¬q U≥5q))

“p è seguito da q ma non prima di 5 unità di tempo”

(19)

HRELTL: RELTL ibrido

G (der (x ) < 2)

“la derivata di x è sempre inferiore a 2”

G (a → der (x ) = 0)

ogni volta che si verifica a, la derivata di x è 0”

G (a → (b U der (x ) ≤ 5))

“Ogni volta che si verifica a, b rimane vero fino a quando la derivata di x è minore o uguale a 5”

G (speed > limit → F (warning ))

(20)

Othello

Linguaggio leggibile dall’uomo per HRELTL Espressioni di linguaggio naturale controllate Sviluppato nel progetto EuRailCheck

Finanziamento da parte dell’Agenzia ferroviaria europea Formalizzazione e convalida dei requisiti ETCS

Convalida basata sulla modellazione da parte di ingegneri delle specifiche

(21)

Progettazione basata su componenti

Progettazione basata su

componenti

(22)

Componente

Un componente ha:

Un’interfaccia sintattica

Opzionalmente, una struttura interna Un comportamento

Un ambiente Proprietà

(23)

Interfaccia componente a scatola nera

Un’interfaccia del componente definisce il confine dell’interazione tra il componente e il suo ambiente.

Consiste di:

Set di porte di input e output (sintassi)

Le porte rappresentano dati visibili ed eventi scambiati con l’ambiente.

Set di tracce (semantica)

Le tracce rappresentano il comportamento, la cronologia degli eventi e i valori sulle porte dati.

(24)

Struttura del componente a scatola trasparente

Un componente ha una struttura interna.

Vista dell’architettura:

Sottocomponenti Interconnessioni Delegazioni

Vista macchina a stati:

(25)

Implementazione dei componenti

IS: porte di input del componente S OS: porte di output di S

VS = IS ∪ OS: tutte le porte di S Tr (X ) tracce di X ⊆ VS

Sequenza di assegnazioni a X

Macchina a stati Imp implementazione di S se e solo se L(Imp) ⊆ Tr (VS)

M può essere associato a µImp : Tr (IS) → 2Tr (OS) tale che µImpi) = {σ0 | σi ∈ L(Imp)}

Traccia di input mappata ad un set di tracce di output Set usato per considerare il non determinismo

Il set vuoto corrisponde alla traccia di input rifiutata

(26)

Ambiente dei componenti

Macchina a stati Env ambiente di S se e solo se L(Env ) ⊆ Tr (IS) Compatibilità dell’implementazione con l’ambiente (ad es. per il riuti- lizzo)

Vista basata sulla traccia (scatola nera):

Imp deve accettare qualsiasi traccia di Env L(Env ) ⊆ {σ | µImp(σ) 6= ∅}

Vista basata sullo stato (scatola trasparente):

Per qualsiasi stato raggiungibile di Imp × Env , per qualsiasi transizione di input di Env , esiste una transizione corrispondente di Imp

Come nella teoria dell’interfaccia

(notare che Imp × Env è un sistema chiuso )

(27)

Componenti e collegamenti compositi

I componenti sono composti per creare componenti compositi.

Diversi tipi di composizioni:

Sincrona, Asincrona, Sincronizzazioni,

Rendez-vous contro buffered

Pairwise, multicast, broadcast, multicast con un ricevitore

Mappa delle connessioni (regola generale dei linguaggi architetturali):

Porte di input del componente composito Porte di output dei sottocomponenti in

Porte di input dei sottocomponenti.

Porte di output del componente composito

(28)

Architettura di sistema

Un componente è in realtà un tipo di componente

Un’architettura di sistema è un’istanza di un componente composito.

Definisce un albero di istanze del componente.

(29)

Progettazione basata su contratti con logiche temporali

Progettazione basata su contratti

con logiche temporali

(30)

Contratti

Proprietà del componente e del suo ambiente.

Può essere visto come asserzioni per le interfacce dei componenti.

I contratti vengono utilizzati per caratterizzare la correttezza delle im- plementazioni e degli ambienti dei componenti.

In genere, le proprietà per il Model Checking hanno una vista “comple- tamente osservabile” dell’interno del sistema

Per i componenti invece:

Limitato alle interfacce dei componenti.

Struttura rappresentata tramite assunzioni e garanzie.

I contratti per la programmazione Orientata agli Oggetti sono pre/post- condizioni

(31)

Contratti basati sulla traccia

Asserzioni utilizzate per rappresentare insiemi di tracce sulle porte dei componenti:

Φ(V ) asserzione sulle variabili V hhΦii ⊆ Tr (V ) semantica di Φ

Un contratto del componente S è una coppiadi asserzioni <A,G> su VS

A è l’assunzione G è la garanzia

Env è un ambiente corretto se e solo se L(Env ) ⊆ hhΦii Imp è un’implementazione corretta se L(Imp) ∩ hhAii ⊆ hhG ii

(32)

Raffinamento: obblighi di prova

Dato il contratto C = <A,G> per un componente

Dati i contratti C1 = <A1,G1> , ..., <An,Gn> per i sottocomponenti Obblighi di prova per “{Ci} raffina C ”:

(33)

Cosa significa?

Focalizziamoci sulle proprietà del componente padre

Il contratto della componente padre A → G deve seguire i contratti dei sottocomponenti

Visione alternativa:

(34)

Cosa significa? [continua]

Focalizziamoci sull’i-esimo sottocomponente

Le assunzini dell’i-esimo sottocomponente devono derivare dai contratti degli altri sottocomponenti più le assunzioni della componente padre

(35)

Obblighi di prova

Gli obblighi di prova sono necessari e sufficiente per un corretto raffina- mento del contratto

Estensione per gestire la composizione asincrona Problema chiave: informazioni diagnostiche!

In caso di violazione, traccia

Localizzazione mediante metodi basati su prove estrazione di un core non soddisfacibile

(36)

Assunzioni deboli vs. forti

Assunzioni deboli vs. forti (entrambe importanti) Assunzioni deboli

Definire il contesto in cui è assicurata la garanzia Come nel ragionamento assunzione-garanzia

Diverse coppie di assunzione-garanzia potrebbero avere ipotesi incoerenti (sex > 0 allora ..., se x < 0 allora ...)

Assunzioni forti

Definire le proprietà che devono essere soddisfatte dall’ambiente.

Idea originale di progettazione basata su contratto.

Se non soddisfatto, l’ambiente può causare un guasto (divisione per zero, mancanza di energia, collisione).

(37)

Ragionamento assunzione-garanzia

Corrisponde ad una direzione del raffinamento del contratto

Molti lavori si concentrano sulla ricerca della giusta assunzione/garanzia Per esempio, come interrompere la circolarità

Meccanismi basati sull’induzione

Si noti che sono modi strutturali per dimostrare il raffinamento basato sulla proprietà

(38)

OCRA come strumento di supporto

OCRA come strumento di

supporto

(39)

OCRA come strumento di supporto

OCRA=Othello Contract Refinement Analysis Asserzioni sui contratti specificate in Otello.

Rappresentazione testuale dell’architettura.

Costruito su nuXmv per il model checking a stati infiniti Integrato con altri strumenti

Uno dei pochi strumenti a supporto della progettazione basata su con- tratto per sistemi embedded.

Disponibile pubblicamente (per scopi non commerciali) all’indirizzo https://es.fbk.eu/tools/ocra

(40)

Principali caratteristiche di OCRA

Interfacce di componenti ricche per specificare:

Porte di Input/Output Porte per Dati/Eventi

Comprende aspetti in tempo reale e di sicurezza.

Contratti in logiche temporali.

Formule temporali utilizzate per caratterizzare un insieme di tracce sulle porte dei componenti.

(41)

Linguaggio di OCRA

(42)

Interfaccia componente

(43)

Contratti in Othello

(44)

Raffinamento dei componenti

(45)

Raffinamento dei contratti

(46)

Esempio completo

(47)

Esempio completo [continua]

(48)

OCRA: una vista parametrizzata

Il flusso implementato in OCRA è parametrico Sono supportate molteplici logiche

Le tracce possono essere discrete o ibride Funzionalità richieste

Implicazione logica

(49)

Aspetti ibridi di OCRA

I tipi di porta possono essere

Tipi finiti: “booleani”, “enumerativi”, ...

Tipi infiniti: “reali”, “interi”, ...

Tipo “continuo”: porte a valore reale costrette ad evolversi continuamen- te nel tempo

Tipo “evento”: porte con valore booleano assegnate solo su transizioni discrete

Le formule atomiche possono essere:

Variabili booleane.

Uguaglianze.

Predicati aritmetici su termini interi, reali e continui.

Operatori temporali: come in LTL e HRELTL

(50)

Funzionalità

Verifica della sintassi Verifica del raffinamento

Genera tutti gli obblighi di prova ed esegue la verifica delle implicazioni Verifica della consistenza

Ci sono assunzioni/garanzie incoerenti?

Verifica dell’implementazione

L’implementazione dei componenti soddisfa i contratti?

Verifica della ricettività

L’implementazione dei componenti è in grado di reagire ad ogni input dell’ambiente?

(51)

Risultati della verifica del raffinamento

Per ogni componente, per ogni contratto raffinato, verifica il raffina- mento.

Per ogni obbligo di prova, verifica la validità:

[OK] se valido

[BOUND OK] se nessun controesempio viene trovato fino a k [FAIL] se viene trovato un controesempio

Riferimenti

Documenti correlati

Programmare CPS 6= programmare parte cyber k programmare parte fisica Definizione (Programma ibrido).. 16

Innanzitutto, utilizzando il menu di scelta rapida (ottenuto facendo clic con il tasto destro sull’attore composito), seleziona “Customize → Rename” e dai un nome che si addice

Monitoraggio a distanza e utilizzo delle piattaforme mobili per il monitoraggio puntuale in un contesto di interazione con l’essere umano (es. comandi vocali). Si vogliono gestire

Luca Pulina, Responsabile scientifico del progetto cluster PROSSIMO realizzata per e dagli studenti. Dott.ssa Francesca Palumbo, Ricercatrice dell'Università

Tecniche e strumenti software per l’analisi formale di CPS Dicembre 2019 Strumenti software per la modellazione di CPS Dicembre 2019 HW/SW co-design e monitoring (HW/SW) di

Durante tale evento, sono state coinvolto alcune aziende del progetto cluster PROSSIMO, tra cui Athena, STAM e Lifely e Abinsula.. In particolare, Lifely è stata sponsor

Terza giornata di formazione e trasferimento - La terza giornata di formazione e trasferimento si è svolta a Sassari il 18/02/020 presso il dipartimento di Chimica e Farmacia e

Tecniche e strumenti software per l’analisi formale di CPS Dicembre 2019 Strumenti software per la modellazione di CPS Dicembre 2019 HW/SW co-design e monitoring (HW/SW) di