Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · •...

39
Métodos para la construcción de software fiable: Abstracción y verificación de software María del Mar Gallardo Melgarejo Pedro Merino Gómez Dpto. de Lenguajes y Ciencias de la Computación Universidad de Málaga (gallardo,pedro)@lcc.uma.es

Transcript of Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · •...

Page 1: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la construcción desoftware fiable:Abstracción y verificación de software

María del Mar Gallardo MelgarejoPedro Merino Gómez

Dpto. de Lenguajes y Ciencias de la ComputaciónUniversidad de Málaga

(gallardo,pedro)@lcc.uma.es

Page 2: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino2

Ejemplo: Un ascensor

Page 3: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino3

Modelo Promela del Ascensorproctype Sampler() {

do /* Make one internal request and then schedule */

:: f = Position[0] ->if:: (f == (nb_floor - 1)) -> f = 0:: else -> f++fi;do /* Choose the floor to request */:: ((f < (nb_floor - 1)) && (f != Position[0])) ->

f++:: breakod;

progress_request: internal_request[f]=true;

/* Gives control to other processes */Token_1!go;Token_1?go;Token_3[0]!go;Token_3[0]?go;Token_4[0]!go;

od }

init{

atomic{

if /* decide the initial floor */

:: Position[0] = 0

:: Position[0] = 1

:: Position[0] = 2

:: Position[0] = 3

fi;

/* configure the initial system */

run Lift(0);

run SysLift(0);

run Sampler();

run SysStop();

run SysPanel();

#ifdef CONFIG

config = true; /* employed to check NoMove */

#endif

}

}

Page 4: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino4

El modelo Promela en SPIN

Page 5: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino5

Un escenario

Page 6: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino6

Verificación del ModeloUna propiedad crítica:“el ascensor no se mueve de un extremo a otro, si no hay llamadas”

No existe ninguna traza en el modelo que satisfata NoMove

NoMove: <> (configured &&<> ( (posL && [] no_request && <> posU)

|| (posU && [] no_request && <> posL)))

#define configured (config==true)#define posU (Position[0] == (nb_floor -1))#define posL (Position[0] == 0)#define no_request ((internal_request[0] != true) &&

(internal_request[1] != true) &&(internal_request[2] != true) &&(internal_request[3] != true))

Page 7: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino7

Verificación del Modelo#define configured (config==true)#define posU (Position[0] == (nb_floor -1))#define posL (Position[0] == 0)

#define no_request ((internal_request[0] != true) &&(internal_request[1] != true) &&(internal_request[2] != true) &&(internal_request[3] != true)) .....

La verificación depende del número de pisos

Page 8: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino8

Verificación del Modelo

Page 9: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino9

Abstracción

Paso 1. Abstracción de datos

Retículo FloorsOperaciones abstractas

Page 10: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino10

AbstracciónPaso 2. Transformación del Modelo#define FLR_INCR(x) if

:: x==Lower -> x = Middle \:: x==Middle ->x = noLower \:: x==noUpper ->x = noLower \:: x==noLower ->x = noLower \:: x==Unknown ->x = noLower \:: else -> x = ILLEGAL \fi

proctype Lift(int pid){ int Order=null;do...:: SysLift_Lift[pid]?Order;

if:: (Order==Up) -> FLR_INCR(Position[pid]);

...}

#define FLR_EQunder(x,y) ((x==Lower && y==Lower) ||(x==Upper && y==Upper) )

#define FLR_EQimp(x,y) (((x==Upper)&&(y==noLower)) ||((x==noLower)&&(y==Upper)) ||((x==Lower)&&(y==noUpper)) ||((x==noUpper)&&(y==Lower)) ||((x==Middle)&&(y==noUpper))||((x==noUpper)&&(y==Middle))||((x==Middle)&&(y==noLower))||((x==noLower)&&(y==Middle))||((x==Middle)&&(y==Middle))||((x==Unknown)) || ((y==Unknown)))

#define FLR_EQ(x,y) (FLR_EQimp(x,y) || FLR_EQunder(x,y))

Page 11: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino11

Corrección de la abstracciónDado un modelo M, construir una sobreaproximación Mα

M

M y Mα deben satisfaceralguna condición de corrección

Una posibilidad es que Mα simule a Maunque hay otras opciones

Page 12: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino12

Corrección

Dada la abstracción α: Σ → Σα

M = (Σ,Inst,s0,→) Mα = (Σα,Inst,s0α,→α)

Mα es una α−simulación de M sii∀s,s’ ∈ Σ, ∀inst ∈ Inst, ∀sα ∈ Σα

α(s) ≤ sα, s → s’ ⇒ ∃ s’α ∈ Σα | α(s’) ≤ s’α, sα →α s’αinst inst

Page 13: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino13

Correccióninsts s’

sα inst s’αααα

inc10 1

Lower inc1 Middleααα

inc11 2

Middle inc1 NoLowerααα

inc1Nb_floors -2

Middle inc1 NoLowerααα

Nb_floors -1

Instrucciones

Page 14: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino14

Corrección insts s’

sα inst s’αααα

IsNull0 0

Lower IsNull Lowerααα

IsOne1 2

Middle IsOne Middleααα

IsOneNb_floors -2

Middle IsOne Middleαα

tests

test(p,s) ⇒ testoα(p,sα) testo

α(b,sα) = ∨{s|α(s) ≤ sα} test(p,s)

Page 15: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino15

Conservación de propiedades

#define FLR_INCR(x) if

M ⊨ f

Modelo

Propiedad

Mα ⊨ f α

M ⊨α f ??

Interpretaciónabstracta

Transformación

Modelchecking

Page 16: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino16

Model checking

Mf

Contraejemplos

M

Contraejemplos

Mf

Page 17: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino17

Model checking

M ¬f M ¬f

Contraejemplos

Page 18: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino18

Model checking + abstracción

M

f

Subaproximaciónde propiedades

Page 19: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino19

Model checking + abstracción

Sobreaproximaciónde propiedades

M

¬fαMα ¬f

Page 20: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino20

Semántica LTL

testoα(p,sα) = ∨{s|α(s) ≤ sα} test(p,s)

testuα(p,sα) = ∧{s|α(s) ≤ sα} test(p,s)

ti = si, si+1,...

Page 21: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino21

Conservación de propiedades

Page 22: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino22

Transformación de propiedades

Page 23: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino23

Transformación de propiedades

#define configured (config == true)#define posU FLR_EQ(Position[0],FLR_Map(FLR_LOW,FLR_HIGH,(nb_floor-1)))#define posL FLR_EQ(Position[0],FLR_Map(FLR_LOW,FLR_HIGH,0))#define no_request (ARRAY_ISNOTSET(internal_request,

FLR_Map(FLR_LOW,FLR_HIGH,0), true)&& ARRAY_ISNOTSET(internal_request,

FLR_Map(FLR_LOW,FLR_HIGH,(nb_floor/2)), true)&& ARRAY_ISNOTSET(internal_request,

FLR_Map(FLR_LOW,FLR_HIGH,(nb_floor-1)), true))

NoMove: <> (configured &&

<> ( (posL && [] no_request && <> posU)

|| (posU && [] no_request && <> posL)))

Page 24: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino24

Transformación de propiedades

Page 25: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino25

Verificación del modelo abstracto

Page 26: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino26

Verificación del modelo abstracto

Page 27: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino27

Verificación del modelo abstracto

Page 28: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino28

Vista de αSpin

Page 29: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino29

Model checking on-the-fly vssobre y sub aproximación

Page 30: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino30

Trazas espurias

M

f

Contraejemplosespurios

M

Contraejemplosespurios

M

Contraejemplosespurios

M

Contraejemplosespurios

M

Contraejemplosespurios

M

Contraejemplosespurios

M

Contraejemplosespurios

M

Contraejemplosespurios

M

f

Refinamientodel modelo

Mαfα Mα

Page 31: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino31

Trazas espurias

M

¬fαMα¬f

Contraejemplosespurios

Page 32: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino32

Trazas espurias

M

¬fαMα¬f

refinamiento

Page 33: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino33

Refinamiento

Explota el poder delmodel checking paraanalizar la parte del modeloque nos interesa

Combina sobre ysubaproximaciónde propiedades

Page 34: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino34

EjemploSistema de transición

Variables globalesInt x, proc;x = Min;

o1

even(x)/proc =1

Process P1

o2

odd(x)/proc =1

s1

s2

Process P2

s3x!=Min/proc =2

/x = x+1

/x = x-1

x!=Max/proc =2

noprogress = ⃟⃞ (proc == 1) M ⊭ ∃ noprogress

Page 35: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino35

EjemploModelo concreto

s1, o2,x=0,proc=1

s1, o1,x=0,proceven(x)/proc =1

s1, o1,x=1,proc=2s2, o2,x=0,proc=1

/x = x+1

s2, o1,x=0,proc=2

x!=Max/proc =2

even(x)/proc =1

x!=Max/proc =2

s1, o1,x=2,proc=2

....

....

....

M ⊭∃⃟⃞ (x == Max) ???

Page 36: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino36

Ejemplo Modelo abstracto α(Min) = minα(Max) = maxα(v) = middle (min < v < max)

min middle max

s1, o1,x=min,proc

even(x)/proc =1

s1, o1,x=middle,proc=2s1, o2,x=min,proc=1

/x = x+1

s2, o1,x=min,proc=2

x!=Max/proc =2

even(x)/proc =1

s1, o2, x=middle,proc=1

even(x)/proc =1

s1, o1, x=middle,proc=1

odd(x)/proc =1

even(x)/proc =1

s1, o2,x=min,proc=1

s1, o2, x=max,proc=2

x!=Max/proc =2

s1, o2, x=max,proc=1

even(x)/proc =1

/x = x+1

s1, o2, x=max,proc=1

odd(x)/proc =1

odd(x)/proc =1

Mα ⊨α ∃⃟⃞ (x == Max)

Page 37: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino37

M ⊭ ∃ noprogress

Ejemplo

Mα ⊩ ∀ (⃟⃞ (x == Max)α → noprogress)

M ⊭∃⃟⃞ (x == Max)

Page 38: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino38

Hot topics en Técnicas formales

• Extensión de las técnicas de análisis para estudiar aspectos de tiempo real, rendimiento, planificabilidad,...

• Explorar distintos modelos matemáticos que permitan representar nuevos sistemas o problemas: por ejemplo, sistemas híbridos, integración de los principios matemáticos de abstracción, composición y jerarquía.

• Integración sin costuras de las nuevas herramientasdesarrolladas en el proceso del desarrollo del software.

• Verificación probabilística.

Page 39: Métodos para la construcción de software fiable ...gallardo/abstractmodelchecking0304.pdf · • Explorar distintos modelos matemáticos que permitan representar nuevos sistemas

Métodos para la Construcción de Software Fiable- María del Mar Gallardo—Pedro Merino39

Bibliografía

• Dennis Dams: Abstraction in Software Model Checking: Principles and Practice (Tutorial Overview and Bibliography). SPIN 2002: 14-21

• M. M. Gallardo, P.Merino, E.PimentelRefinement of LTL Formulas for Abstract Model Checking The 9thInternational Static Analysis Symposium SAS '02 LNCS v. 2477 pp395-410

• M. M. Gallardo, J. Martínez, P.Merino, E.Pimentel αSPIN: A Tool for Abstract Model Checking International Journal on Software Tools for Technology Transfer (en imprenta)

• J. Wing Platitudes and attitudes International Journal on SoftwareTools for Technology Transfer (2003) 4: 261-265