Está en la página 1de 18

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS


ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 1

INFORME DE LABORATORIO
(Formato Estudiante)
INFORMACIÓN BÁSICA
ASIGNATURA: Aspectos Formales de Especificación y Validación
TÍTULO DE LA
Aplicando Model Checker
PRÁCTICA:
NÚMERO DE NRO.
09 AÑO LECTIVO: 2023 VIII
PRÁCTICA: SEMESTRE:
FECHA DE HORA DE
18/12/2023 14:00 hrs
PRESENTACIÓN PRESENTACIÓN
INTEGRANTE (s):
Chávez Cáceres, Samir Diego
Hincho Jove, Angel Eduardo NOTA:
Neira Carrasco, Darwin Jesús

DOCENTE(s):
Mg. Molina Barriga, Maribel

SOLUCIÓN Y RESULTADOS
I. SOLUCIÓN DE EJERCICIOS/PROBLEMAS
EJERCICIOS RESUELTOS POR EL DOCENTE

1. Dado el siguiente diagrama cree un archivo con el siguiente código y grábalo como pg-demo.smv
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 2

Código compartido en la práctica de laboratorio. Se copia en un archivo de texto y se guarda.

Copiamos el código en un archivo de texto con ayuda del editor Vim.


UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 3

Ejecutamos el comando NuSMV -int para interactuar desde una terminal de código o scripts NuSMV.

Ejecutamos los comandos read model, flatten hierarchy, encode variables y build model para crear el modelo.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 4

Realizamos las pruebas compartidas en el documento o guía de laboratorio. Nos ayudarán a verificar los
estados G y F. (Global and Future).

Finalmente desde una terminal abrimos la línea de comandos donde vamos a ejecutar el binario de NuSMV con
la opción -int o -interactive para poder utilizarlo como una consola de administrador o usuario.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 5

Ocupamos los comandos read_model para cargar nuestra especificación o código, luego agregamos la jerarquía
de tipo flatter_hierarchy y encode_variables para construir el modelo utilizando build_model.

Una vez con el modelo creado entonces solo debemos ejecutar la sentencia pick_state -i para verificar el estado
inicial, es estado inicial del autómata o diagrama de estados empieza en el estado L1 y con un valor de X = 0.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 6

Luego al ejecutar la sentencia ‘simulate -i -k 10’ vamos a simular 10 pasos dentro de nuestro autómata o
máquina de estados, podemos ver como la máquina pasa al estado L2 ya que 0 es menor que 10 y luego
aumenta el valor de la variable X en una unidad para volver del estado L2 al L1 con X = 1.

Básicamente si seguimos ejecutando la simulación podemos ver como nuestro autómata pasa del estado L1 a L2
sumando una unidad en cada paso o transición entre estos estados, se trata de un vaivén.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 7

Una vez llegado al valor de X = 3 podemos ver como las 10 iteraciones realizadas con el comando ‘simulate’ han
acabado por lo cual si queremos ver más estados de nuestro autómata y cómo este evoluciona sería adecuado
volver a ejecutar dicho comando ‘simulate’.

Volvemos a ejecutar el comando ‘simulate’ nuevamente con 10 pasos.


UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 8

Podemos ver como la máquina llega a la condición de salida o de stop donde la variable X = 10 y ya no puede
pasar desde el estado L1 a L2. Podemos ejecutar nuevamente el comando ‘simulate’ pero será en vano ya que
ahora no existe o no se cumple la transición o condición para pasar del estado L1 a L2.

Al ejecutar nuevamente el comando ‘simulate’ no obtenemos cambios ya que se rompió la condición o transición
desde L1 a L2 que requiere que el valor de X sea menor al valor de 10.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 9

EJERCICIOS PROPUESTOS POR EL DOCENTE

1. Para su proyecto, proponga un Sistema de Transición de Estados haciendo uso de al menos dos
estados. Considere al menos una variable, condiciones de transición y actualizaciones de valores.

Nuestro proyecto sobre metales pesados en aguas residuales posee como requerimiento identificar niveles
peligrosos de metales pesados en las aguas residuales. Esto se establece usando sensores y monitores, para ello
cada sensor está constantemente recuperando información y medidas de las aguas residuales e informa sobre
los resultados de las lecturas, es así que se eligió este aspecto para elaborar un diagrama de estados.

2. Presente una breve descripción de lo que significa el modelo.


UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 10

En nuestro proyecto, sobre el control de metales pesados en aguas residuales, tenemos sensores que
constantemente están controlando los niveles de ciertos metales que son dañinos para la salud. De esta manera
se propone el siguiente diagrama de estados. El diagrama consta de dos estados y tres transiciones. Los estados
son “seguro” y “peligroso”. Los datos llegarán constantemente (streaming) por lo cual es necesario evaluar si aún
seguimos en un margen seguro (con alguna constante o invariante) según norma. En caso se exceda el límite
seguro, es decir la cantidad de metales pesados en mg. u otra unidad, entonces se pasa al estado seguro. Como
pueden llegar, y de hecho van a llegar más datos vía streaming, entonces una vez se registre una lectura menor
al límite permitido volveremos del estado peligroso al seguro. Siendo la variable la cantidad de metal en agua.

3. Realice el código en NUSmv.


UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 11

Presentamos un vistazo rápido al código desarrollado en NuSMV. El código desarrollado se compartirá mediante
un enlace a un repositorio en GitHub y en el archivo ‘measurements.smv’. Podemos decir que existe una
constante llamada límite y una variable llamada ‘measure’ o ‘medida’.

Como se explicó, tenemos una constante llamada límite la cual representa un margen seguro de la cantidad de
metal pesado que se encuentra en el agua residual. Tenemos dos estados definidos: seguro y peligroso. La
variable ‘measure’ o ‘medida’ está delimitada desde 0 a 100 unidades. Empezamos el diagrama en el estado
seguro y con una lectura o medida igual a 0.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 12

En cuanto a las transiciones hemos identificado 3 transiciones. La primera se trata de una lectura normal o
segura en la cual estamos en el estado seguro y llega una medida por debajo del límite, por ende seguimos
dentro del estado seguro. La segunda transición declarada inicia en el estado seguro para luego recibir una
lectura por encima del límite cambiando al estado peligro y ya finalmente tenemos el tercer estado en el cual
iniciamos en el estado de peligro y llega una nueva lectura por debajo del límite que lo cambia al estado seguro.

En cuanto a la evolución de la variable ‘measure’ y ‘medida’ para poder simular una evolución real vía streaming
de los sensores tenemos tres declaraciones. En la primera sentencia podemos ver como la temperatura al estar
en el estado seguro y dentro del intervalo de 0 a 100 estará constantemente incrementándose en 5 unidades.
Una vez llegue al estado peligroso seguirá incrementándose mientras sea menor a 50 unidades. Finalmente si la
variable ‘measure’ está en el estado peligroso y tiene una medida o ‘measure’ mayor a 50 entonces se realizará
una resta de 30 unidades para poder volver a un estado seguro y seguir con la evoluciones.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 13

Abrimos una terminal del sistema operativo donde nos encontremos y utilizando los comandos read_model,
flatten_hierarchy y build_model cargamos el archivo ‘measurements.smv’ con las especificaciones del diagram
de estado trabajado. Finalmente con el comando pick_state -i podemos recuperar el primer estado del sistema.

Ejecutando el comando simulate -i -k 10 podemos ver como nuestro sistema evoluciona tanto en estados como
en el valor de la variable ‘measure’. Recordemos que esta variable ‘measure’ estará constantemente
incrementándose mientras el estado sea seguro en 5 unidades.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 14

Podemos ver que casi al final de las 10 primeras iteraciones del sistema o diagrama de estados hemos pasado a
de un estado seguro a uno peligroso debido al aumento constante de la variable ‘measure’.

Una vez la variable ‘measure’ llegue al límite de las 50 unidades se decrementará en 30 unidades y de esta
manera volverá a un estado seguro para continuar con la simulación dentro del programa.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 15

Si seguimos simulando escenarios con el comando simulate podemos ver como cambiamos de estados mientras
la variable ‘measure’ sigue siendo modificada durante cada iteración.

4. Identifique algún requerimiento que debe ser comprobado haciendo uso de G o F.

Como primer chequeo utilizamos el comando: check_ltlspec -p "G(measure >= 0)". De esta manera estamos
verificando que la variable ‘measure’ siempre será de tipo natural positivo. También con el comando:
check_ltlspec -p "F(measure >= limit)". Verificamos que llegará un punto de alerta dentro del sistema siendo que
la medidas exceda a la constante límite declarada inicialmente, cambiando a un estado peligroso.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 16

Ahora vamos a utilizar el comando: check_ltlspec -p "F(location = danger)". Verificando que existe al menos un
estado el cual será de tipo peligroso ya que hemos programado este comportamiento incrementando
constantemente el valor de la variable ‘measure’. Así mismo con el comando: check_ltlspec -p "F(location =
safe)". Verificamos que existen estados seguros e inseguros o peligrosos dentro de la simulación.

Con el comando: check_ltlspec -p "G(location = safe)" podemos comprobar que no siempre existirán estados
seguros durante todas las simulaciones del sistema.
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 17

II. SOLUCIÓN DEL CUESTIONARIO


1. Explique con sus propias palabras ¿Qué se debe realizar para verificar los requerimientos en el
Model Checker?

Para verificar un requerimiento dentro de un diagrama de estados en NUSMv deberiamos


primero tener listo nuestro diagrama de estados dentro de NUSMv, luego hacemos builde de
nuestro diagrama para finalmente ejecutar el comando para verificar

check_ltlspec -p “tipo_de_requisito (condicion)”


Ejemplo: check_ltlspec -p “F (x>=0)”

2. ¿Para qué sirven el modelo G y el modelo F? Enuncie dos ejemplos.

El modelo G indica que un requerimiento debe cumplirse en todos y cada uno de los estados.
Por ejemplo, si modelamos un pozo, un requisito de tipo G sería que el nivel del agua no debe
ser negativo. Ya que, es totalmente imposible tener un nivel de agua negativo.

El modelo F indica que un requerimiento debe cumplirse en algún estado. Por ejemplo, si
modelamos un pozo, un requisito de tipo F sería que el nivel del agua llegará a su máximo.

III. CONCLUSIONES
- Antes de verificar cualquier requerimiento, es necesario tener el diagrama de estados correctamente
definido en NuSMV.

- Después de haber definido el diagrama de estados, se realiza la compilación o build del modelo en
NuSMV para asegurarse de que esté listo para su análisis.

- Se utiliza el comando check_ltlspec seguido de la expresión del requerimiento que se desea verificar. Por
ejemplo, check_ltlspec -p "F (x>=0)" verifica si en algún estado futuro la condición "x>=0" se cumple.

RETROALIMENTACIÓN GENERAL
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación


Aprobación: 2022/03/01 Código: GUIA-PRLE-001 Página: 18

REFERENCIAS Y BIBLIOGRAFÍA

[1] Fitzgerald, J., Larsen, P. G., Mukherjee, P., Plat, N., & Verhoef, M. (2005). Validated Designs for Object
Oriented Systems. Springer Science & Business Media.

[2] Baier, C., & Katoen, J. P. (2008). Principles of Model Checking. MIT Press.

[3] The Overture Project. (2021). GitHub. https://github.com/overturetool

[4] Overture Tool. (2023). OvertureTool Documentation: Documentation and Examples. GitHub.
https://github.com/overturetool/documentation

[5] FMVDM. (2017). http://fmvdm.org/doc/index.html

[6] NUSMV Home Page. (2016). https://nusmv.fbk.eu/

[7] NUSMV Examples: The collection. (2016). https://nusmv.fbk.eu/examples/examples.html

RECURSOS WEB / URL's

[8] Manuales de Uso de Herramienta para Model Checking disponibles en el Aula Virtual.

[9] Manuales de Uso de Herramienta para Overture disponibles en el Aula Virtual.

[10] Manuales de Uso de Herramienta VDM ToolBox disponibles en el Aula Virtual.

También podría gustarte