MODELO DE MÉTODOS FORMALES
La denominación métodos formales se
usa para referirse a cualquier actividad relacionada con representaciones
matemáticas del software, incluyendo la especificación formal de sistemas,
análisis y demostración de la especificación, el desarrollo transformacional y
la verificación de programas. Todas estas actividades dependen de una
especificación formal del software.
Una especificación formal del
software es una especificación expresada en un lenguaje cuyo vocabulario,
sintaxis y semántica están formalmente definidos. Esta necesidad de una definición
formal significa que los lenguajes de especificación deben basarse en conceptos
matemáticos cuyas propiedades se comprendan bien. La rama de las matemáticas
usada es la de matemática discreta, y los conceptos matemáticos provienen de la
teoría de conjuntos, la lógica y el álgebra.
En la década de los 80, muchos
investigadores de ingeniería del software propusieron que el uso de métodos
formales de desarrollo era la mejor forma de mejorar la calidad del software.
Argumentaban que el rigor y el análisis detallado, que son una parte esencial
de los métodos formales, podrían dar lugar a programas con menos errores y más
adecuados a las necesidades de los usuarios. Predijeron que, en el siglo XXI,
una gran proporción del software estaría desarrollado usando métodos formales.
Claramente, esta predicción no se ha
hecho realidad. Existen cuatro razones principales para esto:
1. Una
ingeniería del software exitosa.
El uso de otros métodos de ingeniería
del software como los métodos estructurados, gestión de configuraciones y
ocultación de la información en el diseño del software y procesos de
desarrollo ha conducido a mejoras en la calidad del software. La gente que
sugirió que la única forma de mejorar la calidad del software era usando
métodos formales estaba claramente equivocada.
2.
Cambios en el mercado.
En la década de los 80, la calidad
del software fue vista como un problema clave de la ingeniería del
software. Sin embargo, desde entonces, la cuestión crítica para muchas clases
de desarrollo del software no es la calidad, sino la oportunidad de mercado. El
software debe desarrollarse rápidamente, y los clientes están dispuestos a
aceptar software con algunos defectos si se les entrega rápidamente. Las
técnicas para el desarrollo rápido del software no funcionan de forma efectiva
con las especificaciones formales. Por supuesto, la calidad todavía es un
factor importante, pero debe lograrse en el contexto de entrega rápida.
3. Ámbito
limitado de los métodos formales.
Los métodos formales no son muy
apropiados para la especificación de interfaces de usuario e interacciones del
usuario. El componente de interfaz de usuario se ha convertido en una
parte cada vez mayor de la mayoría de los sistemas, de manera que realmente
s6lo pueden usarse métodos formales cuando se desarrollan las otras partes del
sistema.
4. Escalabilidad
limitada de los métodos formales.
Los métodos formales todavía no son
muy escalables. La mayoría de los proyectos con éxito que han usado estas
técnicas han estado relacionados con núcleos de sistemas críticos relativamente
pequeños. A medida que los sistemas incrementan su tamaño, el tiempo y esfuerzo
requerido para desarrollar una especificación formal crece de forma
desproporcionada.
Ventajas
Ø Se comprende mejor
el sistema.
Ø La comunicación con
el cliente mejora ya que se dispone de una descripción clara y no ambigua de
los requisitos del usuario.
Ø El sistema se
describe de manera más precisa.
Ø El sistema se
asegura matemáticamente que es correcto según las especificaciones.
Ø Mayor calidad
software respecto al cumplimiento de las especificaciones.
Ø Mayor productividad
Desventajas
Ø El desarrollo de
herramientas que apoyen la aplicación de métodos formales es complicado y los
programas resultantes son incómodos para los usuarios.
Ø Los investigadores
por lo general no conocen la realidad industrial.
Ø Es escasa la
colaboración entre la industria y el mundo académico, que en ocasiones se
muestra demasiado dogmático.
Ø Se considera que la
aplicación de métodos formales encarece los productos y ralentiza su
desarrollo.
El uso de métodos formales está
creciendo en el área del desarrollo de sistemas críticos, en donde las
propiedades emergentes del sistema tales como seguridad, fiabilidad y
protección son muy importantes. El alto coste de los fallos de funcionamiento
en estos sistemas implica que las compañías están dispuestas a aceptar los
costes elevados iniciales de los métodos formales para asegurar que su software
es tan confiable como sea posible.
Los sistemas críticos en los que los
métodos formales se han aplicado con éxito incluyen un sistema de información
de control de tráfico aéreo, sistemas de señalización de redes ferroviarias,
sistemas de naves espaciales y sistemas de control médico.
Clasificación
La clasificación más común se realiza
en base al modelo matemático subyacente en cada método, de esta manera podrían
clasificarse en:
Ø Especificaciones
basadas en lógica de primer orden y teoría de conjuntos: permiten
especificar el sistema mediante un concepto formal de estados y operaciones
sobre estados. Los datos y relaciones/funciones se describen en detalle y sus
propiedades se expresan en lógica de primer orden. La semántica de los
lenguajes está basada en la teoría de conjuntos. Los métodos de este tipo más
conocidos son: Z, VDM y B.
Ø Especificaciones
algebraicas: proponen una descripción de estructuras de datos estableciendo tipos y
operaciones sobre esos tipos. Para cada tipo se define un conjunto de valores y
operaciones sobre dichos valores. Las operaciones de un tipo se definen a
través de un conjunto de axiomas o ecuaciones que especifican las restricciones
que deben satisfacer las operaciones. Métodos más conocidos: Larch, OBJ, TADs.
Ø Especificación de
comportamiento:
Ø Métodos basados en
álgebra de procesos: modelan la interacción entre procesos concurrentes. Esto ha potenciado
su difusión en la especificación de sistemas de comunicación (protocolos y
servicios de telecomunicaciones) y de sistemas distribuidos y concurrentes. Los
más conocidos son: CCS, CSP y LOTOS.
Ø Métodos basados en
Redes de Petri: una red de petri es un formalismo basado en autómatas, es decir, un
modelo formal basado en flujos de información. Permiten expresar eventos
concurrentes. Los formalismos basados en redes de petri establecen la noción de
estado de un sistema mediante lugares que pueden contener marcas. Un conjunto
de transiciones (con pre y post condiciones) describe la evolución del sistema
entendida como la producción y consumo de marcas en varios puntos de la red.
Ø Métodos basados en
lógica temporal: se usan para especificar sistemas concurrentes y reactivos. Los
sistemas reactivos son aquellos que mantienen una continua interacción con su
entorno respondiendo a los estímulos externos y produciendo salidas en
respuestas a los mismos, por lo tanto el orden de los eventos en el sistema no
es predecible y su ejecución no tiene por qué terminar.
No hay comentarios:
Publicar un comentario