Desarrollo formal de Software Refinamiento:...
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 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
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
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