scieee Open visual document viewer

Depuración de SQL

García Rodríguez, Sergio

Abstract

SQL es un lenguaje de programación declarativo que esconde muchos de sus mecanismos de resolución y por tanto no tiene un flujo de depuración claro como puedan tener otros lenguajes como C cuando se encuentra un error. Actualmenteexisten muy pocos métodos para hacer una depuración de una base de datos y la depuración declarativa es una de las soluciones más efectivas para esto. DES es un programa que permite la depuración de bases de datos a través de una interfaz textual pero resulta tedioso de usar en comparación a una interfaz gráfica. En este trabajo crearemos una interfaz gráfica para la depuración de bases de datos en ACIDE, que es un IDE especializado en bases de datos que usa DES como soporte para realizar sus operaciones. En esta versión se ha añadido una ampliación de la depuración que hay en la última versión disponible de DES que permite asignar el estado de tablas y vistas que no están seleccionadas, mejorando la usabilidad del sistema. Además, en este trabajo se han realizado tareas de mantenimiento y corrección de errores en ACIDE.

Full text

TRABAJO DE FIN DE GRADO 2019/2020 FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID Depu ación de SQL/ Debugging SQL Realizado po : Se gio Ga cía Rod íguez T abajo de in de g ado del G ado en Ingenie ía del So wa e Di igido po : P o . Fe nando Sáenz Pé ez Dp o. Ingenie ía del So wa e e In eligencia A i icial RESUMEN SQL es un lenguaje de p og amación decla a i o que esconde muchos de sus mecanismos de esolución y po an o no iene un lujo de depu ación cla o como puedan ene o os lenguajes como C cuando se encuen a un e o . Ac ualmen e exis en muy pocos mé odos pa a hace una depu ación de una base de da os y la depu ación decla a i a es una de las soluciones más e ec i as pa a es o. DES es un p og ama que pe mi e la depu ación de bases de da os a a és de una in e az ex ual pe o esul a edioso de usa en compa ación a una in e az g á ica. En es e abajo c ea emos una in e az g á ica pa a la depu ación de bases de da os en ACIDE, que es un IDE especializado en bases de da os que usa DES como sopo e pa a ealiza sus ope aciones. En es a e sión se ha añadido una ampliación de la depu ación que hay en la úl ima e sión disponible de DES que pe mi e asigna el es ado de ablas y is as que no es án seleccionadas, mejo ando la usabilidad del sis ema. Además en es e abajo se han ealizado a eas de man enimien o y co ección de e o es en ACIDE. Palab as cla e: DES, ACIDE, Depu ación decla a i a, IDE, SQL, Base de da os, TAPI, Consola. T abajo de Fin de G ado 2019-2020 2 ABSTRACT SQL is a decla a i e p og amming language ha hides many o i s esolu ion mechanisms and he e o e does no ha e a clea debugging low as o he languages such as C may ha e when an e o is encoun e ed. Cu en ly he e a e e y ew me hods o debugging a da abase and decla a i e debugging is one o he mos e ec i e solu ions o his. DES is a p og am ha allows debugging da abases h ough a ex ual in e ace bu i is edious o use compa ed o a g aphical in e ace. In his wo k we will c ea e a g aphical in e ace o debugging da abases in ACIDE, which is an IDE specialized in da abases ha uses DES as suppo o ca y ou i s ope a ions. In his e sion, an ex ension o he debugging ha is in he la es a ailable e sion o DES has been added ha allows assigning he s a us o ables and iews ha a e no selec ed, imp o ing he usabili y o he sys em. In addi ion, his wo k has ca ied ou main enance and e o co ec ion asks in ACIDE. Keywo ds: DES, ACIDE, Decla a i e Debugging, IDE, SQL, Da abase, TAPI, Console. T abajo de Fin de G ado 2019-2020 3 ÍNDICE DE CONTENIDOS Resumen 2 Abs ac 3 Índice de con enidos 4 1. In oducción 6 1.1 Mo i ación 6 1.2 Obje i os 6 1.3 P eceden es del p oyec o 7 1.4 Plan de abajo 8 1.5 Plan de es uc u a 8 2. In oduc ion 9 2.1 Mo i a ion 9 2.2 Objec i es 9 2.3 Backg ound o he p ojec 10 2.4 Wo k plan 11 2.5 S uc u e plan 11 3. Depu ación decla a i a en SQL 12 4. Comunicación en e ACIDE y DES 16 4.1 Opciones de depu ación 16 4.2 Comandos 17 4.3 Funcionamien o de la depu ación 18 5. Diseño de la in e az 20 6. Depu ación decla a i a en p ác ica 25 6.1 Depu ación Decla a i a SQL en DES 28 6.2Depu ación Decla a i a SQL en ACIDE 34 7. Ta eas de man enimien o ealizadas 48 8. He amien as y ecnologías 50 9. Documen ación 51 10. Conclusiones 52 11. T abajo u u o 53 T abajo de Fin de G ado 2019-2020 4 12. Conclusions 54 13. Fu u e wo k 55 14. Bibliog a ía 56 15. Re e encias 57 Anexo: P epa ación del en o no de desa ollo 58 T abajo de Fin de G ado 2019-2020 5 1. INTRODUCCIÓN La p esen e memo ia desc ibe el desa ollo de la in e az de usua io pa a la depu ación de bases de da os SQL como abajo de in de g ado. En ella, se p esen an los undamen os eó icos de la depu ación decla a i a de bases de da os SQL, el uncionamien o de es a en el sis ema DES, el diseño de la in e az y el uncionamien o de la misma en el sis ema ACIDE. Al inal de la memo ia se encuen a una guía de ins alación des inada a los alumnos y o os in e esados que quie an desa olla nue as uncionalidades en ACIDE. 1.1. MOTIVACIÓN Ac ualmen e no exis en sis emas que pe mi an la depu ación de bases de da os SQL, aunque sí que exis en mé odos de depu ación pa a ejecuciones de PL/SQL. Los lenguajes como C y Ja a ienen un lujo de ejecución y depu ación cla o pe o no ocu e lo mismo en lenguajes decla a i os como SQL en los que se ocul an los mecanismos de esolución. Pa a de e mina la uen e de un e o se necesi a aplica la depu ación decla a i a, que es una écnica de depu ación que pe mi e encon a el o igen del e o en un sis ema basándose en las in e p e aciones p e endidas del mismo. El sis ema DES [6] pe mi e hace una depu ación ex ual de bases de da os SQL pe o la u ilidad es limi ada en compa ación con sis emas de depu ación g á icos. ACIDE es un IDE que ayuda a nue os p og amado es a c ea bases de da os y se comunica con DES, po an o el obje i o de es e abajo es la ealización de una in e az g á ica de depu ación en ACIDE que ap o eche las uncionalidades o o gadas po la aplicación DES. 1.2. OBJETIVOS Es e abajo de in de g ado iene como obje i o desa olla una in e az g á ica pa a la depu ación de bases de da os SQL den o de la aplicación ACIDE y la ealización de a eas de man enimien o y co ección de e o es de la aplicación. Es a in e az o ece la capacidad de iden i ica de o ma sencilla, en caso de que es e exis a, el o igen del e o en una base de da os a a és de la depu ación decla a i a de Da alog y SQL usando la he amien a DES en un con ex o en el que in e ienen múl iples is as. La in e az g á ica p opo ciona una solución sencilla e in ui i a a los usua ios, especialmen e a es udian es y nue os p og amado es en SQL, pa a a e igua el o igen del p oblema de su base de da os en SQL. T abajo de Fin de G ado 2019-2020 6 La depu ación se ealiza a a és de p egun as en base a los da os ob enidos de la is a o abla, siendo las posibles espues as: álido, no álido, upla pe dida y upla e ónea. El uncionamien o como explica emos en apa ados pos e io es de o ma más ex ensa es el siguien e: en p ime luga , el usua io selecciona á la is a o abla que ha de ec ado como inco ec a y el sis ema selecciona á la siguien e is a o abla elacionada con la an e io con más posibilidades de se el nodo e óneo en base a la espues a p opo cionada po el usua io. El usua io ambién puede ano a el es ado de un nodo en cualquie momen o de la depu ación haciendo que sea mucho más ápida. Una ez encon ado el nodo de la base de da os de ec ado como e óneo el usua io se dispond á a edi a la abla o is a haciendo que la base de da os quede en el es ado que el usua io que ía desde un p incipio. 1.3. PRECEDENTES DEL PROYECTO ACIDE es un en o no de desa ollo in eg ado que puede se u ilizado ácilmen e como in é p e e, compilado o sis ema de bases de da os pa a Álgeb a Relacional, TRC, DRC, Da alog y SQL. Es e p oyec o es una con inuación en el desa ollo de la he amien a, que ha sido desa ollada po g upos an e io es pa a la asigna u a Sis emas In o má icos: ●El p ime año en el que se lle ó a cabo ue en el cu so académico 2006-2007 po Diego Ca diel F ei e, Juan José O iz Sánchez y Del ín Rupé ez Cañas. ●Du an e el cu so académico 2007-2008 el desa ollo ue con inuado po Miguel Ma ín Láza o. ●La siguien e i e ación en el desa ollo de ACIDE ue en el cu so 2010-2011 po Ja ie Salcedo Gómez. ●Du an e el cu so académico 2012-2013 el desa ollo de ACIDE siguió en manos de Pablo Gu ié ez Ga cía-Pa do, Elena Tejei o Pé ez de Ág eda y And és Vicen e del Cu a. ●En el cu so académico 2013-2014 el desa ollo se ealizó po Juan Jesús Ma qués O iz, Fe nando O dás Lo en e y Semí amis Gu ié ez Quin ana. ●Y du an e el cu so 2014-2015 el desa ollo se ealizó po Se gio Domínguez Fuen es quien dejó el p oyec o en el es ado en que me lo encon é. Es e p oyec o siemp e ue di igido po Fe nando Sáenz Pé ez. Es as memo ias se encuen an en la sección [1],[2],[3],[4] y[5] del capí ulo Re e encias. La e sión con la que empecé a desa olla el p oyec o ue la  0.17 enía un código uen e es anda izado y un compo amien o es able en cuan o a la ges ión de p oyec os, c eación y edición de iche os de ex o en di e en es lenguajes de p og amación, conexión an o con ODBC como con DES (Da alog Educa ional Sys em) [6]. La e sión gene ada a pa i de es e abajo es la  .18. T abajo de Fin de G ado 2019-2020 7 1.4. PLAN DE TRABAJO Al comienzo del p oyec o, el di ec o me p opo cionó una especi icación de los equisi os que debía cumpli el sis ema y a pa i de ella he ealizado implemen aciones de los mismos. Cuando es as implemen aciones han sido ealizadas se gene aba una nue a e sión del sis ema y la en iaba al di ec o que alidaba dichas uncionalidades. De es a o ma se ha e inado el sis ema has a que se ha gene ado una e sión es able que posee odas las uncionalidades eque idas al p incipio del p oyec o. 1.5. PLAN DE ESTRUCTURA El es o de la memo ia es á es uc u ada de la siguien e mane a: ●En el apa ado 3 se de ine la écnica de depu ación decla a i a que es el undamen o sob e el uso de es e p oyec o. ●En el apa ado 4 se expone la comunicación en e DES que posee la implemen ación de la depu ación decla a i a y ACIDE que expone la uncionalidad de DES de o ma g á ica. ●En el apa ado 5 se explica el diseño de la in e az implemen ada en ACIDE. ●En el apa ado 6 se exponen ejemplos de la depu ación decla a i a. ●En el apa ado 7 se exponen las a eas de man enimien o ealizadas. ●En el apa ado 8 se exponen las he amien as y ecnologías usadas pa a la ealización del p oyec o. ●En el apa ado 9 se expone la documen ación gene ada a lo la go del p oyec o. ●En el apa ado 10 se exponen las conclusiones del p oyec o. ●En el apa ado 11 se expone el abajo u u o del p oyec o. ●En el apa ado 12 se exponen las conclusiones del p oyec o en inglés. ●En el apa ado 13 se expone el abajo u u o del p oyec o en inglés. ●En el apa ado 14 se expone la bibliog a ía usada pa a la ealización del p oyec o. ●En el apa ado 15 se exponen las e e encias usadas en es a memo ia. ●Al inal de la memo ia se encuen a un anexo con los pasos a ealiza pa a pode desa olla nue as uncionalidades en ACIDE. T abajo de Fin de G ado 2019-2020 8 2. INTRODUCTION This epo desc ibes he de elopmen o he use in e ace o debugging SQL da abases as a inal deg ee p ojec . In i , he heo e ical ounda ions o he decla a i e debugging o SQL da abases, i s ope a ion in he DES sys em, he in e ace design and i s ope a ion in he ACIDE sys em a e p esen ed. A he end o he epo he e is an ins alla ion guide o s uden s and o he in e es ed pa ies who wan o de elop new unc ionali ies in ACIDE. 2.1. MOTIVATION Cu en ly he e a e no sys ems ha allow debugging o SQL da abases, al hough he e a e debugging me hods o PL / SQL execu ions. Languages such as C and Ja a ha e a clea execu ion and debugging low, bu he same does no happen in decla a i e languages such as SQL in which he esolu ion mechanisms a e hidden. To de e mine he sou ce o an e o i is necessa y o apply decla a i e debugging, which is a debugging echnique ha allows inding he sou ce o he e o in a sys em based on he in ended in e p e a ions o i . The DES [6] sys em allows ex ual debugging o SQL da abases, bu he u ili y is limi ed compa ed o g aphical debugging sys ems. ACIDE is an IDE ha helps new p og amme s o c ea e da abases and communica es wi h DES, he e o e he objec i e o his wo k is o c ea e a g aphical debugging in e ace in ACIDE ha akes ad an age o he unc ionali ies p o ided by he DES applica ion. 2.2. OBJECTIVES This inal deg ee p ojec aims o de elop a g aphical in e ace o debugging SQL da abases wi hin he ACIDE applica ion and ca ying ou main enance and e o co ec ion asks o he applica ion. This in e ace o e s he abili y o easily iden i y, i i exis s, he sou ce o he e o in a da abase h ough decla a i e debugging o Da alog and SQL using he DES ool in a con ex in which hey in e ene mul iple iews. The g aphical in e ace p o ides a simple and in ui i e solu ion o use s, especially s uden s and new SQL p og amme s, o ind ou he sou ce o hei da abase p oblem in SQL. The debugging is done h ough ques ions based on he da a ob ained om he iew o able, he possible answe s being: alid, in alid, missing uple and w ong uple. The ope a ion, as we will explain mo e ex ensi ely in la e sec ions, is as ollows: i s , he use will selec he iew o able ha has been de ec ed as inco ec and he T abajo de Fin de G ado 2019-2020 9 4. COMUNICACIÓN ENTRE ACIDE Y DES Pa a en ende cómo a a unciona la in e az de usua io y las posibilidades que iene hay que sabe cómo se aplica lo explicado en el apa ado an e io . DES es una aplicación basada en P olog de un Sis ema de bases de da os deduc i as que pe mi e el uso de Da alog, SQL, Álgeb a Relacional (RA), Cálculo Relacional de Tuplas (TRC), y Cálculo Relacional de Dominios (DRC). Es e sis ema es el que iene implemen ado el algo i mo de depu ación y oda la lógica necesa ia pa a su ealización. ACIDE es un IDE que expone las uncionalidades que posee DES de o ma g á ica, y en es e apa ado explica emos las uncionalidades que deben se implemen adas en ACIDE y o a in o mación ele an e. La comunicación que se ealiza en e DES y ACIDE es a a és de comandos. Los comandos empiezan po el ca ác e ‘/’, y se puede an epone ‘/ api’ a los comandos pa a que sigan el p o ocolo TAPI (Tex ual Applica ion P og amming In e ace) y de uel a la in o mación es uc u ada. Las posibles espues as a comandos son: ●Respues a con éxi o y sin de ol e da os: $success ●Respues a con e o : $e o código ex o ... ex o $eo Donde código es el código del e o ,  ex o es el ex o del e o , que puede ex ende se a ias líneas y $eo es el in de la ansmisión de da os. 4.1. OPCIONES DE DEPURACIÓN A con inuación se an a lis a las posibles ope aciones y con igu aciones que se an a usa en los comandos pa a la depu ación de bases de da os. ●Es ados de los nodos: S a e  :=  alid | non alid  | e oneous ●Con igu ación de la depu ación: T abajo de Fin de G ado 2019-2020 16 o us _ ables([yes|no]): es a opción indica si se con ía en las ablas de nues a base de da os, es deci , en caso de con ia en las ablas sus nodos end án el es ado ‘ alid’. o us _ ile(FileName  ): es a opción indica que se con íen en las is as de inidas en el a chi o indicado. odebug([ ull|plain]): es a opción indica si se pueden o no usa las opciones de upla al an e y e ónea. oo de ([ca dinali y| opdown]): es a opción indica el o den de selección de nodos. ●Tuplas: Tuple := Rela ion  (Value  ,...,Value  ) Los alo es se encie an en e comillas simples pa a alo es de ipo s ing. ●P egun as al usua io: Ques ion := all(ViewName  ) | in(Tuple  ,Rela ionName  ) | subse (Rela ionName1  ,Rela ionName2  ) ●Respues as del usua io: Answe  := abo | % Pa a odas las p egun as  alid | % Pa a odas las p egun as non alid | % Pa a odas las p egun as missing(Pa ialTuple  ) | % Menos pa a in y subse w ong(To alTuple  ) | % Menos pa a in 4.2. COMANDOS En es e apa ado amos a expone los comandos de depu ación y sus uncionalidades. ●Comenza la depu ación: / api /debug_sql ViewName Op ions Donde ViewName es el nomb e de la is a a depu a y Op ions es la lis a de opciones de depu ación comen ada an e io men e sepa ada po espacios. ●Ma ca nodo con su es ado: / api /debug_sql_se _node NodeName S a e T abajo de Fin de G ado 2019-2020 17 ●P egun a al usua io: / api /debug_sql_cu en _ques ion ●Respues a del usua io: / api /debug_sql_answe  Ques ion Answe ●Es adís icas de la depu ación: / api /debug_sql_s a is ics 4.3. FUNCIONAMIENTO DE LA DEPURACIÓN Cuando el usua io de ec a que una is a no de uel e los esul ados espe ados (no es álida), puede inicia la sesión de depu ación emi iendo el siguien e comando: / api /debug_sql ViewName Op ions Como espues a, DES de ol e á una lis a de nodos y sus es ados si no hay e o . En es a lis a de nodos que de uel e DES es posible que se encuen e el nodo causan e del p oblema. En es e caso el nodo es á iden i icado como e óneo: e oneous (po ejemplo cuando se selecciona una is a que solo depende de ablas y se con ía en sus con enidos). En es e caso hab ía e minado la depu ación. Si de uel e un e o ( espues a es ánda de e o como se desc ibe en el pun o 6) la depu ación hab ía e minado. Las opciones (Op ions  ) son las de inidas en el apa ado 6.1. Dependiendo de la espues a del usua io, Answe  oma á dis in os alo es: ●No álida (Non- alid): Al elegi es a opción se emi e el comando: / api /debug_sql ViewName  non alid Op ions ●Tupla e ónea (W ong Tuple): Pa a elegi es a opción se debe selecciona la upla e ónea en la ejilla de da os de ViewName  (la upla es ob iamen e o al). Al elegi es a opción se emi e el comando: / api /debug_sql ViewName  w ong(Tuple  ) Op ions ●Tupla al an e (Missing Tuple): Pa a elegi es a opción se deben esc ibi los alo es de la upla en una ejilla. Alguno de los alo es puede es a acío (es deci , la upla puede se pa cial, como se desc ibe en el apa ado 1). Al elegi es a opción se emi e el comando: / api /debug_sql ViewName  missing(Tuple  ) Op ions Después el sis ema gene a una p egun a y selecciona el siguien e nodo que debe se depu ado. El ipo de p egun a que se espe a que esponda el usua io se de e mina con el comando: /debug_sql_cu en _ques ion que de uel e ese ipo de p egun a, que se de allan a con inuación. Pa a dicha p egun a se pueden ene las siguien es espues as: T abajo de Fin de G ado 2019-2020 18 ●Válida (Valid): Al elegi es a opción se esponde con: / api /debug_sql_answe all/subse /in(ViewName  )  alid ●No álida (Non- alid): Al elegi es a opción se esponde con: / api /debug_sql_answe all/subse /in(ViewName  ) non alid ●Tupla e ónea (W ong Tuple): Pa a elegi es a opción se deben esc ibi los alo es de la upla. Alguno de los alo es puede es a acío. / api /debug_sql_answe all/subse (ViewName  ) w ong(Tuple  ) ●Tupla al an e (Missing Tuple): Pa a elegi es a opción se deben esc ibi los alo es de la upla. Alguno de los alo es puede es a acío. / api /debug_sql_answe all(ViewName  ) missing(Tuple  ) ●Abo a (Abo ): Abo a la depu ación. Al elegi es a opción se esponde con: / api /debug_sql_answe all(ViewName  ) abo En cualquie momen o el usua io puede ma ca los nodos de los que no se conozca aún su es ado con el siguien e comando: / api /debug_sql_se _node NodeName   s a e La depu ación e mina po que la cancela el usua io o bien po que se de uel e un nodo e óneo (e oneous, esul ado del comando / api /debug_sql_answe ). En es e úl imo caso se indica el nodo e óneo y se in o ma de las es adís icas, que se ob ienen con el comando  api /debug_sql_s a is ics explicado en el apa ado 6.2. En el siguien e apa ado se mues a cómo se ha diseñado la in e az g á ica en base a es os comandos. T abajo de Fin de G ado 2019-2020 19 5. DISEÑO DE LA INTERFAZ Como hemos comen ado en la in oducción, ACIDE es un IDE desa ollado po a ios g upos de es udian es en años an e io es. En el momen o de comenza es e p oyec o ya es aba c eado el panel de depu ación den o del sis ema. És e enía un compo amien o es able en cuan o a la ob ención de las is as exis en es en la base de da os en uso y la gene ación de g a os que mues an la elación en e is as y ablas, como puede isualiza se en la siguien e imagen. El p incipal obje i o de la in e az iene que se la depu ación de o ma ápida e in ui i a pa a que cualquie usua io que no enga expe iencia p e ia con la aplicación ACIDE pueda encon a los e o es que pueda ene su base de da os. Las ca ac e ís icas p incipales que iene que ene la in e az es de se cla a pa a el usua io y po an o en cada paso de depu ación el sis ema debe expone oda la in o mación disponible. Pa a ello el panel ‘Debug SQL’ de ACIDE mues a el g a o de compu ación con los es ados de los nodos ac ualizados y una en ana con la in o mación del nodo que es á siendo depu ado ac ualmen e. En es e panel se han incluido 3 bo ones nue os con el obje i o de mos a la in o mación de la is a seleccionada, pa a comenza la depu ación y pa a con igu a la depu ación como se mues a en la siguien e imagen. T abajo de Fin de G ado 2019-2020 20 El p ime bo ón mues a la in o mación ob enida de la is a seleccionada que es la is a que el usua io ha de ec ado como e ónea. Es o pe mi e que el usua io pueda compa a en cualquie momen o esa is a con o as is as o ablas elacionadas con ella, eniendo un mayo con ex o sob e cuál puede se el o igen del p oblema. Pulsando es e bo ón se ob iene una nue a en ana como la siguien e: En caso de pulsa en el bo ón de comenza la depu ación se ab i á una nue a en ana con la in o mación de la is a o abla que es emos depu ando en ese momen o con las opciones disponibles. La abla de da os siemp e end á su úl ima ila acía y el usua io la ellena á en caso de que e in o ma al sis ema que hay una upla al an e en dicha is a o abla. En caso de que e indica que hay una upla inco ec a, se in o ma á al sis ema en iando la upla comple a que es é seleccionada en ese momen o. T abajo de Fin de G ado 2019-2020 21 En cada paso de depu ación se ac ualizan los colo es de los nodos del g a o de depu ación con la in o mación que iene ac ualmen e el sis ema, los colo es de los nodos son los siguien es: ●G is: en caso de que dicho nodo no haya sido explo ado. ●Ama illo: indica que dicho nodo es el seleccionado ac ualmen e. ●Ve de: en caso de que el nodo haya sido e aluado como álido. ●Na anja: en caso de que el nodo haya sido e aluado como no álido. ●Rojo: indica que dicho nodo es el o igen del e o en la base de da os. Al inaliza se el p oceso de depu ación, se mues a cuál e a el nodo que causaba el p oblema, pe mi iendo e pos e io men e las es adís icas de la depu ación y edi a dicho nodo: T abajo de Fin de G ado 2019-2020 22 La mues a de es adís icas iene la in o mación de el núme o de nodos, el máximo núme o de p egun as, el núme o de p egun as, el núme o de uplas inspeccionadas, el núme o de uplas aíz y el núme o de uplas que no son aíz: La opción de edición del nodo ab i á una abla en la que se puede edi a la in o mación en caso de se abla o la edición de la o mulación en SQL de la de inición de la is a en caso de se lo: También se han añadido opciones al g a o de depu ación con menús con ex uales en cada nodo haciendo clic de echo sob e el mismo con las di e en es opciones que dispone el nodo. De es a o ma se puede hace una depu ación más ápida aún ya que pe mi e al usua io elegi el nodo que quie e depu a dando una mayo libe ad al usua io de pode depu a sus bases de da os. Es as opciones no se encuen an disponibles oda ía en la úl ima e sión de DES publicada. T abajo de Fin de G ado 2019-2020 23 En caso de pulsa el bo ón de con igu a la depu ación se mos a á una nue a en ana con las opciones desc i as en el apa ado an e io : Con odo es o desc i o an e io men e el uncionamien o es el siguien e: el usua io selecciona la is a que ha de ec ado como inco ec a en el desplegable de is as que hay en el panel ‘Debug SQL’ y después comienza la depu ación a a és del bo ón ‘S a Debug’ del panel de ‘Debug SQL’ o a a és del menú con ex ual de dicho nodo. En caso de que haya pulsado el bo ón ‘S a Debug’ comenza á la depu ación guiada y mos a á la in o mación de los nodos y las opciones disponibles de dicho nodo. En caso de que el usua io haya seleccionado las opciones del menú con ex ual se ealiza á la depu ación lib e en la que el usua io segui á seleccionando las opciones del menú con ex ual. En cualquie momen o el usua io puede cambia de modo de depu ación que le con enga más en ese momen o. Cuando el p oceso de depu ación e mine ob end á la en ana que mues a cual es el nodo inco ec o y las opciones de mos a es adís icas y la de edición del nodo e óneo. A con inuación mos a emos en la p ác ica odo lo explicado an e io men e pa a e la u ilidad y e iciencia de ealiza una depu ación g á ica en con aposición de ealiza lo con una in e az ex ual. T abajo de Fin de G ado 2019-2020 24 6. DEPURACIÓN DECLARATIVA EN PRÁCTICA En es e apa ado mos a emos en la p ác ica el uncionamien o de la depu ación decla a i a. Pa a ealiza lo, amos a expone Pa a es e ejemplo de depu ación amos a de ini una base de da os de una ienda de moda ‘Pa uá’ que con iene 4 ablas: empleados, a ículos, en as e in o_ en a. En es a ienda les gus a ecompensa a sus mejo es dependien es ya que pa icipan ac i amen e du an e el p oceso de en a pa a aconseja e in en a ende odo lo posible. Pa a hace la dis inción de sus mejo es dependien es ienen que supe a una se ie de equisi os en base a la in o mación almacenada es sus bases de da os a lo la go del mes. Es os equisi os suelen se muy exigen es ya que a los que supe an odos los il os 3 meses seguidos ienen la posibilidad de ascenso y una semana de acaciones pagadas a ca go de la emp esa. Las es icciones impues as pa a la ob ención de mejo es empleados son las siguien es: ●Los dependien es deben ene una media de en as c uzadas mayo a 1,6. Las en as c uzadas co esponden a la can idad de p oduc os endidos en un mismo icke , e.g. un dependien e ende 2 p oduc os a un clien e y después ende o o p oduc o a un clien e dis in o, las en as c uzadas co esponden a 1,5 ya que ha endido 3 p oduc os a 2 clien es. ●Tienen que habe pa icipado ac i amen e en el op de p oduc os más endidos po la ienda. ●Tienen que ene en as con un impo e mayo a 50 eu os. ●Tienen que ene un endimien o de sueldo mayo a 5, es deci , las en as que hace a lo la go del mes ienen que se al menos 5 eces su sueldo. En la igu a X.X se mues a las ablas de la base de da os Pa uá. Las cla es p ima ias se mues an sub ayadas. La igu a Y.Y mues a las is as c eadas pa a la selección de los mejo es empleados de nues a ienda. La p ime a is a es buenas_ en as(id_empleado, nume o_ en as)  que ob iene el id de los empleados que han hecho en as con impo es supe io es a 50 eu os y el núme o de eces que lo han conseguido. La segunda is a  op_a ículos(id_a ículo, can idad)  mues a los a ículos más endidos de la ienda y sus unidades endidas. La e ce a is a mues a op_a iculo_empleado(id_empleado, id_a iculo)  ecoge el a ículo más endido de cada empleado. La cua a is a empleado_en_ op(id_empleado)  mues a los empleados cuyo p oduc o más endido es é en la is a  op_a ículos.  La quin a is a en as_c uzadas(id_empleado, en a_c uzada)  ob iene los ids de los empleados cuya en a c uzada media sea mayo que 1,6 jun o a su en a c uzada. La sex a is a sueldos_ en ables(id_empleado, sueldo)  ob iene los id de los empleados y sueldo de aquellos cuyas en as sean al menos 5 eces supe io es a su sueldo. La sép ima is a mejo es_empleados(id_empleado)  ecoge a los empleados que es án en empleado_en_ op  , buenas_ en as  ,  en as_c uzadas  y sueldos_ en ables  . T abajo de Fin de G ado 2019-2020 25 In o: p ocessAnswe (subse ( en as_empleado_slice1, en as_empleado),w ong( en as_em pleado(2,1850))) In o: 31 ules lis ed. In o: Ques ion: all( op_a iculos) In o: Debugging  iew ' op_a iculos'. { 1- op_a iculos(5), 2- op_a iculos(7), 3- op_a iculos(9), 4- op_a iculos(13), 5- op_a iculos(14) } Según hemos is o en la in o mación mos ada an e io men e, la is a op_a iculos es co ec a pues o que sus uplas son las espe adas. Inpu : Is his he expec ed answe  o  iew ' op_a iculos'? (y/n/m/mT/w/wN/a/h) [y]: y In o: p ocessAnswe (all( op_a iculos), alid) In o: 32 ules lis ed. In o: Ques ion: all( en a) In o: Debugging  able ' en a'. { 1- en a(1,8,7,80,2), 2- en a(2,9,2,600,2), 3- en a(3,1,3,375,3), 4- en a(8,5,2,1250,8), 5- en a(9,8,5,200,1) } Como ya sospechábamos an e io men e, la abla en as no debe ía de es a bien pues o que las is as que dependían de es a e an e óneas. En es e caso sabemos que la segunda y cua a upla iene una en a con el ID de empleado 2, en es e caso T abajo de Fin de G ado 2019-2020 32 espondemos que la abla no es álida y con es o descub imos el o igen de nues o p oblema. Inpu : Is his he expec ed answe  o  able ' en a'? (y/n/m/mT/w/wN/a/h) [y]: n In o: p ocessAnswe (all( en a),non alid) In o: 33 ules lis ed. In o: Buggy  able ound: ' en a'. In o: Debug S a is ics: In o: Numbe o nodes : 12 In o: Max. numbe o ques ions : 12 In o: Numbe o ques ions : 12 In o: Numbe o inspec ed uples: 20 In o: Numbe o oo uples : 1 In o: Numbe o non- oo uples : 19 El p oblema de es a depu ación no es solo que el p oceso es muy ex enso ya que además se han eliminado en la sesión de depu ación an e io el lis ado de eglas mos ado an e io a las líneas ‘In o: x ules lis ed.’ , sino que ambién se puede ol e con uso pa a los usua ios que in en an hace una depu ación de sus bases de da os ya que no pueden e de o ma cla a la in o mación que es án depu ando. En nues o caso sabíamos que el empleado con ID 2 no podía es a en nues as is as de mejo empleado po que es aba de acaciones pe o en caso de habe sido po un allo en el cálculo de alguna is a al no mos a escasa in o mación hab ía sido más complicado pa a el usua io de ec a como álidas o no álidas las is as. T abajo de Fin de G ado 2019-2020 33 6.2. DEPURACIÓN DECLARATIVA SQL EN ACIDE Como hemos is o en el apa ado an e io el p oceso de depu ación puede se bas an e edioso, po eso el obje i o de es e TFG es la c eación de una in e az g á ica en la que se pueda hace una depu ación de una base de da os de una o ma más ápida e in ui i a. Únicamen e enemos que ab i ACIDE y p ocesa nues o a chi o SQL como ha íamos en DES. Una ez p ocesado podemos selecciona la is a que que emos depu a pa a mos a el g a o de dependencias en e is as y ablas y comenza la depu ación pulsando el bo ón play. T abajo de Fin de G ado 2019-2020 34 Al pulsa lo se mues a el con enido de la is a y las posibles opciones de depu ación. T abajo de Fin de G ado 2019-2020 35 En nues o caso sabemos que el empleado con ID 2 no debe ía de es a en la abla así que pulsa emos el bo ón ‘W ong Tuple’. Con cada paso de depu ación se ma ca un nue o nodo del g a o y se ma ca con di e en es colo es el es ado de los nodos explo ados. Los colo es posibles pueden se : e de pa a los nodos álidos, na anja pa a los nodos no álidos y ojo pa a los nodos e óneos. T abajo de Fin de G ado 2019-2020 36 Aho a p ocedemos a depu a a is a sueldos_ en ables, que ampoco es una is a álida, po lo an o pulsamos el bo ón ‘Non Valid’. T abajo de Fin de G ado 2019-2020 37 La is a buenas_ en as posee el id 2 po lo an o no debe pe enece a es a. La is a empleado_en_ op iene el id 2 po lo an o ampoco debe ía de es a en es a. T abajo de Fin de G ado 2019-2020 38 La is a sueldos_ en ables no debe ene la upla con id 2. La in o mación de la is a empleados es á bien así que pulsamos ‘Yes’. T abajo de Fin de G ado 2019-2020 39 La upla con ID_EMPLEADO 2 no debe ía de es a en op_a iculos_empleado. T abajo de Fin de G ado 2019-2020 40 La is a de op_a iculos es co ec a. T abajo de Fin de G ado 2019-2020 41 7. TAREAS DE MANTENIMIENTO REALIZADAS El obje i o p incipal de es e TFG ha sido la elabo ación de la in e az de usua io pa a la depu ación de bases de da os en ACIDE pe o además se ha ealizado g andes es ue zos po hace man enimien o de la aplicación y esolución de bugs de años an e io es. A con inuación se an a expone las a eas de man enimien o y esolución de bugs más no ables que se han ealizado: ●Homogeneiza los es ilos de dibujo de odos los g a os de ACIDE haciendo que el nodo aíz se man enga en la pa e supe io . ●C eación de un g a o nue o RDG den o del panel PDG y mos a el g a o al ab i es e panel. ●Man ene la con igu ación léxica de la consola de ACIDE al einicia la. ●En el panel ‘Da abase’ ac ualiza las is as an es de mos a las, an es man enían los con enidos del p ocesamien o del a chi o SQL pe o no las modi icaciones ealizadas desde la aplicación. ●Realiza con ol de e o es a la ho a de ealiza edición de una is a (modi icación de la consul a SQL). Es o co ompía al sis ema. ●E i a la modi icación de da os de las is as du an e su isualización. ●Añadi la uncionalidad al checkbox ‘SQL Tex ’ de ab i y selecciona el nodo del á bol en el panel ‘Da abase’ y cen a dicho nodo en el panel pa a que el usua io pueda e lo. ●Inc emen a el núme o de comandos en e ACIDE yDES usen el p o ocolo TAPI pa a una mejo man enibilidad de la comunicación en e los dos sis emas y eliminación de comandos duplicados. T abajo de Fin de G ado 2019-2020 48 ●A eglada la modi icación de inse ción de da os en las ablas en uplas que enían más de 1 columna y la uncionalidad de bo ado de upla. ●A eglada la isualización de is as y ablas pa a las bases de da os ex e nas a DES. ●A eglada la isualización de ex o SQL en bases de da os ex e nas a DES pa a la edición de is as. Es os 2 úl imos pun os han sido imp escindibles pa a el co ec o uncionamien o de la depu ación en bases de da os ex e nas. T abajo de Fin de G ado 2019-2020 49 8. HERRAMIENTAS Y TECNOLOGÍAS La he amien a con la que se ha lle ado a cabo el con ol de e siones ha sido Gi Hub [13], debido a mi expe iencia de uso de es a he amien a y al ex enso uso de es a, de o ma que u u os g upos puedan segui u ilizando es e eposi o io ya con igu ado pa a u u os desa ollos sob e ACIDE. El IDE u ilizado pa a el desa ollo de código ha sido In ellij po su g an sis ema de depu ación y mi expe iencia de uso del mismo. Pa a el uso de bases de da os ex e nas a a és de ODBC he usado la he amien a XAMPP que iene como base de da os MySQL. Pa a el desa ollo de la in e az he u ilizado Ja a Swing ya que es e p oyec o e a una con inuación de abajos de años an e io es y ACIDE es á desa ollado con es a ecnología. Pa a la ans e encia de a chi os y ejecu ables en e alumno y di ec o hemos usado Google D i e[21]. T abajo de Fin de G ado 2019-2020 50 9. DOCUMENTACIÓN Todos los a chi os del p oyec o, an o los a chi os de documen ación como los a chi os de código son obje o de con ol de la ges ión de la con igu ación. Se ha seguido con la con igu ación de la ges ión desc i a en las memo ias [1],[2],[3], [4], [5] y [6]. En la comunicación en e alumno y di ec o du an e la ealización del p oyec o, se ha lle ado a cabo el seguimien o del documen o de a eas llamado “ a eas_XX-XX-XXXX” en la ca pe a de en egas de Google D i e[21] donde XX-XX-XXXX es la echa de en ega. Es e documen o de a eas se ac ualizaba según se ealizaban las a eas y se hacían nue as i e aciones sob e el p oyec o. En es e documen o, las a eas podían es a en 3 es ados posibles ●PENDIENTE:Ta ea eque ida po pa e del di ec o pa a se implemen ada. ●REVISAR:Implemen ación ealizada po el alumno, pe o pendien e de ap obación. ●OK: Implemen ación ealizada y ap obada po el di ec o . Los es ánda es aplicados en es e documen o han sido los mismos que en años an e io es pa a man ene uni o midad de las documen aciones, pa a más in o mación e isa las memo ias e e enciadas en [1], [2], [3], [4], [5] y [6]. Con cada i e ación en el desa ollo se ha en egado una nue a e sión de la aplicación al di ec o que consis ía en un a chi o ZIP, el a chi o ejecu able ja y una ac ualización en el documen o de a eas de Google D i e [21]. Den o del a chi o ZIP se encon aba el ejecu able del p oyec o, los a chi os de con igu ación, el código del p oyec o y a chi os SQL pa a se p ocesados po la aplicación. Cada en ío se gua daba en una ca pe a con la echa de en ega. De es a o ma se almacenan las di e en es e siones de ACIDE eniendo un con ol sob e los a ances del p oyec o. T abajo de Fin de G ado 2019-2020 51 10. CONCLUSIONES Con la inalización del p oyec o se han cumplido los obje i os p opues os al inicio del mismo al mismo iempo que se han esuel o e o es que enía la he amien a y se han ealizado o as mejo as mencionadas en el apa ado an e io . Se ha c eado una in e az g á ica a ín a la ya exis en e en ACIDE. Se han man enido odos los es ánda es de código y documen ación es ablecidos en años an e io es. Es o es muy impo an e ya que ACIDE es un p og ama de código abie o que se usa en uni e sidades de odo el mundo y p obablemen e se ealiza án abajos de in de g ado en un u u o elacionados con es e sis ema. Hay que ene en cuen a que ACIDE es una aplicación bas an e g ande en la que han in e enido muchos p og amado es y po an o los p ime os meses de abajo me ha supues o un g an es ue zo pa a empapa me del uncionamien o de la aplicación y de la in aes uc u a in e na del mismo. Se pueden p ocesa odos los ejemplos e lejados en la manual o icial de DES [7] an o en el modo de depu ación guiada como en el modo de depu ación de los menús con ex uales de los nodos de los g a os. La aplicación ACIDE es un IDE  obus o que puede se de g an ayuda pa a nue os p og amado es pe o puede mejo a se po an o en el siguien e apa ado se exponen posibles mejo as que pueden implemen a se en el sis ema pa a una mejo a en la expe iencia de usua io y man enibilidad. T abajo de Fin de G ado 2019-2020 52 11. TRABAJO FUTURO En es a sección se lis an las mejo as más no ables que mejo a ían el uso de la aplicación: ●In oduci en el iche o de idioma los a ajos de eclado, de es e modo los a ajos queda ían asociados al idioma ca gado en la aplicación. ●Inclui un panel en la pan alla p incipal la base de da os ase ada en ez de mos a la en una nue a en ana. ●Pe mi i el uso de pe spec i as como en In ellij o Eclipse[10]. Debido a la g an can idad de paneles y uncionalidades que posee ACIDE se ía in e esan e que se pudie an con igu a pe spec i as como o os IDE mejo ando la expe iencia de los usua ios. ●Añadi la uncionalidad de ab i iche os en el edi o de ex o de ACIDE cuando un usua io pulsa y a as a un a chi o den o de es e. ●Inclui es uni a ios y de in eg ación, de es a o ma se asegu a una mayo man enibilidad de la aplicación cuando se modi iquen uncionalidades o se c ean nue as e siones de DES asegu ando la comple a compa ibilidad en e ambas aplicaciones. Los pun os an e io es son los que conside o más impo an es pa a una mejo a de la aplicación pe o pueden encon a se más mejo as en el documen o TODO_ACIDE.doc. Es e documen o se encuen a en la ca pe a de Google D i e del p oyec o. T abajo de Fin de G ado 2019-2020 53 12. CONCLUSIONS Wi h he comple ion o he p ojec , he objec i es p oposed a he beginning o he p ojec ha e been me , a he same ime ha e o s in he ool ha e been esol ed and o he imp o emen s men ioned in he p e ious sec ion ha e been made. An in e ace has been implemen ed acco ding o al eady implemen ed wi hin ACIDE and all he code and documen a ion s anda ds es ablished in p e ious yea s ha e been main ained, his is e y impo an since ACIDE is an open sou ce p og am ha is used in uni e si ies a ound he wo ld and he e will p obably be inal deg ee p ojec s in he u u e ela ed o his sys em. Keep in mind ha ACIDE is a ai ly la ge applica ion in which many p og amme s ha e in e ened and he e o e he i s mon hs o wo k ha e in ol ed a g ea e o o soak up he ope a ion o he applica ion and i s in e nal in as uc u e. All he examples e lec ed in he o icial DES manual [7] can be p ocessed bo h in he guided debugging mode and in he debugging mode o he con ex ual menus o he g aph nodes. The ACIDE applica ion is a obus IDE  ha can be o g ea help o new p og amme s bu i can be imp o ed, he e o e, he nex sec ion p esen s possible imp o emen s ha can be implemen ed in he sys em o an imp o emen in he use expe ience and main ainabili y. T abajo de Fin de G ado 2019-2020 54 13. FUTURE WORK This sec ion lis s he mos no able imp o emen s ha would imp o e he use o he applica ion: ●En e he keyboa d sho cu s in he language ile, in his way he sho cu s would be associa ed wi h he language loaded in he applica ion. ●Include a panel on he main sc een o he asse ed da abase ins ead o displaying i in a new window. ●Allow he use o pe spec i es as in In ellij o Eclipse [10]. Due o he la ge numbe o panels and unc ionali ies ha ACIDE has, i would be in e es ing i i could be con igu ed like o he IDEs o which use s a e al eady accus omed and can con igu e i o hei own liking. ●Add he unc ionali y o open iles in he ACIDE  ex edi o when a use clicks and d ags a ile in o i . ●Include uni and in eg a ion es s, in his way, g ea e main ainabili y o he applica ion is ensu ed when unc ionali ies a e modi ied o new e sions o DES a e c ea ed, ensu ing comple e compa ibili y be ween bo h applica ions. The p e ious poin s a e he ones ha I conside mos impo an o an imp o emen o he applica ion bu mo e imp o emen s can be ound in he TODO_ACIDE.doc documen T abajo de Fin de G ado 2019-2020 55 14. BIBLIOGRAFÍA Pa a desa olla el p esen e p oyec o se han seguido las siguien es uen es: ●Explicación del uncionamien o de los comandos de DES. o Da alog Educa ional Sys em V6.5 Use ’s Manual. Fe nando Sáenz Pé ez. Uni e sidad Complu ense de Mad id. 2020. ●Teo ía sob e la depu ación decla a i a en SQL: o Decla a i e Debugging o W ong and MissingAnswe s o SQL Views. Ra ael Caballe o, Yollanda Ga cía-Ruíz, y Fe nando Sáenz Pé ez. Uni e sidad Complu ense de Mad id. 2013. oAlgo i hmic Debugging o SQL Views.R. Caballe o, Y. Ga cía-Ruiz and F. Sáenz-Pé ez  .  Uni e sidad Complu ense de Mad id. 2011. T abajo de Fin de G ado 2019-2020 56 15. REFERENCIAS [1] D. Ca diel F ei e, J. J. O iz Sánchez y D. Rupé ez Cañas. ACIDE: A Con igu able IDE. Uni e sidad Complu ense de Mad id. 2007. [2] M. Ma ín Láza o. ACIDE 0.2: a con igu able in eg a ed de elopmen en i onmen . Uni e sidad Complu ense de Mad id. 2008. [3] J. Salcedo Gómez. ACIDE: A Con igu able IDE. DES GUI F on -end. Uni e sidad Complu ense de Mad id. 2011. [4] P. Gu ié ez Ga cía-Pa do, E. Tejei o Pé ez de Ág eda, A. Vicen e del Cu a: A Con igu able IDE. DES GUI F on -end. Uni e sidad Complu ense de Mad id. 2013 [5] J. J. Ma qués O iz, F. O dás Lo en e y S. Gu ié ez Quin ana: A Con igu able IDE. DES GUI F on -end. Uni e sidad Complu ense de Mad id. 2014 [6] S. Domínguez Fuen es: Acide: a con igu able IDE: ACIDE debugging. Uni e sidad Complu ense de Mad id. 2015 [7] Manual o icial de DES: h ps://www. di.ucm.es/p o eso / e nan/des/h ml/manual/manualDES.h ml [8] R. Caballe o, Y. Ga cía-Ruiz, and F. Sáenz-Pé ez, Decla a i e Debugging o W ong and Missing Answe s o SQL Views. Uni e sidad Complu ense de Mad id. 2013. [9]R. Caballe o, Y. Ga cía-Ruiz and F. Sáenz-Pé ez. Algo i hmic Debugging o SQL Views. Uni e sidad Complu ense de Mad id. 2011. [10] Página o icial de Eclipse: h ps://www.eclipse.o g/ [11] Página o icial de Google d i e: h ps://d i e.google.com/ [12] Página o icial de In ellij: h ps://www.je b ains.com/es-es/idea/ [13] Página o icial de Gi Hub: h ps://gi hub.com/ T abajo de Fin de G ado 2019-2020 57 Añadimos únicamen e los a chi os .ja  que es án den o de la ca pe a lib: T abajo de Fin de G ado 2019-2020 64 Aplicamos los cambios: T abajo de Fin de G ado 2019-2020 65 Aho a enemos que añadi un nue o pe il de ejecución, en el bo ón de inicia pulsamos en el desplegable y seleccionamos la opción de ‘Run Con igu a ions’: Añadimos una nue a con igu ación den o de ‘Ja a Applica ion’ y seleccionamos como la clase p incipal ‘AcideMain’: T abajo de Fin de G ado 2019-2020 66 Aho a ya somos capaces de co e la aplicación, lo único que nos queda es gene a nues os ejecu ables, pa a ello hacemos clic de echo en el p oyec o y seleccionamos la opción de expo a : T abajo de Fin de G ado 2019-2020 67 Una ez hayamos seleccionado la opción pulsa emos la opción ‘Runnable JAR ile’ den o de la ca pe a ‘Ja a’. T abajo de Fin de G ado 2019-2020 68 Después selecciona emos con igu ación de ejecución gene ada an e io men e y damos nomb e a nues o ejecu able y nos asegu amos de que es é en la aíz del p oyec o pues o que pa a ejecu a se necesi a los a chi os de con igu ación. T abajo de Fin de G ado 2019-2020 69 Con es o ya enemos odas las opciones que necesi amos como desa ollado es. T abajo de Fin de G ado 2019-2020 70