Bases Formales de la Computación - Javeriana...
Transcript of Bases Formales de la Computación - Javeriana...
![Page 1: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/1.jpg)
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
![Page 2: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/2.jpg)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
VERIFICACION
![Page 3: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/3.jpg)
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
![Page 4: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/4.jpg)
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.
![Page 5: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/5.jpg)
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
![Page 6: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/6.jpg)
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
![Page 7: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/7.jpg)
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
![Page 8: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/8.jpg)
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)
![Page 9: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/9.jpg)
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
![Page 10: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/10.jpg)
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
![Page 11: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/11.jpg)
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
![Page 12: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/12.jpg)
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
![Page 13: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/13.jpg)
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
![Page 14: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/14.jpg)
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
![Page 15: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/15.jpg)
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
![Page 16: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/16.jpg)
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?
![Page 17: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/17.jpg)
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
![Page 18: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/18.jpg)
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.
![Page 19: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/19.jpg)
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.
![Page 20: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/20.jpg)
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.
![Page 21: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/21.jpg)
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.
![Page 22: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/22.jpg)
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.
![Page 23: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/23.jpg)
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.
![Page 24: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/24.jpg)
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
![Page 25: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/25.jpg)
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
![Page 26: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/26.jpg)
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
![Page 27: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/27.jpg)
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
![Page 28: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/28.jpg)
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
![Page 29: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/29.jpg)
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
![Page 30: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/30.jpg)
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
![Page 31: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/31.jpg)
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
![Page 32: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/32.jpg)
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
![Page 33: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/33.jpg)
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
![Page 34: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/34.jpg)
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
![Page 35: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/35.jpg)
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
![Page 36: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/36.jpg)
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 , . . .)
![Page 37: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/37.jpg)
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 , . . .)
![Page 38: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/38.jpg)
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 , . . .)
![Page 39: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/39.jpg)
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 , . . .)
![Page 40: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/40.jpg)
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
![Page 41: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/41.jpg)
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
![Page 42: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/42.jpg)
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
![Page 43: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/43.jpg)
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
![Page 44: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/44.jpg)
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
![Page 45: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/45.jpg)
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
![Page 46: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/46.jpg)
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
![Page 47: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/47.jpg)
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
![Page 48: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/48.jpg)
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
![Page 49: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/49.jpg)
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
. . .
![Page 50: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/50.jpg)
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. . .
![Page 51: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/51.jpg)
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
![Page 52: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/52.jpg)
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.
![Page 53: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/53.jpg)
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))
![Page 54: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/54.jpg)
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
![Page 55: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/55.jpg)
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
![Page 56: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/56.jpg)
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)
![Page 57: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/57.jpg)
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
![Page 58: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/58.jpg)
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
. . .
![Page 59: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/59.jpg)
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
. . .
![Page 60: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/60.jpg)
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. . .
![Page 61: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/61.jpg)
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. . .
![Page 62: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/62.jpg)
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
![Page 63: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/63.jpg)
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
![Page 64: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/64.jpg)
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)
![Page 65: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/65.jpg)
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
![Page 66: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/66.jpg)
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)
![Page 67: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/67.jpg)
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.).
![Page 68: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/68.jpg)
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 ) ;}
}
![Page 69: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/69.jpg)
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.
![Page 70: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/70.jpg)
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 ) ;}
}
![Page 71: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/71.jpg)
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
![Page 72: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/72.jpg)
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
![Page 73: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/73.jpg)
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 ;
}}
![Page 74: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/74.jpg)
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
![Page 75: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/75.jpg)
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
![Page 76: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/76.jpg)
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
![Page 77: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/77.jpg)
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 ;
}. . .
}
![Page 78: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/78.jpg)
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]));
![Page 79: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/79.jpg)
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 ;. . .
}
![Page 80: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/80.jpg)
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 ;. . .
}
![Page 81: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/81.jpg)
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 ;. . .
}
![Page 82: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/82.jpg)
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 ;. . .
}
![Page 83: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/83.jpg)
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
![Page 84: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/84.jpg)
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 ;
}}
![Page 85: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/85.jpg)
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
![Page 86: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/86.jpg)
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 ;
}}
![Page 87: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/87.jpg)
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 ;
}}
![Page 88: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/88.jpg)
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 ;
}}
![Page 89: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/89.jpg)
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 {. . .
}
![Page 90: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/90.jpg)
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 {. . .
}
![Page 91: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/91.jpg)
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 ;
}
![Page 92: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/92.jpg)
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 ;
}
![Page 93: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/93.jpg)
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 ;@*/
. . .}
![Page 94: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/94.jpg)
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 ;@*/
. . .}
![Page 95: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/95.jpg)
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 ] ;
. . .}
![Page 96: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/96.jpg)
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 ] ;
. . .}
![Page 97: Bases Formales de la Computación - Javeriana Calicic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:bfc:... · 2011-01-24 · Gerardo M. Sarria M. Introducci on Especi caci on](https://reader034.fdocuments.es/reader034/viewer/2022042201/5ea105e224ee7411b131591a/html5/thumbnails/97.jpg)
Gerardo M.Sarria M.
Introduccion
EspecificacionFormal con B
Introduccion
Lenguaje deEspecificacion
Java ModelingLanguage(JML)
Sintaxis ySemantica
Especificacion deProgramas
Fin de la Presentacion