Obligaciones de prueba

Anuncio
Working Hypothesis
Desarrollo formal de Software
Modelos en la Metodologı́a B
Profesor:
Camilo Rueda 1
1 Universidad
Javeriana-Cali
PUJ 2009-1
Working Hypothesis
Oz
Eventos
Un evento es una transición que se puede observar
Consta de dos partes: una guarda y una acción
La guarda establece cuándo puede ocurrir el evento
Está formada por varias condiciones
La acción explica cómo se modifican las variables
Está formada por varias asignaciones simples
Working Hypothesis
Oz
Eventos(2)
Notación
when < guarda > then < accion > end
select < guarda > then < accion > end
when ncar < cap then ncar := ncar + 1 end
Caso especial cuando la guarda es true
begin < accion > end
Working Hypothesis
Oz
Eventos(3)
xxx=
entra=
any x, y , z, ... where
P(x, y, ..., v , w, ...)
then
S(x, y , ..., v , w, ...)
end
any b where
b∈C
then
x := x ∪ {b}
end
Working Hypothesis
Oz
Operaciones en metodologı́a B
Los eventos se llaman operaciones
Pueden tener parámetros
se componen de
la precondición (guarda)
la acción
oper1(x)=
pre P(x, v ) then S(x, v ) end
consignar(c, k)=
pre c ∈ cuentas ∧ k ∈ N
then
saldo(c) := saldo(c) + k
end
Working Hypothesis
Oz
Diferencia entre guarda y precondición
La guarda (when o select) garantiza protección de la
acción:
la acción solamente se ejecuta si la guarda es cierta
La precondición establece condiciones para el usuario
el usuario de la operación debe garantizar la
precondición antes de invocar la operación
Working Hypothesis
Oz
Formato de una máquina
MACHINE
nombre
SETS S
CONSTANTS k
PROPERTIES P(S, k)
VARIABLES v
INVARIANT I(v )
initialisation
U
OPERATIONS
oper = select G(v ) then S(v ) end
end
Working Hypothesis
Oz
Formato de una máquina: ejemplo
MACHINE Parq abst
CONSTANTS cap
PROPERTIES cap ∈ N1
VARIABLES parq
INVARIANT
parq ∈ N ∧ parq ≤ cap
initialisation
parq := 0
OPERATIONS
llega = select parq < cap
then parq := parq + 1 end
sale = select parq > 0 then parq := parq − 1 end
end
Working Hypothesis
Oz
Formato de una máquina: ejemplo en Rodin, contexto
CONTEXT Parq ctx
CONSTANTS cap
AXIOMS cap ∈ N1
end
Working Hypothesis
Oz
Formato de una máquina: ejemplo en Rodin, máquina
MACHINE Parq abst
SEES Parq ctx
VARIABLES parq
INVARIANT
parq ∈ N ∧ parq ≤ cap
initialisation
parq := 0
EVENTS
llega = select parq < cap
then parq := parq + 1 end
sale = select parq > 0 then parq := parq − 1 end
end
Working Hypothesis
Oz
Obligaciones de prueba
La especificación consta de:
El contexto, o parte constante, que contiene:
los tipos, que se prepresentan mediante conjuntos diferidos
las constantes del sistema
los axiomas (“properties”) que definen propiedades de las
constantes y conjuntos
El modelo abstracto (o máquina), que contiene:
Las variables del sistema
el invariante que expresa propiedades de las variables
La parte dinámica del sistema: los eventos u operaciones
Working Hypothesis
Oz
Obligaciones de prueba (2)
La especificación debe probarse:
pruebas de consistencia
supuestos
probar que
los axiomas
los valores iniciales
cumplen el invariante
los axiomas, el invariante, los nuevos valores asignados
y la guarda del evento
cumplen el invariante
prueba de ausencia de bloqueos
supuestos
probar que
los axiomas y el invariante la disyunción de las
guardas se cumple
Working Hypothesis
Oz
Obligaciones de Prueba: formulación
variables:
init
v := K
v
inv:
I(v )
eventoi
when
Gi (v )
then
v := Ri (v )
end
Working Hypothesis
Oz
Preservar el invariante
Sea S el conjunto de valores v consistente con el
invariante I(v )
Sea L el conjunto de valores resultado de la inicialización
L⊆S
L 6= ∅
Es decir, el conjunto de valores que se usa para inicializar:
no puede ser vacı́o,
debe hacer parte de los valores admitidos por el invariante
Working Hypothesis
Oz
Reglas de inicialización
S = {v | I(v )}
L = {v | v = K }
L 6= ∅
L⊆S
` ∃v .v = K
` I(v = K)
FIS
INI INV
Working Hypothesis
Oz
Reglas de inicialización: ejemplo
S = {v | v ∈ N ∧ v ≤ cap}
L = {v | v = 0}
L 6= ∅
L⊆S
` ∃v .v = 0
` 0 ∈ N ∧ 0 ≤ cap
FIS
INI INV
Working Hypothesis
Oz
Reglas: preservar el invariante
I(v)
Gi (v)
`
∃v 0 .v0 = Ri (v)
FIS
I(v)
Gi (v)
`
I(R(v))
Ausencia de deadlock
I(v)
`
G1 (v ) ∨ . . . ∨ Gn (v )
DLF
Ev/inv/INV
Working Hypothesis
Oz
Reglas: preservar el invariante: ejemplo
parq ∈ N ∧ parq ≤ cap
∧ parq > 0
`
∃v 0 .v 0 = parq − 1
FIS
parq ∈ N ∧ parq ≤ cap
∧ parq > 0
`
parq − 1 ∈ N ∧ parq − 1 ≤ cap
sale
/inv/INV
Ausencia de deadlock
parq ∈ N ∧ parq ≤ cap
`
(parq < cap) ∨ (parq > 0)
DLF
Working Hypothesis
Oz
Refinar: agregar detalles a un modelo
Nuevos conceptos (objetos)
ejemplo: conjunto de carros
Nuevas observaciones
Observaciones más precisas
ejemplo: se ven los carros parqueados en estaciones
Más variedad dinámica (más operaciones)
Working Hypothesis
Oz
Un refinamiento del parqueadero
REFINEMENT Parq ref
REFINES Parq abst
SETS CARRO
VARIABLES carros
INVARIANT
carros ⊆ CARRO ∧ card(carros) = parq
initialisation
carros := {}
OPERATIONS
llega = any c
where c ∈ CARRO ∧ c 6∈ carros ∧ card(carros) < cap
then carros := carros ∪ {c} end
sale = any c where c ∈ carros then carros := carros − {c} end
end
Working Hypothesis
Oz
Relacionar objetos
En sistemas complejos hay variables que definen
relaciones entre otras
ejemplo: carros con la persona que conduce
Esas variables se especifican mediante funciones o
relaciones
Es fundamental determinar cuál de las anteriores usar.
Working Hypothesis
Oz
Relaciones y funciones
A ↔ B es el conjunto de todas las relaciones (parejas)
entre los conjuntos A y B.
A → B :conjunto de todas las funciones totales de A a B
Relaciones y funciones son conjuntos de parejas
Ejemplo: sea A = {a, b, c}, B = {1, 2, 3, 4}, entonces
v ∈ A ↔ B puede ser:
{(a, 1), (b, 1), (b, 3), (c, 4)}
∅
{a, 3), (b, 3), (c, 3)}
v ∈ A → B puede ser:
{(a, 1), (b, 1), (c, 3)} o también {a, 3), (b, 3), (c, 3)}
pero NO: {a, 3), (b, 2), (c, 1), (b, 4))}
Working Hypothesis
Oz
Tipos de funciones
Funciones totales: f ∈ A → B
para todo elemento de A hay una pareja en f
parciales: f ∈ A 6→ B
para algunos elementos de a no hay pareja en f
sobreyectiva: f ∈ A B
para todo elemento de B hay una pareja en f
inyectiva: f ∈ A B
no hay dos parejas con el mismo elemento en B
biyectiva: inyectiva y sobreyectiva.
Working Hypothesis
Oz
Tipos de funciones: ejemplos
Cada carro que entra al parqueadero tiene un solo
conductor
conductor ∈ carros gente
Relación entre carros y propietarios
propietario ∈ CARRO → PERSONA
Peatones:
peatones = PERSONA\ran(propietario)
Inscripciones en materias:
inscrito ∈ estudiantes ↔ materias
Plan de cursos de una carrera:
plan ∈ cursos 6→ carreras
Working Hypothesis
Oz
Relaciones y funciones (cont)
operaciones sobre relaciones:
Sean r ∈ A ↔ B, q ∈ B ↔ C. Sea D ⊆ A
r [D] = {b ∈ B | ∃a∈D . (a, b) ∈ r }
r −1 = {(b, a) | (a, b) ∈ r } es la relación inversa (con las
parejas reversadas).
Composición: r ; q = {(a, c) | ∃b ∈ B. (a, b) ∈ r ∧ (b, c) ∈ q}
Identidad: id(E) = {(x, x) | x ∈ E}
Working Hypothesis
Oz
Uso de relaciones: ejemplos
Hay personas que entran al parqueadero con carnet.
Otras con una boleta
Personas con boleta: pb (??)
El carro de la persona con boleta:
cpb (??)
El carro de la persona con boleta es en el que entró:
(??)
Personas con carnet: (??)
carros de las personas con carnet: (??)
Working Hypothesis
Oz
Uso de relaciones: ejemplos
Hay personas que entran al parqueadero con carnet.
Otras con una boleta
Personas con boleta: pb⊆ ran(conductor )
El carro de la persona con boleta:
cpb (??)
El carro de la persona con boleta es en el que entró:
(??)
Personas con carnet: (??)
carros de las personas con carnet: (??)
Working Hypothesis
Oz
Uso de relaciones: ejemplos
Hay personas que entran al parqueadero con carnet.
Otras con una boleta
Personas con boleta: pb⊆ ran(conductor )
El carro de la persona con boleta:
cpb∈ pb carros
El carro de la persona con boleta es en el que entró:
(??)
Personas con carnet: (??)
carros de las personas con carnet: (??)
Working Hypothesis
Oz
Uso de relaciones: ejemplos
Hay personas que entran al parqueadero con carnet.
Otras con una boleta
Personas con boleta: pb⊆ ran(conductor )
El carro de la persona con boleta:
cpb∈ pb carros
El carro de la persona con boleta es en el que entró:
cpb−1 ⊆ conductor
Personas con carnet: (??)
carros de las personas con carnet: (??)
Working Hypothesis
Oz
Uso de relaciones: ejemplos
Hay personas que entran al parqueadero con carnet.
Otras con una boleta
Personas con boleta: pb⊆ ran(conductor )
El carro de la persona con boleta:
cpb∈ pb carros
El carro de la persona con boleta es en el que entró:
cpb−1 ⊆ conductor
Personas con carnet: pc = gente\pb
carros de las personas con carnet: (??)
Working Hypothesis
Oz
Uso de relaciones: ejemplos
Hay personas que entran al parqueadero con carnet.
Otras con una boleta
Personas con boleta: pb⊆ ran(conductor )
El carro de la persona con boleta:
cpb∈ pb carros
El carro de la persona con boleta es en el que entró:
cpb−1 ⊆ conductor
Personas con carnet: pc = gente\pb
carros de las personas con carnet:
cpc = conductor −1 \cpb
Working Hypothesis
Oz
Otro refinamiento del parqueadero
REFINEMENT Parq ref 2
REFINES Parq ref 1
VARIABLES pb, cpb
INVARIANT
pb ⊆ ran(conductor ) ∧ cpb ∈ gente carros
∧ cpb−1 ⊆ conductor
initialisation pb := {} k cpb := {}
OPERATIONS
llega boleta = any c, p where c ∈ CARRO ∧ c 6∈ dom(conductor )
∧ card(conductor ) < cap ∧ p ∈ PERSONA
∧ p 6∈ ran(conductor )
then pb := pb ∪ {p} k cpb := cpb ∪ {p 7→ c}end
sale boleta = any p where p ∈ pb
then pb := pb − {p} k cpb := cpb − {p 7→ cpb(p)}end
...
end
Descargar