Você está na página 1de 6

1

Reduciendo la brecha entre los requerimientos y el cdigo:


Overture o VDMToolBox?
Anlisis comparativo de herramientas para generacin de cdigo desde
Especificacioes Formales

Angel Luna Caldern, Harold Cceres Zea, Jerson Herrera Rivera


Universidad Nacional de San Agustn Arequipa , Per ,angel13.18.15@gmail.com

Abstract.- El resto del artculo est organizado de la siguientemaera.


Hoy en da la necesidad de software confiable en la En la seccin 2 damos una breve descripcin del concepto
industria y en la sociedad se ha hecho ms evidente. Mas de especificacin formal. En la seccin 3 presentamos las
aun si estos son de carcter crtico. Ante estos desafos los caractersticas de VDMToolBox. En la seccin 4
ingenieros de software utilizan tcnicas basadas en
presentamos las caractersticas de Overture. En la seccin
matemticas como las especificaciones formales. EL uso
de especificaciones formales para que sea costo-efectiva 5 mediante utilizamos la descripcin de un proyecto
debe ser asistido por algn tipo de herramienta que permita realizado en nuestra universidad realizamos el anlisis
no slo la validacin de especificaciones sin adems la comparativo de ambas herramientas. En la seccin 6
generacin de cdigo. En este artculo presentamos el presentamos los resultados obtenidos. Finalmente
anlisis comparativo de dos herramientas que permiten presentamos nuestras conclusiones.
realizar especificaciones formales en el lenguaje VDM++
y generar cdigo Java. Nuestra principal contribucin es
presentar una ayuda para los desarrolladores de software
que se inician en el uso de especificaciones formales para
que puedan reutilizar cdigo previamente validado. II. Especificacin Formal
A. Definicin

La especificacin formal o mtodos formales son: tcnicas,


I. Introduccin lenguajes y herramientas definidos matemticamente, para
especificar y verificar los requerimientos de un sistema [ ].
.
Las especificacions foramles son un lenguaje basado en
El uso de Mtodo Formal propicia la confiabilidad y la
matemticas cuyo propsito en asistir en la construccin seguridad de un sistema, al aumentar la comprensin
de sistemas de software El tiempo que se invierte en la acerca de un sistema revelando inconsistencias,
especificacin y el diseo se recupera al tener un producto ambigedades e in-completitudes, que de otra manera
d alta calidad. El uso de especificaciones formales implica pasan desapercibidas. [L. Mendoza, M. Prez y M. Capel]
invertir mayor esfuerzo en las etapas tempranas del [1].
desarrollo de software. Su uso reduce los errores por
ambigedad en los requermientos y obliga a un anlisis Los mtodos formales que se utilizan para desarrollar
sistemas de computadoras son tcnicas de base matemtica
detallado de requerimietnos.. [1].
para describir las propiedades del sistema. Estos mtodos
formales proporcionan marcos de referencia en el seno de
Requerimientos incompletos e inconsistencias son puestos
al descubierto y resueltos Asistidas generalmente por una los cuales las personas pueden especificar, desarrollar y
verificar los sistemas de manera sistemtica, en lugar de
herramienta permiten describir los requerimietos de un
sistema, analizar su comportamiento, verificar propiedades hacerlo ad hoc. [John J. Marciniak].[1]
de inters y muchas veces generar cdigo. El poder tener
cdigo generado desde una especificacin formal no slo B. VDM++
nos permite tener requerimientos menos ambiguos sino
tener un cdigo que reproduzca dichos requerimientos.. En El Vienna Development Method (VDM), en espaol,
Mtodo de Desarrollo de Viena es un mtodo formal
este artculo presentamos el anlisis comparativo de dos
herramientas que permiten realizar especificaciones lenguaje de especificacin formal [1,2]
formales en el lenguaje VDM++ y generar cdigo Java :
VDMToolBox y Overture. 1. Definicin de Clases

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]

El trabajo de [ ] describe un enfoque para el uso del


mtodo formal VDM en el diseo y la implementacin de
interfaces Microsoft WindowsTM. Este enfoque se
desarroll durante el desarrollo de Dust-ExpertTM, un
sistema basado en Windows. [8]
Figura 3 .Entorno de Desarrollo de VDMToolBox

IV. Overture Tool

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]

La misin de Overture es doble:

Proporcionar una herramienta de fuerza industrial que


apoye el uso de modelos abstractos precisos en el
desarrollo de software,
Fomentar un entorno que permita a los investigadores y a
otras partes interesadas experimentar con modificaciones
y ampliaciones de la herramienta.[5]
Figura 4 . Vista del OutLine de DVMToolBox

B. Casos de Uso Reales con VDMToolBox

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.

Figura 6 . Vista del OutLine de Overture Tool

B. Cosos de Uso con Overture


La generacin de especificaciones con overture est en una
etapa evolutiva, los desarrolladores de software empiezan
Figura 7 . Diagrama de Clases de Location
a interesarse en esta nueva herramienta de leguaje de
especificacin formal con VDM, algunos de los proyectos
Dicha clase representa la ubicacin geogrfica de un
que empiezan a validar sus requerimientos son . determinado punto. Para ello cuenta con valores para
longitud y latitud, y una descripcin adicional.
La investigaciond e APELLIDO [9] muestra el uso de Dicha clase tiene como atributos:
Overture para manejar requerimientos formales. Su description: cadena de caracteres,
trabajo propone un proceso evolutivo de un viaje de ida y longitud: real,
vuelta entre la especificacin pre-formal y la latitud: real.
especificacin formal con la herramienta

APELLIDO [ ] presenta un entorno grfico para modelado


y prototipado de sistemas interactivos. Los prototipos
desarrollados dentro de PVSio-web pueden parecerse
mucho a la apariencia visual y al comportamiento de un
sistema real. El comportamiento de los prototipos est
totalmente impulsado por modelos formales ejecutables. Figura 8 . Class Location en lenguaje VDM
[10]
Se han definido las variantes para que las coordenadas no
En [ ], APELLIDO se muestra las herramientas TASTE y
pierdan su integridad a lo largo de la puesta en marcha de
Overture, los autores han demostrado con xito que la
la clase. En primer lugar se asegur que el componente
integracin de mtodos es una estrategia muy prometedora
longitud de la coordenada se encuentre entre los lmites
para crear suites de herramientas robustas y eficaces.
-180 y 180. Del mismo modo, el componente latitud se
Exploramos el camino de la integracin de ambas suites de
debe encontrar en el rango de -90 a 90.
herramientas de cdigo abierto, para aprovechar an ms
su eficacia, con el objetivo de proporcionar una plataforma
potencial para el diseo de extremo a extremo y la
ingeniera de sistemas embebidos fiables, centrndose en
la avinica de la nave espacial.

V. Caso de Estudio

Figura 8 . Descripcin de invariantes en Location


4
5
El generador ha creado los setter y getter adecuadamente,
Adicionalmente se han definido 6 funciones: 3 getter y 3 adems existen controles para las variantes,
setter para cada atributo. precondiciones, pos-condiciones definidas en el archivo
vpp. El generador adicionalmente ha creado un constructor
que ejecuta un mtodo para garantizar la integridad de las
invariantes durante la instanciacin de objetos de la clase
Location. A continuacin, se muestra el cdigo generado
del setDescription, en el cual se asegura que que la
longitud del nueo atributo cumpla con la condicin de no
tener un lenght mayor a 50. Los dems setter y getter son
generados similarmente.

Figura 9 . Mtodos get para la clase Location


Figura 13 . Control de precondicin de setDescription.
En el setter de longitud y latitud se asegur que el nuevo
valor de cada uno, se encuentre en el rango de valores
vlidos descritos anteriormente utilizando para ello
precondiciones. En el caso del atributo description, fue
descrito utilizando una precondicin que garantice que la
longitud del nuevo valor no excede los 50 caracteres. Figura 14 . setDescription verifica la precondicin.

B. Aplicando OvertureToolBox

El nivel de acceso de los atributos es private y han sido


inicializadas con 0.0 (longitud y latitud) y con cadena
vaca (descripcin). Se puede observar que la secuencia de
Figura 10 . Precondicion para setDescription caracteres de VDM se ha convertido en un String en el
archivo Java y los tipos real se han sido traducidos a tipo
Number.
VI. Pruebas

A. Aplicando VDMToolBox Figura 15 . Declaracin de variables como privadas.

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 16 . Getters y setters definidos por cada atributo.

El generador adicionalmente ha creado un constructor por


defecto y un mtodo toString que imprime todos los
atributos de la clase Location.

Figura 11 . Atributos privados inicializados con null.

Figura 12 . Atributos con valores de acuerdo a su tipo Figura 17 . Constructor annimo y mtodo toString()

VII. Anlisis de Resultados


5
6
todas las invariantes, precondiciones y post-condiciones
evitando violaciones de integridad e inconsistencia con las
De acuerdo a las pruebas realizadas, se presenta la Tabla 1 especificaciones formales diseadas.
con un anlisis comparativo entre las herramientas
evaluadas para determinar cul es las ms ptima en el
ESCRIBAN AQU SUS RECOMENDACIOES PARA
proceso de generacin cdigo a partir de especificacin
LOS USUARIOS..CON QUE DEBERIAN EMPEZAR
formal utilizando el lenguaje VDM:
PARA ESPECIFICICAR EN VDM++
QUE RECOMIENDAN PARA GENERAR CODIGO
TABLA 1 : ANALISIS COMPARTIVO

Caracter VDMToolBox++ OvertureToolBox


IX. Referencias
stica
[1] R. M. Hierons, K. Bogdanov, J.P.Bowen, R.
Completit Genera cdigo con Genera cdigo con Cleaveland, J. Derrick, J. Dick, M. Gheorghe, M.
ud todas las pocas precondiciones Harman, K. Kapoor, P. Krause, and G. and Lttgen,
precondiciones y y postcondiciones. 2009. Using formal specifications to support
postcondiciones. testing. ACM Computing Surveys (CSUR), 41(2), p.9.

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.

Overture genera un cdigo Java ms limpio, ms legible y


fcil de testear en comparacin con el cdigo generado por
VDM++. Sin embargo, no refleja las condiciones definidas
en invariantes, precondiciones, pos-condiciones y las
ignora en el cdigo generado. A diferencia, VDMTools++
utiliza todas las aserciones y las refleja en el cdigo, lo que
le da mayor confiabilidad pues tiene dentro del cdigo
6

Você também pode gostar