ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
GRADO EN INGENIERÍA DEL SOFTWARE
Análisis de P og amas de P ocesamien o de E en os Complejos
Analysis o Complex E en P ocessing P og ams
Realizado po
Ad ián Ga cía López
Tu o izado po
An onio Vallecillo Mo eno
Lola Bu gueño Caballe o
Depa amen o
Lenguajes y Ciencias de la Compu ación
UNIVERSIDAD DE MÁLAGA
MÁLAGA, JUNIO DE 2018
Fecha de ensa:
El Sec e a io del T ibunal
ii
iii
Resumen
El p ocesamien o de e en os complejos (CEP, po sus siglas en inglés: Complex E en
P ocessing), es á ganando acep ación en los en o nos dis ibuidos de iempo eal, al p o-
po ciona una o ma ápida y e icien e de co elaciona e in e i conclusiones sob e e en os
que ocu en en iempo eal. Es a ecnología iene un amplio campo de aplicación como
pueden se el In e ne de las Cosas (IoT), moni o ización de sis emas o ale a de si uacio-
nes de iesgo en in aes uc u as sani a ias, en e o as. La ca ac e ís ica más impo an e
de es os ipos de p og amas, es la capacidad de exp esa pa ones de sucesos sob e los
e en os, median e la de inición de eglas. La especi icación de es os ipos de pa ones se
ealiza u ilizando lenguajes de p ocesamien o de e en os como Espe , el cual ha sido u i-
lizado en es e p oyec o. Es muy impo an e la co ec a especi icación de es os pa ones ya
que de ellos depende el co ec o uncionamien o del sis ema.
Con al in, se ha desa ollado una he amien a capaz de analiza dos p opiedades que
pueden comp oba se es á icamen e en las especi icación de los p og amas CEP basados
en eglas: la aciclicidad de las dependencias en e eglas y las condiciones de ca e a en-
e eglas. Ambas ca ac e ís icas ienen que lidia con el ca ác e no de e minis a de los
sis emas basados en eglas.
Pa a el desa ollo de es a he amien a se ha u ilizado un en oque MDSE (Model-D i en
So wa e Enginee ing). Más conc e amen e, se ha desa ollado un plug-in capaz de econo-
ce el lenguaje Espe y ob ene como salida una ep esen ación en o ma de g a o di igido
pa a la isualización de los esul ados del análisis.
Palab as cla e: P ocesamien o de E en os Complejos, Espe , Ingenie ía de So -
wa e Di igida po Modelos, X ex , Análisis Es á ico.
i
Abs ac
Complex E en P ocessing (CEP) is ha ing a good accep ance in dis ibu ed eal- ime
en i onmen s since i p o ides a quick and e icien way o co ela e and in e conclusions
abou e en s ha happen in eal ime. This echnology can be used in se e al a eas such
as In e ne o Things (IoT), sys ems moni o ing o c i ical si ua ion de ec ion in clinical
en i onmen , among o he s. The mos impo an cha ac e is ic o his kind o p og ams
is he abili y o exp ess occu ences pa e ns o e e en s, by de ining ules. The speci ica-
ion o hese ypes o pa e ns is ca ied ou by using e en p ocessing languages such as
Espe . The co ec speci ica ion o hese pa e ns is c ucial because he co ec beha io
o he sys em depends on hem.
To his end, we ha e de eloped a ool capable o analyzing wo p ope ies ha i can
be checked h ough he s a ic analysis o ule-based CEP p og ams: pa e n acyclici y
and pa e n ace condi ions. They bo h ha e o deal wi h he non-de e minis ic na u e o
ule-based sys ems.
Fo he de elopmen o his ool, a Model-D i en So wa e Enginee ing app oach has
been used. In pa icula , we ha e de eloped a plug-in capable o ecognizing Espe lan-
guage and ob ain as ou pu a di ec ed g aph ep esen a ion o isualizing he esul o
he analysis.
Key wo ds: Complex E en P ocessing, Espe , Model-D i en So wa e Enginee ing,
X ex , S a ic Analysis.
Índice gene al
1. In oducción 1
1.1. Obje i os .................................... 1
1.2. Mo i ación .................................... 2
1.3. Ta eas a desa olla ............................... 3
1.4. Me odología y ases de abajo ......................... 3
1.4.1. Me odología ............................... 3
1.4.2. Fases de abajo ............................. 4
1.5. Es uc u a de la memo ia ........................... 5
2. Es ado del a e 7
2.1. Ingenie ía del So wa e Di igida po Modelos ................. 7
2.1.1. In oducción ............................... 7
2.1.2. P incipios Básicos ............................ 9
2.1.3. Lenguajes Especí icos de Dominio (DSLs) .............. 10
2.2. P ocesamien o de E en os Complejos ..................... 11
2.2.1. In o ma ion Flow P ocessing (IFP) domain .............. 11
2.2.2. Sis emas de P ocesamien o de E en os Complejos .......... 13
2.2.3. Análisis es á ico de p og amas CEP .................. 14
2.3. Espe ....................................... 15
3. Tecnologías u ilizadas 21
3.1. Ja a ....................................... 21
3.1.1. Lib e ías y amewo k u ilizados .................... 21
3.2. X end ...................................... 22
3.3. X ex ....................................... 23
3.3.1. Es uc u a de un p oyec o X ex ................... 23
3.3.2. Ejemplo de uso ............................. 24
3.3.3. Edi o de ex o ............................. 26
3.3.4. Gene ación de código .......................... 26
3.4. ANTLRWo ks .................................. 28
3.5. GEF (G aphical Edi ing F amewo k) ..................... 28
i ÍNDICE GENERAL
3.6. G aph iz ..................................... 29
3.6.1. DOT ................................... 29
4. Es uc u a de la he amien a 31
4.1. En o no ..................................... 31
4.2. De inición de la g amá ica ........................... 32
4.2.1. El p oblema de la g amá ica ambigua ................. 37
4.3. Gene ación de código .............................. 38
4.3.1. Algo i mos u ilizados .......................... 40
5. Validación y p uebas 45
5.1. Depu ación de la g amá ica .......................... 45
5.2. P uebas de eg esión .............................. 47
6. Conclusiones 51
6.1. Desa ollo de la he amien a .......................... 51
6.2. Líneas u u as de ampliación .......................... 52
A. Manual de ins alación 53
A.1. Eclipse ...................................... 53
A.2. X ex ....................................... 53
A.3. GEF (G aphical Edi ing F amewo k) ..................... 54
A.4. G aph iz ..................................... 55
B. Manual de usua io 57
C. De inición de la g amá ica u ilizada en el lexe 61
D. Conjun os de eglas u ilizados 65
D.1. Sma House ................................... 65
D.2. Mo o Bike .................................... 66
D.3. Nuclea powe s a ion ............................. 67
D.4. Ai Quali y ................................... 68
Capí ulo 1
In oducción
Es e capí ulo se i á pa a con ex ualiza el en o no de la he amien a desa ollada,
mos ando pues, su mo i ación, obje i os del desa ollo y, po úl imo, se e á la es uc u a
del p esen e documen o.
1.1. Obje i os
El obje i o undamen al del p oyec o es la ealización de una he amien a capaz de
analiza p opiedades en la especi icación de los p og amas de P ocesamien o de E en os
Complejos [Cugola and Ma ga a, 2012], [E zion and Nible , 2010] basados en eglas. La
he amien a se basa en un Analizado Sin ác ico [Dick and Ce iel, 1990] ( ambién cono-
cido como pa se ) capaz de econoce es as eglas y, pos e io men e, gene a conclusiones
sob e ellas.
Es a memo ia desc ibe la he amien a que hemos ealizado como pa e del T abajo
Fin de G ado, y que pe mi e ealiza di e sos ipos de análisis es á icos sob e p og a-
mas de P ocesamien o de E en os Complejos (CEP po sus siglas en inglés, Complex
E en P ocessing). La he amien a se ha desa ollado siguiendo las écnicas de Desa o-
llo de So wa e Di igido po Modelos [Ga cía e al., 2013,B ambilla e al., 2017] (DSDM
po sus siglas) po la e sa ilidad que o ece pa a el desa ollo de es e ipo de aplicaciones.
En cuan o a su uncionalidad, la he amien a es capaz de de ec a ciclos en la especi-
icación de un conjun o de eglas y ale a sob e és os. En el caso de que no se de ec en
ciclos, se pod á hace una comp obación de las p io idades asignadas a las eglas y gene a
el mismo conjun o de eglas con las p io idades a endiendo su o den opológico.
Finalmen e, al a a se de un T abajo Fin de G ado, los obje i os que se p e endían
con es e abajo ambién incluyen los de conoce y amilia iza se con di e sos concep os y
écnicas que no se han is o en el g ado, así como pone en p ác ica las enseñanzas ecibi-
1
8CAPÍTULO 2. ESTADO DEL ARTE
guajes de p og amación. Con es o conseguimos pode azona sob e el sis ema dejando
de lado de alles de implemen ación y, a su ez, consegui un al o ni el de au oma iza-
ción al pode gene a pa es del sis ema aplicando ans o maciones sob e los modelos
que lo componen. Todo lo dicho an e io men e se ía los obje i os undamen ales de es e
pa adigma pa a comba i el p incipal p oblema del desa ollo so wa e, su complejidad
[Ga cía e al., 2013,Vallecillo, 2018].
Ac ualmen e nos encon amos en un momen o donde la Ingenie ía del So wa e Di i-
gida po Modelos se encuen a a caballo en e su adopción en la indus ia y su alidación
como pa adigma de desa ollo so wa e a a és de es udios que e alúen su compo a-
mien o en e a los mé odos de desa ollo so wa e adicionales. Pa a lle a a cabo una
adopción o al de es e pa adigma en la indus ia, podemos e los di e en es pun os que
el au o B an Selic nos mues a en su a ículo “Mani es aciones sob e MDA” [Selic, 2008]:
1. Comple a los es udios eó ico y desa olla he amien as que sean obus as y usa-
bles.
2. Hace e a las emp esas los bene icios de la implan ación de es e pa adigma en sus
desa ollos.
3. Dispone de pe sonal cuali icado que en ienda el pa adigma MDSE. Pa a es o hay
que ac ua en es ámbi os: la in es igación y desa ollo de nue as he amien as, la
enseñanza de es e pa adigma en las uni e sidades y la ealización y ans e encia de
p oyec os que pe mi an ansmi i la in o mación ob enida en las emp esas.
La Ingenie ía de So wa e Di igida po Modelos u o su g an auge con el nacimien o
de UML (Uni ied Modeling Language) [OMG, 2018], una no ación que nos pe mi e especi-
ica , isualiza y documen a los di e en es modelos de un sis ema so wa e. El p oblema
esidía en la u ilización de UML pa a documen a al inal del desa ollo, lo cual no es una
acción e ónea, pe o haciendo es o, no se es aba sacando el máximo p o echo de los mode-
los [Ga cía e al., 2013]. En el a ículo de G ady Booch “G owing he UML” [Booch, 2002],
podemos encon a los 4 pila es undamen ales sob e el po encial de los modelos:
1. Documen a el p oceso de desa ollo so wa e.
2. Razona sob e el p opio sis ema.
3. Comunica ideas y omen a la discusión sob e los di e en es aspec os del sis ema.
4. Gene a pa es del sis ema ans o mando es os modelos.
La MDSE nace pa a acili a la au oma ización del desa ollo de so wa e en la in-
dus ia pe o oda ía queda un la go camino has a que su adopción sea comple a. Po
2.1. INGENIERÍA DEL SOFTWARE DIRIGIDA POR MODELOS 9
un lado, hacen al a más es udios sob e la o ma de enseña es e nue o pa adigma en las
aulas. En el a ículo de Jo di Cabo y Dimi is Kolo os “Human ac o s in he adop ion o
model-d i en enginee ing: an educa o ’s pe spec i e” [Cabo and Kolo os, 2016] podemos
encon a un análisis sob e los p oblemas encon ados en la enseñanza de es e pa adigma a
es udian es. Po o o lado, hacen al a in eg a he amien as MDE en el ámbi o especí ico
de compañías pa a hace e el po encial la Ingenie ía de So wa e Di igida po Modelos.
No obs an e, es amos an e el pa adigma de desa ollo de so wa e que se asen a á y se á
u ilizado en el u u o.
2.1.2. P incipios Básicos
La Ingenie ía de So wa e Di igida po Modelos no es solo un pa adigma de desa ollo
de so wa e, sino que se compone de es g andes subconjun os los cuales pod íamos de ini
como “subpa adigmas” en ocados en un ámbi o conc e o [Ga cía e al., 2013].
Figu a 2.1: Pa adigmas en los que se di ida MDE y los cuales es án elacionados con el
p oyec o.
En la Figu a 2.1 podemos obse a los “subpa adigmas” de in e és pa a es e p oyec-
o. MDD (po sus siglas en inglés Model-D i en De elopmen ) u iliza los modelos pa a
la gene ación di ec a de a e ac os [B ambilla e al., 2017]. No malmen e el esul ado es
u o de la gene ación au omá ica desde un modelo. Cabe des aca que exis en dos “sub-
pa adigmas” más den o de MDE (MDR y Models@ un ime), los cuales, simplemen e, se
mencionan ya que se salen del conocimien o de es e p oyec o.
Aunque el obje i o de es os “subpa adigmas” de i ados de la Ingenie ía Basada en
Modelos (MDE) es én cla amen e di e enciados, odos ellos ienen los mismo p incipios
undamen ales [Ga cía e al., 2013]:
1. Un modelo ep esen a o al o pa cialmen e una ca ac e ís ica de un sis ema so wa e.
2. Es os modelos se ep esen an con Lenguajes Especí icos de Dominio (DSL).
10 CAPÍTULO 2. ESTADO DEL ARTE
3. Un DSL es ep esen ado a a és de un me amodelo
4. No malmen e, la au oma ización se consigue ealizando ans o maciones desde los
modelos a código.
Es e p oyec o eside en el ámbi o de MDD ya que la el in p incipal es la ealización de
una he amien a (aplicación). Más conc e amen e en el Desa ollo Especí ico del Dominio
(DSM po sus siglas en inglés, Domain-Speci ic Modeling), el cual se basa en el desa ollo
de DSL pa a in en a sal a la complejidad de un dominio especí ico y pode p og ama
ce cano a él. En la siguien e sección se en a á en más de alle en el campo de los Lenguajes
Especí icos de Dominio.
2.1.3. Lenguajes Especí icos de Dominio (DSLs)
Los Lenguajes Especí icos de Dominio, a di e encia de los lenguajes de p og amación de
p opósi o gene al, es án desa ollados con el in de esol e p oblemas y c ea cons uccio-
nes especí icas sob e un de e minado dominio. Es e dominio puede se écnico (desa ollo
de un DSL pa a cie o amewo k, po ejemplo) o no (á ea de negocio). En cualquie
caso, u ilizando DSL conseguimos una mayo p oduc i idad y calidad al abs ae de alles
que son especí icos de un lenguaje de p og amación (o amewo k) o de á eas de negocio
[Ga cía e al., 2013].
En la Figu a 2.2 podemos e las di e en es pa e s de un DSL y como se elacionan
en e ellas:
Sin axis abs ac a: de ine la es uc u a lógica, qué exp esiones son co ec as u i-
lizando los concep os del lenguaje. En pocas palab as, nos dice cuándo un modelo
es á bien o mado. La sin axis abs ac a se de ine median e un me amodelo, que no
es más que el modelo de la p opia sin axis abs ac a de un DSL.
Sin axis conc e a: do a al DSL de no ación y aspec os de isualización. Podemos
di e encia dos ipos de sin axis conc e a: ex ual, las cuales son más exp esi as
y no malmen e suelen es a basadas en g amá icas (es e es el caso de X ex , he-
amien a cen ada en el desa ollo de DSL ex uales. Más adelan e se en a á en
de alles sob e es a he amien a) y g á icos, cen ados en en la ep esen ación del
DSL median e diag amas. Un mismo DSL puede ene a ias ep esen aciones (sin-
axis conc e a), la sepa ación de los ipos de sin axis (abs ac a y conc e a) es una
ca ac e ís ica undamen al en la Ingenie ía de So wa e Di igida po Modelos. Es e
p oyec o combina aspec os de los dos ipos de sin axis conc e a de DSL, po un lado
la pa e de la de inición de la g amá ica y po o o lado la isualización g á ica del
DSL.
2.2. PROCESAMIENTO DE EVENTOS COMPLEJOS 11
Semán ica: de ine la u ilidad del DLS, es deci , la ans o mación de los concep os
ecogidos en el DSL a concep os cuya semán ica ya es conocida.
Figu a 2.2: Esquema de la es uc u a de un DSL basado en [Ga cía e al., 2013]
Un ejemplo de Lenguajes Especí icos de Dominio se ía SQL [Mic oso , 2018], que no es
más que un DSL pa a la ges ión y manipulación de bases de da os, abs ayendo odos los
de alles de bajo ni el. O os ejemplos se ían CSS (Cascading S yle Shee s) [Mozilla, 2018]
pa a do a de es ilo a las páginas webs y el p opio lenguaje DOT [G aph iz, 2018b] u i-
lizado en es e p oyec o pa a la ep esen ación de g a os (más de alles en el Capí ulo 3).
Pa a conclui es e apa ado hay que no a que la u ilización de de los DSL nos pe mi e
un aumen o de la abs acción, pe o es a abs acción iene que se seguida po un aumen o
de la au oma ización pa a que el uso de los DSLs sea e ec i o. Es o se consigue g acias
a la semán ica do ada al DSL que en la mayo ía de los casos son ans o maciones de
modelo a ex o (o código) (M2T) y de modelo a modelo (M2M).
2.2. P ocesamien o de E en os Complejos
2.2.1. In o ma ion Flow P ocessing (IFP) domain
La o ma de a a los da os en los sis emas ac uales es á cambiando. Clásicamen e,
nos encon ábamos con sis emas en los que la in o mación enía que se p e iamen e pe -
sis ida pa a luego se a ada, hablamos de los Da a Base Managemen Sys ems (DBMS).
Es os sis emas se ca ac e izan po la poca asa de ac ualización de los sis emas, es deci , el
p ocesado de lo da os (una ez pe sis idos) se limi a ha hace se bajo demanda del usua io.
12 CAPÍTULO 2. ESTADO DEL ARTE
Cuando el usua io ealiza una consul a a un DBMS (po ejemplo, una aplicación web cuyo
sis ema de pe sis encia es una base de da os elacional), es a consul a p oduce una es-
pues a que es de uel a al usua io. Podemos esumi que pa a cada consul a se p oduce un
único a amien o de los da os y el esul ado es de uel o a las capas ex e io es del sis ema.
Hoy en día, debido a la e olución de los sis emas que necesi an nu i se de in o mación
de una mane a con inua (in e i conclusiones sob e una g an can idad de da os en an es,
ale a de si uaciones c í icas en el sis ema, supe isión de sis emas, e c) nacen los sis e-
mas IFP. Es os sis emas pe mi en el p ocesado con inuo de da os p oceden es de di e sas
uen es ex e nas al sis ema. Una ca ac e ís ica esencial de es os sis emas es la posibilidad
de p ocesas lujos de da os sin ene la necesidad de hace una pe sis encia p e ia de ellos.
No obs an e, podemos encon a sis emas en los que sí se ealicen pe sis encia de los da os.
Pa a al come ido, las a qui ec u as de es os sis emas, así como sus mecanismos de p oce-
sado y sus modelos da os di ie en de los adicionales DBMS [Cugola and Ma ga a, 2012].
El obje i o de es os sis emas es la ealización de una se ie de a amien os o ans-
o maciones de los da os pa a ob ene conclusiones an p on o como los da os en an
en el sis ema. Ac ualmen e nos encon amos con dos ipos de sis emas IFP que son los
p edominan es en la indus ia: los sis emas de Da a S eam P ocessing y los sis emas de
P ocesamien o de E en os Complejos (CEP).
Los sis emas de Da a S eam P ocessing nacen a aíz de una e olución de los sis e-
mas adicionales DBMS pa a da pie a los DSMS (po sus siglas en inglés Da a S eam
Managemen Sys ems). Se basan en la ans o mación de lujos de da os que p o ienen
desde ue a del sis ema, pa a p oduci nue o lujos de da os que se án a ados nue a-
men e (den o del sis ema) o en iados ue a de sis ema. La di e encia más sus ancial con
los DBMS es que cuando és os pa a cada consul a p oducen una espues a, los DSMS
man ienen un conjun o de consul as (o ans o maciones) que son aplicadas a cada da o
que en a en el sis ema, con independencia de si son pe sis idos o no pos e io men e.
Po su pa e, el P ocesamien o de E en os Complejos se basa en el a amien o de los
da os como no i icaciones de e en os que se in oducen en el sis ema o se p oducen den o
del mismo. Tiene sus o ígenes en el modelo Publicado -Susc ip o [Eugs e e al., 2003]
sal ando la di e encia de que en el modelo Publicado -Susc ip o , los e en os son conside-
ados aislados unos de o os (se a an indi idualmen e) y en los sis emas CEP podemos
in e i conclusiones cuando un de e minado pa ón de e en os ocu e en el sis ema.
2.2. PROCESAMIENTO DE EVENTOS COMPLEJOS 13
2.2.2. Sis emas de P ocesamien o de E en os Complejos
Los sis emas CEP a an los da os como no i icaciones de e en os. Pa a sabe a qué
nos e e imos con el concep o de e en o podemos i nos a la de inición que se da en
[E zion and Nible , 2010]: “Un e en o es una ocu encia den o de un sis ema o domi-
nio pa icula ; es algo que ha sucedido, o se con empla como ocu ido en ese dominio.
La palab a e en o ambién se u iliza pa a de ini una en idad de p og amación que e-
p esen a la ocu encia de al suceso en un sis ema in o má ico”. En los sis emas CEP
u ilizamos la segunda de inición de e en o, una ep esen ación in o má ica de una ocu-
encia. Necesi amos al de inición po que, como se ha comen ado con an e io idad, la
p incipal ca ac e ís ica de CEP es la habilidad de pode eacciona cuando una se ie de
e en os conc e os ocu a en el sis ema, y pa a ello, necesi amos al ep esen ación in o -
má ica pa a pode a a lo.
En los sis emas CEP podemos de ini dos ipos de e en os:
E en os simples: no malmen e es os e en os son gene ados median e los p oduc-
o es de e en os. És os pueden se : un senso (po ejemplo de empe a u a), un
p oceso de negocio (po ejemplo, un p oceso de ese a de habi aciones de un ho el
que al inal del mismo emi e un e en o de habi ación ese ada), un sis ema (el cual
de ec a una sob eca ga de á ico en la ed y lo no i ica median e el en ío de un
e en o), e c. Los di e en es p oduc o es en ia an los e en os gene ados a un sis ema
de p ocesado (en es e caso un mo o de P ocesamien o de E en os Complejos) pa a
su a amien o.
E en os complejos: en un sis ema CEP, pa a pode eacciona a de e minados
pa ones de e en os, enemos que de ini eglas que exp esen ese pa ón. Po ejem-
plo: si enemos un sis ema que ecibe e en os de empe a u a y nues o mo o iene
una egla que, cuando ecibe una e en o de empe a u a cuya empe a u a es ma-
yo que 80º, p oduce un e en o de encendido de los ociado es de agua, el e en o
esul an e de ejecu a es a egla se ía conside ado como un e en o complejo. Los
e en os complejos pueden se en iados di ec amen e a los consumido es de e en os,
que no son más que sis emas que eciben es os e en os complejos y ealizan una cie -
a acción en consecuencia. Pueden se desde sis emas de pe sis encia, ac uado es o
o os p ocesos de negocio. También, es os e en os complejos pueden se consumidos
nue amen e po o as eglas del mo o de p ocesamien o CEP, si hay alguna egla
que equie a de la p esencia de algún o o e en o complejo pa a se ejecu ada.
Las eglas mencionadas an e io men e son especi icadas a a és de lenguajes de P o-
cesamien os de E en os y ienen una es uc u a en común en la mayo ía de los sis mas
CEP [Mo eno e al., 2018]:
14 CAPÍTULO 2. ESTADO DEL ARTE
Fase de selección: en es a ase se analiza cuáles son los e en os, an o simple
como complejos, que hacen que la egla se ejecu e. Pa a la única egla exis en e en
el ejemplo an e io del senso de empe a u a, en es a ase end íamos que la egla
solo se ejecu a ía con e en os de ipo empe a u a. En esumen, pa a cada egla
end emos, as es a ase, lo que denomina emos el conjun o de dependencias, ya
que en él es a án odos los e en os de los que depende la ejecución de la misma.
Fase de empa ejamien o: eniendo en cuan a los e en os de la ase de selección,
enemos que e si odos ellos cumplen los equisi os pa a la ejecución. Vol iendo al
ejemplo an e io , la egla solo se ejecu a ía si el e en o de ipo empe a u a con iene
una empe a u a mayo a 80º. Es e es un ejemplo muy simple, pe o en escena ios
más complejos se pod ía combina los e en os de la ase de selección con ope ado es
lógicos (and,o ,->, e c.).
Fase de p oducción: en es a ase se de inen qué ipo de da os, ex aídos de los
a ibu os de los e en os de la ase de selección, se an a p oduci en o ma de e en o
en el caso de que la egla se ejecu e. En el ejemplo an e io , cuando en iamos el
e en o de encendido de los ociado es, pod íamos en ia como a ibu os un iden i-
icado del senso que ha p oducido la ale a, pa a que el consumido sepa dónde se
ha p oducido la ale a.
Figu a 2.3: G a o di igido de las dependencias en e eglas ex aído de
[Mo eno e al., 2018]
2.2.3. Análisis es á ico de p og amas CEP
Los p og amas CEP son p og amas basados en eglas pa a pode in e i conclusiones
median e la de inición de cie os pa ones de e en os. A aíz de lo an e io comen ado,
su gen dos p opiedades ca ac e ís icas de es os ipos de p og amas: la aciclicidad y el o den
2.3. ESPER 15
en e eglas. Es as p opiedades ocu en debido al ca ác e no de e minis a y con luen e (el
o den de ejecución de las eglas impo a) de es os sis emas [Bu gueño e al., 2018]. Es as
dos p opiedades son las que se han conseguido au oma iza median e el desa ollo de la
he amien a.
Aciclicidad de las eglas
Supongamos que enemos las eglas que es án ep esen adas en la Figu a 2.3 como un
g a o di igido, donde los nodos con o ma de ec ángulos son e en os simples y los e en os
con o ma de ó alo son e en os complejos. Es e g a o mues a sis ema CEP en una Sma
House y no iene ningún ciclo en e sus e en os.
Imaginemos que, po e o , la egla “COHigh” u ie a en su conjun o de dependencias
al e en o “Fi eWa ning”, con lo cual se es a ía o mando un ciclo en e ambas eglas.
Es o no quie e deci que la especi icación de las eglas sea inco ec a, pe o puede llega
a p oduci si uaciones de bucles in ini os (una egla que p oduce un ipo de e en o que
consume o a egla que, a su ez, p oduce un e en o que consume la p ime a). Ale a de
es a si uación puede supone co egi e o es c í icos en la especi icación.
O den en e eglas
Dadas dos eglas R1, R2, la p ime a consume e en os de ipo by p oduce e en os de
ipo a, y la segunda consume e en os de ipo cy p oduce e en os de ipo b. Suponga-
mos que ecibimos un e en o de ipo cy que R2se ejecu a an es que R1, con lo cual
ob end ías como esul ado la salida de dos e en os, uno de ipo by o o de ipo a. El p o-
blema su ge cuando p ime o se comp ueba la egla R1y, pos e io men e, R2. A la llegada
del e en o cla egla R1no p oduci ía nada ya que no consume e en os de es e ipo, pe-
o la egla R2sí que lo ha ía, con lo cual ob end íamos como esul ado un e en o de ipo b.
Pa a sol en a es e ipo de si uaciones algunos lenguajes de P ocesamien o de E en os
incluyen la posibilidad de inclui p io idades a las eglas, de al mane a que, a la llegada
de un e en o, siemp e se comp ueben an es las más p io i a ias. En el ejemplo an e io ,
R2se ía más p io i a ia que R1.
2.3. Espe
Espe [Espe Tech, 2018] es un mo o de p ocesamien o de e en os complejos de código
abie o (open-sou ce) que pe enece a la compañía Espe Tech Inc. P opo ciona un lengua-
je de p ocesamien o de e en os pa a especi ica eglas sob e e en os simples y compues os.
16 CAPÍTULO 2. ESTADO DEL ARTE
Como se ha comen ado en la sección an e io , es e ipo de mo o es son capaces de
co elaciona conside ables can idades de e en os en un ipo ín imo. Es o es posible, g a-
cias al cambio de en la mane a de a a los da os (o e en os). En la Figu a 2.4 podemos
e en un en oque (clásico) donde los da os son los pe sis idos y sob e ellos se lanzan
consul as y, po o o lado, el en oque en el cual se basan los sis emas CEP, en es e caso,
los pa ones ( eglas) son los pe sis idos y sob e ellos se lanzan los da os (e en os) pa a
p oduci esul ados.
Figu a 2.4: A la izquie da un en oque es á ico de p ocesamien o de da os. A la de echa
un en oque dinámico o ien ado a sis emas CEP.
El obje i o de la he amien a desa ollada en es e TFG es el análisis en la especi icación
de p og amas Espe , con lo cual ha sido muy impo an e conoce cuál es la es uc u a de
las eglas y cómo exp esa el pa ón deseado. A con inuación, se mues a una explicación,
a pa i de un ejemplo, de odos los elemen os que el analizado léxico implemen ado es
capaz de econoce .
Figu a 2.5: Ejemplo de la especi icación de un e en o simple y una egla en Espe
Como se puede obse a en la Figu a 2.5, la sin axis de Espe , en la especi icación de
eglas, es muy pa ecida a la de SQL (lenguaje de consul as pa a base de da os).
Pa a c ea un e en o simple (p ime a línea del ejemplo), se ha á u ilizando las palab as
ese adas c ea e schema seguido de un nomb e pa a ese e en o simple (en es e caso “Mo-
2.3. ESPER 17
o bike”). Opcionalmen e, en e pa én esis, pod emos especi ica los a ibu o que end á
es e e en o. En el ejemplo, es e e en o, que ep esen a un e en o de ipo mo ocicle a, iene
como a ibu os la p esión de las dos uedas (un núme o en e o), la elocidad (double) y
un a ibu o de ipo Boolean que ep esen a si el conduc o es á sen ado o no en el asien o.
En la siguien e pa e de la imagen, podemos obse a la de inición de una egla cuyo
nomb e se especi ica con la ano ación @Name y en e, pa én esis y comillas, el nomb e (en
es e caso “BlowOu Ti e” ( ueda pinchada).
Un elemen o muy impo an e a la ho a de especi ica las eglas, es hace la isible a
odas las demás. Es deci , exp esa qué ipo de e en o complejo a a gene a as su
ejecución. Es o se consigue con la sen encia inse in o seguida del nomb e del e en o
complejo. Si se omi ie a es a sen encia la egla no es a ía isible al es o y el e en o com-
plejo gene ado po es e pa ón no es a ía disponible pa a su uso en o o. Es posible que
a ias eglas p oduzcan el mismo ipo de e en o complejo ( odas ellas end ías en mismo
nomb e en la sen encia inse in o).
La no ación @P io i y si e pa a asigna p io idad a la egla. Si la p io idad se omi e,
se asocia la máxima p io idad po de ec o (p io idad 0). Como se comen ó en la sección
an e io , es muy impo an e asocia p io idades co ec as a las eglas en unción a sus
dependencias, pa a espe a el o den de ejecución de las mismas y no pe de in o mación
(e en os) gene ados po o as eglas.
La pa e más impo an e en la de inición de una egla, es la especi icación del pa ón
de e en os que debe da se pa a que és a se ejecu e. Pa a ello, podemos obse a en la
Figu a 2.5 la sección om. En es a pa e de la egla encon a emos la ase de selección
(donde se encuen an el conjun o de dependencias de la egla) y la ase de empa ejamien o
(c i e ios que deben ocu i en los a ibu os de los e en o del conjun o de dependencias de
la egla pa a su ejecución). Es a pa e es la más c í ica en el he amien a y donde más se
ha indagado en su desa ollo, debido a que, de ella se ex ae oda la in o mación necesa-
ia pa a analiza las dos p opiedades (aciclicidad y o den de ejecución) mencionadas con
an e io idad. Pa a desc ibi el pa ón se u ilizada la palab a ese ada pa e n y en e
co che es se exp esa el pa ón.
Pa a pode exp esa pa ones de e en os, a con inuación se explican los ope ado es
más ele an es en Espe pa a su de inición:
24 CAPÍTULO 3. TECNOLOGÍAS UTILIZADAS
Figu a 3.2: Je a quía de di ec o ios de un p oyec o X ex .
En la Figu a 3.2 se mues a la je a quía de subp oyec os gene ados al c ea el p oyec-
o. En el p oyec o o g.x ex .example.mydsl nos encon amos el iche o donde exp esa emos
nues a g amá ica (MyDsl.x ex ) y el a chi o Gene a eMyDsl.mwe2 donde se encuen an
los lujos de a eas (wo k low) que pe mi i án c ea el edi o y pode gene a azas de
la g amá ica pa a su depu ación. Cuando se gene a la g amá ica a pa i del a chi o de
lujos de a eas, se u iliza el gene ado ANTLR, si no se iene p e iamen e ins alado, la
he amien a solici a á la desca ga. X ex u iliza es e gene ado pa a c ea el pa se .
Cuando se gene e el código del edi o y del pa se es os se án deposi ados en la ca pe a
s c-gen de los p oyec os o g.x ex .example.mydsl yo g.x ex .example.mydsl.ui. En el p ime-
o se gua da el código del pa se y en el segundo el código del edi o , es deci , los aspec os
sob e la colo ación, au ocompleción, y comp obación de la g amá ica [Ga cía e al., 2013].
3.3.2. Ejemplo de uso
En la Figu a 3.3 podemos obse a una de inición muy simple de la g amá ica de un
DSL. Más conc e amen e, la g amá ica es una e sión muy simpli icada de la g amá ica
del lenguaje Espe . Tomándolo como pun o de pa ida, amos a comen a los concep os
cla e que X ex nos p opo ciona pa a de ini g amá icas.
1. La de inición de la g amá ica se basa en exp esa eglas que de inan la sin axis del
lenguaje que se desea diseña . El nomb e de las eglas se empieza en mayúsculas y
su nomb e iene que se único.
2. La p ime a egla (línea 5) se conside a la egla de inicio. Es a egla indica que los
p og amas Espe es án compues os po e en os simples o eglas. Pa a pode exp esa
3.3. XTEXT 25
Figu a 3.3: De inición de una g amá ica en X ex
más de una egla o e en o enemos que do a de mul iplicidad a la egla, es o se
consigue u ilizando los ope ado es de ca dinalidad (+, *, ?). Pa a es e caso, a la
egla se le impues a que puede ene ce o o muchas (ope ado *) eglas o e en os.
Es a egla hace de pun o de acceso (o nodo aíz) en el á bol de sin axis abs ac a
que el pa se c ea a pa i del lexe .
3. Las eglas pueden se asignadas median e ope ado es de asignación (=, +=, ?=).
G acias a es a asignación, cuando el pa se gene e el AST, pod emos accede a ellas
como si ue an a ibu os de una clase Ja a. En la Figu a 3.3, se puede obse a que
en la p ime a egla se hace uso del ope ado += pa a asigna odas las ocu encias de
eglas al a ibu o ules de la egla p incipal. Es e a ibu o es una lis a que con iene
odas las ins ancias de eglas del a chi o.
4. Las eglas pueden con ene keywo ds ep esen adas como ca ac e es en e comillas
26 CAPÍTULO 3. TECNOLOGÍAS UTILIZADAS
simples.
5. A una egla se le puede asigna un a ibu o name, el cual ep esen a un iden i icado
pa a la egla. Po ejemplo, pa a la egla E en es lo lógico que su iden i icado sea
el nomb e del e en o, pa a ello bas a con asigna al a ibu o name el alo deseado.
6. En la de inición de una egla podemos ealiza e e encias c uzadas, es deci , pode-
mos asigna a un a ibu o de la egla, el alo del iden i icado del a ibu o name
de o a egla. Pa a hace lo, simplemen e hay que pone el nomb e de la egla en e
co che es. Como se e en la úl ima egla (línea 47), al a ibu o simpleE en s se le
asigna a el alo name de la egla E en
Si el lec o es á in e esado en p o undiza en odos los ecu sos que p opo ciona X ex
pa a la de inición de la g amá ica, se le emi e a la documen ación de es e amewo k
[X ex , 2018].
3.3.3. Edi o de ex o
Una ez c eada la g amá ica podemos lanza el edi o de ex o pa a comp oba la
g amá ica de inida en el apa ado an e io . Pa a ello, hab ía que pulsa bo ón de echo
sob e la en a donde se ha de inido la g amá ica y pulsa sob e Run As →Gene a e
X ex A i ac s. Una ez hecho, podemos obse a que X ex gene a pa a cada egla una
ep esen ación de ella encapsulada en una clase Ja a, éase Figu a 3.4. Así pues, cuando
en el edi o de ex o de ec e una egla, se de ol e á una ins ancia de és a al pa se , y
és e, gene a á el AST aco de al conjun o de ins ancias que haya en el edi o .
Pa a ab i el edi o bas a pulsa bo ón de echo sob e el p ime p oyec o (en es e caso
o g.x ex .example.mydsl) y pulsa Run As →Eclipse Applica ion. Una ez hecho es o, se
ab i á una segunda ins ancia de Eclipse. Sob e ella end emos que c ea un p oyec o
haciendo File →New →P ojec ... →Ja a P ojec y den o del p oyec o c ea un a chi o
con la ex ensión del DSL que se especi icó en la c eación del p oyec o X ex .
En la Figu a 3.5 se puede obse a la nue a ins ancia de Eclipse donde se despliega el
edi o de ex o y donde se pueden esc ibi p og amas con la g amá ica diseñada.
3.3.4. Gene ación de código
Uno de los p incipales po enciales del uso de DSL es la capacidad de gene a código
a pa i de ellos. X ex p opo ciona una mane a simple de ealiza lo a a és del lenguaje
X end.
Pa a ello, solo ha de ab i se la clase X end “DslGene a o .x end” si uada en el pa-
que e que e mina con la ex ensión “.gene a o ”. En es a clase nos encon emos lo que se
3.3. XTEXT 27
Figu a 3.4: Clases gene adas a pa i de la g amá ica.
denomina una unción de “callback” llamada “doGene a e” que, cada ez que gua demos
nues o a chi o en la segunda ins ancia de eclipse, el mo o de X ex llama á a es a unción
pasándole es pa áme os:
1. Resou ce: es e pa áme o pe enece a la API de EMF, y hace posible el acceso al
AST c eado po el pa se pa a pode na ega , a a és de sus elaciones, en e las
ins ancias c eadas de las eglas de inidas en la g amá ica.
2. IFileSys emAccess2: es e pa áme o pe enecien e a la p opia API de X ex nos
abs ae ope aciones sob e iche os, con lo cual, pod emos c ea , sob esc ibi y mo-
di ica los de una mane a sencilla.
3. IGene a o Con ex : in e az del con ex o del gene ado . No se ha eque ido u i-
liza es e pa áme o en la gene ación.
En la Figu a 3.6 podemos e una simple implemen ación de es e callback que, cada
ez que gua demos el a chi o de nues o DSL en la segunda ins ancia de Eclipse, gene a á
un a chi o de ex o plano el cual con end á el nomb e de odos los e en os simples que
haya en la especi icación. Se puede obse a el po encial que o ece X end al o ece un
mecanismo pa a ealiza plan illas de código (con enido del a chi o a gene a ) median e
sen encias de escape deno adas po los símbolos «».
28 CAPÍTULO 3. TECNOLOGÍAS UTILIZADAS
Figu a 3.5: Segunda ins ancia de Eclipse donde se ab e el edi o de ex o.
3.4. ANTLRWo ks
ANTLRWo ks [ANTLR, 2018], es un en o no de desa ollo pa a g amá icas ANTLR.
Su uso ha sido muy especí ico, se ha u ilizado pa a comp oba el co ec o uncionamien o
de la g amá ica desa ollada. A medida que és a se hacía más compleja, podía ol e se
ambigua, es e ipo de p oblemas no son ácilmen e de ec ables y es a he amien a nos
p opo ciona una mane a sencilla de depu a g amá icas ANTLR. Un ejemplo de su uso
se e á en el Capí ulo 5.
3.5. GEF (G aphical Edi ing F amewo k)
GEF [Eclipse, 2018c] p opo ciona, de una mane a in eg ada con el IDE Eclipse, una
se ie de he amien as pa a la isualización y desa ollo de aplicaciones g á icas. Se puede
ins ala como un plugin de una mane a simple. Es a he amien a se ha u ilizado pa a la
isualización de g a os esc i os en lenguaje DOT en una is a na i a en Eclipse ( éase la
Figu a 3.7), ya que ae un in e p e e de es e lenguaje. Su ins alación se mues a en el
Apéndice A.
3.6. GRAPHVIZ 29
Figu a 3.6: callback pa a ealiza gene ación de códig en X ex .
3.6. G aph iz
G aph iz [G aph iz, 2018b] es un so wa e lib e pa a la isualización de g a os. Es a
he amien a coge desc ipciones de g a os en lenguajes como DOT y los ep esen a de
una mane a más isual en o ma os como PDF, SVG, o ma os de imagen, e c. Pa a
la he amien a desa ollada, la ins alación de G aph iz no es obliga o ia pe o sí muy
ecomendable ya que, al hace lo, nos pe mi i á desde Eclipse expo a el g a o en el
o ma o que el usua io desee. Además, G aph iz pe mi e una mejo isualización del
g a o a a és de la en ana g á ica de GEF, en e al uso del p opio in e p e e DOT de
GEF.
Figu a 3.7: Vis a na i a del in e p e e del lenguaje DOT p opo cionado po GEF.
3.6.1. DOT
DOT es un lenguaje pa a especi ica g a os de una o ma sencilla. En la Figu a 3.8
se puede obse a un ejemplo de su de inición. Pa a g a os di igidos (únicos u ilizados en
es e p oyec o), la de inición del g a o iene que empeza con la palab a ese ada dig aph
30 CAPÍTULO 3. TECNOLOGÍAS UTILIZADAS
Figu a 3.8: Ejemplo de de inición de un g a o median e el lenguaje DOT.
seguido de un nomb e. Pa a de ini un nodo simplemen e hay que pone un iden i icado
único, seguido (opcionalmen e), de unos pa áme os pa a modi ica su es ilo. No a que
no hace al a sepa a cada de inición po “;”, pe o sí que hay que ealiza las en una
línea independien e. Pa a de ini una lecha en e dos nodos, solamen e hay que pone el
iden i icado del nodo o igen seguido de “->” y el iden i icado del nodo des ino. También,
se pod án añadi opciones pa a el es ilo de cada lecha. Pa a una explicación en más de alle
sob e el lenguaje DOT, se emi e al lec o a [G aph iz, 2018a]
Capí ulo 4
Es uc u a de la he amien a
En es e capí ulo se indaga en la he amien a desa ollada, comen ando los dos aspec os
más impo an es de és a: la de inición de la g amá ica y la gene ación de código. Pa a el
p ime aspec o se p o undiza á en la implemen ación de las eglas más impo an es de la
g amá ica (aquellas donde se de inen el conjun o de dependencias de las eglas CEP). En
la pa e de gene ación de código se habla á cómo se ha conseguido pasa de un AST a un
g a o di igido y cómo se han ealizado los análisis y la gene ación de los di e en es g a os
y a chi os.
4.1. En o no
La he amien a desa ollada iene como obje i o el análisis de las dos p opiedades co-
men ada en la sección dedica a los sis emas CEP en el Capí ulo 2. A pa i de un iche o
con la especi icación de los e en os y eglas, la he amien a ealiza á lo que se denomina
un análisis es á ico (análisis sin que el sis ema es é en ejecución).
A con inuación se explica la a qui ec u a gene al de la he amien a y las ecnologías
se han u ilizado en cada pa e, basándonos en la Figu a 4.1. El iche o de e en os y eglas
se á c eado den o de un p oyec o en el edi o de ex o que X ex p opo ciona, y con en-
d á una especi icación de un p og ama CEP esc i o con el lenguaje de p ocesamien o de
e en os Espe . En la Figu a 4.1, se mues a que el iche o es á ue a del en o no X ex
pe o, lo hemos ep esen ado así ya que el lenguaje de p ocesamien o de e en os complejos
no es pa e de X ex pe o cabe acla a que los p og amas CEP hay que c ea los en el edi o .
Una ez se enga el iche o de eglas CEP, se pod á analiza las p opiedades en la
pa e de gene ación de código de X ex , pa a ello se ha u ilizado Ja a yX end indis in-
amen e pa a p og ama los análisis, y el amewo k EMF pa a accede al AST que nos
p opo ciona el pa se .
31
32 CAPÍTULO 4. ESTRUCTURA DE LA HERRAMIENTA
El p ime análisis que se hace es la comp obación de la aciclicidad en las eglas, ya
que el esul ado que se gene a depende de si hay ciclos o no. En el caso de que haya algún
ciclo, solo se gene a á un g a o ale ando de dónde se encuen an es os ciclos, es deci ,
en e qué eglas. Po o o lado, si no hay ciclos se gene a á un g a o donde se pod án
e las dependencias en e eglas y si las p io idades asignadas an es del análisis son las
co ec as. Además, se gene a á el mismo conjun o de eglas en an e pe o con una asig-
nación de p io idades que se es iman co ec as as el análisis. Pa a la isualización de
los g a os, en el edi o de Eclipse se ha u ilizado el amewo k GEF que p opo ciona una
en ana g á ica donde mos a los g a os esc i os en lenguaje DOT.
Figu a 4.1: Wo k low de la he amien a y ecnologías u ilizadas en cada pa e.
Además, independien emen e de la exis encia de ciclos o no, ambién se gene a á un
a chi o en ex o plano que mos a á los esul ados ob enidos as la ealización del análisis.
Es e a chi o se á una especie de log in o ma i o.
4.2. De inición de la g amá ica
El p ime paso pa a el desa ollo de la he amien a, ha sido el desa ollo de una g a-
má ica capaz de econoce la sin axis de Espe . Pa a lle a acabo al in, se ha u ilizado el
4.2. DEFINICIÓN DE LA GRAMÁTICA 33
Figu a 4.2: Rep esen ación de al o ni el del AST gene ado.
lenguaje de desa ollo de g amá ica que nos p opo ciona X ex . Si el lec o es á in e esado,
puede e la de inición comple a en el Apéndice C.
En la Figu a 4.2 podemos obse a la es uc u a (en al o ni el) del AST gene ado.
Se ha ob iado la de inición de e en os simples ya que ha sido explicado en el Capí u-
lo2en la sección dedicada al lenguaje Espe . En el desa ollo se ha p o undizado con
especial én asis en la pa e de la de inición de los pa ones (sección om de las eglas),
ya que es aquí donde podemos encon a las dependencias que iene una egla y, a aíz
de es as dependencias, pode ealiza el análisis de las p opiedades ya p e iamen e men-
cionadas. En es a pa e, se han u ilizado dos ope ado es p incipales (e e y y ollowedBy).
A con inuación se mues a la de inición de la egla Pa e n (Figu a 4.3), la cual e-
p esen a la sin axis de los pa ones en Espe . Ha sido de inida con una je a quía de abs-
acciones, de al modo que las egla que exp esan un compo amien o de bajo ni el son
en uel as po o as eglas que exp esan un compo amien o gene al. Po mo i os de cla-
idad, a con inuación se explican las eglas sob e su ep esen ación g á ica ob enida del
iso de eglas de X ex en o ma de diag amas (accesible a a és de Window →Show
View →O he ... →X ex →X ex Syn ax G aph), las ca ac e ís icas más impo an es de
és as:
Pa e n: la Figu a 4.4 mues a la ep esen ación más abs ac a de un pa ón, que
iene de inida po la keywo d pa e n y en e co che es la de inición del pa ón.
JoinFollowBy: El siguien e paso en la je a quía de abs acciones iene de inido po
la egla JoinFollowBy, y a a de de ini la posibilidad de pode combina pa ones
40 CAPÍTULO 4. ESTRUCTURA DE LA HERRAMIENTA
gene a el a chi o de eglas pe o en las secciones @P io i y, es a á de inida la p io idad
según en análisis.
De an emano, se puede pensa que le implemen ación de es a uncionalidad ha sido
di ec a, ya que solo bas a ía con eco e el AST e i i e ando sob e odas las eglas
cambiando la sección @P io i y. El p oblema adica en que la gene ación de código se
ealiza después de que el pa se gene e el AST. Es e, a su ez, es cons uido con los okens
que ealiza el lexe sob e el a chi o. En es e p oceso de okenización se eliminan odas las
keywo ds de inidas en las eglas y se gene a los a ibu os de cada egla con el alo que
les co esponda. De es e modo, con el AST se pie de el acceso a las keywo ds de inidas.
Pa a sol en a el p oblema, se ha enido que indaga en la API de EMF pa a ob ene un
mé odo que de uel a una URI (Uni o m Resou ce Iden i ie ) del AST gene ado (es á URI
ep esen a ía la di ección del a chi o de eglas, del cual se ha gene ado el AST). Es a URI
ob enida es una implemen ación de la p opia API de EMF y no una es anda izada, con
lo cual se ha enido que u iliza un mé odo de es a API que c ea un Inpu S eam a pa i
de es e ipo de URIs. En la Figu a 4.11 se pueden e los mé odos u ilizados pa a lle a
es e p oceso a cabo. Una ez ob enido el acceso al a chi o, simplemen e se ha i e ado
sob e cada línea de cada egla, modi icando la sección @P io i y po la p io idad que le
co esponde del análisis.
Figu a 4.11: Ape u a de un Inpu S eam a pa i de la ep esen ación de URI de EMF.
4.3.1. Algo i mos u ilizados
O den opológico de un g a o
Dado un g a o di igido acíclico (no con iene ningún ciclo en e sus é ices), un o den
opológico es una elación de o den o al (≺) en e é ices al que: si exis e un a co desde
nam, en onces mes mayo que nen el o den. Pa a un mismo g a o di igido puede habe
di e en es o denes opológicos, y si el g a o di igido con ienen algún ciclo, es e o den no
se pod á calcula . No malmen e es e algo i mo es usado pa a a eas de plani icación de
4.3. GENERACIÓN DE CÓDIGO 41
a eas con dependencias en e ellas (es deci , una a ea no se puede comple a si la eje-
cución de o a u o as).
Pa a explica cómo ealiza una o denación opológica sob e un g a o di igido, se
in oducen dos concep os:
Fuen e: é ice que no ecibe ninguna a is a (su g ado de en ada es 0).
Sumide o: é ice del cual no salen ningún é ice (su g ado de salido es 0).
Tomemos de pa ida el g a o inicial de la Figu a 4.12, cuyos é ices ep esen an a eas
a ealiza y sus a is as dependencias en e ellas. De es e modo, la a ea 3 solo se pod á
hace si p e iamen e se ha hecho la a ea 1 y la a ea 2. Pa a calcula un o den opológico
sob e es e g a o bas a con selecciona una uen e y isi a la qui ando odas sus a is as.
Es e p oceso se epi e has a que se hayan isi ado odos los é ices. El o den en el cual
se han ido isi ando los é ices, se ía un posible o den opológico.
Siguiendo el ejemplo, empeza íamos en la única uen e del g a o, la a ea 1. Visi amos
el é ice 1y eliminamos odas sus a is as. A con inuación nos queda ían dos posibles
uen es, la a ea 2 y la a ea 4. Seleccionamos la a ea 4 y epe imos el p oceso, quedando
el conjun o de é ices seleccionados: 1, 4. Si epe imos el p oceso an e io , una ez
isi ados odos los nodos, ob end emos el siguien e o den opológico: 1, 4, 2, 3, 5, 6.
Algo i mo de Kosa aju
Dado un g a o di igido, una componen e ue emen e conexa es un subconjun o de los
é ices que componen el g a o, donde hay un camino en e dos é ices cuales quie a y
o o camino de uel a, es deci , hay un ciclo en ese conjun o de é ices.
El algo i mo de Kosa aju es un algo i mo que calcula odas las componen es conexas
en un g a o di igido. Su complejidad es linea ya que el algo i mo c ece en p opo ción al
nume o de é ices y a is as en el g a o, es deci , su complejidad es O(V+E). Pa a la
ejecución de es e algo i mo necesi a emos un conjun o pa a ma ca los é ices isi ados y
una es uc u a de da os LIFO (po sus sigas en inglés Las In, Fi s Ou ), con una simple
pila es su icien e. Los pasos a segui se ían los siguien es:
1. Comenzamos isi ando un é ice, desde es e se ealiza una búsqueda en p o undidad
(DFS) isi ando odos los é ices en su eco ido. Cuando un é ice no se pueda
expandi más (desde él no se pueda na ega hacía o o é ice) se á añadido a nues a
pila. Una ez que el é ice donde hemos empezado la búsqueda en p o undidad no
iene más é ices que no hayan sido isi ados, se añadi á a la pila y selecciona emos
o o é ice no isi ado pa a epe i es e p oceso.
42 CAPÍTULO 4. ESTRUCTURA DE LA HERRAMIENTA
Es ado Inicial Paso 1 Paso 2
Paso 3 Paso 4 Paso 5
Paso 6
Figu a 4.12: Elabo ación de un o den opológico.
4.3. GENERACIÓN DE CÓDIGO 43
2. Una ez que odos los é ices hayan sido isi ados, enemos que in e i el g a o,
es deci , cons ui el mismo g a o pe o in i iendo la di ección de sus a is as. Si
enemos una a is as de A hacia B, al in e i la, es a a is as i á de B hacia A.
3. Aho a, pa iendo de un conjun o acío de é ices isi ados, se ealiza una búsqueda
en p o undidad de los é ices que es án en la pila. De es a mane a, se empieza
ex ayendo un é ice de la pila, comp obando si no ha sido p e iamen e isi ado
(si ha sido isi ado, se desca a y se ex ae el siguien e) y se ealiza una búsqueda
en p o undidad sob e el g a o in e so.
4. En la búsqueda en p o undad se i án isi ando odos los é ices has a que no
se puedan isi a más (po que ya hayan sido isi ados). El conjun o de é ices
isi ados pa a es a búsqueda conc e a se ía una componen e conexa. Pa a encon a
el es o de componen es, bas a ía epe i el paso 3 y 4 has a que nues a pila se quede
acía.
Tomando como ejemplo el g a o si uado en la pa e izquie da de la Figu a 4.13, un
conjun o acío de é ices isi ados C1y una pila acia P, amos a aplica es e algo i mo.
Empezando po el é ice B, aunque pod íamos empeza po cualquie o o, ealizamos
una búsqueda en p o undidad has a llega al é ice D, desde el cual no podemos segui
na egando ya que no ienes más suceso es. Al llega a es e nodo, el conjun o de isi ados
C1inclui ía odos los é ices del g a o B, C, A, De inclui íamos el nodo Den la pila
P=D. A con inuación comenza ía el p eceso de back acking, es deci ol e al é ice
desde el cual hemos llegado al é ice Dy comp oba si ienes más suceso es no isi ados
pa a explo a . Una ez ealizado el p oceso comple o, nues a pila queda ía de la siguien e
mane a, P=B, C, A, D.
Figu a 4.13: A la izquie da un g a o di igido. A la de echa el g a o an e io in e ido.
Una ez engamos la pila con el o den de isi a de los é ices, enemos que in e i
el g a o (g a o si uado en la pa e de echa de la Figu a 4.13) y aplica , de nue o, una
búsqueda en p o undidad sob e los é ices ex aídos de la pila. De es a mane a, el p ime
é ice ex aído se ía el é ice By su búsqueda en p o undidad da ía como esul ado
la componen e conexa hB, A, Ci. El siguien e é ice que se ex ae ía de la pila se ía el
é ice Dya que los é ices CyAya han sido isi ados en la búsqueda en p o undidad
44 CAPÍTULO 4. ESTRUCTURA DE LA HERRAMIENTA
an e io . Al hace la búsqueda en p o undidad sob e el é ice Dsus nodos adyacen e ya
han sido isi ados con lo cual nos queda o a componen e conexa o mada po el é ice D,
hDi. Al ex ae el úl imo elemen o de la pila, es á queda ía acía, con lo cual, el algo i mo
inaliza ía y como esul ado ob end íamos las dos componen es conexas an e io es.
Capí ulo 5
Validación y p uebas
Es e capí ulo de alla la depu ación de la g amá ica desa ollada, y cómo se ha delimi-
ado el desa ollo de és a. Pa a ealiza la depu ación, se in oduce el uso de la he amien a
ANTLRWo ks pa a depu a g amá icas ANTLR, es e ipo de g amá icas son las que u i-
liza X ex in e namen e. Además, se p opone un conjun o de eglas que han se ido como
es de eg esión.
5.1. Depu ación de la g amá ica
En el desa ollo de la g amá ica, el p oblema más ecuen e que ha su gido, es que en
algún pun o de su desa ollo és a se ol ía ambigua. Cuando la g amá ica desa ollada es
pequeña, de ec a es e ipo de p oblemas puede se ela i amen e sencillo a pa i de las
ale as que gene a X ex . Pe o cuando la g amá ica se uel e más ex ensa e incluye eglas
ecu si as que depende de o o ipo se eglas, de ec a es e p oblema se hace más di ícil.
X ex no p opo ciona ningún mé odo pa a depu a la g amá ica. Si hay e o es en la
de inición, el wo k low que gene a an o el lexe como el pa se , no se ejecu a y se lanza
un e o . Si X ex de ec a que la g amá ica es ambigua, pe o su de inición es co ec a, el
wo k low se ejecu a pe o, in e namen e X ex poda el AST cuando de ec a ambigüedad.
No es muy ecomendable deja a X ex ealiza es e ipo de acciones po que se pie de el
con ol de la g amá ica y podemos es a gene ando un AST que no es aco de a nues a
de inición.
Po es e mo i o se ha u ilizado el en o no de desa ollo pa a g amá icas ANTLR
ANTLRWo ks [ANTLR, 2018]. Es a he amien a nos pe mi e isualiza de una o ma g á-
ica aquellas eglas que ienen p oblemas de ambigüedad, mos ando un diag ama donde
se pueden e dis in as azas de ejecución que gene an el mismo AST. La he amien a
se desca ga como un iche o .ja , de al modo que su ejecución es di ec a si se iene
ins alado una JVM en la máquina pe inen e.
45
46 CAPÍTULO 5. VALIDACIÓN Y PRUEBAS
Lo p ime o que hay que hace pa a u iliza es a he amien a, es con igu a el wo k low
en X ex pa a que gene e un a chi o con ex ensión .g, el cual con end á la g amá ica
ANTLR. No se puede u iliza la g amá ica ANTLR gene ada di ec amen e po X ex ya
que és e, en úl ima ins ancia, la modi ica pa a inclui aspec o de au ocompleción o e i-
icación del código. En la Figu a 5.1 se puede e el con enido del wo k low incluyendo la
sen encia co espondien e pa a ac i a la gene ación de la g amá ica ANTLR a depu a
(líneas 43-45).
Figu a 5.1: Wo k low pa a la gene ación de la g amá ica.
Una ez con igu ado el wo k low, gene amos la g amá ica como se ha explicado en la
sección dedicada a X ex del Capí ulo 3. Cuando se haya gene ado, den o del di ec o io
“s c-gen” del p oyec o p incipal, en el paque e cuya e minación es “...an l .in e nal”, en-
con a emos el a chi o con ex ensión .g que con ienen una g amá ica ap a pa a ejecu a la
en ANTLRWo ks.
5.2. PRUEBAS DE REGRESIÓN 47
Figu a 5.2: Ejemplo de depu ación de g amá ica ANTLR en ANTLRWo ks.
A con inuación, ab imos ANTLRWo ks y ca gamos el iche o .g (File →Open). Se nos
desplega á en la pa e izquie da un lis ado de odas las eglas con enidas. Si pulsamos
sob e el bo ón pa a hace la depu ación (bo ón con icono de un insec o), se e ec ua á
un análisis sob e odas las eglas y, al inaliza el análisis, apa ece án en ojo aquellas
eglas que con engan algún ipo de p oblema. Si pulsamos sob e alguna de ellas, se nos
ab i á un diag ama con la es uc u a de la egla. Sob e es e diag ama podemos supe pone
las di e en es azas que gene an el mismo AST, pulsando en la sección “Al e na i es” y
seleccionando la aza o azas que deseemos mos a . En la Figu a 5.2, se puede e dos
azas supe pues as ( e de y oja) en una egla que p oduce un p oblema de ambigüedad
en la g amá ica. G acias a es a he amien a se ha podido depu a la g amá ica al da nos
los pun os exac os donde se gene a la ambigüedad, pa a co egi los se ha hecho uso del
ope ado => explicado en el Capí ulo 4.
5.2. P uebas de eg esión
Las p uebas de eg esión si en pa a comp oba que una nue a uncionalidad añadida
a un so wa e, no modi ica o al e a una o a ias uncionalidades p e iamen e exis en es
48 CAPÍTULO 5. VALIDACIÓN Y PRUEBAS
en el p og ama. Es as p uebas se an cons uyendo a aíz de los casos de p ueba pa a
comp oba el co ec o uncionamien o de una uncionalidad, de al mane a que cuando se
desa olle una nue a ca ac e ís ica, con a emos con una ba e ía de p uebas que cub i á
cada uncionalidad an e io a la nue a desa ollada. Si es a nue a uncionalidad pasa es as
p uebas de eg esión, se pod á a i ma , en mayo o meno medida, que no modi ica las
demás uncionalidades p ees ablecidas.
Un pun o de especial in e és en el desa ollo del p esen e p oyec o, ha sido decidi el
ni el de de alle a inclui en nues a g amá ica pa a econoce p og amas CEP. Desa olla
desde ce o un lexe capaz de econoce el lenguaje comple o Espe , no end ía mucho sen-
ido, ya que pod íamos u iliza el p opio lexe que implemen e Espe y amplia lo. Además
siguiendo es a ía de usa so wa e desa ollado po e ce os, se pe de ía el componen-
e académico del ap endizaje de odas las ecnologías p incipales u ilizadas median e su
desa ollo desde ce o.
Pa a delimi a el alcance del lexe , du an e el desa ollo del mismo se han de inido
cua o conjun os de eglas que han se ido de p uebas de eg esión y de delimi ado es.
Debido a que en el desa ollo de la g amá ica hay eglas con e e encias c uzadas ha-
cia o as, je a quías de eglas y ecu si idad, es muy p obable que al in en a modi ica
alguna o in en a añadi una uncionalidad sob e eglas exis en es, se acaben al e ando
el uncionamien o de las eglas de la g amá ica. Con al mo i o, pa a cada ampliación
del lexe , se hace comp oba , a pa i de es os conjun os de eglas conside ados como un
conjun o de p uebas de eg esión, que no se han al e ado los pa ones ni es uc u as que
ya se econocían p e iamen e.
Po o o lado, han se ido como delimi ado es en el sen ido de que cuando el lexe ha
sido capaz de cub i los 4 conjun os de eglas, se ha dado po inalizado su desa ollo pa a
pode pasa a la ase de análisis y gene ación de código. Cada conjun o de eglas iene un
aspec o peculia que lo di e encia del es o, de es e modo, pa a una e sión del lexe que
econocie a un conjun o de e minado, no econoce ía los es an es.
A con inuación se mues a una b e e desc ipción de es os conjun os de eglas:
Sma House [Mo eno e al., 2018]: es e conjun o cons a de seis eglas que modelan
un sis ema CEP en una “hoga in eligen e”. Ese conjun o ha sido el pila undamen al
pa a el desa ollo de la es uc u a pa e n.
Mo o bike [Bu gueño e al., 2018]: en es e conjun o encon amos un sis ema CEP
que se ejecu a sob e di e en es senso es en una mo ocicle a. De es e conjun o de e-
glas se ex ajo la capacidad de que el lexe ue a capaz de econoce “joins” (pa ones
5.2. PRUEBAS DE REGRESIÓN 49
de pa ones).
Ai Quali y [Bu gueño e al., 2018]: conjun o de más de cua en a eglas que modelan
un sis ema CEP pa a la de ección de los di e en es componen es que hay en el ai e.
La ca ac e ís ica más des acable es que la mayo ía de eglas p oducen el mismo ipo
de e en o que ecolec a una única egla, con lo cual, és a dependía de odas las
an e io es.
Nuclea powe s a ion [Boube a-Puig, 2018]: es e conjun o de eglas modela un sim-
ple sis ema de ale a en una cen al nuclea cuando se de ec a cie o pa ón de
empe a u a. El conjun o ha sido omado como pun o de pa ida pa a el desa ollo
de la g amá ica al con a con pocas eglas pe o con eniendo la es uc u a básica de
és as.
En el Apéndice D se puede se encuen an es os conjun os de eglas Espe ..
56 APÉNDICE A. MANUAL DE INSTALACIÓN
Apéndice B
Manual de usua io
En es e apéndice se mos a a un ejemplo de uso comple o de la he amien a. Pa a
ello se pa i á del conjun o de eglas Sma House y del edi o de ex o ya desplegado en
segunda ins ancia (ambos explicados en el Capí ulo 5 y en el Capí ulo 3 espec i amen e).
Nó ese que la ex ensión u ilizada pa a los a chi os de eglas ha sido .espe .
Una ez abie o el edi o de ex o y c eado un p oyec o pa a albe ga el a chi o de
eglas, simplemen e end emos que gua da el a chi o pa a que se ealice el análisis y se
gene e los a chi os pe inen es. Como se obse a en la Figu a B.1 se han gene ado es
a chi os en el di ec o io s c-gen:
Sma House.do , el cual ep esen a el g a o que se á in e p e ado po el iso .
Sma HouseLog. x :log del análisis. Se puede e su es uc u a en la Figu a B.1.
Sma HouseP io i ies.espe : a chi o con las mismas eglas en an es pe o con
las asignación de p io idades aco de a un o den opológico de las eglas.
Como se puede obse a en la Figu a B.1, as el análisis no se han de ec ado ciclos
pe o se han de ec ado eglas cuyas p io idades no es án aco de con el o den opológico
gene ado. Si ab imos el a chi o Sma House.do y enlazamos es e a chi o con la is a
que nos p opo ciona GEF (explicado en la sección sob e GEF del Apéndice A) ob en-
d emos la ep esen ación g á ica del g a o, al y como se puede e en la Figu a B.2.
Como se obse a en es a imagen, los e en os simples se han ep esen ado con una o ma
ec angula y los e en os complejos con una o ma de ó alo. Además, hay dos é ices
cuya p io idad no se co esponde con la del análisis ( é ices en ojo). Ab iendo el a chi o
Sma HouseP io i ies.espe nos encon a nos el conjun o de eglas y sus p io idades
aco de a es e análisis.
57
58 APÉNDICE B. MANUAL DE USUARIO
Pa iendo del mismo conjun o de eglas amos a p o oca un ciclo sob e su especi i-
cación pa a mos a como di ie e la gene ación de los a chi os según se de ec en ciclos o no.
Una ez inse ado el ciclo en la especi icación, ol emos a gua da el a chi o y la he-
amien a nos gene a á dos a chi os (log y la ep esen ación del g a o). Como podemos
obse a en la Figu a B.3, en el a chi o Sma HouseLog. x , se nos mues a que se ha
de ec ado ciclos en la especi icación y, además, cuáles son las componen es conexas de
cada ciclo. Como ya se ha comen ado an e io men e, si se de ec an ciclos, no es posible
gene a las p io idades de cada egla po que, pa a hace lo, se necesi a que no exis an ciclos.
Obse ando la Figu a B.4, podemos e el g a o que se gene a pe o, es a ez, se mues a
a is as en colo ojo, que son las componen es conexas del ciclo de ec ado.
Figu a B.1: Log gene ado as el análisis.
59
Figu a B.2: G a o gene ado as en análisis.
Figu a B.3: Log gene ado as el análisis inse ando un ciclo.
60 APÉNDICE B. MANUAL DE USUARIO
Figu a B.4: G a o gene ado as el análisis inse ando un ciclo.
Apéndice C
De inición de la g amá ica u ilizada en
el lexe
En es e apéndice se mues a la de inición comple a de la g amá ica del lenguaje de
p ocesamien o de e en o complejos Espe , u ilizada pa a el desa ollo de la he amien a:
g amma o g.x ex .example.mydsl.MyDsl2 wi h o g.eclipse.x ex .common.Te minals
gene a e myDsl2 "h p://www.x ex .o g/example/mydsl/MyDsl2"
Domainmodel:
( ules+=RulePa s | e en s+=E en )∗
;
//−−−−−−−−−−−−−−−−−−EVENTS−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
E en :
’c ea e’ ’schema’ name=ID e en a ibu es=A ibu es ’;’
;
A ibu es:
’(’ a ibu e+=A ibu esDe ini ion (’,’ a ibu e+=A ibu esDe ini ion)∗’)’
;
A ibu esDe ini ion :
name+=ID ype+=ID
;
//−−−−−−−−−−−−−−−−−−−−RULES−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
RulePa s:
(nameRule = Name) (inse = Inse ) (p io i y = P io i y)? (selec Rule = Selec ) ( omRule = F om)
(g oupBy = G oupBy)? (ha ing = Ha ing)?’;’;
Inse :
’ inse ’ ’ in o’ name=ID
61
62 APÉNDICE C. DEFINICIÓN DE LA GRAMÁTICA UTILIZADA EN EL LEXER
;
Name:
’@Name’ ’(’ name=STRING ’)’
;
P io i y :
’@P io i y’ ’(’ p io i yIn = INT ’)’
;
Selec :
’ selec ’ ( selec A ibu es += Selec A ibu esDe ini ion (’as’ alias +=ValidID)? )+
(’,’ selec A ibu es += Selec A ibu esDe ini ion (’as’ alias +=ValidID)?)∗
| ( as e isk?=’∗’)
;
KindSelec A ibu esDe ini ion:
singleSelec De ini ion = SingleSelec De ini ion
| de aul Me hod = De aul Me hods
| in = INT
| s ing = STRING
;
Selec A ibu esDe ini ion :
igh Side += (KindSelec A ibu esDe ini ion) (ope a o +=Ope a o s le Side+=
(KindSelec A ibu esDe ini ion ))∗
;
SingleSelec De ini ion :
e en +=[SingleDe ini ion] ’.’ (a ibu e+=ID | ’∗’ )
;
F om:
’ om’ ((e en =[E en ] (’(’ any hing = Any hing’)’
| ’.’ any hing=Any hing ))
| pa e n = Pa e n )
;
//−−−−−−−−−−−−−−−−−−Pa e n−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Pa e n:
’pa e n’ ’[’ joinFollowBy=JoinFollowBy ’]’ (’.’ win=Win)?
;
JoinFollowBy:
ollowsByJoinLis +=Abs ac FollowBy (ope a o +=Ope a o s ollowsByJoinLis +=
Abs ac FollowBy)∗
63
;
Abs ac FollowBy:
(=> ollowBy = FollowBy | ’(’ ollowBy = FollowBy ’)’ ) (whe ePa =FollowByWhe e)?
;
//−−−−−−−−−−−−−−−−−−FollowBy−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
FollowBy:
le Side =Te minalExp ession (=> ’−>’ igh Side+=Te minalExp ession)∗
;
Te minalExp ession:
e e y?=’e e y’ e e yExp ession = FollowBy
| pa en hesis?=’(’ be weenPa en hesis = FollowBy ’)’
| singleDe ini ion = SingleDe ini ion
;
KindO E en : E en | Inse ;
SingleDe ini ion :
(=> name=ID ’=’)? simpleE en s=[KindO E en ] (=>’(’any hing=Any hing’)’)?
;
//−−−−−−−−−−−−−−−−−−−−−−−−−−Win−−−−−−−−−−−−−−−−−−−−−−−−−−
Win:
’win’ ’:’ de aul Me hod=De aul Me hods
;
//−−−−−−−−−−−−−−−−−−−−−−Whe e−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
FollowByWhe e:
’(’ FollowByWhe e ’)’
| ’whe e’ ime =Time
;
Time :
’ ime ’ ’:’ de aul Me hod=De aul Me hods
;
//−−−−−−−−−−−−−−−−−−−G oupBy−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
G oupBy:
’g oup’ ’by’ any hing = Any hing
;
//−−−−−−−−−−−−−−−−−−−Ha ing−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Ha ing:
’ha ing’ de aul Me hod = De aul Me hods (ope a o =Ope a o s) any hing=Any hing
64 APÉNDICE C. DEFINICIÓN DE LA GRAMÁTICA UTILIZADA EN EL LEXER
;
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
De aul Me hods:
name=NameMe hod ’(’ any hing = Any hing ’)’
;
ValidID:
ID | NameMe hod
;
NameMe hod:
’a g’
| ’cu en _ imes amp’
| ’coun ’
| ’max’
| ’wi hin’
| ’ ime_ba ch’
| ’ ime’
;
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Any hing:
{Any hing} =>(ID | INT | STRING | ’.’ | ope a o += Ope a o s | ex aPa en hesis +=
Ex aPa en hesisRule | ’whe e’ | ANY_OTHER)∗
;
Ex aPa en hesisRule:
’(’ Any hing ’)’
;
//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
enum Ope a o s:
equal = ’=’ | lessThan = ’<’ | mo eThan = ’>’ | lessEqualThan = ’<=’ | mo eEqualThan = ’>=’ |
and = ’and’ | o = ’o ’ | be ween = ’be ween’ | in = ’in’ | no = ’no ’ | no In = ’no in’ | plus =
’+’ | minus = ’−’ | mul iplica ion = ’∗’ | isno = ’is no ’
;
Apéndice D
Conjun os de eglas u ilizados
D.1. Sma House
c ea e schema Home(id S ing, emp In );
c ea e schema Pe son(name S ing);
@Name("TempInc ease")
inse in o TempeInc ease
selec h2. s as s , h1.id as id, h2. emp as emp, h2. emp −h1. emp as inc
om pa e n [(e e y (h1 = Home() −>
h2 = Home(h2. emp −h1. emp >= 2 and h2.id = h1.id)))
whe e ime :wi hhin(1 minu es)];
@Name("TempWa ning")
inse in o TempWa ning
selec 4. s as s 1.id as id, 4. emp
om pa e n [(e e y ( 1 = TempInc ease( 1. emp >= 33))
−> ( 2 = TempInc ease( 2. emp > 1. emp and 2.id = 1.id))
−> ( 3 = TempInc ease( 3. emp > 2. emp and 3.id = 1.id))
−> ( 4 = TempInc ease( 4. emp > 3. emp and 4.id = 1.id)))
whe e ime : wi hin(5 minu es)];
@Name("COHigh")
inse in o COHigh
selec h1. s as s , h1.id as id
om pa e n [( e e y (h1 = Home(h1.co >= 5000)))];
@Name("Fi eWa ning")
inse in o Fi eWa ning
selec w.id as id, coh. s as s
om pa e n [(e e y (coh = COHigh()) −>
e e y ( w = TempWa ning( w.id = coh.id)))
whe e ime : wi hin(5 seconds)];
65