Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tesis Jorge Barreto Carrazana PDF
Tesis Jorge Barreto Carrazana PDF
Ingeniería Informática.
ACM-ICPC
“Año 55 de la Revolución.”
Santa Clara
2013
“Nunca consideres el estudio un deber sino una oportunidad de penetrar en el bello y
maravilloso mundo del saber”
Albert Einstein
Niccolò Tommaseo
Dedicatoria
Dedico esta tesis especialmente a mi mama, mis abuelas, mi hermano Ramón y mi tía
Odalys y demás familiares que nunca dejaron de confiar en mí en los momentos más
difíciles de toda mi carrera estudiantil.
A mi novia y a mis grandes amigos que es lo más grandioso que las personas ganan en la
vida.
Agradecimientos generales
A mi tutor Reinier Millo por su apoyo y paciencia en los infinitos días de trabajo,
por su dedicación y por sobre todas las cosas por motivarme y exigirme la
realización de un trabajo de calidad.
A Fredy Mederos: por ser mi amigo y por su ayuda en los momentos que la
necesite, por enseñarme que todo profesional debe dejar un sello de calidad en
sus trabajos.
A Jorge Moreira por ser el autor intelectual de este tema y por confiar en mi para
su realización.
Al claustro de profesores de la Facultad de Matemática-Física y Computación
quienes contribuyeron a que hoy nos encontremos aquí.
A todas aquellas personas que de una manera u otra contribuyeron en la
realización de esta investigación.
Agradecimientos específicos
A Dios… por dibujar en mi corazón el amor hacia los demás.
A mi mamá… por ser una de las personas que ha estado en los momentos
cruciales de mi vida, por hacer posible todos mis sueños. Por ser capaz de cumplir
la meta más difícil de las madres; hacer creer a sus hijos que es la mejor madre
del mundo.
A mi abuela Magnolia….por criarme como un hijo mas. Por ser dueña de todos
mis logros.
A mi tía Odalys por demostrarme que la familia es única en la vida, por confiar en
mí, por hacerme saber cuál importante soy, por enseñarme a estar preparado en
la vida antes de dar cualquier paso decisivo, por ser como una madre para mí.
A mi abuela Migdalia por preocuparse siempre por mí y hacerme sentir parte de la
familia en los momentos que dude.
A mi novia por el apoyo, paciencia y amor que depositó en mí en los momentos
más difíciles, por comprender todo el sacrificio que me llevo este trabajo y por
todos sus consejos. A su familia que me apoyo en los momentos que los necesite.
A mi tío Javier….por cuidarme y quererme como a un hijo, por ser el mejor padre
que he tenido.
A mi tío Morfi: por ser el mejor padrino y sobre todo el mejor esposo que he visto
en mi vida, por ser como un padre para mí.
A mi prima Lisi: por ser la hermana que me falto, por quererme
incondicionalmente.
A mis hermanos Ramoncito y Erick.
A mi papa: por todo el cariño dado en mis primeros años de vida, por saber
ganarse mi cariño, por ser sobre todas las cosas mi padre.
A mis amigos en la vida… por ser una de las cosas más preciadas en mi vida
Osmany: por estar siempre, por ser intachable, por haber sido mí primer amigo.
Por ser un amigo en el sentido amplio, por ser incondicional.
Gendry: por ser el risueño de siempre y por oír mis problemas. Por todos los
momentos juntos, por insertarme en el grupo de tu familia, por estar presente
cuando te necesito.
Humberto: por enseñarme cosas básicas para la vida, por abrirme las puertas de
tu casa y por considerarme con derecho a opinar en tu vida. Por estar en los
momentos más duros que he tenido en estos últimos cinco años, por siempre
estar ahí cuando necesite de un amigo, por crecerte en algunos momentos de la vida
donde has parecido ser mi padre.
Emilito: por ser tan pasivo y comprensivo, por estar siempre en mi vida desde que
éramos unos críos, gracias por considerarme un amigo.
Ainara: por ser como meñique, pequeña pero grande de corazón. Por ser mi mejor
amiga, por tus consejos que son muy sabios para mí, por tener tanta confianza en
mí, gracias chiquita.
A Roxanna Rodríguez Saborit: por ser una de las mujeres más especiales que he
conocido en mi vida, por enseñarme a valorar lo positivo antes de emitir cualquier
criterio, por estar pendiente de mi y acordarte hasta en lugares más lejanos de
nuestro continente.
Gretter Fernández: por ser tan dulce y especial en mi vida, por ser mi amiga en las
mayores dificultades, por tus consejos, sin ti la vida no sería igual.
Eniel Rodríguez: por dedicarme muchísimo tiempo a mis problemas en este
trabajo, por dejarme convertirme en tu amigo, si tuviera que compartir este trabajo
con alguien seguro que ese serías tu mi hermano, usted puede contar conmigo
para lo que necesite.
Enier: por ser sencillo, humilde y trabajador. Por ayudar a todos sin pedir nada a
cambio, por su lealtad, por todos los aprietos que me quitaste desde que te
conocí, por todo lo aportado en este tiempo.
Carlos García y Carlos Rodríguez (C++): por ser parte de mi equipo en todo
momento, por sacarme de aprietos y por todo lo vivido en la UCLV.
Aimara: por ser una amiga que está de regreso en mi vida, por ser quien fue y por
ser quien es hoy. Por ser una muchacha tan especial. ¿Espero que lo sepas y no
se olvide?
Yaumara y Danay: por ser dos muchachas muy especiales, por ser las muchachas
más cariñosas que he conocido en la universidad, por ocuparse siempre de
nosotros y de nuestras comodidades, la verdad me considero dichoso por haber
conocido a dos grandes mujeres, no cambien nunca, tienen algo encantador que
ni en cien hojas blancas pudiera explicar.
Betsy por ser una pieza clave en mi vida universitaria y en el grupo, sin ti no
hubiera sido lo mismo
Leandro por mantener el grupo más animado, por estar en los momentos que te
necesite.
Iselys que no me puede faltar por ser una personita especial en mi vida, por
regalarme tu tiempo libre cuando yo lo necesitaba, por ser una mujer de gran
corazón, gracias por tus consejos.
Armando Campos e Ileana: por acogerme siempre en su casa y ayudarme en todo
lo posible.
A martica por ser tan amable en sus explicaciones, por estar pendiente a todas las
tareas y nunca decir no a una pregunta, por demostrar ser una persona muy tenaz
en los momentos en que la vida le ha puesto pruebas muy difíciles, gracias por
enseñarnos a todos con tu ejemplo.
Agustín: por toda la ayuda prestada en tiempos difíciles, gracias por inculcarme
valores imprescindibles en el hombre. Aunque no estés presente entre nosotros tú
nunca podrás ser olvidado.
A todos los jóvenes de la Iglesia “EL CARMEN” por estar siempre ahí en los
momentos más difíciles.
DICTAMEN
Hago constar que el presente trabajo fue realizado en la Universidad Central Marta Abreu
de Las Villas como parte de la culminación de los estudios de la especialidad de Ingeniería
Informática, autorizando a que el mismo sea utilizado por la institución, para los fines que
estime conveniente, tanto de forma parcial como total y que además no podrá ser
presentado en eventos ni publicado sin la autorización de la Universidad.
Los abajo firmantes, certificamos que el presente trabajo ha sido realizado según acuerdos
de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un
trabajo de esta envergadura referido a la temática señalada.
ANTECEDENTES .................................................................................................................................................. 2
PLANTEAMIENTO DEL PROBLEMA ........................................................................................................................... 3
OBJETIVO GENERAL ............................................................................................................................................. 3
OBJETIVOS ESPECÍFICOS ....................................................................................................................................... 3
PREGUNTAS DE INVESTIGACIÓN ............................................................................................................................. 4
VALOR PRÁCTICO DEL SISTEMA .............................................................................................................................. 4
ESTRUCTURA DEL TRABAJO ................................................................................................................................... 4
CONCLUSIONES .......................................................................................................................................... 52
RECOMENDACIONES .................................................................................................................................. 53
Tabla de figuras
FIGURA 2.1. DIAGRAMA DE CASOS DE USO ................................................................................................................. 25
FIGURA 2.2. DIAGRAMA DE ACTIVIDADES: INSERTAR ENTRENAMIENTO ............................................................................ 27
FIGURA 2.3. DIAGRAMA DE ACTIVIDADES: REALIZAR TAREA ATENDIDA ............................................................................. 28
FIGURA 2.4. DIAGRAMA DE COLABORACIÓN: INSERTAR ENTRENAMIENTO ........................................................................ 29
FIGURA 2.5. DIAGRAMA DE COLABORACIÓN: EDITAR ENTRENAMIENTO............................................................................ 30
FIGURA 2.6. DIAGRAMA DE COLABORACIÓN: ASIGNAR ENTRENAMIENTO ......................................................................... 30
FIGURA 2.7. DIAGRAMA DE NAVEGACIÓN: USUARIO ANÓNIMO...................................................................................... 31
FIGURA 2.8. DIAGRAMA DE NAVEGACIÓN: USUARIO COMPETIDOR ................................................................................. 32
FIGURA 2.9. DIAGRAMA DE NAVEGACIÓN: USUARIO ENTRENADOR ................................................................................. 33
FIGURA 2.10. DIAGRAMA DE NAVEGACIÓN: USUARIO ADMINISTRADOR ........................................................................... 33
FIGURA 2.11. DIAGRAMA DE LA BASE DE DATOS: MODELO ENTIDAD-RELACIÓN ................................................................. 34
FIGURA 2.12. DIAGRAMA DE COMPONENTES ............................................................................................................. 35
FIGURA 2.13. DIAGRAMA DE DESPLIEGUE .................................................................................................................. 36
FIGURA 3.1. PÁGINA INICIAL DEL SITIO ...................................................................................................................... 38
FIGURA 3.2. MENÚ DE NAVEGACIÓN DEL USUARIO COMPETIDOR.................................................................................... 40
FIGURA 3.3. MENÚ DE NAVEGACIÓN DEL USUARIO ENTRENADOR................................................................................... 40
FIGURA 3.4. MENÚ DE NAVEGACIÓN DE USUARIO ADMINISTRADOR ................................................................................ 40
FIGURA 3.5. PÁGINA INICIAL DE UN USUARIO AUTENTICADO .......................................................................................... 41
FIGURA 3.6. LISTADO DE ENTRENAMIENTOS ASIGNADOS AL USUARIO AUTENTICADO ........................................................... 41
FIGURA 3.7. LISTADO DE TAREAS QUE CONFORMAN UN ENTRENAMIENTO ........................................................................ 42
FIGURA 3.8. DETALLES DE UNA TAREA ATENDIDA ......................................................................................................... 43
FIGURA 3.9. DETALLES DE UNA TAREA DESATENDIDA .................................................................................................... 43
FIGURA 3.10. TAREAS ENVIADAS POR EL COMPETIDOR PARA SER REVISADAS POR EL ENTRENADOR ........................................ 44
FIGURA 3.11. TAREAS ERRÓNEAS DEL COMPETIDOR ..................................................................................................... 45
FIGURA 3.12. LISTADO DE LOS DOCUMENTOS ............................................................................................................. 45
FIGURA 3.13. HISTORIAL DE LAS TAREAS RESUELTAS POR EL COMPETIDOR ........................................................................ 46
FIGURA 3.14. GESTIÓN DE LOS ENTRENAMIENTOS ....................................................................................................... 47
FIGURA 3.15. AGREGAR TAREAS QUE COMPONEN UN ENTRENAMIENTO........................................................................... 48
FIGURA 3.16. GESTIÓN DE LAS ASIGNACIONES DE LOS ENTRENAMIENTOS ......................................................................... 48
FIGURA 3.17. LISTADO DE LAS TAREAS PENDIENTES POR REVISAR .................................................................................... 49
FIGURA 3.18. LISTADO DE LAS INSTITUCIONES............................................................................................................. 50
FIGURA 3.19. LISTADO DE LOS USUARIOS REGISTRADOS EN EL SISTEMA ............................................................................ 50
FIGURA 3.20. LISTADO DE LAS SOLICITUDES PARA ENTRENADOR ..................................................................................... 51
Introducción
Introducción
1
INTRODUCCIÓN
Antecedentes
Cuba tuvo su primera participación en concursos del ACM-ICPC en el año 1999, en el
Concurso Regional de Suramérica con sede en Venezuela. En esta ocasión participaron dos
equipos cubanos, un equipo del Instituto Superior Politécnico José Antonio Echeverría
(CUJAE) y un equipo de la Universidad Central "Marta Abreu" de Las Villas (UCLV). En
el año 2000, dos equipos vuelven a participar en el concurso regional, pero en esta ocasión
un equipo de la CUJAE y un equipo de la Universidad de la Habana (UH). En el año 2001,
un equipo de la UH y un equipo de la UCLV, participan nuevamente en el concurso
regional, logrando ubicarse el equipo de la UCLV en el escaño 15 de la región.
Hasta el año 2007 Cuba no volvió a participar en concursos regionales. En este año y en el
2008, participó un equipo de la Universidad de las Ciencias Informáticas (UCI) en el
Concurso Regional de Suramérica, logrando ubicarse en el escaño 11 y 9 respectivamente.
En el año 2009 se realiza por primera vez en Cuba un Concurso Regional Caribeño del
ACM-ICPC como parte de la sede de México. En este año Cuba clasifica un equipo de la
UCLV a la gran final mundial. A partir del año 2010 se conforma el Concurso Regional
2
INTRODUCCIÓN
Objetivo general
Diseñar e implementar una aplicación Web para dar seguimiento al entrenamiento de los
estudiantes que participan en la competencia anual del ACM-ICPC.
Objetivos específicos
1. Realizar un estudio crítico de las aplicaciones Web existentes para el entrenamiento
de competencias de programación, así como las herramientas de desarrollo.
2. Determinar los requisitos funcionales de una aplicación Web que permita un
entrenamiento diferenciado para cada competidor.
3. Diseñar una aplicación Web que permita dar seguimiento diferenciado al
entrenamiento de los estudiantes.
4. Implementar una aplicación Web que permita dar seguimiento diferenciado al
entrenamiento de los estudiantes.
3
INTRODUCCIÓN
5. Brindar soporte y documentación para que los usuarios puedan interactuar mejor
con el sistema.
Preguntas de investigación
¿Los sistemas informáticos existentes satisfacen las necesidades actuales del entrenamiento
para los concursos del ACM-ICPC?
¿Qué características debe tener un sistema para cumplir con los requisitos mínimos de un
entrenamiento?
4
Capítulo 1
Fundamentación teórica
Capítulo 1. Fundamentación teórica
5
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
6
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
7
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
A continuación se hace una breve introducción a los sistemas de entrenamientos que son
empleados en la preparación de los competidores con el objetivo de obtener mejores
resultados en competencias de programación.
1.2.1. TopCoder
TopCoder (Pacheco, 2011) es una compañía que organiza concursos de programación de
diferentes estilos: algoritmos, diseño, maratones y detección de errores. La empresa se
vende a sí misma como un producto para encontrar a los mejores. No en vano, entre sus
clientes se encuentran empresas como Intel, Facebook, Paypal y la Agencia Nacional de
Seguridad de los Estados Unidos, las cuales organizan eventos patrocinados con distintas
pruebas especialmente definidas por ellos a los que cualquier persona podría acceder y
mostrar sus capacidades. El rasgo más distintivo de la plataforma es la integración como
plataforma educativa y empresarial al mismo tiempo, además de incluir novedosos estilos
de competencias, así como nuevos sistemas de puntuación.
8
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
9
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
1.2.3.4. Codeforces
Codeforces (Buro, 2010) es uno de los jueces en línea más populares, surgido en el año
2010 cambiando la dinámica de los jueces en línea existentes hasta el momento. Se
caracteriza por ser uno de los pocos jueces en línea que aplica la Web 2.0 (Arnal, 2007) y
constituir un sistema predominantemente para la realización de competencias de
programación en varios estilos existentes. Para incrementar la preparación de los
concursantes Codeforces permite clasificar los problemas por áreas temáticas. También
permite el acceso a los códigos fuentes de las soluciones una vez finalizados los concursos.
10
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
(Saasen, 2006), Django (Kaplan-Moss, 2008), Springs (Rod Johnson et al., 2008), entre
otros.
A continuación se hace una descripción de varios frameworks de desarrollo. Para el
desarrollo de la aplicación propuesta en este trabajo se decidió emplear Symfony2 por todas
las ventajas que ofrece este framework de trabajo.
1.3.2. CodeIgniter
CodeIgniter (Alvarez, 2012b) es un framework de código abierto basado en MVC para el
desarrollo aplicaciones Web en PHP. Ha ganado gran popularidad por ser flexible a las
modificaciones en su estructura. CodeIgniter puede ser empleado solamente como vista-
controlador (VC), es decir, sin ser necesario el empleo de una base de datos. A diferencia
de otros frameworks que incluyen un sistema de validación de usuarios por defecto,
CodeIgniter no lo tiene, lo cual puede verse como una ventaja o desventaja según la
naturaleza del proyecto que se desea desarrollar.
1.3.3. Symfony2
Symfony2 (Eguiluz, 2012) es un framework que ayuda a desarrollar las aplicaciones de una
manera más simple y rápida generando formularios y clases de manera automática. Su
arquitectura interna está completamente desacoplada, lo que permite reemplazar o eliminar
fácilmente aquellas partes innecesarias en el proyecto. Symfony2 también es el framework
que más ideas incorpora del resto de los framework (Mendez, 2009), incluso de aquellos
que no están programados con PHP.
11
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
1.3.3.1. Propel
El ORM Propel se basa en el proyecto Apache Torque (2012a), un ORM de Java. La
función primaria de Propel es proveer un mapa entre las clases de PHP y las tablas de la
base de datos. Con el fin de lograr esto, Propel incluye un componente generador que usa
generación de código fuente para construir clases PHP basadas en una definición del
modelo de datos, escrita en XML. Otras características de Propel son:
12
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
1.3.3.2. Doctrine
El ORM Doctrine tiene sus orígenes en el año 2006. Doctrine toma las ideas fundamentales
de Hibernate (Albiol, 2003), el ORM de Java, y de ActiveRecord (Saasen, 2006), el ORM
de RubyOnRails, con el propósito de construir una solución igual de potente en PHP.
Doctrine puede generar clases a partir de una base de datos existente y después el
programador puede especificar relaciones y añadir funcionalidad extra a las clases
autogeneradas. A diferencia de otros ORM, no es necesario generar o mantener complejos
esquemas XML de la base de datos. Otras características de Doctrine son:
13
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
los lenguajes del lado del cliente. Los lenguajes del lado del servidor, son aquellos cuyo
código se ejecuta en el servidor y genera una salida que se envía al cliente para ser
ejecutada. Esta salida generada se encuentra en un lenguaje de programación que se ejecuta
del lado del cliente.
Los lenguajes del lado del cliente por lo general son más sencillos que los lenguajes del
lado del servidor, y son interpretados por todos los navegadores Web. Entre los lenguajes
de programación del lado del cliente más empleados se encuentra: HTML
(Á.M.Echeverría., 1995), CSS (J.E.Pérez., 2009), JavaScript (Eguiluz, 20 de febrero de
2008) y los Java Applets (SwIG and He, 2013). Los lenguajes de programación del lado del
servidor más empleados son: PHP (R.R.Hinostroza., 2005), ASP (Powers, 2004), PERL
(2009b), Python (Rossum, 16 de octubre de 2000), Java Server Pages (Bergsten, August
2002 ), Ruby (matz, 2006), entre otros.
A continuación se muestra una breve descripción de los lenguajes de programación más
utilizados en la actualidad para el desarrollo de una aplicación Web y que van a ser
utilizados para el desarrollo de la aplicación que se propone en este trabajo.
1.4.1. HTML
El lenguaje HTML “HyperText Markup Language” es un lenguaje estático empleado para
el desarrollo de sitios Web. Este lenguaje es un estándar reconocido en todo el mundo,
desarrollado por el World Wide Web Consortium (W3C). Los archivos pueden tener las
extensiones htm, html, son pequeños y de rápido despliegue.
Es un lenguaje sencillo que permite presentar la información de forma estructurada y
agradable. Es aceptado por todos los navegadores Web y no es necesario tener grandes
conocimientos de él cuando se dispone de un editor de páginas Web o WYSIWYG.
A pesar de ser interpretado por todos los navegadores, la representación en cada uno de
ellos puede variar. Es un lenguaje organizado por etiquetas, las cuales son muy limitadas, lo
que produce que el diseño sea más lento.
1.4.2. CSS
Las hojas de estilo en cascada CSS (Cascading Style Sheets), es un lenguaje diseñado y
desarrollado por la W3C. Las hojas de estilos son empleadas por los navegadores Web para
redefinir las propiedades de los distintos elementos y las etiquetas en el código HTML.
14
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
1.4.3. JavaScript
JavaScript es un lenguaje de programación interpretado que se ejecuta del lado del cliente.
Es empleado para crear pequeños programas que luego son insertados en una página Web y
en programas más grandes. Los programas escritos con JavaScript se pueden probar
directamente en cualquier navegador sin necesidad de procesos intermedios.
Permite a los desarrolladores crear acciones en sus páginas Web como pueden ser crear
efectos para interactuar con los usuarios pues gran parte de la programación en este
lenguaje está centrada en describir objetos, escribir funciones que respondan a efectos tales
como: movimientos del mouse, aperturas, utilización de teclas, cargas de páginas entre
otros.
Es un lenguaje seguro y fiable, el cual por razones de seguridad tiene capacidades de
funcionamiento limitadas. Una de las principales desventajas es que para que ejecute
correctamente el código debe ser descargado completamente por el cliente y este código es
visible por cualquier usuario. Actualmente existen tecnologías para el desarrollo de
aplicaciones Web que basan su funcionamiento en JavaScript, como son: jQuery y AJAX
(Asynchronous JavaScript + XML).
15
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
La aplicación propuesta en este trabajo hace uso de tres bibliotecas de JavaScript para
mejorar la apariencia de la información mostrada a los usuarios: jQuery, tinyMCE y
clueTip.
1.4.4. PHP
PHP (PHP Hypertext Preprocessor) es un lenguaje de programación implementado
especialmente para el desarrollo Web. Es un lenguaje de alto nivel que se ejecuta en el
servidor. Este lenguaje ofrece una gran variedad de funciones que permiten desarrollar
múltiples funcionalidades como por ejemplo interactuar con diversos protocolos de
comunicación, con documentos XML y autenticación.
Se distingue además por su rapidez; su facilidad de aprendizaje; tiene un soporte
multiplataforma tanto de diversos sistemas operativos, como servidores HTTP y de gestores
de bases de datos. Dispone de una gran cantidad de características que lo convierten en la
herramienta ideal para la creación de páginas Web dinámicas:
Entre las principales ventajas del empleo del lenguaje se encuentran:
16
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
• La legibilidad del código puede verse afectada al mezclar sentencias HTML y PHP.
17
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
definir los datos a distintos niveles de abstracción y manipular dichos datos, garantizando
su seguridad e integridad. Ejemplos de SGBD son Oracle (Lilian Hobbs, 2005), DB2
(2011), MySQL (2002), PostgreSQL (Lockhart), SQLite (Kemper), Microsoft SQL Server
(Misner, 2012), Microsoft Access (Michael R. Groh, 2007), etc., siendo MySQL y
PostgreSQL los más empleados en el desarrollo de aplicaciones Web.
1.6.1. PostgreSQL
PostgreSQL es un sistema manejador de bases de datos de código abierto, capaz de
administrar grandes cantidades de datos. Implementa el estándar SQL92/SQL99, y soporta
gran cantidad de tipos de datos para el almacenamiento de la información. También permite
la creación de tipos de datos propios e incorpora una estructura de datos para almacenar
arreglos de datos. Permite la declaración de funciones, así como la definición de
disparadores. PostgreSQL permite la gestión de diferentes usuarios a través de roles, así
como los permisos asignados a cada uno de ellos.
1.6.2. MySQL
MySQL es un sistema de gestión de bases de datos relacional, licenciado bajo la licencia
GPL de la GNU. Su diseño multihilo le permite soportar una gran carga de forma muy
eficiente. Este gestor de bases de datos es muy usado en el mundo del software libre debido
a su gran rapidez y facilidad de uso. Existen infinidad de librerías y otras herramientas que
permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil
instalación y configuración. Sus principales características son:
18
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
19
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
un proyecto de software. UML ofrece muchos beneficios por la cual es necesario adoptarlo
como lenguaje de modelado:
20
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
21
Capítulo 2
Diseño e implementación
Capítulo 2. Diseño e implementación
• Permitir registrar usuarios según los roles definidos para el uso de la aplicación.
• Permitir gestionar la información de las instituciones.
• Asignar una institución a cada usuario.
• Permitir modificar la información de un usuario.
• Permitir cambiar la contraseña de un usuario.
R3: Gestionar entrenamientos
22
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
• Permitir a los competidores enviar tareas para ser revisadas por los
entrenadores.
• Permitir listar las tareas asociadas a un entrenamiento que se deben resolver por
el competidor.
• Permitir listar las tareas revisadas por los entrenadores y que deben ser resueltas
nuevamente por los competidores por estar incorrectas.
Para dar cumplimiento a los requisitos funcionales antes descritos, en la solución propuesta
se emplean tres tipos de roles de usuarios: competidor, entrenador y administrador. Por
decisión de la Dirección del Movimiento del ACM-ICPC en la UCLV todos los usuarios
registrados en el sistema son competidores, por lo tanto en la solución propuesta sólo se
hace necesario diferenciar cuando un usuario tiene el rol de entrenador, administrador o
ambos. En el capítulo 3 se muestra una descripción más detallada de cada uno de los roles
de usuarios del sistema.
23
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
24
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
Los casos de uso se definen examinando los requisitos funcionales del sistema. Cada uno
de las funcionalidades que añaden un valor al usuario es considerado un caso de uso. En la
figura 2.1 se muestra el diagrama de casos de uso del sistema propuesta, teniendo en cuenta
los requisitos funcionales antes expuestos. En el diagrama se recogen todos los requisitos
funcionales del sistema de un modo sencillo comprendido por la Dirección del Movimiento
del ACM-ICPC de la UCLV.
Los casos de uso más importantes del sistema son: gestionar la información de los
entrenamientos y revisar tareas por parte de los entrenadores, además de realizar tareas por
parte de lo competidores. A continuación en la tabla 2.1 se describe el caso de uso de
gestionar la información de los entrenamientos.
25
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
Actor Entrenador
Requisito funcional R3
26
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
27
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
Como se muestra en la figura 2.3, en el proceso completo de realizar una tarea atendida
parte de que el entrenador debe asignar un entrenamiento a un competidor. Una vez
asignado el entrenamiento, el competidor puede acceder al entrenamiento y sus tareas
correspondientes. Para dar respuesta a una tarea atendida el competidor debe subir un
informe con su respuesta para que el entrenador lo revise y le asigne una calificación de
“Bien” o “Mal”. Si la calificación es de “Bien” la tarea se marca como resuelta y en caso
de “Mal” se marca la tarea como incorrecta y deberá ser respondida nuevamente por el
competidor.
28
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
29
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
30
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
entrenamiento desea asignar y a que competidor. El sistema se encarga de verificar que ese
entrenamiento no haya sido asignado a ese competidor con anterioridad.
31
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
32
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
33
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
Como se puede observar en modelo existen dos casos de herencia, en la relación “Usuario”
y “Tarea”. Al transformar este modelo al modelo relacional en el caso de herencia de la
relación “Usuario”, los atributos de los subtipos pasan al supertipo, y en el caso de
herencia de la relación “Tarea”, se mantienen las tres relaciones “Tarea”, “Tarea
atendida” y “Tarea desatendida”, propagándose la llave del supertipo a los subtipos.
34
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
35
CAPÍTULO 2: DISEÑO E IMPLEMENTACIÓN
En este capítulo se hizo un análisis de los diferentes requisitos funcionales que tiene el
sistema propuesto. Estos requisitos se modelaron a través del diagrama de casos de uso,
donde se refleja su relación con cada uno de los actores del sistema. Se hizo un análisis del
diseño y la implementación planteando la concepción general del sistema, apoyado en los
diagramas de actividad, diagramas de colaboración, diagramas de navegación, diagrama de
entidad-relación, diagrama de componentes y el diagrama de despliegue.
Con ayuda del framework de desarrollo Symfony2 se logró implementar el sitio Web que
permite dar seguimiento diferenciado al entrenamiento de los estudiantes que participan en
el concurso de programación del ACM-ICPC. Además este sistema puede ser empleado
con fines docentes para la realización de actividades prácticas de los estudiantes en
diferentes materias impartidas en carreras con perfil relacionado con la computación.
36
Capítulo 3
Manual de usuario
Capítulo 3. Manual de usuario
Este capítulo brinda los conocimientos necesarios al usuario para que aprenda a trabajar en
el sitio web; es la elaboración de un manual de usuario definido como un documento de
comunicación técnica que busca brindar asistencia a los sujetos que usan un sistema.
El sitio Web para el entrenamiento en línea sobre programación competitiva para los
concursos del ACM-ICPC es una aplicación que permite gestionar toda la información de
37
CAPÍTULO 3: MANUAL DE USUARIO
Rol Descripción
38
CAPÍTULO 3: MANUAL DE USUARIO
En la figura 3.2 se muestran las opciones del menú de navegación vertical para el usuario
competidor. Las opciones más importantes para este rol de usuario son “Mis
entrenamientos”, “Mis tareas enviadas” y “Mis tareas erróneas”, las cuales serán
descritas posteriormente.
39
CAPÍTULO 3: MANUAL DE USUARIO
En la figura 3.3 se muestran las opciones del menú de navegación vertical para el usuario
entrenador, donde podemos resaltar que las opciones más importantes en este caso son
“Entrenamiento”, “Asignaciones” y “Revisar”, las cuales serán descritas posteriormente.
En la figura 3.4 se muestran las opciones del menú de navegación vertical para el usuario
administrador, donde todas las opciones serán descritas posteriormente.
40
CAPÍTULO 3: MANUAL DE USUARIO
41
CAPÍTULO 3: MANUAL DE USUARIO
En la figura 3.8 se muestra la descripción completa de una tarea atendida. Como se puede
observar se muestra la descripción y orientación de la tarea, además de la opción para subir
el informe que da respuesta a dicha tarea.
42
CAPÍTULO 3: MANUAL DE USUARIO
43
CAPÍTULO 3: MANUAL DE USUARIO
Figura 3.10. Tareas enviadas por el competidor para ser revisadas por el entrenador
44
CAPÍTULO 3: MANUAL DE USUARIO
3.2.3.4. Documentos
La opción “Documentos” muestra para todos los usuarios autenticados en el sistema una
lista de los documentos del sistema agrupados por categorías, como se muestra en la figura
3.12.
45
CAPÍTULO 3: MANUAL DE USUARIO
3.2.3.5. Histórico
La opción “Histórico”, como se muestra en la figura 3.13, muestra un resumen detallado
de todos los intentos de solución de tareas del competidor, donde se almacena el
entrenamiento, la tarea, el comentario ofrecido por el entrenador, la evaluación recibida, y
la fecha de evaluación.
3.2.4.1. Entrenamiento
La opción “Entrenamiento” permite a los entrenadores gestionar la información de sus
entrenamientos o definir nuevos entrenamientos, como se muestra en la figura 3.14. Para
definir las tareas que componen un entrenamiento es necesario acceder al entrenamiento y
luego adicionarle las tareas, como se muestra en la figura 3.15.
46
CAPÍTULO 3: MANUAL DE USUARIO
47
CAPÍTULO 3: MANUAL DE USUARIO
3.2.4.2. Asignaciones
La opción “Asignaciones” permite al entrenador asignar un entrenamiento a cualquier
competidor del sistema. Como se muestra en la figura 3.16, inicialmente se muestra el
listado de las asignaciones realizadas de sus entrenamiento y a que competidores. Al final
de este listado se muestra la opción para realizar una nueva asignación.
48
CAPÍTULO 3: MANUAL DE USUARIO
3.2.4.3. Revisar
La opción “Revisar” muestra un listado de las tareas que han resuelto los competidores y
que el entrenador debe revisar. Se muestra la tarea, el competidor que la realizó y la fecha
de envío, además de la opción de calificar, donde el entrenador podrá asignar una
calificación a la tarea, como se muestra en la figura 3.17.
3.2.5.1. Instituciones
La opción “Instituciones” muestra un listado de las instituciones que han sido agregadas
por el administrador como se muestra en la figura 3.18. Estas instituciones son empleadas
para identificar a que institución pertenece cada usuario registrado en el sistema.
49
CAPÍTULO 3: MANUAL DE USUARIO
3.2.5.2. Usuarios
La opción “Usuarios” muestra un listado de los usuarios registrados en el sistema además
de las opciones de editar la información y cambiar la contraseña de cada uno de los
usuarios, como se muestra en la figura 3.19.
50
CAPÍTULO 3: MANUAL DE USUARIO
51
Conclusiones
Conclusiones
En la revisión bibliográfica realizada se detectó que existen muchos jueces en línea que son
empleados como medio de entrenamiento, y pocos sistemas de entrenamiento que permitan
dar un seguimiento de la preparación de los competidores, pero ninguno permite realizar un
entrenamiento diferenciado en dependencia de las características individuales de cada
competidor.
Los requisitos funcionales de un sistema de entrenamiento fueron definidos por la
Dirección del Movimiento del ACM-ICPC en la UCLV, y rigieron todo el proceso de
desarrollo de la solución.
Se diseñó e implementó el sitio Web para el entrenamiento diferenciado de los concursantes
que participan de forma anual en los concursos de programación del ACM-ICPC. Se utilizó
Symfony2 como framework de desarrollo, Doctrine para el manejo de datos, PHP como
lenguaje de programación y MySQL como gestor de base de datos.
El sitio Web también puede ser empleado con fines docentes para la realización de
actividades prácticas de los estudiantes en diferentes materias impartidas en carreras con
perfil relacionado con la computación.
Se redactó un manual de usuario describiendo de forma práctica las funcionalidades del
sistema, el cual facilita el empleo del sistema por otros usuarios.
52
Recomendaciones
Recomendaciones
53
Referencias bibliográficas
Referencias bibliográficas
54
REFERENCIAS BIBLIOGRÁFICAS
mayo, 2013. Apache Gets Fortified for the Enterprise [Online]. Available:
http://www.serverwatch.com/stypes/servers/article.php/17073_3516651 [Accessed
mayo 2013].
A.D.L.TORRE. 2006. Lenguajes del lado del servidor o cliente.
Á.M.ECHEVERRÍA. 1995. Manual práctico de HTML, MADRID, ESPAÑA.
ABELA, C. Imperative and Object Oriented Programming.NetBeans Tutorial. In:
INTELLIGENCE, D. O. A. (ed.).
ALBIOL, F. R. 2003. INTRODUCCIÓN A HIBERNATE.
ALVAREZ, J. C. L. G. Y. J. L. R. 2012a. Desarrollo de la versión 2 del Juez Caribeño en
Línea. Trabajo de Diploma para optar por el título de Ingeniero en Ciencias
Informáticas, Universidad de las Ciencias Informáticas(UCI).
ALVAREZ, M. A. 2012b. Manual de CodeIgniter.
ANDREADIS, D. 2008. Introduction to JBoss Application Server 5.0.
ARNAL, D. M. 2007. Conceptos de web 2.0 y biblioteca 2.0: origen, definiciones y retos
para las bibliotecas actuales. 12.
BERGSTEN, H. August 2002 JavaServer Pages™, 2nd Edition O'Reilly.
BOLTON, D. 2007. The Sphere Online Judge (SPOJ) [Online]. Available:
http://cplus.about.com/b/2007/05/04/the-sphere-online-judge-spoj.htm [Accessed 24
mayo 2013].
BRITTAIN, I. E. D. J. Tomcat:The Definitive Guide.
BURO, M. 2010. ORTS - A Free Software RTS Game Engine [Online]. Available:
https://skatgame.net/mburo/orts/ [Accessed junio 2013].
D.P.VALDEZ. 2007. Los diferentes lenguajes de programación para la web.
EGUILUZ, J. 20 de febrero de 2008. Introducción a JavaScript.
EGUILUZ, J. 2012. DESARROLLO WEB ÁGIL CON SYMFONY2.
FOUNDATION, C. S. 2013. CakePHP Cookbook Documentation.
GRADY BOOCH, J. R., IVAR JACOBSON, 1998. The Unified Modeling Language User
Guide, Addison Wesley.
J.E.PÉREZ. 2009. Introducción a CSS.
JAMES RUMBAUGH, I. J., GRADY BOOCH 2000. El Lenguaje Unificado de modelado.
Manual de Referencia, Madrid.
KAPLAN-MOSS, A. H. Y. J. 2008. El libro de Django.
KEMPER, P. Android SQLite Database.
LILIAN HOBBS, S. H., SHILPA LAWANDE Y PETE SMITH 2005. Oracle Database
10g Data Warehousing.
LOCKHART, T. Tutorial de PostgreSQL El equipo de desarrollo de PostgreSQL.
LTD., Z. T. Mayo, 2013. Zend Framework 2 Documentation Release 2.2.0rc3.
MATZ 2006. Guía del usuario de Ruby.
MENDEZ, M. B. C. M. M. 2009. Frameworks para el desarrollo de aplicaciones con
PHP., Ciudad de la Habana. Cuba.
55
REFERENCIAS BIBLIOGRÁFICAS
56