Sunteți pe pagina 1din 4

Rodolfo Quispe-Otazu. Que son los Metodos Formales?. Blog de Rodolfo Quispe-Otazu [Internet]. Febrero 2009.

Disponible en: http://www.rodolfoquispe.org/blog/que-son-los-metodos-formales.php

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.

Definiciones: Metodos Formales


Una de las metas de la Ingenieria del Software es lograr que los desarrolladores construyan sistemas confiables independientemente de su complejidad. Una forma de alcanzar esta meta es a travs del uso de Mtodos Formales (MF): tcnicas, lenguajes y herramientas definidos matemticamente, para especificar y verificar tales sistemas. El uso de MF propicia la confiabilidad y la seguridad de un sistema, al aumentar la comprensin acerca de un sistema revelando inconsistencias, ambigedades e incompletitudes, que de otra manera pasan desapercibidas. [L. Mendoza, M. Prez y M. Capel] Los mtodos formales que se utilizan para desarrollar sistemas de computadoras son tcnicas de base matemtica para describir las propiedades del sistema. Estos mtodos formales proporcionan marcos de referencia en el seno de los cuales las personas pueden especificar, desarrollar y verificar los sistemas de manera sistemtica, en lugar de hacerlo ad hoc. [John J. Marciniak]

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]

Los diez mandamientos de los metodos formales


La decisin de hacer uso de los mtodos formales en el mundo real no debe de adoptarse a la ligera. Bowen y Hinchley han acuado los diez mandamientos de los mtodos formales, como gua para aquellos que estn a punto de embarcarse en este importante enfoque de la Ingenieria del Software. 1.

Seleccionars la notacin adecuada. Con objeto de seleccionar eficientemente dentro de la


amplia gama de lenguajes de especificacin formal existente, el ingeniero del software deber considerar el vocabulario del lenguaje, el tipo de aplicacin que haya que especificar y el grado de utilizacin del lenguaje.

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.

Poseers un experto en mtodos formales a tu disposicin. El entrenamiento de


expertos y la asesora continua son esenciales para el xito cuando se utilizan los mtodos formales por primera vez.

5.

No abandonars tus mtodos formales de desarrollo. Es posible, y en muchos casos


resulta deseable, integrar los mtodos formales con los mtodos convencionales y/o con mtodos orientados a objetos. Cada uno de estos mtodos posee sus ventajas y sus inconvenientes. Una combinacin de ambos, aplicada de forma adecuada, puede producir excelentes resultados. Documentars suficientemente. Los mtodos formales proporcionan un mtodo conciso, sin ambigedades y consistente para documentar los requisitos del sistema. Sin embargo, se recomienda que se adjunte un comentario en lenguaje natural a la especificacin formal, para que sirva como mecanismo para reforzar la comprensin del sistema por parte de los lectores. No comprometers los estndares de calidad. Los mtodos formales no tienen nada de mgico, y por esta razn, las dems actividades de SQA deben de seguir aplicndose cuando se desarrollen sistemas.

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 siete mitos sobre los metodos formales


Los siete mitos mas generalizados sobre los metodos formales son variaciones de los siguientes: 1.

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.

Los metodos formales se centran en demostrar correccion. En los Estados Unidos,


gran parte del trabajo desarrollado en metodos formales se ha concentrado en la verificacion de programas. Esto ha hecho que los metodos formales parezcan muy dificiles y no muy relevantes para la vida real.

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.

Los metodos formales requieren matematicos entrenados. Los metodos formales se


basan en notaciones matematicas, y muchas personas creen que esto los hace dificiles para la practica de los ingenieros de software. Este mito, a su vez, se basa en la percepcion de que las matematicas son intrinsicamente dificiles.

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.

Los metodos formales no se usan en grandes proyectos reales. Los metodos


formales se asocian comunmente con departamentos academicos y organizaciones de investigacion. Se piensa que solo estas organizaciones tienen la capacidad necesaria para usar metodos formales y que estos solo son apropiados para las aplicaciones idealizadas que estos grupos desarrollan.

Principales Metodos Formales utilizados en el desarrollo de software

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)

S-ar putea să vă placă și