Sis emadec eaciónde u o iales
in e ac i ospa aelap endizajede
lenguajesdep og amación
Ra aelCa u laTo ecilla
Ca losCongos oSando al
T abajode indeg adodelG adoenIngenie íaIn o má ica
Facul addeIn o má ica
Uni e sidadComplu ensedeMad id
Di ec o :En iqueMa ínMa ín
Codi ec o :ManuelMon eneg oMon es
2
AUTORIZACIÓN PARA LA DIFUSIÓN DEL TRABAJO FIN DE GRADO Y SU
DEPÓSITOENELREPOSITORIOINSTITUCIONALEPRINTSCOMPLUTENSE
Los abajo i man es, alumnos y u o es del T abajo Fin de G ado (TFG) en el G ado
en Ingenie ía In o má ica de la Facul ad de in o má ica, au o izan a la Uni e sidad
Complu ense de Mad id (UCM) a di undi y u iliza con ines académicos, no come ciales y
mencionando exp esamen e a su au o el T abajo Fin de G ado (TFG) cuyos da os se de allan
a con inuación. Así mismo au o izan a la Uni e sidad Complu ense de Mad id a que sea
deposi ado en acceso abie o en el eposi o io ins i ucional con el obje o de inc emen a la
di usión, uso e impac o del TFG en In e ne y ga an iza su p ese ación y acceso a la go
plazo.
TÍTULO del TFG: Sis ema de c eación de u o iales in e ac i os pa a el ap endizaje de
lenguajesdep og amación
Cu soacadémico:2015/2016
Nomb edelAlumnos:
Ra aelCa u laTo ecilla
Ca losCongos oSando al
Tu o esdelTFGydepa amen oalquepe enecen:
En iqueMa ínMa ín
ManuelMon eneg oMon es
Depa amen odeSis emasIn o má icosyCompu ación
Fi madelalumno/s Fi madel u o /es
3
4
Índice
Resumen
9
1.In oducción
11
1.1.An eceden es
11
1.2.Obje i os
12
1.3.Plande abajo
15
1.3.1.Me odologíade abajoyplani icación
16
1.3.2.Fasesdedesa ollo
16
1.4.He amien asdedesa ollou ilizadas
17
1.B.In oduc ion
19
1.1.B.Backg ound
19
1.2.B.Ta ge s
22
1.3.B.Wo kplan
23
1.3.1.B.Wo kme hodologyandplanning
23
1.3.2.B.De elopmen phases
24
1.4.BDe elopmen oolsused
25
2.Diseñodelaaplicación
27
2.1.Es uc u adeclases
27
2.2.Tecnologíasu ilizadas
29
2.2.1.Ja a[6]:
29
2.2.2.Ja aFX[7]:
29
2.2.3.YAML(YAMLAin' Ano he Ma kupLanguage):
30
2.2.4.Ma kdown:
31
2.2.5.ANTLR(Ano he ToolFo LanguageRecogni ion)[9]:
33
2.2.6.Py hon[10]:
33
5
2.2.7.JSON(Ja aSc ip Objec No a ion):
33
2.2.8.Ma en[11]:
34
2.2.9.Gi Hub:
34
2.3.De inicióndea chi osex e nos
34
2.3.1.A chi osYAML
34
2.3.2.A chi osANTLR
38
2.3.3.A chi osPy hon
39
2.3.4.A chi os empo alesJSON
41
2.4.In e accióndecomponen essiguiendoejemplodeejecución
41
2.5.In eg aciónymodi icación
42
3.Conclusiones
45
3.1.Resul adosob enidos en ea esul adosespe ados
45
3.1.1.P esen aciónde u o iales
45
3.1.2.C eaciónyadiciónde u o iales.
46
3.1.3.Sopo epa adi e en es iposdep egun a
46
3.1.4.Sopo edelenguajesin e p e ados
46
3.1.5.Funcionamien omul ipla a o ma
47
3.2.P oblemasencon adosysussoluciones
47
3.2.1.He amien aSceneBuilde
47
3.2.2.Ru asde ecu sosex e nos
48
3.2.3.Ajus edeelemen osal amañodela en ana
48
3.2.4.Mos a imagenenWebView
48
3.2.5.Compilaciónex e nadeg amá icas
49
3.B.Conclusions
51
3.1.B.Ob ained esul sbe o eexpec ed esul s
51
6
3.1.1.B.Tu o ialdisplay
51
3.1.2.B.C ea ionandaddi iono u o ials
51
3.1.3.B.Suppo odi e en kindso ques ions
52
3.1.4.B.Suppo o in e p e edlanguages
52
3.1.5.B.Mul ipla o mope a ion
52
3.2.B.P oblems oundand hei solu ions
53
3.2.1.B.SceneBuilde ool
53
3.2.2.B.Ex e nal esou cespa hs
53
3.2.3.B.Ex e nalcompila iono g amma s
54
3.2.4.B.WebViewimagedisplay
54
3.2.5.B.Ex e nalg amma compila ion
54
4.Posibilidadesdeampliación
57
4.1.Colo eadodesin axis
57
4.2.In e azg á ica
57
4.3.Ges ióndeusua ios
57
4.4Gua da es adodel u o ial
58
4.5.Cons uc o de iche osYAML
58
4.6.Ejecucióndep egun asde iposin axis
59
4.7.Lenguajescompilados
59
4.8.Mig aciónalaweb
59
4.9.Paque edeidiomas
60
5.Apo acionespe sonales
61
5.1.Ra aelCa u laTo ecilla
61
5.2.Ca losCongos oSando al
63
6.Ag adecimien os
65
7
Bibliog a ía
67
Anexos
69
A)Ac asdelas euniones
69
B)Ejemplodeusodelahe amien a
77
C)Ob enciónycompilacióndelahe amien a
83
8
Resumen
En es os úl imos años la cu iosidad po el sec o in o má ico, y más especí icamen e
en la p og amación, ha p oducido una g an demanda po los in e esados en es as á eas. Es o
ha p o ocado que el núme o de u o iales y en enado es haya aumen ado de una o ma
conside able.
Debido a es a g an demanda, ha su gido la idea de desa olla una he amien a con la
que pode ges iona u o iales de p og amación con una aplicación de esc i o io. La inalidad
de es e p oyec o es pode c ea u o iales in e ac i os que pe mi an a los alumnos adqui i
conocimien os de una o ma sencilla y a ac i a. Es o se consigue median e la posibilidad de
en iquece el o ma o del ex o al mos a las explicaciones o los enunciados de las p egun as
yañadi imágenes.
Pa a e i a que sea un u o ial de sólo lec u a, que esul a poco a ac i o y no pe mi e
al es udian e e alua los conocimien os adqui idos, con es a he amien a se pod án in e cala
p egun as en e la eo ía pa a engancha más al alumno, y consegui que el ap endizaje sea
muyinc emen al,pa ano ene unacan idadab umado adein o maciónenpoco iempo.
Con es os u o iales el alumno pod á comp oba los conocimien os adqui idos g acias
al seguimien o con inuo. El es udian e, según lea la eo ía y ealice los eje cicios con g ado
de di icul ad c ecien e, end á más capacidad pa a esol e eje cicios nue os y p epa a se
pa acon inua el u o ial.
El esul ado de es e p oyec o ha sido una he amien a mul ipla a o ma y con licencia
abie aMIT,quepuedese desca gadadeh ps://gi hub.com/Khe du/TFG
Palab as cla e: u o iales in e ac i os, lenguajes de p og amación, he amien a de
ap endizaje,YAML,Py hon,ANTLR
9
1.3.1.Me odologíade abajoyplani icación
La me odología usada en es e p oyec o ha sido Sc um [4]. Se eligió po se un mé odo
de desa ollo inc emen al, dinámico y lexible, diseñado pa a p oyec os cuyos equisi os
es án expues os a cambios, y po ello se pueden p oduci solapamien os en las dis in as e apas
de desa ollo. Además, es á pensada pa a pequeños g upos de desa ollo como es el caso de
es eequipo.
Pa a pode lle a a cabo un seguimien o y pode inc emen a la uncionalidad
paula inamen e, en p ime luga se hizo una eunión donde se habló de qué y cómo se que ía
como p oduc o inal y, cada 2 ó 3 semanas, se ue on ealizando euniones en las que se
e isaba el abajo hecho desde la eunión an e io , se ijaban unos obje i os o hi os a cumpli
den o de lo posible pa a la siguien e eunión y se analizaban posibles modi icaciones sob e
lo ya ealizado pa a mejo a la implemen ación. En pe íodo de exámenes se dejaba un
ma genmayo en e eunionesconel inde ene iempodees udia .
En cada eunión se ha omado ac a de lo a ado, es as ac as se encuen an en el
AnexoA.
1.3.2.Fasesdedesa ollo
Es as son las di e en es ases de desa ollo po las que se ha pasado, p esen adas en
o maesquemá icayconsus echasco espondien es:
1.Diseñodelos iche osquede inenlos u o iales(6/10/20153/11/2015)
● Decisióndellenguajeu ilizadopa asu ep esen ación(YAML).
● C eación de iche os de ejemplo con los campos necesa ios pa a mos a oda la
in o maciónnecesa ia.
● Inclusióndema cado esMa kdownaloscamposde ex odelos iche os.
● Gene acióndemé odosnecesa iospa ain e p e a lain o mación.
2.C eacióndelas is asdelaaplicación(3/11/201514/1/2016)
● Diseñodelas en anasdelaaplicación.
● Gene acióncódigoHTMLconlain o macióncon enidaenlos iche osYAML.
● Mues adein o maciónob enidadea chi osYAMLenlas en anas.
3.Inco po acióndelasp egun as ipo es (17/11/20151/12/2015)
● Recogidadelas espues asquees ánma cadaspo elusua io.
16
● Implemen acióndela unciónco ec o a.
● Ac ualizacióndela en anaconel esul ado.
4. Inco po ación de las p egun as cuya co ección equie e ejecución en el lenguaje des ino
(14/1/201617/03/2016)
● Decisióndeejecu a elcódigomedian ePy hon.
● C eacióndel iche odeco eccióndePy hon.
● De inición del o ma o y con enido del iche o empo al donde se gua da án los
esul adosdelaejecución.
● Implemen acióndelas uncionesco ec o asenPy hon.
● Ac ualizacióndela en anaconlain o macióndel esul ado.
5. Inco po ación de p egun as co egidas po analizado es sin ác icos (19/04/2016
27/05/2016)
● Eleccióndelanalizado sin ác icoqueseu iliza áenes e ipodep egun as.
● Gene acióndeg amá icasdep ueba.
● Gene acióndelasclasesnecesa iaspa alaco ección.
● Implemen acióndela unciónco ec o a.
● Ac ualizacióndela en anaconel esul adodeco ección.
6. C eación del a chi o de p e e encias de usua io pa a man ene la con igu ación.
(26/04/201627/05/2016)
● Búsqueda de in o mación sob e almacenamien o de a iables independien es a la
aplicación.
● Decisióndeusa a iablesdesis ema en ea iche osdecon igu ación.
● Implemen acióndemé odosdegua dadoyca gadedichas a iables.
● Enlazadoconlain e azdelaaplicaciónyp uebade uncionamien o.
Al inaliza cada ase del p oyec o se comp obaba que odo uncionase co ec amen e
y en caso necesa io, los esul ados de las ases pod ían su i modi icaciones pos e io men e
segúnlasnecesidadessegúnsea anzabaeneldesa ollo.
Los pe iodos de iempo que se encuen an en e algunas ases se han dedicado a
soluciona algunos allos que se encon aban al acaba dichas ases y ees uc u a los
elemen osdelaaplicación.
1.4.He amien asdedesa ollou ilizadas
Se han u ilizado múl iples he amien as pa a cons ui la aplicación y lo que la odea,
cada una de ellas eniendo un p opósi o especí ico y, en conjun o, han apo ado comodidad a
laho adea anza eneldesa ollodelaaplicaciónydocumen a losa ances ascadapaso.
17
La he amien a de la que más se ha dependido pa a el desa ollo de la aplicación ha
sido el en o no de desa ollo Eclipse [5] en su e sión 4.5, con di e sos plugins
pa a acili a
la esc i u a de los a chi os ex e nos YAML y la ejecución de código Py hon ( e más
3
adelan e). No en a emos mucho más en dichos plugins
, pues ienen una ele ancia meno en
elp oyec o.
O a he amien a undamen al ue Gi Hub , que u ilizamos como sis ema de con ol
4
de e sionespa aelcódigo.Es ahe amien asep esen aconmásde allesenlasección2.2.9.
Po úl imo pa a las ac as de euniones, el in e cambio de a chi os de ex o,
almacenamien o de enlaces y ci as de bibliog a ía ele an es se ha u ilizado Google Docs
ap o echandolascuen asdeusua iop o is aspo laUni e sidadComplu ense.
3Lain o maciónace cadees a ecnologíaseexplica áenelapa ado2.2.3
4Lain o maciónace cadees a ecnologíaseexplica áenelapa ado2.2.9
18
1.B.In oduc ion
The needs o p og amme s ha e been g owing exponen ially in he las ew yea s
because o he g ea inc ease o use o all kind o de ices ha needs o be p og ammed o i
he needs o socie y, specially sma phone applica ions, able s and web pages. Hence e e y
ime he e a e mo e people in e es ed in s udies ela ed o compu e science, bo h so wa e
andha dwa e.Thisb ingsus o hewo ldo elea ning.
T adi ionally, p og amming has been s udied as any o he subjec . On one side,
sel lea ning implied ge ing a language manual, and a machine wi h a ex edi o and a
compile o expe imen wi h. I , con e sely, i was o una e ha a eache could guide he
pupil, hen, he mos common ools we e he blackboa d, chalks, pen and pape , o la e go o
acompu e o es heknowledgeacqui ed.Nowadays, hesubjec isqui edi e en han hen.
E e yday new ways o lea ning p og amming languages appea . In he web we can
ind a ious ypes o u o ials and aine s o many o hese languages, abo e all (specially)
o he mos mode n and popula ones, as well as he ones ha ha e he highes p o essional
demand.Wecouldsay ha hemodelo lea ningischanginga conside ablepace.
I we look a he changes in he lea ning echniques ega ding p og amming, in he
ecen yea s i is no ed ha he e is a eedback. As lea ning me hods a e mode nized i ’s
easie o lea n, so he e is mo e people who knows and, a he same ime, hey de elop new
oolso imp o e heexis ingones.
The eam who has de eloped his applica ion as End o Deg ee p ojec wan s o
con ibu e o lea e ou ma k in his ield. Thus, he objec i e o his ool i is o c ea e an
in e ac i e p og amming language u o ial ool, which can be help ul o bo h eache s wi h
hei p og amming classes, ei he in school, highschool o college(uni e si y) as o help
sel augh people who wan o in oduce hemsel es o he wo ld o p og amming o new
languages.
1.1.B.Backg ound
The e a e plen y o ools o help lea ning p og amming languages. He e we shall
in oduce some o hem, mo e o less known, bu all o hem ele an . Al hough we su ely
lea e some in he pipeline, wi h his a p elimina y s a emen , esul o esea ch, we will gi e
ano e iewo hecu en si ua ion.
19
A ew examples o his kind o ools a e he web pages wi h aine s o he language
ha we wan o lea n. Wi h his kind o ools, in e es ed people ha e a hei disposal a ex
ield in which hey can ype li le code snippe s ela ed o he ma e explained in he u o ial
and check i i s beha iou is he one hey desi ed. Wi h hese cha ac e is ics he e a e
di e en webs. An example is he “lea n” amily webs (h p://www.lea npy hon.o g,
h p://www.lea nja aonline.o g,h p://www.lea nc.o g,h p://www.lea njs.o g,
h p://www.lea nphp.o g,h p://www.lea nshell.o g,h p://www.lea ncs.o g), which allow o
see code examples gene a ed by he u o ial and modi y hem in he code ex ield o es i
andseehow heou pu changesdependingon heinpu ield a ia ions.
Ano he simila web is www.w3schools.com, whe e I ’s o e ed he possibili y o
s udy di e en web o ien ed p og amming languages like Ja aSc ip , HTML, CSS o PHP.
This page is di ided in di e en sec ions ha allows di ec access o he one we a e in e es ed
in, hus achie ing g ea e luency when we y o ad ance o speci ic subjec s abou a
language.I alsoin eg a esa aine whe e hecodecanbemodi iedso heuse can es i .
I we wan a mo e dynamic lea ning me hod we ha e ideo u o ials, o example he
ones p esen ed in h p://uni y3d.com/es/lea n. He e demons a ions a e made h ough ideos
and b ie ex s ha explain how o de elop a p ojec om sc a ch wi h he mul ipla o m
ideo game engine Uni y[1], showing cons an ly he s eps o ollow and he changes
p oducedby hemodi ica ionsdoneinp ojec elemen s.
Nowadays i ’s being s udied he possibili y o in oduce p og amming du ing he
schola pe iod as a new class . Because o ha , games a e being de eloped whose con ols a e
simila o p og amming language sen ences. Some examples could be he web
h ps://code.o g wi h u o ials a e di ec ed owa d child en, whe e he sen ences a e al eady
w i en, and he only hing o do is o so hem by d agging hem wi h he mouse. Fo olde
child en exis s ano he web, h ps://sc a ch.mi .edu, which has a simila s yle, whe e
anima ions can be c ea ed o di e en known cha ac e s, anybody could p og am an
A duino[2]boa d.Thecommandusageissimila o hep e iousone.
Fo a public a li le bi olde , ha p e e s oleplaying and s a egy games, in
www.codecomba .com you can guide a wa io h ough di e en maps wi h Py hon code
sen ences(i ’soneo sixa aiablelanguages).
In he con ex o desk op applica ion u o ials, we ha e Swi l , a modula ool
5
designed o p esen in e ac i e o R[3] language u o ials. This applica ion i ’s execu ed
h ough a non independen in e p e e . In ha in e p e e i ’s displayed bo h he heo y
explana ion and he ques ions as plain ex . The heo y pa i ’s di ided in some subsec ions,
5h p://swi ls a s.com
20
o ad ance h ough hem i ’s needed o p ess he ENTER key. As he u o ial ad ances,
ques ionsappea ha heuse has oanswe co ec ly.
The men ioned ques ions a e es ype o code w i ing ype, he las ones a e manually
co ec ed wi h R[3] w i en unc ions, wi h he incon enience ha you ha e o in oduce hem
exac lyas hes a emen equi es obeable oad ance u he .Wecansee ha in hisimage.
In his example we can see ha in he s a emen i ’s asked o in oduce he addi ion 5
+ 7, and he use in oduces 5 + 4 + 3. The applica ion doesn’ allow o con inue unless you
in oduce heope a ionexac lyas hes a emen asks.
O he web ools used by di e en uni e si ies a e ¡Acep a el e o!
h ps://www.acep ael e o.com in he Complu ense Uni e si y o Mad id (UCM) and UVa
Online Judge h ps://u a.onlinejudge.o g in he Uni e sidad o Valladolid (UVa). These
webs, p oposes he s uden s di e en ypes o p og amming p oblems gene a ed by he own
eache s o he o ganiza ion. Tha way, he s uden s can y ou hei p og amming knowledge
and he eache scansee ha wo kanddi ec be e hei classesacco ding o ha p og ess.
A simila u iliy ee al e na i e is FLOP
h p://p oblemg.es ad.ucm.es/FLOP/index.jsp. He e he s uden s can upload hei solu ions o
21
he p oposed p oblems and check i i ’s co ec . And as eache s u ili y i exis a me hod o
gene a ese so exe cises.
A e ying ou Swi l and see how he es o he online ools wo k, we hough abou
c ea ing a desk op applica ion o e ade issues like in e ne connec ion necessi y, and he ones
de i a i es om unning ex e nal code inside an in e ne se e . Supposing some hing simila
couldbebuil ,bu mo ecomple eand iendly.Weha eanidea os a om.
This new ool should be able o sol e Swi l issues like ha ing o con igu e he
p og ameach imeweha e olaunchi and heimpossibili y oadap oo he languages.
1.2.B.Ta ge s
The main a ge o his End o Deg ee P ojec is o de elop a ee open sou ce ool o
manage p og amming languages in e ac i e u o ials, wi h he objec i e o help s uden s and
eache s ac oss any educa ional le el wi h hei di e en p og amming subjec s. I will
consis on a desk op applica ion ha allows he ealiza ion o in e ac i e u o ials wi h he
ollowing ea u es:
Sho , dynamic u o ials, a ac i e o s uden s by isual elemen s ha ease hei
lec u e.
Thepossibili y oc ea eandadd hose u o ialsindependen lyo heapplica ion
Di e en ques ion ypesuppo , i s ly es ,codeandsyn ax ype(la e explained)
In e p e ed languages suppo , ha ing Py hon in mind as a s a poin . The
6
applica ion should be able o admi any in e p e ed language wi hou he needs o any
modi ica ionin heapplica ion
Ope a i eSys emindependen usabili y.
Each language u o ials is di ided in some subjec ma e s, and hese a he same ime
a e di ided in di e en lessons. This is in ended o compa men alize in o ma ion and
s uc u e i acco ding o i s con en . Al hough u o ials wi h any ex ension could be added, i
is expec ed ha lessons a e b ie o be comple ed in a sho pe iod o ime. The lessons will
ea u e li le heo y explana ions which a e in e lea ed wi h ques ions. The la e mus be
esol ed ocomple e helesson.
6In e p e edlanguagesunde s oodas hose ha dono needacompila ionphase op oducemachinecode,bu
a eexecu edbyanin e p e e .
22
The ac ha u o ials a e independen om he applica ion will allow he eache s o
c ea e hem pe sonalized o hei s uden s by ollowing a s anda d which is de ined in his
p ojec .
Now hedi e en ypeso ques iona eexplainedmo eindep h:
Tes ype: ques ions whose ask is o make he s uden o espond by ma king one o
mo ep oposedanswe s.Ques ionscanbemul ipleanswe o singleanswe .
Code ype: ques ions which he code w i en by he s uden gene a es he expec ed
ou pu acco ding o he eache . The code will be execu ed and he ou pu will be
compa ed.
Syn ax ype: hese ques ions, unlike he o he s, check ha he code agmen
in oduced sa is y he s uc u e he eache wan s. Ano he di e ence o emphasize is
ha he code will no be execu ed in any ime, so he exi will no be checked. The
s uc u e will be de ined independen ly h ough a g amma ha will be ecognized by
hein e p e e (Insec ion2.3.2willbeexplainedhowi ’sdone).
Wi h his a ie y o ques ions, he s uden will be able o check and demons a e
e e y hing explained in he heo y he has ecen ly ead. To ad ance wi h a lesson he use is
expec ed o answe o he aised ques ion co ec ly. You can also go backwa ds o consul he
heo yo hecu en lessoni needed.
1.3.B.Wo kplan
In hissec ionwewilldiscussall heaspec s ela ed o hede elopmen o he
applica ionin a ioussec ions, hosebeing:wo kme hodologyandplanning,de elopmen
phasesandde elopmen oolsused.
1.3.1.B.Wo kme hodologyandplanning
In his p ojec he wo k me hodology used has been Sc um[4]. I was selec ed because
i is an inc emen al, dynamic and lexible me hod, designed o p ojec s whose equi emen s
a e exposed o changes and in which o e laps could happen be ween he di e en
de elopmen phases.Alsoi isdesigned o li leg oups,whichis hecaseo his eam.
To keep ack and inc ease g adually he unc ionali y, in i s ins ance a mee ing was
made whe e we alked wha and how he inal p oduc would be and, each 2 o 3 weeks,
mee ings we e made whe e i was checked he p og ess om he p e ious mee ing, new
a ge s we e locked o accomplish as a as possible o he nex mee ing and po en ial
23
modi ica ions we e analysed o imp o e implemen a ion. A exams pe iod a wide ma gin
be ween hosemee ingswe emade oha eenough ime os udy.
A eco do eachmee ingwassa ed.Thisin o ma ionisin heAnnexA.
1.3.2.B.De elopmen phases
Thesea e hedi e en s ageso de elopmen ,schema icallyp esen edandwi h hei
co espondingda es.
1.Designo he iles ha de ine he u o ials(6/10/20153/11/2015)
● Selec iono helanguage ha ep esen si (YAML).
● File c ea ion wi h examples wi h he necessa y ields o hold all he in o ma ion
needed.
● Ma kdownma ke sinclusionin he ile ex ields.
● Gene a iono heneededme hods o ead hein o ma ion.
2.C ea iono heapplica ion iews(3/11/201514/1/2016)
● Windowdesign.
● HTMLcodegene a ionwi h hein o ma ioncon ainedin heYAML iles.
● Displayin hewindowso in o ma ionob ained omYAML iles.
3.Tes ques ionsinco po a ion(17/11/20151/12/2015)
● Cap u eo hema keduse answe s.
● Co ec o unc ionimplemen a ion.
● Window e eshindica ing esul .
4. Inco po a ion o ques ions which co ec ion equi es execu ion in des ina ion language
(14/1/201617/03/2016)
● Decisiono execu ing hecode h oughPy hon.
● Py honco ec ion ilec ea ion.
● Fo ma de ini ion and con en o he empo al ile whe e he execu ion da a will be
s o ed.
● Py honco ec o unc ionsimplemen a ion
● Window e eshindica ing esul .
5.Inco po a iono ques ionsco ec edbysyn axanalyze s(19/04/201627/05/2016)
● Selec iono hesyn axanalyze obeusedin his ypeo ques ions.
● Tes g amma sgene a ion.
● Co ec ionneededclassesgene a ion.
24
● Co ec o unc ionimplemen a ion.
● Window e eshindica ing esul .
6.P e e ences ilec ea ion osa euse con igu a ion(26/04/201627/05/2016)
● In o ma ionsea chabou applica ionindependen a iabless o age.
● Decision ousesys em a iables e suscon igu a ion iles.
● Sys em a iablessa eandloadme hodsimplemen a ion.
● In e acelinkedandope a ion es .
A he end o each p ojec phase i was checked ha e e y hing ope a ed as expec ed
and, i necessa y, he esul s o p e ious phases could be la e modi ied acco ding o he
needsas hede elopmen asi ad anced.
The ime pe iods be ween some o hese phases ha e been used o sol e some
p oblems ha we e ound when hey we e inished and o es uc u e he applica ion
elemen s.
1.4.BDe elopmen oolsused
Mul iple ools ha e been used o build he applica ion and e e y hing su ounding i .
Each one o hem had a speci ic pu pose and, as a pack, hey ha e con ibu ed o ease he
de elopmen anddocumen a iondu ingand ollowingeachs epdone.
The ool which we depended he mos o he de elopmen was he in eg a ed
de elopmen en i onmen Eclipse[5] in i s e sion 4.5 wi h di e se plugins o help he
w i ing o ex e nal YAML iles and he Py hon execu ion (see ahead). No mo e in o ma ion
7
abou his will be p o ided abou hese plugins because hey ha e less ele ance in he
p ojec .
Ano he undamen al oolwasGi Hub ,whichwasusedas e sioncon olsys em o
8
hecode.
Ul ima ely, o he mee ing eco ds, ex iles exchange, link s o age and bibliog aphic
ele an ci a ions we ha e used Google Docs, aking ad an age o he accoun s p o ided by
heComplu enseUni e si y.
7In o ma ionabou his echnologyinsec ion2.2.3
8In o ma ionabou his echnologyinsec ion2.2.9
25
ez es as ex ensiones se pueden ges iona según las necesidades según el uso que se le aya a
da .Algunosejemplosdeex ensiónson:
● ALL:añade odaslasex ensiones
● TABLES:Pe mi egene a ablasHTML
● SUPPRESS_HTML_BLOCKS:Sup imelosbloquesHTML
Como ejemplo de pegdown, el código Ma kdown p esen ado an e io men e se
ans o ma íaensuco espondien eHTML:
<h1>Ni el1</h1>
<h2>Ni el2</h2>
<h3>Ni el3</h3>
<p>El<s ong>comienzo</s ong>delalis a</p>
<ul>
<li>Elp ime o</li>
<li>Elsegundo</li>
<li>El e ce o
<ol>
<li>3.1</li>
<li>3.2</li>
</ol>
</li>
</ul>
<p>Yes oel inaldelalis a</p>
< able>
< head>
< >
< h>Fi s Heade </ h>
< h>SecondHeade </ h>
< h>Thi dHeade </ h>
</ >
</ head>
< >
< d>Fi s ow</ d>
< d>Da a</ d>
< d>Ve ylongda aen y</ d>
</ >
< >
< d>Second ow</ d>
< d><s ong>Cell</s ong>
</ d>< d><em>Cell</em></ d>
</ >
</ able>
32
2.2.5.ANTLR(Ano he ToolFo LanguageRecogni ion)[9]:
Es una lib e ía que pe mi e gene a e in e p e a g amá icas independien es del
con ex o. Es o se i á pa a comp oba que el código cumple con cie os equisi os sin ác icos.
Pa a ello se esc ibe un a chi o ‘.g4’ con la g amá ica deseada y a con inuación se compila
pa a ob ene las clases Ja a (Lexe y Pa se ) enca gadas del econocimien o del pa ón
es ablecido.
La clase Lexe es la enca gada de gene a los Tokens de econocimien o a pa i de
los ca ac e es de la g amá ica de inida. La clase Pa se es la que lle a a cabo la
compa ación.
Un ejemplo sencillo de g amá ica es la que de ine la cadena “hello “ + una
cadenadesólole as.
Acon inuaciónseexplicacómode ini es ag amá ica:
g amma Hello;
:'hello'ID;
ID:[az]+;
2.2.6.Py hon[10]:
Lenguaje de p og amación dinámico y sencillo de ap ende , con una sin axis que
ayuda a hace un código legible, mul i ud de lib e ías disponibles y un ni el de abs acción
al o, lo que consigue que sen encias que en o o lenguaje son la gas se puedan ealiza en
pocas líneas de código. La e sión elegida de es e lenguaje es la 3.4, que e a la más ac ual y
es able cuando comenzó es e p oyec o. Ac ualmen e la más ecien e es la 3.5, pe o la
di e encia es pequeña y no p o oca ningún cambio sus ancial en el uncionamien o de es a
aplicación. Es e lenguaje pod ía a ia en unción del lenguaje que se aya a enseña con la
he amien a.Enes ecaso,comobaseypo suge enciadelosdi ec o es, adi igidaaPy hon.
2.2.7.JSON(Ja aSc ip Objec No a ion) :
19
Es un o ma o de ex o pensado pa a el in e cambio de da os u ‘obje os’ con un
esquema de a ibu os ipo cla e alo . Además, es un o ma o independien e del lenguaje que
lo ayaain e p e a ,y ienelib e íaspa asuusoencasi odosloslenguajes.
19h p://www.json.o g/
33
Se u iliza pa a la co ección del ipo de p egun as de ‘código’, comunicando Ja a y Py hon (o
cualquie o o lenguaje in e p e ado que se aya a u iliza ) median e un a chi o empo al de
es e ipo.
2.2.8.Ma en[11]:
Es una he amien a so wa e concebida pa a cons ui y ges iona las dependencias de
p oyec os Ja a. Con es a he amien a se acili a la impo ación y el uso de lib e ías ex e nas.
Su ca ac e ís ica undamen al es de ini la es uc u a del p oyec o con un a chi o POM
(P ojec Objec Model) , donde se encuen an las dependencias y el o den de cons ucción
20
del p oyec o. Se ha u ilizado pa a impo a y empaque a el p oyec o con las lib e ías
ex e nas.
2.2.9.Gi Hub :
21
Pla a o ma de desa ollo en pa alelo basada en el sis ema de con ol de e siones open
sou ce gi [12], que pe mi e abajo colabo a i o. Es a pla a o ma se aloja en la nube y es
muy popula en e p og amado es de odo el mundo, lo que pe mi e da g an di usión a la
aplicaciones que aloja. Se ha u ilizado debido a su acilidad de uso pa a el desa ollo en
pa alelo, pe mi iendo así a los miemb os del equipo abaja independien emen e con el
mismo eposi o io.
2.3.De inicióndea chi osex e nos
Ya se ha explicado cómo se es uc u a el di ec o io de a chi os ex e nos. En es e
apa adoexplica emoscómosones osa chi osencuan oasucon enidoyes uc u a.
2.3.1.A chi osYAML
Los a chi os donde se encuen a la in o mación de los u o iales son de ipo YAML, y
su ex ensión es ‘.yml’. Pa a que la ca ga de u o iales uncione co ec amen e es necesa io
que se man enga la es uc u a y el nomb e de las dis in as e ique as, que explica emos con un
ejemplo.
20Explicaciónenellaci a[11]delabibliog a ía
21h ps://gi hub.com/
34
P ime o amosaexplica laes uc u adel emaylasleccionesconunejemplo:
Tema:2
Ti ulo:"#Lis as"
A chi o:"py hon34/co ec o es/ ema2.py"
In oduccion:|
##Py honu iliza a ios iposdeda oscompues os,
##queseu ilizanpa aag upa o os alo es.
##Elmás e sá ileslalis a.
Lecciones:
Leccion:1
Ti ulo_Leccion:Lis as
In o_leccion:>
"Loselemen osdeunalis asedecla anen eco che esy
sepa adospo ','."
Elemen os:
Elem:
.
.
.
Es oscamposexp esanlosiguien e:
Tema:Nume odel ema(núme o)
Ti ulo:Ti ulodel ema( ex o)
A chi o:a chi odeco ecciónpa alasp egun asde ipocódigo
(lenguaje/co ec o es/ emaX.ex )dondeXeselnúme odel emayex laex ensióndel
a chi o,po ejemplopa apy honse ápy.
In oduccion: ex oconin o macióndel ema( ex o)
Lecciones:lis adelecciones( acío,elelemen oeslalis adelecciones)
Leccion:núme odelalección(núme o)
Ti ulo_Leccion: í ulodelalección( ex o)
In o_leccion:in oduccióndelalección( ex o)
Elemen os:lis adeelemen osdelalecciónlis adeelemen os( acío)
Elem:haydos iposdeelemen o,seesc ibi ácuales(p egun aoexplicacion)
Hayquedes aca queun emapuede ene odaslasleccionesqueseannecesa iasy
unalección ambiénpuede ene odosloselemen osquesequie a.
Aho aexplica emosquécon ieneunelemen oycómosees uc u a,comenzamoscon
lasexplicaciones:
Elem:explicacion
Con enido:>
35
Loselemen osdeunalis ano ienenpo quése odosdel
mismo ipo.Enlamismalis apuedehabe núme osen e osy
cadenas.
.
.
.
Las explicaciones sólo ienen un campo, en el que end emos ex o con la p opia
explicación,imágenesyloselemen osma kdown ep esen ados.
Con enido: ex o donde esc ibi emos la explicación. Se comienza con ‘>’, que es una
e ique a que indica que el siguien e ex o igno a á los sal os de línea, alineando así el ex o.
En caso de pone bloques de código se puede esc ibi con ‘|’, que conse a á dichos sal os de
línea alycomoes énenela chi o.
Aho a e emoslasp egun asde ipoopciones:
Elem:p egun a
Nume o:2
Enunciado:>
¿queopciónesco ec apa aex ae
losdosnomb esdelalis al=["Ra ael","Ca los",32,27]?
Tipo:Opciones
Pis a:Lanume acióndeloselemen oscomienzaen0
Mul iple:yes
Opcion_co ec a:1,2,3
Opciones:
1)l[0:2]
2)l[:2]
3)l[0:2]
4)l[1:3]
.
.
.
Enunciado:elenunciadodelap egun a(comúna odaslasp egun as)
Tipo:Opciones,aquíseindica á(comúna odaslasp egun as)
Pis a: campo opcional con una pis a que pueda ayuda a esol e la p egun a (común a odas
lasp egun as)
Mul iple: (solo pa a es ) yes | no Indica si la p egun a iene una o más soluciones, es en
ingléspo quealin e p e a elá bol aducedi ec amen ees enodoabooleano
36
Opcion_co ec a: (solo pa a es ) núme o o núme os (en caso de ene más de una opción
co ec a) de la opción co ec a. Siemp e hay que pone los alo es en e comillas. Ej: "1" ó
"1,2,3".
Opciones: (solo pa a es ) lis a en la que se enume an las opciones. El núme o de opciones
puede a ia .
Vamosaho aconlasde ipocódigo:
Elem:p egun a
Nume o:1
Enunciado:C eaunalis a'l'condosnomb esylosnúme os32y
27
Tipo:Codigo
Resul ado:p egun a11
.
.
.
Resul ado: en el único campo especí ico de es as p egun as se esc ibi á el nomb e de la
unciónquecomp oba áelcódigo.Es a unciónes a áimplemen adaenela chi oco ec o .
Ypo úl imolasdesin axis:
Elem:p egun a
Nume o:3
Enunciado:>
Esc ibeelcódigopa ain oduci enlalis a'l'
losnume osdel1al5u ilizandounbucle
Pis a:Consul ael emadebuclessi ienesp oblemas
Tipo:Sin axis
G ama ica:CadRep
Resul ado:l=[1,2,3,4,5]
Ysuscamposson:
G amá ica:nomb edela chi oco espondien ealag amá icaalaque engaqueajus a sela
espues a.
Resul ado:(opcional)Sique emos ene comp obacióndel esul ado.Aunquees aopción,
comoexplica emosmásadelan enosecomple ó,nospa ecióin e esan eman ene es e
campo.
En los campos de ex o del iche o YAML se pueden pone e ique as ipo Ma kdown
pa a in oduci imágenes, que es a án en el di ec o io img de la ca pe a del lenguaje del
37
u o ial en cues ión, así como esal a pa es del ex o o in oduci agmen os de código y que
sean mos ados con una uen e dis in a al ex o no mal. Es o acili a á la lec u a del alumno y
leayuda áaman ene laa enciónalaspa esmás undamen ales.
Enelcasodeque e in oduci imágenesconMa kdown,la u aqueseespeci iqueen
lae ique a ienequese la ela i aaldi ec o ioex e nalResou ces.
O o da o undamen al pa a esc ibi es os a chi os es que hay que espe a las
abulaciones y espacios pa a anida co ec amen e los elemen os, o se p oduci á un e o al
a a de in e p e a el a chi o. Igualmen e ocu e si no se espe an los acen os de las
e ique as. Hay que esc ibi las al y como se p esen an. Pa a más in o mación ecomendamos
e losejemplosdel eposi o ioGi Hubdelp oyec o.
2.3.2.A chi osANTLR
Es osa chi ossonlosquecon ienenlag amá icade inidapo elp o eso .Enelcaso
dees ep oyec osehau ilizadola e sión4.XdeANTLR,po loquelaex ensióndelos
a chi oses‘.g4’.En e sionesan e io esse ía‘.g’.
Pa aque uncioneco ec amen econANTLRyconnues aaplicaciónela chi oha
decumpli unase iede equisi os:
● El nomb e del a chi o debe coincidi con el de la g amá ica (mayúsculas y
minúsculas ambién)
● Elnomb edela egladebecoincidi coneldelag amá ica( odoenminúsculas)
Unejemplodeg amá icase íaelsiguien e:
Elcon enidodela chi oT iangulo.g4es:
g amma T iangulo;
iangulo:'h='NUMBER' nb='NUMBER' n'FORMULA;
NUMBER:[09]+;
FORMULA:'a=h*b/2';
Enes ea chi osedesc ibeunag amá icaqueespe a ecibi un agmen odecódigo
necesa iopa ahalla elá ea‘a’deun iánguloconasignaciónde alo esados a iables:
h:al u a
b:base
Conelejemploan e io ,el agmen odecódigoacep adose ía:
h=2
b=3
38
a=h*b/2
Po elcon a iounael agmen odecódigoinco ec ose ía:
h=hola→Fallapo queseespe aqueala a iablehseleasigneunnúme o
b=3
a=3 →Fallapo queespe ala ó muladelá eadel iángulo
2.3.3.A chi osPy hon
Los a chi os Py hon con end án las unciones co ec o as de las p egun as de ipo
código. Se c ea á un a chi o ‘.py’ po cada ema que enga el u o ial. Cada uno de es os
a chi os ieneunaes uc u asimila alaque amosap esen a conunejemplo:
P ime o amos a e los impo necesa ios en dicho a chi o. Po de ec o se usan
undamen almen e es pa a la co ección pe o, como es e iden e, se pod á añadi cualquie
o a lib e ía necesa ia pa a la co ección de p egun as, siemp e y cuando el in é p e e la enga
disponible.Es aslib e íasson:
sys: Es a lib e ía nos pe mi e ob ene las a iables que nos llegan desde Ja a y acaba
laejecución.
json:Nospe mi e a a ela chi ojson.
emp ile:Nospe mi eope a conela chi o empo al.
Aho a amosa e unejemplodelcódigoPy honco espondien eal iche ode
co ecciónindicadoenelYAMLmos adoan e io men e:
de p egun a11(code, ilename):
y:
exec(codigo)
dicc={}
=["Ra a","Ca los",32,27]
i se (locals()['l'])==se ( ):
alue1=T ue
alue2=''
alue3=['']
else:
alue1=False
alue2='E o decon enido'
alue3=['Puedequehayasesc i omalloselemen os']
dicc['isCo ec ']= alue1
dicc[' ypeE o ']= alue2
39
dicc['hin s']= alue3
wi hopen( ilename,'w')asou ile:
json.dump(dicc,ou ile)
sys.exi (0);
excep Excep ionase:
e.p in _exc()
sys.exi (1)
de main():
ques ion=sys.a g [1]#1
code=sys.a g [2]#2
emp_name=nex ( emp ile._ge _candida e_names())
de aul _ mp_di = emp ile._ge _de aul _ empdi ()
ilename=de aul _ mp_di +'/'+sys.a g [3]
i ques ion=="p egun a11":
p egun a11(code, ilename)
i __name__=="__main__":
main()
Segu amen e hab á muchas más o mas de cons ui es os a chi os que uncionen
co ec amen e. Es a es la que se u iliza en los u o iales de ejemplo que se han c eado.
Vamosapasa aexplica quéhace:
Comencemos po el mé odo main. Aquí sacamos los a gumen os que la aplicación
Ja a le pasa al in é p e e de py hon, es os a gumen os los sacamos del a ay sys.a g []. El
a gumen o 1 es el nomb e de la p egun a a co egi , el 2 es el código que enemos que p oba
y el núme o 3 el nomb e del a chi o empo al donde enemos que esc ibi el esul ado pa a
que Ja a sepa lo que ha ocu ido en la ejecución. En el siguien e apa ado explica emos qué
hayenes ea chi o.
Lo p ime o que hacemos es p epa a el nomb e del a chi o empo al. Ob enemos la
u a has a el di ec o io de a chi os empo ales y le conca enamos el nomb e. Después
comp obamos que el nomb e de la p egun a que nos han pasado es alguno de los que enemos
en es e a chi o. En caso de que haya a ias p egun as se pond án odas las opciones con un
bloquei else.
Aho a pasamos a la p egun a en cues ión. A es as unciones co ec o as se les pasa á
como a gumen os el código que end emos que comp oba y el a chi o donde enemos que
esc ibi la solución. Pa a asegu a nos de que el código es ejecu able usamos un bloque
yca ch.
La unción que ejecu a el código es exec(). Una ez ejecu ado end emos que
busca que las a iables pedidas en la p egun a es én c eadas y con sus alo es
40
co espondien es disponibles. Es én o no end emos que ellena el esul ado. Pa a eso es án
lossiguien escampos:
● alue1:El esul adodelap egun a,siendoés e ue
o alse
● alue2:Tipodee o .Es ese áelmensajequesemos a áencasode alla
● alue3: Lis a de pis as adicionales. Es as pis as a ían en unción del e o que
come aelalumno,siendosólo isiblescuandoelalumno alle.
Una ez c eadas es as a iables las in oducimos en un dicciona io cla e alo
en con
los campos co espondien es a es as 3 a iables, nomb ados ‘isCo ec ’, ‘ ypeE o ’ y ‘Hin s’,
pa aluego olca losenela chi o empo al.
Cabe menciona que la o ma de inaliza es e código ep esen a el es ado en el que
acaba la ejecución. Es o iene una in e p e ación en Ja a. Si el p oceso acaba con ‘0’ es que
se ha ejecu ado co ec amen e. Sin emba go si acaba con ‘1’ se in e p e a á que ha habido un
allodeejecución,posiblemen epo sin axis.
2.3.4.A chi os empo alesJSON
Los a chi os JSON se án el mé odo de comunicación en e Ja a y Py hon. Decidimos
u iliza a chi os empo ales pa a que no quede basu a una ez acabada la ejecución de los
u o iales.Es osa chi os ienenunaes uc u amuybásica,que e emosacon inuación:
{'isCo ec ':T ue,' ypeE o ':'co ec o','hin s':['p ueba1','p ueba2']}
Es o ep esen a el dicciona io que c eamos en el a chi o Py hon, y se á in e p e ado
po Ja apa amos a el esul adoalusua io.
2.4. In e acción de componen es siguiendo ejemplo
deejecución
Pa a explica cómo se enlazan odos los componen es y se u ilizan las lib e ías
e emos un ejemplo paso a paso. Toma emos como pun o de pa ida el a chi o YAML de la
sección2.3.1que ep esen aun emamodelo.
Cuando a anca la aplicación, la clase con olado busca u ilizando la Ja a
P e e ences API , en a iables de en o no en o no del sis ema ope a i o, la u a del
22
22h p://docs.o acle.com/ja ase/7/docs/ echno es/guides/p e e ences/
41
3.2.2.Ru asde ecu sosex e nos
La ges ión de acceso a di ec o ios ex e nos a la aplicación supuso un queb ade o de
cabeza pa a los desa ollado es. A pesa de sabe que e a necesa io lidia con es o desde una
ase emp ana del desa ollo, se comenzó haciendo que los a chi os ex e nos es u iesen
in eg ados al empaque a la aplicación, lo que, aunque acili aba eno memen e la ges ión de
u as, p o ocaba que cada ez que se quisie a in eg a nue os u o iales a la aplicación
hubieseque ecompila y eempaque a odoelp oyec o.
Solución omada:
Como al e na i a a es e p oblema se ha decidido u iliza P e e ences API de Ja a, que
nos pe mi e almacena la u a del di ec o io ex e no de inido an e io men e. Es o ambién
p o ocó un lige o e aso debido a que se u o que busca in o mación ace ca de es a
ecnología.
3.2.3.Ajus edeelemen osal amañodela en ana
Una ez c eada la in e az g á ica de la aplicación, se descub ió que los elemen os que
o maban pa e de la is a no se ajus aban al amaño de la en ana en el caso que se
edimensionase. Es o se debía a que no se es aba u ilizando el ipo de panel adecuado y
ademásenelmomen odemos a loselemen ossehacíade o mae ónea.
Solución omada:
Busca in o mación ace ca de los paneles disponibles en Ja aFX y selecciona el que
se ajus aba a las necesidades. Con es a solución se e eló el p oblema que había en el código
con espec o a cómo se mos aban los elemen os, que ambién ue esuel o aunque se u o
quededica más iempodelespe ado.
3.2.4.Mos a imagenenWebView
O o p oblema elacionado con las u as de los ecu sos ex e nos ue consegui
mos a las imágenes ligadas al código HTML. Es o es aba causado po que pa a mos a
imágenes median e HTML hacía al a especi ica la u a absolu a al ecu so. Es e p oblema
ue acompañándonos a lo la go de la mayo pa e del p oyec o debido a que no
encon ábamosla azóndelp oblema.
48
Solución omada:
La solución a es e p oblema ue in es iga du an e mucho iempo la posible azón y e
i p obando con las dis in as soluciones que íbamos encon ando. Pa a e i a e asos en la
en ega del p oyec o, se decidió con inua con la aplicación y abaja en la solución en
pa alelo.
3.2.5.Compilaciónex e nadeg amá icas
Pa a las p egun as de sin axis son necesa ias las clases c eadas po ANTLR. Pa a es e
apa ado en un p incipio se decidió ene como ex e no solamen e el a chi o donde se esc ibe
la g amá ica, lo que suponía ene que cons ui las clases con ANTLR en cada ejecución y
además hace una compilación en iempo de ejecución. Es o suponía un p oblema po la
necesidad de ene JDK en ez de JRE ins alado en la máquina donde se uese a usa la
25 26
aplicación,po ene queu iliza lib e íasdecompilación,nodisponiblesenJRE.
Solución omada:
C ea eneldi ec o iode ecu sosex e nosundi ec o ioconlasclasesdeANTLR
compiladasp e iamen e.Es op opicióel ene quebusca in o maciónace cadecómohace
usodees asclasesde o maex e naalaaplicación.
25JDK(Ja aDe elopmen Ki )eselki dedesa ollodeJa a,queincluyelashe amien asdecompilación,
cons uccióndep oyec osyelp opioJRE
26JRE(Ja aRun imeEn i onmen )eslap opiamáquina i ualdeJa a,quepe mi elaejecuciónde
aplicacionesja a
49
50
3.B.Conclusions
In his sec ion we will discuss he esul s ob ained agains he expec ed esul s, he
p oblems ound o each he objec i es and he solu ions aken o sol e hem. Besides, we
will sugges possible ex ensions ha could be b ough o imp o e he applica ion. Some o
hem we e no made because he limi ed ime a ailable o a p ojec o his scope. The las
sec ion consis s o ideas ha in ol e big changes, in ended o be implemen ed in he long
e m.
3.1.B.Ob ained esul sbe o eexpec ed esul s
In his sec ion, we a e going o concen a e on checking i he ma ked objec i es om
s a we eachie edinasa is yingwayo no .
Thenwewill alkabou heob ained esul sagains eachobjec i e:
3.1.1.B.Tu o ialdisplay
This objec i e has been achie ed, because he main objec i e has been comple ed, he
p esen a ion o sho u o ials, ob aining he expec ed dynamic in e ac ion, hanks o he
possibili y o al e na e di e en kind o ques ions in which he s uden can check in a quick
way heacqui edknowledge.
Because o he limi ed ime and some issues o show ce ain isual elemen s, he
use ’s in e ace has no been made mo e appealing, because we ad anced in a o o he
ool’s unc ionali y.
3.1.2.B.C ea ionandaddi iono u o ials
F om he beginning we conside ed he possibili y o handle u o ials o be displayed
wi h his ool. In i s ins ance, o be able o use hese u o ials, hey had o be esou ces o he
ool implemen a ion. This ac implied ha each ime someone wan ed o add, dele e o
modi y any o hese elemen s, i had o ecompile and package he en i e p ojec . This ask
wouldbe edious o he eache .
51
To ease his, i was allowed ha bo h YAML iles and he necessa y esou ces o he
u o ial we e placed inside an ex e nal di ec o y o he applica ion. This way, eache s would
jus ha e oc ea eo modi y he u o ialsanddis ibu e hembe ween hes uden s.
3.1.3.B.Suppo odi e en kindso ques ions
The applica ion o e s di e en kind o ques ions which s uden s who wan o
comple e hese u o ialsmus answe co ec ly.
As i has been men ioned be o e, he di e en ypes o ques ions o e ed a e: code,
es and syn ax. The objec i es a e achie ed wi h he i s wo ypes. Rega ding he las one, i
was in ended in i s ins ance o check he ou pu . Bu because o limi ed ime and di e en
issues ha appea edbe o e hisphase,i ’sjus checked he o ma o heinpu code.
3.1.4.B.Suppo o in e p e edlanguages
The ool was designed o wo k wi h in e p e ed p og amming languages. This is
because o he ease o execu e he sen ences w i en by he use . The po en ial ouble is
ound in he code ype ques ions because hese a e he ones in which checking is made
h ough heexecu iono hecode ha wasin oducedby hes uden .
To achie e his objec i e, checking is made om he selec ed language in e p e e
ins alled in he use ’s sys em. This way he execu ion is applica ion independen so i doesn’
ma e whichlanguagewea ewo kingwi h.
3.1.5.B.Mul ipla o mope a ion
Since de elopmen s a ed, we expec ed he applica ion o be dedica ed o he
s uden s. Because he ac ha people ha e di e en p e e ences alking abou Ope a ing
Sys ems which a e chosen because o need o p e e ence, ha implied he OS sys em
27
independen ope a ion. Thanks o he ac o building he applica ion wi h Ja a, his a ge has
beencomple ed.
Howe e , in OS and Linux
, he in e ace can show li le isual de ec s, o example
no showingp ope lysomeelemen s.
27Fu he OS
52
3.2.B.P oblems oundand hei solu ions
O e de elopmen , some issues ha e appea ed ha ha e obs uc ed he p og ess o
he p ojec o a g ea e o lesse ex en . Ne e heless i has no made he e mina ion o he
p ojec impossible,bu i hasimpliedsomedelaydu ingeacho hede elopmen phases.
Nex wewillexplainsomeo hemos ele an issues.
3.2.1.B.SceneBuilde ool
When he in e ace de elopmen s a ed, using Ja aFX we ied o build he design o
he iews wi h he ex e nal ool SceneBuilde . This ool was designed o gene a e
g aphic in e aces wi h Ja aFX. I gene a es an FXML ile wi h he elemen s om which he
in e ace is composed . This ile o ma is ba ely unde s andable . This in oduced lo s o
ex adi icul ies oimplemen i s unc ionali yand omodi y hembyhand.
Solu ion aken:
Sea ch o in o ma ion o build hese iews by means o code, and o implemen hem
in ha way.
3.2.2.B.Ex e nal esou cespa hs
The managemen o applica ion ex e nal di ec o ies was a headache o he
de elope s. Despi e knowing i was a key ea u e o deal wi h since an ea ly de elopmen
phase, ini ially ex e nal iles we e packaged oge he wi h he applica ion, which, e en
hough easen pa h managemen , i led o ecompiling and epacking he en i e p ojec each
imewewan ed oincludenew u o ials o heapplica ion.
Solu ion aken:
As an al e na i e o his issue we decided o use he Ja a P e e ences API, which
allows us o s o e he pa h o he ex e nal di ec o y de ined be o e. This ac also in ol ed a
li ledelaybecauseo hein o ma ionsea ch his echnology equi ed oimplemen i .
53
3.2.3.B.Ex e nalcompila iono g amma s
Once he applica ion’s g aphic in e ace was c ea ed, we ound ou ha he elemen s
ha composed i didn’ adjus a all o he windows shapes i i was esized. Tha was caused
because o he kind o panels chosen was no app op ia e and i did no display co ec ly he
elemen sin hes age.
Solu ion aken:
Resea ch o u he in o ma ion abou Ja aFX a ailable panels and choose one
acco ding o he needs o each case. Wi h his solu ion i appea ed ano he issue ega ding he
elemen display.I wasalsosol edbu i ookmo e ime hanexpec ed.
3.2.4.B.WebViewimagedisplay
Ano he issue ela ed o he pa hing o ex e nal esou ces was o display co ec ly he
images linked o he HTML code. This was caused due o he need o speci y he absolu e
pa h o he esou ce. This issue was p esen h oughou mos o he de elopmen phase
becausewedidno indou hesou ce.
Solu ion aken:
We sol e his by in es iga ing o a long ime he possible causes and ying ou all
he di e en possible solu ions we ound. To a oid mo e delays on he p ojec deadline, we
decided ogoonwi hall hede elopmen andwo kin hesolu iona hesame ime.
3.2.5.B.Ex e nalg amma compila ion
Fo he syn ax ques ions, classes c ea ed by ANTLR a e needed. Fo his sec ion he
i s idea was o ha e as ex e nal ile he one whe e he g amma was de ined, which implied
o build he ANTLR classes each ime we needed o execu e he in ol ing ques ions, and also
o make an execu ion ime compila ion. The las one implying he needs o ha e JDK
28
ins ead o JRE ins alled in he hos machine, because compila ion lib a ies we e needed, no
29
includedin heJREdis ibu ion.
28JDK(Ja ade elopmen Ki )i includescompila ionandp ojec building oolsandalsoJRE
29JRE(Ja aRun imeEn i onmen )is heJa aVi ualMachinei sel ,whop o ideJa aapplica ionexecu ion.
54
Solu ion aken:
C ea ing he ex e nal esou ce di ec o y wi h he ANTLR classes p e iously
compiled. This in ol ed sea ching he in o ma ion abou how o make usage o hese classes
ex e nally o heapplica ion.
55
56
4.Posibilidadesdeampliación
Dado el po encial de aplicación de es e p oyec o en el ámbi o académico cabe pensa
en cómo se puede mejo a y amplia en un u u o pa a da le más u ilidades y comodidades
pa alosusua ios.
Acon inuaciónsedesc ibenideaspa apode amplia es aaplicación:
4.1.Colo eadodesin axis
En el campo de ex o des inado a esc ibi el agmen o de código se mues a el ex o
plano al y como lo esc ibe el usua io. Una posible modi icación muy a ac i a de ca a al
usua io se ía añadi un colo eado a la sin axis esal ando las palab as ese adas del lenguaje
en cues ión. De es a mane a, el componen e de in oducción de código end ía un
compo amien osimila aunedi o de ex oen iquecidoounen o nodedesa ollo.
Añadi es a uncionalidad supone ene que lidia con la in e az de Ja aFX en la que
se ep esen a el código, haciendo que as cada pulsación de ecla se e ise el ex o que enga
esc i oysecomp uebesi ienepalab as ese adaspa acambia leselcolo .
4.2.In e azg á ica
El desa ollo de es a aplicación se ha cen ado más en la uncionalidad de la
he amien a. Po eso, los elemen os de la in e az apa ecen de una o ma sencilla y esul an
pocoa ac i osdeca aalosusua ios.
Una cla a mejo a se ía o o ga animaciones a los elemen os como pueden se los
bo ones o busca una combinación de colo es y una dis ibución más a ac i a de ca a a los
p incipalesusua ios,losalumnos.
4.3.Ges ióndeusua ios
Debido a que es una he amien a que puede se usada an o po p o eso es pa a c ea
u o iales, como po di e en es alumnos pa a ap ende sob e un lenguaje de p og amación, en
un u u o se pod ía añadi un ges o de usua ios que mues e dis in os ipos de in e aces y
57
mí debido a que yo conocía mejo los elemen os de cada en ana y pod íamos a anza de una
o ma más ápida. La pa e enca gada de lle a a cabo la co ección de dichas p egun as ue
ealizada jun o a mi compañe o debido a su mayo conocimien o sob e Py hon. Busqué
in o mación sob e dicho lenguaje y me hice ca go de esc ibi un pequeño esquele o del
a chi o que con iene las unciones co ec o as a cada p egun a del ema. Más a de le
expliqué la idea de ejecución que se lle a a cabo pa a que pudie a a anza con el abajo
mien as yo me cen aba en a egla pequeños allos de ases an e io es y a anza con los
elemen os isuales.
Pa a las p egun as de ipo sin axis, debido a que mi compañe o es aba enca gado del
desa ollo de o os elemen os del p oyec o, busqué in o mación ace ca de la he amien a
necesa ia pa a gene a las g amá icas. Una ez u e una idea gene al de cómo se podían hace
g amá icas pe sonalizadas empecé a hace pequeñas p uebas y cuando comp obé que
uncionaban co ec amen e, empecé a esc ibi las necesa ias pa a es e u o ial conc e o, así
comosucompilaciónysu uncionamien odesdeden odeunaaplicaciónJa a.
En nues o p oyec o se p opuso la idea de que las clases que ealizan la comp obación
median e sin axis ue an independien es a la aplicación. Po lo an o, pa a hace uso de ellas,
había que gene a las clases ue a del p oyec o y hace la llamada ex e na desde el mismo.
Po eso, consul é con los di ec o es pa a que me guia an cómo hace lo, y empecé a p oba
has aconsegui eléxi odees ecome ido.
Como enca gado de la pa e isual, me i en la necesidad ene que hace una
ac ualización de la en ana as con es a a las dis in as p egun as, así que añadí un elemen o
más a los paneles, que mues an las p egun as pa a indica si la espues a in oducida po el
usua ioencualquie adelos o ma osesco ec aono.
64
6.Ag adecimien os
Que emos da las g acias a los di ec o es En ique y Manuel, po es a ahí cuando
hacía al aunempujónpa acon inua conelp oyec o.
También que emos da las g acias a la Asociación Socio Cul u al de Ingenie os en
In o má ica (ASCII) po es a siemp e ahí pa a anima nos en nues os momen os de bajón e
inci a nos a cambia el abajo po unos a os de juego y di e sión, y da nos consejos
b illan esconalgunos oci osdecódigo,enespecialaMikyyPon .
No nos ol idamos de nues as amilias, que siemp e han es ado p esen es en las ganas
que le hemos echado al desa ollo en las innume ables ho as de dedicación, y que nos han
sopo adoyapoyadodu an e an osañosdeca e a.
Tenemos que menciona ambién a la web h p://s acko e low.com/ y su comunidad,
po ayuda nos en nume osas ocasiones apo ando ideas y ejemplos de código que nos han
ayudadoaacaba elp oyec o.
Po úl imo que emos menciona a Will, po echa nos una manilla con la aducción, y
a í ulope sonalalgunosag adecimien osmás.
65
66
Bibliog a ía
[1]La ie i,D Edwa d.Ge ingS a edwi hUni y5
.Pack ,2015.
[2]Ma golis,Michael.A duinoCookbook
.Sebas opol,CA:O'Reilly,2012.
[3]C awley,MichaelJ.TheRBook
.Chiches e ,England:Wiley,2007.
[4]Su he land,Je eyVic o .Sc um:TheA o DoingTwice heWo kinHal heTime
.
[5]Vogel,La s.EclipseIDE:Ja aP og amming,Debugging,Uni Tes ing,Task
Managemen andGi Ve sionCon olwi hEclipse
.Leipzig:Vogella,2013.
[6]Eckel,B uce.ThinkinginJa a
.Uppe SaddleRi e ,NY:P en iceHall,2014.
[7]Ho s mann,CayS.Ja aSE8 o heReallyImpa ien
,2014.
[8]Meye ,E icA.,andE icA.Meye .CSS:TheDe ini i eGuide
.Beijing:O'Reilly,2007.
[9]Pa ,Te ence.TheDe ini i eANTLR4Re e ence
,2013.
[10]Lu z,Ma k.Py hon
.Camb idge:Ed.O'Reilly,2010.
[11]Ma en
.S.l.:Alphasc ip ,2012.
[12]Loelige ,Jon.Ve sionCon olwi hGi :
.Beijing:O'Reilly,2009.
67
68
Anexos
A)Ac asdelas euniones
NºDEACTA:1
FECHA:06Oc ub e2015
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
Decisionessob e ecnologíasau iliza
DECISIONESTOMADAS:
Lenguajedep og amación:Ja a
Tipodea chi ode u o iales:YAML
Lenguajedi igidoel u o ial:Py hon3.4
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
C ea losa chi osYAML
NºDEACTA:2
FECHA:20Oc ub e2015
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
Comp oba a chi osYAML
69
DECISIONESTOMADAS:
Cambia aspec osdelYAML
Añadi campopis apa aalgunasp egun as
Añadi e ique asMa kdownaloscamposde ex o
UsodeSNAKEYAMLcomoin é p e edelosa chi osYAML
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
Lle a acabolasmodi icacionesp opues as
Elegi ecnologíapa ain e p e a Ma kdown
NºDEACTA:3
FECHA:03No iemb e2015
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
Comunica alosp o eso es ecnologíaselegidas
Comp oba queloscambios ienenéxi o
Comp oba es uc u adeclasesJa a
DECISIONESTOMADAS:
Seacep aelusodeMAVENpa alasdependenciasdelib e íasex e nas
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
Comp oba lain e p e acióndelase ique asMa kdown
Mos a in o maciónpo en ana
70
NºDEACTA:4
FECHA:17No iemb e2015
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
P oba elemen oswebenlas is as
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
Cambia pa hde ecu sos
P oba elemen oscomplejosconpegdown
P o o ipodep egun as ipo es
NºDEACTA:5
FECHA:01Diciemb e2015
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
Comp oba losobje i osdela euniónan e io
DECISIONESTOMADAS:
Segui conlosp oblemasplan eados
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
Inclui hojasdees ilo(CSS)enlas is as
Cambia o ma odeopcionespa ap egun asdeopciones(checkboxo adioBu on)
lujode en anasenpapel
71
NºDEACTA:6
FECHA:17Diciemb e2015
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
Comp oba a ances
Deba i eldiseñode lujoen e en anas
DECISIONESTOMADAS:
Cambia el lujode en anaspa apode mos a p egun asin e caladasconla eo ía
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
Cons ui en anaúnicapa ala eo íaylasp egun as
Mos a el lujodeunalecciónconp egun asde ipo es
NºDEACTA:7
FECHA:14Ene o2016
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
Comp oba el lujodelalección
DECISIONESTOMADAS:
El lujoesco ec o
Con inua conelp oyec o
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
Ejecucióndep egun as ipocódigo
72
Gene a iche opy honco ec o
P oba enlinux
Modi ica elYAMLpa aañadi elcampoconelnomb edel iche oco ec o
NºDEACTA:8
FECHA:18Feb e o2016
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
ORDENDELDÍA:
Comp oba a ancesdelp oyec o
Deba i cómoejecu a Py hon
DECISIONESTOMADAS:
Ejecu a Py hona a ésdelin é p e e
EjecucióndePy honconunhiloindependien epa aquenohaya iesgodequela
aplicaciónsecuelgue
Usode uncionesdegene ación/lec u adesalida
OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN
Lle a acabolaejecucióndePy honcon odaslasins uccionesdecididas
NºDEACTA:9
FECHA:08Ma zo2016
ASISTENTES:
Ra aelCa u la
Ca losCongos o
En iqueMa ín
ManuelMon eneg o
73
Una ezseleccionadoel ema,sellegaalmenúdelaslecciones.
Menúlecciones
En es a en ana se mues a el í ulo del ema jun o a una pequeña in oducción del
ema,seguidodelalis adelaslecciones.
T as selecciona una lección, y pulsa “Comenza lección”, se mues a el con enido de
dichalección.Elcon enidocons adeexplicacionesop egun as.
Sielcon enidoesunaexplicaciónsemos a ácomoenlasiguien eimagen.
Con enidodeexplicación
80
Si po el con a io el con enido es una p egun a a ia á del ipo de p egun a que se
a e.Encasodese de ipo es :
P egun a ipo es
Silasp egun assonde ipocódigoo iposin axis end ánlamismaapa iencia:
P egun as ipocódigoosin axis
81
Ambas is as de p egun as ienen un o ma o simila . En la pa e cen al se mues a el
enunciado de la p egun a y debajo el campo de espues a que a ía en unción del ipo: lis a
de opciones en el caso del ipo es y en el es o un campo de ex o donde esc ibi el código.
Además,alade echadelcampode espues asiemp eapa ecenlosmismosbo ones.
●Resol e :Pa acomp oba la espues ain oducida.
●Ayuda: Mues a un consejo en caso de exis i pa a esponde de o ma co ec a a la
p egun a.
T as con es a se mos a á un mensaje con el esul ado de la p egun a. En caso de se
co ec a, y mos a el co espondien e mensaje, se ac i a án los bo ones necesa ios pa a pode
con inua con la lección. En caso con a io se mos a á el mensaje indicando que se ha allado
ynoseac i a ándichosbo ones.
Si la p egun a es de ipo código, además de apa ece el mensaje comunicando el e o ,
se mos a á un bo ón con más in o mación pa a ayuda a esponde co ec amen e a la
p egun aen uncióndele o p oducido.
T as acaba la lección po comple o, se mos a á una en ana elici ando el abajo y
despuéslaaplicación ol e áalMenúde emas.
Felici ación
82
C)Ob enciónycompilacióndelahe amien a
Como ya se ha dicho an e io men e, es a he amien a es á disponible en
h ps://gi hub.com/Khe du/TFG/ bajo licencia MIT, pa a u iliza la es necesa io desca ga la y
compila la.
Una ez desca gado como ‘.zip’ se descomp ime. A con inuación se ab e el e minal
y desde la aíz del p oyec o se ejecu a el comando m n package.m n es el nomb e del
ejecu able de ma en en el equipo. Si no es á con igu ado como una a iable del sis ema hab á
queesc ibi la u acomple adedondeseencuen a.
T as el paso an e io , en el di ec o io desde donde se ejecu ó la ins ucción apa ece á
unaca pe a‘ a ge
’,lacualcon iene2a chi osconlaex ensión‘.ja ’.
Tu o ialesIn e ac i os0.0.1SNAPSHOT.ja
Tu o ialesIn e ac i os0.0.1SNAPSHOTja wi hdependenc
ies.ja
Pa au iliza lahe amien aesnecesa ioejecu a elsegundoconlasen encia:
ja aja <nomb e>
83