scieee Open visual document viewer

Análisis de Programas de Procesamiento de Eventos Complejos

García-López, Adrián

Abstract

El procesamiento de eventos complejos (CEP, por sus siglas en inglés: Complex Event Processing), está ganando aceptación en los entornos distribuidos de tiempo real, al proporcionar una forma rápida y eficiente de correlacionar e inferir conclusiones sobre eventos que ocurren en tiempo real. Esta tecnología tiene un amplio campo de aplicación como pueden ser el Internet de las Cosas (IoT), monitorización de sistemas o alerta de situaciones de riesgo en infraestructuras sanitarias, entre otras. La característica más importante de estos tipos de programas, es la capacidad de expresar patrones de sucesos sobre los eventos, mediante la definición de reglas. La especificación de estos tipos de patrones se realiza utilizando lenguajes de procesamiento de eventos como Esper, el cual ha sido utilizado en este proyecto. Es muy importante la correcta especificación de estos patrones ya que de ellos depende el correcto funcionamiento del sistema. Con tal fin, se ha desarrollado una herramienta capaz de analizar dos propiedades que pueden comprobarse estáticamente en las especificación de los programas CEP basados en reglas: la aciclicidad de las dependencias entre reglas y las condiciones de carrera entre reglas. Ambas características tienen que lidiar con el carácter no determinista de los sistemas basados en reglas. Para el desarrollo de esta herramienta se ha utilizado un enfoque MDSE (Model-Driven Software Engineering). Más concretamente, se ha desarrollado un plug-in capaz de reconocer el lenguaje Esper y obtener como salida una representación en forma de grafo dirigido para la visualización de los resultados del análisis.

Full text

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 1y 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, De 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