metodo vdm

20
Universidad Mayor de San Andres Facultad de Ciencias Puras y Naturales Carrera de Informática Método VDM INTEGRANTES: CUSIQUISPE ANCASI JUAN PABLO 6161096 LP MARTHA ROCIO MAURICIO LLIFUTA 5969412 LP DOCENTE: LIC. GERMAN HUANCA TICONA MATERIA: ESPECIFICACIONES FORMALES Y VERIFICACION

Upload: -

Post on 01-Oct-2015

285 views

Category:

Documents


8 download

DESCRIPTION

metodo de representacion VDM

TRANSCRIPT

Universidad Mayor de San AndresFacultad de Ciencias Puras y NaturalesCarrera de Informtica

Mtodo VDM

INTEGRANTES: CUSIQUISPE ANCASI JUAN PABLO 6161096 LPMARTHA ROCIO MAURICIO LLIFUTA 5969412 LP

DOCENTE: LIC. GERMAN HUANCA TICONA

MATERIA: ESPECIFICACIONES FORMALES Y VERIFICACION

GESTION II - 2014

1.- IntroduccinEl desarrollo del mtodo VDM se inici en 1970 en el laboratorio de IBM en Viena. Un grupo formado por Heinz Zemanek estaba trabajando en la definicin de un diseo del lenguaje formal y en el proyecto de compiladores. Ideas para crear un enfoque de la semntica operacional capaces de definir el conjunto de PL/I, incluyendo las caractersticas del lenguaje paralelas fueron construidos. Para ello, se utiliz un idioma de destino llamado lenguaje de definicin de Viena (VDL). El enfoque fue muy exitosa, pero se observ que la semntica operacional podra causar complicaciones para el razonamiento formal. Entonces, surgi un nuevo enfoque, llamado semntica denotativa en 1972. Un compilador de PL/I fue diseado usando ese metalenguaje, llamado Meta-IV, de la que surgi el VDM. A partir de ah, el VDM se expandi, pero se centr en dos reas principales. Una de ellas en Lyngby, Dinamarca, con el profesor Dines Bjorner, uno de los precursores de VDM y el otro en Manchester, Inglaterra, con el profesor de Cliff B. Jones.La semntica formal es una de las reas de estudio de la ciencia de la computacin, preocupada en atribuir significado a las construcciones de los lenguajes de programacin.Semntica operacional es un enfoque para la semntica formal, donde el significado de una construccin del lenguaje que se especifica por la computacin cuando se ejecuta en una mquina hipottica. La semntica operacional est ms preocupado sobre cmo se ejecutan los programas que simplemente los resultados de estos clculos.Semntica denotacional asigna un enfoque de la semntica formal. En este enfoque, los significados son modelados por objetos matemticos a menudo funciones semnticas de composicin definidos, que representan el efecto de funcionamiento de una estructura.El trmino VDM se utiliza como un trmino genrico. Varios dialectos surgieron debido a la diversificacin de la investigacin llevada a cabo en la zona. Diferentes dialectos surgieron principalmente por las diferentes reas de aplicacin que podran abarcar VDM. Esta diversidad de dialectos, sin embargo, difcil de introducir el mtodo en la industria.En 1986, fue iniciado, entonces, un trabajo para establecer una versin estandarizada de VDM-SL. Este primer estndar fue iniciado por BSI, que estableci un grupo cuya participacin fue abierta tambin para miembros de otras organizaciones.En 1991, la necesidad de normalizacin tambin ha sido reconocido por la ISO / IEC JTC1 con la formacin de un grupo de trabajo, el SC22 / WG19, para tal tarea. La norma ISO fue lanzado en 1996.Meta-IV se utiliza para definir las porciones grandes del lenguaje de programacin PL / I. Otros lenguajes de programacin descritas, o parcialmente descritas utilizan el Meta-IV y VDM-SL y BASIC, FORTRAN, APL, Algol-60, PASCAL y ADA.2.- Marco TericoVDM significa "Mtodo de Desarrollo de Viena", es una coleccin de tcnicas para la especificacin formal y el desarrollo de sistemas informticos. Consiste en un lenguaje de especificacin llamada VDM-SL; normas para los datos y las operaciones de refinacin para establecer vnculos entre las especificaciones que requieren abstraccin y especificaciones de diseo detalladas a nivel de cdigo; y un mtodo terico de la prueba donde los argumentos rigurosos se pueden inferir acerca de las propiedades de los sistemas especficos y la exactitud de las decisiones de diseo. El trmino "VDM" a menudo se utiliza incorrectamente para referirse slo a la especificacin del lenguaje.Los orgenes de VDM proviene de la investigacin en la semntica formal de los lenguajes de programacin en el laboratorio de IBM en Viena entre 1960 y 1970, incluyendo las notaciones VDL y Meta-IV. El VDM es su descendiente moderno, que ahora se utiliza ms all del propsito de lenguaje semntico en el desarrollo de sistemas industriales y en la investigacin acadmica. Un gran nmero de lenguajes de especificacin fue derivada o inspirada en el VDM-SL, incluyendo RSL, y VDM ++ VVSL, que soporta el modelado de Orientacin a Objetos y sistemas de la competencia.2.1.- El Lenguaje VDMEl VDM es un mtodo formal basado en un marco basado en modelos para la semntica denotativa para apoyar el perfeccionamiento gradual de los modelos abstractos a las implementaciones concretas. El mtodo VDM tiene un lenguaje de especificacin formal, VDM-SL, que admite dos formas de abstraccin: la abstraccin representacional y la abstraccin operacional.La abstraccin representacional est dada por las facilidades del modelado de datos. Estas caractersticas se basan en los seis mecanismos para la estructuracin de los datos matemticos: conjuntos, secuencias, correspondencias, objetos compuestos, los productos cartesianos y las uniones. En un lenguaje de bajo nivel proporciona diversos tipos numricos, booleanos, entre otras cosas, pueden ser compuestos formados por dominios, llamados dominios, a travs de la utilizacin de mecanismos de estructura de datos. Los dominios forman las clases de objetos que tienen una estructura matemtica especfica. Los subtipos son soportados por las definiciones del dominio utilizando los invariantes de dominio.La abstraccin operacional es soportada por la abstraccin funcional y por la abstraccin relacional. La primera se refiere al de especificacin de las funciones y la segunda con la realacion a la especificacin de las operaciones. Ambos pueden ser especificados implcitamente usando pre y post-condiciones, o explcitamente utilizando construcciones aplicativas para especificar las funciones y construcciones imperativas para especificar operaciones. La diferencia bsica es que las operaciones tienen acceso directo a una coleccin de objetos globales, es decir, el estado de la especificacin.El estado es un objeto compuesto construido de componentes etiquetados. Una especificacin VDM consiste en una descripcin del estado, utilizando predicados de la inicializacin y predicados de invariantes, un conjunto de configuraciones de dominio que tambin utilizan invariantes, constantes, operaciones y funciones.Para la estandarizacin de VDM-SL se utiliz, como punto de partida, la semntica de dialecto STC / VDM-RL, para llegar a su definicin completa. La definicin completa del patrn de VDM-SL se puede dividir en diferentes componentes, tales como: (a) sintaxis definida en varios niveles de abstraccin; (b) representaciones de smbolos; (c) semntica esttica; (d) semntica dinmica; y (e) la sintaxis de mapeo.La sintaxis es el componente principal de VDM-SL y aparece en dos formas, una como reglas de verificacin y otra como definiciones de tipo. Como un ejemplo de verificacin de reglas considere la sintaxis de una expresin if-then-else. La sintaxis concreta viene dada por:

Ya como definiciones de tipo relacin, la sintaxis de la expresin if-then-Elsee dado por:

Tenga en cuenta que la sintaxis es el punto de partida para definir todos los dems aspectos pertinentes de la norma VDM-SL.En cuanto a la representacin de los smbolos, en la actualidad hay dos maneras, una matemtica y otra ASCII. Una representacin matemtica tiene smbolos "elegantes", distinguiendo entre las palabras clave, palabras reservadas, y se parece mucho a la notacin matemtica. La representacin ASCII para hacer el procesamiento automtico de especificaciones VDM-SL. Tomemos, por ejemplo, un mapeo sencillo de nmeros naturales en valores booleanos. En representacin matemtica o mapeo estara dada por la coleccin ext rw: mientras que en el mapeo ASCII sera de la forma coleccin wr ext: La semntica esttica define las especificaciones que pueden estar sintcticamente correctas, pero eso no necesariamente obedece las reglas del tipo y el alcance del lenguaje.La semntica dinmica se basa en la teora de conjuntos y la notacin matemtica. Aqu, los operadores se utilizan para construir un universo de dominio que contiene todos los valores vlidos que se pueden expresar en VDM-SL.La sintaxis de mapeo es el componente responsable de la transformacin entre las especificaciones VDM-SL y las representaciones de las especificaciones definidas a priori.2.2.- Estructura del VDMVDM soporta dos tipos de estructuras: (1) la abstraccin representacional, en la que los datos pueden ser descritos sin detalle estructural utilizado en la aplicacin final y (2) abstraccin de funcionamiento, en el que las manipulaciones sobre los objetos abstractos introducidos se describen en la abstraccin de representacin. Para que se puede utilizar la lgica de predicados de primer orden y declaraciones anlogas de lenguajes de programacin. Una especificacin en VDM se estructura en varios bloques, cada bloque se identifica por una palabra clave:

types

values

functions

operations

state of end2.3.- Abstraccin RepresentacionalEn la abstraccin representacional un modelo de software puede ser construido a partir de dos tipo bsicos de lenguaje de especificacin y de tipos construidos a travs de otras composiciones, previamente definidos. Existen cinco definiciones matemticas: conjunto, secuencia, mapeo, registro y tupla. Los identificadores en VDM estn formados por caracteres alfanumricos (distingue maysculas y minsculas) y las letras griegas, y sin restricciones a su tamao. Los comentarios en VDM tienen el prefijo con el carcter '-'. 2.3.- Tipos SimplesEn VDM los tipos simples pueden ser subdivididos en dos categoras: tipos primitivos definidos en el lenguaje y "constantes" definido por el usuario. Los tipos primitivos son los elementos bsicos que pertenecen al propio lenguaje VDM, que se relaciona con las definiciones matemticas y no su representacin en un lenguaje de programacin, como por ejemplo: el tipo de nmero entero no est limitado por el nmero de bits soportados por el lenguaje de implementacin. La Tabla 1 presenta las tipos primitivos en VDM, entre ellos el tipo "token" que representa una coleccin de contabilidad de valores asociados a otros tipos.

Tabla 1: Tipos BsicosSobre estos se definen operadores aritmticos como "+", "-", "*", "/" y los operadores relacionales '', ' "," ', '=' y ''. Los operadores listados en la Tabla 2 tambin se pueden aplicar a ellos:

Tabla 2: Operaciones con tipos bsicosUna constante es un identificador definido por el usuario, cuyo valor es su propio "nombre", es decir, su representacin interna es una cadena con el mismo valor que su "nombre", por ejemplo: Naranja es una constante cuyo valor es naranja.2.4.- Tipos CompuestosSon tipos que se construyen a partir de otros tipos previamente definidos usando para estos constructores de tipos. Estos constructores pueden ser: uniones, conjuntos, secuencias, mapeos, registros, productos cartesianos y tipos de funciones.Uniones combinan dos o ms tipos en un nico tipo a travs del operador "|", por ejemplo: Usuario = Profesor | Estudiante, es decir, una variable de tipo de usuario puede ser un instante dado "profesor" o "estudiante" o tambin "Mensaje = xito | ERROR-de entrada" mensaje en un momento dado puede tener como valor xito o ERROR-de entrada, pero nunca los dos valores a la vez.Los conjuntos en VDM deben ser finitos, o conjuntos contablemente infinitos pueden ser especificados. Estos son tratados como conjuntos finitos suficientemente "grandes", por lo que de esta manera se puede simplificar las eventuales pruebas matemticas. La sintaxis se define de la siguiente manera: "Ind: P-set", donde "Ind" es el identificador asociado a una variable, "P" es el tipo (debe ser definido previamente) y la palabra "-set" indica que este variable tendr un conjunto de valores. Tambin es posible definir nuevos tipos de manera anloga, por ejemplo: Las personas = Empleados-conjunto, es decir, el tipo "Empleado" es un conjunto de personas. Otra forma de especificar conjuntos es utilizando la notacin matemtica, por ejemplo: Pares y Digitos . Un conjunto vaco esta descrito por . Son permitidas las operaciones sobre conjuntos con los smbolos tradicionalmente utilizados en matemtica para expresar: unin, interseccin, diferencia, esta contenido, pertenece, igualdad, entre otros. Adems de una operacin denotada por la palabra "card", donde "card S" devuelve la cardinalidad del conjunto S.Las secuencias se permiten bajo las operaciones como se muestra en la Tabla 3.

Tabla 3: Operaciones con secuenciasMapeos son como funciones matemticas (y no funciones en lenguajes de programacin). Estas funciones se asocian un conjunto de dominio a otro conjunto de imagen. Como por ejemplo:

mapeo del dominio X para imagen Y, siendo las instancias del mapeo:

Sobre estos mapeos pueden ser aplicadas las operaciones que se describen en la tabla 4.

Tabla 4: Operaciones con funcionesRegistros en VDM son anlogos a los registros en un lenguaje de programacin, y se describen en la siguiente sintaxis:

donde T es el identificador de tipo de registro que est siendo definido y T1, T2, T3, ... Tn representan los tipos de cada componente de T. Estos componentes son llamados campos y son identificables por las variables v1, v2,..., vn. El smbolo :: es parte de la sintaxis y separa estos campos del identificador del tipo de registro creado. Ejemplo:

La funcin de "mk-" se utiliza para instanciar valores de un determinado tipo, se pueden asignar como parmetros, valores iniciales o variables que contiene valores que seran asignados a cada campo de acuerdo a su orden de declaracin. Por ejemplo: "nl = mk-Book (tit," John ", de 2000)", en la que una instanciamos un nuevo libro con el valor de ttulo igual al valor "tit", el valor del campo autor igual a "John "y el ao igual "2000 ". Para acceder a estos valores de la variable "nl", slo hay que poner el nombre de la variable seguido de "." y el nombre del campo, por ejemplo, para saber el ttulo del libro que acaba de escribir "nl.Titulo".Un producto cartesiano en VDM y una coleccin ordenada de smbolos agrupados por un nico nombre, de acuerdo con la siguiente sintaxis: "T = Tn T1xT2x ...", donde "T" es el nombre del tipo de producto cartesiano y "T1xT2x ... Tn 'son sus componentes. A modo de ejemplo, si Libro = String X String X N y Coleccin= String X String X N, entonces Libro = Coleccin.En VDM, "los tipos de funciones" definen el tipo de dominio y el contra-dominio de una funcin, utilizando la siguiente sintaxis: , para denotar una funcin recibe un numero entero y devuelve otro nmero entero. Ejemplos de instancias (funciones) asociados con este tipo son:

recibe , y retorna recibe , y retorna - recibe , y retorna

Un patrn es una estructura que se compone de colecciones de identificadores, smbolos y valores.Una entrada est asociada a un patrn, si se tiene un conjunto de valores por defecto asociados al patrn, de acuerdo a los ejemplos de la Tabla 5.

Tabla 5: Ejemplos de patrones2.5.- EstadosEn VDM un "estado", consiste es una especificacin de un determinado problema, incluyendo la representacin de objetos de dominio y las operaciones que se pueden realizar con el mismo. La sintaxis es simple: al principio del estado se coloca la siguiente secuencia el "state of", y al final del bloque la palabra "end". En la Figura 1, se da un ejemplo simplificado, ya que no incluye operaciones. En este ejemplo se declaran tres objetos de dominio relacionados a un estado llamado "departamento", siendo estos: (1) los cursos que el departamento tiene (tipo: conjunto de cursos), (2) los estudiantes que estn relacionadas con este departamento (tipo: conjunto estudiantes) y (3) profesores asociados al departamento (tipo: conjunto de profesores).

Figura 1: Ejemplo de estado2.6.- InvariantesSon las propiedades que cada entidad (objeto) debe preservar, anlogas a las "restricciones" en la base de datos. Se expresan a travs de notaciones matemticas que describen las restricciones sobre los valores para los diferentes objetos del dominio, estas restricciones deben ser obedecidas al final de cada operacin. Ellos pueden hacer referencia a un determinado objeto, en este caso se llaman "invariantes de tipo" a los varios objetos contenidos en el mismo estado, clasificndolos como "invariante de estados". Un ejemplo de invariante de tipo.inv mk-Student (nombre, id, cursoconcluido, cursomatriculado) cursoconcluido cursomatriculado = {}donde inv una palabra clave que debe preceder a cualquier declaracin invariante, mk- es una funcin que se utiliza para crear instancias de un registro, "" es el smbolo utilizado para creacin de instancias separadas del registro de la expresin que describe la invariable y "cursomatriculado cursoconcluido = {} "expresin que significa la siguiente restriccin: la interseccin de los cursos realizados por un estudiante con los cursos se matricul debe estar vaco. Es decir, al final de cada operacin se debe mantener este invariante, asegurando que un estudiante hace el mismo curso dos veces. Los invariantes de estado puede ser construidos de manera similar.2.7.- Abstraccin operacionalLa abstraccin representacional describe los objetos en el dominio del software modelado, el comportamiento de este modelo es capturada a travs de la abstraccin operacional. Este comportamiento se describe por funciones y operaciones declaradas en los "estados" del sistema, de acuerdo con el concepto del estado previamente presentado. La principal diferencia entre las operaciones y funciones, es que estos ltimos no acceden a las variables globales, mientras que las operaciones, adems de acceder a las variables globales tambin pueden cambiar sus valores.2.7.1.- El comando LetAdems de las funciones y operaciones se pueden usar las expresiones "complejas" para describir el comportamiento del sistema. Cuando estas expresiones son utilizadas en varias ocasiones durante la especificacin, se torna interesante asociar un identificador. De cierta forma es posible hacer una analoga entre las expresiones y macros disponibles en los lenguajes de programacin, como por ejemplo C. Para asociar los identificadores de las expresiones que utilizamos el comando letque de acuerdo la siguiente sintaxis: let in .Vemos un ejemplo:let estudiante : Estudiante = mk-Estudiante (Rodrigo, 1234,{}. IngInfor) in valida-estudiante (estudiante).2.7.2.- Definicin de funcionesFunciones en VDM pueden ser de cuatro tipos: (1) funciones implcitas, (2) las funciones explcitas, (3) de alto nivel y (4) funciones polimrficas. Las funciones implcitas se caracterizan por propiedades declarativas, y se diferencian de las funciones explicitas principalmente por la sintaxis. La sintaxis de las funciones implcitas es:

donde "func" es el nombre de la funcin que est siendo declarado ", p1, p2, ..., pn" son los parmetros de entrada, "t1, t2, ..., tn" son los tipos asociados a cada parmetro, "p" es el parmetro de retorno cuyo tipo es "t", "B" es una expresin booleana que indica los "pres" -condiciones que deben cumplirse antes de que la funcin sea ejecutada y "B '' son los "post " -condiciones que debe ser satisfechas despus de la ejecucin de la funcin, donde "B '' especifica la mayor parte de la semntica de la funcin.El estilo de especificacin de las funciones explcitas posee dos componentes: una declaracin de funcin y su definicin, siguiendo asi la sintaxis:Declaracionfunc: t1xt2x..xtn tdonde func es el nombre de la funcin, t1xt2.xtn son los tipos asociados a cada parmetro y t el tipo de retorno de la funcin, yDefinicionfunc(p1, p2,., pn) pre Bdonde func es el nombre de la funcin, p1, p2, ..,pn son parmetros de entrada, el smbolo es un separador, es una expresin de tipo t y B es una pre-condicion.En VDM se puede definir funciones de alto nivel a partir de funciones con niveles de abstraccin ms bajos. Como por ejemplo:

Una funcin es polimorfa o genrica si posee una estructura capaz de tratar apropiadamente diferentes tipos de parmetros. Como por ejemplo: Esta funcin verifica si la secuencia "small" y la subsecuencia "large" devuelve un valor booleano. Sin embargo, los dos tipos de elementos "small" y "large" no estn definidos en la funcin en s, es decir, esta funcin es vlida para cualquier tipo de conjunto. Esta funcionalidad est sintcticamente garantizada por el smbolo "@".2.7.3.- Definicin de OperacinLas operaciones tambin pueden ser de dos tipos: (1) operaciones implcitas y (2) las operaciones explcitas. Las operaciones implcitas tienen funciones similares a las funciones implcitas, pero poseen dos clusulas adicionales: clusula externa "ext", la cual contiene una lista de todas las variables globales que se accede por la operacin y el bloque de error de "err". Formando de este modo la siguiente sintaxis:

donde, "Oper" es el nombre de la operacin, los "ps", "ts" y los bloques "B" y "B '' tienen el mismo significado que tienen las funciones," ext "es la palabra clave que indica el inicio de la clusula externa, donde es modo (rd-lectura y wr-escritura) con lo cual las variables g1, g2, ..., gk " son utilizadas, "err" es la palabra clave que indica el inicio del bloque de errores, donde "e1, e2, ..., en" indican los identificadores de cada error "B1, B2, ..., Bn" son expresiones booleanas que indican la ocurrencia de errores y "B'1, B'2, ... b'n "son acciones asociadas con cada error.2.7.4.- Definicin de declaracionesEn VDM es posible utilizar las declaraciones existentes en lenguajes de programacin como C o Pascal. La Tabla 6 presenta algunas declaraciones vlidas seguidas de su definicin sintctica.Estas declaraciones tienen semntica similar a los comandos utilizados en los lenguajes de programacin. Generalmente, estas declaraciones son utilizadas para detallar mejor la especificacin, cuando est se encuentra en un nivel de abstraccin muy cerca del nivel de programacin.

Tabla 6: Ejemplos de declaraciones

3.- Conclusiones:Podemos concluir que el mtodo VDM ayuda a la abstraccin de pruebas de simulacin donde el refinamiento de datos incluye la especificacin de maquinas de estado ya que el VDM soporta dos tipos de estructuras: la abstraccin representacional, en la que los datos pueden ser descritos sin detalle estructural utilizado en la aplicacin final y la abstraccin de funcionamiento, en el que las manipulaciones sobre los objetos abstractos introducidos se describen en la abstraccin de representacin para que se puede utilizar la lgica de predicados de primer orden y declaraciones anlogas de lenguajes de programacin.4.- Bibliografa Seven Myths of Formal Methods. Anthony Hall. IEEE Software, September 1990. Seven More Myths of Formal Methods. Jonathan P. Bowen, Michael G. Hinchey. IEEE Software, July 1995. Ten Commandments of Formal Methods. Jonathan P. Bowen, Michael G. Hinchey. Ten Commandments of Formal Methods... Ten Years Later. Jonathan P. Bowen, Michael G. Hinchey. IEEE Computer, January 2006. Verified Software: theories, tools, experiments. Vision of a Grand Challenge Project. Tony Hoare and Jay Misra, July 2005. Verified Software: A Grand Challenge. Cliff Jones, Peter O'Hearn, Jim Woodcock. IEEE Computer, April 2006. First Steps in the Verified Software Grand Challenge. Cliff Jones, Peter O'Hearn, Jim Woodcock. IEEE Computer, April 2006. A Specifier's Introduction to Formal Methods Jeanette M. Wing. IEEE Computer, 1990.