BMethod Mquinas abstractas - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

BMethod Mquinas abstractas

Description:

SINGLE = person - MARRIED; ANGEL =PERSON - person; INVARIANT. person PERSON. sex person SEX ... THEN. report := bool(pp MARRIED) END; baby newborn(sx,mm) = PRE ... – PowerPoint PPT presentation

Number of Views:64
Avg rating:3.0/5.0
Slides: 35
Provided by: ramon4
Category:

less

Transcript and Presenter's Notes

Title: BMethod Mquinas abstractas


1
B-MethodMáquinas abstractas
  • MeFIS
  • Ramón Brena
  • 2006

2
Software como calculadora
  • Un estado
  • Operaciones accesibles por usuario (teclado)

3
Especif. de una máquina
  • Parte estática
  • Permanece constante a traves del funcionamiento
  • Invariantes
  • Parte dinámica
  • Cambios producidos por operaciones
  • Antes / después

4
Ejemplo
  • Suponemos un sistema de reservación de lugares
  • Por ejemplo para un espectáculo
  • Estado
  • Variable seat
  • No hay varios tipos de lugares, ni numerados, etc
  • Por el momento no hay límite de capacidad

5
Ejemplo máquina
  • MACHINE
  • booking
  • VARIABLES
  • seat
  • INVARIANT
  • END

6
Operaciones
  • MACHINE
  • booking
  • VARIABLES
  • seat
  • INVARIANT
  • OPERATIONS
  • END

7
Substituciones
  • Notación x E P
  • Especificación de cancel
  • cancel BEGIN seat seat 1 END
  • La especificación de cancel es una substitución

8
Obligación de prueba
  • Es una proposición que debe verificarse
  • Muchas veces es un invariante I ? S I
  • Ejemplo de seat

9
Substituciones condicionadas
  • Ciertas operaciones no siempre se pueden ejecutar
  • book BEGIN seat seat - 1 ENDsólo se puede
    ejecutar si seat gt 0
  • Se añaden precondicionesP S, también escrito
    en B comoPRE P THEN S END

10
Ejemplo book
  • book
  • PRE
  • 0 lt seat
  • THEN
  • seat seat -1
  • END

11
Obligación de prueba con precondiciones
  • Al probar que una operación, representada con una
    substitución S no afecta el invariante, esto es,
    I ? S I, podemos suponer la precondición
  • I ? P ? S I

12
Parámetros de una máquina
  • Se pueden incluir parámetros, que son escalares o
    conjuntos
  • Ejemplosmaxint ? N, minint ? ZINT
    minint..maxintNAT 0..maxintNAT1 1..maxint

13
Restricciones e inicialización
  • Las restricciones son condiciones en una cláusula
    CONSTRAINTS
  • Son conjunciones de predicados
  • Las inicializaciones son asignaciones de valores
    iniciales

14
Ejemplo
  • OPERATIONS
  • book
  • PRE
  • 0ltseat
  • THEN
  • seat seat - 1
  • END
  • cancel
  • PRE
  • seat lt max_seat
  • THEN
  • seat seat 1
  • END
  • END
  • MACHINE
  • booking(max_seat)
  • CONSTRAINTS
  • max_seat ? NAT
  • VARIABLES
  • seat
  • INVARIANT
  • seat ? 0..max_seat
  • INITIALIZATION
  • seat max_seat

15
Operaciones con parámetros de entrada
  • Supongamos que el usuario puede reservar varios
    asientos a la vez
  • No puede reservar más de 5 a la vez
  • book(nbr)
  • PRE
  • nbr ? NAT ?
  • nbr seat ?
  • nbr 5
  • THEN
  • seat seat - nbr
  • END

16
Operaciones con parámetros de salida
  • Los resultados visibles de la operación de la
    máquina (como la pantalla de la calculadora) son
    parámetros de salida.
  • value ? val_seat BEGIN value seat END

17
Elección de sustituciones
  • S T Elección no determinista de S o bien T
  • (S T) R ? S R ? T R
  • Sintaxis en B
  • CHOICE S OR T OR OR U END

18
Ejemplo
  • Vamos a manejar secuencias (listas) de elementos
  • Va a haber una operación, push
  • No conocemos de antemano el máximo tamaño que
    puede tener la secuencia

19
Ejemplo
  • MACHINE
  • Sequence(VALUE)
  • SETS
  • REPORT good, bad
  • VARIABLES
  • sequence
  • INVARIANT
  • sequence ? seq(VALUE)
  • INITIALIZATION
  • sequence
  • OPERATIONS
  • report ? push(vv)
  • PRE vv ? VALUE
  • THEN
  • CHOICE
  • report good
  • sequence sequence-vv
  • OR
  • report bad
  • END
  • END

20
Sustituciones condicionadas
  • P S
  • P S R ? (P ? S R)
  • Sintaxis en B
  • IF P THEN S ELSE T END
  • Significado
  • (P S) (P T)

21
Ejemplo estilo defensivo
  • report ? book(nbr)
  • PRE
  • nbr ? NAT
  • THEN
  • IF nbr seat THEN
  • report,seat
  • good, seat - nbr
  • ELSE report bad
  • END
  • END
  • report ? cancel(nbr)
  • PRE
  • nbr ? NAT
  • THEN
  • IF seat nbr
  • max_seat THEN
  • report,seat
  • good, seat nbr
  • ELSE report bad
  • END
  • END

22
Sets
  • MACHINE
  • Data_Base
  • SETS
  • PERSON
  • SEX male, female
  • STATUS living, dead
  • Pendientes (Deferred)
  • Enumerados

23
(Continuación)
  • CONSTANTS
  • max_pers
  • PROPERTIES
  • max_pers ? NAT1 card(PERSON) max_pers
  • En PROPERTIES se declaran predicados que
    satisfacen las constantes

24
(Continuación)
  • VARIABLES
  • person, sex, status
  • INVARIANT
  • person ? PERSON ?
  • sex ? person ? SEX ?status ? person ? STATUS
  • INITIALIZATION
  • person,sex,status
  • ?, ?, ?
  • OPERATIONS
  • death(pp)
  • PRE
  • pp ? person ?
  • status(pp) livingTHEN status(pp) dead
  • END
  • baby ? newborn(sx)
  • END

25
Nota
  • La sustitución
  • status(pp) dead
  • En realidad quiere decir
  • status status lt pp ? dead
  • Donde lt denota excepción a una relación

26
Elección generalizada
  • S1 S2 S2 R ? ?i . Si R
  • Se escribe _at_z . S R
  • TambiénANY z WHERE PTHEN SEND

27
Notación ?
  • x ? E significa
  • Se lee x se vuelve un elemento de E
  • ANY z WHERE
  • z ? E
  • THEN
  • x z
  • END

28
Ejemplo newborn
  • baby ?newborn(sx)
  • PRE
  • PERSON - person ? ? ?
  • sx ? SEX
  • THEN
  • ANY angel WHERE
  • angel ? PERSON - person
  • THEN
  • person person ? angel
  • sex(angel) sx
  • status(angel) living
  • baby angel
  • END
  • END //externo

29
DEFINITIONS
  • VARIABLES
  • memory
  • INVARIANT
  • memory ? ADDRESS ? VALUE
  • INITIALIZATION
  • memory ? ADRESS ? VALUE
  • OPERATIONS
  • modify(page,index,value)
  • PRE
  • page ? PAGE ?
  • index ? INDEX ?
  • value ? VALUE
  • THEN
  • memory(addr(page,index)) value
  • END
  • END
  • MACHINE
  • Paged_Memory(VALUE, memorysize, pagesize)
  • CONSTRAINTS
  • memorysize ? NAT1 ?
  • pagesize ? NAT1 ?
  • memorysize mod pagesize 0
  • DEFINITIONS
  • ADDRESS 0..(memorysize-1)
  • PAGE 0..((memorysize / pagesize) - 1)
  • INDEX 0..(pagesize - 1)
  • addr(pp,ii) (pp x pagesize) ii

30
Ejemplo Data_Base
  • MACHINE
  • Data_Base
  • SETS
  • PERSON
  • SEX male, female
  • STATUS living, dead
  • CONSTANTS
  • max_pers
  • PROPERTIES
  • max_pers ? NAT1 ?
  • card(PERSON) max_pers
  • VARIABLES
  • person, sex, status, mother, husband, wife
  • DEFINITIONS
  • MAN sex-1male
  • WOMAN sex-1female
  • LIVING status-1living
  • DEAD status-1dead
  • MARRIED
  • dom(husband ? wife)
  • SINGLE person - MARRIED
  • ANGEL PERSON - person
  • INVARIANT
  • person ? PERSON ?
  • sex ? person ? SEX ?status ? person ? STATUS ?
  • mother ? person ? (MARRIED ? WOMAN) ?
  • husband ? WOMAN ? MAN ?
  • wife husband-1

31
Ejemplo Data_Base
  • INITIALIZATION
  • person ?
  • sex ?
  • status ?
  • mother ?
  • husband ?
  • wife ?
  • OPERATIONS
  • death(pp)
  • PRE
  • pp ? _________THEN status(pp) ________
  • END
  • marriage(bride,groom)
  • PRE
  • bride ? SINGLE ? WOMAN ?
  • groom ? SINGLE ? MAN
  • THEN
  • husband(bride) _______
  • wife(groom) ________
  • END
  • report ? saturated
  • BEGIN
  • report bool(ANGEL ?)
  • END

32
Ejemplo Data_Base
  • INITIALIZATION
  • person ?
  • sex ?
  • status ?
  • mother ?
  • husband ?
  • wife ?
  • OPERATIONS
  • death(pp)
  • PRE
  • pp ? LIVINGTHEN status(pp) dead
  • END
  • marriage(bride,groom)
  • PRE
  • bride ? SINGLE ? WOMAN ?
  • groom ? SINGLE ? MAN
  • THEN
  • husband(bride) groom
  • wife(groom) bride
  • END
  • report ? saturated
  • BEGIN
  • report bool(ANGEL ?)
  • END

33
Ejemplo Data_Base
  • report ? is_living(pp)
  • PRE pp ? person THEN
  • report bool(_______________)
  • END
  • report ? is_woman(pp)
  • PRE pp ? person THEN
  • report
  • bool(________________)
  • END
  • report ? is_married(pp)
  • PRE pp ? person THEN
  • report
  • bool(________________)
  • END
  • baby ?newborn(sx,mm)
  • PRE
  • ANGEL ? ? ?
  • sx ? SEX ?
  • mm ? MARRIED ? WOMAN
  • THEN
  • ANY angel WHERE
  • angel ? ANGEL
  • THEN
  • person person ? _______
  • status(angel) ________
  • sex(angel) ______
  • mother(angel) ________
  • baby ______________
  • END
  • END

34
Ejemplo Data_Base
  • report ? is_living(pp)
  • PRE pp ? person THEN
  • report bool(status(pp) ? living)
  • END
  • report ? is_woman(pp)
  • PRE pp ? person THEN
  • report
  • bool(pp ? WOMAN)
  • END
  • report ? is_married(pp)
  • PRE pp ? person THEN
  • report
  • bool(pp ? MARRIED)
  • END
  • baby ?newborn(sx,mm)
  • PRE
  • ANGEL ? ? ?
  • sx ? SEX ?
  • mm ? MARRIED ? WOMAN
  • THEN
  • ANY angel WHERE
  • angel ? ANGEL
  • THEN
  • person person ? angel
  • status(angel) living
  • sex(angel) sx
  • mother(angel) mm
  • baby angel
  • END
  • END
Write a Comment
User Comments (0)
About PowerShow.com