Escolar Documentos
Profissional Documentos
Cultura Documentos
1
2
De acuerdo a [16] (NO HAY 16 EN SUS REFRENCIAS ) resultado un solo valor. VDM++ tiene 25 categoras
los modelos en VDM++ consisten en un conjunto de diferentes de expresiones [6]. Una de las categoras ms
clases. Una clase representa una coleccin de objetos que utilizadas para la definicin de pre-condiciones, post-
condiciones en invariantes son las expresiones
comparten elementos comunes como atributos u
cuantificadoras.[3]
operaciones. La estructura de la descripcin de una clase
se muestra en la Fig. 1. La clase se representa con la 4. Expresiones cuantificadoras
palabra reservada class, seguida por el nombre de la clase.
La descripcin consta de varios bloques, precedidos por la Las expresiones cuantificadoras son un tipo de expresin
palabra reservada que indica el tipo de elemento descrito lgica. Son utilizadas de forma frecuente cuando es
en dicho bloque. En figura 1 podemos apreciar que una necesario realizar una asercin acerca de una coleccin de
valores. Existen dos tipos de expresiones cuantificadoras:
clase en VDM++ tiene los siguientes bloques: a) Variables
cuantificador universal (forall) y cuantificador existencial
de Instancia (instance variables), las cuales modelan el (exists). Ambas enlazan una o ms variables a un tipo de
estado interno del objeto. b) Tipos (types): presenta la VDM++ o, a un valor que pertenece a un conjunto, y los
definicin de tipos de datos. c) Valores (values): permite la evala contra una expresin booleana [3].
definicin de constantes. d) Operaciones (operations):
define operaciones que pueden modificar las variables de 5. Invariantes
instancia.[3]
Si las variables de instancia especificadas en una clase
contienen valores que no deberan ser permitidos, entonces
es posible restringir dichos valores por medio de
invariantes. El resultado ser que el tipo es restringido a un
subconjunto de los valores originales [6,8]. Para
especificar una invariante se utiliza la palabra reservada
inv a continuacin de la definicin de todas las variables
de instancia declaradas en la clase.[3]
6. Operaciones
Fig. 1. Estructura de clase en VDM++
En VDM++ los algoritmos son definidos por operaciones.
2. Tipos Las operaciones pueden manipular tanto variables globales
y variables locales. Las operaciones pueden ser definidas
En cuanto a los tipos de dato, VDM++ cuenta con tipos de forma explcita (mediante un algoritmo explcito) o de
bsicos y tipos compuestos. Entre los tipos bsicos se forma implcita (mediante el uso de pre-condiciones y
tiene: boleanos (bool), naturales (nat, nat1), reales (real) y post-condiciones). Para poder ejecutar nuestras
caracter (char). En los tipos compuestos presenta:
operaciones en el intrprete de la herramienta, las
conjuntos (set of), secuencias (seq of), mapeos (map to),
entre otros. Cada uno de estos tipos tiene operaciones pre- operaciones deben ser definidas explcitamente. VDM++
definidas. Para la aplicacin de nuestro trabajo queremos tambin permite agregar pre-condiciones y post-
resaltar las operaciones pre-definidas para el tipo condiciones en las operaciones explcitas [6,16]. La idea
secuencia mostradas en la figura 2 [3]. principal de las pre-condiciones y post-condiciones es que
una clase y sus usuarios tienen un contrato. El usuario
debe garantizar ciertas condiciones antes del llamado a la
operacin (pre-condicin) y por su parte la clase garantiza
que ciertas propiedades sern verdaderas cuando termine
la operacin (post-condicin) [3].
III. VDMToolBox
Figura. 2. Operaciones pre definidas sobre el tipo
secuencia
A. Caracteristicas
3. Expresiones
Es una herramienta integrada que soporta el anlisis de
Las expresiones son utilizadas para describir clculos que modelos VDM++ va anlisis sintctico, anlisis de tipos,
no producen efectos secundarios, esto significa que nunca generacin de condiciones de integridad y anlisis de
podrn afectar el valor de una variable de instancia (a cobertura, adems que permite la generacin de cdigo
menos que contenga un llamado a operacin). Las Java y C. La herramienta adems posee un intrprete que
expresiones pueden ser evaluadas mediante el remplazo permite validar las especificaciones. La herramienta
del identificador utilizado en la expresin con valores
tambin permite convertir directamente diagramas de clase
actuales. La evaluacin de una expresin da como
2
3
UML creados en Rational Rose en especiacin VDM++. El desarrollo de especificacin formal para sistemas con
[3] la herramienta VDMToolBox es ms amplia que con
Overture, esto debido al poco conocimiento de la segunda
Una vez realizada la especificacin en VDM++, es herramienta. Algunos proyectos que han aplicado
necesario verificar si las clases concuerdan con las reglas VDMToolBox son:
sintcticas de VDM++. El analizador sintctico verifica si
la sintaxis de la especificacin es correcta. El analizador En el trabajo de APELLIDO [6] se presenta el
sintctico reporta los errores, si los hubiera, y realiza modelamiento y validacin del calculo de tarifas d tren
supuestos sobre cual pudo haber sido el error. Luego que la utilizando VDM++. Se resaltana los resultados y
especificacin ha pasado el analizador sintctico, debe experiencias ganadas en un Proyecto de investigacin
verificarse la correctitud de los tipos de acuerdo a las colaborativa entre AIST y OMRON, en el que VDM ++ ha
reglas de VDM++. Habiendo garantizado tanto la sido aplicado para formalizar las especificaciones de
correctitud sintctica como la correctitud de tipos, VDM+ TFCAS y validar su consistencia y propiedades de
+ToolBox provee soporte para validacin de la confiabilidad.[6]
especificacin a travs de la ejecucin de pruebas
utilizando un intrprete. El intrprete permite ejecutar APELLIDO [7] realiz una herramienta de Validacin
partes de la especificacin utilizando valores seleccionados Grfica para un Marcpaso.. En su artculo se dise e
por el desarrollador (casos de prueba).[3] implement una interfaz grfica de usuario para usar en la
validacin de un modelo formal de un marcapasos
cardaco. Los modelos se ejecutan utilizando el intrprete
VDMTools y la comunicacin con la GUI de validacin se
lleva a cabo a travs de la API CORBA del Toolkit. Se
requeran algunos cambios en el modelo para facilitar esta
comunicacin: estos cambios se llevaron a cabo con xito.
Se dise un editor de escenarios para los modelos pero no
se implement debido a limitaciones de tiempo [7]
A. Caracteristicas
Overture Tool es un entorno de desarrollo integrado (IDE)
de cdigo abierto para desarrollar y analizar modelos
VDM. La suite de herramientas est escrita enteramente en
Java y construida sobre la plataforma Eclipse.[4]
3
4
Para mostrar el uso de ambas herramientas y su
posterior comparacin se ha utilizado un caso de
estduio que corresponde al desarrollo de un sistema
de: LOCALIZACION PARA TURISTAS.
EXPLICAR EL SISTEMA TAL CUAL LO
EXPUSIERON EN CLASE. MOSTRAR EL
MODELO DE CLASES COMPLETO Y LUEGO SE
DICE QUE POR MOTIVOS DE ESPACIO SOLO SE
TRABAJAR LA CLASE LOCATION
Figura 4 . Entorno de Desarrollo Overture Tool Se ha utilizado el lenguaje VDM en el dialecto VDM++
que extiende a VDM-SL brindndole caractersticas para el
modelado orientado a objetos y para la concurrencia.(NO
SE UTILIZO CONCURRENCIA EN SU TRABAJO)
Se ha realizado la especificacin formal de una clase
Location.
V. Caso de Estudio
B. Aplicando OvertureToolBox
EN LA FIGURA X s presenta la generacin de cdigo El generador ha creado los setter y getter adecuadamente,
utilizando VDMTools++. sin embargo, no existe ningn control para las variantes,
El nivel de acceso de los atributos es private y han sido
precondiciones, post-condiciones definidas en el archivo
inicializadas con 0.0 (longitud y latitud) y con cadena
vaca (descripcin) (EN QUE LINEAS). Se puede vpp.
observar que la secuencia de caracteres de VDM se ha
convertido en un String en el archivo Java y los tipos real
se han sido traducidos a tipo Double.
Figura 12 . Atributos con valores de acuerdo a su tipo Figura 17 . Constructor annimo y mtodo toString()
Readable Cdigo difcil de leer. Cdigo fcil de leer. Vieena Development Method,
Exceso de No genera comentario https://es.wikipedia.org/wiki/Vienna_Development_Metho
comentarios: al inicio alguno. d ,Marzo 16, 2013.
y fin de cada atributo [2] Manuel I.Capel, Mtodos Formales en la Ingeniera del
y mtodo. Software, 2004.
[3] Elizabeth Vidal-Duarte, Aplicacin y Validacin de
Similitud Cdigo generado no Cdigo generado Especificaciones Formales Ligeras en el Modelo
muy similar al cdigo muy similar al cdigo Conceptual: Reduciendo la ambigedad e incrementando
original de VDM. original de VDM. la Conformidad entre los Requerimientos y el Cdigo,
2012.
[4] overturetool, http://overturetool.org/ , 2008.
Debug y Relativamente Relativamente
[5]overturetool,
compilaci sencillo realizar sencillo realizar
https://github.com/overturetool/overturetool.github.io/
n ambas tareas, sin ambas tareas, sin
blob/master/community/index.md , 2010.
embargo necesitan embargo necesitan
[6] Daisuke Souma, Goro hatayama, Hitoshi Ohsaki,
libreras especficas libreras especficas
Nguyen Van Tang, Modeling and Validating the Train Fare
(jp.co.csk.vdm.toolbo (org.overture.codegen.
Calculation and Adjustment System Using VDM++
x.VDM). runtime).
[7] Emma Nicholls, A Graphical Validation Tool for a
VDM++ Model of a Cardiac Pacemaker , August 2007
Trazabilid Trazabilidad hacia el Trazabilidad hacia el [8 ] Tim Clement Adelard, The formal development of a
ad cdigo original VDM cdigo original VDM Windows interface , November 15, 1999.
completa pero difcil. incompleta . [9] Yoichi Omori, Keijiro Araki , and Peter Gorm Larsen,
JODTool on the Overture Tool to manage formal
requirement dictionaries , june 2015
[10] Paolo Masci1, Luis Diogo Couto , Peter Gorm
Larsen , and Paul Curzon ,Integrating the PVSio-web
VIII. Conclusiones modelling and prototyping environment with Overture, ,
June 2015
Ambas herramientas, VDMTools++ y OvertureTool, dan la [11] Marcel Verhoef Maxime Perrotin ,TASTE for
posibilidad de generar cdigo Java (VDMTools++ adems Overture to keep SLIM, june 2015
puede generar cdigo C++) a partir de un archivo vpp (que
almacena cdigo vdm) que describe especificaciones
formales.