scieee Science in your language
[es] (orig)

Aplicación web para facilitar la corrección de prácticas de programación con integración en campus virtual. Scipio: Sistema de Corrección Inter-pares Para códIgO

Abstract

Este Trabajo de Fin de Grado se basa en la creación de una aplicación para la corrección de practicas de programación por parte de los profesores y entre los propios alumnos (ínter-pares), así como la generación de informes de dichas correcciones para el feedback.

Read accessible full text

Aplicación web para facilitar la corrección de prácticas de programación con integración en campus virtual. Scipio: Sistema de Corrección Inter-pares Para códIgO

Author: Sánchez García, José Luis
Year: 2019
Source: https://docta.ucm.es/bitstreams/b16bed3e-1202-47f5-9c9c-117da3f8caff/download
Aplicación web pa a acili a la
co ección de p ác icas de p og amación
con in eg ación en campus i ual
Scipio: Sis ema de Co ección In e -pa es Pa a códIgO
TRABAJO FIN DE GRADO
Cu so 2018–2019
Au o
Jose Luis Sánchez Ga cía
Di ec o
Manuel F ei e Mo an
Facul ad de In o má ica
Uni e sidad Complu ense de Mad id
Aplicación web pa a acili a la
co ección de p ác icas de
p og amación con in eg ación en
campus i ual
Scipio: Sis ema de Co ección In e -pa es Pa a códIgO
T abajo de Fin de G ado en Ingenie ía So wa e
Depa amen o de Ingenie ía del So wa e e In eligencia
A i icial
Au o
Jose Luis Sánchez Ga cía
Di ec o
Manuel F ei e Mo an
Con oca o ia: Sep iemb e 2019
Cali icación: No a
Facul ad de In o má ica
Uni e sidad Complu ense de Mad id
20 de sep iemb e de 2019
Au o ización de di usión
El abajo i man e, ma iculado en el Más e en Ingenie ía en In o má-
ica de la Facul ad de In o má ica, au o iza 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 p esen e T abajo Fin de G ado:
“Scipio”, ealizado du an e el cu so académico 2018-19 bajo la di ección de
Manuel F ei e Mo án en el Depa amen o de Ingenie ía del So wa e e In e-
ligencia A i icial, y a la Biblio eca de la UCM a deposi a lo en el A chi o
Ins i ucional E-P in s Complu ense con el obje o de inc emen a la di usión,
uso e impac o del abajo en In e ne y ga an iza su p ese ación y acceso
a la go plazo.
Jose Luis Sánchez Ga cía
20 de sep iemb e de 2019

Dedica o ia
Es a abajo de in de g ado es a dedicado a odos lo que me han apoyado
en es e mundo apasionan e que es la p og amación, desde mis p ime os pasos
en un aula del ins i u o cuando aun se gua daban los a chi os en disque es,
has a hoy en día.
ii
Ag adecimien os
Es o es lo que ocu e con la gen e que
piensa que odia los o denado es. Lo que
ealmen e odia es a los maldi os
p og amado es
La y Ni en – esc i o de ciencia icción
Quie o ag adece especialmen e es e abajo a odos lo que me han apo-
yado du an e su c eación, a mi u o Manuel F ei e Mo an po su paciencia
en las u o ías cuando llegaba con la documen ación sin hace , a odos los
p o eso es que du an e la ca e a me han enseñado odo lo necesa io pa a
llega a es e momen o. y a mis pad es po apoya me cuando ome la decisión
de que e especializa me en in o má ica en ez de hace el bachille a o.
ix
4.2. Asigna u as, g upos, a eas, en íos . . . . . . . . . . . . . . . 17
4.3. Sis ema de co ección . . . . . . . . . . . . . . . . . . . . . . . 18
4.4. Co ección ín e -pa es (pee e iew) . . . . . . . . . . . . . . 19
4.5. Alcanzando los obje i os . . . . . . . . . . . . . . . . . . . . . 20
4.5.1. O1: Co ección de en egas . . . . . . . . . . . . . . . 20
4.5.2. O2: In eg ación con Campus Vi ual . . . . . . . . . . 21
4.5.3. O3: Alumnos pueden e sus co ecciones . . . . . . . 21
4.5.4. O4: Ges ión de asigna u as, a eas y en egas . . . . . 21
4.5.5. O5: Ges ión de la pla a o ma . . . . . . . . . . . . . . 22
4.5.6. O6: Re isión en e pa es de alumnos . . . . . . . . . . 22
4.5.7. O7: E aluación de e isiones así ealizados . . . . . . . 23
4.6. Plan de implemen ación . . . . . . . . . . . . . . . . . . . . . 24
4.7. Diseño de na egación . . . . . . . . . . . . . . . . . . . . . . . 27
5. Implemen ación 29
5.1. In oducción............................ 29
5.2. Desa ollo del on end con Angula 8 . . . . . . . . . . . . . 29
5.2.1. Adminis ación . . . . . . . . . . . . . . . . . . . . . . 40
5.3. A qui ec u a In e na . . . . . . . . . . . . . . . . . . . . . . . 42
5.3.1. Backend.......................... 42
5.3.2. F on end.......................... 43
5.3.3. Pe sis encia . . . . . . . . . . . . . . . . . . . . . . . . 46
6. Resul ados 49
7. Conclusiones y T abajo Fu u o 53
7.1. Conclusiones ........................... 53
7.2. Lineas u u as........................... 53
8. Conclusions and Fu u e Wo k 55
8.1. Conclusions............................ 55
8.2. Fu u e lines o wo k . . . . . . . . . . . . . . . . . . . . . . . 55
A. Documen ación de Usua io 57
A.1. Inicio de sesión y egis o de alumnos . . . . . . . . . . . . . . 57
A.2. Manual de P o eso . . . . . . . . . . . . . . . . . . . . . . . . 58
A.3. Manual de Alumno . . . . . . . . . . . . . . . . . . . . . . . . 66
A.4. Manual de co ección . . . . . . . . . . . . . . . . . . . . . . . 68
A.5. Manual de Adminis ado . . . . . . . . . . . . . . . . . . . . 71
B. Documen ación de Desa ollado 77
B.1. Añadi nue os lenguajes de p og amación . . . . . . . . . . . 77

B.2. Añadi nue as aducciones a la in e az . . . . . . . . . . . . 78
C. README 81
C.1.Scipio ............................... 81
C.2.Ins alación............................. 81
C.3.Con igu ación........................... 83
C.4. Ges ión de la aplicación . . . . . . . . . . . . . . . . . . . . . 86
C.5.P uebas .............................. 88
Bibliog a ía 89
Índice de igu as
4.1. Diag ama de Gan . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2. Diag ama de Gan (con inuación) . . . . . . . . . . . . . . . 26
4.3. Esquema de elación en e los componen es . . . . . . . . . . 27
5.1. Ejemplo en ana p incipal . . . . . . . . . . . . . . . . . . . . 31
5.2. De alle de la selección de idioma . . . . . . . . . . . . . . . . 33
5.3. Vis adellogin .......................... 34
5.4. Ejemplo en ana asigna u as . . . . . . . . . . . . . . . . . . 35
5.5. Ven anas modales de asigna u as . . . . . . . . . . . . . . . . 36
5.6. Ejemplo en ana a eas . . . . . . . . . . . . . . . . . . . . . 36
5.7. Ejemplo ges ión a eas . . . . . . . . . . . . . . . . . . . . . . 37
5.8. Ejemplo ges ión en egas . . . . . . . . . . . . . . . . . . . . . 38
5.9. Ejemplo ges ión en egas . . . . . . . . . . . . . . . . . . . . . 38
5.10. Ejemplo selección lineas . . . . . . . . . . . . . . . . . . . . . 39
5.11. Ejemplo menú comen a ios . . . . . . . . . . . . . . . . . . . 39
5.12. Ejemplo selección lineas . . . . . . . . . . . . . . . . . . . . . 39
5.13. Ejemplo selección lineas . . . . . . . . . . . . . . . . . . . . . 40
5.14. Ven ana de ges ión de usua ios . . . . . . . . . . . . . . . . . 41
5.15. Ven ana de ges ión de códigos de asigna u a . . . . . . . . . . 41
5.16. Ven ana de ges ión de cu sos . . . . . . . . . . . . . . . . . . 42
5.17. Esquema básico de la aplicación . . . . . . . . . . . . . . . . . 42
5.18. A qui ec u a de Angula . . . . . . . . . . . . . . . . . . . . . 44
5.19. Esquema E/R de la base de da os . . . . . . . . . . . . . . . . 47
xix
Índice de ablas
4.1. Relación de Obje i os y componen es . . . . . . . . . . . . . . 24
xxi

Cap´
ı ulo 1
In oducción
“Las compu ado as son como los dioses del Viejo Tes amen o; un
mon ón de eglas y sin piedad.”
— Joseph John Campbell (1904-1987)
1.1. Mo i ación
Scipio es a mo i ada po la necesidad de mejo a la comunicación en e
el alumnado y los p o eso es a la ho a de la co ección de las p ac icas de
p og amación. P opo ciona he amien as pa a acili a la co ección del có-
digo po pa e de los p o eso es, pudiendo es os indica los allos e inclui
la co ección del mismo, y pos e io men e en ia un in o me a los alumnos
implicados en dicha p ac ica pa a que es os engan cons ancia de los mismos
en su con ex o. Es deci , los alumnos pod án e la co ecciones (una ez
inalizadas), y e ec ua comen a ios sob e ellas.
Con las he amien as ac uales, mayo i a iamen e el campus i ual, hay
di icul ades pa a comunica co ecciones de p ac icas de p og amación en e
p o eso es y alumnos: ninguno puede e o comen a de o ma sencilla los
comen a ios o e o es en un iche o y linea conc e os sin pe de mucho iem-
po buscándolo de o ma manual. Tampoco p opo ciona ninguna he amien a
que pe mi a esumi en un solo documen o odos los comen a ios y co eccio-
nes de o ma sencilla y legible, si el p o eso quisie a hace es o end ía que
pe de mucho iempo seleccionando código, ademas si quisie a comen a lo
en el aula a los alumnos no pod ía cen a se en los p oblemas especí icos
de cada alumno, eniendo que queda se en los p oblemas más gene ales que
a ec en a un g upo amplio de alumnos.
Du an e mi paso po la Facul ad de In o má ica de la UCM, en la asig-
na u as que ienen un ue e componen e de p og amación ales como Fun-
damen os de la P og amación, Tecnología de la P og amación o en cu sos
supe io es como Aplicaciones Web, Es uc u a de Da os y Algo i mos o Téc-
1
2Capí ulo 1. In oducción
nicas Algo í micas en Ingenie ía del So wa e, he no ado que la comunicación
en e p o eso es y alumnos o en e los p opios alumnos a la ho a de e los
allos come idos en un código es compleja y equie e de un iempo que, de-
bido a lo ap e ado del calenda io, en gene al no es posible des ina a es a
a ea.
Po ul imo una g an mo i ación po mi pa e ue el mejo a mis conoci-
mien os y ap ende nue as me odologías, lenguajes y ecnologías ac ualmen e
en boga en los en o nos eales de las emp esas.
Con las mo i aciones an e io men e mencionadas nace Scipio, con el es-
pí i u de c ea una pla a o ma que cub a es as necesidades y mejo e ademas
de agiliza es a a ea an impo an e pa a el ap endizaje de un lenguaje de
p og amación.
1.2. Obje i os
1.2.1. Obje i os p incipales
A con inuación se de allan los obje i os que nos p oponemos cumpli .
Co ección de en egas de p ác icas de código
Los p o eso es son unos de p incipales ac o es de nues a aplicación y una
de sus uncionalidades es la de co egi las en egas hechas po los alumnos.
Po ello median e el uso de la aplicación los p o eso es pod án co egi el
código de las p ac icas en egadas de los alumnos, pudiendo ealiza comen-
a ios y co ecciones de código sob e la misma que luego median e un in o me
gene ado el alumno pod á e las mismas esumidas en un mismo documen-
o. El p o eso ambién pod á ac i a la unción de co ección ín e -pa es
desc i a en los obje i os a anzados.
In eg ación con Campus Vi ual
La in eg ación con el campus i ual pe mi e a los p o eso es una mayo
agilidad a la ho a de pode accede ápidamen e al en o no de co ección.
Po ello el p o eso pod á desca ga las p ac icas en egadas en el campus
i ual moodle (Ma in Dougiamas, 2019) y ca ga las en la aplicación de
o ma ápida y sencilla. De o ma in e na se dis ibuyen en e los equipos
(uno o a ios alumnos) median e un sis ema de código en el nomb e del
iche o, usando el iden i icado del g upo al que pe enece la en ega.
Alumnos pueden e sus co ecciones
El eedback en e p o eso es y alumnos es pa e básica de nues a aplica-
ción. Po ello os alumnos pod án e los comen a ios y co ecciones hechas
1.3. Resumen obje i os 3
po el p o eso , ademas del in o me gene ado. Con es o se c ea a un sis ema
de in e acción en e el p o eso y el alumnado, mejo ando la comunicación
en e ambos.
Capacidad po pa e de los p o eso es de ges iona las asigna u as,
a eas y en egas
Los p o eso es pod án ges iona sus asigna u as pa iendo de una asig-
na u a base común y pode adminis a los equipos, a eas y en egas de la
misma de o ma sencilla.
Capacidad po pa e de un adminis ado o adminis ado es de
ges iona la pla a o ma de mane a sencilla
El/los adminis ado es pod án ealiza a eas de man enimien o y ac ua-
lización de los elemen os que componen la pla a o ma. Sus a eas p incipales
se án man ene la base común de asigna u as y la ges ión de los pe iles de
p o eso .
1.2.2. Obje i os a anzados
Una ez alcanzados los obje i os an e io es, plan eamos ambién los si-
guien es obje i os a anzados.
Re isión en e pa es de alumnos
Los alumnos median e un sis ema alea o io pod án ealiza co ecciones
sob e las p ac icas de o os compañe os. Es o p opo ciona o a he amien a
de ap endizaje, pe mi iendo a los alumnos e el abajo de sus compañe os
y ap ende de sus acie os y e o es.
E aluación de e isiones así ealizados
Los alumnos pod án emi i su alo ación sob e el abajo de o os alum-
nos, siendo es o isible solo po el p o eso y el g upo e aluado. median e la
gene ación de un in o me en pd con los comen a ios y posibles co ecciones
ealizadas en el código.
1.3. Resumen obje i os
O1 Co ección de en egas de p ác icas de código. Diseño y discusión en la
sección 4.5.1.
O2 In eg ación con Campus Vi ual. Diseño y discusión en la sección 4.5.2
10 Capí ulo 3. Es ado de la Cues ión
es una pla a o ma publica donde cualquie a puede los p oyec os, es-
o gene a ademas de un p oblema de posibles copias en e alumnos
ademas de la p o ección de da os.
En conclusión, no se conside a que los mé odos al e na i os pa a ealiza
es a a ea sean sa is ac o ios, y po an o esul a necesa io, pa a cumpli los
obje i os, c ea una nue a aplicación.
3.2. Elección del ipo de aplicación
Pa a desa olla y pode soluciona los p oblemas iden i icados en la mo-
i ación,se ha buscado en oca hacia una solución que pe mi a un ácil uso
po pa e de los usua ios así como un man enimien o sencillo, sin comp o-
me e los obje i os ijados.
Se han enido en cuen a a ias opciones.
Aplicación de esc i o io
Aplicación web
Plugin pa a el campus i ual (moodle)
3.2.1. Aplicación de esc i o io
El desa ollo de una aplicación de esc i o io median e Ja a (James Gos-
ling y Mic osys ems, 2019), C++ (Bja ne S ous up, 2019) u o os lenguajes
de simila es ca ac e ís icas, iene en ajas como la obus ez o la apidez de
espues a, pe o ambién des en ajas como la necesidad de ins alación en el
equipo, o de desa olla o al menos p oba e siones especi icas pa a ca-
da sis ema ope a i o. En nues o caso, debido a la na u aleza de nues a
aplicación, si bien la apidez de espues a se ía bien enida, la necesidad de
ins alación indi idual en cada pues o supone una des en aja di ícil de sal-
a ; y el desa ollo mul ipla a o ma esul a ía p ohibi i o. Además, nues a
aplicación equie e de una pe sis encia de da os común a odos los usua ios,
lo cual se acili a con un se icio común alojado en un se ido .
3.2.2. Aplicación web
Una aplicación web o ece en ajas como la independencia del disposi i-
o y del sis ema ope a i o; además, cualquie mejo a solo equie e de una
ac ualización de la aplicación en el se ido pa a es a disponible pa a odos
sus usua ios.
En su con a iene el eque imien o obliga o io de dispone de una cone-
xión a in e ne , así como de ene que se compa ible con los na egado es

3.3. Pee e iew 11
más usados2. O a des en aja es que puede habe e asos debidos al iempo
que a dan las cons an es pe iciones en i y ol e al se ido , algo que no
sucede en una aplicación de esc i o io. Es o se puede minimiza con el uso
de cachés y écnicas de ca ga asínc ona (po ejemplo, AJAX).
3.2.3. Plugin pa a Moodle
El desa ollo de un plugin pa a Moodle (Ma in Dougiamas, 2019) o ece
en ajas a la ho a de la in eg ación con el campus i ual, acili ando a los
p o eso es y alumnos el uso de la he amien a. Po o o lado, la ges ión del
Campus Vi ual es á cen alizada en la UCM, y se ía adminis a i amen e
muy di ícil consegui acep ación de un plugin a es a escala. Po an o, se
desis e de ealiza una in eg ación a es e ni el.
3.2.4. Conclusión
Basándonos en lo an e io men e expues o, se ha omado la decisión de
ealiza nues o p oyec o median e una aplicación web. Es o nos o ece mu-
chas en ajas, incluyendo, ya que no ha emos un plugin Moodle, una g an
libe ad pa a elegi cómo desa olla la aplicación en é minos de ecnologías
y lib e ías exis en es.
3.3. Pee e iew
La e isión ín e -pa es o Pee e iew (Wind y Jensen, 2017) en el ámbi o
del so wa e consis e en, según (Wikipedia con ibu o s, 2019),
La e isión de so wa e en la cual un p oduc o de abajo (docu-
men o, código u o o) es examinado po su au o y uno o más
colegas, pa a e alua su con enido écnico y calidad
En nues o p oyec o la e isión ín e -pa es a a es a ep esen ada en la
co ección de las p ac icas de unos alumnos po pa e de o os. Es e es un
mé odo que omen a el ap endizaje po medio de e en e a un mismo p o-
blema dis in as soluciones apo adas po o os que se encuen an al mismo
ni el de conocimien os. El uso de es e mé odo en p incipio es me amen e o -
ma i o po lo que los alumnos no cali ica an el abajo de sus compañe os de
o ma di ec a, aunque los p o eso es pueden o o ga le alo si lo conside an
opo uno y de la o ma que conside en mejo .
2Algo que, con ecnologías como HTML 5 y jque y, es ela i amen e sencillo y ápido
Cap´
ı ulo 4
Diseño
“The G id. A digi al on ie . I ied o pic u e clus e s o
in o ma ion as hey mo ed h ough he compu e . Wha did hey
look like? Ships, mo o cycles? We e he ci cui s like eeways? I
kep d eaming o a wo ld I hough I’d ne e see. And hen, one
day I go in...”
— Ke in Flynn, TRON
Pa a el diseño del p oyec o se decidió usa una aplicación web. Es o pe -
mi e c ea una aplicación modula que no es necesa io ins ala ni ac ualiza
en cada pues o, con al a usabilidad y con un manejo de da os cen alizado.
Du an e la ase de concepción se explo a on a ias posibles ecnologías, a-
les como Sp ing MVC (The Sp ing Team, 2019), Ruby (Rails Con ibu o s,
2019) amewo ks an o pa a el on end como el backend. También se explo-
a on soluciones sepa adas como Reac (Reac con ibu o s, 2019) o Angula
(Angula Con ibu o s, 2019b) pa a el on end y Exp ess (TJ Holowaychuk,
2019) o Sails (Mike McNeil, 2019) pa a el backend. Pa a la pe sis encia de
la in o mación se es udia on las dos amas p incipales de bases de da os,
sql y nosql. Pa a sql se conside a on di e en es ecnologías ales como pos -
g eSQL (G oup, 2019) o MySQL (MySQL AB y O acle Co po a ion, 2019).
En cuan o a las bases de da os nosql se conside a on Cassand a (Lakshman
y Malik, 2019) y MongoDB (MongoDB, Inc., 2019).
A con inuación explica emos mas en de alle las ecnologías es udiadas
con sus en ajas y des en ajas.
Tecnologías mix as
Las ecnologías mix as conside adas pa a p opo ciona an o el on end
como el backend a la ez han sido Sp ing ó Ruby. Usa una única ecnología
pa a on end y backend es una g an en aja en simplicidad, pe o a su ez
es o ambién limi a su u ilidad pa a cie as pa es de nues a aplicación. Po
13
14 Capí ulo 4. Diseño
ejemplo, el co ec o de código, si a a se ealmen e in e ac i o, iene que
ejecu a se en el on end en o ma de Ja aSc ip .
Ruby Es una ecnología popula pa a la web, con simili udes espec o a
Pe l y Py hon, y dispone de un en o no pa a desa ollo web llamado Rails
(Hansson, 2003). Es a ecnología ue desca ada po el lenguaje usado dado
que no se iene conocimien o del mismo y ap ende un lenguaje comple a-
men e nue o cos a ía un iempo del que no se dispone.
Sp ing MVC po el con a io es a basado en Ja a, que es uno de los
lenguajes más popula es del momen o. Se desca o su uso aun siendo una
ecnología ya conocida en la ca e a, ya que se p e e ía usa un único lenguaje
de p og amación pa a odo el p oyec o (Ja aSc ip ), así como explo a nue as
ecnologías sob e es e lenguaje.
F on end
El on end es la pa e isible de la web, con la que in e ac úan los usua-
ios a a és de sus na egado es. Pa a el on end se pusie on sob e la mesa
dos ecnologías sob e NodeJS muy popula es hoy en día: Reac (Reac con i-
bu o s, 2019) y Angula 1. Ambas son muy simila es y la ez muy di e en es,
la p incipal di e encia es que mien as Reac es solo una lib e ía de Ja aS-
c ip , Angula es un amewo k comple o. Ambos se basan en Ja aSc ip ,
pe o Angula a un paso mas allá y usa TypeSc ip (Mic oso , 2019) que
es un supe conjun o de Ja aSc ip que esencialmen e añade ipos es á icos
y obje os basados en clases. Ambos son g andes ecnologías y con una po-
pula idad simila , y ambas hab ían sido álidas pa a nues as necesidades.
Nos hemos decan ado po el uso de Angula , ya que po mo i os labo ales es
una ecnología ya conocida y no equie e de un p oceso de ap endizaje an
ex enso como Reac .
Backend
El backend es la pa e del sis ema que da sopo e al on end, con iene
la lógica de aplicación, y accede y ges iona los da os de la aplicación y su
pe sis encia. Pa a el desa ollo del backend se p opuso el uso de Sails Lozano
(2014), un amewo k basado a su ez en el amewo k Exp ess, al que añade
a ias capas de abs acción pa a hace un desa ollo más ácil. En e o as
cosas posee un ORM2, mé odos pa a c ea APIs REST ul3y sopo e pa a
maneja pe iciones en iempo eal g acias a Socke .io (Guille mo Rauch,
1Ve es adís icas en lambda es (Nikhil, 2019)
2Técnica de p og amación pa a con e i da os en e el sis ema de ipos u ilizado en
un lenguaje de p og amación o ien ado a obje os y la u ilización de una base de da os
elacional como mo o de pe sis encia.Ve ORM (Wikipedia, 2019a).
3La ans e encia de es ado ep esen acional o REST es un es ilo de a qui ec u a so -
wa e pa a sis emas hipe media dis ibuidos. Ve (Wikipedia, 2019c).
15
2019) 4. Aunque Sails o ece cie as en ajas a la ho a del desa ollo ,se
decidió no usa lo dado que las en ajas que nos pude p opo ciona no supe a
la necesidad que c ea ía de ap ende a maneja una ecnología nue a. Po
las azones an e io es se ha decidió usa el amewo k Exp ess di ec amen e,
dado que se conoce ya su manejo po su uso du an e la ca e a en dis in as
asigna u as.
Elección del modelo y almacén de da os
En la elección de un sis ema de pe sis encia de la in o mación se ba ajó
almacena los da os an o en una base de da os SQL como en un almacén
noSQL, y den o de cada una a ias opciones de implemen ación de cada
una.
noSQL
Los almacenes de da os noSQL di ie en de las bases de da os adicio-
nales en di e en es aspec os impo an es, como que los da os almacenados
no equie en es uc u as ijas o no ga an iza comple amen e las p opieda-
des ACID (a omicidad, consis encia, independencia y du abilidad); o que no
usan SQL pa a consul as. Pa a nues a aplicación se han es udiado dos al-
macenes de da os noSql, Cassand a y MongoDB. Ambas son simila es sus
p incipales di e encias son que Cassand a se basa en un modelo cla e/ alo y
MongoDB es a o ien ada a documen os de esquema lib e usando un o ma o
p opio de documen o llamado BSON, que es una e sión más e icien e (pe o
menos legible) de JSON.
En é minos gene ales se echazo es e ipo de base de da os dado que
su mayo es en ajas que son, la agilidad, la escalabilidad y la capacidad de
p ocesa g andes can idades de da os, no supe an las en ajas en cuan o a
la consis encia y po encia del lenguaje sql que o ecen las bases de da os sql
clásicas, que en nues o caso pa icula son mas necesa ias po el a o a la
in o mación que necesi amos da .
SQL
Las bases de da os elacionales que se han es udiado pa a implemen a la
pe sis encia son Pos g eSQL y MySQL Communi y Se e , po ene ambas
una g an base ins alada y se de código abie o5. Pa a nues o p opósi os
ambas son alidas. Se he decidido usa MySQL dado que ya es conocida con
an e io idad po asigna u as de la ca e a y expe iencia pe sonal.
4Pe mi e ecibi pe iciones de o ma asínc ona del se ido , sin que és e enga que
espe a a ecibi una pe ición an es de pode in o ma de nue os e en os.
5Técnicamen e, MySQL, as su adquisición po O acle, no es 100 % código abie o
(aunque el Communi y Se e sí lo es). No obs an e, se ía equi alen e usa Ma iaDB, que
es una e sión que sí es comple amen e abie a y man iene muy buena compa ibilidad

16 Capí ulo 4. Diseño
Tecnologías elegidas
T as explo a las posibles soluciones ci adas an e io men e, se ha decidido
usa :
F on end Angula en su ul ima e sión es able (8.2.x)
Backend Exp ess sob e NodeJS
Pe sis encia MySQL ó Ma iaDB
Diseño del on end con Angula
Angula es un amewo k pa a aplicaciones web desa ollado en TypeS-
c ip , de código abie o, man enido po Google, que se u iliza pa a c ea y
man ene aplicaciones web de una sola página. Su obje i o es aumen a las
aplicaciones basadas en na egado con capacidad de Modelo Vis a Con o-
lado (MVC).
La biblio eca lee el HTML que con iene a ibu os de las e ique as pe -
sonalizadas adicionales, en onces obedece a las di ec i as de los a ibu os
pe sonalizados, y une las piezas de en ada o salida de la página a un mo-
delo ep esen ado po las a iables es ánda de Ja aSc ip (B endan Eich,
2019).
Angula se basa en componen es, cuyas p opiedades son usadas pa a hace
el una ligadu a (binding) de da os en e los se icios expues os po el backend
y la in e az. En dichas clases enemos an o p opiedades ( a iables) como
mé odos ( unciones a llama ).
Diseño del backend con Exp essJS
Exp ess es una in aes uc u a de aplicaciones web NodeJS (Ryan Dahl,
2019) mínima y lexible que p opo ciona un conjun o sólido de ca ac e ís-
icas pa a las aplicaciones web y mó iles. Es e se puede expandi median e
componen es que pe mi en ealiza múl iples unciones. Con es a base nos
p opo ciona una pla a o ma en la que basa nues o se icio que alimen a a
el on end de Exp ess así como ecibi da os del mismo pa a ealiza las
acciones necesa ias.
Pe sis encia de la in o mación
La pe sis encia de la in o mación se ealiza a median e el uso de una
base de da os con la ecnología MySQL. La in eg ación con la aplicación
se ealiza a median e el uso de la lib e ía de NodeJS llamada Knex (Knex
con ibu o s, 2019), la cual nos pe mi e in eg a en el código la c eación del
4.1. Usua ios 17
esquema de ablas y las pe iciones a la BBDD, y p opo cionando múl iples
he amien as que acili an el uso de la pe sis encia en la aplicación.
4.1. Usua ios
Los usua ios de nues a aplicación es án di ididos en es ipos.
Adminis ado es Su p incipal unción es la del man enimien o de la apli-
cación, Pueden c ea asigna u as así como da de al a a los p o eso es
en la aplicación.
P o eso es Pueden ges iona las asigna u as, jun o con sus a eas y sus
en egas.
Alumnos Pueden e las asigna u as, a eas y en egas a los que es én
inculados median e un equipo.
Los p o eso es pueden ene a ias asigna u as, y una misma asigna u a
ene a ios p o eso es. Es os incula án a los alumnos a los equipos de la
asigna u a. Idealmen e, es os da os p o end ían de una in eg ación con el
sis ema de ges ión académica donde se ins ale Scipio; no obs an e, en el
diseño inicial, hemos conside ado es a in eg ación como no-p io i a ia.
4.2. Asigna u as, g upos, a eas, en íos
Jun o con los usua ios de dis in o ipo, las asigna u as, a eas yen íos
cons i uyen el núcleo p incipal de la aplicación. Es o comp ende la ges ión
de es os es elemen os, incluyendo an o su c eación y modi icación como
su eliminación. la implemen ación de las asigna u as es á di idida en dos
pa es:
1. La asigna u a en sí, que comp ende su código de asigna u a, su ab e-
ia u a, nomb e, y o as p opiedades, especi icadas po los adminis a-
do es del se icio. Po ejemplo, pa a la asigna u a Es uc u a de Da os
y Algo i mos, la ab e ia u a pod ía se EDA y el código GEA 803210.
2. Los g upos de la asigna u a especí icos que c ea y ges iona cada p o e-
so : el cu so al que pe enece, la clase/g upo al que a a es a asignada,
e cé e a. Po ejemplo, un p o eso puede se esponsable del g upo A2
de la asigna u a an e io .
Una ez c eada una asigna u a se le pueden añadi a eas con un nomb e,
una desc ipción y una echa de en ega. Po de ec o se c ean desac i adas y
el p o eso puede ac i a las y desac i a las a su disc eción. Cuando el p o e-
so conside e, puede inicia la co ección de una a ea subiendo al se ido
18 Capí ulo 4. Diseño
un iche o con la es uc u a dada po la pla a o ma moodle pa a a eas, en
su e sión 3.4 ( iche o .zip con ca pe as, cada una con el nomb e del alumno
y equipo que la en ega; y en el in e io de es as un .zip con la en ega).
Pa a pode asigna la en ega a un equipo, el iche o zip de la en ega iene
que con ene en el nomb e el id del equipo al que pe enece. Una ez subido
es e iche o, se gene an de o ma au omá ica los en íos y sus co ecciones
pe inen es; y el p o eso puede ya ac i a la unción de e isión ín e -pa es.
Los en íos son una colección de equipos y sus en egas. En cada uno se en-
d á acceso a la in o mación del equipo al que pe enece y la in o mación
del equipo de co ección ín e -pa es, así como las co ecciones asociadas. El
p o eso siemp e end á una co ección, y en caso de es a ac i ada la co-
ección ín e -pa es ambién se pod án e . los p o eso es pod án isualiza
odas las co ecciones, pe o solo pod án modi ica las p opias, mien as que
los alumnos solamen e pod án e aquellas en que es én implicados, y mo-
di ica aquellas en las que sean co ec o es ín e -pa es, en caso de que es a
opción sea ac i ada po el p o eso .
Cada co ección puede ene es es ados.
Nue a Si no se ha ocado desde su c eación
En p oceso Si ya se ha accedido al código
Finalizada Una ez se ha e minado de co egi y se ha gene ado el in o me
de co ección
Si el es ado es en p oceso o inalizado se mues a un esumen de la co ec-
ción con el o al de iche os comen ados, y el núme o o al de comen a ios;
y si se desea, apa ece án es as mismas ci as desglosadas po iche o. Tam-
bién dependiendo del es ado y el usua io, se mos a an las dis in as acciones
posibles:
Edi a co ección Ve el código de las co ecciones, con la posibilidad de
modi ica las
Ve co ección Ve el código y las co ecciones ya ealizadas
Finaliza co ección Da po inalizada la co ección, y gene a el PDF con
el in o me de co ección
Ve PDF Solo accesible con la co ección inalizada. De uel e un PDF con
la co ección pa a imp imi o subi , como eedback, al Campus Vi ual.
4.3. Sis ema de co ección
Pa a la co ección del código asociado a una p ac ica, se ha elegido como
base la lib e ía CodeMi o (CodeMi o Volun ee s, 2019). Es a lib e ía nos
4.4. Co ección ín e -pa es (pee e iew) 19
pe mi e mos a iche os de código de una o ma en que se pueden di e en-
cia ácilmen e las di e en es pa es del mismo, ya que sopo a ealzado de
sin axis median e colo es y uen es (syn ax highligh ing). También pe mi e,
en e o as cosas, la ges ión de emas (po ejemplo, pa a elegi en e cla o
y oscu o); o la posibilidad de pe mi i modi ica el con enido, o accede en
modo solo lec u a. Sob e es a lib e ía se á necesa io añadi unciones pa a
ges iona comen a ios, ya que no encon amos ninguna lib e ía abie a que
u iese oda la uncionalidad necesa ia.
Jun o con es e iso de código, se implemen a á un á bol de iche os
que nos pe mi e selecciona sob e los iche os disponibles de una co ección
aquel que que emos isualiza a la ho a de gene a comen a ios o co ec-
ciones6.Pa a acili a el desa ollo de la uncionalidad ela i a a la ges ión
de comen a ios sob e CodeMi o , nos decan amos po usa jQue y (jQue y
Founda ion, 2019).
C eación, modi icación y eliminación de comen a ios
Pa a diseña es a pa e lo p ime o que se hizo ue es udia el código que
gene a de o ma au omá ica la lib e ía CodeMi o , con es o pudimos sabe
que e ique as de h ml nos e an ú iles a la ho a de inse a nues as unciones.
Pa a pode ealiza es as unciones se ha decidió usa los núme os de linea que
se mues an en el iso , usando un sis ema de selección única o mul ilinea,
con una selección ya ealizada o un comen a io ya exis en e y median e el
bo ón de echo del a ón se ab i á un menú con ex ual(Con ex Menu) que
nos da á las di e en es opciones disponibles. Pa a la c eación o edición de un
comen a io se ha op ado po el uso de una en ana modal que nos pe mi a
inse a o modi ica los elemen os de un comen a io. También se pe mi i á
el bo ado de comen a ios, median e el menú con ex ual o en la en ana de
edición.
4.4. Co ección ín e -pa es (pee e iew)
La co ección ín e -pa es o pee e iew consis e p incipalmen e en que
un alumno o g upo de alumnos (equipo) co ija la en ega de o o alumno
o equipo. Es e ipo de co ección a o ece en e o as cosas la mejo a de la
comp ensión del código, la capacidad de pensa , al e di e en es soluciones
a un mismo p oblema o la capacidad de au oc í ica al compa a su código
con el de o os compañe os. Es e sis ema de co ección es comple amen e
opcional, el p o eso puede ac i a lo y pa a lo a su disc eción. Cuando es
ac i ado el sis ema gene a de o ma alea o ia una combinación alea o ia de
6Pa a ealiza co ecciones se usa la misma base que un comen a io pe o modi icando
el código seleccionado, po lo que pa a ab e ia solo usa emos la palab a comen a ios pa a
e e i nos a las dos opciones
26 Capí ulo 4. Diseño
Figu a 4.2: Diag ama de Gan (con inuación)

4.7. Diseño de na egación 27
4.7. Diseño de na egación
Diag ama de elación en e los componen es de nues a aplicación.
Figu a 4.3: Esquema de elación en e los componen es
Cap´
ı ulo 5
Implemen ación
5.1. In oducción
Las cues iones básicas elacionadas con la implemen ación como el sis e-
ma ope a i o o el IDE de desa ollo se han omado las decisiones basándose
en la ecnologías que se se án usadas du an e el desa ollo y pos e io des-
pliegue de la aplicación. En elación al sis ema ope a i o se ha usado Ubun u
en su e sion 18.04 o supe io dado que la aplicación se a desplegada en un
sis ema igual o simila basado en Linux con a qui ec u a Debian. En cuan-
o al IDE de desa ollo se ha usado WebS o m que es a basado en In elliJ
desa ollado po Je B ains, Es e p opo ciona odas las he amien as pa a el
desa ollo en Angula ( ypeSc ip ) y ja asc ip . También se han usado o as
aplicaciones como MySQL Wo kbench pa a el desa ollo y man enimien o
de la BBDD. Tan o el IDE como el ges o de la BBDD se han elegido po
ajus a se de la mejo mane a posible a las necesidades del p oyec o y co-
nocimien os de los miemb os del equipo, pudiendo usa se o os sin mayo
p oblema.
5.2. Desa ollo del on end con Angula 8
Pa a el desa ollo del on end como se ha indicado an e io men e se ha
decidido usa el amewo k Angula en su e sion mas ecien e. Al a a se
de una ecnología nue a pa a los alumnos implicados en es e p oyec o ha
eque ido de un ap endizaje con inuo que se no a en las mejo as con inuas
sob e el es a pa e del p oyec o según se p o undizaba en el amewo k y
a anzaba el p oyec o. En p ime luga se c eo un p oyec o básico median e
el uso del clien e p opio de Angula p opo cionado al ins ala Angula en
el sis ema,cuyo acceso median e linea de comandos y Angula CLI (Angula
Con ibu o s, 2019a), p opo ciona ademas de la c eación del p oyec o las
29
30 Capí ulo 5. Implemen ación
he amien as pa a la c eación de elemen os adicionales p opios del ame-
wo k (componen es, se icios, e c). El p oyec o inicial es a compues o po
los iche os y di ec o ios básicos de odo p oyec o de angula , en e los que
podemos encon a .
angula .json La con igu ación básica del p oyec o.
package.json In o mación de los paque es npm ins alados.
scon ig.json Fiche o donde es án con igu ado el compilado de ypeSc ip ,
básico pa a el desa ollo en angula .
s c Es el di ec o io mas impo an e de odos, con iene oda nues a web, o-
dos los módulos, componen es se icios y demás con enidos necesa ios.
Fiche os impo an es den o de es e di ec o io son po ejemplo:
index.h ml Fiche o sob e el que se ca ga an odos los componen es
de la web. Angula se basa en SPA(single-page applica ion), po
que odos los módulos se ca ga an sob e es e iche o en base a las
pe iciones ecibidas.
asse s Di ec o io p incipal de ecu sos pa a nues a web, imágenes,
iconos, iche o de idioma,e c.
app Con iene odos los componen es, módulos, se icios, e c, de nues-
a web.
Los desc i o an e io men e son los componen es indispensables pa a un p o-
yec o angula básico, pos e io men e se añaden mas iche os y di ec o ios
según a anza el p oyec o y su complejidad aumen a, ales como módulos
pa a el en u amien o, con igu ación del ges o del e siones, con igu ación
del ges o de p ocesos (pm2) o el p opio di ec o io donde se encuen a el
se ido de backend. Todos ellos se e án a pos e io i.
Angula dispone de sus p opias lib e ías pa a ealiza muchas de las un-
cionalidades (Nucleo de angula ) po ejemplo Ma e ial.También hay dispo-
nibles lib e ías ex e nas no malmen e denominadas po las le as "ngx", po
ejemplo, ngx- ansla e, añaden nue as uncionalidades el amewo k o me-
jo an/sus i uyen las del núcleo de angula . En nues o p oyec o usamos de
ambos ipos dependiendo de las necesidades que se han enido du an e el
desa ollo. Cabe ema ca que las lib e ías ex e nas muchas eces suelen
e mina o mando pa e del núcleo de angula en e siones pos e io es del
amewo k lo que demues a el g an comp omiso de la comunidad y de sus
c eado es.
En los apa ados siguien es habla emos en p o undidad de la implemen-
ación de las di e en es pa es de la web, Habla emos en e mino de compo-
nen es (elemen os básicos de Angula ) como uncionalidades, siendo así que
5.2. Desa ollo del on end con Angula 8 31
un componen e con iene una uncionalidad de la web, po ejemplo el compo-
nen e .Assignmen sçon iene las uncionales que se pueden ealiza sob e la/s
a ea/s de una asigna u a.
Es ilo g a ico
Pa a la implemen ación g a ica de la web se ha usado la lib e ía g a ica
de angula .Angula Ma e ial"(Angula Con ibu o s, 2019c). Es a lib e ía
nos pe mi e man ene un es ilo y diseño cons an e en la web ademas que
p opo ciona múl iples he amien as pa a ene un diseño esponsi e y ade-
cuado.
Ademas Angula Ma e ial nos p o ee de elemen os g á icos ya c eados
que nos p opo cional una g an can idad uncionalidad con una pequeña con-
igu ación, ademas me man ene una cohe encia en e ellos.
A pa e de la lib e ía mencionada an e io men e enemos una se ie de
hojas de es ilos basadas en el lenguaje Sass (Hamp on Ca lin y Anne, 2019).
Es as es án di ididas en, una hoja p incipal "s yles.scss.en la aíz del p oyec o
que a ec a a oda la web. Ademas cada componen e end á su p opia hoja de
es ilo pa a aquello que solo le a ec e a el. En la hoja p incipal se encuen a
odo aquello que a ec a al conjun o comple o de la web, en e es os elemen os
es a la hoja de es ilo que equie e Angula Ma e ial pa a unciona , y la
pale a de colo es de la web. En el caso de nues o p oyec o se ha op ado po
dis ibui los es ilos p incipales en dis in as hojas pa a mejo a la legibilidad
y la modula idad a la ho a de pode modi ica y mejo a en el u u o. Las
di e en es hojas que se han c eado es án di ididas po el elemen o al que
hacen e e encia, ales como el pie de pagina o el menú p incipal.
Figu a 5.1: Ejemplo en ana p incipal

32 Capí ulo 5. Implemen ación
Colo
Los colo es en nues a web es án de inidos en dos si ios el p ime o es la
hoja que de ine el es ilo pa a la lib e ía Angula Ma e ial, el o o es la pale a
de colo es_pale e.scss" que nos p opo ciona median e un mapa el colo
p incipal ademas de las dis in as sa u aciones y con as es co espondien es
y lo mismo pa a nues o colo secunda io. Es e mapa es accesible median e el
comando map_ge (mapa, alo ) que nos de uel e el código de colo a usa .
En elación a los colo es se ha decidido usa los mismos colo es que se usan
en la web de la acul ad pa a man ene un es ilo común con ella.
Rou ing (En u ado)
El sis ema de en u ado ( ou ing) de la web pe mi e in e conec a los
dis in os componen es en e si pe mi iendo en e o as cosas el paso de pa á-
me os en e componen es. Pa a nues o p oyec o se ha decidido po ene un
sis ema múl iple con dos en u ado es. El p incipal que se enca ga del acceso
a los componen es que no equie en de acceso de usua io. Es e a su ez enlaza
con el en u ado de pa e segu a median e un acceso po login de usua io.
Al se independien es uno del o o nos pe mi e un mayo con ol sob e la
segu idad del si io. Es e sis ema es a implemen ado median e dos módulos,
el p incipal si uado en la aíz del p oyec o y el o o en di ec o io Secu e. Su
es uc u a es muy sencilla, iene un ec o de u as que se componen de una
cadena de ex o que indica los pa áme os de u l y el componen e al que ha
de apun a la u a, es e ec o a su ez se usa como pa áme o a la ho a
impo a el modulo Rou e Module" p opo cionado po angula , el modulo
e mina con la expo ación del mismo pa a pode se usado. Pa a mas in o -
mación sob e el en u ado en angula se puede consul a la documen ación
o icial Angula Con ibu o s (2019d).
In e nacionalización (i18n)
La In e nacionalización de la web se ha ealizado median e la lib e ía ex-
e na de angula ngx- ansla e Angula Con ibu o s (2019e). Es a lib e ía
nos pe mi e que median e unos iche os json o mados po pa ejas de cla e
(Nomb e de la a iable) y alo con la aducción p e endida ( odos han e-
ne los mismos nomb es de a iable pa a la misma aducción) y median e
unos bo ones si uados en la cabece a de la pagina cambia el idioma de la
web en cualquie momen o sin necesidad de eca ga la web.
Pa a su uso en las plan illas de los componen es se usa el código siguien e.
{{’ a iable’| ansla e}}
A es e código se le pueden pasa a iables median e un obje o as la
llamada a ansla e.
{{’ a iable’| ansla e:({’ a 1’: alue})}}
5.2. Desa ollo del on end con Angula 8 33
Los iche os han de ene el código del idioma al que pe enecen las
aducciones de su in e io , es os iche os se encuen an en el di ec o io
asse si18n. El modulo se ha de con igu a en el modulo p incipal de nues a
aplicación app.module. s pa a así pode usado en odo el p oyec o. En e
o as posibilidades nos pe mi e selecciona el idioma po de ec o de nues a
web que en nues o caso se ha indicado a Cas ellano (es).
Figu a 5.2: De alle de la selección de idioma
Es a con igu ación nos pe mi e en el u u o añadi mas idiomas sin di i-
cul ad, solo hay que añadi el iche o json con las aducciones de las a iables
y añadi el co espondien e bo ón en la cabece a.
F on end público
Como indica el i ulo en es a sección a a emos la implemen ación de
pa e publica de nues o p oyec o. Todo lo incluido en es a pa e de la web
es de dominio publico y no equie e de acceso. Los componen es del on end
publico es a conec ados median e el en u ado p incipal es e conec a a los
di e en es componen es públicos y la pa e p i ada a a és del componen e
Login.
Login
La unción p incipal componen e de Login Es pe mi i el acceso median-
e usua io y con aseña a los componen es segu os de la aplicación. O a
unción es c ea nue os alumnos en la aplicación, es os se da án de al a y
pos e io men e los p o eso es pod án asigna los a equipos den o de la asig-
na u as. La c eación de un nue o alumno se ealiza a median e una en ana
modal, los alumnos in oduci án sus da os (nomb e, apellidos, email, usua-
34 Capí ulo 5. Implemen ación
io y con aseña). Como conside ación el nomb e de usua io no puede es a
duplicado ni el co eo es a egis ado con an e io idad.
Figu a 5.3: Vis a del login
Legal no ice
Es e componen e mos a á las conside aciones legales con espec o a
nues a web su isualización se a median e una en ana modal.
Con ibu o s
Es e componen e mos a á la in o mación sob e los desa ollado es de la
aplicación ademas de las ecnologías usadas su isualización se a median e
una en ana modal.
help
Es e componen e mos a á la ayuda de la web si el usua io no es a logeado
mos a a la ayuda con espec o a la c eación de un usua io y el login. En el
caso de es a logeado mos a a la ayuda especi ica pa a el ipo de usua io.
F on end p i ado
Como indica el i ulo en es a sección a a emos la implemen ación de
pa e p i ada de nues o p oyec o. Todo lo incluido en es a pa e de la web
equie e de acceso median e logueo. La pa e p i ada del on end en p i-
me luga dispone del en u ado de la pa e p i ada enca gado de ges iona
los dis in os enlaces en e componen es, ambién dispone del se icio que
ges iona las pe iciones al se ido backend. También iene el componen e
p incipal que acoge a los demás componen es y p opo ciona las u ilidades
básicas ales con la in e nacionalización o la is a del usua io. Disponemos
de una se ie de componen es que ealizan las uncionalidades asociadas a
la pa e segu a de la aplicación. Todas los componen es a excepción de los
5.2. Desa ollo del on end con Angula 8 35
dedicados al man enimien o de la aplicación que solo son accesibles con un
usua io adminis ado ienen dos o mas de inidas po el ipo de usua io.
TEACHER P o eso es
STUDENT Alumnos
Subjec s
Es e componen e con iene la isualización y ges ión ela i a a las asigna-
u as y los equipos que las o man. La is a es a di idida en p ime a ins ancia
po el cu so al que pe enecen las asigna u as en o den descendien e (p ime-
o la mas ac ual), den o de cada pes aña se ep esen an las asigna u as.
Las asigna u as en el caso de los alumnos mos a an la in o mación de los
Figu a 5.4: Ejemplo en ana asigna u as
p o eso es asociados a la asigna u a y la del g upo al que pe enece.
Las asigna u as en el caso de los p o eso es mos a a la in o mación de
los p o eso es asociados y una lis a desplegable con los equipos asociados a
la asigna u a. También dispone de las opciones ges ión de los g upos y las
asigna u as.
Ges ión de equipos Edi a equipo Pe mi e edi a el equipo, añadi y
qui a alumnos del mismo
Elimina equipo Elimina el equipo de la asigna u a y libe a a los
miemb os pa a pode se asignados a o os equipos.
Ges ión de asigna u as Edi a asigna u a Pe mi e edi a asigna u a,
añadi y qui a p o eso es, ademas de cambia el nomb e, pe iodo
y demás da os.
Añadi equipo Pe mi e añadi un equipo a la asigna u a.
Pa a asigna u a Desac i a la isualización de una asigna u a pa a
los alumnos.
42 Capí ulo 5. Implemen ación
asigna u as, es a se ha implemen ado usando una abla que mues a los
cu sos disponibles y su es ado. El es ado se puede modi ica median e un
checkbox si uado en cada ila, adicionalmen e exis e un bo ón que pe mi e
modi ica el cu so. En la pa e in e io de la abla exis e un bo ón que pe mi e
añadi un nue o cu so a la aplicación que po de ec o no es a á ac i ado.
Figu a 5.16: Ven ana de ges ión de cu sos
5.3. A qui ec u a In e na
La aplicación iene dos pa es di e enciadas un se ido backend basado
en NodeJS con exp ess y un on end basado en la a qui ec u a de Angula
en su e sion mas ecien e (ac ualmen e 8).En elación a la pe sis encia de
la in o mación se ha op ado po usa una base de da os basa en MySQL.
Figu a 5.17: Esquema básico de la aplicación
5.3.1. Backend
La a qui ec u a in e na del backend es a basada en un se ido nodeJS
con exp ess, es o nos pe mi e c ea la es uc u a básica pa a ecibi la pe i-
ciones del on end y esponde a las mismas. Mas en p o undidad enemos
a ias pa es di e enciadas.
En u ado es Reciben la pe iciones del del on end y las de i an al con-
olado co espondien e dependiendo de la u l ecibida y mandan de
uel a la espues a. Disponemos de dos, uno pa a la pe iciones que no

5.3. A qui ec u a In e na 43
equie en au en icación (publicas) y o o pa a aquellas que equie en
segu idad (es a au en icado) pa a el acceso a la in o mación.
Con olado es Realizan las unciones p incipales del se ido , eciben los
da os p o enien es del en u ado , ealizan los p ocesos necesa ios y
de uel en la espues a pa a que sea en idada al on end.Es os es án
di ididos en unción de las p incipales unciones del la aplicación, de
es a o ma se mejo a la legibilidad del código y la escalabilidad de la
aplicación.
Ges o de la BBDD Realiza las unciones espec o a la pe sis encia de
da os. Sus p incipales unciones son.
Conec a la BBDD con el se ido .
La gene ación de las ablas así como de los da os básicos pa a el un-
cionamien o de la aplicación.
P o ee a los con olado es de las pe iciones que necesi en pa a a a
con la BBDD.
En el backend ambién es án los di ec o ios donde se han de gua da los
iche os p o enien es de los en íos asociados las las a eas, así como las imá-
genes de los usua ios. También disponemos de un sis ema de logs basado
en Wins on (Cha lie Robbins, 2019) que nos pe mi e man ene un egis o
sob e las acciones y e o es que se p oducen en el backend.
5.3.2. F on end
La a qui ec u a del on end es a ma cada po la de Angula (Con i-
bu o s, 2019), Es a es a basada en una se ie de módulos, componen es y
se icios, a los que se puede ag ega módulos pa a el en u ado de la web
( ou ing), así como o as API’s ex e nas.
Nues a aplicación dispone de una se ie de , se icios y componen es
gene ales que p opo cionan uncionalidades básicas a la aplicación en gene al.
no i ica ions se ice Pe mi e lanza no i icaciones median e el uso de Toas
(Sco Coope , 2019). Las no i icaciones son aducidas al idioma ac-
ual de la aplicación.
lenguage module Modulo de con igu ación pa a la in e nacionalización de
la web.
globals Con iene la decla ación de una se ie de a iables básica de la apli-
cación.
app- ou ing module En u ado p incipal de la aplicación
44 Capí ulo 5. Implemen ación
Figu a 5.18: A qui ec u a de Angula
app componen iche os s, h ml y css enca gados de la is a básica inicial
de la aplicación.
angula -ma e ial module Con igu ación inicial del modulo ma e ial pa a
su implemen ación en la web.
app module Con igu ación inicial de los módulos,enca gado de impo a
los módulos, se icios y componen es, de es e modulo he edan los de-
más módulos las impo aciones de lib e ías básicas.
A pa e de los elemen os básicos desc i os con an e io idad la aplicación es a
di ida en dos pa es di e enciadas.
Public Pa e publica de la aplicación que no equie e de au en icación, Pa-
gina p incipal, login, ayuda,e c. A con inuación lis amos los módulos,
componen es y se icios de los que es a compues o.
Login Componen e del login de usua io
Singup Ven ana modal que pe mi e la c eación de un usua io.
help Ayuda de la aplicación con end á dis in os ex os dependiendo
de es ado de la web y el usua io logeado.
legalNo ice In o mación legal de la aplicación.
con ibu o s In o mación de los c eado es de la web y ecnologías
usadas.
secu e La pa e p i ada, solo se puede accede median e un logeo p e io,
con iene el núcleo de las uncionalidades de nues a web.
secu e- ou ing module En u ado de la pa e p i ada de la aplica-
ción sepa ado del p incipal po segu idad.
5.3. A qui ec u a In e na 45
api se ice P opo ciona a los componen e una se ie de unciones pa a
la conexión con el se ido backend.
in e aces model P opo ciona in e aces con el o ma o de los ele-
men os de las ablas de pe sis encia.
secu e module Modulo de la pa e p i ada, enca gado de impo a
los módulos, se icios y componen es necesa ios.
secu e componen iche os s, h ml y css enca gados de la is a p in-
cipal de la pa e segu a, p opo ciona la ba a de na egación y la
is a indicada po de ec o al en a .
subjec s componen componen e enca gado de la ges ión de las asig-
na u as y g upos asignados a ellas.
edi - eam modal Ven ana modal que pe mi e c ea o modi ica
un equipo de una asigna u a.
edi -subjec modal Ven ana modal que pe mi e c ea o modi-
ica una asigna u a.
Assigmen s componen upg ade.assignmen modal Ven ana mo-
dal que pe mi e c ea o modi ica una a ea.
upload-submissions modal Ven ana modal que pe mi e subi
las en egas de una a ea.
submissions componen Componen e enca gado de mos a las en-
egas y las co ecciones co espondien es a cada una
codemi o componen Componen e que mues a una co ección,
con el á bol de iche os de la en ega y el iso de código. pe mi e
la ealización de los comen a ios y co ecciones sob e el código.
sa e-dialog modal Ven ana modal enca ga de p egun a al usua io
en el caso de que se deje algún comen a io o co ección sin gua da .
con i ma ion-dialog en ana modal que pe mi e es ablece un con-
ol an es de ealiza una acción que no es e e sible.
admin-codes Componen e enca gado de la ges ión de las asigna u as
po pa e del adminis ado .
code-modal Ven ana modal que pe mi e la c eación o modi ica-
ción de un código de asigna u a.
edi ion-modal Ven ana moda que pe mi e la c eación o modi-
icación de un cu so.
admin-use s Componen e enca gado de la ges ión de los usua ios po
pa e del adminis ado .
c ea e-use Ven ana moda que pe mi e la c eación de un usua io
con el ipo especi icado cuando se ab e la en ana.
use -modal Ven ana moda que pe mi e la modi icación de un
usua io.
46 Capí ulo 5. Implemen ación
change-passwo d Ven ana modal modal que pe mi e el cambio
de con aseña de un usua io.
p o ile Es e componen e pe mi e la ges ión po pa e del usua io de
su pe il, incluyendo el cambio de con aseña.
change-p o ile-pwd Ven ana modal que pe mi e el cambio de
la con aseña po pa e del usua io.
disable-con ol-di ec i e Di ec i a que in oduce la posibili-
dad de pode ac i a o desac i a un campo de un o mula io
de o ma dinámica.
alida o s Es e di ec o io con iene los alidado es de los o mula ios cus-
omizados.
code-unique Pe mi e alida que un código GEA de asigna u a sea
único en la base de da os.
edi ion-unique Pe mi e alida que una edición de un cu so sea único
en la base de da os.
email-unique Pe mi e alida que un email de usua io sea único en
la base de da os.
use name-unique Pe mi e alida que un nomb e de usua io sea úni-
co en la base de da os.
ma ch- alue Compa a los campos de con aseña ycon i ma con aseña
y de uel e si son iguales o no.
5.3.3. Pe sis encia
La pe sis encia basada en una base de da os sob e un se ido MySQL,
es a dis ibuida en a ias ablas elacionadas en e si. Se ha p ocu ado ea-
liza una no malización de la misma man eniendo has a la e ce a o ma
no mal 1.
1Ve no malización Wikipedia (2018).
5.3. A qui ec u a In e na 47
Figu a 5.19: Esquema E/R de la base de da os

Cap´
ı ulo 6
Resul ados
“Si buscas esul ados dis in os, no hagas siemp e lo mismo”
— Albe Eins ein
Scipio es en una aplicación pensada pa a esol e un p oblema pe sis en e
en la enseñanza de la p og amación: La co ección de las p ác icas siemp e
ha sido un p oceso len o, y ha p esen ado p oblemas p ác icos a la ho a de
da buen eedback a alumnos.
En nues a aplicación in en amos esol e ambos aspec os del p oblema,
median e un sis ema in e ac i o de co ección en el que los p o eso es pueden
co egi las p ac icas de código de o ma sencilla, mien as los alumnos pue-
den e dichas co ecciones en con ex o y sin ene que e e encia las con a
el código que en ega on o iginalmen e.
Adicionalmen e nues a aplicación inco po a un sis ema de co ección
ín e -pa es que pe mi e la co ección de las p ac icas en e los p opios alum-
nos mejo ando la comp ensión del código po pa e de és os, así como su
capacidad c í ica.
También incluye un sis ema que pe mi e ges iona odo lo elacionado
con las asigna u as, a eas, en egas y co ecciones que espe amos sea de uso
in ui i o y ácil pa a los p o eso es.
El esul ado inal cons i uye una aplicación que, en su es ado ac ual,
ha supe ado las p uebas iniciales en un en o no con olado y es á p epa a-
da pa a ealiza las p ime as p uebas de despliegue en un en o no eal con
alumnos y p o eso es. Es e despliegue se pod ía ealiza en la asigna u a de
IW (Ingenie ía web) del cu so 2019/20, de la que es p o eso el di ec o de
es e abajo.
La aplicación web se ha desa ollado usando ecnologías pun e as y me-
jo es p ác icas de p og amación, lo cual ha supues o un impo an e bene icio
desde el pun o de is a de o mación y ap endizaje.
Tecnologías usadas en la implemen ación
49
50 Capí ulo 6. Resul ados
Angula 8 - la úl ima e sión es able
Exp ess con NodeJS - pa a el backend de la aplicación
Knex - pa a mapeo en idad- elación y acceso a la base de da os MySQL
MySQL se e - como base de da os, p opo cionando pe sis encia a la
aplicación
CodeMi o - no solo usado, sino ambién ex endido pa a pe mi i ano-
a código y mos a ano aciones
bash - pa a el sc ip de ges ión y moni o ización de Scipio
Tecnologías usadas como sopo e pa a el desa ollo
Gi - pa a con ol de e siones
Bi Bucke - eposi o io gi en la nube
pm2 - ges ión de se ido es
Tecnologías usadas en la plani icación y la documen ación
LaTeX, y el paque e TeXiS pa a la documen ación; incluyendo bib ex,
lis ings, y o os múl iples paque es.
P ojec Lib e pa a la plani icación
Google Docs pa a coo dinación
Gimp pa a edición de imágenes
Es ue zo o al de código, según la he amien a cloc1, con la siguien e
línea de comando (es deci , sin inclui documen ación o lib e ías ex e nas):
cloc con sc ip s se e /con olle s se e /i18n se e /
*. js se e /DDBB se e / ou es README.md se e .js
s c T anla ions . babel
La salida de es e comando2es:
217 ex iles.
217 unique iles.
45 iles igno ed.
1Ve cloc (Al Danial, 2015)
2En la dis ibución se incluyen iche os de p ueba (pensados pa a mos a su con enido
y pode deja comen a ios sob e és e) den o de se e / iles, que no obs an e no o man
pa e de Scipio en sí. De ahí lo de allado de la línea de comando.
51
gi hub.com/AlDanial/cloc 1.74 T=0.32 s (578.7 iles/s, 34448.1 lines/s)
-------------------------------------------------------------------------------
Language iles blank commen code
-------------------------------------------------------------------------------
TypeSc ip 108 399 226 4578
Ja aSc ip 21 49 86 2142
HTML 26 25 66 1524
Sass 21 63 26 1016
JSON 7 0 0 470
Ma kdown 1 73 0 167
Bou ne Shell 2 7 0 155
-------------------------------------------------------------------------------
SUM: 186 616 404 10052
-------------------------------------------------------------------------------
Como se puede obse a , la mayo ía del código es TypeSc ip ó Ja aS-
c ip , con algo de ecnologías web suplemen a ias (h ml, plan illas CSS),
JSON pa a iche os de con igu ación, Shell (bash) pa a adminis ación del
se ido y Ma kdown pa a ins ucciones de ins alación del p oyec o.
58 Apéndice A. Documen ación de Usua io
egis o. El nue o alumno debe á in oduci , su nomb e y apellidos, un email,
Figu a A.2: Vis a del egis o de un alumno
un nick de usua io y una con aseña. Tan o el email como el nick de usua io
deben de se únicos si no lo son el sis ema mos a a una ale a.
A.2. Manual de P o eso
En es e manual p esen a emos la uncionalidad de la aplicación desde el
pun o de is a del p o eso , comen a emos odas las posibilidades de la que
dispone y como usa las acompañadas de ejemplos g á icos. En p ime luga
pa a pode accede como p o eso se ha de ene una cuen a como al es o
se ha de solici a a un adminis ado de la aplicación y es e le p opo ciona a
el acceso. Una ez ealizado el login, se mos a a la pan alla p incipal del la
sección segu a de la web con la ges ión de las asigna u as.

A.2. Manual de P o eso 59
Figu a A.3: Ven ana p incipal del p o eso
Ges ión de las asigna u as
La ges ión de las asigna u as pe mi e a los p o eso es adminis a odo lo
elacionados con ellas. Se puede accede a ella desde la ba a de na egación
la e al pulsando en Mis asigna u as. La is a es a di idida en p ime a ins-
Figu a A.4: Ges ión de asigna u as
ancia po cu sos, siendo el mas ecien e el que es a en p ime luga . Den o
de cada cu so se mues an las asigna u as,ademas de un bo ón que pe mi e
añadi una nue a asigna u a siemp e que el cu so es e ac i o 1. Las asigna-
u as disponen de a ias opciones, la p ime a es la ac i ación o desac i ación
1La ac i ación y desac i ación de un cu so depende los adminis ado es de la aplicación
60 Apéndice A. Documen ación de Usua io
de la asigna u a es o a ec a a la isualización de la misma po pa e de los
alumnos asignados a los equipos, po de ec o cuando se c ea una asigna u a
es a á desac i ada y no se pod á ac i a has a que se in oduzca al menos un
equipo. Pa a la c eación o modi icación de una asigna u a se pod á ealiza
median e una en ana modal que se ab e al solici a es a acción. Es a en ana
Figu a A.5: Ven ana de c eación o modi icación de una asigna u a
nos pe mi e selecciona el código de la asigna u a, así como el cu so y el pe-
iodo de in oduci el nomb e de la asigna u a. En la pa e in e io se pod án
selecciona los p o eso es asociados a la asigna u a pa iendo de un lis ado
de los p o eso es disponibles. Si es de nue a c eación po de ec o apa ece á
como p o eso asociado el p o eso que solici e la c eación. Las asigna u as
A.2. Manual de P o eso 61
ienen asignados equipos de alumnos, es os se mues an en un lis ado desple-
gable con su in o mación y acciones disponibles. Los equipos es án o mados
Figu a A.6: Ges ión de equipos
po alumnos, un mismo alumno no puede pe enece a dos equipos den o de
una misma asigna u a. La c eación o modi icación se ealizan median e una
en ana modal que se ab e al solici a alguna de las acciones nomb adas. En
Figu a A.7: Ven ana de c eación o modi icación de un equipo
la en ana podemos añadi y qui a alumnos del g upo, si el g upo ya iene
en egas y co ecciones, las modi icaciones en los alumnos se án e ec i as a
pa i de las siguien es acciones que ealice el equipo.
62 Apéndice A. Documen ación de Usua io
Ges ión de las a eas
A la ges ión de las a eas se accede desde el la ba a de na egación la e al
pulsando Mis a eas. es a en ana de la aplicación es a di idida en p ime a
ins ancia en pes añas, cada una co esponde a una asigna u a, es as a su ez
con ienen las a eas que es án asignadas a esa asigna u a.
Figu a A.8: Ges ión de a eas
Las a eas pueden c ea se y modi ica se median e una en ana modal.
Las a eas es án compues as po un i ulo una desc ipción y una echa de
en ega. Cuando se c ea una a ea po de ec o es a desac i ada, se puede
Figu a A.9: Ven ana de c eación o modi icación de una a ea
ac i a cuando el p o eso lo conside e necesa io. Una ez es e ac i ada la
a ea iene dos es ados. El p ime o es cuando aun no se han subido las
en egas y o o cuando se han subido. En ambos casos se puede modi ica la
a ea, cuando es a en modo sin en ega pe mi e al p o eso subi la en egas
en un o ma o de zip de zips2. en es e los zips de las en egas de los alumnos
debe án es a iden i icados con el Id del equipo al que pe enece la en ega.
2Es e es el o ma o de desca ga de campus i ual moodle
A.2. Manual de P o eso 63
Figu a A.10: Ven ana de subida de una en ega
Si ya se ha ealizado la subida se ac i a a la opción de e las en la is a
de En egas. ademas el p o eso pod á ac i a y desac i a la co ección
ín e -pa es.
Figu a A.11: Ejemplo de a ea sin en egas
Figu a A.12: Ejemplo de a ea con en egas
Cuando se ac i a la co ección ín e -pa es se c ean an as co ecciones
como sean necesa ias ealizando una pe mu ación alea o ia en e los equipos
y gene ando una co ección po cada alumno del equipo.

64 Apéndice A. Documen ación de Usua io
Ges ión de en egas y co ecciones
La ges ión de en egas y co ecciones se accede desde cada a ea una ez
ealizada la subida de las en egas. La aplicación mos a a odas las en egas
ealizadas. Cada en ega mos a a la in o mación del equipo que ha ealizado
Figu a A.13: Ges ión de en egas y co ecciones
la en ega y la co ección del p o eso .
Figu a A.14: Vis a de una a ea
Cuando se ha ac i ado la co ección ín e -pa es en las en egas ambién
apa ece á la in o mación del equipo enca gado de ealiza la co ección sob e
esa en ega, ademas se añadi án las co ecciones de los miemb os de equipo
en modo de isualización.
A.2. Manual de P o eso 65
Figu a A.15: Vis a de una a ea con ín e -pa es
Las co ecciones ienen es posibles es ados nue a, en p oceso y e -
minada, cada una con di e en es acciones en cada uno. Es o se indica el
la pa e supe io de echa de cada co ección. Las co ecciones se pueden
modi ica cuando su es ado es nue a o en p oceso, ademas cuando es a en
p oceso adicionalmen e se puede inaliza la co ección. Una ez se inaliza
una co ección el sis ema gene a un in o me pd con los comen a ios y las
co ecciones hechas sob e el código. Es e in o me es a á accesible median e
un bo ón en la co ección.
Las co ecciones si es án siendo co egidas o ya se ha inalizado la co ec-
ción mos a an el nume o de comen a ios hechos y si se expande mos a a
es a in o mación epa ida en e los di e en es iche o que con engan algún
comen a io o co ección.
66 Apéndice A. Documen ación de Usua io
Figu a A.16: Vis a del de alle de una co ección
A.3. Manual de Alumno
En es e manual p esen a emos la uncionalidad de la aplicación desde
el pun o de is a del alumno, comen a emos odas las posibilidades de la
que dispone y como usa las acompañadas de ejemplos g á icos. Los alumnos
cuando inicia sesión en la is a p incipal e án las asigna u as en las que
pa icipan, es as es as di ididas en p ime a ins ancia po cu sos siendo el
mas ecien e el p ime o.
Figu a A.17: Vis a del de alle de una co ección
Es a cada pes aña de cu so es a di idida en asigna u as, cada una le
p opo ciona al alumno la in o mación sob e los p o eso es asociados a la
asigna u a y los miemb os del equipo al que pe enece en la asigna u a.
Las Ta eas el alumno las puede e pulsando Mis a eas, Es as es án
di ididas en pes añas po asigna u a. Las a eas mos a an su in o mación,
i ulo, desc ipción y echa de en ega.
Si los p o eso es han subido las en egas de la a ea es a mos a a el un
bo ón pa a pode accede a la sección de En egas.
A.3. Manual de Alumno 67
Figu a A.18: Vis a del de alle de una co ección
Cuando el alumno en e en las en egas de una a ea pod á e su en ega
con la co ección del p o eso , ademas si es a ac i a la opción de ín e -pa es se
mos a an las co ecciones que se es én haciendo sob e su p ac ica y aquellas
que enga que hace el alumno sob e las en egas de o os y pode e las de
sus compañe os de equipo.
Figu a A.19: Vis a del de alle de una en ega
74 Apéndice A. Documen ación de Usua io
Ges ión de asigna u as
La ges ión de asigna u as cons a de dos pa es, la ges ión de los códigos
de asigna u a y la ges ión de los cu sos. Es o se mues a en dos pes añas.
Figu a A.32: Ven ana de ges ión de asigna u as
Ges ión de códigos
La ges ión de códigos oasigna u as pe mi e la ges ión de los elemen os
básicos de una asigna u a que luego los p o eso es usa an pa a c ea sus
g upos. Un código es a o mado po un código GEA, una ab e ia u a del
nomb e y el nomb e de la asigna u a. Es os se pueden c ea pulsando el
bo ón de añadi si uado en la pa e in e io de la abla.
Figu a A.33: Ven ana de ges ión de asigna u as

A.5. Manual de Adminis ado 75
En abla ambién se pod á modi ica un código ya exis en e pulsando el
bo ón de modi ica en cada ila.
Figu a A.34: Ven ana de ges ión de asigna u as
Los códigos GEA han de se únicos es os se pueden e en la web de la
uni e sidad complu ense.
Ges ión de cu sos
Los cu sos se componen de una edición po ejemplo 2019/2020 y un
es ado ac ual que ma ca si los g upos, equipos,e c, inculados a ese cu so
pueden modi ica se o son solo de isualización.
Figu a A.35: Ven ana de edición cu sos
La c eación de un cu so se ealiza median e el bo ón si uado en la pa e
in e io , que nos mos a a la siguien e en ana. Los cu sos han de segui el
o ma o yyyy/yyyy (yyyy es un año con cua o ci as, po ejemplo, 2019 o
2020) y ademas ha de se único. cuando se c ean po de ec o es án desac i a-
dos, se pueden ac i a en la abla usando el checkbox de la ila co espondien-
e. De la misma mane a se pueden desac i a . También se puede modi ica
76 Apéndice A. Documen ación de Usua io
un cu so ya exis en e siemp e cumpliendo el o ma o ci ado an e io men e.
(a) Ven ana de modi icación de un cu so (b) Ven ana de c eación de un cu so
Figu a A.36: Ven anas modales de cu sos
Ap´
endice B
Documen ación de Desa ollado
En es e apéndice a a emos, algunos emas elacionados con el man e-
nimien o de la aplicación y ac ualización de algunas pa es del código. En
pa icula , hay dos ex ensiones que esul an ela i amen e áciles de ealiza
sin apenas ene que oca código:
1. Añadi nue os lenguajes de p og amación al componen e de isión/e-
dición de código (CodeMi o ).
2. Añadi nue as aducciones a la in e az, pa a que se pueda e en
o os idiomas.
B.1. Añadi nue os lenguajes de p og amación
Añadi nue os lenguajes al iso de código, con el iempo puede se algo
necesa io, la p og amación a anza a una elocidad muy al a y los lenguajes
que hoy en día son los mas usados en el u u o puede que sean eemplazados
po o os. Po ello a con inuación explica emos como añadi los a nues a
aplicación.
Lo p ime o que debemos hace es comp oba si nues o iso sopo a el
nue o lenguaje, pa a ello comp oba emos la lis a de la lib e ía CodeMi o
donde se indica es o. Una ez comp obado enemos que asegu a nos de que
enemos la ul ima e sion de la lib e ía en el sis ema pa a ello lanza emos el
comando npm ins all codemi o @la es –sa e sob e la ca pe a donde
engamos el código del p oyec o. El siguien e paso es impo a las lib e ías
que necesi emos, pa a ellos ab imos el iche o codemi o .componen . s
si uado en el componen e codemi o de la ca pe a secu e en nues o p o-
yec o de angula . En la pa e supe io es án las impo aciones de los modos,
ahí debemos añadi nues os nue os lenguajes con la misma es uc u a, sus-
i uyendo los as e iscos po la u a del iche o de nues o lenguaje:
77
78 Apéndice B. Documen ación de Desa ollado
impo " codemi o /mode/*** /***"
Es a misma ope ación hay que epe i la en el iche o commen -line.componen
si uado en la ca pe a commen .modal en el componen e codemi o .
Po ul imo hay que añadi la co espondencia en e el lenguaje y sus
ex ensiones es o de ealiza en la abla ile ypes inse ando una linea po
cada ex ension nue a y su modo 1.
Con es os pasos la aplicación es a á p epa ada pa a lee los iche os del
nue o lenguaje cuando se le p esen en.
B.2. Añadi nue as aducciones a la in e az
Pa a pode añadi un nue a aduccion a la in e az de la web (po ejem-
plo pa a da mejo sopo e a g upos de inglés) lo p ime o que necesi amos es
ag ega el iche o con las mismas, pa a acili a la a ea podemos coge unos
de los iche os ya exis en e en la u a s c/asse s/i18n En ella encon a as
una se ie de iche os json con las ab e ia u as de los idiomas ya exis en es en
la web (es.json,en.json, e c), si duplicamos unos de ellos ya end emos la
es uc u a de a iables a aduci . O a opción es usa un p og ama dedicado
a es a a ea, exis en a ias posibilidades, aquí os dejamos es. La p ime a
es el aduc o de babel (GmbH, 2019), es una he amien a de pago pe o
con un pe iodo de p ueba, posee una g an in e az y es de ácil uso, como
en aja e p opone aducciones de un iche o ya exis en e al nue o idioma
que desees. O a opción es usa la web T ansla ion manage (Robin, 2019)
es comple amen e g a ui a, pe o su in e az es mas sencilla y no da ayudas
a la aducción. También exis e una ex ension de isual s udio code que
ealiza es a unción.
Una ez aducido el iche o se ha de gua da con la ab e ia u a del nom-
b e de idioma que se desc iben median e una especi icación IETF llamada
BCP 47 (lan, 2009), po ejemplo, ingles es en o ances es , e c.
El segundo paso es añadi al código la opción de selecciona ese idioma,
pa a ello enemos que añadi la siguien e linea a los iche os app.componen .h ml
ysecu e.componen .h ml jun o a las del es o de idiomas.
<bu on ma −menu−i em
[ ngClass]="{'langAc i e': langSelec ed=='[mi idioma]'}"
( c l i c k )="changeLang('[mi idioma]')"
i l e="{{'lang_[mi idioma]'| ansla e}}">
<ma −icon s gIcon="[mi idioma]" class="no-padding-img">
</ma −icon>
<span>{{'lang_[mi idioma]'| a n s l a e }}</span>
</bu on>
1El nomb e del modo se ex ae de la lis a mencionada en el p ime paso
B.2. Añadi nue as aducciones a la in e az 79
Pa a inaliza enemos que añadi el icono s g del idioma, pa a ello lo
podemos desca ga de la web la icon, es e icono lo gua da emos en el di-
ec o io asse s/images/s g con la ab e ia u a de idioma que hemos usado
an e io men e y añadimos la siguien e linea a los iche os app.componen . s
ysecu e.componen . s jun o a las del es o de idiomas.
iconRegis y . addS gIcon ('[mi idioma ]',
sani ize . bypassSecu i yT us Resou ceU l (
'../asse s/images/s g /[mi idioma ]. s g '));
Es ecomendable ealiza comp obaciones sob e la aplicación pa a e
que se han aducido odas las a iables co ec amen e y quedan bien isual-
men e.
Con es o ya end emos nues o nue o idioma en la in e az de la web, el
p opio sis ema se enca ga a de mos a lo cuando el usua io lo solici e.

Ap´
endice C
README
C.1. Scipio
Scipio es una aplicación basada en la c eación de una aplicación pa a la
co ección de p ac icas de p og amación po pa e de los p o eso es y en e
los p opios alumnos (in e -pa es), así como la gene ación de in o mes de
dichas co ecciones pa a el eedback.
Requisi os
Linux ubun u 18.04 o supe io
Angula CLI en su e sion 8.0.1 o supe io
pm2 p ocess manage e sion 3.5.0 o supe io
MySQL Communi y Se e Ve 14.14 Dis ib 5.7.27
No se puede asegu a el uncionamien o en e siones in e io es a las an-
e io men e lis adas.
C.2. Ins alación
A con inuación se desc ibe el p oceso de ins alación de la aplicación.
Desca ga del p oyec o
Pa a pode desca ga el p oyec o es necesa io ene ins alado Gi .
sudo ap ins all gi
81
82 Apéndice C. README
Pa a comp oba la ins alación podemos ejecu a el siguien e comando.
gi -- e sion
A con inuación p ocedemos a desca ga el p oyec o
gi clone h ps: // bi bucke . o g /olaye 66/scipio . gi
Una e desca gado p ocede emos a la ins alación de la aplicación.
C.2.0.1. Ins alación de la aplicación
Pa a la ins alación nos amos al di ec o io de la aplicación y ejecu amos
npm ins all
npm ins all --only =" de "
Una ez e mine pod emos a ins ala los elemen os ex e nos a la aplica-
ción necesa ios (pm2 y MySQL se e )
MySQL se e Pa a ins ala el se ido de MySQL se ecomienda segui
el u o ial siguien e.
h ps://www . digi alocean . com /communi y / u o ials/
como-ins ala -mysql-en-ubun u-18-04-es
Una ez ins alado pod emos c ea la base de da os y las ablas usa emos
el sc ip de ges ión de la aplicación, que se explica en la sección de Ges ión.
PA a ges iona la base de da os si disponemos de in e az g á ica podemos
usa mysql wo kbench, phpmyadmin o cualquie ges o que pe mi a bases de
da os mysql. Si no disponemos de in e az g á ica podemos usa el comando.
mysql -u oo -p
Nos pe mi i á en an en el modo consola de mysql.
pm2 Pa a ins ala el ges o de p ocesos lanzamos el siguien e comando en
la consola
npm ins all pm2@la es -g
C.3. Con igu ación 83
angula Pa a ins ala angula en el sis ema lanzamos el siguien e comando
en la consola.
npm ins all -g @angula /cli
nodemon Pa a ins ala el se ido backend de desa ollo lanzamos el si-
guien e comando.
npm ins all nodemon -g
C.3. Con igu ación
Base de da os
Pa a con igu a las base de da os de nues a aplicación debemos de ab i
el iche o de con igu ación “knex.js” que es a si uado en la ca pe a “con ” de
la aiz del p oyec o. En es e iche o encon a emos dos con igu aciones igua-
les una pa a desa ollo (de elopmen ) y o a pa a p oducción (p oduc ion).
Ambas con ienen la misma es uc u a.
{
clien : 'mysql ',
connec ion: {
hos : '127.0.0.1 ',
use : ' oo ',
passwo d : 'T g2019!',
da abase : 'scipioDB'
},
useNullAsDe aul : ue
}
En es a es uc u a los campos que se han de modi ica son.
hos : La di ección IP del se ido MySql.
use : El nomb e del usua io de la base de da os con el que amos a
accede , es e se ha con igu ado en el paso “Ins alación de MySql se e ”.
passwo d: La con aseña asociada al usua io an e io .
Se ecomienda cambia el usua io y la con aseña un uno p opio, y que
sean dis in os pa a caso, en desa ollo se puede usa el usua io de oo pe o
en el caso de p oducción se ecomienda el uso de un usua io con pe misos
mas limi ados (lec u a y esc i u a) pa a e i a accesos no au o izados.
90 BIBLIOGRAFÍA
Cha lie Robbins. Wins on. h ps://gi hub.com/wins onjs/wins on,
2019. Accessed: 2019-08-05.
CodeMi o Volun ee s. Codemi o . h ps://codemi o .ne /,
2019. Accessed: 2019-04-25.
Con ibu o s, A. A chi ec u e o e iew. h ps://angula .io/guide/
a chi ec u e, 2019. [Online; accessed 07-Sep embe -2019].
jQue y Founda ion, T. jque y. h ps://jque y.com/, 2019. Accessed:
2019-08-19.
GmbH, C. babel edi o . h ps://www.codeandweb.com/babeledi , 2019.
[Online; accessed 04-Sep embe -2019].
G oup, P. G. D. Pos g esql. h ps://www.pos g esql.o g/, 2019. Ac-
cessed: 2019-08-23.
Guille mo Rauch. Socke .io. h ps://socke .io/, 2019. Accessed: 2019-
09-09.
Hamp on Ca lin, C. E., Na alie Weizenbaum yAnne, J. Sass. h ps:
//sass-lang.com/, 2019. Accessed: 2019-08-12.
Hansson, D. H. Rails. h p:// ubyon ails.o g.es/, 2003. Accessed:
2019-08-23.
James Gosling yMic osys ems, S. Ja a. h ps://es.wikipedia.o g/
wiki/Ja a_(lenguaje_de_p og amaci%C3%B3n), 2019. Accessed: 2019-
04-29.
Knex con ibu o s. Knex que y builde . h ps://knexjs.o g/, 2019.
Accessed: 2019-01-18.
Lakshman, A. yMalik, P. Cassand a. h p://cassand a.apache.o g/,
2019. Accessed: 2019-08-23.
Lozano, I. A. Sails u o ial. h ps://abalozz.es/
in oduccion-a-sails-js-un- amewo k-pa a-c ea -aplicaciones- eal ime/,
2014. [Online; accessed 23-Augus -2019].
Ma in Dougiamas. Moodle. h ps://moodle.o g/, 2019. Accessed:
2019-04-29.
Mic oso . Typesc ip . h ps://www. ypesc ip lang.o g/, 2019. Ac-
cessed: 2019-04-29.
Mike McNeil. Exp ess. h ps://sailsjs.com/, 2019. Accessed: 2019-03-
05.

BIBLIOGRAFÍA 91
MongoDB, Inc. Mongodb. h ps://www.mongodb.com/, 2019. Accessed:
2019-08-23.
MySQL AB, S. yO acle Co po a ion. Mysql. h ps://www.mysql.
com/, 2019. Accessed: 2019-04-29.
Nikhil. Es adis icas uso o n ends. h ps://www.lambda es .com/blog/
op-ja asc ip - amewo ks- o -2019/, 2019. Accessed: 2019-09-09.
Rails Con ibu o s. Ruby on ails. h ps:// ubyon ails.o g/, 2019.
Accessed: 2019-03-05.
Reac con ibu o s. Reac lib a y. h ps:// eac js.o g/, 2019. Ac-
cessed: 2019-03-05.
Robin, N. T ansla ion manage . h ps:// ansla ion-manage -86c3d.
i ebaseapp.com/, 2019. [Online; accessed 04-Sep embe -2019].
Ryan Dahl. Nodejs. h ps://nodejs.o g/es/, 2019. Accessed: 2019-04-
29.
Sco Coope . Toas . h ps://gi hub.com/sc cpe /ngx- oas ,
2019. Accessed: 2019-08-30.
The Gi Hub Team. Gi hub. h ps://gi hub.com/, 2019. Accessed: 2019-
09-09.
The Sp ing Team. Sp ing amewo k. h ps://sp ing.io/, 2019. Ac-
cessed: 2019-03-05.
TJ Holowaychuk. Exp ess. h ps://exp essjs.com, 2019. Accessed:
2019-03-05.
Wikipedia. Fo ma no mal (base de da os) — wikipedia, la enciclopedia
lib e. h ps://es.wikipedia.o g/w/index.php? i le=Fo ma_no mal_
(base_de_da os)&oldid=106197642, 2018. [Online; accessed 30-Augus -
2019].
Wikipedia. Mapeo obje o- elacional — wikipedia, la enciclope-
dia lib e. hh ps://es.wikipedia.o g/w/index.php? i le=Mapeo_
obje o- elacional&oldid=117375002, 2019a. [In e ne ; desca gado 9-
sep iemb e-2019].
Wikipedia. Ma kdown — wikipedia, la enciclopedia lib e. h ps:
//es.wikipedia.o g/w/index.php? i le=Ma kdown&oldid=116367584,
2019b. Accessed: 2019-09-09.
Wikipedia. T ans e encia de es ado ep esen acional — wikipedia, la enci-
clopedia lib e. 2019c. [In e ne ; desca gado 9-sep iemb e-2019].
92 BIBLIOGRAFÍA
Wikipedia con ibu o s. So wa e pee e iew — Wikipedia, he
ee encyclopedia. h ps://en.wikipedia.o g/w/index.php? i le=
So wa e_pee _ e iew&oldid=892996558, 2019. [Online; accessed 23-
Augus -2019].
Wind, D. K. yJensen, U. A. Quan i ying eedback: Insigh s in o pee
assessmen da a. h p://0-sea ch.p oques .com.cisne.sim.ucm.es/
doc iew/1967318296?accoun id=14514, 2017. Copy igh - Copy igh
Academic Con e ences In e na ional Limi ed Jun 2017; Úl ima ac uali-
zación - 2019-06-28.
–¿Qué e pa ece des o, Sancho? – Dijo Don Quijo e –
Bien pod án los encan ado es qui a me la en u a,
pe o el es ue zo y el ánimo, se á imposible.
Segunda pa e del Ingenioso Caballe o
Don Quijo e de la Mancha
Miguel de Ce an es
–Buena es á – dijo Sancho –; í mela ues a me ced.
–No es menes e i ma la – dijo Don Quijo e–,
sino solamen e pone mi úb ica.
P ime a pa e del Ingenioso Caballe o
Don Quijo e de la Mancha
Miguel de Ce an es