bases formales de la computación - javeriana...
TRANSCRIPT
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Bases Formales de la Computacion
Gerardo M. Sarria M.
Pontificia Universidad Javeriana
22 de agosto de 2008
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
VERIFICACION
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Contenido
1 Introduccion
2 Especificacion Formal con BIntroduccionLenguaje de Especificacion
3 Java Modeling Language (JML)Sintaxis y SemanticaEspecificacion de Programas
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Sistemas
Los Sistemas de Software se han convertido en una pieza clavede nuestras vidas:
Sistemas de transaccion bancarias
Aplicaciones comerciales en internet
Tarjetas inteligentes
Los Sistemas de Software son mas importantes ahora ya quehan penetrado en nuestro entorno y tanto los proveedores comolos clientes de dichos sistemas se estan comenzando apreocupar por su correctitud.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Sistemas
Sin embargo, dado que los Sistemas de Software . . .
son cada vez mas complejos,
tienen comportamientos disımiles,
admiten multiples puntos de vista
son propensos a fallar
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Sistemas
Sin embargo, dado que los Sistemas de Software . . .
son cada vez mas complejos,
tienen comportamientos disımiles,
admiten multiples puntos de vista
son propensos a fallar
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Sistemas
Las fallas son inaceptables en los sistemas de software actuales.
No es bueno apagar un sistema que no funcione bien paravolver a un estado seguro
Hay que pensar en los sistemas crıticos en donde hay vidashumanas envueltas
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Sistemas
Errores en sistemas de hardware y software que han sido muycostosos:
El bug aritmetico de punto flotante del Intel Pentiumcosto $500M (1994)
El cohete Ariane 5 perdio $7B (1996)
El choque del Mars Polar Lander costo $120M (2000)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Verificacion
La verificacion es usada en diferentes contextos. Como . . .
un proceso para obtener la prueba de correctitud formal deun sistema por medio de deducciones (theorem proving)
cualquier accion tomada para encontrar errores en unprograma usando verificacion automatica (model-checking)
La Etapa de Pruebas en ingenierıa de software:
No es un un tecnica de verificacion
Es mas cercana a un muestreo que a una prueba decorrectitud exhaustiva
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Verificacion
La verificacion es usada en diferentes contextos. Como . . .
un proceso para obtener la prueba de correctitud formal deun sistema por medio de deducciones (theorem proving)
cualquier accion tomada para encontrar errores en unprograma usando verificacion automatica (model-checking)
La Etapa de Pruebas en ingenierıa de software:
No es un un tecnica de verificacion
Es mas cercana a un muestreo que a una prueba decorrectitud exhaustiva
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Limitaciones
Los metodos de verificacion no garantizan la correctituddel codigo actual. Ellos verifican un modelo abstracto.
Las pruebas de correctitud pueden ser de por sı incorrectas
El proceso de verificacion solo captura un pequena partede la funcionalidad de un sistema
La verificacion se hace con respecto a una especificaciondada, la cual se forma de manera manual, y puede estarincompleta
Las tecnicas de verificacion automatica (model-checking)estan restrigidas a sistemas de estado finito
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Limitaciones
Los metodos de verificacion no garantizan la correctituddel codigo actual. Ellos verifican un modelo abstracto.
Las pruebas de correctitud pueden ser de por sı incorrectas
El proceso de verificacion solo captura un pequena partede la funcionalidad de un sistema
La verificacion se hace con respecto a una especificaciondada, la cual se forma de manera manual, y puede estarincompleta
Las tecnicas de verificacion automatica (model-checking)estan restrigidas a sistemas de estado finito
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Limitaciones
Los metodos de verificacion no garantizan la correctituddel codigo actual. Ellos verifican un modelo abstracto.
Las pruebas de correctitud pueden ser de por sı incorrectas
El proceso de verificacion solo captura un pequena partede la funcionalidad de un sistema
La verificacion se hace con respecto a una especificaciondada, la cual se forma de manera manual, y puede estarincompleta
Las tecnicas de verificacion automatica (model-checking)estan restrigidas a sistemas de estado finito
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Limitaciones
Los metodos de verificacion no garantizan la correctituddel codigo actual. Ellos verifican un modelo abstracto.
Las pruebas de correctitud pueden ser de por sı incorrectas
El proceso de verificacion solo captura un pequena partede la funcionalidad de un sistema
La verificacion se hace con respecto a una especificaciondada, la cual se forma de manera manual, y puede estarincompleta
Las tecnicas de verificacion automatica (model-checking)estan restrigidas a sistemas de estado finito
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Limitaciones
Los metodos de verificacion no garantizan la correctituddel codigo actual. Ellos verifican un modelo abstracto.
Las pruebas de correctitud pueden ser de por sı incorrectas
El proceso de verificacion solo captura un pequena partede la funcionalidad de un sistema
La verificacion se hace con respecto a una especificaciondada, la cual se forma de manera manual, y puede estarincompleta
Las tecnicas de verificacion automatica (model-checking)estan restrigidas a sistemas de estado finito
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Prejuicios
Los metodos formales solo pueden ser usados pormatematicos
El uso de metodos formales haran lentos los proyectos
No es visual (faltan flechas y cajas)
El proceso de verificacion de por sı propenso a errores,ası que ¿por que molestarse con ellos?
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Dificultades Reales
Se debe pensar mucho antes de programar
Como incorporar esto en el proceso de desarrollo
La construccion de modelos no es facil
Tecnologıa de pruebas automaticas debe mejorar
Mala calidad de los documentos de requerimientos
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Aplicacion
Modelado Convertir un diseno en un formalismo. Se puedenecesitar abstraer elementos irrelevantes odetalles sin importancia.
Especificacion Indicar las propiedades que debe satisfacer eldiseno. La especificacion es dada usando unformalismo logico (logica temporal). Es necesarioque la especificacion este completa, es decir,cubra todas las propiedades que el sistema debesatisfacer.
Verificacion Ideal serıa que fuera completamente automatica.En la practica necesita asistencia humana: analisisde los resultados.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Aplicacion
Modelado Convertir un diseno en un formalismo. Se puedenecesitar abstraer elementos irrelevantes odetalles sin importancia.
Especificacion Indicar las propiedades que debe satisfacer eldiseno. La especificacion es dada usando unformalismo logico (logica temporal). Es necesarioque la especificacion este completa, es decir,cubra todas las propiedades que el sistema debesatisfacer.
Verificacion Ideal serıa que fuera completamente automatica.En la practica necesita asistencia humana: analisisde los resultados.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Aplicacion
Modelado Convertir un diseno en un formalismo. Se puedenecesitar abstraer elementos irrelevantes odetalles sin importancia.
Especificacion Indicar las propiedades que debe satisfacer eldiseno. La especificacion es dada usando unformalismo logico (logica temporal). Es necesarioque la especificacion este completa, es decir,cubra todas las propiedades que el sistema debesatisfacer.
Verificacion Ideal serıa que fuera completamente automatica.En la practica necesita asistencia humana: analisisde los resultados.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Sistemas
Los Sistemas de Software son modelos de sistemas reales quetienen un comportamiento coherente.
Cada caracterıstica que se elige observar de un sistema real serepresenta mediante una variable.
El valor de estas variables para todos los objetos del sistema enun momento dado es una observacion.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Observaciones
Ejemplo:Suponga que un sistema consta de tres objetos.De ellos se observa una caracterıstica que se representa por unavariable pi .
Una observacion podrıa ser:
p1 = 3 ∧ p2 = 9 ∧ p3 = 2
Definir los objetos y las caracterısticas observables correspondea la parte estatica de la descripcion de un sistema.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Observaciones
Ejemplo:Suponga que un sistema consta de tres objetos.De ellos se observa una caracterıstica que se representa por unavariable pi .
Una observacion podrıa ser:
p1 = 3 ∧ p2 = 9 ∧ p3 = 2
Definir los objetos y las caracterısticas observables correspondea la parte estatica de la descripcion de un sistema.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Observaciones
El numero de observaciones de un sistema puede ser inmenso(o infinito!).
Ejemplo:Suponga que en el mismo sistema se ha decidido observarcaracterısticas representadas por una variable z y una variabley .Se recolectan las siguientes observaciones:
z = 2 ∧ y = 0,707
z = 7 ∧ y = 0,378
z = 9 ∧ y = 0,33
z = 10 ∧ y = 0,316
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Observaciones
Los datos anteriores no permiten formarse una idea delfuncionamiento del sistema.
Solucion: Una propiedad o invariante del sistema
Para el caso anterior:√
z × y = 1
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Observaciones
Los datos anteriores no permiten formarse una idea delfuncionamiento del sistema.
Solucion: Una propiedad o invariante del sistema
Para el caso anterior:√
z × y = 1
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Observaciones
Los datos anteriores no permiten formarse una idea delfuncionamiento del sistema.
Solucion: Una propiedad o invariante del sistema
Para el caso anterior:√
z × y = 1
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Dinamica de los Sistemas
Pero un sistema NO es, en general, estatico.
¿Como evoluciona un sistema?
¿Que ocasiona un cambio en las observaciones?
EVENTOS
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Dinamica de los Sistemas
Pero un sistema NO es, en general, estatico.
¿Como evoluciona un sistema?
¿Que ocasiona un cambio en las observaciones?
EVENTOS
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Dinamica de los Sistemas
Pero un sistema NO es, en general, estatico.
¿Como evoluciona un sistema?
¿Que ocasiona un cambio en las observaciones?
EVENTOS
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Eventos
Ejemplo:Un evento puede ocasionar un incremento en el valor de lavariable x del sistema anterior.
Ese mismo evento, entonces, tiene que ocasionar unamodificacion del valor de y , de modo que el invariante se sigacumpliendo.
Incrementar:begin
z , y ∶= z + 1, 1/√
z + 1end
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Eventos
Ejemplo:Un evento puede ocasionar un incremento en el valor de lavariable x del sistema anterior.
Ese mismo evento, entonces, tiene que ocasionar unamodificacion del valor de y , de modo que el invariante se sigacumpliendo.
Incrementar:begin
z , y ∶= z + 1, 1/√
z + 1end
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Descripcion Completa de un Sistema
Parte Estatica:
Variables (caracterısticas observables)
Invariante
Parte Dinamica:
Conjunto de Eventos
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
B
B es una metodologıa para especificar, disenar y codificarSistemas.
La descripcion del sistema se hace de esta manera:
El invariante es un predicado
Los eventos son de la forma:
GUARDA
ACCION
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Eventos
Los eventos podran ser de la siguiente forma basica:
nombre =ANY x , y , z , . . . WHERE
P(x , y , . . . , v , w , . . .)THEN
S(x , y , . . . , v , w , . . .)END
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Eventos
La operacion del evento anterior corresponderıa a los siguientespasos:
1 Escoja valores para las variables locales x , y , . . . de maneraque para esos valores escogidos y para los valores acutalesde las variables del sistema, P(x , y , . . . , v , w , . . .) secumpla.
2 Si no fue posible escoger dichos valores, el evento no seactiva
3 Si la escogencia fue posible, ejecute la accionS(x , y , . . . , v , w , . . .)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Eventos
La operacion del evento anterior corresponderıa a los siguientespasos:
1 Escoja valores para las variables locales x , y , . . . de maneraque para esos valores escogidos y para los valores acutalesde las variables del sistema, P(x , y , . . . , v , w , . . .) secumpla.
2 Si no fue posible escoger dichos valores, el evento no seactiva
3 Si la escogencia fue posible, ejecute la accionS(x , y , . . . , v , w , . . .)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Eventos
La operacion del evento anterior corresponderıa a los siguientespasos:
1 Escoja valores para las variables locales x , y , . . . de maneraque para esos valores escogidos y para los valores acutalesde las variables del sistema, P(x , y , . . . , v , w , . . .) secumpla.
2 Si no fue posible escoger dichos valores, el evento no seactiva
3 Si la escogencia fue posible, ejecute la accionS(x , y , . . . , v , w , . . .)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Eventos
La operacion del evento anterior corresponderıa a los siguientespasos:
1 Escoja valores para las variables locales x , y , . . . de maneraque para esos valores escogidos y para los valores acutalesde las variables del sistema, P(x , y , . . . , v , w , . . .) secumpla.
2 Si no fue posible escoger dichos valores, el evento no seactiva
3 Si la escogencia fue posible, ejecute la accionS(x , y , . . . , v , w , . . .)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Rodin
Rodin es una herramienta para el desarrollo riguroso desistemas de software complejos.
La descripcion de un sistema se hace de la siguiente manera:
1 Se describe un contexto
2 Se describe una maquina abstracta
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Ejemplo: Sistema MIO
Hay una cierta cantidad de buses
Hay una cierta cantidad de estaciones
En un momento dado, en una estacion puede estar un bus
Se observa la llegada y salidad de buses a las estaciones
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Componentes Estaticos - Contexto
Constante n: Numero total de buses
Constante m: Numero total de estaciones
Para estas constantes se definen axiomas que establecen suspropiedades:
variable tipon n ∈ N1
m m ∈ N1
Constantes, Conjuntos y sus Propiedades forman el Contextodel sistema
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Componentes Estaticos - Contexto
CONTEXT buses estacionesCONSTANTS
nm
AXIOMSaxm1 ∶ m ∶ N1
axm2 ∶ n ∶ N1
END
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Componentes Estaticos - Abstraccion
Variable be: Numero de buses en estaciones
Propiedades (tipo) de la variable:
be ∈ N
Observaciones de be obedecen a un INVARIANTE
be ≤ n ∧ be ≤ m
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Componentes Estaticos - Abstraccion
Variable be: Numero de buses en estaciones
Propiedades (tipo) de la variable:
be ∈ N
Observaciones de be obedecen a un INVARIANTE
be ≤ n ∧ be ≤ m
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Componentes Dinamicos
Inicializacion:be ∶= 0
Entra un bus a una estacion:
where be < n ∧ be < m then be ∶= be + 1 end
Sale un bus de una estacion:
where be > 0 then be ∶= be − 1 end
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Componentes Dinamicos
Inicializacion:be ∶= 0
Entra un bus a una estacion:
where be < n ∧ be < m then be ∶= be + 1 end
Sale un bus de una estacion:
where be > 0 then be ∶= be − 1 end
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Componentes Dinamicos
Inicializacion:be ∶= 0
Entra un bus a una estacion:
where be < n ∧ be < m then be ∶= be + 1 end
Sale un bus de una estacion:
where be > 0 then be ∶= be − 1 end
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Especificacion
MACHINE mioSEES buses estacionesVARIABLES
beINVARIANT
inv1 ∶ be ∶ Ninv2 ∶ be ≤ ninv3 ∶ be ≤ m
. . .
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Especificacion
EVENTSinitialisation
thenact1 ∶ be ∶= 0
end. . .
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
MIO: Especificacion
llegawhere
grd1 ∶ be < ngrd2 ∶ be < m
thenact1 ∶ be ∶= be + 1
endsale
wheregrd1 ∶ be > 0
thenact1 ∶ be ∶= be − 1
endEND
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Consistencia
El invariante representa los valores validos de las variables delsistema (estado).
Las acciones de los eventos modifican el estado.
El nuevo estado debe satisfacer el invariante.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Consistencia
Para un modelo con una variable v e invariante I (v), y unevento de la forma:
ANY x WHEREP(x , v)
THENv ∶= E(x , v)
END
la sentencia a probar es
I (v) ∧ P(x , v)⇒ I (E(x , v))
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Consistencia
Para el caso del MIO, se tiene
P(m, n) = m ∈ N1 ∧ n ∈ N1
I (m, n, be) = be ∈ N ∧ be ≤ n ∧ be ≤ m
Factibilidad de la inicializacion:
m ∈ N1 ∧ n ∈ N1 ⇒ ∃be.be = 0
Inicializacion satisface el invariante:
m ∈ N1 ∧ n ∈ N1 ⇒ 0 ∈ N ∧ 0 ≤ n ∧ 0 ≤ m
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Consistencia
Para el caso del MIO, se tiene
P(m, n) = m ∈ N1 ∧ n ∈ N1
I (m, n, be) = be ∈ N ∧ be ≤ n ∧ be ≤ m
Factibilidad de la inicializacion:
m ∈ N1 ∧ n ∈ N1 ⇒ ∃be.be = 0
Inicializacion satisface el invariante:
m ∈ N1 ∧ n ∈ N1 ⇒ 0 ∈ N ∧ 0 ≤ n ∧ 0 ≤ m
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Ejemplo: Partido de Futbol
Se observan personas. Unas estan adentro y otras afueradel campo
Una persona de afuera puede entrar al campo (comienzodel juego)
Una persona del campo puede cambiarse por una de afuera
Una persona de adentro puede salir (expulsion)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Partido de Futbol - Contexto
CONTEXT partidoSETS
PERSONASAXIOMS
axm1 ∶ finite(PERSONAS)END
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Partido de Futbol - Variables e Invariante
VARIABLES adentro, afueraINVARIANT
inv1 ∶ adentro ⊆ PERSONASinv2 ∶ afuera ⊆ PERSONASinv1 ∶ adentro ∩ afuera = ∅inv1 ∶ adentro ∪ afuera = PERSONAS
. . .
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Partido de Futbol - Eventos
EVENTSinitialisation
thenact1 ∶ adentro ∶= ∅
act2 ∶ afuera ∶= PERSONASend
. . .
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Partido de Futbol - Eventos
entraany jwhere
grd1 ∶ afuera ≠ ∅grd2 ∶ j ∈ afuera
thenact1 ∶ afuera ∶= afuera/{j}act2 ∶ adentro ∶= adentro ∪ {j}
end. . .
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Partido de Futbol - Eventos
expulsadoany jwhere
grd1 ∶ adentro ≠ ∅
grd2 ∶ j ∈ adentrothen
act1 ∶ adentro ∶= adentro/{j}act2 ∶ afuera ∶= afuera ∪ {j}
end. . .
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Partido de Futbol - Eventos
cambioany e, swhere
grd1 ∶ adentro ≠ ∅
grd2 ∶ afuera ≠ ∅grd3 ∶ s ∈ adentrogrd4 ∶ e ∈ afuera
thenact1 ∶ adentro ∶= (adentro/{s}) ∪ {e}act2 ∶ afuera ∶= (afuera/{e}) ∪ {s}
endEND
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Partido de Futbol
Ejercicio:Considere otra especificacion del partido de futbol, quedistingue, entre las personas que estan adentro, a los jueces.
Obviamente a quien expulsan no puede ser un juez
Tampoco se puede cambiar un jugador por un juez
Especifique este sistema
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
JML
JML es un lenguaje de especificacion formal para programasescritos en Java.
La idea es:
Tener un registro de las desiciones de diseno eimplementacion
Especificar el comportamiento de las clases
Las especificaciones JML describen:
interfaces (nombres e informacion estatica)
comportamiento (como las clases e interfaces actuancuando son usadas)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
JML
Las especificaciones JML son:
Predicados en logica de primer orden
Expresiones booleanas de Java
Las especificaciones se adicionan entre /*@ . . . @*/, o despuesde //@ en codigo Java
precondiciones
postcondiciones
invariantes
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Operadores
Operadores logicos de Java (∣∣, &&, !)
Operadores de relacion y corrimiento de Java (<, <=, . . . ,<<, >>)
Implicaciones logicas (==>, <==)
Equivalencias logicas (<==>, <=! =>)
Cuantificacion universal y existencial (/forall, /exists)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Predicados
Los predicados de JML se expresan en logica de primer orden,construidos usando
Booleanos de Java,
otros operadores (/old, /result, /forall, /exists,/max, etc.),
y algunas palabras clave (requires, ensures,invariant, etc.).
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Predicados
Ejemplo:
p u b l i c c l a s s IntMathOps {/*@ pub l i c no rma l b eha v i o r
@ r e q u i r e s y >= 0 ;@ a s s i g n a b l e \ no th i ng ;@ en s u r e s 0 <= \ r e s u l t &&@ \ r e s u l t * \ r e s u l t <= y &&@ y < (\ r e s u l t + 1) * (\ r e s u l t + 1 ) ;@*/
p u b l i c s t a t i c i n t i s q r t ( i n t y ){
r e t u r n ( i n t ) Math . s q r t ( u ) ;}
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Predicados
requires. Se usa para especificar precondiciones.
ensures. Se usa para especificar postcondiciones.
normal behavior. El metodo termina normalmente, sinlanzar una excepcion.
exceptional behavior. El metodo lanza una excepcion.
behavior. El metodo podrıa terminar normal oabruptamente.
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Especificaciones Livianas
No usan el predicado behavior
Se escriben en lineas individuales despues de //@
p u b l i c c l a s s IntMathOps {//@ r e q u i r e s y >= 0 ;p u b l i c s t a t i c i n t i s q r t ( i n t y ){
r e t u r n ( i n t ) Math . s q r t ( y ) ;}
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Especificaciones Livianas
Si una palabra clave requires es olvidada, unaespecificacion requires true; se asume
Si una palabra clave assignable es olvidada, unaespecificacion assignable /everything; se asume
Si una palabra clave ensures es olvidada, unaespecificacion ensures true; se asume
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
JML y Diseno por Contrato
Las precondiciones y postcondiciones de los metodos definenun contrato entre el metodo (la clase) y el objeto que llama elmetodo.
Este contrato estipula que
1 Los metodos pueden asumir precondiciones y tienen queasegurar postcondiciones
2 Los clientes tienen que asegurar precondiciones y puedenasumir poscondiciones
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Contratos y Pruebas Obligatorias
c l a s s Decimal {i n t i n tPa r t , decPar t ;//@ i n v a r i a n t decPar t >= 0 ;
/*@ r e q u i r e s m != n u l l ;@ en s u r e s decPar t == m. decPar t &&@ i n tP a r t == \ o l d ( i n t P a r t ) ;@*/
vo id s e tDec ima l ( Decimal m) {decPar t = m. decPar t ;
}}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Contratos y Pruebas Obligatorias
Para el metodo setDecimal:
Si m != null y m.decPart >= 0 entonces
decPart == m.decPart, yintPart == /old(intPart)
Para el objeto que hace el llamado:
o != null y o.decPart >= 0 tiene que ser cierto entodo sitio donde se haga el llamado al metodosetDecimal(o)
La postcondicion de setDecimal debe ser asumida enaquellos sitios
Adicionalmente:
decPart >= 0 debe ser una invariante de la claseDecimal
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Contratos y Pruebas Obligatorias
Para el metodo setDecimal:
Si m != null y m.decPart >= 0 entonces
decPart == m.decPart, yintPart == /old(intPart)
Para el objeto que hace el llamado:
o != null y o.decPart >= 0 tiene que ser cierto entodo sitio donde se haga el llamado al metodosetDecimal(o)
La postcondicion de setDecimal debe ser asumida enaquellos sitios
Adicionalmente:
decPart >= 0 debe ser una invariante de la claseDecimal
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Contratos y Pruebas Obligatorias
Para el metodo setDecimal:
Si m != null y m.decPart >= 0 entonces
decPart == m.decPart, yintPart == /old(intPart)
Para el objeto que hace el llamado:
o != null y o.decPart >= 0 tiene que ser cierto entodo sitio donde se haga el llamado al metodosetDecimal(o)
La postcondicion de setDecimal debe ser asumida enaquellos sitios
Adicionalmente:
decPart >= 0 debe ser una invariante de la claseDecimal
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Ejemplo: Clase Decimal
p u b l i c c l a s s Decimal extends Object {p u b l i c s t a t i c f i n a l s h o r t MAX DECIMAL NUMBER = ( s h o r t ) 32767 ;p u b l i c s t a t i c f i n a l s h o r t PRECISION = ( s h o r t ) 1 0 0 0 ;p r i v a t e s h o r t i n t P a r t = ( s h o r t ) 0 ;p r i v a t e s h o r t d e c P a r t = ( s h o r t ) 0 ;
p u b l i c Decimal s e t V a l u e ( Decimal d ) throws D e c i m a l E x c e p t i o n {r e t u r n s e t V a l u e ( d . g e t I n t P a r t ( ) , d . getDecPart ( ) ) ;
}
p u b l i c Decimal s e t V a l u e ( s h o r t i , s h o r t d ) throws D e c i m a l E x c e p t i o n {i f ( i < 0 | | d < 0) d e c i m a l e x c e p t i o n . t h r o w I t (DECIMAL OVERFLOW ) ;i n t P a r t = i ;d e c P a r t = d ;r e t u r n t h i s ;
}. . .
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
/forall y /exists
(/forall int i; a[i] != null);
(/forall int i; (0 <= i && i < length) ==>src[srcOff + i] == dest[destOff + i]);
(/exists int i; (0 <= i && < length) &&(/forall int j; (0 <= j && j < i) ==>
src[srcOff + j] == dest[destOff + j]));
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
assert
assert P:
P tiene que ser cierto en un cierto punto en el cuerpo deun metodo
P es un propiedad JML valida en la logica
i f ( i <= 0 | | j < 0) {. . .
}e l s e i f ( j < 5) {
//@ a s s e r t i > 0 && 0 < j && j < 5 ;. . .
}e l s e {
//@ a s s e r t i > 0 && j > 5 ;. . .
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
assert
assert P:
P tiene que ser cierto en un cierto punto en el cuerpo deun metodo
P es un propiedad JML valida en la logica
i f ( i <= 0 | | j < 0) {. . .
}e l s e i f ( j < 5) {
//@ a s s e r t i > 0 && 0 < j && j < 5 ;. . .
}e l s e {
//@ a s s e r t i > 0 && j > 5 ;. . .
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
assert
JML no permite campos private en especificaciones public
Poner / ∗@ spec public @ ∗ / antes de una declaracion decampo private causa que el campo sea incluido en el alcancede toda especificacion
p u b l i c c l a s s Decimal extends Object {p u b l i c s t a t i c f i n a l s h o r t MAX DECIMAL NUMBER = ( s h o r t ) 32767 ;p u b l i c s t a t i c f i n a l s h o r t PRECISION = ( s h o r t ) 1 0 0 0 ;/*@ s p e c p u b l i c @*/ p r i v a t e s h o r t i n t P a r t = ( s h o r t ) 0 ;/*@ s p e c p u b l i c @*/ p r i v a t e s h o r t d e c P a r t = ( s h o r t ) 0 ;. . .
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
assert
JML no permite campos private en especificaciones public
Poner / ∗@ spec public @ ∗ / antes de una declaracion decampo private causa que el campo sea incluido en el alcancede toda especificacion
p u b l i c c l a s s Decimal extends Object {p u b l i c s t a t i c f i n a l s h o r t MAX DECIMAL NUMBER = ( s h o r t ) 32767 ;p u b l i c s t a t i c f i n a l s h o r t PRECISION = ( s h o r t ) 1 0 0 0 ;/*@ s p e c p u b l i c @*/ p r i v a t e s h o r t i n t P a r t = ( s h o r t ) 0 ;/*@ s p e c p u b l i c @*/ p r i v a t e s h o r t d e c P a r t = ( s h o r t ) 0 ;. . .
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
requires, ensures y normal behavior
requires RPrecondicion R
ensures QPostcondicion QQ tiene que ser cierto si el metodo termina normalmente(i.e. sin lanzar una java.lang.Exception)
normal behavior(total correctness)Si la precondicion es cierta el estado previo, entonces elmetodo termina en un estado normal, y la postcondiciones cierta en este estado
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
requires, ensures y normal behavior
p u b l i c c l a s s Decimal extends Object {/*@ n o r m a l b e h a v i o r ;
@ r e q u i r e s i >=0 && d>=0;@ e n s u r e s i n t P a r t == i && d e c P a r t == d ;@*/
p u b l i c Decimal s e t V a l u e ( s h o r t i , s h o r t d ) throws D e c i m a l E x c e p t i o n {i f ( i < 0 | | d < 0) E x c e p t i o n . t h r o w I t (DECIMAL OVERFLOW ) ;i n t P a r t = i ;d e c P a r t = d ;r e t u r n t h i s ;
}}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
signals y exceptional behavior
signals (E e) RPostcondicion Excepcional RR tiene que ser cierto si el metodo lanza una excepcion eque es subclase de E
exceptional behavior(total correctness)Si la precondicion es cierta el estado previo, entonces elmetodo terminara en un estado excepcional lanzando unajava.lang.Exception, y la postcondicion excepcional escierta en este estado
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
requires, ensures y normal behavior
p u b l i c c l a s s Decimal extends Object {/*@ e x c e p t i o n a l b e h a v i o r ;
@ r e q u i r e s i >=0 && d>=0;@ s i g n a l s ( D e c i m a l E x c e p t i o n e ) t r u e ;@*/
p u b l i c Decimal s e t V a l u e ( s h o r t i , s h o r t d ) throws D e c i m a l E x c e p t i o n {i f ( i < 0 | | d < 0) E x c e p t i o n . t h r o w I t (DECIMAL OVERFLOW ) ;i n t P a r t = i ;d e c P a r t = d ;r e t u r n t h i s ;
}}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
assignable
assignable L:
Un metodo solo puede modificar el conjunto deubicaciones de memoria denotadas por L
Cualquier otra ubicacion no listada puede entonces no sermodificada
esto es cierto para postcondiciones normal y excepcional
p u b l i c c l a s s Decimal extends Object {/*@ n o r m a l b e h a v i o r ;
@ r e q u i r e s i >=0 && d>=0;@ a s s i g n a b l e i n t P a r t , d e c P a r t ;@ e n s u r e s t r u e ;@*/
p u b l i c Decimal s e t V a l u e ( s h o r t i , s h o r t d ) throws D e c i m a l E x c e p t i o n {i f ( i < 0 | | d < 0) E x c e p t i o n . t h r o w I t (DECIMAL OVERFLOW ) ;i n t P a r t = i ;d e c P a r t = d ;r e t u r n t h i s ;
}}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
assignable
assignable L:
Un metodo solo puede modificar el conjunto deubicaciones de memoria denotadas por L
Cualquier otra ubicacion no listada puede entonces no sermodificada
esto es cierto para postcondiciones normal y excepcional
p u b l i c c l a s s Decimal extends Object {/*@ n o r m a l b e h a v i o r ;
@ r e q u i r e s i >=0 && d>=0;@ a s s i g n a b l e i n t P a r t , d e c P a r t ;@ e n s u r e s t r u e ;@*/
p u b l i c Decimal s e t V a l u e ( s h o r t i , s h o r t d ) throws D e c i m a l E x c e p t i o n {i f ( i < 0 | | d < 0) E x c e p t i o n . t h r o w I t (DECIMAL OVERFLOW ) ;i n t P a r t = i ;d e c P a r t = d ;r e t u r n t h i s ;
}}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
/old y /fresh
/old(e)Valor de una expresion r en el estado previo
/fresh(x)x no es nulo y no fue declarado en el estado previo
/*@ b e h a v i o r@ r e q u i r e s t r u e ;@ a s s i g n a b l e d e c i m a l ;@ e n s u r e s d e c i m a l == i * PRECISION + d ;@ s i g n a l s ( D e c i m a l E x c e p t i o n e ) ( i <0 | | d<0) &&@ d e c i m a l == \o l d ( d e c i m a l ) &&@ \ f r e s h ( e ) ;@*/
p u b l i c Decimal s e t V a l u e ( s h o r t i , s h o r t d ) throws D e c i m a l E x c e p t i o n {. . .
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
/old y /fresh
/old(e)Valor de una expresion r en el estado previo
/fresh(x)x no es nulo y no fue declarado en el estado previo
/*@ b e h a v i o r@ r e q u i r e s t r u e ;@ a s s i g n a b l e d e c i m a l ;@ e n s u r e s d e c i m a l == i * PRECISION + d ;@ s i g n a l s ( D e c i m a l E x c e p t i o n e ) ( i <0 | | d<0) &&@ d e c i m a l == \o l d ( d e c i m a l ) &&@ \ f r e s h ( e ) ;@*/
p u b l i c Decimal s e t V a l u e ( s h o r t i , s h o r t d ) throws D e c i m a l E x c e p t i o n {. . .
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
/result
Representa el valor retornado por un metodo y tiene el mismotipo que el metodo
/*@ normal b e h a v i o r@ r e q u i r e s t r u e ;@ e n s u r e s \ r e s u l t <==>@ (\ e x i s t s i n t i ; i >=0 && i<MAX DATA && data [ i ]==c u r ) ;@*/
boolean c o n t e n s ( byte c u r ) {boolean r e s u = f a l s e ;byte i = ( byte ) 0 ;boolean found = f a l s e ;w h i l e ( i < MAX DATA && ! r e s u ) {
i f ( data [ i ] == c u r ) r e s u = t r u e ;e l s e i ++;
}r e t u r n r e s u ;
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
/result
Representa el valor retornado por un metodo y tiene el mismotipo que el metodo
/*@ normal b e h a v i o r@ r e q u i r e s t r u e ;@ e n s u r e s \ r e s u l t <==>@ (\ e x i s t s i n t i ; i >=0 && i<MAX DATA && data [ i ]==c u r ) ;@*/
boolean c o n t e n s ( byte c u r ) {boolean r e s u = f a l s e ;byte i = ( byte ) 0 ;boolean found = f a l s e ;w h i l e ( i < MAX DATA && ! r e s u ) {
i f ( data [ i ] == c u r ) r e s u = t r u e ;e l s e i ++;
}r e t u r n r e s u ;
}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
invariante
Tiene que ser cierto en todos los estados visibles:
El comienzo y final de cualquier invocacion a un metodo
El final de la invocacion a un constructor
Se asume de manera implıcita en el comienzo de unadeclaracion de metodo, y no tiene que ser cierto durante laejecuon de un metodo (i.e. puede ser temporalmente falso)
p u b l i c c l a s s Decimal extends Object {p u b l i c s t a t i c f i n a l s h o r t MAX DECIMAL NUMBER = ( s h o r t ) 32767 ;p u b l i c s t a t i c f i n a l s h o r t PRECISION = ( s h o r t ) 1 0 0 0 ;p u b l i c s h o r t i n t P a r t = ( s h o r t ) 0 ;p u b l i c s h o r t d e c P a r t = ( s h o r t ) 0 ;
/*@ i n v a r i a n t 0 <= i n t P a r t && i n t P a r t <= MAX DECIMAL NUMBER &&@ 0 <= d e c P a r t && d e c P a r t < PRECISION ;@*/
. . .}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
invariante
Tiene que ser cierto en todos los estados visibles:
El comienzo y final de cualquier invocacion a un metodo
El final de la invocacion a un constructor
Se asume de manera implıcita en el comienzo de unadeclaracion de metodo, y no tiene que ser cierto durante laejecuon de un metodo (i.e. puede ser temporalmente falso)
p u b l i c c l a s s Decimal extends Object {p u b l i c s t a t i c f i n a l s h o r t MAX DECIMAL NUMBER = ( s h o r t ) 32767 ;p u b l i c s t a t i c f i n a l s h o r t PRECISION = ( s h o r t ) 1 0 0 0 ;p u b l i c s h o r t i n t P a r t = ( s h o r t ) 0 ;p u b l i c s h o r t d e c P a r t = ( s h o r t ) 0 ;
/*@ i n v a r i a n t 0 <= i n t P a r t && i n t P a r t <= MAX DECIMAL NUMBER &&@ 0 <= d e c P a r t && d e c P a r t < PRECISION ;@*/
. . .}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
non null
Reemplaza un especificacion de invariante sobre un objeto nonulo
p u b l i c c l a s s S a l e r I D extends Object implements P a r t n e r I D {. . .
//@ i n v a r i a n t data != n u l l ;p u b l i c byte [ ] data = new byte [ ID LENGTH ] ;
. . .}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
non null
Reemplaza un especificacion de invariante sobre un objeto nonulo
p u b l i c c l a s s S a l e r I D extends Object implements P a r t n e r I D {. . .
p u b l i c /*@ non n u l l @*/ byte [ ] data = new byte [ ID LENGTH ] ;
. . .}
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Fin de la Presentacion