Está en la página 1de 42

UNIVERSIDAD NACIONAL DE JUJUY INGENIERÍA EN INFORMÁTICA

FACULTAD DE INGENIERIA LICENCIATURA EN SISTEMAS

CÁTEDRA DE LÓGICA COMPUTACIONAL

9. Métodos Formales

Mg. Ing. Héctor Pedro Liberatori

Año 2023
LÓGICA COMPUTACIONAL 9. Métodos Formales

INTRODUCCIÓN
Los Métodos Formales son un conjunto de técnicas lógicas
y matemáticas con las que se especifica, diseña,
implementa y verifican sistemas de información.
Debido a que los lenguajes de especificación cada vez
se acercan más a los lenguajes de programación y las
técnicas de desarrollo se adaptan mejor a los nuevos
paradigmas, la industria cada vez utiliza más los métodos
formales.

2
LÓGICA COMPUTACIONAL 9. Métodos Formales

Los métodos formales atraen a la industria, ya que su


aplicación ayuda a lograr estándares de calidad, y a
evitar pérdidas causadas por fallas en los sistemas de
información tradicionales.
Desde hace varias décadas se utilizan técnicas de
notación formal para modelar requisitos, principalmente
porque se pueden verificar con facilidad y son
comprensibles por el usuario final.

3
LÓGICA COMPUTACIONAL 9. Métodos Formales

Los propósitos de los métodos formales son:


• Sistematizar e introducir rigor en todas las fases del
desarrollo del software.
• Proporcionar un método estándar de trabajo a lo largo
del proyecto.
• Constituir una base de coherencia entre las
actividades relacionadas.
• Contar con mecanismos de descripción precisos y no
ambiguos.

4
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.1. FUNDAMENTOS

La utilización de métodos formales permite plantear de


forma clara la especificación de un sistema, generando
modelos que definen el comportamiento. En términos del
“qué debe hacer” y NO del “cómo se hace”.
Los dos campos de principal aplicación métodos formales
son la especificación y la verificación.

5
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.1.1. Especificación

Es el proceso de describir un sistema y las propiedades


que se desea que tenga.
La especificación formal se basa en un lenguaje con una
sintaxis y una semántica matemáticamente definidas.
La especificación proporciona aspectos de como tratar el
rendimiento, limitaciones de tiempo real, políticas de
seguridad o el diseño de arquitectura.
Estos métodos han sido utilizados en áreas como Bases
de Datos, hardware, medicina, tecnología nuclear,
comunicaciones, etc.

6
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.1.2. Verificación

Es el proceso que permite comprobar si un sistema


cumple con las propiedades deseadas establecidas.
En la verificación formal existen 2 aproximaciones:
• comprobación de modelos, y
• demostración de teoremas.

7
LÓGICA COMPUTACIONAL 9. Métodos Formales

Comprobación de modelos

Es una técnica que consiste en construir un modelo


finito de un sistema y comprobar si una determinada
propiedad deseada en el sistema, se cumple en el
modelo.
La comprobación se realiza mediante búsqueda
exhaustiva en todo el conjunto de estados posibles del
modelo.

8
LÓGICA COMPUTACIONAL 9. Métodos Formales

Existen 2 vertientes en la comprobación de modelos:


• Comprobación temporal de modelos: las
especificaciones son expresadas mediante lógica
temporal. Los sistemas se modelan mediante
transiciones de estado finito.
• Especificación autómata: el sistema se modela
como un autómata. Luego se compara con la
especificación para determinar si su comportamiento
es congruente con la misma.

9
LÓGICA COMPUTACIONAL 9. Métodos Formales

La comprobación de modelos puede ser utilizada para:


• Comprobar especificaciones parciales, proporcionando
información sobre la corrección de un sistema, aún
cuando no esté completamente especificado.
• Producir contraejemplos a partir de los cuales se
puede analizar posibles errores subyacentes en el
diseño. Es por ello que puede ser un asistente del
debugging

10
LÓGICA COMPUTACIONAL 9. Métodos Formales

Demostración de teoremas

Es una técnica en la que tanto el sistema, como la


propiedades en el deseadas, se expresan mediante
fórmulas de lógica matemática.
Es el proceso de encontrar la prueba de una propiedad a
partir de los axomas del sistema. Los resultados que se
consiguen se denominan lemas intermedios.
Estas técnicas se utilizan para la verificación mecánica de
propiedades críticas en diseños de Hw y Sw.
Los demostradores de teoremas pueden de manejar
espacios de estados infinitos, mediante técnicas inductivas.

11
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2. LENGUAJES PARA ESPECIFICACIÓN FORMAL

La especificación formal utiliza un lenguaje con una


sintaxis y una semántica matemáticamente definidas.
Mediante la especificación formal se logra un mayor
entendimiento del sistema a ser especificado.
Existen en la actualidad distintos tipos de lenguajes de
especificación formal, basados en diferentes modelos.

12
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.1. Orientado al modelo

Estos lenguajes soportan especificación de sistemas a


partir un modelo matemático del sistema a implementar.
Los estados del sistema se detallan con operaciones que
los describen.
Una operación es una función que mapea un valor de un
estado, y con los valores de los parámetros llevan al
sistema hacia otro estado.
Los lenguajes más conocidos son: VDM-SL y el lenguaje
de especificación Z.

13
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.2. Algebraico

Estos lenguajes especifican sistemas de información


utilizando métodos que se derivan del álgebra abstracta.
El lenguaje de especificación algebraica más conocido es
OBJ.

14
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.3. Modelo basado en procesos

En estos lenguajes las expresiones denotan procesos, y


son construidos mediante expresiones elementales que
describen procesos sencillos.
Los procesos sencillos se combinan y conforman
procesos extremadamente complejos.
Ejemplos de este tipo de lenguajes son: CSP y CCS.

15
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.4. Modelo lógico

Este tipo de lenguajes son muy cercanos a los lenguajes


lógicos. La lógica formal se utiliza para especificar
sistemas de forma axiomática.
También se utilizan estos lenguajes para expresar
aspectos matemáticos.

16
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.5. Modelo constructivo

Los sistemas de lógica constructiva utilizan matemáticas


constructivas, debido a su gran relación con la realidad.
En lógica constructiva las formas de demostrar la
existencia de las funciones que satisfacen propiedades,
son restringidas.
Este principio ha sido demostrado por las herramientas
de prueba para la lógica constructiva, por ejemplo
NUPRL.

17
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.6. Espectro amplio

Estos lenguajes se utilizan en las diferentes etapas del


desarrollo de un sistema de información.
Desde la captura de requisitos hasta la especificación,
diseño, implementación y verificación.
Ejemplos de estos lenguajes son RSL (basado en RAISE) y
LOTOS utilizado originalmente para especificar protocolos
de comunicación.

18
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.7. Lenguaje Z

Este lenguaje se utiliza en Ingeniería del Sw. para la


especificación formal de programas que se codificarán en
algún lenguaje de programación.
En Z se definen esquemas para describir el espacio de
estados del sistema y las operaciones que actuarán
sobre el mismo.
Una especificación en Z tiene sentencias formales para
describir el sistema, y explicaciones informales que
hacen el documento más legible y comprensible.

19
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.2.8. LOTOS

Este lenguaje realiza un modelado de datos por medio de


Tipos de Datos Abstractos (ADT).
Se basa en el lenguaje ACT ONE para especificación
formal de tipos de datos, y en la teoría de modelos de
ecuaciones, lo que implica una semántica compleja.
LOTOS es una técnica descriptiva formal (FDT)
estandarizada por ISO para el diseño de sistemas
distribuidos

20
LÓGICA COMPUTACIONAL 9. Métodos Formales

LOTOS está formado por 2 componentes:


• un proceso algebraico basado en el Cálculo de Milner
de sistemas de comunicación, y en los procesos
secuenciales de comunicación de Hoare.
• un componente algebraico de datos basado en un
lenguaje de tipos de datos abstracto..

21
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.3. MÉTODOS FORMALES EN LA ING. DEL SW.

En la Ing. del Sw. Un método formal es un proceso que


se aplica para desarrollar programas, utilizando el poder
de la notación y de las pruebas matemáticas.
Los requisitos, la especificación y el sistema completo
deben validarse con las necesidades del mundo real.

22
LÓGICA COMPUTACIONAL 9. Métodos Formales

En la Ing. del Sw. los métodos formales se utilizan para:


• políticas de los requisitos,
• especificación,
• pruebas de correspondencia entre la especificación y
los requisitos,
• pruebas de correspondencia entre el código fuente y la
especificación,
• pruebas de correspondencia entre el código máquina y
el código fuente.

23
LÓGICA COMPUTACIONAL 9. Métodos Formales

Los métodos formales en la Ing. del Sw. son técnicas


rigurosas que se utilizan para describir las propiedades
del sistema, y proporcionan marcos de referencia para:
• especificarlo,
• desarrollarlo, y
• verificarlo.

24
LÓGICA COMPUTACIONAL 9. Métodos Formales

Un método es formal si posee una base matemática


estable, soportada por un lenguaje de especificación
formal que permite definir nociones como:
• consistencia,
• completitud,
• especificación,
• implementación, y
• correctitud.

25
LÓGICA COMPUTACIONAL 9. Métodos Formales

Utilizar notaciones y lenguajes formales permite estructurar


los requisitos del sistema, y generar especificaciones que
permitan definir su comportamiento.
Matemáticamente rigurosas significa que las
especificaciones en los métodos formales, son
declaraciones gramaticalmente correctas en una lógica
matemática.

26
LÓGICA COMPUTACIONAL 9. Métodos Formales

La estructuración y utilización de los métodos formales,


requiere mayor tiempo y trabajo para desarrollar la
especificación.
Su utilización garantiza que la construcción de los diseños
es correcta.
Los métodos formales difieren en la forma en como se
aplican y en los tiempos necesarios para cada fase del
ciclo de vida de los sistemas.

27
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.3.1. Fundamentos de los métodos formales

La matemática es una ciencia de la que se pueden


obtener muchas de sus propiedades para el desarrollo de
grandes y complejos sistemas.
La ventaja de utilizar matemáticas es que atenúa la
transición entre sus actividades, ya que es posible
expresar la especificación funcional, el diseño y el código
mediante notaciones.
Esto se logra gracias a la abstracción que permite
modelar con exactitud y evita las ambigüedades.

28
LÓGICA COMPUTACIONAL 9. Métodos Formales

Con las matemáticas es posible obtener lo siguiente:


• representar niveles de abstracción en la especificación,
• herramienta para modelar la especificación,
• verficar la funcionalidad de la especificación,
• permite ver los detalles de las propiedades de modelo,
• proporciona un nivel elevado de verificación, ya que se
puede utilizar demostración automática.

29
LÓGICA COMPUTACIONAL 9. Métodos Formales

El término formal se caracteriza por utilizar una serie de


modelos o formalismos matemáticos como:
• lenguajes formales,
• sintaxis,
• semántica,
• modelos,
• gramática,
• teorías,
• especificación,
• verificación,
• validación, y
• pruebas.
30
LÓGICA COMPUTACIONAL 9. Métodos Formales

Las temáticas anteriores permiten contar con bases


sólidas al momento de seleccionar un determinado
formalismo, desde los cuales es posible tener
acercamientos a conceptos tales como::
• requisitos,
• especificación formal e informal,
• validación,
• validez,
• completitud,
• correctitud, y
• nociones deprueba del Sw.
31
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.3.2. Formalismos matemáticos de los métodos formales

Los siguientes son los formalismos matemáticos de los


métodos formales:
• Lógica de Primer Orden y Teoría de Conjuntos.
• Algebraicos y de especificación ecuacional.
• Redes de Petri.
• Lógica Temporal.

32
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.4. PROYECTOS DE MÉTODOS FORMALES

Se ha experimentado con los métodos formales en varios


proyectos, para lograr el desarrollo de sistemas reales de
calidad. Algunos de ellos son los siguientes:
• Automatizar la verificación.
• Requisitos y diseño de alto nivel.
• Componentes más críticos.
• Análisis de modelos de Sw. y Hw, en donde las
variables se discretizan y los rangos se reducen.
• Análisis de modelos de sistemas de forma jerárquica.

33
LÓGICA COMPUTACIONAL 9. Métodos Formales

Aunque el uso de la lógica matemática sea un tema de


unificación en los métodos formales, no es posible indicar
que un método sea mejor que otro.
Cada dominio de aplicación requiere de métodos de
modelado diferentes, al igual que el tratamiento de las
pruebas.
En cada dominio en particular, las diferentes fases del
ciclo de vida se pueden lograr mejor con la aplicación
combinadad de diferentes técnicas y herramientas
formales.

34
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.5. VENTAJAS DE LOS MÉTODOS FORMALES

La utilidad de los métodos formales en la Ing. del Sw. es


un tema que crece con la aplicación exitosa de estos
métodos en los procesos industriales.
Las ventajas de utilizar los métodos formales se
presentan en la:
• especificación,
• verificación, y
• validación.

35
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.5.1. Especificación
La especificación formal proporciona mayor precisión en
el desarrollo del Sw.
Desarrollar formalmente una especificación requiere un
conocimiento detallado y preciso del sistema.
La mayor ventaja de los métodos formales se da en el
desarrollo de la especificación.

36
LÓGICA COMPUTACIONAL 9. Métodos Formales

Para tratar con el tamaño y la complejidad de la


especificación formal del Sw, se desarrollaron
herramientas que se agrupan en 2 categorías:
• Probadoras de teoremas: ayudan a diseñar pruebas
para demostrar que las especificaciones cumplen con
las propiedades deseadas.
• Verificadoras de modelos: exploran todas las posibles
ejecuciones de un programa. Producen contraejemplos
en los que una propiedad no se cumple.

37
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.5.2. Verificación
Las técnicas de verificación formal dependen de
especificaciones matemáticamente precisas.
Desde el punto de vista costo/beneficio, generar pruebas
es uno de los usos más productivos de los métodos
formales.
Las pruebas generadas con herramientas automatizadas
ofrecen una cobertura tan buena o mejor que la
alcanzada por las pruebas manuales.

38
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.5.3. Validación
La diferencia específica entre verificación y validación es:
• La verificación responde a: “si se está construyendo el
producto de forma correcta”.
• La validación responde a si “se está construyendo el
producto correcto”.

39
LÓGICA COMPUTACIONAL 9. Métodos Formales

En otras palabras la:


• Verificación es el conjunto de actividades que
aseguran que el Sw implementa correctamente una
función específica.
• Validación es un conjunto de actividades que aseguran
que el Sw construido se corresponde con los requisitos
del cliente.

40
LÓGICA COMPUTACIONAL 9. Métodos Formales

Una de las aplicaciones más prometedoras es en el


modelado de requisitos, ya que al diseñarlos formalmente,
el teorema de la herramienta de prueba puede detectar si
existen conflictos entre ellos.
Este método ayuda a determinar si se especificó el
sistema correcto, por lo que es más fácil determinar si las
propiedades deseadas se mantienen.

41
LÓGICA COMPUTACIONAL 9. Métodos Formales

9.6. DESVENTAJAS DE LOS MÉTODOS FORMALES

Son muy pocas las desventajas, entre ellas se enumeran:


• Las herramientas que se utilizan en los métodos
formales no son amigables.
• Los investigadores no conocen en detalle la realidad
industrial.
• Es escasa la colaboración entre la industria y el mundo
académico.
• Se considera que la aplicación de métodos formales
encarece los productos y demora su desarrollo.

42

También podría gustarte