You are on page 1of 13

Universidad Nacional de Trujillo

Facultad de CC.FF.MM
Escuela Profesional de Informtica

ESPECIFICACIN FORMAL DE SISTEMAS

INFORME FINAL Autores: Acate Venegas Karen Chico Moscol Karina Julca Sanchez Marco Mendez Angulo Geiner Principe Orbegozo Luis Rojas Costilla Ricardo Profesora: Cruz Florian Iris

Trujillo, Per 2013

INTRODUCCIN Cada uno de los sistemas informticos conforme pasan las dcadas se han vuelto cada vez ms potentes y, como resultado, se han vuelto ms impactantes para la sociedad. Debido a esto, se necesitan mejores tcnicas para asistir en el diseo e implementacin de software fiable. Disciplinas de ingeniera establecidos utilizan el anlisis matemtico como fundamento de la creacin y validacin de diseo de producto. Las especificaciones formales son una de las maneras de lograr esto en la ingeniera del software. Aunque tiles, los mtodos formales en realidad no tienen el control como el estndar para la fiabilidad del software como una vez predijo. Otros mtodos, como las pruebas son ms comnmente usados para mejorar la calidad del cdigo. Prueba encuentra errores en la aplicacin. Lo mejor es encontrar estos lo antes posible, ya que cuanto ms largo en un proyecto de un error se encuentra, ms costoso que es para arreglar. La idea con las especificaciones formales es reducir al mnimo la creacin de dichos errores. Esto se hace mediante la reduccin de la ambigedad de los requisitos del sistema informales. Al crear una especificacin formal de los diseadores se ven obligados a hacer un anlisis detallado del sistema al principio del proyecto. Dicho anlisis generalmente revelar errores o inconsistencias que existen en los requisitos del sistema informales. Como resultado se reduce la posibilidad de errores sutiles que se introducen y no sea detectada en los sistemas de software complejos. Encontrar y corregir este tipo de errores al principio de la etapa de diseo le ayudar a evitar costosas reparaciones que puedan surgir en el futuro. Pruebas de control de calidad y contribuyen a ms de 50% del coste total de desarrollo de algunos proyectos; mediante el uso de las especificaciones formales de prueba determinados procesos pueden ser automatizados que conduce a pruebas de costoefectiva una mejor y ms. Una especificacin formal usa notacin matemtica para describir de manera precisa las propiedades que un sistema de informacin debe tener, sin preocuparse por la forma de obtener dichas propiedades. Describe lo que el sistema debe hacer sin decir cmo se va a hacer. Esta abstraccin hace que las especificaciones formales sean tiles en el proceso de desarrollar un sistema, porque permiten responder preguntas acerca de lo que el sistema hace con confianza, sin la necesidad de tratar con una gran cantidad de informacin no relevante que se encuentra en el cdigo de programa del sistema en un lenguaje de programacin cualquiera, o especular sobre el significado de frases en un impreciso Pseudocdigo. Un especificacin formal pueden servir como un punto de referencia fiable tanto para quienes se dedican a investigar sobre los requerimientos del cliente que solicita el sistema, como para aquellos que desarrollan los programas para satisfacer esos requerimientos, y

tambin para los que redactan manuales de instrucciones para el sistema. Debido a que es independiente del cdigo del programa, las especificaciones formales de un sistema pueden ser elaboradas a principios de su desarrollo; y puede ser un medio valioso para promover un entendimiento comn entre todos los interesados en el sistema.

I. Especificacin Formal La especificacin formal es un rea de investigacin cuyo propsito es el desarrollo de tcnicas, lenguajes y herramientas (basadas en lgicas clsicas y no clsicas, lgebras o clculos) para alcanzar una de las principales metas de la ingeniera de software: permitir la construccin de sistemas que operen confiablemente a pesar de su complejidad. An cuando la aplicacin de mtodos formales no garantiza la correctitud a priori de un sistema, facilita considerablemente el anlisis de las propiedades del sistema, mostrando posibles inconsistencias, ambigedades o incompletitudes que de otra forma pasaran desapercibidas El desarrollo de mtodos formales se concreta en la creacin de herramientas (FT) las cuales podemos caracterizar rugosamente de la siguiente manera: FT Lenguaje Formal (LF) + Inferencia mecnica (IM)

El lenguaje formal se fundamenta ya sea en alguna lgica, clculo o en un lgebra, con una sintaxis y semntica determinadas. El lenguaje permite expresar propiedades de un dominio matemtico (DM) de manera clara y no ambigua. La amplitud del dominio DM establece la capacidad expresiva del lenguaje. Un LF puede estar completamente basado en la lgica, lgebra o clculo que lo sustenta o tratarse de un fragmento sintctico (un subconjunto preferencial) dentro del cual se puedan expresar propiedades tiles. La parte de inferencia mecnica se refiere al sustento operacional, generalmente en trminos de la teora de pruebas para una lgica, u operaciones de reduccin en un lgebra. Se pretende que las propiedades fundamentales de un sistema que estn siendo modeladas por el LF puedan ser demostradas: la construccin de pruebas formales constituye el vehculo principal para reflejar las propiedades del sistema que est siendo modelado, identificando posibles errores de diseo, inconsistencias, etc. Y ms an, la construccin de pruebas se vuelve trascendente cuando permite definir paradigmas abstractos de cmputo: cmputo como reduccin de pruebas y cmputo como bsqueda de pruebas. En particular, para cuando el LF est fundamentado en una lgica, su IM se basa en un demostrador automtico de teoremas que puede o no estar apoyado por un constructor de modelos.

Bajo ste punto de vista, una Especificacin Formal no es ms que una teora construida sobre el LF y cuyas propiedades son sustentadas mediante pruebas formales (fig. 1).

Resulta interesante observar que, en general, para un mismo LF se puedan ofrecer varios IM, inclusive que distintos LF (independientemente fundamentados en lgicas, clculos o lgebras) puedan ser expresivamente equivalentes (atiendan el mismo DM). Se hace patente, por lo tanto considerar un nivel de abstraccin superior: poder analizar las propiedades de los LF y de sus IM para identificar equivalencias o correspondencias entre distintos LF (ya sea basados en lgicas, clculos o lgebras). Para ello, se debe contar con un metalenguaje que permita expresar a los LF y los IM con la mayor generalidad posible: se considera que ese metalenguaje es la Teora de Categoras (TC). No obstante, esa generalidad que ofrece la TC conduce tambin a establecer consideraciones pragmticas, computacionalmente hablando. Aun cuando la TC es considerada como demasiado abstracta en el sentido que las estructuras matemticas son analizadas en tal nivel de generalidad que la realizacin de cmputos sean posibles o deseables, se tienen antecedentes en su aplicacin pragmtica para la solucin de problemas. En el campo de las aplicaciones, la emergente tecnologa de Agentes computacionales encuentra sitio en prcticamente todo mbito: desde sistemas operativos distribuidos, lenguajes de programacin, dispositivos de hardware, etc. hasta aplicaciones de Inteligencia Artificial, como asistentes personales (interaccin humano computadora), comercio electrnico, etc. Las necesidades para asegurar interaccin confiable en tales sistemas deben ser satisfechas, por lo que el desarrollo de Mtodos Formales encuentra un campo frtil para proponer y desarrollar soluciones a la amplia gama de retos existentes en los sistemas MultiAgente (MAS). Tradicionalmente, el uso de mtodos formales se toma como una fase separada entre la formulacin de anlisis y diseo y la implantacin y verificacin del sistema (fig 2 (a)). Sin embargo, gracias a los modelos de cmputo abstracto que semnticamente pueden sustentarse, es posible que la aplicacin de los MF se establezca como una correspondencia partiendo del anlisis y conduciendo a la implantacin automtica y

confiable, refinando crecientemente e interactivamente el diseo conforme las necesidades as lo requieran (fig. 2 (b)) o en otras palabras, producir especificaciones eficientemente ejecutables. Es de especial mencin los avances en cuanto a la generacin semntica de compiladores y mquinas abstractas.

II. Especificacin Formal en el Proceso del Software El desarrollo de sistemas crticos normalmente implica un proceso de software que utiliza un plan basado en el modelo de ciclo de desarrollo en cascada. Tanto los requerimientos del sistema como el diseo se expresan con detalle y son analizados cuidadosamente antes de que comience la implementacin. Si se desarrolla una especificacin formal del software, este normalmente tiene lugar despus de que se hayan especificado los requerimientos del sistema, pero antes del diseo detallado de dicho sistema. Uno de los beneficios de la especificacin formal es la capacidad para descubrir problemas y ambigedades en los requerimientos del sistema. En etapas tempranas del proceso, la especificacin debera ser <<orientada al cliente>>. Debera redactarse la especificacin para que el cliente la pueda comprender, sin embargo, la etapa final del proceso, que es la construccin de una especificacin completa, est orientada principalmente al contratante del software. Este especifica los detalles de la implementacin del sistema. Puede utilizarse un lenguaje formal en esta etapa para evitar la ambigedad en la especificacin del software.

Figura 3: Especificacin y diseo

Figura 4: Especificacin formal en el Proceso del Software

A medida que se desarrolla la especificacin con detalle, se incrementa el conocimiento sobre dicha especificacin. La creacin de una especificacin formal obliga a realizar a realizar un anlisis detallado del sistema que normalmente revela errores e incongruencias en la especificacin informal de requerimientos. Esta deteccin de errores es probablemente el argumento ms potente para desarrollar una especificacin formal. La especificacin formal ayuda a descubrir problemas de los requerimientos que pueden ser muy caros de corregir ms tarde. El desarrollo y anlisis de una especificacin formal desplaza las cargas de los costes de desarrollo hacia las primeras etapas del mismo. La siguiente figura muestra como los costes del proceso del software es probable que se vean afectados por el uso de una especificacin formal.

Figura 5: Costo del Desarrollo del Software con Especificacin Formal

Cuando se usa un proceso convencional, los costes de validacin constituyen alrededor del 50% de los costes de desarrollo, y los costes de implementacin y diseo constituyen alrededor de dos veces los costes de especificacin. Con la especificacin formal, los costes de especificacin e implementacin son comparables, y los costes de validacin del sistema se reducen de forma significativa. Asi como el desarrollo de una especificacin formal descubre problemas en los requerimientos, tambin se evita el volver a realizar el trabajo para corregir dichos problemas una vez diseado el sistema. Se han utilizado dos aproximaciones fundamentales para redactar especificaciones detalladas para sistemas de software industriales. Estas son: a) Una especificacin algebraica, en la que el sistema se describe en funcin de las operaciones y sus relaciones. b) Una aproximacin basada en modelos, en la que se construye un modelo del sistema utilizando construcciones matemticas como conjuntos y sucesiones, y las operaciones del sistema se definen indicando como estas modifican el estado del sistema. Se han desarrollado diferentes lenguajes dentro de estas dos aproximaciones para especificar sistemas secuenciales. La siguiente figura muestra ejemplos de lenguajes en cada una de estos enfoques:

Figura 6: Lenguajes de Especificacin Formal

Se pueden ver que la mayora de estos lenguajes fueron desarrollados en la dcada de los 80. Lleva varios aos refinar un lenguaje de especificacin formal, por lo que la mayor parte de la investigacin en especificacin formal se basa actualmente en estos lenguajes ms que interesarse en inventar notaciones nuevas. III. Principios de la Especificacin Formal En la revisin se encontraron los siguientes principios, producto de los procesos investigativos y de la experiencia del trabajo de los investigadores: o Nunca es formal. Primero se debe determinar qu son las propiedades de estado para poderlas precisar y formalizar, por lo que es necesario formularlas en un lenguaje que las partes interesadas puedan utilizar y comprender: el lenguaje natural. o No tiene sentido si no cuenta con una definicin informal precisa acerca de cmo interpretarla en el dominio. Una formalizacin implica trminos y predicados que pueden tener varios y diferentes significados, por lo que tendrn sentido si se definen con precisin mediante la asignacin de nombres a las funciones/predicados y a las funciones/relaciones entre los objetos del dominio. Esta asignacin debe ser precisa e informal para evitar la regresin infinita, un principio que a menudo se pasa por alto. o Es ms que un simple proceso de traduccin de lo informal a lo formal. La especificacin de un sistema complejo requiere objetos relevantes y fenmenos que se identifican, relacionan y caracterizan a travs de propiedades compartidas. La construccin del modelo y la descripcin de las propiedades estn ntimamente unidos a los componentes de cualquier proceso de especificacin. o Es difcil de desarrollar y evaluar. Esto se debe a la diversidad y sofisticacin de los errores y a la multiplicidad de opciones de modelado que se puedan tener. Como consecuencia, la especificacin formal raramente es correcta al primer instante; sin embargo, con frecuencia se seala que incluso la especificacin incorrecta puede ayudar a encontrar problemas en la formulacin original. o La razn para especificar las opciones de modelado es que es importante para su explicacin y evolucin. Una justificacin que raramente se documenta. o Los subproductos de la especificacin formal frecuentemente son ms importantes que ella misma. Porque incluyen una especificacin ms informal que obtienen de la retroalimentacin, estructuracin y anlisis de la expresin formal, y de otros productos de menor nivel. o Para que un sistema formal sea til debe tener un dominio de aplicabilidad limitado. Los tipos especficos de sistemas requieren tipos especficos de

tcnicas para expresarlos naturalmente y para analizarlos eficientemente.

IV. Ventajas A continuacin se detallan algunas de las ventajas de realizar una especificacin formal para el desarrollo de un sistema:

Se proporciona informacin detallada sobre los requisitos del software y del diseo. Las especificaciones formales pueden ser analizadas matemticamente y puede demostrarse la consistencia y completitud de la especificacin; luego es posible demostrar que la implementacin corresponde a la especificacin. Las especificaciones formales pueden ser usadas como gua para el testing en la identificacin de casos de prueba apropiados. Las especificaciones formales pueden ser procesadas usando herramientas de software, esto hace posible efectuar animaciones de la especificacin, proveyendo de esta forma un prototipo del software.

V. Limitaciones Un diseo nunca puede ser declarado "correcto" por su cuenta. Slo puede nunca ser "correcta con respecto a una especificacin dada". Si la especificacin formal describe correctamente el problema a resolver es una cuestin aparte. Tambin es un tema difcil de abordar, ya que se trata en ltima instancia, el problema de la construccin abstracta representaciones formales de un dominio de problema concreto informal y como un paso abstraccin no puede ser objeto de una prueba formal. Sin embargo, es posible validar una especificacin de demostrar teoremas "desafo" en relacin con las propiedades que se espera que la especificacin para exhibir. Si es correcta, estos teoremas refuerzan la comprensin del especificador de la especificacin y su relacin con el dominio del problema subyacente. Si no es as, la especificacin probablemente necesita ser cambiado para reflejar mejor el dominio de la comprensin de las personas involucradas con la produccin de la especificacin. Los mtodos formales de desarrollo de software no se utilizan ampliamente en la industria. La mayora de las empresas consideran que no es rentable para aplicarlos en sus procesos de desarrollo de software. Esto puede ser por una variedad de razones, algunas de las cuales son:

Tiempo

Costo de puesta en marcha de alta inicial con bajos retornos medibles

Flexibilidad
o

Una gran cantidad de compaas de software utilizan metodologas giles que se centran en la flexibilidad. Hacer una especificacin formal de todo el sistema en la delantera se percibe a menudo como lo contrario de flexible. Sin embargo, hay una cierta investigacin sobre los beneficios del uso de las especificaciones formales con el desarrollo "gil"

Complejidad
o

Requieren un alto nivel de conocimientos matemticos y la capacidad de anlisis para entender y aplicar de manera efectiva Una solucin a esto sera el desarrollo de herramientas y modelos que permiten estas tcnicas a implementar pero ocultar las matemticas subyacentes

Alcance limitado
o o

No captan propiedades de inters para todos los participantes en el proyecto Ellos no hacen un buen trabajo de especificacin de interfaces de usuario y la interaccin del usuario

No es rentable
o

Esto no es del todo cierto, al limitar su uso slo a partes esenciales de los sistemas crticos que han demostrado ser rentable

Otras limitaciones:

Aislamiento Ontologas de bajo nivel Pobre orientacin Pobre separacin de intereses Pobre retroalimentacin herramienta

VI. PARADIGMAS Tcnicas de especificacin formal han existido en diferentes mbitos y en diferentes escalas desde hace bastante tiempo. Las implementaciones de las

especificaciones formales sern diferentes dependiendo de qu tipo de sistema que estn tratando de modelar, la forma en que se aplican y en qu punto del ciclo de vida del software se han introducido. Estos tipos de modelos se pueden clasificar en los siguientes paradigmas de especificacin:

Especificacin basada en la historia


o o

historias de sistemas basados en el comportamiento afirmaciones se interpretan en el tiempo comportamiento basado en los estados del sistema serie de pasos secuenciales, idiomas como Z, VDM o B se basan en este paradigma comportamiento basado en las transiciones de un estado a otro del sistema mejor utilizado con un sistema reactivo idiomas como Statecharts, PROMELA, STEP-SPL, RSML o SCR dependen de este paradigma especificar un sistema como una estructura de funciones matemticos OBJ, ASL, PLUSS, alerce, HOL o PVS se basan en este paradigma idiomas tempranas como Paisley, GIST, redes de Petri o lgebras de procesos se basan en este paradigma

Especificacin basado en Estado


o o o

Especificacin basada en Transicin


o o o

Especificacin funcional
o o

Especificacin Operacional
o

Adems de los paradigmas anteriores, hay maneras de aplicar ciertas heursticas para ayudar a mejorar la creacin de estas especificaciones. En el documento se hace referencia aqu mejor discute heursticas a utilizar en el diseo de una especificacin. Lo hacen mediante la aplicacin de un divide y vencers.

VII.

Herramientas de software

La notacin Z es un ejemplo de un lenguaje de especificacin formal de liderazgo. Otros incluyen la Especificacin del lenguaje del Mtodo de Desarrollo de Viena y de la mquina Notacin Resumen del Mtodo -B. En el rea de servicios Web, especificacin formal se utiliza a menudo para describir las propiedades no funcionales. Algunas herramientas son:

Algebraico Alerce OBJ Loto Segn modelo Z B VDM CSP Petri Nets Modelo de Transformacin Formal

VIII.

Este modelo, propuesto por Robert Balzer en 1983, aplica una serie de transformaciones usando un soporte automatizado para convertir una especificacin formal (modelo matemtico) en un sistema implementable (ejecutable). Es decir, este paradigma intenta automatizar las etapas de diseo e implementacin utilizando el concepto de transformacin. Tambin se denomina a este paradigma Sntesis Automtica de Software. Fases:

Anlisis de requisitos Especificacin formal Transformacin Integracin del sistema final

La especificacin formal se convierte en forma sistemtica en una representacin ms detallada del sistema, matemticamente correcta. Cada paso agrega detalle hasta que la especificacin formal se convierte en un programa equivalente. Como hay muchos caminos a seguir desde la especificacin hasta el sistema final, la secuencia de transformaciones y su justificacin se reflejan en un registro formal de desarrollo. Se utilizan tcnicas de validacin del modelo matemtico, como la Simulacin. La especificacin de requisitos se refina en una especificacin formal detallada, expresada en notacin matemtica. Los procesos de diseo, implementacin y prueba de unidades se reemplaza por un proceso de transformaciones donde la especificacin formal se refina hasta llegar a un Software.

Figura 7: Proceso de Transformacin formal de Robert Balzer - "Software technology in the 1990s: using a new paradigm".

IX. Referencias Bibliograficas [1] Web Que es la Especificacin Formal [en lnea]. Mxico, 2009 [fecha de consulta: 01 de noviembre 2013]. Disponible en <http://aleteya.cs.buap.mx/gimf/espform.html> [2] WebAcademia Especificacin Formal [en lnea]. 2010 [fecha de consulta: 09 de noviembre 2013]. Disponible en <http://centrodeartigos.com/articulos-para-sabermas/article_56556.html> [3] BlogWikispaces Proceso Software: Modelo de Transformacin Formal [en lnea]. 2011 [fecha de consulta: 15 de Noviembre 2013]. Disponible en <http://procesosoftware.wikispaces.com/Modelo+de+Transformaci%C3%B3n+Formal> [4] Edgar Serna M. Especificacin Formal-Presente y Futuro [en lnea]. Colombia 2013 [fecha de consulta: 15 de noviembre 2013]. Disponible en <http://www.eserna.com/articulo12.pdf>

You might also like