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