50
M ´ etodo B Desarrollo de caso: Especificaci ´ on de un cruce Camilo Rueda Universidad Javeriana-Cali M ´ etodo BDesarrollo de caso: Especificaci ´ on de un cruce -- p.1/35

M´etodo B Desarrollo de caso: Especificaci´on de un cruce

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Metodo BDesarrollo de caso:

Especificacion de un cruceCamilo Rueda

Universidad Javeriana-Cali

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.1/35

Page 2: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

El Caso:

Controlar vehiculos en un cruce. La especificación debepermitir:

Varias topologías

Distintos medios de control

Distintas secuencias de señales

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.2/35

Page 3: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Requerimientos del cruce

Generales

El cruce se compone de un número de vías que se cruzan

El cruce puede estar regulado

Disponibilidad

Al menos una vía puede siempre cruzar

Seguridad

No más de una vía puede cruzar en un momento dado

Antes de cambiar de una vía a otra, el cruce debe despejarse de vehículos

Justicia

Cada vía puede cruzar por turnos

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.3/35

Page 4: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Requerimientos del cruce

Generales

El cruce se compone de un número de vías que se cruzan

El cruce puede estar regulado

Disponibilidad

Al menos una vía puede siempre cruzar

Seguridad

No más de una vía puede cruzar en un momento dado

Antes de cambiar de una vía a otra, el cruce debe despejarse de vehículos

Justicia

Cada vía puede cruzar por turnos

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.3/35

Page 5: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Requerimientos del cruce

Generales

El cruce se compone de un número de vías que se cruzan

El cruce puede estar regulado

Disponibilidad

Al menos una vía puede siempre cruzar

Seguridad

No más de una vía puede cruzar en un momento dado

Antes de cambiar de una vía a otra, el cruce debe despejarse de vehículos

Justicia

Cada vía puede cruzar por turnos

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.3/35

Page 6: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Requerimientos del cruce

Generales

El cruce se compone de un número de vías que se cruzan

El cruce puede estar regulado

Disponibilidad

Al menos una vía puede siempre cruzar

Seguridad

No más de una vía puede cruzar en un momento dado

Antes de cambiar de una vía a otra, el cruce debe despejarse de vehículos

Justicia

Cada vía puede cruzar por turnos

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.3/35

Page 7: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Requerimientos del semáforo

Tres luces de tres colores diferentes, on/off oparpadeo.

El estado del semáaforo es la conjunción de losestados de las luces

No todas las conjunciones posibles se usan

La operación del semáforo es un ciclo de estados

La semántica es interpretación de cada estado(dependiente del sitio en el ciclo)

El semáforo inicia en estado "no regulado"

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.4/35

Page 8: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Arquitectura

A.color_semaf2

CRUCE3

CRUCE2

indeterminismo

CRUCE

Estado_via

MONITOR_SEMAF_COL

MONITOR_SEMAF2

MONITOR_SEMAF

Estado semaf

A.color_semaf

B,color2

B.color_semaf

B.rr.luz

B.aa.luz

B.vv.luz

A.rr.luz

A.aa.luz

A.vv.luz

Constantes

estados deautomata

Refinam. datosciclo de colores

Implementacion

implementacion

colores paravia A

Implementacion

colores del semafpara via B

Estado de luces

luz verde A

luz amarilla A

luz roja A

luz verde B

luz amarilla B

luz roja B

implementacion

menos

Anillo dederechos de cruce

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.5/35

Page 9: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquinas: CRUCE

Tres nociones:

Derecho a cruzar: En cada vía, modela si susvehículos tienen derecho a cruzar. Dos constantes:cruce, pare.

Fase de transición: Desocupar el cruce. Constantes:fin_cruce, fin_pare.

Ciclos de estados de vía: modelados por la función,siguiente =

cruce→ fin_cruce→ pare→ fin_pare→ cruce

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.6/35

Page 10: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquinas: CRUCE (cont)

Suponemos dos vías. Como los estados son opuestos (o catástrofe!), el estado de

la segunda vía se deduce del de la primera.

Esto lo modela la función (constante):

estado_opuesto =

{cruce 7→ pare, pare 7→ cruce,

fin_cruce 7→ fin_pare, fin_pare 7→ fin_cruce, }

El estado de la vía B se deduce de A así:

estadoV iaA = estado_opuesto(estadoV iaB)

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.7/35

Page 11: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina ESTADO_VIA

Encapsula las constantes y conjuntos usadas porCRUCE y MONITOR_SEMAF.

Define el conjunto de derechos de cruce.

El estado off indica una vía no regulada.

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.8/35

Page 12: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina ESTADO_VIA: Definición

MACHINE ESTADO_V IA

SETS

ESTADO = {cruce, fin_cruce, pare, fin_pare, off}

CONSTANTS

estado_opuesto

PROPERTIES

estado_opuesto ∈ ESTADO � ESTADO

estado_opuesto = {cruce 7→ pare, pare 7→ cruce,

fin_cruce 7→ fin_pare, fin_pare 7→ fin_cruce, off 7→ off}

ENDMetodo BDesarrollo de caso: Especificacion de un cruce -- p.9/35

Page 13: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE: Definición (1)

MACHINE CRUCE

IINCLUDES Estado_via

ABSTRACT_CONSTANTS siguiente

SETS CESTADO = {regulado, no_regulado}

PROPERTIES

siguiente ∈ ESTADO � ESTADO∧

siguiente =

{cruce 7→ fin_cruce, fin_cruce 7→ pare,

pare 7→ fin_pare, fin_pare 7→ cruce, off 7→ off}

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.10/35

Page 14: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE: Definición (1)

MACHINE CRUCE

IINCLUDES Estado_via

ABSTRACT_CONSTANTS siguiente

SETS CESTADO = {regulado, no_regulado}

PROPERTIES

siguiente ∈ ESTADO � ESTADO∧

siguiente = {cruce 7→ fin_cruce, fin_cruce 7→ pare,

pare 7→ fin_pare, fin_pare 7→ cruce, off 7→ off}

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.10/35

Page 15: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE: Definición (1)

MACHINE CRUCE

IINCLUDES Estado_via

ABSTRACT_CONSTANTS siguiente

SETS CESTADO = {regulado, no_regulado}

PROPERTIES

siguiente ∈ ESTADO � ESTADO∧

siguiente = {cruce 7→ fin_cruce, fin_cruce 7→ pare,

pare 7→ fin_pare, fin_pare 7→ cruce, off 7→ off}

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.10/35

Page 16: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE (2)

VARIABLES

estado_global, estadoV iaA, estadoV iaB

INVARIANT

estado_global ∈ CESTADO∧

estadoV iaA ∈ ESTADO ∧ estadoV iaB ∈ ESTADO∧

estadoV iaB = estado_opuesto(estadoV iaA)∧

(estado_global = no_regulado)⇔ (estadoV iaA = off)

INITIALISATION

estado_global, estadoV iaA, estadoV iaB := no_regulado, off, off

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.11/35

Page 17: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE (2)

VARIABLES

estado_global, estadoV iaA, estadoV iaB

INVARIANT

estado_global ∈ CESTADO∧

estadoV iaA ∈ ESTADO ∧ estadoV iaB ∈ ESTADO∧

estadoV iaB = estado_opuesto(estadoV iaA)∧

(estado_global = no_regulado)⇔ (estadoV iaA = off)

INITIALISATION

estado_global, estadoV iaA, estadoV iaB := no_regulado, off, off

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.11/35

Page 18: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE (2)

VARIABLES

estado_global, estadoV iaA, estadoV iaB

INVARIANT

estado_global ∈ CESTADO∧

estadoV iaA ∈ ESTADO ∧ estadoV iaB ∈ ESTADO∧

estadoV iaB = estado_opuesto(estadoV iaA)∧

(estado_global = no_regulado)⇔ (estadoV iaA = off)

INITIALISATION

estado_global, estadoV iaA, estadoV iaB := no_regulado, off, off

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.11/35

Page 19: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE (2)

VARIABLES

estado_global, estadoV iaA, estadoV iaB

INVARIANT

estado_global ∈ CESTADO∧

estadoV iaA ∈ ESTADO ∧ estadoV iaB ∈ ESTADO∧

estadoV iaB = estado_opuesto(estadoV iaA)∧

(estado_global = no_regulado)⇔ (estadoV iaA = off)

INITIALISATION

estado_global, estadoV iaA, estadoV iaB := no_regulado, off, off

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.11/35

Page 20: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE (3)

OPERATIONS

arranque =

PRE estado_global = no_reguladoTHEN

estado_global := regulado||

ANY aaWHERE aa ∈ ESTADO − {off}

THEN estadoV iaA, estadoV iaB := aa, estado_opuesto(aa)

END

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.12/35

Page 21: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina CRUCE (4)

cambio_estado_via =

PRE

estado_global = regulado

THEN

estadoV iaA := siguiente(estadoV iaA) ||

estadoV iaB := siguiente(estadoV iaB)

END

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.13/35

Page 22: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de CRUCE

REFINEMENTCRUCE2

REFINESCRUCE

INCLUDESESTADO_V IA

ABSTRACT_CONSTANTS

siguiente

VARIABLES

estadoV iaA2, estadoV iaB2

INVARIANT

estadoV iaA2 = estadoV iaA ∧ estadoV iaB2 = estadoV iaB

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.14/35

Page 23: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento CRUCE (2)

INITIALISATION

estadoV iaA2, estadoV iaB2 := off, off

OPERATIONS

arranque =

BEGIN estadoV iaA2, estadoV iaB2 := cruce, pareEND

cambio_estado_via = BEGIN

estadoV iaA2 := siguiente(estadoV iaA2) ||

estadoV iaB2 := siguiente(estadoV iaB2)

END

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.15/35

Page 24: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Monitor de Semáforo

Autómata de 5 estados (función prox). s0 = no_regulado.

prox = {(s0, s0), (s1, s2), (s2, s3), (s3, s4), (s4s1)}

Convención: Interpretación de los estados:

{(off, s0), (cruce, s1), (fin_cruce, s2), (pare, s3), (fin_pare, s4)}

cruce via Colombia Francia

off s0 parpadeoAm parpadeoAm

cruce s1 verde verde

fin_cruce s2 am am

pare s3 rojo rojo

fin_pare s4 am rojo

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.16/35

Page 25: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Monitor semáforo (2)

El ciclo de estados del cruce se implementa por lasfunciones convencion y prox:

siguiente = convencion; prox; convencion−1

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.17/35

Page 26: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina MONITOR_ SEMAF (1)

MACHINE MONITOR_SEMAF

IINCLUDES Estado_via

CONSTANTS convencion, prox

SETS

ESTADO_SEM = {s0.s1, s2, s3, s4}

PROPERTIES

convencion ∈ ESTADO � ESTADO_SEM∧

prox ∈ ESTADO_SEM � ESTADO_SEM∧

convencion = {(off, s0), (cruce, s1), (fin_cruce, s2), (pare, s3), (fin_pare, s4)}∧

prox = {(s0, s0), (s1, s2), (s2, s3), (s3, s4), (s4s1)}

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.18/35

Page 27: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina MONITOR_ SEMAF (2)

VARIABLES

semA_estado, semB_estado

INVARIANT

semA_estado ∈ ESTADO_SEM ∧ semB_estado ∈ ESTADO_SEM∧

semB_estado =

convencion(estado_opuesto(convencion−1(semA_estado)))

INITIALISATION

semA_estado, semB_estado := convencion(off), convencion(off)

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.19/35

Page 28: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

MONITOR_ SEMAF (3)

OPERATIONS

arranque(es) =

PRE es ∈ ESTADO − {off} ∧ semA_estado = convencion(off)

THEN

semA_estado := convencion(es) ||

semB_estado := convencion(estado_opuesto(es))

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.20/35

Page 29: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

MONITOR_ SEMAF (4)

cambio_sem =

PRE¬(semA_estado = convencion(off))

THEN

semA_estado := prox(semA_estado) ||

semB_estado := prox(semB_estado)

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.21/35

Page 30: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Implementación de CRUCE

IMPLEMENTATIONCRUCE3

REFINESCRUCE2

IMPORTSms.Monitor_semaf

PROPERTIES

siguiente = (convencion; (prox; convencion−1))

INVARIANT

ms.semA_estado = convencion(estadoV iaA2)

OPERATIONS

arranque = BEGIN ms.arranque(cruce) END

cambio_estado_via = BEGIN ms.cambio_sem END

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.22/35

Page 31: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf

REFINEMENTMONITOR_SEMAF2

REFINESMONITOR_SEMAF

INCLUDESESTADO_V IA

CONSTANTS color

SETS

COLOR = {verde, am, rojo, parpadeoAm, negro, rojoAm}

PROPERTIES

color ∈ ESTADO_SEM → COLOR

VARIABLES

semA_estado2, semB_estado2, colorA2, colorB2

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.23/35

Page 32: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (2)

INVARIANT

semA_estado2 = semA_estado ∧ colorA2 ∈ COLOR∧

colorA2 = color(semA_estado) ∧ semB_estado2 = semB_estado∧

colorB2 ∈ COLOR ∧ colorB2 = color(semB_estado)

INITIALISATION

colorA2, colorB2 := color(convencion(off)), color(convencion(off)) ||

semA_estado2, semB_estado2 := convencion(off), convencion(off)

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.24/35

Page 33: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (2)

INVARIANT

semA_estado2 = semA_estado ∧ colorA2 ∈ COLOR∧

colorA2 = color(semA_estado) ∧ semB_estado2 = semB_estado∧

colorB2 ∈ COLOR ∧ colorB2 = color(semB_estado)

INITIALISATION

colorA2, colorB2 := color(convencion(off)), color(convencion(off)) ||

semA_estado2, semB_estado2 := convencion(off), convencion(off)

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.24/35

Page 34: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (2)

INVARIANT

semA_estado2 = semA_estado ∧ colorA2 ∈ COLOR∧

colorA2 = color(semA_estado) ∧ semB_estado2 = semB_estado∧

colorB2 ∈ COLOR ∧ colorB2 = color(semB_estado)

INITIALISATION

colorA2, colorB2 := color(convencion(off)), color(convencion(off)) ||

semA_estado2, semB_estado2 := convencion(off), convencion(off)

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.24/35

Page 35: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (3)

OPERATIONS

arranque(es) = BEGIN

colorA2, semA_estado2 := color(convencion(es)), convencion(es) ||

colorB2 := color(convencion(estado_opuesto(es))) ||

semB_estado2 := convencion(estado_opuesto(es))

END

cambio_sem = BEGIN

colorA2, semA_estado2 := color(prox(semA_estado2)), prox(semA_estado2) ||

colorB2, semB_estado2 := color(prox(semB_estado2)), prox(semB_estado2)

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.25/35

Page 36: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (3)

OPERATIONS

arranque(es) = BEGIN

colorA2, semA_estado2 := color(convencion(es)), convencion(es) ||

colorB2 := color(convencion(estado_opuesto(es))) ||

semB_estado2 := convencion(estado_opuesto(es))

END

cambio_sem = BEGIN

colorA2, semA_estado2 := color(prox(semA_estado2)), prox(semA_estado2) ||

colorB2, semB_estado2 := color(prox(semB_estado2)), prox(semB_estado2)

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.25/35

Page 37: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (3)

OPERATIONS

arranque(es) = BEGIN

colorA2, semA_estado2 := color(convencion(es)), convencion(es) ||

colorB2 := color(convencion(estado_opuesto(es))) ||

semB_estado2 := convencion(estado_opuesto(es))

END

cambio_sem = BEGIN

colorA2, semA_estado2 := color(prox(semA_estado2)), prox(semA_estado2) ||

colorB2, semB_estado2 := color(prox(semB_estado2)), prox(semB_estado2)

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.25/35

Page 38: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (3)

OPERATIONS

arranque(es) = BEGIN

colorA2, semA_estado2 := color(convencion(es)), convencion(es) ||

colorB2 := color(convencion(estado_opuesto(es))) ||

semB_estado2 := convencion(estado_opuesto(es))

END

cambio_sem = BEGIN

colorA2, semA_estado2 := color(prox(semA_estado2)), prox(semA_estado2) ||

colorB2, semB_estado2 := color(prox(semB_estado2)), prox(semB_estado2)

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.25/35

Page 39: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (3)

OPERATIONS

arranque(es) = BEGIN

colorA2, semA_estado2 := color(convencion(es)), convencion(es) ||

colorB2 := color(convencion(estado_opuesto(es))) ||

semB_estado2 := convencion(estado_opuesto(es))

END

cambio_sem = BEGIN

colorA2, semA_estado2 := color(prox(semA_estado2)), prox(semA_estado2) ||

colorB2, semB_estado2 := color(prox(semB_estado2)), prox(semB_estado2)

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.25/35

Page 40: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Refinamiento de Monitor_ Semaf (3)

OPERATIONS

arranque(es) = BEGIN

colorA2, semA_estado2 := color(convencion(es)), convencion(es) ||

colorB2 := color(convencion(estado_opuesto(es))) ||

semB_estado2 := convencion(estado_opuesto(es))

END

cambio_sem = BEGIN

colorA2, semA_estado2 := color(prox(semA_estado2)), prox(semA_estado2) ||

colorB2, semB_estado2 := color(prox(semB_estado2)), prox(semB_estado2)

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.25/35

Page 41: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina Estado_ sem

Define constantes básicas para el controlador

MACHINEESTADO_SEM

SETS

ESTADO_SEM = {s0, s1, s2, s3, s4}

VARIABLES estado

INVARIANT estado ∈ ESTADO_SEM

INITIALISATION estado := s0

OPERATIONS

set(val) = PRE val ∈ ESTADO_SEM THEN estado := val END

res← valor = BEGIN res := estadoEND

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.26/35

Page 42: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina Color_ sem

Define colores para las señales.

MACHINECOLOR_SEM

SETS

COLOR = {verde, am, rojo, parpadeoAm, negro, rojo_am}

VARIABLES color

INVARIANT color ∈ COLOR

INITIALISATION color := negro

OPERATIONS

set(val) = PRE val ∈ COLOR THEN color := val END

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.27/35

Page 43: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Implementación del semáforo colom-biano

Cuando no llueve, el semáforo en Colombia tiene lasecuenciaverde→ amarillo→ rojo→ amarillo→ ...La implementación de Monitor_ sem importa:

Dos instancias de Color_ sem, una para cada vía.

Una instancia de Estado_ sem para representar elestado.

La cláusula VALUES da valores específicos en la imple-

mentación a las constantes.

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.28/35

Page 44: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina Monitor_ sem_ col

MACHINEMONITOR_SEM_COL

REFINES MONITOR_SEM2

INCLUDES ESTADO_V IA

IMPORTS cA.Color_sem, cB.Color_sem, es.Estado_sem

VALUES

convencion =

{cruce 7→ s1, f in_cruce 7→ s2, pare 7→ s3, f in_pare 7→ s4, off 7→ s0}

prox = {s0 7→ s0, s1 7→ s2, s2 7→ s3, s3 7→ s4, s4 7→ s1}

color =

{s1 7→ verde, s2 7→ am, s3 7→ rojo, s4 7→ am, s0 7→ parpadeoAm}

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.29/35

Page 45: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina Monitor_ sem_ col (2)

INVARIANT

colorA2 = cA.color ∧ semA_estado = es.estado∧

colorB2 = cB.color∧

semB_estado =

convencion(estado_opuesto(convencion−1(es.estado)))

INITIALISATION

cA.set(color(convencion(off)));

cB.set(color(convencion(off)));

es.set(convencion(off))

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.30/35

Page 46: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina Monitor_ sem_ col (3)

OPERATIONS

arranque(est) = BEGIN

cA.set(color(convencion(est))); es.set(convencion(est));

cB.set(color(convencion(estado_opuesto(est))));

END

cambio_sem = BEGINVAR esestado IN

esestado←− es.valor; es.set(prox(esestado));

cB.set(color(next(convencion

(estado_opuesto(convencion−1(esestado))))))

END

END

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.31/35

Page 47: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Máquina LUZ

Especifica una luz de un semáforo.

MACHINELUZ

SETS

ESTADO_LUZ = {lon, loff, lparpadeo}

VARIABLES luz

INVARIANT luz ∈ ESTADO_LUZ

INITIALISATION luz := loff

OPERATIONS

set(es) = PRE es ∈ ESTADO_LUZ THEN luz := esEND

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.32/35

Page 48: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Implementación de Color_ sem

MACHINECOLOR_SEM2

REFINES COLOR_SEM

IMPORTS vv.Luz, aa.Luz, rr.Luz

INVARIANT

((color = verde)⇒ ((vv.luz = lon) ∧ (aa.luz = loff) ∧ (rr.luz = loff)))∧

((color = am)⇒ ((vv.luz = loff) ∧ (aa.luz = lon) ∧ (rr.luz = loff)))∧

((color = rojo)⇒ ((vv.luz = loff) ∧ (aa.luz = loff) ∧ (rr.luz = lon)))∧

((color = rojo_am)⇒ ((vv.luz = loff) ∧ (aa.luz = lon) ∧ (rr.luz = lon)))∧

((color = parpadeoAm)⇒

((vv.luz = loff) ∧ (aa.luz = parpadeo) ∧ (rr.luz = loff)))

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.33/35

Page 49: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Implementación de Color_ sem (2)

OPERATIONS

set(val) = PRE val ∈ COLOR THEN

CASE val OF

EITHER verde THEN rr.set(loff); aa.set(loff); vv.set(lon)

OR am THEN rr.set(loff); aa.set(lon); vv.set(loff)

OR rojo THEN rr.set(lon); aa.set(loff); vv.set(loff)

OR parpadeoAm THEN rr.set(loff); aa.set(parpadeo); vv.set(loff)

OR negro THEN rr.set(loff); aa.set(loff); vv.set(loff)

OR rojo_am THEN rr.set(lon); aa.set(lon); vv.set(loff)

END

END

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.34/35

Page 50: M´etodo B Desarrollo de caso: Especificaci´on de un cruce

Ejercicios

Qué habría que cambiar para implementar elsemáforo de Inglaterra, que de rojo pasa a rojo_amarillo y no regulado es negro?

Qué habría que cambiar para implementar un crucede 3 vías?

Pruebe que CRUCE2 es refinamiento de CRUCE

puebe que MONITOR_ SEM2 es refinamiento deMONITOR_ SEM

Metodo BDesarrollo de caso: Especificacion de un cruce -- p.35/35