0% encontró este documento útil (0 votos)
930 vistas15 páginas

Metodo VDM

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 15

Universidad Mayor de San Andres

Facultad de Ciencias Puras y Naturales


Carrera de Informtica

Mtodo VDM
INTEGRANTES:

CUSIQUISPE ANCASI JUAN PABLO

6161096 LP

MARTHA ROCIO MAURICIO LLIFUTA

5969412 LP

DOCENTE:

LIC. GERMAN HUANCA TICONA

MATERIA:

ESPECIFICACIONES FORMALES Y VERIFICACION

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

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
N mB
matemtica o mapeo estara dada por la coleccin ext rw:
mientras que

en el mapeo ASCII sera de la forma coleccin wr ext: map nat a bool .


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 VDM
VDM 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
<definicin de tipos>
values
<definicin de valores>
functions
<definicin de funciones>
operations
<definicin de operaciones>
state <nombre de estado> of <definicin de estado>

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:

Tabla 2: Operaciones con tipos bsicos


Una 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 Compuestos
Son 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 { n N|n mod 2=0 } y
Digitos

{0, 1,2, 3, 4, 5,6, 7, 8, 9} . 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 secuencias


Mapeos 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:
X ={ 1,2, 3, 4,5 }
Y ={1,8, 27, 64,125 }
M =X m Y

mapeo del dominio X para imagen Y, siendo las

instancias del mapeo:


M 1={1 1,2 8, 3 27, 4 64, 5 125 }
M 2={ n m|n X m Y m=n 3 }
Sobre estos mapeos pueden ser aplicadas las operaciones que se describen en la
tabla 4.

Tabla 4: Operaciones con funciones


Registros 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: F=N N , para denotar una funcin
recibe un numero entero y devuelve otro nmero entero. Ejemplos de instancias
(funciones) asociados con este tipo son:
(n : N n+2) F

( n : N n2 ) F

recibe
recibe

n , y retorna n+2
n , y retorna n2

( n : N n mod 2) F - recibe n , y retorna n mod 2


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 patrones


2.5.- Estados
En 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 <nombre del estado> 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 estado


2.6.- Invariantes

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:

let estudiante : Estudiante = mk-Estudiante (Rodrigo, 1234,{}. IngInfor) in


valida-estudiante (estudiante).
2.7.2.- Definicin de funciones
Funciones 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:
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)

i , j inds large j>i lensmall= ji+1


m : (inds samll ) i . j
k inds samll small ( k )=large (m ( k ) )
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 Operacin
Las 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 <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.

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.

También podría gustarte