Documente Academic
Documente Profesional
Documente Cultură
Introduccion
La calidad del software es una de las problematicas mas importantes en los procesos de desarrollo de software. Garantizar el correcto funcionamiento bajo situaciones no determinadas es una tarea que tiene que ser realizada con cuidado extremo. En algunos casos, este tipo de pruebas son de mayor importancia, ya que involucran ambientes sensibles e informacion critica en donde es necesario garantizar que cada uno de los componentes involucrados (hardware, software y componentes humanos) actue de manera correcta ante situaciones especificas, con una variedad de ejemplos que cubren areas tan diversas como planeacion de trafico, aplicaciones militares y sistemas medicos, entre muchas otras. Los modelos formales presentan una alternativa practica para solucionar estos problemas. Constituyen un enfoque analitico para la especificacion, diseo y verificacion de sistemas de hardware y software. Su caracteristica principal es la rigurosidad en la que sus modelos se encuentran basados, con fundamentos en solidos principios matematicos que permiten definir con precision y sin temor a ambiguedades las necesidades de un sistema. Gracias a estos fundamentos, el software generado mediante metodos formales puede ser verificado mediante el cumplimiento de propiedades derivadas de la especificacion. Este enfoque ha resultado ser exitoso frente a otras tendencias, encontrando errores en diseo que dificilmente habrian podido ser considerados usando otras tecnicas.
Los metodos formales representan un conjunto de tendencias de desarrollo de software y hardware en donde la especificacion, verificacion y diseo de componentes se realiza mediante notaciones, lenguajes, herramientas y tecnicas basadas en teorias con solida fundamentacion matematica. El uso de notaciones y lenguajes formales permite plantear de manera clara los requerimientos de un sistema, generando especificaciones que definen el comportamiento en terminos del que debe hacer y no del como lo hace. [Hugo A. Lopez A.] Los metodos formales permiten al ingeniero del software crear una especificacin sin ambigedades que sea ms completa y constante que las que se utilizan en los mtodos convencionales u orientados a objetos. La teora de conjuntos y las notaciones lgicas se utilizan para crear una sentencia clara de hechos (o de requisitos). Esta especificacin matemtica entonces se puede analizar para comprobar que sea correcta y constante. Como esta especificacin se crea utilizando notaciones matemticas inherentemente es menos ambigua que los nodos informales de presentacin. [Roger Pressman] En Ingenieria del Software un mtodo formal es un camino a la construccin y anlisis de modelos matemticos que permitan una automatizacin del desarrollo de sistemas informticos. Los mtodos formales se caracterizan por emplear tcnicas y herramientas matemticas para lograr una facilitacin a la hora de encarar la construccin o el anlisis de un modelo matemtico de un sistema. [Wikipedia]
2.
Formalizars, pero no de ms. En general, resulta necesario aplicar los mtodos formales a
todos los aspectos de los sistemas de cierta envergadura. Aquellos componentes que sean crticos para la seguridad sern nuestras primeras opciones, e irn seguidos por aquellos componentes cuyo fallo no se pueda admitir (por razones de negocios). Estimars los costes. Los mtodos formales tienen unos costes de arranque considerables. El entrenamiento del personal, la adquisicin de herramientas de apoyo y la utilizacin de asesores bajo contrato dan lugar a unos costes elevados en la primera ocasin. Estos costes deben tenerse en cuenta cuando se est considerando el beneficio obtenido frente a esa inversin asociada a los mtodos formales.
3.
4.
5.
6.
7.
8.
No sers dogmtico. El ingeniero de software debe reconocer que los mtodos formales no son
una garanta de correccin. Es posible (o como algunos probablemente diran) que el sistema final, aun cuando se haya desarrollado empleando mtodos formales, siga conteniendo pequeas omisiones, errores de menor importancia y otros atributos que no satisfagan nuestras expectativas. Comprobars, comprobars y volvers a comprobar. Los mtodos formales no absuelven al ingeniero del software de la necesidad de llevar a cabo unas comprobaciones
9.
exhaustivas y bien planeadas. 10. Reutilizars cuanto puedas. A la larga, la nica forma racional de reducir los costes del software y de incrementar la calidad del software pasa por la reutilizacin. Los mtodos formales no modifican esta realidad. De hecho, quizs suceda que los mtodos formales sean un enfoque adecuado cuando es preciso crear componentes para bibliotecas reutilizables.
Los metodos formales garantizan que el software esta perfecto. El mito mas
importante es que los metodos formales serian todopoderosos, si nosotros humildes mortales pudiesemos aplicarlos. Este mito es pernicioso porque nos lleva a expectativas irreales y a la idea de que los metodos formales son de alguna forma todo o nada.
2.
3.
Los metodos formales son utiles solo para sistemas criticos. Esta creencia se basa
en la percepcion de la dificultad que implica la aplicacion de metodos formales. La verdad es que los sistemas criticos requieren un uso mas acucioso de metodos formales, pero cualquier sistema puede beneficiarse con el uso de algunas tecnicas de especificacion formal.
4.
5.
Los metodos formales aumentan el costo del desarrollo. Se acostumbraba decir que a
pesar que el costo que significaba usar metodos formales era muy alto, de todas formas era conveniente porque resultaba en menores costos de mantenimiento del software.
6.
Los metodos formales son incomprensibles para los usuarios. Una especificacion
formal esta llena de simbolos matematicos que resultan incomprensibles para cualquiera que no este familiarizado con la notacion. De ahi que se suponga que son inutiles para clientes no matematicos.
7.
Metodos formales basados en Lgica de Primer Orden: Z, B, VDM, Object-Z, Z++ y VDM++. Metodos formales basados en Formalismos Algebraicos: HOSA (Hidden Order Sorted Algebras), TROLL, OBLOG, Maude y AS-IS (Algebraic Specifications with Implicit States). Metodos formales basados en Redes de Petri: CO-OPN (Concurrent Object-Oriented Petri Nets) Metodos formales basados en Lgica Temporal: TRIO, OO-LTL y ATOM. Metodos Semiformales: Syntropy, Statemate, UML y OCL (Object Constraint Language)