scieee Open visual document viewer

Sistema de creación de tutoriales interactivos para el aprendizaje de lenguajes de programación

Caturla Torrecilla, Rafael; Congosto Sandoval, Carlos

Abstract

En estos últimos años la curiosidad por el sector informático, y más específicamente en la programación, ha producido una gran demanda por los interesados en estas áreas. Esto ha provocado que el número de tutoriales y entrenadores haya aumentado de una forma considerable. Debido a esta gran demanda, ha surgido la idea de desarrollar una herramienta con la que poder gestionar tutoriales de programación con una aplicación de escritorio. La finalidad de este proyecto es poder crear tutoriales interactivos que permitan a los alumnos adquirir conocimientos de una forma sencilla y atractiva. Esto se consigue mediante la posibilidad de enriquecer el formato del texto al mostrar las explicaciones o los enunciados de las preguntas y añadir imágenes. Para evitar que sea un tutorial de sólo lectura, que resulta poco atractivo y no permite al estudiante evaluar los conocimientos adquiridos, con esta herramienta se podrán intercalar preguntas entre la teoría para enganchar más al alumno, y conseguir que el aprendizaje sea muy incremental, para no tener una cantidad abrumadora de información en poco tiempo. Con estos tutoriales el alumno podrá comprobar los conocimientos adquiridos gracias al seguimiento continuo. El estudiante, según lea la teoría y realice los ejercicios con grado de dificultad creciente, tendrá más capacidad para resolver ejercicios nuevos y prepararse para continuar el tutorial. El resultado de este proyecto ha sido una herramienta multiplataforma y con licencia abierta MIT, que puede ser descargada de https://github.com/Kherdu/TFG.

Full text

 Sis emadec eaciónde u o iales in e ac i ospa aelap endizajede lenguajesdep og amación  Ra aelCa u laTo ecilla Ca losCongos oSando al       T abajode indeg adodelG adoenIngenie íaIn o má ica Facul addeIn o má ica Uni e sidadComplu ensedeMad id    Di ec o :En iqueMa ínMa ín Codi ec o :ManuelMon eneg oMon es           2  AUTORIZACIÓN PARA LA DIFUSIÓN DEL TRABAJO FIN DE GRADO Y SU           DEPÓSITOENELREPOSITORIOINSTITUCIONALEPRINTSCOMPLUTENSE  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             lenguajesdep og amación  Cu soacadémico:2015/2016 Nomb edelAlumnos: Ra aelCa u laTo ecilla Ca losCongos oSando al  Tu o esdelTFGydepa amen oalquepe enecen: En iqueMa ínMa ín ManuelMon eneg oMon es Depa amen odeSis emasIn o má icosyCompu ación  Fi madelalumno/s Fi madel 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.Plande abajo 15 1.3.1.Me odologíade abajoyplani icación 16 1.3.2.Fasesdedesa ollo 16 1.4.He amien asdedesa ollou 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 kplan 23 1.3.1.B.Wo kme hodologyandplanning 23 1.3.2.B.De elopmen phases 24 1.4.BDe elopmen  oolsused 25 2.Diseñodelaaplicación 27 2.1.Es uc u adeclases 27 2.2.Tecnologíasu ilizadas 29 2.2.1.Ja a[6]: 29 2.2.2.Ja aFX[7]: 29 2.2.3.YAML(YAMLAin' Ano he Ma kupLanguage): 30 2.2.4.Ma kdown: 31 2.2.5.ANTLR(Ano he ToolFo LanguageRecogni 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óndea chi osex e nos 34 2.3.1.A chi osYAML 34 2.3.2.A chi osANTLR 38 2.3.3.A chi osPy hon 39 2.3.4.A chi os empo alesJSON 41 2.4.In e accióndecomponen essiguiendoejemplodeejecución 41 2.5.In eg aciónymodi icación 42 3.Conclusiones 45 3.1.Resul adosob enidos en ea esul adosespe ados 45 3.1.1.P esen aciónde u o iales 45 3.1.2.C eaciónyadiciónde u o iales. 46 3.1.3.Sopo epa adi e en es iposdep egun a 46 3.1.4.Sopo edelenguajesin e p e ados 46 3.1.5.Funcionamien omul ipla a o ma 47 3.2.P oblemasencon adosysussoluciones 47 3.2.1.He amien aSceneBuilde  47 3.2.2.Ru asde ecu sosex e nos 48 3.2.3.Ajus edeelemen osal amañodela en ana 48 3.2.4.Mos a imagenenWebView 48 3.2.5.Compilaciónex e nadeg amá icas 49 3.B.Conclusions 51 3.1.B.Ob ained esul sbe o eexpec ed esul s 51 6  3.1.1.B.Tu o ialdisplay 51 3.1.2.B.C ea ionandaddi iono  u o ials 51 3.1.3.B.Suppo  odi e en kindso ques ions 52 3.1.4.B.Suppo o in e p e edlanguages 52 3.1.5.B.Mul ipla o mope a ion 52 3.2.B.P oblems oundand hei solu ions 53 3.2.1.B.SceneBuilde  ool 53 3.2.2.B.Ex e nal esou cespa hs 53 3.2.3.B.Ex e nalcompila iono g amma s 54 3.2.4.B.WebViewimagedisplay 54 3.2.5.B.Ex e nalg amma compila ion 54 4.Posibilidadesdeampliación 57 4.1.Colo eadodesin axis 57 4.2.In e azg á ica 57 4.3.Ges ióndeusua ios 57 4.4Gua da es adodel u o ial 58 4.5.Cons uc o de iche osYAML 58 4.6.Ejecucióndep egun asde iposin axis 59 4.7.Lenguajescompilados 59 4.8.Mig aciónalaweb 59 4.9.Paque edeidiomas 60 5.Apo acionespe sonales 61 5.1.Ra aelCa u laTo ecilla 61 5.2.Ca losCongos oSando al 63 6.Ag adecimien os 65 7  Bibliog a ía 67 Anexos 69 A)Ac asdelas euniones 69 B)Ejemplodeusodelahe amien a 77 C)Ob enciónycompilacióndelahe 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               yañ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               muyinc emen al,pa ano ene unacan idadab umado adein o maciónenpoco 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 acon 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 aMIT,quepuedese desca gadadeh 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íade abajoyplani 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 eequipo.  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 genmayo en e eunionesconel inde ene  iempodees udia .  En cada eunión se ha omado ac a de lo a ado, es as ac as se encuen an en el                AnexoA.  1.3.2.Fasesdedesa ollo  Es as son las di e en es ases de desa ollo po las que se ha pasado, p esen adas en               o maesquemá icayconsus echasco espondien es:  1.Diseñodelos iche osquede inenlos u o iales(6/10/20153/11/2015) ● Decisióndellenguajeu ilizadopa asu 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ónnecesa ia. ● Inclusióndema cado esMa kdownaloscamposde ex odelos iche os. ● Gene acióndemé odosnecesa iospa ain e p e a lain o mación.  2.C eacióndelas is asdelaaplicación(3/11/201514/1/2016) ● Diseñodelas en anasdelaaplicación. ● Gene acióncódigoHTMLconlain o macióncon enidaenlos iche osYAML. ● Mues adein o maciónob enidadea chi osYAMLenlas en anas.  3.Inco po acióndelasp egun as ipo es (17/11/20151/12/2015) ● Recogidadelas espues asquees ánma cadaspo elusua io. 16  ● Implemen acióndela unciónco ec o a. ● Ac ualizacióndela en anaconel 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/201617/03/2016) ● Decisióndeejecu a elcódigomedian ePy hon. ● C eacióndel iche odeco eccióndePy hon. ● De inición del o ma o y con enido del iche o empo al donde se gua da án los            esul adosdelaejecución. ● Implemen acióndelas uncionesco ec o asenPy hon. ● Ac ualizacióndela en anaconlain o macióndel 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óndelanalizado sin ác icoqueseu iliza áenes e ipodep egun as. ● Gene acióndeg amá icasdep ueba. ● Gene acióndelasclasesnecesa iaspa alaco ección. ● Implemen acióndela unciónco ec o a. ● Ac ualizacióndela en anaconel esul adodeco 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/201627/05/2016) ● Búsqueda de in o mación sob e almacenamien o de a iables independien es a la          aplicación. ● Decisióndeusa  a iablesdesis ema en ea iche osdecon igu ación. ● Implemen acióndemé odosdegua dadoyca gadedichas a iables. ● Enlazadoconlain e azdelaaplicaciónyp uebade 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únlasnecesidadessegúnsea anzabaeneldesa 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 osdelaaplicación. 1.4.He amien asdedesa ollou 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               laho adea anza eneldesa ollodelaaplicaciónydocumen a losa ances ascadapaso. 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 plugins  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 plugins  , pues ienen una ele ancia meno en             elp oyec o.  O a he amien a undamen al ue Gi Hub , que u ilizamos como sis ema de con ol           4 de e sionespa aelcódigo.Es ahe amien asep esen aconmásde allesenlasección2.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 echandolascuen asdeusua iop o is aspo laUni e sidadComplu ense.        3Lain o maciónace cadees a ecnologíaseexplica áenelapa ado2.2.3 4Lain o maciónace cadees a ecnologíaseexplica áenelapa ado2.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              andha dwa e.Thisb ingsus o hewo ldo elea 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                 acompu e  o es  heknowledgeacqui ed.Nowadays, hesubjec isqui edi 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.Wecouldsay ha  hemodelo lea ningischanginga conside ablepace.  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                  oolso imp o e heexis ingones.  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                ano e iewo  hecu 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 nc.o g,h p://www.lea njs.o g,   h p://www.lea nphp.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                   andseehow heou pu changesdependingon heinpu  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 alsoin eg a esa aine whe e hecodecanbemodi iedso heuse 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 oducedby hemodi ica ionsdoneinp 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.Thecommandusageissimila  o hep e iousone.  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 ’soneo sixa aiablelanguages).  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,               5h 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 ionsappea  ha  heuse has oanswe 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 lyas hes a emen  equi es obeable oad ance u he .Wecansee ha in hisimage.    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 heope a ionexac lyas hes 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 scansee ha wo kanddi ec be e  hei classesacco ding o ha p og ess.  A simila u iliy ee al e na i e is FLOP       h p://p oblemg.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 ese so 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             couldbebuil ,bu mo ecomple eand iendly.Weha eanidea os a  om.  This new ool should be able o sol e Swi l issues like ha ing o con igu e he               p og ameach imeweha e olaunchi and heimpossibili y oadap  oo 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.  Thepossibili y oc ea eandadd hose u o ialsindependen lyo  heapplica ion  Di e en ques ion ypesuppo , i s ly es ,codeandsyn 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 ionin heapplica ion  Ope a i eSys emindependen 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 ocomple e helesson.  6In e p e edlanguagesunde s oodas hose ha dono needacompila ionphase op oducemachinecode,bu  a eexecu edbyanin 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 hedi e en  ypeso ques iona eexplainedmo eindep h: Tes ype: ques ions whose ask is o make he s uden o espond by ma king one o                mo ep oposedanswe s.Ques ionscanbemul ipleanswe o singleanswe . 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             hein e p e e (Insec ion2.3.2willbeexplainedhowi ’sdone).  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 yo  hecu en lessoni needed.  1.3.B.Wo kplan  In hissec ionwewilldiscussall heaspec s ela ed o hede elopmen o  he applica ionin a ioussec ions, hosebeing:wo kme hodologyandplanning,de elopmen  phasesandde elopmen  oolsused.  1.3.1.B.Wo kme hodologyandplanning  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.Alsoi isdesigned o li leg oups,whichis hecaseo  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 hosemee ingswe emade oha eenough ime os udy.  A eco do eachmee ingwassa ed.Thisin o ma ionisin heAnnexA.  1.3.2.B.De elopmen phases  Thesea e hedi e en s ageso de elopmen ,schema icallyp esen edandwi h hei  co espondingda es.  1.Designo  he iles ha de ine he u o ials(6/10/20153/11/2015) ● Selec iono  helanguage ha  ep esen si (YAML). ● File c ea ion wi h examples wi h he necessa y ields o hold all he in o ma ion             needed. ● Ma kdownma ke sinclusionin he ile ex  ields. ● Gene a iono  heneededme hods o ead hein o ma ion.  2.C ea iono  heapplica ion iews(3/11/201514/1/2016) ● Windowdesign. ● HTMLcodegene a ionwi h hein o ma ioncon ainedin heYAML iles. ● Displayin hewindowso in o ma ionob ained omYAML iles.  3.Tes ques ionsinco po a ion(17/11/20151/12/2015) ● Cap u eo  hema keduse answe s. ● Co ec o  unc ionimplemen a ion. ● Window e eshindica 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/201617/03/2016) ● Decisiono execu ing hecode h oughPy hon. ● Py honco ec ion ilec 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 honco ec o  unc ionsimplemen a ion ● Window e eshindica ing esul .  5.Inco po a iono ques ionsco ec edbysyn axanalyze s(19/04/201627/05/2016) ● Selec iono  hesyn axanalyze  obeusedin his ypeo ques ions. ● Tes g amma sgene a ion. ● Co ec ionneededclassesgene a ion. 24  ● Co ec o  unc ionimplemen a ion. ● Window e eshindica ing esul .  6.P e e ences ilec ea ion osa euse con igu a ion(26/04/201627/05/2016) ● In o ma ionsea chabou applica ionindependen  a iabless o age. ● Decision ousesys em a iables e suscon igu a ion iles. ● Sys em a iablessa eandloadme hodsimplemen a ion. ● In e acelinkedandope 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               needsas hede elopmen asi 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.BDe elopmen  oolsused  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 anddocumen a iondu ingand ollowingeachs epdone.  The ool which we depended he mos o he de elopmen was he in eg a ed             de elopmen en i onmen Eclipse[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 oolwasGi Hub ,whichwasusedas e sioncon olsys em o  8 hecode.  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              heComplu enseUni e si y.   7In o ma ionabou  his echnologyinsec ion2.2.3 8In o ma ionabou  his echnologyinsec ion2.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 .Algunosejemplosdeex ensiónson: ● ALL:añade odaslasex ensiones ● TABLES:Pe mi egene a  ablasHTML ● SUPPRESS_HTML_BLOCKS:Sup imelosbloquesHTML  Como ejemplo de pegdown, el código Ma kdown p esen ado an e io men e se          ans o ma íaensuco espondien eHTML:  <h1>Ni el1</h1> <h2>Ni el2</h2> <h3>Ni el3</h3> <p>El<s ong>comienzo</s ong>delalis a</p> <ul> <li>Elp ime o</li> <li>Elsegundo</li> <li>El e ce o <ol> <li>3.1</li> <li>3.2</li> </ol> </li> </ul> <p>Yes oel inaldelalis a</p> < able> < head> < > < h>Fi s Heade </ h> < h>SecondHeade </ h> < h>Thi dHeade </ h> </ > </ head> < > < d>Fi s  ow</ d> < d>Da a</ d> < d>Ve ylongda aen 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 ToolFo LanguageRecogni 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               cadenadesólole as. Acon inuaciónseexplicacómode ini es ag amá ica: g amma Hello; :'hello'ID; ID:[az]+;  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.Enes ecaso,comobaseypo suge enciadelosdi ec o es, adi igidaaPy 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 ayaain e p e a ,y ienelib e íaspa asuusoencasi odosloslenguajes. 19h 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óndea chi osex 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 adoexplica emoscómosones osa chi osencuan oasucon enidoyes uc u a. 2.3.1.A chi osYAML 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.  20Explicaciónenellaci a[11]delabibliog a ía 21h ps://gi hub.com/ 34  P ime o amosaexplica laes uc u adel emaylasleccionesconunejemplo:  Tema:2 Ti ulo:"#Lis as" A chi o:"py hon34/co ec o es/ ema2.py" In oduccion:| ##Py honu iliza a ios iposdeda oscompues os, ##queseu ilizanpa aag upa o os alo es. ##Elmás e sá ileslalis a. Lecciones: Leccion:1 Ti ulo_Leccion:Lis as In o_leccion:> "Loselemen osdeunalis asedecla anen eco che esy sepa adospo ','." Elemen os: Elem: . . . Es oscamposexp esanlosiguien e: Tema:Nume odel ema(núme o) Ti ulo:Ti ulodel ema( ex o) A chi o:a chi odeco ecciónpa alasp egun asde ipocódigo (lenguaje/co ec o es/ emaX.ex )dondeXeselnúme odel emayex laex ensióndel a chi o,po ejemplopa apy honse ápy. In oduccion: ex oconin o macióndel ema( ex o) Lecciones:lis adelecciones( acío,elelemen oeslalis adelecciones) Leccion:núme odelalección(núme o) Ti ulo_Leccion: í ulodelalección( ex o) In o_leccion:in oduccióndelalección( ex o) Elemen os:lis adeelemen osdelalecciónlis adeelemen os( acío) Elem:haydos iposdeelemen o,seesc ibi ácuales(p egun aoexplicacion)  Hayquedes aca queun emapuede ene  odaslasleccionesqueseannecesa iasy unalección ambiénpuede ene  odosloselemen osquesequie a.  Aho aexplica emosquécon ieneunelemen oycómosees uc u a,comenzamoscon lasexplicaciones:  Elem:explicacion Con enido:> 35  Loselemen osdeunalis ano ienenpo quése  odosdel mismo ipo.Enlamismalis apuedehabe núme osen e osy cadenas. . . .  Las explicaciones sólo ienen un campo, en el que end emos ex o con la p opia              explicación,imágenesyloselemen osma 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 alycomoes énenela chi o.  Aho a e emoslasp egun asde ipoopciones:  Elem:p egun a Nume o:2 Enunciado:> ¿queopciónesco ec apa aex ae  losdosnomb esdelalis al=["Ra ael","Ca los",32,27]? Tipo:Opciones Pis a:Lanume acióndeloselemen oscomienzaen0 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:elenunciadodelap egun a(comúna odaslasp egun as) Tipo:Opciones,aquíseindica á(comúna odaslasp egun as) Pis a: campo opcional con una pis a que pueda ayuda a esol e la p egun a (común a odas                lasp 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éspo quealin e p e a elá bol aducedi ec amen ees enodoabooleano 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 .  Vamosaho aconlasde ipocódigo:  Elem:p egun a Nume o:1 Enunciado:C eaunalis a'l'condosnomb esylosnúme os32y 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ónquecomp oba áelcódigo.Es a unciónes a áimplemen adaenela chi oco ec o .  Ypo úl imolasdesin axis:  Elem:p egun a Nume o:3 Enunciado:> Esc ibeelcódigopa ain oduci enlalis a'l' losnume osdel1al5u ilizandounbucle Pis a:Consul ael emadebuclessi ienesp oblemas Tipo:Sin axis G ama ica:CadRep Resul ado:l=[1,2,3,4,5]  Ysuscamposson:  G amá ica:nomb edela chi oco espondien ealag amá icaalaque engaqueajus a sela espues a. Resul ado:(opcional)Sique emos ene comp obacióndel esul ado.Aunquees aopción, comoexplica emosmásadelan enosecomple ó,nospa ecióin e esan eman 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                leayuda áaman ene laa enciónalaspa esmás undamen ales.  Enelcasodeque e in oduci imágenesconMa kdown,la u aqueseespeci iqueen lae ique a ienequese la ela i aaldi ec o ioex 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 losejemplosdel eposi o ioGi Hubdelp oyec o.  2.3.2.A chi osANTLR  Es osa chi ossonlosquecon ienenlag amá icade inidapo elp o eso .Enelcaso dees ep oyec osehau ilizadola e sión4.XdeANTLR,po loquelaex ensióndelos a chi oses‘.g4’.En e sionesan e io esse ía‘.g’.  Pa aque uncioneco ec amen econANTLRyconnues aaplicaciónela chi oha decumpli unase iede 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) ● Elnomb edela egladebecoincidi coneldelag amá ica( odoenminúsculas)  Unejemplodeg amá icase íaelsiguien e: Elcon enidodela chi oT iangulo.g4es: g amma T iangulo; iangulo:'h='NUMBER' nb='NUMBER' n'FORMULA; NUMBER:[09]+; FORMULA:'a=h*b/2';  Enes ea chi osedesc ibeunag amá icaqueespe a ecibi un agmen odecódigo necesa iopa ahalla elá ea‘a’deun iánguloconasignaciónde alo esados a iables: h:al u a b:base  Conelejemploan e io ,el agmen odecódigoacep adose ía: h=2 b=3 38  a=h*b/2  Po elcon a iounael agmen odecódigoinco ec ose ía: h=hola→Fallapo queseespe aqueala a iablehseleasigneunnúme o b=3 a=3 →Fallapo queespe ala ó muladelá eadel iángulo  2.3.3.A chi osPy 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 ieneunaes uc u asimila alaque amosap esen a conunejemplo:  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 aslib e íasson:  sys: Es a lib e ía nos pe mi e ob ene las a iables que nos llegan desde Ja a y acaba               laejecución. json:Nospe mi e a a ela chi ojson. emp ile:Nospe mi eope a conela chi o empo al.  Aho a amosa e unejemplodelcódigoPy honco espondien eal iche ode co ecciónindicadoenelYAMLmos adoan 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 decon enido'  alue3=['Puedequehayasesc i omalloselemen os'] dicc['isCo ec ']= alue1 dicc[' ypeE o ']= alue2 39  dicc['hin s']= alue3 wi hopen( ilename,'w')asou ile: json.dump(dicc,ou ile) sys.exi (0); excep Excep ionase: 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.                Vamosapasa aexplica 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é                hayenes ea 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                 bloquei 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              yca 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             lossiguien escampos: ● alue1:El esul adodelap egun a,siendoés e ue  o alse ● alue2:Tipodee o .Es ese áelmensajequesemos a áencasode alla  ● alue3: Lis a de pis as adicionales. Es as pis as a ían en unción del e o que             come aelalumno,siendosólo isiblescuandoelalumno 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 aluego olca losenela 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                allodeejecución,posiblemen epo sin axis.  2.3.4.A chi os empo alesJSON  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 osa chi os ienenunaes uc u amuybásica,que e emosacon 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 apa amos a el esul adoalusua io.  2.4. In e acción de componen es siguiendo ejemplo      deejecució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ón2.3.1que ep esen aun emamodelo.  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 22h p://docs.o acle.com/ja ase/7/docs/ echno es/guides/p e e ences/ 41  3.2.2.Ru asde ecu sosex 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              hubieseque ecompila y eempaque a  odoelp 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 edeelemen osal amañodela 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ásenelmomen odemos a loselemen ossehacíade o mae ó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               quededica más iempodelespe ado.  3.2.4.Mos a imagenenWebView  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 ábamosla azóndelp 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ónex e nadeg 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 queu iliza lib e íasdecompilación,nodisponiblesenJRE. Solución omada: C ea eneldi ec o iode ecu sosex e nosundi ec o ioconlasclasesdeANTLR compiladasp e iamen e.Es op opicióel ene quebusca in o maciónace cadecómohace  usodees asclasesde o maex e naalaaplicación.     25JDK(Ja aDe elopmen Ki )eselki dedesa ollodeJa a,queincluyelashe amien asdecompilación, cons uccióndep oyec osyelp opioJRE 26JRE(Ja aRun imeEn i onmen )eslap opiamáquina i ualdeJa a,quepe mi elaejecuciónde aplicacionesja 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 sbe o eexpec 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 eachie edinasa is yingwayo no .   Thenwewill alkabou  heob ained esul sagains eachobjec i e:  3.1.1.B.Tu o ialdisplay  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 heacqui edknowledge.  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 ionandaddi iono  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                wouldbe 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 oc ea eo modi y he u o ialsanddis ibu e hembe ween hes uden s.  3.1.3.B.Suppo  odi e en kindso 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 ialsmus 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 edbe o e hisphase,i ’sjus checked he o ma o  heinpu code.  3.1.4.B.Suppo o in e p e edlanguages  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 heexecu iono  hecode ha wasin oducedby hes 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 whichlanguagewea ewo kingwi h.  3.1.5.B.Mul ipla o mope 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               beencomple ed.  Howe e , in OS and Linux  , he in e ace can show li le isual de ec s, o example              no showingp ope lysomeelemen s. 27Fu he OS 52  3.2.B.P oblems oundand 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 hasimpliedsomedelaydu ingeacho  hede elopmen phases.  Nex wewillexplainsomeo  hemos  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 adi icul ies oimplemen i s unc ionali yand omodi y hembyhand.  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 cespa 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              imewewan ed oincludenew u o ials o heapplica 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 ledelaybecauseo  hein o ma ionsea ch his echnology equi ed oimplemen i .    53  3.2.3.B.Ex e nalcompila iono 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 sin hes 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 wasalsosol edbu i  ookmo e ime hanexpec ed.  3.2.4.B.WebViewimagedisplay  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              becausewedidno  indou  hesou 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 ogoonwi hall hede elopmen andwo kin hesolu iona  hesame ime.  3.2.5.B.Ex e nalg 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 includedin heJREdis ibu ion.   28JDK(Ja ade elopmen Ki )i includescompila ionandp ojec building oolsandalsoJRE 29JRE(Ja aRun imeEn i onmen )is heJa aVi ualMachinei sel ,whop o ideJa aapplica ionexecu 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 heapplica ion.     55     56  4.Posibilidadesdeampliació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 alosusua ios.  Acon inuaciónsedesc ibenideaspa apode amplia es aaplicación:  4.1.Colo eadodesin 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 osimila aunedi o de ex oen iquecidoounen o nodedesa 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 oysecomp uebesi ienepalab as ese adaspa acambia leselcolo .  4.2.In e azg á 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               pocoa ac i osdeca aalosusua 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 incipalesusua ios,losalumnos. 4.3.Ges ióndeusua 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í            comosucompilaciónysu uncionamien odesdeden odeunaaplicaciónJa 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 aconsegui eléxi odees ecome 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 ioencualquie adelos o ma osesco ec aono.     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 aunempujónpa acon inua conelp 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 esconalgunos oci osdecódigo,enespecialaMikyyPon .  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 adoyapoyadodu an e an osañosdeca 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              ayudadoaacaba elp oyec o.  Po úl imo que emos menciona a Will, po echa nos una manilla con la aducción, y              a í ulope sonalalgunosag adecimien osmás.           65     66  Bibliog a ía  [1]La ie i,D Edwa d.Ge ingS a edwi hUni y5  .Pack ,2015. [2]Ma golis,Michael.A duinoCookbook  .Sebas opol,CA:O'Reilly,2012. [3]C awley,MichaelJ.TheRBook  .Chiches e ,England:Wiley,2007. [4]Su he land,Je eyVic o .Sc um:TheA o DoingTwice heWo kinHal  heTime  . [5]Vogel,La s.EclipseIDE:Ja aP og amming,Debugging,Uni Tes ing,Task Managemen andGi Ve sionCon olwi hEclipse  .Leipzig:Vogella,2013. [6]Eckel,B uce.ThinkinginJa a  .Uppe SaddleRi e ,NY:P en iceHall,2014. [7]Ho s mann,CayS.Ja aSE8 o  heReallyImpa ien  ,2014. [8]Meye ,E icA.,andE icA.Meye .CSS:TheDe ini i eGuide  .Beijing:O'Reilly,2007. [9]Pa ,Te ence.TheDe ini i eANTLR4Re 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 sionCon olwi hGi :  .Beijing:O'Reilly,2009.         67     68  Anexos A)Ac asdelas euniones  NºDEACTA:1  FECHA:06Oc ub e2015  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  Decisionessob e ecnologíasau iliza   DECISIONESTOMADAS:  Lenguajedep og amación:Ja a  Tipodea chi ode u o iales:YAML  Lenguajedi igidoel u o ial:Py hon3.4  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  C ea losa chi osYAML    NºDEACTA:2  FECHA:20Oc ub e2015  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  Comp oba a chi osYAML 69   DECISIONESTOMADAS:  Cambia aspec osdelYAML  Añadi campopis apa aalgunasp egun as  Añadi e ique asMa kdownaloscamposde ex o  UsodeSNAKEYAMLcomoin é p e edelosa chi osYAML  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  Lle a acabolasmodi icacionesp opues as  Elegi  ecnologíapa ain e p e a Ma kdown    NºDEACTA:3  FECHA:03No iemb e2015  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  Comunica alosp o eso es ecnologíaselegidas  Comp oba queloscambios ienenéxi o  Comp oba es uc u adeclasesJa a  DECISIONESTOMADAS:  Seacep aelusodeMAVENpa alasdependenciasdelib e íasex e nas  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  Comp oba lain e p e acióndelase ique asMa kdown  Mos a in o maciónpo  en ana       70  NºDEACTA:4  FECHA:17No iemb e2015  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  P oba elemen oswebenlas is as  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  Cambia pa hde ecu sos  P oba elemen oscomplejosconpegdown  P o o ipodep egun as ipo es     NºDEACTA:5  FECHA:01Diciemb e2015  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  Comp oba losobje i osdela euniónan e io   DECISIONESTOMADAS:  Segui conlosp oblemasplan eados  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  Inclui hojasdees ilo(CSS)enlas is as  Cambia  o ma odeopcionespa ap egun asdeopciones(checkboxo adioBu on)  lujode en anasenpapel   71  NºDEACTA:6  FECHA:17Diciemb e2015  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  Comp oba a ances  Deba i eldiseñode lujoen e en anas  DECISIONESTOMADAS:  Cambia el lujode en anaspa apode mos a p egun asin e caladasconla eo ía  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  Cons ui  en anaúnicapa ala eo íaylasp egun as  Mos a el lujodeunalecciónconp egun asde ipo es     NºDEACTA:7  FECHA:14Ene o2016  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  Comp oba el lujodelalección  DECISIONESTOMADAS:  El lujoesco ec o  Con inua conelp oyec o  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  Ejecucióndep egun as ipocódigo 72   Gene a  iche opy honco ec o   P oba enlinux  Modi ica elYAMLpa aañadi elcampoconelnomb edel iche oco ec o     NºDEACTA:8  FECHA:18Feb e o2016  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o  ORDENDELDÍA:  Comp oba a ancesdelp oyec o  Deba i cómoejecu a Py hon  DECISIONESTOMADAS:  Ejecu a Py hona a ésdelin é p e e  EjecucióndePy honconunhiloindependien epa aquenohaya iesgodequela aplicaciónsecuelgue  Usode uncionesdegene ación/lec u adesalida  OBJETIVOSACUMPLIRPARALAPRÓXIMAREUNIÓN  Lle a acabolaejecucióndePy honcon odaslasins uccionesdecididas    NºDEACTA:9  FECHA:08Ma zo2016  ASISTENTES:  Ra aelCa u la  Ca losCongos o  En iqueMa ín  ManuelMon eneg o   73  Una ezseleccionadoel ema,sellegaalmenúdelaslecciones.   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,seguidodelalis adelaslecciones.  T as selecciona una lección, y pulsa “Comenza lección”, se mues a el con enido de             dichalección.Elcon enidocons adeexplicacionesop egun as.  Sielcon enidoesunaexplicaciónsemos a ácomoenlasiguien eimagen.   Con enidodeexplicació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.Encasodese de ipo es :   P egun a ipo es   Silasp egun assonde ipocódigoo iposin axis end ánlamismaapa iencia:   P egun as ipocódigoosin 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,alade echadelcampode espues asiemp eapa ecenlosmismosbo ones. ●Resol e :Pa acomp oba la espues ain 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                ynoseac i a ándichosbo 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 aen uncióndele o p oducido.  T as acaba la lección po comple o, se mos a á una en ana elici ando el abajo y              despuéslaaplicación ol e áalMenúde emas.   Felici ación          82  C)Ob enciónycompilacióndelahe 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 á                queesc ibi la u acomple adedondeseencuen a.  T as el paso an e io , en el di ec o io desde donde se ejecu ó la ins ucción apa ece á              unaca pe a‘ a ge  ’,lacualcon iene2a chi osconlaex ensión‘.ja ’. Tu o ialesIn e ac i os0.0.1SNAPSHOT.ja  Tu o ialesIn e ac i os0.0.1SNAPSHOTja wi hdependenc ies.ja   Pa au iliza lahe amien aesnecesa ioejecu a elsegundoconlasen encia:  ja aja <nomb e>     83