Metodo VDM
Metodo VDM
Metodo VDM
Mtodo VDM
INTEGRANTES:
6161096 LP
5969412 LP
DOCENTE:
MATERIA:
GESTION II - 2014
1.- Introduccin
El 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 Terico
VDM 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 VDM
El 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
Tenga en cuenta que la sintaxis es el punto de partida para definir todos los dems
aspectos pertinentes de la norma VDM-SL.
end
2.3.- Abstraccin Representacional
En 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 Simples
En 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 Z 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
Bsicos
Sobre estos se definen operadores aritmticos como "+", "-", "*", "/" y los
operadores relacionales '<', '>', ' "," ', '=' y ''. Los operadores listados en la Tabla
2 tambin se pueden aplicar a ellos:
{} . Son
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:
( n : N n2 ) F
recibe
recibe
n , y retorna n+2
n , y retorna n2
Son 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
cursoconcluido
(nombre,
id,
cursoconcluido,
cursomatriculado)
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 operacional
La 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 Let
Adems 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 <definicion> in
<expresin>.
Vemos un ejemplo:
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:
Declaracion
func: t1xt2x..xtn t
donde 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, y
Definicion
func(p1, p2,., pn)
pre B
donde 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:
power : N x N N
power : ( n ) ( x ) 4 n x
Una funcin es polimorfa o genrica si posee una estructura capaz de tratar
apropiadamente diferentes tipos de parmetros. Como por ejemplo:
subsequence [ @ X ] : @ Xx @ X B
subsequence( small , large)
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 <nodo> es modo (rd-lectura y wrescritura) 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 declaraciones
En 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.
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
First Steps in the Verified Software Grand Challenge. Cliff Jones, Peter
O'Hearn, Jim Woodcock. IEEE Computer, April 2006.