TRABAJO DE FIN DE GRADO 2019/2020
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
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
RESUMEN
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
ABSTRACT
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.2Depu 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. INTRODUCCIÓ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. MOTIVACIÓ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. OBJETIVOS
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. PRECEDENTES 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. PLAN 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. PLAN 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. INTRODUCTION
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. MOTIVATION
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. OBJECTIVES
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. COMUNICACIÓ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. OPCIONES 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. COMANDOS
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. FUNCIONAMIENTO 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. DISEÑ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. DEPURACIÓ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. DEPURACIÓN DECLARATIVA 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. TAREAS 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 yDES 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. HERRAMIENTAS 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. DOCUMENTACIÓ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. CONCLUSIONES
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. TRABAJO 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. CONCLUSIONS
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. FUTURE 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. BIBLIOGRAFÍ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. REFERENCIAS
[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