Está en la página 1de 25

ESCUELA ACADEMICO PROFESIONAL DE

INFORMTICA

TEMA: LENGUAJES DE ESPECIFICACIN FORMAL


BASADA EN MODELOS SECUENCIALES
INTEGRANTES: SANTILLAN HUALLAN, DANIEL
SALCEDO SALAZAR, JUAN DIEGO
SIFUENTES GUZMAN, LUIS ERNESTO
VALLEJOS BARDALES, GIAN PIERE

DOCENTE: CRUZ FLORIAN, IRIS

CURSO: ESPECIFICACIN FORMAL

TRUJILLO PERU
2014

1. Introduccin
En ciencias de la computacin, las especificaciones formales son
matemticamente tcnicas basadas cuyo propsito es ayudar con la
implementacin de sistemas y software. Se utilizan para describir un
sistema, para analizar su comportamiento, y para ayudar en su diseo
mediante la verificacin de las propiedades clave de inters rigurosa y
eficaz de razonamiento. Estas especificaciones son formales en el sentido
de que tienen una sintaxis, su semntica caen dentro de un dominio, y que
son capaces de ser utilizados para inferir informacin til.
En cada uno de los sistemas informticos pasan dcada se han vuelto cada
vez ms potentes y, como resultado, se han vuelto ms impactante 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 costo-efectiva una mejor y ms.

Teniendo en cuenta tal especificacin, es posible utilizar tcnicas de


verificacin formal para demostrar que un diseo del sistema es correcta
con respecto a su especificacin. Esto permite que los diseos del sistema
incorrectos que se revisen antes de cualquier inversin importante se han
hecho en una implementacin real. Otro enfoque es el uso de pasos de
refinamiento demostrablemente correctas para transformar una
especificacin en un diseo, que en ltima instancia se transforma en una
implementacin que es correcto por la construccin.
Es importante tener en cuenta que una especificacin formal no es una
aplicacin, sino que puede ser utilizado para desarrollar una
implementacin. Las especificaciones formales describen lo que un sistema
debe hacer, no cmo el sistema debe hacerlo.
Una buena especificacin debe tener algunos de los siguientes atributos:
adecuado, internamente coherente, sin ambigedades, completo,
satisfecho, mnimo
Una buena especificacin tendr:
Constructibilidad capacidad de gestin y capacidad de evolucin
Usabilidad
Transmisibilidad
Anlisis potente y eficiente
Una de las principales razones que hay inters en las especificaciones
formales es que proporcionarn una capacidad de realizar pruebas de
implementaciones de software. Estas pruebas se pueden usar para validar
una especificacin, verificar la correccin del diseo, o para demostrar que
un programa satisface una especificacin.
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: historias de sistemas basados en el
comportamiento y afirmaciones se interpretan en el tiempo
Especificacin basada en Estado: comportamiento basado en los estados del
sistema, serie de pasos secuenciales e idiomas como Z, VDM o B se basan en
este paradigma.

Especificacin basada en Transicin: comportamiento basado en las


transiciones de un estado a otro del sistema, mejor utilizado con un sistema
reactivo e idiomas como Statecharts, PROMELA, STEP-SPL, RSML o SCR
dependen de este paradigma.
Especificacin funcional: especificar un sistema como una estructura de
funciones matemticos, OBJ, ASL, PLUSS, alerce, HOL o PVS se basan en este
paradigma.
Especificacin Operacional: idiomas tempranos como Paisley, GIST, redes de
Petri o lgebras de procesos se basan en este paradigma.
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.

2. VDM un lenguaje de Especificacin


Historia
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.

Definicin
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 VDMSL; 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.

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-thenElsee 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:
mapeo ASCII sera de la forma coleccin wr ext:

mientras que en el

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.

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

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 '-'.

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 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.

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
{
|
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.
Poseen secuencias similares a la sintaxis de los conjuntos, excepto para
el intercambio de "{" con "[". Sin embargo, difieren en su semntica por
el hecho de que las secuencias en el orden de los elementos deben ser
considerados.

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:
{
{
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 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 contradominio 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 asociado 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

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

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 (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.

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.

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).

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:

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 "@".

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 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.

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. El mtodo B
Definicin
Es una coleccin de tcnicas matemticas para la especificacin, diseo
e implementacin de componentes de software. Existen sistemas que
estn modelados como una coleccin de Mquinas Abstractas
Independientes, cuyo enfoque basado en objetos es usado en todas las
fases del desarrollo.
B es uno de los pocos mtodos de desarrollo de software que cubre
completamente el ciclo de vida del software, desde los requerimientos
(especificacin), a travs del diseo (refinamiento) hasta la
implementacin, generacin de cdigo y mantenimiento.

Uso del mtodo B

El mtodo B se puede usar para mantener la alta integridad que puede


concentrarse a travs del uso de rigurosos mtodos de desarrollo
matemticos especficos.
Aplicaciones con el mtodo B
Se ha aplicado el mtodo-B en varias aplicaciones como sistemas de
control de trenes y Smart Cards. As mismo, en algunos pases el uso de
sistemas formales es fundamental para algunos sistemas crticos, como
la Lnea Meteoro (usa Mtodo-B).

Maquinas Abstractas
Un Abstract Machine Notation (AMN) es usado por B. Son mquinas
que encapsulan estado y operaciones. El estado tiene un conjunto de
variables condicionadas por invariantes y las operaciones pueden
cambiar de estado, mientras mantienen la invariante y pueden devolver
una secuencia de resultados.

Notacin

Todos los componentes de B desarrollados tendrn una forma de


origen, que es usada para especificar mquinas.
La forma de origen tiene una notacin ASCII. Por ejemplo,
cuenta:CUENTA. Significa que la variable cuenta es un elemento del
conjunto CUENTA.
Vale resaltar que las variables de mquina en B deben tener al menos 2
caracteres.

Notacin de Mquinas Abstractas (AMN)


Son usadas para describir Mquinas abstractas. Las AMN le dan a B una
apariencia de Lenguaje de Programacin aunque el nivel de abstraccin
no cambia.

Modelo Simple ( Una Alcanca)


Para modelar una alcanca se identificarn los atributos y mtodos:
1.
2.
3.
4.
5.

Se puede agregar y retirar dinero


Se usar la variable alcanca cuyo valor es un nmero natural.
AgregarDinero(monto): Agrega un monto a la alcanca.
RetirarDinero(monto): Retira un monto de la alcanca.
Dinero <- EfectivoRestante: Operacin de consulta que
devuelve el contenido de la alcanca.

Especificacin de la Mquina que Maneja la Alcanca:


MACHINE alcanca
VARIABLES alcanca
INVARIANT alcanca: NAT
INITIALISATION alcanca := 0
OPERATIONS
AgregarDinero(monto) =
PRE monto: NAT
THEN alcanca := alcanca + monto
END;
RetirarDinero(monto) =
PRE monto: NAT
THEN alcanca = alcanca monto
END;
Dinero <- EfectivoRestante =
BEGIN dinero := alcanca END
END
El nombre de la maquina es alcanca, se necesita una variable alcanca.
Alcanca es un nmero natural que se inicializa en 0, se declaran las

operaciones. Se necesita la operacin con un argumento. El monto es un


nmero natural, se incrementa la alcanca con el monto.
Hay una operacin Retirar dinero con un argumento, el monto es un
nmero natural. Declaramos alcanca. Se declara la operacin
EfectivoRestante devuelve un valor que es el monto de la alcanca y se
declara el valor de dinero que se devolver.

Herramientas
La B-Herramienta es un lenguaje interpretado que tambin es un
entorno run-time para soportar el mtodo-B.
La B-Toolkit es un conjunto de herramientas integradas que juntas
soportan el mtodo-B para el desarrollo de software formal.

Ventajas del Software


Se pueden identificar automticamente errores en el cdigo y se puede
compilar paso a paso para detectar estos. Tambin puede generar
cdigo fuente para la especificacin y finalmente la B-Herramienta
genera cdigo en C.

4. Notacin Z

Historia
Notacin concebida en el ao 1970, se desarroll a travs de la dcada
de 1980 en los proyectos de colaboracin entre la Universidad de
Oxford y socios industriales, incluyendo IBM e Inmos(productor de
semiconductores).
Es un conjunto de convenciones para la representacin de texto
matemtico, elegido para que sea cmodo de usar las matemticas
simples para describir los sistemas de computacin (Z notacin se ha
utilizado para modelar el hardware as como software).

Convecciones Sintcticas
Word(palabra): un Word es simplemente un tipo de nombre en la
especificacin Z: es una secuencia no vaca de letras(maysculas y
minsculas), dgitos y subrayados empezando con una letra o un
smbolo especial. Los Words son usados como los nombre de esquemas.

Identifier(identificador): Ident es un word seguido de una decoracin


(decoration), donde es posible una secuencia vaca de , ? o ! caracteres
y subndices:
Ident ::= Word Decoration
Si un Word es usado en una especificacin de una estructura, esta es
llamado scheme name y ya no estar disponible para usarlo como un
identificador ordinario.

Smbolo de Operadores
La notacin matemtica de Z contiene solo unas formas bsicas de
expresin, pero son suficientes para expresar cualquier propiedad
matemtica que nos interese.
Por ejemplo:
El predicado que nos indica el hecho que la suma de a y b es menor o
igual que a:
Aqu el predicado con la asociatividad de la suma:

Tambin podramos instanciar las operaciones de una forma que nos


luzcan ms familiares como:
permitiendo smbolos infijos como
(
) (
)
Esto es posible ya que es el smbolo de una funcin infija en Z, y es
un smbolo de relacin. Nosotros podemos llamar tales smbolos como
smbolos de operadores.
Existen 3 grupos de clasificacin:
A. Smbolos de funcin:
S. de una funcin Infija: la que aparece entre 2 argumentos.
S. de una funcin Posfija: tal como la transitividad de los
operadores y .
B. Smbolos de Relacin:
R. Infija y Posfija.
Tienen una relacin binaria sets de pares ordenados como sus valores.
C. Smbolos Genricos:
Muchas veces necesitamos de un smbolo sin que este tenga implicancia
en los argumentos, esto se puede hacer reemplazando los argumentos
con _.
es la abreviacin de

Smbolos de Operadores Estndar


Aqu mostramos varios tipos de smbolos de operadores estndars:

Definicin de tipos bsicos


* dent,

, dent+

Una definicin de un tipo bsico introduce uno o mas tipos bsicos.


Estos nombres no deben tener definiciones globales anteriores, y su
alcance es desde la definicin hasta el final de la especificacin.
Ejemplo, la introduccin de NAME y DATE :
*

ME, D

E +.

Descripcin Axiomtica
Una descripcin axiomtica introduce una o mas variables globales, y
opcionalmente especifica una restriccin en sus valores.

No deben haber sido instanciadas globalmente previamente.


Los brackets
indican que la lnea divisoria y la lista de predicado
por debajo de ella son opcionales. Por tanto tambin es aceptadas las

sgtes formas:

Definicin de Esquemas (Schema)

Ambas formas introducen un nuevo esquema.


La palabra que aparece al frente de la caja o que aparece a la izquierda
del signo de definicin se asocia con el esquema que es el contenido de
la caja.

Declaraciones

Usando la notacin Z

Nombre
Sintaxis

Default
En una mu-expresin, si una parte de la expresin es omitida, las
caractersticas de la expresin aparecern en la parte del esquema de
texto (Schema-Text).

Reglas

de
mbito
En
las
expresiones
el esquema de texto introduce variables locales, su alcance incluyen la
expresin E.
Tipo de Reglas
En la
expresin, se tiene t de tipo E, y t ser de
tipo de declaracin que aparece en S.
El

tipo

de

conjunto

de

la

expresin

es
En
la expresin si el tipo de sub-expresin E es
t, entonces el tipo de expresin es t tambin. Si la expresin E es
omitida, el tipo de expresin es de tipo de declaracin que aparece en
S.
Descripcin
La expresin denota una funcin la cual toma
argumentos de una determinada forma de S, y el rendimiento es un
resultado de valor E. Es un equivalente del conjunto por compresin
donde T es la caracterstica de S.
Lambda y mu-expresiones deben al menos siempre ser puestas en
parntesis para no permitir ambigedad, el no tenerlos podra causar
ambigedad con otros signos.

Ventajas de Usar Z notacin


La notacin se define con suficiente precisin que pueden ser
procesados por una maquina.

Existen herramientas de software que estn disponibles para le


escritura y visualizacin de Z smbolos y documentos de tipografa
especial, tambin ofrecen correccin de sintaxis y errores de tipo.
Z tool-MathKit es un software que contiene teoras matemticas,
definiciones, leyes alternativas, etc de la notacin Z.
Z notacin son de gran valor para el trabajo serio.