Está en la página 1de 6

CAPITULO 24

METODOS FORMALES

24.1. CONCEPTOS BASICOS

DEFINICIÓN METODOS FORMALES: los métodos formales que se utilizan para


describir sistemas de computadoras son técnicas de base matemática para describir las
propiedades del sistema. Proporcionan marcos de referencia para especificar, desarrollar y
verificar los sistemas de manera sistemática. Se dice que un método es formal si posee una
base estable, que normalmente vendrá dada por un lenguaje formal de especificación. Esta
base proporciona una forma de definir de manera precisa la consistencia, completitud,
especificación, implementación y la corrección.
Las propiedades deseadas de una especificación formal: carencia de ambigüedad,
consistencia y completitud son las metas de todos los métodos de especificación. Sin
embargo, la utilización de métodos formales da lugar a una probabilidad mucho mayor de
alcanzar estos objetivos ideales. La sintaxis formal de un lenguaje de especificación hace
posible interpretar los requisitos o el diseño de una forma única, eliminando esa
ambigüedad.
Para que sean consistentes, los hechos puestos de manifiesto en un lugar de una
especificación no deberán verse contradichos en otro lugar de la misma.

24.1.1. DEFICIENCIAS DE LOS ENFOQUES MENOS FORMALES

La especificación de un sistema puede contener:


- Contradicciones: son conjuntos de sentencias que difieren entre sí.
- Ambigüedades: son sentencias que se pueden interpretar de muchas maneras.
- Vaguedad: suele producirse porque la especificación del sistema es un documento muy
voluminosos. Alcanzar un elevado nivel de precisión de forma consiste es una tarea casi
imposible.
- Incompletitud: es posiblemente uno de los problemas que se producen más
frecuentemente en las especificaciones de sistemas.
- Niveles mezclados de abstracción: se producen cuando se entremezclan aleatoriamente
unas sentencias muy abstractas con otras sentencias que se encuentran en un nivel de
detalle muy inferior.

Todos estos problemas representan una deficiencia potencial en los métodos


convencionales y orientados a objetos de especificación.

24.1.2. LAS MATEMATICAS EN EL DESARROLLO DEL SOFTWARE

Las matemáticas poseen muchas propiedades útiles para quienes desarrollan grandes
sistemas. Una de las propiedades más útiles es que pueden describir de forma sucinta y
exacta una situación física, un objeto, o el resultado de una acción.
Otra de las ventajas de la utilización de las matemáticas en el proceso del software es que
proporcionan una transición suave entre las actividades de ingeniería del software. No sólo
las especificaciones funcionales, sino también los diseños del sistema, se podrán expresar
de forma matemática. El código de programa es una notación matemática, aunque sea un
tanto verbosa.

1
La propiedad fundamental de las matemáticas es que admite la abstracción, y es un
excelente medio para el modelado. Dado que es un medio exacto, hay pocas probabilidades
de ambigüedad, y las especificaciones se pueden verificar matemáticamente para descubrir
complicaciones y falta de completitud, y la vaguedad desaparece por completo. Se pueden
utilizar las matemáticas para representar niveles de abstracción en la especificación del
sistema de forma organizada.

Las matemáticas constituyen una herramienta ideal para el modelado. Hacen posible
exhibir el esquema fundamental de la especificación, y ayudan al analista y al
especificador del sistema a verificar una especificación a efectos de funcionalidad sin
problemas tales como el tiempo de respuesta, las directrices de diseño, las directrices de
implementación, y las restricciones del proyecto que siempre estorban. También ayuda al
diseñador, porque la especificación de diseño del sistema muestra las propiedades del
modelo, y ofrece tan sólo los detalles suficientes para hacer posible llevar a cabo la tarea
que tengamos entre manos.

Proporcionan un elevado nivel de verificación. Es posible utilizar una demostración


matemática para demostrar que un diseño satisface una especificación, y que algún código
de programa es un reflejo correcto de ese diseño.

24.1.3. CONCEPTOS DE LOS METODOS FORMALES

Objetivo de esta sección es presentar los conceptos fundamentales implicados en la


especificación matemática de sistemas de software.
Ejemplo 1: se utiliza un programa para mantener una tabla de símbolos. Esta tabla se
utiliza frecuentemente en muchos tipos distintos de aplicaciones. Consta de una colección
de elementos sin duplicar.
- Invariante de datos: restricción sobre la tabla, componente de una condición. Es una
condición que es cierta durante toda la ejecución del sistema que contiene una colección de
datos.
- Estado: es el dato almacenado al cual accede el sistema y que es alterado por este.
- Operación: es una acción que tiene lugar en un sistema y que lee o escribe datos en un
estado. Las operaciones están asociadas a dos condiciones: las precondiciones y las
postcondiciones.
- Precondición: define las circunstancias en que es válida una operación concreta.
- Postcondición: define lo que sucede cuando la operación ha finalizado su acción. Esto se
define mediante su efecto sobre el estado.

Ejemplo 2: Un gestor de bloques: Una de las partes más importantes de los sistemas
operativos es el subsistema que mantiene archivos que hayan sido creados por usuarios.
Una parte del subsitema de archivado es el gestor de bloques. Los archivos del almacén de
archivos están formados por bloques de espacio que se almacenan en algún dispositivo de
almacenamiento de archivos.
Durante el funcionamiento de la computadora, los archivos van siendo creados y borrados,
lo cual requiere la adquisición y liberación de bloques de espacio. Para abordar este
problema, el subsistema de archivo mantendrá una reserva de bloques libres y seguirá
también la pista de aquellos bloques que se están utilizando en ese momento. Cuando se
liberen bloques procedentes de un archivo borrado lo normal será añadirlos a una cola de
bloques que están a la espera de ser añadidos al conjunto de bloques que no se utilizan.

2
Ejemplo 3: Un concentrador de impresión: en los sistemas operativos multitarea, existe
un cierto número de tareas que hacen solicitudes para imprimir archivos. Con frecuencia,
no se dispone de un número suficiente de dispositivos de impresión para satisfacer
simultáneamente todas las solicitudes de impresión en curso. Toda solicitud de impresión
que no se pueda satisfacer de forma inmediata se ubicará en una cola a la espera de su
impresión. La parte del sistema operativo que abarca la administración de estas colas se
conoce con el nombre de concentrador de impresión.
El estado del concentrador consta de cuatro componentes:
- las colas de archivos que esperan para ser impresos, en donde cada cola está asociada a
un dispositivo de salida en concreto;
- la colección de dispositivos de salida controlados por el concentrador,
- la relación entre dispositivos de salida y el tamaño de archivo máximo que puede
imprimir cada uno de ellos;
- la relación entre los archivos que esperan para ser impresos y su tamaño en líneas.

En cada uno de los ejemplos indicados es esta sección, se han presentado los conceptos
claves de la especificación. Se ha esto hecho sin hacer hincapie en las matemáticas
necesarias para hacer formal la especificación.

24.2. PRELIMINARES MATEMÁTICOS

Para aplicar de una forma eficiente los métodos formales, el ingeniero del software debe
tener un conocimiento razonable de la noción matemática asociada a conjuntos,
sucesiones, y a la notación lógica que se emplea en el cálculo de predicado.

24.2.1. CONJUNTOS Y ESPECIFICACION CONSTRUCTIVA

- Conjunto: es una colección de objetos o elementos.


- Cardinalidad: número de elementos del conjunto

Hay dos maneras de definir un conjunto:


- Por enumeración de sus elementos.
- Creando una especificación constructiva de conjuntos.

Ejemplo: n: N/ n < 3 * n
Posee tres componentes:
- una signatura n: N: que especifica el intervalo de valores que se considerará cuando
se forme el conjunto
- predicado: n <3: una expresión boolena que define la forma en que se debe contruir el
conjunto
- término: n: ofrece la forma general del elemento del conjunto.

24.2.2. OPERADORES DE CONJUNTOS

Є pertenece


∪ unión
∩ intersección

3
Producto cartesiano

Los tres operadores más comunes son el operador de la unión ∪, el operador intersección
∩ y el operador diferencia de conjuntos \.

Un concepto importante para los métodos formales es el de conjunto potencia. El conjunto


potencia de un conjunto es la colección de subconjuntos de ese conjunto.

24.2.3. OPERADORES LOGICOS

Otro componente importante de los métodos formales es la lógica: se trata del álgebra de
expresiones verdaderas y falsas.

24.2.4. SUCESIONES

Sucesión: es una estructura matemática que modela el hecho consistente en que sus
elementos están ordenados. Una sucesión es un conjunto de parejas cuyos elementos
oscilan entre 1 y el mayor elemento posible.
Por ejemplo: (1, Jones), (2, Wilson), (3, Shapiro), (4, Estevez)
Los objetos que forman los primeros elementos de las parejas se conocen en su conjunto
con el nombre de DOMINIO de una sucesión y la colocación de segundos elementos se
conoce con el nombre de INTERVALO de la sucesión.

Concatenación: es un operador binario que forma una sucesión que se construye añadiendo
el segundo operando al final de su primer operando.

Otros operadores que se pueden aplicar a las sucesiones son:


- Cabeza: extrae el primer elemento de la sucesión
- Cola: proporciona los n-1 elementos finales de una sucesión de longitud cola
- Frente: proporciona los n-1 elementos de una sucesión de longitud n
- Último: extrae el elemento final de la sucesión

24.3 APLICACIÓN DE LA NOTACION MATEMATICA PARA LA


ESPECIFICACION FORMAL
nada

24.4. LENGUAJES FORMALES DE ESPECIFICACION

Un lenguaje de especificación formal suele estar compuesto por tres componentes


primarios:
sintaxis, que define la notación especifica con la cual se representa la especificación
1) semántica que ayuda a definir un “universo de objetos” que se utilizará para describir el
sistema
2) conjunto de relaciones que definen las reglas que indican cuales son los objetos que
satisfacen correctamente la especificación.
El dominio sintáctico suele estar basado en una sintaxis derivada de una notación estándar
de la teoría de conjuntos y del cálculo de predicados. Las variables como x y z describen
un conjunto de objetos que están relacionados con un problema (que a veces se denomina
el dominio de discurso) y se utilizan en conjunción con los operadores descritos en la

4
sección 24.2. aunque la sintaxis suele ser simbólica, también se pueden utilizar iconos
( símbolos gráficos, tales como cuadros, flechas círculos) si no son ambigüos.

El dominio semántico de un lenguaje de especificación indica la forma en que ese lenguaje


representa los requisitos del sistema. Por ejemplo, un lenguaje de programación posee un
conjunto de semánticas formal que hace posible que el desarrollador de software
especifique algoritmos que transforman una entrada en una salida.

Un lenguaje de programación no es un buen lenguaje de especificación, porque solamente


puede representar funciones computables. Un lenguaje de especificación deberá de poseer
un dominio semántico más amplio.
Otros lenguajes de especificación aplican una semántica que hace posible especificar el
comportamiento del sistema. Por ejemplo se pueden desarrollar una sintaxis y una
semántica para especificar los estados y las transiciones entre estados. Los sucesos y sus
efectos sobre las transiciones de estados, o la sincronización y la temporización.

En la actualidad se utiliza toda una gama de lenguajes formales de espeficación: CSP,


LARCH, VDM y Z. Son lenguajes representativos que muestran las características
indicadas anteriormente.

24.5. UTILIZACION DE Z PARA REPRESENTAR UN EJEMPLO DE


COMPONENTE DE SOFTWARE

Resumén de la notación z:

La notación Z está basada en la teoría de conjuntos con tipos y en la lógica de primer


orden. Z proporciona una estructura denominada esquema, para describir el estado y las
operaciones de una especificación. Los esquemas agrupan las declaraciones de variables
con una lista de predicados que limitan los posibles valores de las variables. En Z, el
esquema X se define en la forma:

X
Declaraciones
Predicados

Las funciones constantes globales se definen en la forma


Declaraciones
Predicados

La declaración proporciona el tipo de la función o constante, mientras que el predicado


proporciona su valor.

Símbolos de Z: (entre otros)

Є pertenece


∪ unión
∩ intersección

5
24.6. LOS DIEZ MANDAMIENTOS DE LOS METODOS FORMALES

“Los diez mandamientos de los métodos formales”

1) SELECCIONARÁS LA NOTACIÓN ADECUADA


2) FORMALIZARÁS, PERO NO DE MÁS
3) ESTIMARÁS LOS COSTES
4) POSEERÁS UN EXPERTO DE MÉTODOS FORMALES A TU DISPOSICIÓN
5) NO ABANANDONARÁS TUS MÉTODOS FORMALES DE DESARROLLO
6) DOCUMENTARÁS SUFICIENTEMENTE
7) NO COMPROMETERÁS LOS ESTÁNDARES DE CALIDAD
8) NO SERÁS DOGMÁTICO
9) COMPROBARÁS, COMPROBARÁS Y VOLVERÁS A COMPROBAR
10) REUTILIZARÁS CUANTO PUEDAS

24.7. METODOS FORMALES: EL FUTURO.

Las especificaciones formales se pueden estudiar matemáticamente, mientras que las


especificaciones informales no pueden estudiarse de esta manera.
La especificación formal elimina la ambigüedad y propugna mayor rigor en las primeras
fases de proceso de ingeniería del software.
Pero siguen existiendo problemas. La especificación formal se centra fundamentalmente en
las funciones y los datos. La temporización, el control y los aspectos de comportamiento
del problema son más difíciles de representar. Además, existen ciertas partes del problema
( por ejemplo, las interfaces hombre – máquina) que se especifican mejor empleando
técnicas gráficas.

También podría gustarte