especificación, validación y verificación utilizando ...agaris/slides/1-alloy.pdfespecificación,...
TRANSCRIPT
![Page 1: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/1.jpg)
Especificación, Validación y Verificación utilizando Métodos
Formales Livianos
Ana Garis [email protected]
Maestría en Ingeniería de Software - 2014 - UNSL
![Page 2: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/2.jpg)
Agenda
- Introducción
- Alloy
- La lógica de Alloy
- Especificando con Alloy
- Verificación y Validación
![Page 3: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/3.jpg)
Introducción
Proceso de Desarrollo de SW
Modelos
![Page 4: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/4.jpg)
Introducción
¿Por qué usamos modelos?
![Page 5: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/5.jpg)
Introducción
¿Por qué usamos modelos?
Enunciado
1- Comprender el Problema
Es incompleto ?
Es ambiguo ?
Es contradictorio?
Especificar
enunciado
preciso
![Page 6: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/6.jpg)
Introducción
¿Por qué usamos modelos?2- Abstraer el problema, independiente de la perspectiva del observador.
[Fuente: http://pooitsavlerdo.blogspot.com.ar/2012/05/11-elementos-del-modelo-de-objetos.html
![Page 7: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/7.jpg)
Introducción
• Comprender el problema que se desea resolver• Especificar un sistema de SW• Comunicar con otros desarrolladores de SW• Analizar posibilidades de reutilización
¿Por qué usamos modelos?
![Page 8: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/8.jpg)
Introducción
Desarrollo Dirigido por Modelos (Model-Driven Development -MDD)
Transformación0
Modelo 0
Código
Modelo 1
Transformación1
TransformaciónN
Modelo N
+
_
Abstracción
![Page 9: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/9.jpg)
Introducción
¿Qué necesitamos para construir modelos?
![Page 10: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/10.jpg)
Introducción
¿Qué necesitamos para construir modelos?
• Lenguaje de modeladoinformalsemi-formal formal
-> UML
-> OCL, Z, Alloy
![Page 11: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/11.jpg)
Agenda
- Introducción
- Alloy
- La lógica de Alloy
- Especificando con Alloy
- Verificación y Validación
![Page 12: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/12.jpg)
Alloy
“The core of software development is the design of abstractions.”
“An abstraction is not a module, or an interface, class, or method; it is a structure, pure and simple - an idea reduced to its essential form.”
- Daniel Jackson
![Page 13: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/13.jpg)
Alloy
Filosofía
- micromodelos
- analizables
- declarativos
![Page 14: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/14.jpg)
Alloy
Micromodelos
- Representación del problema
líneas leng. modelado (-) : :: : líneas leng. programac. (+)
- Aumentar calidad del sistema:
chequear modelo (- t) : :: : re-escribir y re-testear código (+ t)
En lugar de modelar todos los aspectos del sistema, focalizar en los mas críticos. Factorizar los aspectos mas relevantes que no son visualizados con un modelo complejo.
![Page 15: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/15.jpg)
Alloy
Analizables
- Construir el modelo incrementalmente con un analizador para simular, chequear : :: : Usar lápiz y papel
- Simular → Ayuda a definir propiedades importantes
- Chequear → Certificar si el modelo tiene propiedades deseadas y cuáles son sus consecuencias
Permite tener una sensación de progreso y confianza que el modelo no tiene errores.
![Page 16: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/16.jpg)
Alloy
Declarativos
Describe el efecto de un comportamiento (el qué)
sin definir el mecanismo (cómo)
- Declarativos adecuados para expresar abstracciones : :: :
Operacionales adecuados para expresar detalles
- Permite empezar diciendo muy poco facilitando las
descripciones parciales.
![Page 17: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/17.jpg)
Alloy
Alloy vs. Otros enfoques
Metodos Formales
Formalizar diseñoZ, OCL, Isabelle
Sin código(abstracto)
Ejercitar diseñoEscribir pruebas,
Chequear propiedadesComplejo y costoso
Metodos Ágiles
Formalizar diseñoJava, C
Mucho código (detallado)
Ejercitar diseñoEscribir casos de test
CostosoCobertura pobre
![Page 18: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/18.jpg)
Alloy
Es un lenguaje formal “liviano”, basado lógica de primer orden y soportado por un
Analizador SAT (SATisfiability solver).
![Page 19: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/19.jpg)
Alloy
Analizador SAT (SATisfiability solver)
Dada una fórmula booleana F, determinar si existe una interpretación, tal que asignando
valores a las variables de la fórmula pueda ser evaluada como VERDADERA.
F es satisfacible si existe al menos un modelo
![Page 20: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/20.jpg)
Alloy
Bases
1- Todo es una relación
2- Lógica no especializada
3- Contraejemplos y alcance
4- Analizador SAT
![Page 21: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/21.jpg)
Alloy
1- Todo es una relación
Los conjuntos son relaciones con aridad igual a 1:
Ej. Time = {(T1),(T2),(T3),(T4)}
Aridad: número de atomos en cada tupla.
![Page 22: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/22.jpg)
Alloy
2- Lógica no especializada
Alloy utiliza lógica básica, no introduce constructores especiales, de sincronización, concurrencia, etc.
![Page 23: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/23.jpg)
Alloy
3- Contraejemplos con alcance
- La mayoría de los errores pueden ser encontrados a través de pequeños contraejemplos.
- En lugar de construir una prueba, se busca una refutación.
- Se define un alcance para limitar la cantidad de instancias.
- El objetivo es encontrar un modelo, haciéndolo decidible pero limitando el universo del problema.
Algunos casos
Alcance arbitrario
Todos los casos
Alcance pequeño
![Page 24: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/24.jpg)
Alloy
4- Analizador SAT
![Page 25: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/25.jpg)
Alloy
alloy.mit.edu/alloy/download.html
![Page 26: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/26.jpg)
Alloy
Herramienta
Lenguaje + Analizador
sig Person {}run {}
![Page 27: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/27.jpg)
Agenda
- Introducción
- Alloy
- La lógica de Alloy
- Especificando con Alloy
- Verificación y Validación
![Page 28: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/28.jpg)
La lógica de Alloy
Conceptos previos
Cada elemento se construye con átomos y relaciones.
Átomo: Entidad primitiva. Cumple 3 características:
• Indivisible: no puede ser dividido en partes mas pequeñas.
• Immutable: sus propiedades no cambian en el tiempo.
• No interpretada: por defecto ninguna propiedad asignada.
Relación: Estructura que relaciona átomos, un cjto. de tuplas.
![Page 29: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/29.jpg)
La lógica de Alloy
Conceptos previos
Ejemplo:
Person = {(P0),(P1)}
Address = {(A0),(A1)}
address = {(P0,A1),(P1,A0)}
Tamaño de la relación: número de tuplas.
Aridad de la relación: número de atomos en cada tupla.
Atomo
Relación binaria
Relación unaria
![Page 30: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/30.jpg)
La lógica de Alloy
Conceptos previos
Ejemplo:
Person = {(P0),(P1)}
Address = {(A0),(A1)}
address = {(P0,A1),(P1,A0)}
sig Person {address : Address
}sig Address {}
![Page 31: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/31.jpg)
La lógica de Alloy
Conceptos previosConstantes especiales
none conjunto vacíouniv conjunto universaliden relación identidad
Person = {(P0),(P1)}Address = {(A0),(A1)}
none = {}univ = {(P0),(P1),(A0),(A1)}iden = {(P0, P0), (P1, P1), (A0, A0), (A1, A1)}
![Page 32: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/32.jpg)
La lógica de Alloy
Conceptos previos Operadores de conjunto
+ unión& intersección- diferenciain subconjunto= igualdad
Person = {(P0),(P1)}Address = {(A0),(A1)}
Person + Address = {(P0),(P1),(A0),(A1)}Person & Address = {}Person - (P0) = {(P1)}(P0) in Person = truePerson = Address = false
![Page 33: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/33.jpg)
La lógica de Alloy
Conceptos previos Operadores relacionales
-> producto<: restricción de dominio:> restricción de rango++ sobre-escritura.. composición[] composición~ transpuesta^ cláusura transitiva* cláusura reflexivo-transitiva
![Page 34: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/34.jpg)
La lógica de Alloy
Producto cartesiano ( -> )
Person = {(P0),(P1)}Address = {(A0),(A1)}
Person -> Address = {(P0,A0),(P0,A1),(P1,A0),(P1,A1)}
![Page 35: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/35.jpg)
La lógica de Alloy
Person = {(P0),(P1)}address = {(P0,A1),(P1,A0)}Address = {(A0),(A1)}
(P0) <: address = {(P0,A1)}address :> A0 = {(P1,A0)}
s <: r restricción de dominior :> s restricción de rango
- Son usados para filtrar las relaciones a un dominio o rango particular.
s: un conjunto r: una relación
Restricción de dominio y rango
![Page 36: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/36.jpg)
La lógica de Alloy
address = {(P0, A1), (P1, A0)}workAddress = {(P0, A0)}
address ++ workAddress = {(P0, A0), (P1, A0)}
p ++ q Funciona como la unión, pero las tuplas de “q” pueden reemplazar a tuplas de “p”. Del resultado se elimina toda tupla en “p” que concuerde con una tupla en “q”; es decir, que comience con el mismo nombre.
p: una relaciónq: una relación
Sobreescritura (++)
![Page 37: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/37.jpg)
La lógica de Alloy
Composición ( . )
![Page 38: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/38.jpg)
Composición ( . ) - join relacional- campo de navegación- aplicación de función
La lógica de Alloy
(P0) .. Address = (A1)
Person = {(P0),(P1)}address = {(P0,A1),(P1,A0)}
(P0,A1)(P1,A0)
(P0) (A1)
![Page 39: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/39.jpg)
La lógica de Alloy
Composición ( [ ] )
e1[e2] = e2.e1a.b.c[d] = d.(a.b.c)
![Page 40: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/40.jpg)
La lógica de Alloy
~ transpuesta^ cláusura transitiva * cláusura reflexo transitiva
Nota: Se aplican sólo a relaciones binarias
Person = {(P0), (P1), (P2)}father = {(P0,P2),(P1,P0),(P2,P2)}
~father = {(P2,P0),(P0,P1),(P2,P2)}^father = {(P0,P2),(P1,P0),(P2,P2),(P1,P2)}*father = {(P0,P2),(P1,P0),(P2,P2),(P1,P2),(P0,P0),(P1,P1)}
^r = r + r.r + r.r.r + …*r = iden + ^r
![Page 41: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/41.jpg)
Cláusura transitiva ( ^ )
^̂father = father + father . . father =
La lógica de Alloy
father = {(P0,P2),(P1,P0),(P2,P2)}^father = father + father.father + ...
(P0,P2)(P1,P0)(P2,P2)
(P0,P2)(P1,P0)(P2,P2)
(P0,P2)(P1,P0)(P2,P2)
(P1,P2)
(P0,P2)(P1,P0)(P2,P2)(P1,P2)
![Page 42: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/42.jpg)
La lógica de Alloy
Cláusura reflexo - transitiva ( * )
father = {(P0,P2),(P1,P0),(P2,P2)}iden = {(P0,P0),(P1,P1),(P2,P2)}^father = {(P0,P2),(P1,P0),(P2,P2),(P1,P2)} *father = iden + ^father
**father = iden + ^father =
(P0,P2)(P1,P0)(P2,P2)(P1,P2)
(P0,P0)(P1,P1)(P2,P2)
(P0,P2)(P1,P0)(P2,P2)(P1,P2)(P0,P0)(P1,P1)
![Page 43: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/43.jpg)
La lógica de Alloy
Conceptos previos Operadores lógicos
! not negación&& and conjunción|| or disjunción=> implies implicación<=> iff bi-implicación
![Page 44: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/44.jpg)
La lógica de Alloy
Conceptos previos Cuantificadores
all para todosome al menos unono ningunolone a lo sumo unoone exactamente uno
Person = {(P0), (P1), (P2)}
some p: Person | p in Person = trueone Person = false
![Page 45: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/45.jpg)
La lógica de Alloy
Conceptos previos Operador de comparación
# cardinalidad= igual< menor > mayor=< menor o igual>= mayor o igual
Person = {(P0),(P1),(P2)}father = {(P0,P2),(P1,P0),(P2,P2)}
#Person = 3#father = 3#Person < #father = false
![Page 46: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/46.jpg)
Agenda
- Introducción
- Alloy
- La lógica de Alloy
- Especificando con Alloy
- Verificación y Validación
![Page 47: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/47.jpg)
Especificando con Alloy
Las especificaciones típicamente se componen de:
- Módulo- Signaturas y Campos- Hechos- Predicados y Funciones- Comando “run”- Aserciones y Comando “check”
![Page 48: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/48.jpg)
Especificando con Alloy
Módulo y Signaturas
Multiplicidad
some sig A {}lone sig B {}one sig C {}
![Page 49: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/49.jpg)
Especificando con Alloy
Signaturas
module grandpa
abstract sig Person {}sig Man extends Person {}sig Woman extends Person {}
![Page 50: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/50.jpg)
Especificando con Alloy
sig A{}sig B in A{}sig C in A{}//B es subcjto. de A, C es subcjto. de A, pero no necesariamente Éstos son disjuntos.
sig D in B + C {}//D es un subconjunto de la unión de B y C
![Page 51: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/51.jpg)
Especificando con Alloy
Campos
abstract sig Person {father: lone Man,mother: lone Woman
}sig Man extends Person {}sig Woman extends Person {}
sig A {f: m e}sig A {f: e1 m -> n e2}
set cualquier númerosome al menos unolone a lo sumo unoone exactamente uno
![Page 52: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/52.jpg)
Especificando con Alloy
Camposabstract sig Person {
father: lone Man,mother: lone Woman
}sig Man extends Person {}sig Woman extends Person {}
Atención!!
![Page 53: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/53.jpg)
Especificando con Alloy
Hechos
abstract sig Person {father: lone Man,mother: lone Woman
}sig Man extends Person {}sig Woman extends Person {}
fact { no p: Person | p in p.^(mother + father) }
fact { F }fact f { F }sig S { ... }{ F }
Los hechos introducen restriccionesque se asumen siempre deben cumplirse.
![Page 54: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/54.jpg)
Especificando con Alloy
Predicados y Funciones
abstract sig Person {father: lone Man,mother: lone Woman}
sig Man extends Person {}sig Woman extends Person {}fact { no p: Person | p in p.^(mother + father) }
fun parents [p: Person]: set Person {p.(mother + father)
}pred brothers [p: Person] {
some b: Man | (parents[p] = parents [b])}
fun f[x1: e1, ..., xn: en] : e { E }
pred p[x1: e1, ..., xn: en] { F }
![Page 55: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/55.jpg)
Agenda
- Introducción
- Alloy
- La lógica de Alloy
- Especificando con Alloy
- Verificación y Validación
![Page 56: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/56.jpg)
Verificación y Validación
Las especificaciones típicamente se componen de:
- Módulo- Signaturas y Campos- Hechos- Predicados y Funciones- Comando “run”- Aserciones y Comando “check”
![Page 57: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/57.jpg)
Verificación y Validación
Comando run
pred p[x: X, y: Y, ..] {F}run p alcance
Instruye al analizador a buscar instancias con un alcance
fun f[x: X, y: Y, ..]:R {E}run f alcance
abstract sig Person {father: lone Man, mother: lone Woman}
sig Man extends Person {}sig Woman extends Person {}fact { no p: Person | p in p.^(mother + father) }fun parents [p: Person]: set Person {
p.(mother + father)}pred brothers [p: Person] {
some b: Man | (parents[p] = parents [b])}run brothers for 4 Person
Atención!!
![Page 58: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/58.jpg)
Verificación y Validación
abstract sig Person {father: lone Man, mother: lone Woman}
sig Man extends Person {}sig Woman extends Person {}fact { no p: Person | p in p.^(mother + father) }fun parents [p: Person]: set Person {
p.(mother + father)}pred brothers [p: Person] { some b: Man | (not b = p) and (parents[p] = parents [b])}run brothers for 4 Person
Atención!!
![Page 59: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/59.jpg)
Verificación y Validación
abstract sig Person {father: lone Man, mother: lone Woman}
sig Man extends Person {}sig Woman extends Person {}fact { no p: Person | p in p.^(mother + father) }fun parents [p: Person]: set Person {
p.(mother + father)}pred brothers [p: Person] {some b: Man | (not b = p) and (some parents[p]) and (parents[p] = parents[b])}run brothers for 4 Person
![Page 60: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/60.jpg)
Verificación y Validación
Comando run
abstract sig Person {father: lone Man, mother: lone Woman}
sig Man extends Person {}sig Woman extends Person {}fact { no p: Person | p in p.^(mother + father) }fun parents [p: Person]: set Person {
p.(mother + father)}pred brothers [p: Person] {some b: Man | (not b = p) and (some parents[p]) and (parents[p] = parents[b])}run brothers for 4 but 2 Man, exactly 2 Woman
![Page 61: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/61.jpg)
Verificación y Validación
Aserciones y Comando check
abstract sig Person {father: lone Man,mother: lone Woman }
sig Man extends Person {}sig Woman extends Person {}fact { no p: Person | p in p.^(mother + father) }
assert noSelfFather { no m: Man | m = m.father}check noSelfFather
Las aserciones son restricciones son consecuencia de los hechos del modelo.
assert a { F }check a alcance
El comando check instruye al analizadorpara que encuentre un contraejemplo.
![Page 62: Especificación, Validación y Verificación utilizando ...agaris/slides/1-Alloy.pdfEspecificación, Validación y Verificación utilizando Métodos Formales Livianos Ana Garis agaris@unsl.edu.ar](https://reader036.vdocuments.pub/reader036/viewer/2022062607/6045ee761a5ae702ed6c1627/html5/thumbnails/62.jpg)
Bibliografía
- Jackson, D.: Software Abstractions: Logic, Language, and Analysis, revised edn. MIT Press (2012)
- Dennis G. and Seater R.: Alloy Analyzer 4 Tutorial. Session 1: Intro and Logic, Software Design Group, MIT, disponible en: http://alloy.mit.edu/alloy/tutorials/day-course/s1_logic.pdf(última visita – agosto de 2014)
- Jackson, D.: Alloy & Applications, MIT (2009)