Desarrollo formal de Software Refinamiento:...

46
Modeling Systems Desarrollo formal de Software Refinamiento: ejemplo Profesor: Camilo Rueda 1 1 Universidad Javeriana-Cali PUJ 2010-1

Transcript of Desarrollo formal de Software Refinamiento:...

Modeling Systems

Desarrollo formal de SoftwareRefinamiento: ejemplo

Profesor:Camilo Rueda 1

1Universidad Javeriana-Cali

PUJ 2010-1

Modeling Systems Refinement

Obligaciones de prueba de refinamiento

prueba de inicializacionsupuestos probar que

existen valores iniciales de la abstraccionlos axiomas tales que el invariante de encadenamiento

se cumple para ellos con los valores inicialesdel refinamiento

prueba de un evento evsupuestos probar que

los axiomas, en la abstraccion existen valoresel invariante de la asignados a ev tales queabstraccion, el invariante de encadenamiento seel invariante de cumple para ellos con los valores asignadosencadenamiento, en el evento ev del refinamientoa guarda de ev

Modeling Systems Refinement

Refinamiento: obligaciones, inicializacion

Propiedades de las constantes⇒ INI INV REFInvariante concreto modificado

Modeling Systems Refinement

Refinamiento: obligaciones de guarda

Propiedades de las constantesInvariante abstractoInvariante concreto GRD REFguarda concreta⇒guarda abstracta

Modeling Systems Refinement

Refinamiento: obligaciones

Para todo evento distinto a inicializacionEventos nuevos refinan uno implıcito, sin guarda, conaccion skip

Propiedades de las constantesInvariante abstractoInvariante concretoguarda concreta INV REF⇒Invariante concreto modificado

Modeling Systems Refinement

Refinamiento: ausencia relativa de bloqueo

Propiedades de las constantesInvariante abstractoInvariante concretodisyincion de guardas abstractas DLF REF⇒Disyuncion de guardas concretas

Modeling Systems Refinement

Refinamiento

Para eventos viejos

Propiedades de las constantesInvariante abstractoInvariante concretoguardas concretas EQL REF⇒misma accion sobre variables comunes

Modeling Systems Refinement

Abstraccion: ejemplo

contextMIO ctx

constantsn, m

axiomsn ∈ N1∧m ∈ N1

end

MACHINE MIO abstSEES MIO ctxvariables parqinvariant

parq ∈ 0 .. min({m, n})initialisationparq := 0

EVENTSllega = when parq < n ∧ parq < m

then parq := parq + 1 endsale = when parq > 0

then parq := parq − 1 endend

Modeling Systems Refinement

Refinamiento

contextMIO ctx1

EXTENDSMIO ctx2

setsBUSESESTS

axiomsfinite(BUSES)finite(ESTS)card(BUSES) = ncard(ESTS) = mend

MACHINE MIO ref SEES MIO ctx2variables parq, busEstinvariant

busEst ∈ BUS 7� EST ∧ finite(busEst)∧ card(busEst) = parq

initialisation begin busEst := ∅ endllega =any b, e where b ∈ BUSES\dom(busEst)

∧ e ∈ ESTS\ran(busEst)then busEst := busEst ∪ {b 7→ e} endsale =any b where b ∈ dom(busEst)then busEnEst := busEst\{b 7→ busEst(b)}end

end

Modeling Systems Refinement

MIO, refinamiento dos: requerimientos

FUN R2 1 Las estaciones poseen puertasque abren o cierran

EQ R2 1 Hay exactamente una puerta por estacionSEG R2 1 Una puerta se abre solamente si hay

un bus parqueado en su estacionFUN R2 2 Algunos buses que estan ya parqueados

pueden estar autorizados para partirSEG R2 2 Si un bus esta autorizado para partir,

no se puede abrir la puerta de su estacionFUN R2 3 Un bus esta autorizado para partir solamente

si ya antes se abrio la puerta de la estacion

Modeling Systems Refinement

MIO, refinamiento 2: contexto y variables

context ctx3 EXTENDSctx2constants pestsets

PUERTAS FUN R2 1axioms

finite(PUERTAS) FUN R2 1pest ∈ PUERTAS�� ESTS EQ R2 1

end

variablespab puertas que estan abiertasbaut buses autorizados a partir

Modeling Systems Refinement

MIO, refinamiento 2: invariantes

INV R2 1 pab ⊆ dom(pest) FUN R2 1INV R2 2 pest [pab] ⊆ ran(busEst) SEG R2 1INV R2 3 baut ⊆ dom(busEst) FUN R2 2INV R2 4 busEst [baut ] ∩ pest [pab] = ∅ SEG R2 2

Modeling Systems Refinement

Eventos que cambian

initialisationpab := ∅baut := ∅

sale=where b ∈ bautthenbaut := baut\{b}end

Modeling Systems Refinement

Eventos nuevos

abrir=any pwherep ∈ PUERTAS\pabpest(p) ∈ ran(busEst)busEst−1(pest(p)) 6∈ baut

thenpab := pab ∪ {p}

end

cerrar=any pwhere

p ∈ pabthen

pab := pab\{p}baut := baut

∪{busEst−1(pest(p))}end

Modeling Systems Refinement

MIO, refinamiento tres: requerimientos

FUN R3 1 Se observan personasque entran o salen del sistema

FUN R3 2 Se lleva registro de las personasen cada estacion y en cada bus

FUN R3 3 Toda persona en el sistemaesta en un bus o en una estacion

Modeling Systems Refinement

MIO, refinamiento 3: contexto y variables

context ctx4 EXTENDSctx3sets

PERSONAS FUN R3 1end

variablespers personas en el sistemaperest la estacion en que esta cada personapeb el bus en que esta cada persona

Modeling Systems Refinement

MIO, refinamiento 3: invariantes

INV R3 1 pers ⊆ PERSONAS FUN R3 1INV R3 2 perest ∈ pers 7→ ESTS FUN R3 2INV R3 3 peb ∈ pers 7→ BUSES FUN R3 2INV R3 4 dom(perest) ∩ dom(peb) = ∅ FUN R3 3INV R3 5 dom(perest) ∪ dom(peb) = pers FUN R3 3

Modeling Systems Refinement

Eventos: inicializacion

initialisationpers := ∅perest := ∅peb := ∅

Modeling Systems Refinement

Eventos nuevos(1)

entrar per=any

p, ewhere

p ∈ PERSONAS\perse ∈ ESTS

thenpers := pers ∪ {p}perest := perest ∪ {p 7→ e}

end

salir per=any

p, ewhere

p ∈ dom(perest)e ∈ ran(perest)p 7→ e ∈ perest

thenpers := pers\{p}perest := perest\{p 7→ e}

end

Modeling Systems Refinement

Eventos nuevos(2)

subir=any p where

p ∈ dom(perest) ∧ pest−1(perest(p)) ∈ pabthen

peb := peb ∪ {p 7→ busEst−1(perest(p))}perest := perest\{p 7→ perest(p)}

end

bajar=any p where

p ∈ dom(peb) ∧ peb(p) ∈ dom(busEst)pest−1(busEst(peb(p))) ∈ pab

thenpeb := peb\{p 7→ peb(p)}perest := perest ∪ {p 7→ busEst(peb(p))}

end

Modeling Systems Refinement

MIO, refinamiento cuatro: requerimientos (1)

EQ R4 1 Hay lectores de tarjetas en laentrada de cada estacion

EQ R4 2 Los lectores pueden estar enverde, en rojo o apagados

FUN R4 1 Se lleva registro de los lectoresy la persona en cada uno de ellos

FUN R4 2 Se lleva registro de las personasautorizadas a entrar al sistema

FUN R4 3 Hay a lo sumo una persona en cada lectorFUN R4 4 Solamente personas autorizadas

pueden entrar al sistemaFUN R4 5 Las autorizaciones no son permanentes

Modeling Systems Refinement

MIO, refinamiento cuatro: requerimientos (2)

FUN R4 6 El lector se pone en verde solamentesi la persona esta autorizada a entrar

FUN R4 7 El lector se pone en rojosi la persona no esta autorizada a entrar

FUN R4 8 El lector se pone en rojo si ya alguienestaba usando el lector

FUN R4 9 El lector en rojo se apaga despues de cierto tiempoFUN R4 10 El lector en verde se apaga cuando la persona entraFUN R4 11 El lector en verde se apaga despues de cierto tiempo,

cuando la persona no entra

Modeling Systems Refinement

MIO, refinamiento 4: contexto y variables

context ctx5 EXTENDSctx4constants

lest EQ R4 1sets

LECTORES EQ R4 1axiomsfinite(LECTORES)lest ∈ LECTORES� ESTS EQ R4 1end

variableslap lector autorizado a personaverde luces en verderojo luces en rojopaut personas autorizadas a entrar al sistema

Modeling Systems Refinement

MIO, refinamiento 4: invariantes

INV R4 1 lap ∈ PERSONAS\pers 7� LECTORES FUN R4 1,FUN R4 5

INV R4 2 verde ⊆ LECTORES EQ R4 2INV R4 3 rojo ⊆ LECTORES EQ R4 2INV R4 4 verde ∩ rojo = ∅ EQ R4 2INV R4 5 verde = ran(lap) FUN R4 6INV R4 6 paut ⊆ PERSONAS FUN R4 2INV R4 7 pers ⊆ paut FUN R4 4INV R4 8 lap−1[verde] ⊆ paut FUN R4 6

Modeling Systems Refinement

Inicializacion y evento modificado

initialisationlap := ∅paut := ∅verde := ∅rojo := ∅

entrar per=any

lwhere

l ∈ verdep = lap−1(l)e = lest(l)

thenverde := verde\{l}lap := lap B− {l}

end

Modeling Systems Refinement

Eventos nuevos(1)

aceptar=any p, lwherep ∈ PERSONAS\persl ∈ LECTORESl 6∈ (verde ∪ rojo)p ∈ pautp 6∈ dom(lap)

thenverde := verde ∪ {l}lap(p) := l

end

rechazar=any p, lwhere

p ∈ PERSONAS\persl ∈ LECTORESl 6∈ (verde ∪ rojo)p 6∈ paut ∨ p ∈ dom(lap)

thenrojo := rojo ∪ {l}

end

Modeling Systems Refinement

Eventos nuevos(2)

apagar verde=any lwhere

l ∈ verdethen

verde := verde\{l}lap := lap B− {l}

end

apagar rojo=any lwhere

l ∈ rojothen

rojo := rojo\{l}end

Modeling Systems Refinement

Eventos nuevos(3)

autorizar=any pwhere

p ∈ PERSONAS\dom(lap)p 6∈ paut

thenpaut := paut ∪ {p}

end

desautorizar=any pwherep ∈ PERSONAS\persp ∈ pautp 6∈ dom(lap)

thenpaut := paut\{p}

end

Modeling Systems Refinement

Sincronizacion de los eventos

Modeling Systems Refinement

MIO, refinamiento quinto: mensajes de los lectores

Modeling Systems Refinement

MIO, refinamiento quinto: requerimientos

FUN R5 1 Hay mensajes entrelos lectores y un controlador

FUN R5 2 Los mensajes que envıa un lectoridentifican la persona en el lector

FUN R5 3 Los mensajes que envıa el controladorson de recepcion

DEC R5 1 Los lectores donde hay una personapermanecen bloqueados hasta quereciben mensaje del controlador

FUN R5 4 Se lleva registro de los lectores bloqueados

Modeling Systems Refinement

MIO, refinamiento 5: variables

variablesLBL lectores bloqueadosmTarj mensajes de los lectoresmRec mensajes del controlador

Modeling Systems Refinement

MIO, refinamiento 5: invariantes

INV R5 1 LBL ⊆ LECTORES FUN R5 4INV R5 2 mTarj ∈ LECTORES 7→ PERSONAS FUN R5 1,

FUN R5 2INV R5 3 mRec ⊆ LECTORES FUN R5 1INV R5 4 dom(mTarj) ∪ verde ∪ rojo ∪mRec = LBL DEC R5 1INV R5 5 dom(mTarj) ∩ (verde ∪ rojo ∪mRec) = ∅ DEC R5 1INV R5 6 mRec ∩ (verde ∪ rojo) = ∅ FUN R5 3

Los invariantes 4,5 y 6 establecen el camino de losmensajes

mTarj −→ verde −→ mRecmTarj −→ rojo −→ mRec

Modeling Systems Refinement

Inicializacion y aceptar/rechazar

initialisationLBL := ∅mTarj := ∅mRec := ∅

aceptar=wherel 7→ p ∈ mTarj

thenmTarj := {l}C−mTarj

end

rechazar=where

l 7→ p ∈ mTarjthen

mTarj := {l}C−mTarjend

Modeling Systems Refinement

apagar verde y rojo

apagar verde=then

mRec := mRec ∪ {l}end

apagar rojo=then

mRec := mRec ∪ {l}end

entrar per=thenmRec := mRec ∪ {l}

end

Modeling Systems Refinement

Eventos nuevos(1)

TARJ=any p, lwhere

p ∈ PERSONAS\persl ∈ LECTORES\LBL

thenLBL := LBL ∪ {l}mTarj := mTarj ∪ {l 7→ p}

end

DESBL=any lwhere

l ∈ mRecthen

mrec := mrec\{l}LBL := LBL\{l}

end

Modeling Systems Refinement

Sincronizacion de los eventos

Modeling Systems Refinement

MIO, refinamiento sexto: luces, registradoras

Modeling Systems Refinement

MIO, refinamiento quinto: requerimientos

EQ R6 1 Hay dispositivo de luces verde y roja en cada lectorEQ R6 2 Hay registradora giratoria en cada lector

FUN R6 1 El dispositivo de luces recibe del controladormensajes de aceptacion o rechazo

FUN R6 2 El dispositivo de luces prende la luz verdecuando recibe un mensaje de aceptacion

El dispositivo de luces solamente apaga la luz verdeFUN R6 3 cuando la persona pasa por la registradora

o despues de cierto tiempo, si no pasaFUN R6 4 El dispositivo de luces envıa al controlador

un mensaje cuando apaga una luz, verde o rojaFUN R6 5 La registradora giratoria envıa al controlador

un mensaje cuando una persona pasa

Modeling Systems Refinement

MIO, refinamiento 6: variables (ciclo de verde)

variablesVRD luces en verdemAceptar mensajes hacia los lectoresmVerdeOff mensajes hacia el controladormPasa mensajes hacia el controlador

Modeling Systems Refinement

MIO, refinamiento 6: invariantes

INV R6 1 VRD ⊆ LECTORES EQ R6 1INV R6 2 mAceptar ⊆ LECTORES FUN R6 1INV R6 3 mPasa ⊆ LECTORES FUN R6 5INV R6 4 mVerdeOff ⊆ LECTORES FUN R6 4INV R6 5 mAceptar ∪mPasa ∪mVerdeOff = verde FUN R6 3INV R6 6 mAceptar ∩ (mPasa ∪mVerdeOff ) = ∅ FUN R6 4INV R6 7 mPasa ∩mVerdeOff = ∅ FUN R6 4INV R6 8 VRD ⊆ mAceptar FUN R6 4

Modeling Systems Refinement

Inicializacion y aceptar/rechazar

initialisationVRD := ∅mAceptar := ∅mVerdeOff := ∅mPasa := ∅

aceptar=then

mAceptar := mAceptar ∪ {l}end

ACEPTE=any lwhere l ∈ mAceptarthenVRD := VRD ∪ {l}

end

PASA=any l where l ∈ VRDthen VRD := VRD\{l}

mAceptar := mAceptar\{l}mPasa := mPasa ∪ {l}

end

Modeling Systems Refinement

apagar verde

apagar verde=where l ∈ mVerdeOffthenmVerdeOff := mVerdeOff\{l}end

APAGA VERDE=any lwhere l ∈ VRDthenmVerdeOff := mVerdeOff ∪ {l}VRD := VRD\{l}mAceptar := mAceptar\{l}end

Modeling Systems Refinement

apagar rojo

rechazar=then

mRechazar := mRechazar∪ {l}

end

apagar rojo=where l ∈ mRojoOffthenmRojoOff := mRojoOff\{l}

endAPAGA ROJO=any lwhere l ∈ ROJOthen

mRojoOff := mRojoOff ∪ {l}ROJO := ROJO\{l}mRechazar := mRechazar\{l}

end

entrar per=then

mRec := mRec ∪ {l}end

Modeling Systems Refinement

rechazo: evento fısico

RECHAZO=where l ∈ mRechazarthenROJO := ROJO ∪ {l}end

Modeling Systems Refinement

Sincronizacion de los eventos