Metodos Formales e Ingenieria de SW (Revista)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 27

Redalyc

Sistema de Informacin Cientfica


Red de Revistas Cientficas de Amrica Latina, el Caribe, Espaa y Portugal

Serna Montoya, Edgar Mtodos formales e Ingeniera de Software Revista Virtual Universidad Catlica del Norte, nm. 30, mayo-septiembre, 2010, pp. 126 Fundacin Universitaria Catlica del Norte Colombia
Disponible en: http://redalyc.uaemex.mx/src/inicio/ArtPdfRed.jsp?iCve=194214476008

Revista Virtual Universidad Catlica del Norte ISSN (Versin impresa): 0124-5821 [email protected] Fundacin Universitaria Catlica del Norte Colombia

Cmo citar?

Nmero completo

Ms informacin del artculo

Pgina de la revista

www.redalyc.org Proyecto acadmico sin fines de lucro, desarrollado bajo la iniciativa de acceso abierto

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Mtodos formales e Ingeniera de Software1 Formal Methods and Software Engineering Mthodes formelles et gnie logiciel
Edgar Serna Montoya Candidato a Magster en Ingeniera de Sistemas Universidad Nacional, Medelln Grupo de investigacin SISCO (FUNLAM) Profesor auxiliar Fundacin Universitaria Luis Amig [email protected], [email protected]

Tipo de artculo: Recepcin: Revisin: Aprobacin:

Revisin resultado de investigacin 2010-04-08 2010-04-19 2010-05-15

Contenido
1. Introduccin 2. Qu son los mtodos formales? 3. Los mtodos formales en la ingeniera de software 4. Ventajas de los mtodos formales 5. El futuro de los mtodos formales 6. Conclusiones 7. Lista de referencias

Artculo resultado del proyecto de investigacin: Estructuracin de una metodologa genrica para la realizacin de pruebas de Caja Negra en los sistemas de informacin, realizado por el grupo de investigacin SISCO de la Facultad de Ingenieras de las Fundacin Universitaria Luis Amig, en la lnea de investigacin: Sistemas de Informacin y Sociedad del conocimiento SISCO.

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Resumen. Los mtodos formales surgieron como puntos de vista analticos con los que es posible verificar el desarrollo de sistemas mediante la lgica y las matemticas, lo que aporta grandes ventajas para mejorar la calidad de los programas y por tanto la Ingeniera de Software. En este campo del conocimiento, la especificacin formal es una de las ms importantes fases del ciclo de vida, labor que requiere mucho cuidado ya que su funcin es garantizar que tanto el funcionamiento como el desempeo del programa sean correctos, bajo cualquier situacin. En el futuro, los mtodos formales deberan estar presentes como principios esenciales en el desarrollo de software, ya que se convierten en la base para aplicar las tcnicas de prueba y, dado su principio matemtico, en potencialmente automatizables. Palabras clave: Especificacin, formales, Validacin, Verificacin. Ingeniera de software, Mtodos

Abstract. Formal methods have emerged as analytical points of view that allow checking systems development through logic and mathematics, providing significant benefits to improve the quality of programs, and therefore the Software Engineering. In this field of knowledge, formal specification is one of the most important life cycle stages, a task that requires great care because its function is to ensure that both the operational and program performance will be correct in any situation. In the future, formal methods should be present as essential principles in software development since they become the basis for applying the testing techniques and, because of its mathematical principle, they are potentially automatable. Keywords: Formal Methods, Validation, Verification. Software Engineering, Specification,

Rsum. Les mthodes formelles ont merg comme points de vue analytiques qui rendent possible la vrification du dveloppement de systmes grce la logique et les mathmatiques, en apportant grandes avantages pour lamlioration de la qualit des logiciels et par consquent la Gnie Logiciel. Dans ce champ de connaissance, la spcification formelle est une des plus importantes phases de cycle de vie, travail qui exige beaucoup dattention puisque son fonction est garantir que le fonctionnement et la performance du logiciel soient correctes dans tous les situations. Dans le futur, les mthodes formelles devraient rester comme principes essentiales dans le dveloppement de logiciels, parce quils deviennent la rfrence pour appliquer las techniques de preuve et,

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

cause de son principe mathmatique, ils ont la potentialit de tre automatises. Mots-cls: Spcification, Gnie Logiciel, Mthodes Formelles, Validation, Vrification

1. Introduccin
El concepto de mtodos formales involucra una serie de tcnicas lgicas y matemticas con las que es posible especificar, disear, implementar y verificar los sistemas de informacin (Monin, 2003). Hasta hace pocos aos el desarrollo industrial de sistemas, usando dichas tcnicas, era considerado un complejo ejercicio terico e inviable en problemas reales. Las notaciones oscuras tomadas de la lgica, sin las suficientes herramientas de soporte, no podan competir con los lenguajes de cuarta generacin y los ambientes de desarrollo rpido de los aos 80 y 90; sin embargo, el mundo industrial cambi su actitud frente a los mtodos formales. Por una parte, porque los lenguajes de especificacin son cada vez ms cercanos a los lenguajes de programacin, las tcnicas de desarrollo se adaptan mejor a los nuevos paradigmas, y las herramientas comerciales que soportan la calidad del software son mtodos que se distribuyen comercialmente (Sobel & Clarkson, 2002). Adems, porque a medida que los sistemas informticos crecen en complejidad las prdidas causadas por fallas son cada vez mayores. Cuando correccin certificada se traduce en dinero, los mtodos formales atraen a la industria, ya que su aplicacin ayuda a lograr los estndares de calidad que la sociedad exige. La importancia de los mtodos formales en la Ingeniera de Software se increment en los ltimos aos: se desarrollan nuevos lenguajes y herramientas para especificar y modelar formalmente, y se disean metodologas maduras para verificar y validar. Los modelos que se disean y construyen de esta forma, desde las fases iniciales del desarrollo de software, son esenciales para el xito del futuro proyecto; ya que en la actual Ingeniera de Software constituyen la base que sustenta las subsiguientes fases del ciclo de vida, y porque los errores surgidos en ella tienen gran impacto en los costos del proyecto (Perry, 2006).

Desde hace varias dcadas se utilizan tcnicas de notacin formal para modelar los requisitos, principalmente porque estas notaciones se pueden

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

verificar fcilmente y porque, de cierta forma, son ms comprensibles para el usuario final (Felleisen et al., 2001). Adems, el paradigma Orientado por Objetos en la programacin parece ser el ms utilizado en la industria, y una forma de incrementar la confiabilidad del software y, en general de los sistemas, es utilizar los mtodos formales en la ingeniera aplicada (Kuhn et al., 2002). Pero, aunque los mtodos formales tienen un amplio recorrido, y su utilidad y eficiencia en desarrollos crticos estn demostradas, todava falta ms trabajo para que la mayora de ingenieros los conozcan y apliquen. En parte esta labor la deben realizar las facultades que deben incluirlos en sus contenidos acadmicos; los profesores, quienes se deben formar e investigar mejor esta rea del conocimiento; y los estudiantes, quienes deben tener una formacin ms solida en matemticas y lgica (Dijkstra, 1989). Slo con un trabajo mancomunado se podr lograr que la labor del ingeniero de Software sea verdadera Ingeniera, y que el usuario final acepte los productos software como confiables. Los propsitos de los mtodos formales son: sistematizar e introducir rigor en todas las fases de desarrollo de software, con lo que es posible evitar que se pasen por alto cuestiones crticas; proporcionar un mtodo estndar de trabajo a lo largo del proyecto; constituir una base de coherencia entre las muchas actividades relacionadas y, al contar con mecanismos de descripcin precisos y no ambiguos, proporcionar el conocimiento necesario para realizarlas con xito. Los lenguajes de programacin utilizados para desarrollar software facilitan la sintaxis y la semntica precisas para la fase de implementacin, sin embargo, la precisin en las dems fases debe provenir de otras fuentes. Los mtodos formales se inscriben en una amplia coleccin de formalismos y abstracciones, cuyo objetivo es proveer un nivel de precisin comparable para las dems fases. Si bien esto incluye temticas que actualmente estn en desarrollo, algunas metodologas ya alcanzaron un nivel de madurez suficiente para que se utilicen ampliamente. Existe una tendencia discutible a fusionar la matemtica discreta y los mtodos formales en la Ingeniera de Software. Efectivamente, en muchas temticas de sta se apoya la Ingeniera de Software, y no es posible ni deseable evitarlas cuando se trabaja con mtodos formales; pero no es posible pretender que por el simple hecho de tomar algunos enfoques de la Matemtica Discreta y emplearlos en aquella, se apliquen mtodos formales.

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

El principal objetivo de la Ingeniera de Software es desarrollar sistemas de alta calidad y, con los mtodos formales, en conjuncin con otras areas del conocimiento, se puede lograr. En este artculo se describe esa conjuncin, y se estructura de la siguiente forma: en la segunda parte se definen los mtodos formales; en la tercera se describe su utilidad en la Ingeniera de Software, su base matemtica y se presenta un ejemplo ilustrativo; en la cuarta se detallan sus ventajas, y en la quinta se presentan las tendencias de la investigacin en esta rea del conocimiento.

2. Qu son los mtodos formales?


Aunque el trmino se utiliza ampliamente, no parece existir una clara definicin acerca de qu son (Hehner, 2006). En muchas ocasiones el trmino se emplea simplemente para indicar la utilizacin de un lenguaje de especificacin formal, pero no incluye una descripcin de cmo se utiliza o la extensin de su uso. Incluso el trmino lenguaje de especificacin formal no es preciso, ya que no es claro si los lenguajes especficamente tienen como objetivo disear la implementacin, en lugar de especificar el problema. En este trabajo se utiliza el trmino mtodos formales para describir cualquier enfoque que utilice un lenguaje de especificacin formal, pero que describa su funcin en el proceso del desarrollo de software. Utilizar mtodos formales necesariamente implica un proceso formal de refinamiento, razonamiento y prueba. El trmino lenguaje de especificacin formal se utiliza aqu para referenciar un lenguaje en el que es posible especificar completamente la funcionalidad de todo o parte de un programa, de tal forma que sea susceptible de razonamiento formal, y que se fundamenta en una slida base matemtica, ms en que si es lo suficientemente abstracto. La base terica de los lenguajes de especificacin formal vara considerablemente, la ms comn es la de los mtodos formales. Los lenguajes de este tipo ms utilizados en la industria son The Vienna Development Method -VDM- (Jones, 1990) y Zed -Z-, que se basa en la teora de conjuntos y la lgica de predicados de primer orden de Zermelo Fraenkel (Spivey, 1992). VDM se utiliz primero en proyectos de gran tamao, pero Z parece ganar popularidad recientemente. Aunque su sintaxis es diferente, ambos lenguajes estn estrechamente relacionados y se basan, principalmente, en la teora matemtica de conjuntos (Hayes et al., 1994). Segn Gdel (1934), un sistema matemtico formal es un sistema de

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

smbolos con sus respectivas reglas de uso", todas recursivas. Este ltimo requisito es importante ya que permite desarrollar programas para comprobar si un determinado conjunto de reglas se aplica correctamente (Zeugmann & Zilles, 2008); sin embargo, garantizar que se puede lograr utilizando mtodos formales tiene un precio, ya que para muchas aplicaciones resulta extremadamente costosos. Las nociones fundamentales de especificacin y verificacin formal de programas se desarrollaron en los aos 70, entre otros por Hoare (1969) y Dijkstra (1976): el primer paso en la construccin de un sistema es determinar un modelo abstracto del problema que se va a resolver sobre el cual razonar. Como no todos los aspectos del problema son relevantes en el sistema que se desarrolla es necesaria una observacin cuidadosa para abstraer sus caractersticas ms importantes, y utilizar un lenguaje formal para describir el modelo -especificacin formal-. En las ciencias computacionales los "mtodos formales" adquieren un sentido ms lineal, y se refieren especficamente al uso de una notacin formal para representar modelos de sistemas, y en un sentido an ms estrecho se refieren a la formalizacin de un mtodo para desarrollar sistemas (Flynn & Hamlet, 2006). El trmino mtodos formales se refiere entonces al uso de tcnicas de la lgica y de la matemtica discreta para especificar, disear, verificar, desarrollar y validar programas. La palabra formal se deriva de la lgica formal, ciencia que estudia el razonamiento desde el anlisis formal -de acuerdo con su validez o no validez-, y omite el contenido emprico del razonamiento para considerar slo la forma -estructura sin materia-. Los mtodos formales ms rigurosos aplican estas tcnicas para comprobar los argumentos utilizados para justificar los requisitos, u otros aspectos de diseo e implementacin de un sistema complejo. En la lgica formal como en los mtodos formales el objetivo es el mismo, reducir la dependencia de la intuicin y el juicio humanos para evaluar argumentos (Kiniry & Zimmerman, 2008). Los mtodos menos rigurosos enfatizan en la formalizacin y renuncian a la computacin, definicin que implica un amplio espectro de tcnicas, y una gama igualmente amplia de estrategias. La interaccin de las tcnicas y estrategias de muchos mtodos formales, en determinados proyectos, se limita por el papel que interpretan y por los recursos disponibles para su aplicacin (Garca et al., 2006).

3. Los mtodos formales en la Ingeniera de Software 6

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

En Ingeniera de Software, un mtodo formal es un proceso que se aplica para desarrollar programas, y que explota el poder de la notacin y de las pruebas matemticas. Adems, los requisitos, la especificacin y el sistema completo deben validarse con las necesidades del mundo real (Kuhn et al., 2002). En la Ingeniera de Software los mtodos formales se utilizan para: Las polticas de los requisitos. En un sistema seguro se convierten en las principales propiedades de seguridad que ste debe conservar -el modelo de polticas de seguridad formal-, como confidencialidad o integridad de datos. La especificacin. Es una descripcin matemtica basada en el comportamiento del sistema, que utiliza tablas de estado o lgica matemtica. No describe normalmente al software de bajo nivel, pero s su respuesta a eventos y entradas, de tal forma que es posible establecer sus propiedades crticas. Las pruebas de correspondencia entre la especificacin y los requisitos. Es necesario demostrar que el sistema, tal como se describe en la especificacin, establece y conserva las propiedades de las polticas de los requisitos. Si estn en notacin formal se pueden disear pruebas rigurosas manuales o automticas. Las pruebas de correspondencia entre el cdigo fuente y la especificacin. Aunque muchas tcnicas formales se crearon inicialmente para probar la correctitud del cdigo, pocas veces se logra debido al tiempo y costo implicados, pero pueden aplicarse a los componentes crticos del sistema. Pruebas de correspondencia entre el cdigo mquina y el cdigo fuente. Este tipo de pruebas raramente se aplica debido al costo, y a la alta confiabilidad de los compiladores modernos.

Por tanto, los mtodos formales en la Ingeniera de Software son tcnicas matemticamente rigurosas que se utilizan para describir las propiedades del sistema, y proporcionan marcos de referencia para especificarlo, desarrollarlo y verificarlo de forma sistemtica, en lugar de hacerlo ad hoc (Jones et al., 2006). Un mtodo es formal si posee una base matemtica estable, normalmente soportada por un lenguaje de especificacin formal, que permite definir, de manera precisa, nociones como consistencia y completitud y, an ms relevantes, la especificacin, la implementacin y la correctitud. Al utilizar notaciones y lenguajes formales es posible estructurar claramente los requisitos del sistema, y generar las especificaciones que

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

permitan definir su comportamiento de acuerdo con el qu debe hacer, y no con el cmo lo hace (Bolstad, 2004). Matemticamente rigurosas significa que las especificaciones en los mtodos formales son declaraciones gramaticalmente correctas en una lgica matemtica, y que la verificacin formal es una deduccin rigurosa en ella. Es decir, que cada paso se deriva de una regla de inferencia que se puede comprobar mediante un proceso automtico (Liu & Venkatesh, 2005). Los mtodos formales en la Ingeniera de Software difieren en la forma como se aplican, y en los tiempos necesarios para cada fase del ciclo de vida; su estructuracin y utilizacin requiere mayor tiempo y trabajo para desarrollar la especificacin, pero su utilizacin garantiza, ms formalmente, que la construccin de los diseos es correcta.

3.1

Fundamentos matemticos de los mtodos formales

La matemtica es una ciencia de la cual se pueden aprovechar muchas de sus propiedades para el desarrollo de los grandes y complejos sistemas actuales, en los que, idealmente, los ingenieros deberan estructurar su ciclo de vida de la misma forma que un matemtico se dedica a la matemtica aplicada: presentar la especificacin matemtica del sistema y elaborar una solucin con base a una arquitectura de software que haga posible su implementacin (Drechsler, 2004). Aunque la especificacin matemtica de sistemas no es tan concisa como las expresiones matemticas simples, dado que los sistemas software son mucho ms complejos, no sera realista pensar que es posible especificarlos de la misma forma matemtica. En todo caso, la ventaja de utilizar matemticas en la Ingeniera de Software radica en que suaviza la transicin entre sus actividades, ya que es posible expresar la especificacin funcional, el diseo y el cdigo de un programa, mediante notaciones. Esto se logra gracias a que la propiedad fundamental de la matemtica es la abstraccin, una excelente herramienta para modelar debido a que es exacta, y a que ofrece pocas probabilidades de ambigedad, lo que permite verificar matemticamente las especificaciones, y buscar contradicciones e incompletitudes. Con las matemticas es posible representar, de forma organizada, los niveles de abstraccin en la especificacin del sistema; es una buena herramienta para modelar, ya que facilita el diseo del esquema principal de la especificacin; permite a analistas e ingenieros verificar la funcionalidad de esa especificacin y a los diseadores ver los detalles suficientes para llevar a cabo su tarea desde las propiedades del modelo. Tambin

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

proporciona un nivel elevado de verificacin, ya que para probar que el diseo se ajusta a la especificacin y que el cdigo refleja exactamente el diseo, se puede utilizar una demostracin matemtica (Langari & Pidduck, 2005). Como se expres antes, el trmino formal se caracteriza por utilizar una serie de categoras de modelos o formalismos matemticos, estos modelos no slo incluyen los fundamentos matemticos, tambin a los procesos para la produccin de software. Entre estos fundamentos bsicos se cuentan nociones como lenguajes formales, sintaxis, semntica, modelos, gramtica, teoras, especificacin, verificacin, validacin y pruebas; temticas a las que deberan tener acceso los Ingenieros de Software, para contar con bases slidas al momento de seleccionar un determinado formalismo (Wirsing, 1991), (Lewis & Papadimitriou, 1997), (Meldenson, 1997), desde los cuales es posible, de forma ms acertada, tener los primeros acercamientos a conceptos como requisitos, especificacin formal e informal, validacin, validez, completitud, correctitud y nociones sobre pruebas del software. Los formalismos matemticos de los mtodos formales son: Lgica de primer orden y teora de conjuntos (Manna & Waldinger, 1985). Se utilizan para especificar el sistema mediante estados y operaciones, de tal forma que los datos y sus relaciones se describan detalladamente, sus propiedades se expresen en lgica de primer orden, y la semntica del lenguaje tenga como base la teora de conjuntos. En el diseo y la implementacin del sistema los elementos, descritos matemticamente, se pueden modificar, pero siempre conservarn las caractersticas con las que se especificaron inicialmente. En esta lgica se establece, mediante diversos sistemas de deduccin, la definicin del lenguaje empleado -lgica de predicados de primer orden-, y de la prueba. Tanto las reglas de inferencia, el diseo de las pruebas, como el estudio de las teoras de igualdad e induccin, representan aspectos claves de este formalismo (Milner, 1990), (Mendelson, 1997). Algebraicos y de especificacin ecuacional (Ehrig & Mahr, 1990). Describen las estructuras de datos de forma abstracta para establecer el nombre de los conjuntos de datos, sus funciones bsicas y propiedades mediante frmulas ecuacionales-, en las que no existe el concepto de estado modificable en el tiempo. Tanto el clculo ecuacional -pruebas mediante ecuaciones-, como los sistemas de reescritura, constituyen el soporte para realizar las deducciones necesarias (Duffy, 1991). Tambin se utilizan para especificar sistemas de informacin a gran escala, tarea

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

en la que es necesario estudiar los mecanismos de extensin, de parametrizacin y de composicin de las especificaciones (Ehrig & Mahr, 1990). Redes de Petri (Murata, 1989), (Reising, 1991), (Manna & Pnueli, 1992), (Bause & Kritzinger, 2002), (Desel & Esparza, 2005), (Juhs et al., 2007). Establecen el concepto de estado del sistema mediante lugares que pueden contener marcas, y hacen uso de un conjunto de transiciones -con pre y post-condiciones-, para describir cmo evoluciona el sistema, y cmo produce marcas en los puntos de la red. Utilizan caractersticas semnticas de entrelazado o de base en la concurrencia real. En la primera, los procesos paralelos no deben ejecutar las instrucciones al mismo tiempo, mientras que en la segunda existe esa posibilidad. Estas caracterizaciones son fundamentales para poder representar conceptos como estado y transicin en los sistemas. Lgica temporal (Manna & Pnueli, 1992). Se utiliza para describir los sistemas concurrentes y reactivos, poseen una amplia nocin de tiempo y estado. Sus especificaciones describen las secuencias vlidas de estados -incluyendo los concurrentes- en un sistema especfico. Para aplicar este formalismo es necesario establecer inicialmente una clasificacin de los diferentes sistemas de lgica temporal de acuerdo con los criterios de proposicionalidad vs. primer orden, tiempo lineal vs. tiempo ramificado, de evaluacin instantnea o por intervalos, y tiempo discreto vs. tiempo continuo. Una vez que se establece la formalizacin del tiempo es posible estudiar la aplicacin del formalismo.

Los mtodos formales proporcionan un medio para examinar simblica y completamente el diseo digital sea hardware o software-, y establecer las propiedades de correctitud o seguridad. Sin embargo, en la prctica raramente se logra -excepto en los componentes de seguridad de sistemas crticos-, debido a la enorme complejidad de los sistemas reales. Se ha experimentado con los mtodos formales en varios proyectos para lograr el desarrollo de sistemas reales con calidad: Para automatizar la verificacin tanto como sea posible (Wunram, 1990). En requisitos y diseos de alto nivel, en los que la mayor parte de los detalles se abstraen de diversas formas (Rushby, 1993). Slo a los componentes ms crticos (Lutz & Ampo, 1994).

10

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Para analizar modelos de software y hardware, en los que las variables se discretizan y los rangos se reducen drsticamente (McDermid, 1995). En el anlisis de los modelos de sistemas de manera jerrquica, de tal forma que se aplique el "divide y vencers" (Zhang, 1999).

Aunque el uso de la lgica matemtica sea un tema de unificacin en los mtodos formales, no es posible indicar que un mtodo sea mejor que otro; cada dominio de aplicacin requiere mtodos de modelado diferentes, lo mismo que el acercamiento a las pruebas. Adems, en cada dominio en particular, las diferentes fases del ciclo de vida se pueden lograr mejor con la aplicacin combinada de diferentes tcnicas y herramientas formales (Pressman, 2004).

3.2

Un ejemplo ilustrativo

El siguiente ejemplo ilustra la utilizacin de los mtodos formales en la Ingeniera de Software. Se trata de especificar de forma diferente a la tradicional, y de utilizar el lenguaje matemtico para hacerlo con los requisitos de los sistemas. El ejemplo muestra la especificacin de las funciones de insercin y borrado en una estructura pila.
Tabla 1. Especificacin en lgica formal de las funciones de insertar y borrar elementos en una estructura pila

L.push(e:stelement): Inserta e despus del ltimo elemento insertado PRE: L L {NULL} L = {PRF} tamao(L) = n existe(L,clave(e)) POST: L = {PRF,e} tamao(L) = n + 1 PRE: L L = {NULL} POST: L = {e} n = 1 L.pop(): borra el elemento recientemente insertado PRE: L L = {PRF, e} tamao(L) = n POST: L = {PRF} tamao(L) = n 1

Ntese como, en lugar de utilizar el lenguaje natural para especificar las funciones, se recurre a la notacin Z de la lgica formal para hacerlo. Hacindolo de esta forma no se tienen ambigedades y es posible automatizarlas.

11

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

4. Ventajas de los mtodos formales


La utilidad de los mtodos formales en la Ingeniera de Software es un tema que se debate desde hace varias dcadas. Recientemente, con el surgimiento de la Ingeniera de Conocimiento en la Sociedad de la Informacin, y la aplicacin de los mtodos formales en los procesos industriales, nuevamente surge el debate. A continuacin se detallan algunas de las ventajas de utilizarlos. Especificacin. Uno de los problemas ms ampliamente reconocido en el desarrollo de software es la dificultad para especificar claramente el comportamiento que se espera del software, problema que se agudiza con el actual desarrollo basado en componentes, ya que el ingeniero tiene slo una descripcin textual de los requisitos, procedimientos, entradas permitidas y salidas esperadas. Asegurar que este tipo de software sea seguro es un problema, no slo por su tamao y complejidad, sino porque el cdigo fuente no suele estar disponible para los componentes que se adquieren. Una forma de ofrecer garanta rigurosa del producto es definir, con precisin, el comportamiento esperado del software (NASA, 1995). La especificacin formal proporciona mayor precisin en el desarrollo de software, y los mtodos formales brindan las herramientas que pueden incrementar la garanta buscada. Desarrollar formalmente una especificacin requiere conocimiento detallado y preciso del sistema, lo que ayuda a exponer errores y omisiones, y por lo que la mayor ventaja de los mtodos formales se da en el desarrollo de la especificacin (Clarke & Wing, 1996). En la formalizacin de la descripcin del sistema se detectan ambigedades y omisiones, y una especificacin formal puede mejorar la comunicacin entre ingenieros y clientes. Los mtodos formales se desarrollaron principalmente para permitir un mejor razonamiento acerca de los sistemas y el software. Luego de disear una especificacin formal, se puede analizar, manipular y razonar sobre ella, de la misma forma que sobre cualquiera expresin matemtica. Una diferencia significativa entre una especificacin formal de software y una expresin matemtica de lgebra o clculo, es que tpicamente es mucho ms grande -a menudo cientos o miles de lneas-. Para tratar con el tamao y la complejidad de estas expresiones se desarrollan herramientas de software que se pueden agrupar en dos grandes categoras: probadoras de teoremas y verificadoras de modelos (Anderson et al, 1998).

12

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Las primeras ayudan al usuario a disear pruebas, generalmente para demostrar que las especificaciones cumplen con las propiedades deseadas. Para usarlas, es necesario que el ingeniero tenga cierto grado de habilidad y conocimiento, pero pueden manipular especificaciones muy grandes con propiedades complejas. Los desarrollos recientes en mtodos formales introdujeron las verificadoras de modelos, que exploran, hasta cierto punto, todas las posibles ejecuciones del programa especificado. Pueden verificar si cumple con una propiedad especfica mediante la exploracin de todas las posibles ejecuciones, o producen contraejemplos en los que la propiedad no se cumple. Aunque estas herramientas pueden ser completamente automticas, no pueden resolver problemas tan grandes o variados como las probadoras de teoremas. Las herramientas ms sofisticadas combinan aspectos de ambas, aplican las verificadoras a algunas partes de la especificacin, pero confan en el usuario para probar las propiedades complicadas. Verificacin. Para asegurar la calidad de los sistemas es necesario probarlos, y para asegurar que se desarrollan pruebas rigurosas se requiere una precisa y completa descripcin de sus funciones, incluso cuando en la especificacin se utilicen mtodos formales. Una de las aplicaciones ms interesantes de stos es el desarrollo de herramientas, que pueden generar casos de prueba completos desde la especificacin formal. Aunque gran nmero de herramientas para automatizar pruebas se encuentran disponibles en el mercado, la mayora automatiza slo sus aspectos ms simples: generan los datos de prueba, ingresan esos datos al sistema y reportan resultados. Definir la respuesta correcta del sistema, para un determinado conjunto de datos de entrada, es una tarea ardua, que la mayora de herramientas no puede lograr cuando el comportamiento del mismo se especifica en lenguaje natural. Debido a que la respuesta esperada del sistema se puede determinar nicamente mediante la lectura de la especificacin, los ingenieros esperan que a las pruebas automatizadas se les adicione este faltante y crtico componente (Dan & Aichernig, 2002). La gran ventaja de las herramientas, que generan pruebas con base en los mtodos formales, es que la especificacin formal describe matemticamente el comportamiento del sistema, desde la que se puede generar la respuesta a un dato de entrada en particular, es decir, la herramienta puede generar casos de prueba completos. Las tcnicas de verificacin formal dependen de especificaciones matemticamente precisas y, desde un punto de vista costo-beneficio,

13

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

generar pruebas desde la especificacin puede ser uno de los usos ms productivos de los mtodos formales. Aproximadamente la mitad del tiempo del equipo de trabajo, en un desarrollo tpico de software comercial, se invierte en esfuerzo para desarrollar pruebas, e incluso con este nivel de esfuerzo slo se eliminan los errores ms evidentes (Saiedian & Hinchey, 1996). Algunas mediciones empricas demuestran que las pruebas, generadas con herramientas automatizadas, ofrecen una cobertura tan buena o mejor que la alcanzada por las manuales, por lo que los ingenieros pueden elegir entre producir ms pruebas en el mismo tiempo, o reducir el nmero de horas necesarias para hacerlas (Gabbar, 2006). Validacin. Mientras que la verificacin se puede realizar semiautomticamente y las pruebas mecnicamente, la validacin es un problema diferente. Una diferencia especfica entre verificacin y validacin es que la primera responde a si se est construyendo el producto correctamente, y la segunda a si "se est construyendo el producto correcto" (Dasso & Funes, 2007). En otras palabras, la verificacin es el conjunto de actividades que aseguran que el software implementa correctamente una funcin especfica, y la validacin es un conjunto de actividades diferentes que aseguran que el software construido corresponde con los requisitos del cliente (Amman & Offutt, 2008). Desde el conjunto de requisitos es posible verificar, formal o informalmente, si el sistema los implementa; sin embargo, la validacin es necesariamente un proceso informal. Slo el juicio humano puede determinar si el sistema que se especific y desarroll es el adecuado para el trabajo. A pesar de la necesidad de utilizar este juicio en el proceso de validacin, los mtodos formales tienen su lugar, especialmente en grandes y complejas aplicaciones, como en modelado y simulacin. Una de sus aplicaciones ms prometedoras es en el modelado de requisitos, ya que, al disearlos formalmente, el teorema provisto en la herramienta de prueba se puede utilizar para explorar sus propiedades, y a menudo detectar los conflictos entre ellos. Este mtodo no sustituye al juicio humano, pero puede ayudar a determinar si se especific el "sistema correcto", por lo que es ms fcil determinar si las propiedades deseadas se mantienen (Flynn & Hamlet, 2006). Una diferencia significativa entre validar sistemas de modelado y simulacin, y los de control o clculo, es que los primeros tienen dos tipos de requisitos de validacin: deben modelar y predecir el comportamiento de alguna entidad del mundo real, problema que se conoce como "validacin

14

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

operacional", y deben "validar el modelo conceptual", para asegurar que la hiptesis en la que se sustenta es correcta, y que su lgica y estructura son adecuadas para el modelo que se propone (Sargent, 1999). Debido a que el modelo conceptual describe lo que debe representar la simulacin, es necesario incluir supuestos acerca del sistema, su entorno, las ecuaciones, los algoritmos, los datos, y de las relaciones entre las entidades del modelo. Aunque los algoritmos y las ecuaciones son declaraciones necesariamente formales, los supuestos y las relaciones se describen normalmente en lenguaje natural, lo que introduce potenciales ambigedades e incomprensiones entre ingenieros y usuarios. Una tendencia relativamente reciente en los mtodos formales, conocida como "mtodos formales ligeros" (Jackson, 2001), demuestra tener potencial para detectar errores importantes en la declaracin de requisitos, sin el costo de una verificacin diseada formalmente. La premisa bsica de este enfoque es el uso de tcnicas formales en el anlisis de los supuestos, las relaciones y las propiedades de los requisitos, indicadas en su declaracin o en el modelo conceptual. Se puede aplicar a especificaciones parciales o a un segmento de la especificacin completa, proceso que se realiza en tres fases: 1) reafirmar los requisitos y el modelo conceptual en una notacin formal -o semiformal-, tpicamente en una tabla de descripcin de estados; 2) identificar y corregir las ambigedades, conflictos e inconsistencias; y 3) utilizar un verificador de modelos o un probador de teoremas para estudiar el comportamiento del sistema, demostrar sus propiedades y graficar su comportamiento. Los ingenieros y usuarios pueden utilizar estos resultados para mejorar el modelo conceptual (Davis, 2005). Un aspecto particularmente interesante de este enfoque es que se ha utilizado para modelar y analizar el comportamiento del software, del hardware y de las acciones humanas en los sistemas (Mazzola et al, 2006). Agerholm y Larsen (1997) describen su aplicacin en un sistema de actividad extra-vehicular de la NASA; y Lutz (1997) describe la validacin de requisitos de los monitores de errores a bordo de una nave espacial. Un detalle importante de este proyecto es que los ingenieros utilizaron el modelo de requisitos para un segundo proyecto, que se desarroll a partir del primero, como una construccin en serie. Janssen et al (1999) describen la aplicacin de un verificador de modelos para analizar procesos de negocios automatizados, como el procesamiento de reclamaciones de seguros.

5. El futuro de los mtodos formales 15

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

La industria del software tiene una larga y bien ganada reputacin de no cumplir sus promesas y, a pesar de ms de 60 aos de progreso, tiene aos -incluso dcadas- por debajo de la madurez necesaria que requiere para satisfacer las necesidades de la naciente Sociedad del Conocimiento. Goguen (1997) cita algunas estimaciones de los gastos que generan los fracasos del desarrollo de software, los calcul en 81 mil millones de dlares para 1995 y en 100 mil millones para 1996; posteriormente (1999), llamaba la atencin sobre la cancelacin del contrato de 8 mil millones de dlares a The International Business Machines -IBM- por la FAA -The Federal Aviation Administration-, para el diseo de un sistema de control areo para toda la nacin; y del contrato del DOD -United States Department of Defense-, a la misma IBM, por $2 mil millones para modernizar su sistema de informacin; del fallo del software para la entrega en tiempo real de datos en las Olimpiadas de 1996; y del ao y medio de retraso en el sistema para el manejo automatizado de equipaje en el aeropuerto de Denver para United Airlines, con un costo de $1,1 millones diarios. En su libro, Neumann (1994) revela que estos problemas no son en absoluto nuevos, aunque parece que se incrementan; incluso seala que algunos de ellos ya provocaron muertes de personas, por ejemplo la sobredosis de radiacin en un sistema de terapia a mediados de los 80 (Gowen & Yap, 1991). Es claro que an no es posible, con la tecnologa actual, asegurar el xito de los proyectos de software, y que para proyectos grandes y complejos el enfoque ad hoc ha demostrado ser insuficiente. La falta de formalizacin en los puntos clave de la Ingeniera de Software la hace sensible a problemas que son inevitables en actividades altamente tcnicas y detalladas como la creacin de software. Las buenas prcticas en Ingeniera deben aplicarse en todo el proceso del desarrollo de sistemas, pero, aunque el desarrollo tecnolgico aporta mucho material para alcanzarlo, todava no se logra este objetivo. Incrementar la precisin y el control riguroso es esencial, y es el principal objetivo de los mtodos formales, que utilizan esencialmente formalismos lgicos buscando mejorar el software y el hardware, en reas como confiabilidad, seguridad, productividad y reutilizacin. Los ejes principales de su accionar son la verificacin del cdigo y el diseo, as como la generacin de programas y casos de prueba desde las especificaciones. Los mtodos formales deberan estar presentes como principios esenciales de las tcnicas de prueba. Gaudel (1995) lo estableci como un tema importante de investigacin; Hoare (2002a) describi el uso de aserciones

16

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

formales no para probar el programa, sino para disear las pruebas; y Hierons et al. (2008) desarrollaron una investigacin en aspectos formales de las pruebas. Los mtodos formales se utilizan en el mantenimiento del software (Younger et al., 1996) y en su evolucin (Ward & Bennett, 1995), y tal vez su ms amplia aplicacin sea en el mantenimiento de cdigo heredado (Hoare, 2002b). Los mtodos formales son un rea de investigacin muy activa, y se espera que cada da se incrementen las colaboraciones. Existen varias revistas especializadas, como Formal Aspects of Computing y Formal Methods in System Design, que hacen hincapi en sus aplicaciones prcticas, as como en la teora. Conferencias como la NASA Formal Methods Symposium y la Computer-Aided Verification estn dedicadas al tema y tienen procesos de seleccin de aportes muy competitivos. Otras conferencias importantes son Principles of Programming Languages, Logic in Computer Science, y Conference on Automated Deduction. Existen talleres y conferencias especializadas ms pequeas, algunas enfocadas en herramientas y tcnicas, como la ABZ, que cubre las notaciones Alloy, ASM, B y Z, y talleres de refinamiento. Unas debaten cuestiones tericas especficas, como Integrated Formal Methods, y otras cubren reas de aplicacin, como Formal Methods for Open Object-based Distributed Systems y Formal Methods for Human-Computer Interaction. The Computer Science Bibliography (www.informatik.uni-trier.de/~ley/db/, enero 2010) contiene referencias a ms de un milln de artculos, indexados por metadatos, entre los que existen gran cantidad acerca de los mtodos formales, especificacin, verificacin y validacin, muchos de edicin reciente, lo que presupone que para esta rea la produccin est en incremento. Se estima que en EE.UU. existen por lo menos 1.000 investigadores en verificacin, cerca de 300 profesores y 200 estudiantes graduados de pregrado, y alrededor de 250 investigadores en la industria Microsoft, Intel, Cisco, IBM, Cadence, Synopsys, Mentor Graphics-, y 50 en el gobierno NASA, NSA, NRL (Woodcock et al, 2009). The UK Engineering and Physical Science Research Council desarrolla por lo menos 400 proyectos de investigacin en Ingeniera de Software, y The Fundamentals of Computing dedica US $144 millones a patrocinios. Adems, se estima que en Europa existen ms de 1.000 investigadores, en China 250, en los pases bajos 500, en Australia, Brasil, Canad, Nueva Zelanda y frica, unos 1.000. Se espera que una pesquisa futura -por lo menos en 10 aos-, y de acuerdo con las proyecciones aqu mostradas, demuestre un notable incremento en

17

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

investigacin, desarrollo y aplicacin; y entonces ser posible una mayor aceptacin en la industria, mayor participacin de las facultades de Ingeniera y la academia en general, y ms trabajo prctico y experimental alrededor de los mtodos formales. Con esto se podr concretar el apoyo decidido a la visin de Hoare (2003, 2007) de un mundo en el que los productos software siempre sern fiables, y que la labor de los ingenieros de software sea realmente Ingeniera.

6. Conclusiones
Los mtodos formales son tcnicas matemticas, a menudo soportadas por herramientas, para el desarrollo de sistemas software y hardware. Su rigor matemtico le permite a los ingenieros analizar y verificar sus modelos en cualquier parte del ciclo de vida del desarrollo; y dado que la fase ms importante en estos procesos es la Ingeniera de Requisitos, son tiles para elicitarlos, articularlos, representarlos y especificarlos (George & Vaughn, 2003). Sus herramientas proporcionan el soporte automatizado necesario para la integridad, trazabilidad, verificabilidad, reutilizacin, y para apoyar la evolucin de los requisitos, los puntos de vista diversos y la gestin de las inconsistencias (Ghose, 2000). Los mtodos formales se utilizan en la especificacin de software, y se emplean para desarrollar una declaracin precisa de lo que el software tiene que hacer, evitando al mismo tiempo las restricciones del cmo se quiere lograr. La especificacin es un contrato tcnico entre el ingeniero y el cliente, que proporciona un entendimiento comn de la finalidad del software; el cliente la utiliza para orientar la aplicacin del software, y el ingeniero para guiar su construccin. Una especificacin compleja se puede descomponer en sub-especificaciones, que describen un subcomponente del sistema que se pueden delegar a otros ingenieros diseo por contrato- (Meyer & Mandrioli, 1992). Los sistemas de software complejos requieren una cuidadosa organizacin de la estructura arquitectnica de sus componentes, un modelo del sistema que suprima detalles de la implementacin, y que permita al arquitecto concentrarse en los anlisis y decisiones ms importantes para estructurar el sistema y satisfacer sus requisitos (Allen & Garlan, 1992), (Lamsweerde, 2003). Darwin (Magee & Kramer, 1996) y Wright (Allen, 1997) son ejemplos de lenguajes de descripcin arquitectnica basados en la formalizacin del comportamiento abstracto de los componentes y conectores arquitectnicos.

18

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Los mtodos formales se utilizan en el diseo de software, donde el refinamiento de datos incluye la especificacin de mquinas de estado, funciones de abstraccin y pruebas de simulacin (Hoare, 1975); cumplen un rol protagnico en mtodos como VDM y Z, y en el clculo de refinamiento de programas (Dijkstra, 1975). En la fase de implementacin, los mtodos formales se utilizan para verificar el cdigo, ya que toda especificacin tiene explcito un teorema de correctitud con el que, si se cumplen ciertas condiciones, el programa deber conseguir el resultado descrito en la documentacin. La verificacin del cdigo es un intento por demostrar este teorema, o al menos de encontrar por qu falla. El mtodo de verificacin por asercin inductiva de programas fue desarrollado por Floyd (1967) y Hoare (1969), y consiste en anotar el programa con aserciones matemticas, o sea las relaciones entre las variables y los valores iniciales de entrada. Ms de cuatro dcadas de investigacin y experimentacin demostraron que los mtodos formales son, hasta el momento, el nico medio prctico para exponer la ausencia de comportamientos no deseados en los programas, una propiedad esencial en los sistemas crticos. Los modelos para probar calidad industrial, y los probadores de teoremas avanzados permiten, de forma automtica o semiautomtica, hacer anlisis complejos de las especificaciones formales, por lo que estas herramientas son atractivas para uso comercial. La capacidad para generar casos de prueba completos desde la especificacin formal, representa un ahorro sustancial a pesar del costo de su desarrollo. La experiencia demuestra que las tcnicas formales se pueden aplicar productivamente, incluso en las pruebas ms completas. El proceso para desarrollar una especificacin es la fase ms importante de la verificacin formal, y el enfoque de los "mtodos formales ligeros" permite analizar formalmente las especificaciones parciales, y la definicin temprana de requisitos.

7. Lista de referencias
Agerholm, S. & Larsen P. G. (1997). Modeling & Validating SAFER in VDMSL. The Fourth NASA Langley Formal Methods Workshop. Hampton, Virginia, USA, 65-73.

19

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Allen, R. B. & Garlan D. (1992). A formal approach to software architectures. The IFIP 12th World Computer Congress on Algorithms, Software, & Architecture. Madrid, Spain, 1, 134-141. Allen, R. B. (1997). A formal approach to software architecture. Ph.D. thesis, School of Computer Science, Carnegie Mellon University. Issued as CMU Technical Report CMU-CS-97-144. Amman, P. & Offutt J. (2008). Introduction to software testing. UK: Cambridge University Press. Anderson, R. J., Beame P., Burns S., Chan W., Notkin D. & Reese J. D. (1998). Model checking large software specifications. IEEE Transactions on Software Engineering, 24 (7), 498-520. Bause, F. & Kritzinger P. S. (2002). Stochastic Petri Nets. London: Friedrich Vieweg & Sohn Verlag. Bolstad, M. (2004). Design by Contract: A simple technique for improving the quality of software. The 2004 Users Group Conference. Williamsburg, Virginia, USA, 319-323. Clarke, E. M. & Wing J. (1996). Formal Methods: State of the Art and Future Directions. Special ACM 50th-anniversary issue: strategic directions in computing research, 626-643. Dan, L. & Aichernig B. K. (2002). Automatic Test Case Generation for RAISE. Report 273, UNU-IIST -United Nations University, International Institute for Software Technology. Macau, China. Dasso, A. & Funes A. (2007). Verification, validation and testing in software engineering. USA: Idea Group Publishing. Davis, J. F. (2005). The Affordable Application of Formal Methods to Software Engineering. ACM SIGAda Ada Letters, 25 (4), 57-62. Desel, J. & Esparza J. (2005). Free Choice Petri Nets - Cambridge Tracts in Theoretical Computer Science. Cambridge: Cambridge University Press.

20

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Dijkstra, E. W. (1975). Guarded commands, nondeterminacy and formal derivation of programs. Communications of the ACM, 18 (8), 453-457. Dijkstra, E. W. (1976). A discipline of programming. New York: PrenticeHall. Dijkstra, E. W. (1989). On the cruelty of really teaching computing science. Communications of the ACM, 32 (12) 1398-1404. Drechsler, R. Ed. (2004). Advanced formal verification. USA: Kluwer Academic Publishers. Duffy, D. (1991). Principles of Automated Theorem Proving. New York: John Wiley & Sons. Ehrig, H. & Mahr B. (1990). Fundamental of Algebraic Specification II: Specifications and constraints. Berlin: Springer-Verlag. Felleisen, M., Findler R. B., Flatt M. & Krishnamurthi S. (2001). How to design programas: An Introduction to Programming and Computing. USA: The MIT Press. Floyd, R. (1967). Assigning meanings to programs. Proceedings of Symposium in Applied Mathematics. Providence, Rhode Island, USA, 19-32. Flynn, S. & Hamlet D. (2006). On formal specification of software components and systems. Electronic Notes in Theoretical Computer Science, 161, 91-107. Gabbar, H. A. (ed). (2006). Modern Formal Methods and Applications. Netherlands: Springer. Garca, J., Amescua A. & Velasco M. (2006). TOP 10 de factores que obstaculizan la mejora de los procesos de verificacin y validacin en organizaciones intensivas en software. Revista Espaola de Innovacin, Calidad e Ingeniera del Software, 2 (2), 18-28. Gaudel, M. C. (1995). Testing can be formal, too. The 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development, Aarhus, Denmark, 82-96.

21

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

George, V. & Vaughn R. (2003). Application of lightweight formal methods in requirement engineering. Crosstalk: The Journal of Defense Software Engineering, 16 (1), 30-38. Ghose, A. (2000). Formal methods for requirements engineering. International Symposium on Multimedia Software Engineering, Taipei, Taiwan, 13-16. Gdel, K. (1934). On undecidable propositions of formal mathematical systems. Princeton lectures, Collected works I, 346-369. Goguen, J. A. (1997). Formal methods: promises and problems. IEEE Software, 14 (1), 73-85. Goguen, J. A. (1999). Hidden algebra for software Combinatorics, Computation and Logic, 21 (3), 35-59. engineering.

Gowen, L. D. & Yap M. Y. (1991). Traditional software development's effects on safety. The Sixth Annual IEEE Symposium, Amsterdam, Netherlands, 58-63. Hayes, I. J., Jones C. B. & Nicholls J. E. (1994). Understanding the Differences between VDM and Z. ACM SIGSOFT Software Engineering Notes, 19 (3), 75-81. Hehner, Eric C. (2006). A practical theory of programming. New York: Springer-Verlag Publishers. Hierons, R. M., Bowen, J. P. & Harman, M., Eds. (2008). Formal Methods and Testing An Outcome of the FORTEST Network. Revised Selected Papers. Berlin: Springer. Hoare, C. A. R. (1969). An axiomatic basis for computer programming. Communications of the ACM, 12 (10), 576-580. Hoare, C. A. R. (1975). Proof of correctness of data representations. Lecture Notes In Computer Science, 46, 183-193. Hoare, C. A .R. (2002a). Assert early and assert often: Practical hints on effective asserting. Presentation at Microsoft TechFest 2002. Redmond, Washington, USA.

22

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Hoare, C. A. R. (2002b). Assertions in modern software engineering practice. The 26th International Computer Software and Applications Conference on Prolonging Software Life: Development and Redevelopment, Oxford, UK, 459-462. Hoare, C. A. R. (2003). The verifying compiler: A grand challenge for computing research. Journal of the ACM, 50 (1), 63-69. Hoare, C. A. R. (2007). The ideal of program correctness: Third Computer Journal Lecture. Computer Journal, 50 (3), 254-260. Jackson, D. (2001). Lightweight Formal Methods. Formal Methods for Increasing Software Productivity, Berlin, Germany, 1-18. Janssen, W., Mateescu R., Mauw S., Fennema P. & Stappen P. (1999). Model Checking for Managers. The 5th-6th International SPIN Workshops on Theoretical and Practical Aspects of SPIN Model Checking, Toulouse, France, 92107. Jones, C. B. (1990). Systematic software development using VDM. New York: Prentice-Hall. Jones, C., OHearn P. & Woodcock J. (2006). Verified software: A Grand Challenge. Computer, 39 (4), 93-95. Juhs, G., Lehocki F. & Lorenz R. (2007). Semantics of Petri nets: a comparison. The 39th conference on Winter simulation, Washington, USA, 617-628. Kiniry, J. R. & Zimmerman D. M. (2008). Secret Ninja formal methods. The 15th international symposium on Formal Methods, Turku, Finland, 214228. Kuhn, D. R., Chandramouli T. & Butler R. W. (2002). Cost effective use of formal methods in verification and validation. Foundations '02, a Workshop on Modeling and Simulation Verification and Validation for the 21st Century, Laurel, Maryland, USA, 106-144. Lamsweerde, A. van. (2003). From system goals to software architecture. Lecture Notes in Computer Science, 2804, 25-43.

23

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Langari, Z. & Pidduck A. B. (2005). Quality, cleanroom and formal methods. The third workshop on Software quality, St. Louis, Missouri, USA, 1-5. Lewis, H. L. & Papadimitriou C. H. (1997). Elements of the Theory of Computation. New York: Prentice Hall International. Liu, Z. & Venkatesh R. (2005). Methods and tools for formal software engineering. Verified Software: Theories, Tools, Experiments. First IFIP TC 2/WG 2.3 Conference, Zurich, Switzerland, 31-41. Lutz, R. R. & Ampo Y. (1994). Experience report: Using formal methods for requirements analysis of critical spacecraft software. The 19th Annual Software Engineering Workshop, Greenbelt, Maryland, USA, 231-236. Lutz, R. R. (1997). Reuse of a Formal Model for Requirements Validation. The Fourth NASA Langley Formal Methods Workshop, Hampton, Virginia, USA, 75-85. Magee, J. & Kramer J. (1996). Dynamic Structure in Software Architectures. ACM SIGSOFT Software Engineering Notes, 21 (6), 314. Manna, Z. & Waldinger R. (1985). The Logical Basis for Computer Programming, Volume I: Deductive Reasoning. London: Addison-Wesley Professional. Manna, Z., & Pnueli A. (1992). The Temporal Logic of Reactive and Concurrent Systems: Specification. New York: Springer-Verlag. Mazzola, G. B., Milmeister G. & Weissmann J. (2006). Comprehensive Mathematics for Computer Scientists 1: Sets and Numbers, Graphs and Algebra, Logic and Machines, Linear Geometry. Berlin: Springer. McDermid, J. A., Nicholson M., Pumfrey D. J. & Fenelon P. (1995). Experience with the Application of HAZOP to Computer-Based Systems. The 10th Annual Conference on Computer Assurance, Gaithersburg, Maryland, 37-48. Mendelson, E. (1997). Introduction to Mathematical Logic. UK: Chapman & Hall/CRC.

24

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Meyer, B. & Mandrioli D. Eds. (1992). Advances in Object-Oriented Software Engineering. New York: Prentice Hall. Milner, R. (1990). Operational and algebraic semantics of concurrent processes. Handbook of theoretical computer science, Volume B: Formal models and semantics, 1201-1242. Monin, J-F. (2003). Understanding formal methods. New York: Springer. Murata, T. (1989). Petri nets: Properties, analysis and applications. Proceedings of the IEEE, 77 (4), 541-580. NASA Office of Safety and Mission Assurance. (1995). Formal Methods Specification and Verification. Guidebook for Software and Computer Systems. Volume I: Planning and Technology Insertion. Washington, NASAGB-002-95. Neumann, P. G. (1994). Computer Related Risks. New York: Addison-Wesley Professional. Perry, W. E. (2006). Effective methods for software testing. Indianapolis: Wiley Publishing, Inc. Pressman, R. S. (2004). Software Engineering: A Practitioner's Approach. New York: McGraw-Hill Science. Reising, W. (1991). Petri nets and algebraic specifications. Theoretical Computer Science, 80 (1), 1-34. Rushby, J. (1993). Formal Methods and Digital Systems Validation for Airborne Systems. SRI-CSL-93-07. Technical Report: cr4551. NASA Langley Technical Report Server. Saiedian, H. & Hinchey M. G. (1996). Challenges in the successful transfer of formal methods technology into industrial applications. Information and Software Technology, 38 (5), 313-322. Sargent, R. G. (1999). Validation and Verification of Simulation Models. The 31st conference on Winter simulation: Simulation a bridge to the future. Phoenix, Arizona, USA, 39-48.

25

Revista Virtual Universidad Catlica del Norte. No. 30, (mayo - septiembre de 2010, Colombia), acceso: [http://revistavirtual.ucn.edu.co/], ISSN 0124-5821 - Indexada Publindex-Colciencias, Latindex, EBSCO Information Services y Actualidad Iberoamericana

Sobel, K. A. E. & Clarkson R. M. (2002). Formal methods application: An empirical tale of software development. IEEE Transactions on software engineering, 28 (3), 308-320. Spivey, J. M. (1992). The Z Notation: A reference manual. New York: Prentice-Hall. Ward, M. P. & Bennett K. H. (1995). Formal methods to aid the evolution of software. International Journal of Software Engineering and Knowledge Engineerin, 5, 25-47. Wirsing, M. (1991). Algebraic Specification. Handbook of Theoretical Computer Science, Formal Models and Semantics, 675-788. Woodcock, J. J., Larsen P. G., Bicarregui J. & Fitzgerald J. (2009). Formal Methods: Practice and Experience. ACM Computing Surveys. 41 (4), Article No. 19. Wunram, J. (1990). A Strategy for Identification and Development of Safety Critical Software Embedded in Complex Space Systems. The 41st International Astronautical Congress, Dresden, Germany, 35-51. Younger, E. J., Luo Z., Bennett K. H. & Bull T. M. (1996). Reverse engineering concurrent programs using formal modelling and analysis. International Conference on Software Maintenance, Monterey, California, 255-264. Zeugmann, T. & Zilles S. (2008). Learning recursive functions: A survey. Theoretical Computer Science, 397 (1-3), 4-56. Zhang, Z., Basili V., & Shneiderman B. (1999). Perspective-based Usability Inspection: An Empirical Validation of Efficacy. Empirical Software Engineering, 4 (1), 43-69.

26

También podría gustarte