Documentos de Académico
Documentos de Profesional
Documentos de Cultura
230-Texto Del Artículo-812-1-10-20121218
230-Texto Del Artículo-812-1-10-20121218
Julio a Diciembre de 2012, Vol. 7, N°. 14, pp. 82-91 • © 2012 ACOFI • http://www.educacioneningenieria.org
Resumen
El modelamiento formal es una técnica utilizada comúnmente para especificar y verificar modelos
matemáticos de un sistema de software a través de métodos formales. Theorem Proving hace parte de
dichos métodos, el cual utiliza la lógica de primer orden y la teoría de conjuntos para verificar modelos
matemáticos.
Para llevar a cabo el proceso de especificación de un sistema existe una gran variedad de lenguajes,
uno de ellos es Event-B™ y su respectivo entorno de desarrollo Rodin™, ambos proveen los componentes
necesarios para realizar el modelamiento y la verificación formal de sistemas. Este artículo presenta una
guía para llevar a cabo el proceso de especificación y verificación formal de requerimientos basadas
en el modelamiento formal, de esta manera se explora la posibilidad ofrecida por Event-B™ y Rodin™,
como herramientas de apoyo al proceso de verificación.
Palabras clave: modelamiento formal, métodos formales, Theorem Proving, Event-B™, Rodin™, programación
e ingeniería de software
Abstract
Formal modeling is a technique commonly used to specify and verify mathematical models of software
systems through formal methods; Theorem Proving is part of such methods, which uses the first-order
logic and set theory to verify mathematical models.
To perform the specification process of a system there are several languages, one of them is Event-B™
and their respective development environment Rodin™, both provides the necessary components for the
Una guía general para la especificación y verificación formal de requerimientos usando Event-b™ y Rodin™ 83
modeling and formal verification of systems. This paper presents some guidelines for carrying out the
process of formal specification and verification of requirements by exploring the use of Event-B™ and
Rodin™, as tools to support the verification process.
Keywords: formal modeling, formal methods, Theorem Proving, Event-B™, Rodin™, programming and
software engineering
demostradores de teoremas, su estrategia consiste en los eventos a su vez se dividen en dos partes, en la
modelar un caso de estudio extenso en Event-B™ y primera se ubican las guardas, que son condicionales
registrar cada acción llevada a cabo para completar con los que el sistema debe cumplir antes de que se
el respectivo caso. Por otra parte, este artículo se realice la acción; en la segunda se especifican las
orienta hacia una metodología para demostradores acciones con las cuales se modifica el valor de una
de teoremas que puede ser usada tanto por usuarios variable (Abrial, 2010), (Rueda, 2012).
novatos como por expertos.
Generalmente, cuando se piensa en modelar un
El documento se encuentra estructurado de la siguiente sistema es de vital importancia iniciar con un modelo
forma: en la sección 2, se presentan las características básico e ir incrementando las características del
y propiedades de Event-B™ y Rodin™ con el fin mismo. Event-B™ tiene como particularidad el uso
de realizar una contextualización de los conceptos de refinamientos, lo que facilita la representación
relacionados con la notación utilizada en las pautas de sistemas en distintos niveles de abstracción en la
propuestas; en la sección 3, se proponen la guía a medida en que se introducen gradualmente detalles
seguir basada en el modelamiento formal en Event-B™ y complejidad al modelo. Esto se realiza con el fin
para la verificación formal de requerimientos; en la de acercar el modelamiento a la realidad, alcanzando
sección 4, se presenta un caso de estudio en el cual se de esta forma un alto grado de precisión del modelo.
aplica la guía propuesta, en éste se modela un sistema Cuando ocurre el refinamiento de un modelo, los
basado en el tráfico de autos teniendo en cuenta los contextos y máquinas (y sus componentes) anteriores
requerimientos del mismo; y para finalizar, en la al refinamiento pasan a ser llamados abstractos
sección 5 se encuentran las conclusiones de este trabajo. y los contextos y máquinas (y sus componentes)
posteriores al refinamiento pasan a ser llamados
concretos (Abrial, 2010).
2. Características y propiedades
de Event-B™ y Rodin™ Anexo a estas funcionalidades, Event-B™ hace uso
de pruebas matemáticas para verificar la consistencia
Event-B™ entre los diferentes niveles de refinamiento, lo que
garantiza que cada nivel de abstracción generado
Los métodos formales son un conjunto de tendencias cumpla con las propiedades verificadas en los grados
de desarrollo de software en donde la especificación, de abstracción de más alto nivel (Deploy Project,
verificación y diseño de componentes se realiza 2012). Estas pruebas se conocen con el nombre de
utilizando bases sólidas como notaciones, lenguajes, pruebas de obligación (Rueda, 2012) y se utilizan
herramientas y técnicas basadas en teorías de alto para determinar si la especificación es consistente.
fundamento matemático. Event-B™ es un método
formal para el análisis y modelamiento de sistemas, Rodin™
el cual utiliza la teoría de conjuntos y lógica de primer
orden como notación de dicho modelamiento. Es una herramienta que provee soporte efectivo
para la construcción y verificación de modelos en el
La especificación o modelo de un sistema en Event-B™ lenguaje Event-B™ (Deploy Project, 2012). Es una
se compone de dos partes: la parte estática y la parte plataforma Open Source basada en el entorno de
dinámica. La parte estática contiene: los tipos de desarrollo Eclipse distribuida bajo la versión 1.0 de
datos que se representan mediante conjuntos, las la licencia CPL (Free Software Foundation, 2012). La
constantes del sistema y los axiomas, que definen las principal razón por la cual Rodin™ hace parte del
propiedades de las constantes y conjuntos; la parte framework de Eclipse se debe a que permite que sea
estática también es llamada el contexto del modelo. La más extensible mediante complementos o plugins,
parte dinámica -también llamada máquina- contiene: los cuales son elementos que facilitan la integración
las variables presentes en el modelo, los invariantes de la plataforma con distintas funcionalidades tales
que expresan las propiedades de las variables y los como: probadores, editores, generadores automáticos
eventos, los cuales describen acciones que ocurren de código, administradores de requerimientos, entre
en el sistema y modifican el valor de las variables; otros (Deploy Project, 2012a).
Rodin™ posee dos entornos o perspectivas: La pers- A continuación se definen cada una de las fases que
pectiva de Event-B™ y la perspectiva de Pruebas. La hacen parte de la guía para la verificación formal de
perspectiva de Event-B™ dispone de una serie de requerimientos apoyada en Event-B™:
elementos que facilitan la edición del modelo en la
plataforma, utilizando las operaciones y conceptos Análisis: en la fase de análisis, la primera acción a
propios de Event-B™. La perspectiva de pruebas es un realizar es elegir la estrategia de diseño, que consiste
entorno en el cual Rodin™ brinda apoyo al proceso de en analizar todos los requerimientos y seleccionar
verificación formal de requerimientos. Comúnmente, aquellos que son más adecuados para especificar
la verificación de las pruebas se realiza de manera el primer modelo. Se recomienda empezar con los
automática, pero en el caso de que las pruebas de requerimientos que describan las características
obligación no sean efectuadas automáticamente, básicas del sistema. Una vez realizada la selección
Rodin™ proporciona los mecanismos necesarios de requerimientos iniciales se debe escoger cuál o
para realizar la verificación de manera interactiva. cuáles requerimientos se agregarán a los siguientes
modelos para constituir los diferentes refinamientos.
Esta acción no es necesaria en aquellos casos en que
3. Guía para la especificación y verificación el sistema a modelar no sea muy complejo. Después
formal de requerimientos usando Event-B™ de seleccionar la estrategia de diseño se procede a
identificar y separar los requerimientos dinámicos de
En esta sección se plantean unas orientaciones los estáticos, los primeros describen comportamientos,
para llevar a cabo el proceso de especificación y acciones o formas en las que interactúan los elementos
verificación formal de requerimientos partiendo del sistema (requerimientos dinámicos) por su parte los
de su especificación en lenguaje natural hasta su segundos describen características o propiedades de
representación en Event-B™. Se plantea un proceso los elementos del sistema (requerimientos estáticos).
compuesto de 4 fases: análisis, formalización del
contexto, formalización de la máquina y pruebas. Formalización del contexto: Después de identifi-
Estas fases siguen un modelo en espiral, con el fin car los requerimientos estáticos, se debe crear una
de aprovechar el enfoque basado en refinamientos constante por cada propiedad de un elemento descrito
del modelado en Event-B™. En la Figura 1 se puede en estos requerimientos. En caso de que exista una
ver el esquema general que representa el proceso. propiedad que pueda contener múltiples valores,
además de crear una constante por cada valor, se debe
Figura 1. Esquema General del proceso adoptado crear un conjunto y luego definir un axioma en el
para la verificación formal de requerimientos cual relacione por medio de un operador matemático
el conjunto con cada uno de esos valores. Una vez
definidas todas las constantes se definirá el tipo de
cada una de éstas, para esto se crea un axioma por
cada constante, en el cual se especificará el tipo. Un
tipo de constante puede ser un conjunto o un tipo de
número (por tipo de número se entiende el conjunto
de números naturales, reales, enteros, entre otros). Por
último, cualquier otra propiedad de una constante
que se deba asumir como una verdad absoluta en el
resto del modelo debe ser especificada por medio
de un axioma.
Para los refinamientos se debe tener en cuenta lo Cada semáforo vehicular posee un comportamiento
siguiente: si hay eventos que necesiten modificarse, que es definido por luces de color rojo, verde y
se crea una nueva máquina (máquina concreta) para amarillo. Por su parte, los semáforos peatonales poseen
refinar los eventos existentes en la máquina original un comportamiento definido por luces de color rojo
(máquina abstracta). Si en la máquina concreta se crean y verde. Los semáforos (vehiculares y peatonales)
nuevas variables (variables concretas) y estas tienen que se encuentran ubicados en las posiciones Norte
relación con las variables de la máquina abstracta y Sur poseen un comportamiento idéntico, así como
(variables abstractas) se debe especificar dicha relación también los semáforos ubicados en las posiciones
por medio de invariantes. Si en la máquina concreta Este y Oeste.
existen eventos que involucren variables abstractas
que tengan relación con variables concretas deben Figura 2. Sistema de control de tráfico de autos
modificarse de tal forma que estos sólo involucren
las variables concretas.
Requerimientos: a continuación se precisa el com- existentes en el sistema. Para este primer modelo,
portamiento que el sistema de control de tráfico el requerimiento 1 define las propiedades de un
debe seguir semáforo; por esta razón este requerimiento es
estático. Debido a que en los requerimientos
1. Cada semáforo vehicular debe tener 3 tipos de restantes sólo definen el comportamiento de los
luces: roja, amarilla y verde. semáforos vehiculares en diferentes situaciones,
2. Cada semáforo peatonal debe tener 2 tipos de se establecen los requerimientos 3, 4, 6 y 8 como
luces: roja y Verde. dinámicos.
3. La secuencia para el cambio de luz de los semáforos b. Formalización del contexto: en la fase anterior, el
vehiculares debe ser la siguiente: de roja a verde, requerimiento 1 fue seleccionado como estático,
de verde a amarilla y de amarilla a roja. éste describe que cada semáforo vehicular debe
4. El sistema no debe permitir que los semáforos tener 3 tipos de luces: roja, amarilla y verde. Se
vehiculares ubicados en la vía Norte-Sur estén pueden tomar las luces como una característica
en luz verde o amarilla al mismo tiempo que los del semáforo que puede tomar 3 valores distintos
semáforos vehiculares ubicados en la vía Este-Oeste. (rojo, amarillo o verde), entonces en el contexto
5. El sistema debe permitir que los semáforos pea- se definirán 3 constantes, una para cada color y
tonales cambien a luz verde siempre y cuando los un conjunto al cual se declarará como LUCES.
semáforos vehiculares estén en luz roja. Posteriormente por medio del axioma 1 (axm1)
6. El sistema debe permitir que los semáforos se define el tipo y la relación existente entre cada
vehiculares que estén ubicados sobre una misma una de las constantes:
vía (Norte-Sur o Este-Oeste) tengan el mismo
comportamiento. SETS
7. El sistema debe permitir que los semáforos LUCES
peatonales que estén ubicados sobre una misma CONSTANTS
vía (Norte-Sur o Este-Oeste) tengan el mismo Rojo
comportamiento. Amarillo
8. Los semáforos vehiculares ubicados en la vía Verde
Norte-Sur solo pueden estar en luz amarilla AXIOMS
cuando los semáforos vehiculares ubicados en la axm1: partition (LUCES, {Rojo}, {Amarillo}, {Verde})
vía Este-Oeste estén en luz roja y viceversa.
c. Formalización de la máquina: una vez definido el
Especificación: a continuación se detalla el proceso contexto, se pasa a formalizar la parte dinámica
de especificación del modelo de Event-B™ según las de nuestro modelo. Aquí se especifica el compor-
fases descritas en la sección anterior: tamiento de los semáforos, el cual está descrito
por los requerimientos 3, 4, 6 y 8.
1. Primera iteración: Primero se declaran 2 variables (semáforosNS y
semáforosEO), las cuales describirán el compor-
a. Análisis: la primera acción a realizar es definir la tamiento de los semáforos vehiculares ubicados en
estrategia de diseño, primero se diseñará un modelo la vía Norte-Sur y en la vía Este-Oeste. Después,
que describa el comportamiento de los semáforos por medio de las invariantes 1 y 2 (inv1, inv2) se
vehiculares, esto es, incluir los requerimientos 1, especifican que ambas variables son efectivamente
3, 4, 6 y 8; posteriormente se refinará este modelo semáforos vehiculares:
de tal manera que involucre el comportamiento
de los semáforos peatonales, es decir, incluir los inv1: semáforosNS LUCES
requerimientos 2, 5 y 7. inv2: semáforosEO LUCES
Una vez seleccionada la estrategia de diseño,
se eligen los requerimientos estáticos y dinámi- Las variables semáforosNS y semáforosEO
cos; como se estableció en la sección anterior, junto con sus respectivas invariantes describen
los requerimientos estáticos son aquellos que el requerimiento 6. Luego con los invariantes 3
definen propiedades de los elementos u objetos y 4, se cumple con el requerimiento 4:
d. Pruebas: una vez implementado el modelo, Rodin™ inv1 : sem_peatonalNS {Verde, Rojo}
por medio de sus probadores automáticos realiza inv2 : sem_peatonalEO {Verde, Rojo}
las pruebas de obligación necesarias para probar
Las variables sem_ peatonalNS y sem_ peatonalEO Como se puede ver hay un nuevo componente en
junto con sus respectivos invariantes describen los el evento y es la sección REFINES, en esta sección
requerimientos 2 y 7. A través de las invariantes se hace referencia al evento abstracto que se está
3 y 4, se expresa el requerimiento 5, además se refinando. En este evento se agrega una guarda y
establece la relación entre las variables del modelo una acción, dichos elementos describen el proceso
anterior (variables abstractas) y las variables del de cambio de luz de rojo a verde y también evitan
nuevo modelo (variables concretas): que los semáforos peatonales cambien a luz verde
cuando los semáforos vehiculares están en luz roja,
inv3 : semáforosNS {Verde, Amarillo} situación que concuerda con el requerimiento 5.
sem_peatonalNS = Rojo
inv4 : semáforosEO {Verde, Amarillo} d. Pruebas: terminado de implementar el sistema,
sem_peatonalEO = Rojo Rodin™ se realizan una vez más las pruebas de
obligación necesarias para probar que el sistema es
Antes de pasar a refinar los eventos de la máquina consistente. En esta iteración se realiza un nuevo
abstracta se crean las variables que se utilizarán en tipo de pruebas de obligación además de las pruebas
esos eventos y se establece por medio de invariantes de factibilidad y consistencia. Este nuevo tipo de
(inv5, inv6) su relación con las variables abstractas: pruebas son llamadas de ausencia de bloqueos,
las cuales lograron verificar que las guardas de
inv5 : semNS = semáforosNS los eventos abstractos son preservadas por las
inv6 : semEO = semáforosEO guardas de los eventos concretos y no presentan
contradicciones entre ellas, esto se hace con el fin
Como se puede observar en las invariantes 5 y de evitar que el sistema entre en un punto muerto.
6 (inv5, inv6) las variables concretas (semNS,
semEO) tendrán el mismo comportamiento en Si se tiene en cuenta que todos los axiomas e
los eventos refinados que las variables abstractas invariantes, así como todos los eventos fueron
(semáforosNS, semáforosEO). diseñados conforme las características estipuladas
La última acción es definir los eventos de inicia- en los requerimientos y que además Rodin™
lización y los eventos concretos, que no son más no encontró inconsistencia en ellos, se infiere
que los eventos de la máquina abstracta refinados. que dichos requerimientos han sido verificados
De la misma manera en que se hizo la iteración formalmente.
anterior, todas las variables que representan a los
semáforos vehiculares y peatonales serán inicia-
lizadas en Rojo. Para definir el comportamiento 5. Conclusiones
de los semáforos peatonales en esta iteración se
deben refinar todos los eventos de la primera A través de este trabajo se han llegado a las siguientes
iteración, es decir se deben refinar todos los conclusiones:
eventos abstractos. A continuación se ilustrará
la manera en que se refinó uno de los eventos de • La verificación formal de requerimientos por medio
la primera iteración: de herramientas basadas en probadores automáticos
(Theorem Proving) como Rodin™ es posible. El
Evento Pasar_Rojo_NS1: éxito de estas herramientas depende del nivel de
REFINES descripción del sistema a modelar. A partir de una
Pasar_Rojo_NS especificación precisa de las características que
WHEN debe tener el sistema y el modelo del sistema, los
grd1: semNS = Amarillo resultados que ofrecen estas herramientas serán
grd2: sem_peatonalNS = Rojo confiables y se podrá determinar, con un alto
THEN grado de precisión, que el modelo es consistente
act1: semNS := Rojo (o inconsistente) con respecto a la especificación
act2 : sem_peatonalNS := Verde de requerimientos.
Referencias
Aagaard, M., Leeser, M. (1993). A Theorem Proving Based Cimatti, A. Giunchiglia, A. Mongardi, G. Romano, D.
Methodology for Software Verification. Recuperado Torielli, F. Traverso, P. (1997). Model Checking
en noviembre de 2012 de http://ecommons.cornell. Safety Critical Software with SPIN: An Application
edu/bitstream/1813/6101/1/93-1335.pdf. to a Railway Interlocking System. Proceedings.Third
Abrial, J. R. (2010). Modeling in Event-B - System and SPIN Workshop, R. Langerak, ed., Twente Univ, 1-13.
Software Engineering. Cambridge University Press. Clarke, E. (1997). Model checking. Foundations of software
Abrial, J., Butler, M., Hallerstede, S., Hoang, T., Mehta, technology and theoretical computer science, 54–56.
F., & Voisin, L. (2010). Rodin: an open toolset for Deploy Project. (2012). Rodin User’s Handbook. Recuperado
modeling and reasoning in Event-B. International en junio de 2012 de http://handbook.Event-B.org/
Journal on Software Tools for Technology Transfer current/html/index.html.
(STTT), 12 (6), 447–466. Deploy Project. (2012a) Rodin Plug-ins. Recuperado en
Badeau, F., & Amelot, A. (2005). Using B as a high level junio de 2012 de http://wiki.Event-B.org/index.
programming language in an industrial project: php/Rodin_Plug-ins.
Roissy VAL. ZB 2005: Formal Specification and Duque, J. G. (2000). Especificación, verificación y mante-
Development in Z and B, 15 - 25. nimiento de requisitos funcionales con técnicas de
Behm, P., Benoit, P., Faivre, A., & Meynadier, J. M. (1999). descripción formal. PhD thesis, Departamento de
METEOR: A successful application of B in a large Tecnología de las Comunicaciones. University of Vigo.
project. FM’99—Formal Methods, 712 - 712. Free Software Foundation. (2012). Common Public License:
Bibel, W. (1987). Automated Theorem Proving Artificial Licencia Pública Común. Recuperado en junio de
Intelligence. (2da. Ed.). Braunschweig: Vieweg & Sohn. 2012 en http://www.gnu.org/licenses/license-list.
Bloem, R. Cavada, R. Pill, I. Roveri, M. & Tchaltsev, es.html#SoftwareLicenses.
A. (2005). RAT: A tool for the formal analysis Gervasi, A. & Zowghi, A. (2005). Reasoning about
of requirements. In Proc. 19th CAV, LNCS 4590, inconsistencies in natural language requirements.
263–267. ACM Transactions on software engineering and
Bove, A., Dybjer, P. & Norell, U. (2009). A Brief Overview methodology, 277-330.
of Agda - A Functional Language with Dependent Jones, C. B. (1990). Systematic software development
Types. Theorem Proving in Higher Order Logics , using VDM, Vol. 2. Prentice Hall.
5674 (LNCS), 73-78. Montoya, E. S. (2010). Métodos formales e Ingeniería de
Cavada, R. Cimatti, A. Mariotti, A. Mattarei, C. & Micheli, Software. Revista Virtual Universidad Católica
A. (2009). Supporting Requirements Validation: del Norte, (30), 1–26.
The EuRailCheck Tool. Proceedings of the 2009 Nipkow, T., Paulson, L. C., & Wenzel, M. (2002). Isabelle/
IEEE/ACM International Conference on Automated HOL: a proof assistant for higher-order logic,
Software Engineering, 665 – 667. Springer Verlag, 2283.
Owre, S., Rushby, J., & Shankar, N. (1992). PVS: A prototype Recuperado en agosto de 2012 de http://wiki.event-b.
verification system, Automated Deduction—CADE- org/images/SM%26D-KAR.pdf
11, 748–752. Rueda, C. (2012). Desarrollo Formal de Software:
Padidar, S. (2010). A Study In The Use Of Event-B For Obligaciones de Prueba. Recuperado en febrero
System Development From A Software Engineering de 2012 de http://cic.javerianacali.edu.co/wiki/
Viewpoint. MSc Dissertation, University of lib/exe/fetch.php?media=materias:desarrollo:cla
Edinburgh. Recuperado en noviembre de 2012 se4_5-obligaciones.pdf.
de http://www.ai4fm.org/papers/MSc-Padidar.pdf Wiegers, K. (2003). Software Requirements. (2da. Ed.).
Robinson, K. (2011). System Modeling & Design Using Microsoft Press.
Event-B. The University of New South Wales.