1
SHERLOCK: PLATAFORMA WEB
DE APOYO A LA INVESTIGACIÓN, INFORMACIÓN Y GESTIÓN
DE ANTEPROYECTOS, PROYECTOS DE GRADO Y GRUPOS DE
INVESTIGACIÓN
Sebastian Vargas Arenas
Facultad de Ingeniería
Programa de Ingeniería Multimedia
Cali
2017
2
SHERLOCK: PLATAFORMA WEB
DE APOYO A LA INVESTIGACIÓN, INFORMACIÓN Y GESTIÓN
DE ANTEPROYECTOS, PROYECTOS DE GRADO Y GRUPOS DE
INVESTIGACIÓN
Sebastian Vargas Arenas
Trabajo de grado para optar por el título de Ingeniero Multimedia
Ing. Pablo Anibal Bejarano De la Hoz,
Especialista en Procesos de Desarrollo de Software
Asesor de tesis
Facultad de Ingeniería
Programa de Ingeniería Multimedia
Cali
2017
3
1. Resumen
En la Universidad de San Buenaventura Cali nace una idea con el objetivo
enriquecer y mejorar los procesos de investigación de la carrera de Ingeniería
Multimedia, asimismo con el propósito de incentivar la investigación a través de la
construcción de proyectos de grado y semilleros de investigación de calidad: se
formula, basado en la vasta aceptación y uso de la Internet como medio de
soluciones, la construcción de una aplicación web de apoyo a la investigación,
información y gestión de anteproyectos, proyectos de grado y grupos de
investigación, fundada con el nombre de “Sherlock”.
La implementación de la plataforma se llevó a cabo gracias a la planeación de los
requerimientos solicitados por los directivos de la carrera de Ingeniería Multimedia,
creando así un producto de calidad con posibilidades de seguir creciendo en
manos de futuros desarrolladores que decidan ser parte de este proyecto, además
de servir de referente para futuras investigaciones, ya sean proyectos de grado o
semilleros de investigación, y finalmente destacando la capacidad de desarrollo de
la Universidad de San Buenaventura Cali.
Palabras clave: Aplicaciones Web, Plataformas de investigación, E-Learning.
4
Dedico esta investigación a los docentes que fueron parte de mi formación como
desarrollador, enseñándome a construir puentes de progreso y solución.
¡Muchas gracias!
5
2. Contenido
1. Resumen 3
2. Contenido 5
3. Lista de figuras 10
4. Introducción 12
4.1. Objetivos 13
4.1.1. Objetivo general 13
4.1.2. Objetivos específicos 13
4.2. Descripción del problema 14
4.3. Justificación 16
5. Marco teórico 20
5.1. Marco conceptual 20
5.1.1. Prórrogas 20
5.1.2. Antecedentes 20
5.1.3. Líneas de investigación 20
5.1.4. Docente de investigación 20
5.1.5. Grupos de investigación o semilleros 21
5.2. Procedimientos Administrativos 21
5.2.1. Elaboración y entrega de Propuesta de Trabajo de Grado 21
5.2.2. Elaboración y Entrega de Anteproyecto de Trabajo de Grado 21
5.2.3. Elaboración y Entrega de Proyecto Final 22
5.3. Desarrollo web 22
5.3.1. Historia y evolución del desarrollo web 22
6
5.3.2. Desarrollo Back-End 25
5.3.2.1. PHP (Hypertext Pre-processor) 26
5.3.2.2. SQL 26
5.3.3. Desarrollo Front-End 27
5.3.3.1. HTML 28
5.3.3.2. CSS 28
5.3.3.3. JavaScript 28
5.3.3.4. Ajax 29
5.3.3.5. Jquery 29
5.3.4. Servicios web 29
5.3.4.1. SOA(Service Oriented Architecture) 30
5.3.4.2. SOAP 32
5.3.4.3. REST 32
5.4. Bases de datos 33
5.4.1. Base de datos no relacionales (noSQL) 33
5.4.1.1. MongoDB 34
5.4.1.2. Riak 35
5.4.1.3. Cassandra 37
5.4.1.4. Neo4j 39
5.4.2. Base de datos Relacionales 40
5.4.2.1. MySQL 42
5.4.2.2. Oracle 43
5.4.2.3. Patrón Maestro Detalle (Master Detail) 43
5.4.3. ORM (Object-relational mapping) 44
5.5. Arquitectura de software 45
5.5.1. Patrones arquitectónicos 45
7
5.5.1.1. Publish Subscribe 46
5.6. Ingeniería de software 46
5.6.0.1. Patrones de diseño 46
5.6.0.2. Patrones creacionales 47
5.6.0.2.1. MVC 47
5.6.0.2.2. Singleton 48
5.6.0.3. Patrones estructurales 49
5.6.0.4. Patrones de comportamiento 49
5.7. Diseño de interfaces 49
5.7.1. Diseño de una interfaz de usuario 50
5.7.2. Diseño de interfaz para web 51
5.7.2.1. Diseño responsivo 52
5.8. Experiencia de usuario (UX) 53
5.9. Usabilidad 55
5.10. Filosofías de diseño 57
5.10.1. Flat Design 57
5.10.2. Material Design 58
6. Antecedentes 59
6.1. Plataformas de investigación, colaborativas y educativas 59
6.1.1. Schoology 59
6.1.2. Trello 61
6.1.3. Claroline 62
6.1.4. Dokeos 62
6.2. Investigaciones científicas 64
6.2.1. Sistema de información y gestión proyectos de grado de la
Universidad del Valle 64
8
6.2.2. Sistema de información para la gestión de trabajos de grado de la
Universidad de Cartagena 64
6.2.3. Sistemas de Elearning abiertos basados en servicios 65
6.2.4. Desarrollo de un bloque para la gestión de tutorías en Moodle 65
7. Desarrollo 66
7.1. Metodología 66
7.1.1. Investigación en diseño y desarrollo 66
7.1.2. Reuniones con stakeholders 67
7.1.3. Diseño y maquetación de la interfaz de usuario 68
7.1.4. Etapa de diseño de base de datos 68
7.1.5. Etapa de desarrollo de la plataforma web 68
7.1.6. Pruebas 69
7.1.7. Elaboración de documento científico 70
7.2. Diseño 70
7.2.1. Estudio del color 70
7.2.2. Tipografía 71
7.2.3. Iconografía 72
7.3. Implementación 72
7.3.1. Levantamiento de requisitos 72
7.3.2. Diseño detallado de software 73
7.3.3. Arquitectura 75
7.3.4. Implementación de la plataforma 79
7.3.4.1. Base de datos de la plataforma 79
7.3.4.2. Maquetación de la plataforma usando Wireframes 79
7.3.4.3. Estructuración e implementación de módulos de la plataforma 81
8. Pruebas y análisis 85
9
8.1. Primera reunión con stakeholder principales 85
8.2. Pruebas de aceptación de los stakeholders 86
8.3. Encuestas de experiencia de usuario 87
9. Conclusiones y trabajos a futuro 92
10. Referencias 97
11. Anexos 111
10
3. Lista de figuras 5.1. Esquema Web 1.0.
5.2. Esquema Web 2.0.
5.3. Esquema Web 3.0.
5.4. Esquema PHP.
5.5. Esquema SQL.
5.6. Esquema Servicios Web.
5.7. Esquema de Arquitectura Orientada a Servicios.
5.8. Ejemplo de manejo de datos con MongoDB.
5.9. Esquema base de datos NoSQL Riak.
5.10. Movimiento de datos con Cassandra.
5.11. Arquitectura lógica de Neo4j.
5.12. Ejemplo de Base de Datos Relacional.
5.13. Ejemplo de patrón de bases de datos relaciona ‘Maestro Detalle’.
5.14. Esquema de la técnica de programación ORM.
5.15. Esquema del patrón de diseño MVC.
5.16. Esquema del patrón Singleton.
5.17. Esquema Diseño Responsivo.
5.18. Esquema Experiencia de Usuario (UX).
5.19. Ejemplo de diseño Material Design.
5.20. Captura de la plataforma educativa Schoology.
5.21. Captura de la plataforma colaborativa Trello.
7.22. Estilos de tipografía Roboto.
7.23. Estructura de carpetas de aplicación web.
7.24. Wireframe objeto detalle de Sherlock.
7.25. Página web informativa de Sherlock.
7.26. Detalle de un proyecto de grado.
11
8.27. Respuestas pregunta 1: Considero que Sherlock brinda apoyo en la creación y
gestión de grupos de investigación.
8.28. Respuestas pregunta 2: Considero que Sherlock ayudará a facilitar los
procesos de planteamiento de anteproyectos de grado.
8.29. Respuestas pregunta 3: La plataforma de investigación facilita la gestión de
los proyectos de investigación mediante la gerencia de un calendario de
actividades y administración de archivos.
8.30. Respuestas pregunta 4: Los procesos de búsqueda de antecedentes son más
amigables utilizando la plataforma de investigación.
8.31. Respuestas pregunta 5: La aplicación web es intuitiva y amigable con el
usuario en el proceso informativo de los docentes investigadores, proyectos de la
bolsa y semilleros de investigación de la carrera de Ingeniería Multimedia.
8.32. Respuestas pregunta 6: La plataforma de Sherlock posee buenos tiempos de
reacción, permitiendo la navegación en ella de forma ágil.
8.33. Respuestas pregunta 7: La plataforma Sherlock brinda buenas alternativas de
información para colaborar en el proceso de exploración y utilización de las
diferentes funcionalidades que ofrece.
8.34. Respuestas pregunta 8: La plataforma me permite estar al día con el estado y
el proceso de los proyectos de investigación a través de la recepción oportuna de
notificaciones.
12
4. Introducción La era de la información ha traído consigo un fenómeno en la sociedad actual
frente a los avances tecnológicos, y la forma en que estas herramientas son
implementadas, por esto cabe recalcar que es importante para un desarrollador
web no solo conocer las herramientas que tiene a su disposición, sino también el
conocer el porqué de dichas herramientas. El proporcionar una visión histórica de
la web y saber cómo ha sido su evolución es importante para todo pionero de las
nuevas adquisiciones tecnológicas.
Tim Berners-Lee, conocido como el padre de la web ( World Wide Web), creó el
sistema de localización de recursos (URL) y el lenguaje de etiquetas (HTML) de tal
forma que mediante enlaces permitiera a todo científico en el mundo acceder a la
información semejante a la que consultasen [1]; hoy en día la web es algo muy
distinto a lo que Tim Berners-Lee concibió, es decir, se popularizó y se vio en la
necesidad de evolucionar, dando paso a las páginas web dinámicas, donde el
desarrollador interactúa con sus herramientas, mejor conocida como la web 2.0.
El concepto de web 2.0, se ha potenciado por los entornos de aprendizaje
personalizados [2], este concepto ha generado nuevos escenarios de uso de las
tecnologías de la web, dando paso a la creación de entornos personales como
Facebook y Google, los cuales contienen características destacables como los
sistemas orientados a servicios, aprendizaje y para el usuario [2].
Frente a esta situación, actualmente internet se puede ver como una fuente de
recursos, información, servicios y aplicaciones, cuyos beneficios generan una
rapidez y una variedad de nuevas posibilidades al optimizar la rigidez y la lentitud
de los organismos como las universidades, ante este conflicto es evidente buscar
mecanismos que ayuden a estas entidades a adaptarse a las nuevas tecnologías
13
de una forma sencilla, facilitando la comunicación entre los integrantes de una
comunidad y el trabajo colaborativo para la gestión, el desarrollo y la culminación
de proyectos y semilleros de investigación que están con el fin de aportar algo a un
público en particular o la sociedad misma, sin que se pierda el registro de su
proceso con fines futuros de lograr un ciclo constante cambio y mejoramiento.
El proyecto entonces, está centrado en el área de investigación de Ingeniería
Multimedia, con visión futura de extenderse a todas las carreras de la Universidad
de San Buenaventura Cali, mediante la gestión de anteproyectos de grado,
proyectos de grado, grupos de investigación, docentes investigadores y
documentación, permitiendo una mejor administración de estos procesos; a raíz de
esto se diseñará e implementará una plataforma investigativa llamada “Sherlock”,
que se encargue de la integración de todos los ámbitos anteriormente
mencionados. Este desarrollo busca complementar y optimizar los procesos
institucionales de la carrera mediante el uso de nuevas tecnologías, con el fin de
acortar la brecha entre estudiantes y docentes frente al entorno investigativo.
4.1. Objetivos
4.1.1. Objetivo general
Desarrollar una plataforma web para la investigación, información y gestión de los
procesos de investigación de Ingeniería Multimedia de la Universidad de San
Buenaventura Cali.
4.1.2. Objetivos específicos
- Realizar un estudio y selección de los requerimientos más relevantes para el
óptimo desarrollo de la plataforma de acuerdo a las características más
representativas de las plataformas de investigación y similares investigadas.
14
- Diseñar la plataforma de investigación de acuerdo a los requerimientos
identificados.
- Desarrollar la plataforma de investigación implementando la lógica y
algoritmos complejos estructurados.
- Validar y corregir el funcionamiento de la plataforma de investigación por
medio de pruebas de usuario, de funcionalidad e interacción.
- Elaborar un artículo científico del proceso de desarrollo de la aplicación web
y los aportes investigativos que enriquecen el concepto E-learning y la
plataformas web.
4.2. Descripción del problema En la Universidad de San Buenaventura Cali, el alumno necesita adquirir
competencias de distinto tipo si desea ejercer su profesión a nivel profesional, esto
genera diferentes prácticas en donde el estudiante “con papel y lápiz” realiza
sesiones de trabajo y en definitiva lo que aumenta potencialmente es el número de
ocasiones en las que podría necesitar una tutoría por parte del director o supervisor
de tesis para regular su proyecto, por ende es necesario organizar una gestión de
las tutorías de manera más eficiente y sencilla tanto para los alumnos como para
los profesores.
Los avances en los aplicativos web permiten la participación en varios niveles
dentro de una activa comunidad de educadores, líderes institucionales y
desarrolladores inspirados en las actividades de enseñanza, aprendizaje e
investigación [3].En el ámbito institucional se necesitan aplicaciones con unas
características distintivas, generando un gran cambio como lo son: los datos
masivos, acceso concurrente, variedad de interfaces de usuario, entre otros, lo que
implica una diversidad en funcionalidad y soluciones a problemas planteados
anteriormente [4].
15
Actualmente el proceso de entrega de trabajos de grado presentan inconvenientes
por la difícil consecución de antecedentes por parte de tesis culminadas en la
Universidad San Buenaventura Cali, donde acceder a esta información llega a
tornarse imposible, esto es debido al deterioro y en muchos casos a la pérdida de la
evidencia física de dichos trabajos [5], además de la pérdida de información,
tampoco hay acceso a una documentación pertinente que sirva de guía para el
desarrollo adecuado de los proyectos de grado.
Durante la carrera se encuentran problemas por parte de los estudiantes en el
momento en que desean plantear su propio anteproyecto de grado, a la hora de
cumplir los tiempos de entrega y en algunos casos por parte del docente
encargado a la hora de evaluar dichos proyectos. La constante entrega de
proyectos generan trámites y gastos engorrosos, como el tiempo, dinero, papelería,
entre otros [5]. En la carrera de Ingeniería Multimedia, se crea una bolsa de
proyectos de grado por semestre, en la cual se convoca a una reunión para la
socialización de dichos proyectos, expuestos por la planta docente, esta práctica
podría mejorarse brindando información anticipada de los mismos, dando más
tiempo al alumnado para estudiarlos, sacar dudas y finalmente elegir la tesis que
más se ajuste a sus temas de interés. En la actualidad el proceso de Gestión de
grupos de investigación es realizado manualmente por los funcionarios del área,
esta práctica al ser presencial, implica un esfuerzo adicional para ellos y provoca
una descentralización de la información, lo cual hace difícil el acceso a ella por
parte los estudiantes.
El seguimiento al proceso de desarrollo del proyecto de grado presenta dificultad
al momento, pues éste carece de una formalidad y automatización, lo cual dificulta
la el control del progreso y la validación del cumplimiento de los objetivos,
perjudicando los propósitos de calidad establecidos en la visión institucional de la
Universidad de San buenaventura Cali, partiendo de la forma como actualmente se
16
gestiona el proceso de desarrollo de trabajos de grado de la Ingeniería Multimedia,
por esto se plantean los beneficios de llevar una buena gestión de dicho
procedimiento al tener registro del recorrido por el que pasó el proyecto de grado
[6].
La motivación de crear Sherlock surge como solución a los problemas de
información, documentación y gestión de los procesos de investigación de la
carrera de Ingeniería Multimedia de la Universidad de San Buenaventura Cali,
logrando un espacio amigable, práctico y que a su vez se adapte a la forma como
está evolucionando la web.
4.3. Justificación En el entorno académico de una universidad o institución educativa es importante
el proceso o recorrido formativo que vive un estudiante, independiente de la carrera
universitaria que el mismo curse, debido a que el alumnado es la razón de ser de
este tipo de entidades; ahora viéndolo desde un punto de vista más cognitivo, el
proceso de estudiar una carrera universitaria, está ligado fuertemente al ámbito
investigativo, pues para que un estudiante pueda culminar su proceso académico y
adquirir el título de profesional, deberá de aportar conocimiento a su contexto,
desde los conocimientos que ha adquirido en todo el trayecto interdisciplinario, por
esto, la idea de crear una plataforma investigativa mejoraría la forma de comunicar
la información, dar un mejor soporte a la documentación y optimizar la gestión de
los trabajos de investigación, a través de una comunicación más progresiva [7].
Una aplicación web podría mejorar los procesos de investigación influyendo
sustancialmente en el proceso educativo de un estudiante, debido a que tiene que
pasar un por una etapa de aprendizaje y formación profesional a la hora de trabajar
en proyectos de desarrollo mucho más complejos, ya que ofrecen ventajas muy
significativas como accesibilidad, soporte de información, actualización, entre
17
otros; de aquí nace la razón de crear una plataforma de investigación, por el
momento, de Ingeniería Multimedia de la Universidad de San Buenaventura Cali, a
través de un aplicativo web para ordenadores que dispondrá de una interfaz
agradable e intuitiva, mediante un dashboard o menú legible y simple que le
permitan al usuario, ya sea estudiante o docente, desenvolverse fácilmente con el
programa; además esta plataforma dispondrá de roles de usuarios como
estudiante, profesor, investigador, secretaria, administrador y súper-administrador
para una mejor administración de todo el movimiento que permita el sistema, es
decir, que los que tengan funciones u opciones más privilegiadas, como lo son el
administrador y súper-administrador, tendrán acceso a un admin-panel en vez de
un dashboard, para así llevar un control más adecuado de la aplicación. Sherlock
como es bien sabido, al encargarse de toda la parte de investigación de la carrera,
será desarrollado en base a 5 normativas o secciones para el mejor uso de su
capacidad, los cuales son:
- Anteproyectos de grado: sección que contempla grupos abiertos y cerrados,
donde los grupos abiertos son la posibilidad de que los alumnos puedan
buscar compañeros de grado; y los grupos cerrados tienen la posibilidad de
solicitar una tesis de grado o plantear una; entonces cuando un alumno está
en proceso de selección de anteproyectos, podrá hacerlo de una forma más
eficiente, ahorrando significativamente el tiempo tanto del docente como de
él mismo, ya que todo este procedimiento pasará por una serie de filtros
gestionados desde la web; además la asignación de supervisor de tesis y
solicitación de proyectos expuestos en la bolsa por los profesores será
manejado de forma más óptima evitando todos los inconvenientes que trae
consigo estos procesos de selección, como del uso apropiado del tiempo.
- Proyectos de grado: esta normativa será una herramienta para la gestión de
los proyectos de grado para así llevar un registro de lo que ha sucedido en el
18
desarrollo de la tesis, siendo un mediador favorable tanto para el docente y
el estudiante, gracias a que plasmara atributos pertinentes como: cuándo
empezó el proyecto, cuántas prórrogas lleva, quien es el director o supervisor
de la tesis, en que proceso se encuentra el proyecto de grado, las citas de
avances y asesorías, y quienes son los miembros que conforman el grupo
que está desarrollando dicha tesis. Todo lo anterior podrá ser gestionado
mediante Sherlock generando así un buzón de actividades y cronograma de
la tesis. Esto permitirá que cuando se presenten inconvenientes en el
transcurso de la tesis, como que un estudiante o grupo pierda el proyecto de
grado, el registro creado y almacenado por Sherlock servirá de mediador y
solucionador de problemas a favor del docente o del grupo de la tesis, ya que
a través de la plataforma se tendrá un panorama más claro y contundente
del proceso por el que pasó el proyecto.
- Grupos de Investigación: contempla información de que grupos de
investigación y semilleros existen, cuyos datos constan de qué horario tiene
dispuesto el grupo, quien lo dirige y que tema maneja dicho semillero o
grupo de investigación, además dispondrá de cuáles de estos están
disponibles a los estudiantes para su vinculación.
- Docentes investigadores: la idea de esta funcionalidad es que la comunidad
académica pueda ver el perfil y los logros de los docentes, es decir, que
podrán enterarse de que materias dirige el profesor, que tesis ha dirigido, los
temas de investigación que se encuentra vinculado y los temas de interés
del maestro.
- Documentación: normativa donde se definirá cada uno de los documentos y
normas sobre los cuales el estudiante trabajará su proyecto de grado, como
el formato de anteproyecto de grado, las normas APA, etc., además de una
sección especial de preguntas frecuentes (FAQ) referentes al proceso de
19
selección, desarrollo y finalización de una tesis de grado. Y por último todas
las tesis de grado van a quedar almacenadas en repositorio para que los
estudiantes puedan investigar todos los proyectos de grado que han
culminado, ya sea con fines investigativos o de adquisición de
conocimientos.
El desarrollar esta plataforma investigativa tendría un impacto considerable para
los estudiantes y personas en formación de la carrera de Ingeniería Multimedia de
la Universidad de San Buenaventura Cali, que cumplan con los criterios de un
semestre, necesario o válido, para empezar su proceso de proyecto de grado,
optimizando el tiempo de desarrollo y mejorar la gestión del mismo, aportando
fuertemente a la idea de que se mejoraría en gran medida el conducto regular de
las investigaciones de la carrera ya que el grado de dificultad o nivel de
competencia no son del nada requeridos para la implementación y usabilidad de la
aplicación.
20
5. Marco teórico
5.1. Marco conceptual
5.1.1. Prórrogas
El concepto de prórroga puede ser definido como la ampliación de un plazo de
tiempo para la entrega de un ejercicio o un trabajo determinado. El concepto se
aplica a determinadas circunstancias que tenga el alumno a la hora de presentar
su proyecto de grado [8].
5.1.2. Antecedentes
Es una constancia legal donde se lleva todos los registros una persona, grupo o
institución ya sean tesis de grado, maestrías, doctorados, investigaciones, artículos
empresas, etc., que ayudan a avalar una investigación, es decir, que sirve de
testimonio para fortalecer un estudio que se piensa a realizar con el fin de aportar
una novedad a una línea de interés, en el caso que se plantea este documento, una
carrera universitaria.
5.1.3. Líneas de investigación
Una línea de investigación es el resultado de la unión de muchos temas y puntos de
interés que deben ir vinculándose al eje temático en que se desarrollan, ya sea por
medio de trabajos, artículos publicados, investigaciones, desarrollos y la
vinculación con grupos de trabajos; además esto va constituyendo una perspectiva
de trabajo investigativo. [9]
5.1.4. Docente de investigación
Un Docente profesional de la educación puede aproximarse a la realidad educativa
desde diferentes perspectivas así como utilizar diversos modelos de investigación
para darle apoyo al alumnado, servirle de guía en su proceso académico y
21
profesional, dando como resultado un buen desempeño por parte del estudiante y a
su vez cumpliendo con los estándares deseados de la institución.
5.1.5. Grupos de investigación o semilleros
En el mundo académico o universitario es una estrategia pedagógica
extracurricular que tiene como objetivo fomentar el desarrollo investigativo del
estudiante, además surge como respuesta a la necesidad de brindar espacios
académicos y de esta manera complementar su formación profesional.
5.2. Procedimientos Administrativos Conjunto de reglas y políticas de una organización donde se rige el
comportamiento de los usuarios frente al sistema, en general los usuarios bajo
ninguna circunstancia deben tener acceso a la base de datos. Los procedimientos
administrativos involucran los trabajos de grado: documento escrito que se
presenta para obtener un título de acuerdo a los conocimientos adquiridos en la
carrera. [5]
5.2.1. Elaboración y entrega de Propuesta de Trabajo de Grado
Esta es la primera etapa del proceso para la presentación de trabajos de grado, en
esta fase se plantea la idea y se formula una propuesta con la ayuda del tutor
encargado para ser entregada al comité de evaluación con el fin de ser registrada.
[5]
5.2.2. Elaboración y Entrega de Anteproyecto de Trabajo de Grado
Una vez que se cuenta con un tema de tesis, se debe establecer la metodología
apropiada para llevar a cabo el estudio, es decir, se especifica las actividades y los
momentos en que habrán de ejecutarse para desarrollar la tesis y obtener los
resultados previstos por los objetivos [10]. Si el anteproyecto es rechazado, el
22
estudiante debe cambiar completamente su proyecto, si es aplazado entonces se
procederá a realizar las correcciones pertinentes para una posterior entrega al
comité de evaluación, si en su tercer intento no es aprobado, pasará a ser
rechazado y deberá cambiar su proyecto, por último si el estudiante es aprobado
entrará a elaborar su proyecto final. [5]
5.2.3. Elaboración y Entrega de Proyecto Final
Esta etapa es la fase final de la tesis de grado donde se realizan las metas
especificadas en el Anteproyecto, las cuales son revisadas y asentadas con el fin
de llevar un registro del proceso que se tuvo, y finalmente culminar con la
investigación. Como resultado, se obtiene un conjunto de información de todo lo
investigado anteriormente, con el fin de dar un aporte a las líneas de investigación
que se relacionaban con la tesis [10]. Solo si el 70% del proyecto final es entregado
con buenas pautas el estudiante podrá optar por su primera prórroga para el
siguiente semestre y deberá terminar lo establecido en su proyecto final para
presentarlo nuevamente ante el comité; de igual forma si en su segundo intento el
proyecto no está culminado pero tiene un 90% del desarrollo, el estudiante podrá
pedir su segunda prórroga y presentarlo una última vez; finalmente si en su tercer
intento no está terminado, será rechazado y por ende perderá su tesis de grado,
pero si de lo contrario el proyecto final está terminado al 100%, el estudiante podrá
sustentar su tesis, cumpliendo de esta manera con el requisito de grado
establecido de la universidad.[5]
5.3. Desarrollo web
5.3.1. Historia y evolución del desarrollo web
El concepto original de la web (en este contexto, llamada la web 1.0) era páginas
estáticas HTML que no se actualizaban frecuentemente, la cual tuvo lugar
inicialmente en el año 1980 cuando el físico Tim Berners-Lee con la propuesta de
23
una nueva estructura de hipertexto para compartir documentos, similares a lo que
hoy conocemos como enlaces de las páginas web; pero el real apogeo se dio al
relacionarse con el ingeniero de sistemas Robert Cailliau, con la idea de
implementar un sistema de hipertexto para internet, dando origen a lo que hoy se
conoce como WorldWideWeb (W3). [11]
Figure 5.1. Esquema Web 1.0. [13]
Con el tiempo la posibilidad de conectarse con cualquier persona alrededor del
globo terráqueo y compartir información era cada vez más llamativa, por lo que la
páginas web pasaron de ser solo un medio de comunicación entre científicos para
compartir documentos, a incentivar el interés de las grandes empresas de poder
tener más interacción con sus clientes, naciendo nuevas estrategias comerciales,
de forma online, pero había un impedimento significativo por partes de los sitios
web estáticos de la época. La necesidad de generar más dinamismo a través de
internet, impulsó la iniciativa de las web dinámicas (llamadas webs 1.5), ya que en
ambos sentidos, conseguir visitas y tener una estética visual era considerado como
el factor determinante de una página web, esto genero una aproximación
finalmente a lo que se denominó la web 2.0 donde actualmente el uso está
orientado a la interacción de páginas y las redes sociales [4]. Este acontecimiento
logró una transformación en la comunicación y la manipulación de la información,
24
a través de la retroalimentación de comentarios de texto, imágenes, videos, etc.,
dándole un espacio importante en el ciclo de comunicación al usuario, donde el
éxito y el progreso ahora no está solamente en manos del proveedor del sitio web,
sino del comportamiento del usuario mediante la creación y actualización de
contenidos que proporcionan una mejor experiencia, este fenómeno se denomina
comunicación colectiva.
Figure 5.2. Esquema Web 2.0. [13]
Se estima que con el tiempo la web 3.0, así como la web 2.0 dio origen a las redes
sociales, esta dará paso a las redes semánticas, donde el concepto clave en esta
reforma será la “Personalización”, mediante la incrustación de inteligencia artificial
en la páginas web, ejecutadas y ordenadas por motores y procesadores de
información [12], suponiendo una nueva era de entendimiento para el usuario,
donde el concepto de navegar ya no estará ligado solo a la búsqueda de
información, sino a la comprensión de la misma. La manipulación de los datos
personales de los usuarios con el rastreo de los perfiles a través de las redes
sociales, y la información de navegación, no solo de los sitios web que frecuentan,
sino también los contenidos multimedia que crean y buscan, donde el
procesamiento del mismo tendrá un nuevo significado para la información.
Empresas como Google son conscientes de este cambio que se avecina, por lo que
25
ya se puede experimentar los primeros pasos hacia la aclamada web 3.0 a través
de tecnologías que usan los usuarios constantemente, pero cuyo potencial es en
ocasiones subestimado e ignorado, o simplemente la ambigüedad actual del
mismo ocasiona tal comportamiento.
Figure 5.3. Esquema Web 3.0. [13]
5.3.2. Desarrollo Back-End
Este concepto hace referencia a todo el trabajo o desarrollo que se implementa y se
ejecuta en el lado del servidor, donde se genera toda la lógica computacional
central de un sistema web, de software y de información [14]. Todas los datos y
solicitudes enviados desde el Front-End son manipuladas en pro del buen
funcionamiento de un software, páginas web o aplicativo web, a través de las
conexiones a la base de datos permitiendo la consulta, creación, actualización y
eliminación (CRUD) de los datos almacenados en las tablas de una base datos;
también la creación de algoritmos complejos, el manejo de la lógica de negocio,
performance, servicios web, etc. [15]. Para llevar a cabo el desarrollo Backend se
utilizan lenguajes de programación, de los cuales se hablará a continuación,
específicamente los que se usarán en este proyecto.
26
5.3.2.1. PHP (Hypertext Pre-processor)
Lenguaje de programación multiplataforma creado por Rasmus Lerdorf,
interpretado y de código abierto diseñado esencialmente para la creación de
páginas web dinámicas. Principalmente se usa en el lado del servidor en una
configuración cliente-servidor [16].
Las características más relevantes de PHP son:
- Lenguaje multiplataforma, se puede usar en Linux, Windows, Mac-OS, etc.
- Posibilidad de programación orientada a objetos.
- Licencia GPL, por ende no comercial y de fácil acceso.
- Gran comunidad y documentación altamente disponible.
- Capacidad de conexión con diversas bases de datos como por ejemplo
Mysql, PostgreSQL, SQLite, Oracle, etc.
- Vastas funciones nativas sin necesidad de incluirlas o importarlas.
- Al ser un lenguaje interpretado, su código no necesita ser compilado,
también es su desventaja ya que disminuye su tiempo de ejecución frente a
lenguajes compilados.
Figure 5.4. Esquema PHP. [17]
5.3.2.2. SQL
Lenguaje de consulta estructurada (Structured Query Language), es un lenguaje de
programación e interactivo desarrollado por primera vez a principios de los años 70
27
en IBM por Raymond Boyce y Donald Chamberlin, y lanzado comercialmente en el
año 1979 por Relation Software Inc. (Conocido actualmente como Oracle
Corporation) [18], que permite la manipulación o gestión de la información de una
base de datos relacional [19], obteniendo, creando, actualizando y eliminando los
datos de las tablas mediante una consulta estructurada. Muchas herramientas
para la gestión de base de datos con compatibles con SQL, mediante extensiones
propias del lenguaje como tal.
Figure 5.5. Esquema SQL. [20]
5.3.3. Desarrollo Front-End
Este concepto hace referencia a todo el trabajo o desarrollo que se implementa y se
ejecuta en el lado del cliente, a través de la interfaz gráfica que le es proveída al
usuario, por lo tanto no solo es la encargada de la parte estética de un sistema,
sino también de la experiencia de usuario, la funcionalidad y la usabilidad de la
aplicación. Por lo tanto el Frontend tiene como finalidad no solo mostrar de forma
28
agradable la información, sino también plasmarla de forma tal que le sea fácil al
usuario la comprensión y navegación en una aplicación web. [21]
5.3.3.1. HTML
Son siglas de HyperText Markup Language lenguaje de marcas de hipertexto,
donde hace referencia al lenguaje marcado para la elaboración de páginas web.
Define una estructura básica y un código para la definición de contenido de una
página web en sus diferentes versiones.
5.3.3.2. CSS
Hojas de estilo de cascada (Cascading Style Sheets), es un lenguaje que permite
crear la presentación o comportamiento de un documento estructurado en un
lenguaje de marcado, como lo son HTML o XML [22], esto ofrece un gran manejo a
los desarrolladores de controlar el estilo y el formato de diferentes páginas web
mediante un dispositivo de lectura. En cuanto a desarrollo, existen dos formas de
implementar los estilos a un documento: dentro de una etiqueta HTML o en un
archivo con extensión .css anexado al documento. Para el uso como tal de esta
poderosa herramienta se usan un conglomerado de selectores, entre los que se
destacan ‘.’ para las clases, permitiendo la distribución de los estilos a diferentes
objetos del documento, o ‘#’ cuando se quiere dar un estilo personalizado a un solo
objeto, de forma atómica, entre otras.
5.3.3.3. JavaScript
Es un lenguaje de programación interpretado de código abierto generalmente
usado en el desarrollo de páginas web, con una sintaxis parecida al lenguaje java,
no obstante tiene diferencias importantes ya que se utiliza principalmente del lado
del cliente es decir, se ejecuta en el ordenador y no en el servidor, permitiendo crear
efectos atractivos y dinámicos en una página o aplicación web. La principal ventaja
es que al estar alojado en el ordenador del usuario, la capacidad de respuesta es
más rápida de lo habitual y al ser un lenguaje de programación permite el uso de
29
variables, condicionales, bucles etc. Un inconveniente de este lenguaje es que si el
usuario tiene desactivado JavaScript en su ordenador, no se mostraran los efectos
sin embargo hoy en día la mayoría de los usuarios navegan por la web con
JavaScript activado [23].
5.3.3.4. Ajax
Tecnología web que sirve para enviar peticiones web de forma asíncrona, es decir,
que no es necesario dirigir los datos a través del desplazamiento de una página
web a otra, logrando así una carga de la página actual. Con la implementación de
AJAX se logra introducir en el usuario la experiencia de que no se ha recargado o
cambiado la página, optimizando el tiempo en que se muestran los resultados, y
principalmente la carga del servidor, ya que solo muestra los datos relevantes y no
todo el contenido que dispone la página [24].
5.3.3.5. Jquery
Framework de desarrollo basado en el lenguaje de programación JavaScript, que
permite simplificar la realización de procesos para páginas web dinámicas, siendo
un complemento poderoso para HTML, mediante funcionalidades tales como el
manejo de la tecnología AJAX, manejo de eventos, manejo del árbol DOM, el
desarrollo de animaciones, etc.; Además esta herramienta tienes como sus
principales características su flexibilidad, su facilidad para implementar plugins y
como código abierto, cuenta con una vasta fuente de soporte [25].
5.3.4. Servicios web
Es una tecnología que utiliza un conjunto de protocolos y estándares que sirven
para intercambiar datos entre aplicaciones. Normalmente las aplicaciones de
software desarrolladas en lenguajes de programación diferentes se ejecutan sobre
cualquier plataforma y pueden utilizar los servicios web para intercambiar datos en
redes de ordenadores o internet. [26]
30
Figure 5.6. Esquema Servicios Web. [27]
5.3.4.1. SOA (Service Oriented Architecture)
La arquitectura SOA establece un marco de diseño para la integración de
aplicaciones independientes, las cuales se ofrecen como servicios. La forma
normalmente implementada es mediante servicios web, una tecnología basada en
estándares e independiente de la plataforma en la que se aplica; SOA puede
descomponer las aplicaciones en un conjunto de servicios e implementar esta
funcionalidad en forma modular, permitiendo la flexibilidad de interacción evitando
incongruencias entre los componentes de la infraestructura (que determinan la
comunicación) y las interfaces definidas. [28]
A pesar de fue construido bajo los mismo principios, SOA no es lo mismo que
servicios web, lo cual sugiere tecnologías como SOAP y XML; por lo que un servicio
web se puede considerar como una relación consumidor-proveedor, en cambio SOA
se empeñan en diseñar una arquitectura de trabajo adecuado para un entorno de
servicios web, siendo más que un conjunto de tecnologías, la cual opera
independientemente de cualquiera de ellas. [29]
31
Ventajas
- Capacidad estratégica para la integración de lógica de negocio, datos y
conocimiento de una organización.
- Accesibilidad a servicios desde cualquier dispositivo con cualquier sistema
operativo.
- Mejoramiento en el flujo de información.
- Transparencia de ubicación.
- Mejoramiento en la traducción de datos.
Desventajas
- Integración compleja en aplicaciones con funcionalidad de interfaz gráfica.
- Depende de la implementación de estándares
- No es recomendado para aplicaciones que requieren alto nivel de
transferencia de datos
- Incrementalmente se hace difícil y costoso el ser capaz de cumplir con los
protocolos y comunicarse con un servicio.
Figure 5.7. Esquema de Arquitectura Orientada a Servicios. [30]
32
5.3.4.2. SOAP
Simple Object Access Protocol, es un protocolo de servicios web orientados a
objetos el cual está basado en XML. SOAP especifica cómo codificar una cabecera
HTTP y un archivo XML como respuesta mediante el cual una aplicación en un
dispositivo pueda comunicarse con otra aplicación en otro dispositivo y así
transmitir información entre sí [31]. Cuando se utiliza SOAP la estructura básica del
protocolo se divide en 3 partes:
- Envelope: se especificar el mensaje como SOAP, se define como tal el
contenido y cómo será procesado.
- Header: se incluye la información específica del mensaje, así como de los
atributos necesarios para la autenticación.
- Body: se incluye la información necesaria para la fase final, por ejemplo los
parámetros de llamada y respuesta de una petición. [32]
Entre sus cualidades más significativas está su interoperabilidad, su capacidad de
operar independiente de la plataforma y lenguaje sobre el que corra, además tiene
compatibilidad con cualquier protocolo que esté en capacidad de transmitir texto, y
cabe apuntar que soporta SSL, como WS-Security. [33]
5.3.4.3. REST
Entendido como REpresentational State Transfer, es una arquitectura para la
declaración de servicios web, creada por Roy Fielding en el año 2000, la cual corre
sobre el HTTP mediante sus métodos, cuyos recursos son declarados y
consumidos individualmente mediante URIs.
REST también conocida bajo el concepto de RESTful, utiliza los métodos básicos
de HTML para integrar su arquitectura:
33
- GET: permite acceder a datos o recursos de solo lectura.
- POST: permite crear un nuevo recursos
- PUT: permite actualizar recursos existentes
- DELETE: permite eliminar recursos. [34]
REST permite el uso de muchos formatos de datos, como lo es JSON, el cual es
comúnmente apreciado en los servicios web creados para el uso de APIs para
aplicaciones web, favoreciendo la usabilidad y sostenibilidad de las mismas. Algo
que cabe apuntar de esta arquitectura es que al correr sobre HTTP, es más
vulnerable que SOAP, lo cual es muy común que sus desarrollos y documentación
sea más fácil de entender.
5.4. Bases de datos Se define como base de datos a una serie de datos organizados y relacionados
entre sí, los cuales son recolectados y aprovechados por los sistemas de
información de una empresa o un negocio en particular [35].
5.4.1. Base de datos no relacionales (noSQL)
Una base de datos noSQL es una amplia clase de sistema de gestión de bases de
datos, las cuales son utilizadas para describir un subconjunto de bases de datos
que difiere en varios modelos de bases de datos tradicionales. Estos sistemas se
clasifican por la forma en cómo almacenan sus datos, al no manejar la flexibilidad
que poseen las DBs tradicionales como las relaciones estructuradas entre tablas,
se dividen en categorías orientadas a documentos, orientadas a columnas, en clave
valor y en grafo. [36]
Ventajas
- No tienen esquemas.
- Evitan las operaciones join y escalan horizontalmente.
34
- Evita el cuello de botella.
- Pueden manejar enormes cantidades de datos en menor tiempo que
las bases de datos relacionales, especialmente sobre contenido multimedia.
- Eficientes cuando se trata de manejar una grande cantidad de datos
en tiempo real.
- Su implementación en proyectos es más económico que las bases de
datos relacionales, a excepciones de los sistemas de código libre.
- Diferentes bases de datos NoSQL para diferentes tipos de proyectos.
5.4.1.1. MongoDB
Esta NoSQL es una base de datos orientada a documentos escrita en C++, cuya
particularidad se basa en no guardar datos en registros, sino que almacena estos
datos en documentos, los cuales son depositados en BSON, una representación
binaria del tipo de datos JSON. MongoDB tiene una diferencia sobresaliente con
respecto a las bases de datos relacionamos, es la posibilidad de tener múltiples
esquemas, lo cual es un arma de doble filo, ya que solo garantiza operaciones
atómicas a nivel de documento, por lo que sus características a nivel de desarrollo
deben ser estudiadas a la hora de escogerla como motor de base de datos en un
proyecto, como por ejemplo un proyectos donde se necesita indispensablemente
de transacciones claramente sería una desventaja en el proceso, lo que sería más
recomendable optar por otro sistema de base de datos. [37]
En el caso de que se quiera el uso de un lenguaje de programación específico,
MongoDB tiene a su disposición drivers para una cantidad considerable de ellos,
entre los que se destacan C#, Java, Node.js, PHP, Python, Ruby, C, C++, Perl o
Scala; a pesar de esta posibilidad considerable para los desarrolladores Backend,
no todos los drivers que existen para esta NoSQL tienen el mismo estado madurez.
35
Figure 5.8. Ejemplo de manejo de datos con MongoDB. [38]
5.4.1.2. Riak
Base de datos orientada a Clave-Valor, basada en el sistema de base de datos
NoSQL y Dynamo, de código abierto, el cual fue desarrollado por Basho
Technologies. Esta herramienta está disponible para empresas, la nube, la web y
plataformas móviles, brindando un rendimiento escalable y confiabilidad en
diferentes entornos de operación. Riak es considerado un motor de bases de datos
tolerante a fallos, gracias a su distribución por diferentes nodos e implementación
sin una principal instancia. [39]
Riak al ser orientado a Clave-Valor utilizan la estructura bucket/key, siendo la
unidad de organización única que puede emplearse en su uso, que son como en
Java, el paquete y la clase; también su estructura admite el uso de enlaces, donde
la información de un bucket/key puede ser un contenido o un enlace a otro
bucket/key con su propia información. Una característica particular de esta NoSQL
es que permite estructurar el contenido en forma de metadatos, muy parecidas a
las cabeceras de los mensajes HTTP, permitiendo el uso de array asociativos
dentro de los contenidos. [40]
36
Durante la configuración de Riak, los cluster disponen de los siguientes elementos:
- Nodos: nodos físicos, o máquinas, los cuales son la composición de un
cluster.
- Nodos Virtuales: nodos virtuales (o vnodes) que corren en cada máquina, la
cual puede contener uno o varios nodos virtuales.
- Particiones: donde cada cluster tiene un entero de 160-bits dividido en
particiones ecuánimes y Cada vnode reclamará una partición del anillo.
Otras características
- Tolerancias a fallos: vector clocks.
- Tipo de datos: BLOB.
- Triggers: Pre/Post commits.
- Peers (No trabaja con clave maestra)
- Objeto estándar: texto.
Ventajas
- Escalamiento sencillo.
- Buen rendimiento en entornos con aplicaciones de alta disponibilidad.
- Gran variedad de APIs.
- MapReduce en Erlang y JavaScript.
- Enterprise edition.
Desventajas
- Al ser de código abierto, es una falla en el soporte de empresas.
- No es muy madura.
- Limitaciones en inteligencia de negocios.
- Falta de experiencia.
- Tiene limitaciones en las consultas.
- No tiene control de usuarios. [41]
37
Figure 5.9. Esquema base de datos NoSQL Riak. [42]
5.4.1.3. Cassandra
Es un motor de bases de datos NoSQL, de código abierto desarrollado en Java,
orientado a columnas, tiene como una de sus principales características, la fusión
de Dynamo, propio de Amazon con BigTable, de Google, a pesar de que ambos
sistemas son de código cerrado. Inicialmente desarrollado por Facebook con la
idea de dar una solución práctica al problema relacionado con el rendimiento del
motor de búsqueda, específicamente la comunicación entre usuarios, también
conocida como Inbox Search; además herramienta está distribuido y preparado
para big data. Su implementación fue el motor que impulsó el fenómeno de las
redes sociales, debido a la alta perspectiva de crecimiento y la necesidad de ofrecer
un nivel de calidad de servicio fijado; finalmente en el 2008 Facebook libera
Cassandra, convirtiendo en código abierto, y actualmente es mantenida por la
organización Apache. [43] [44]
Características
- Emplea nodos formando anillos.
- Distribuye los datos mediante función hash.
- Escalamiento horizontal (P2P).
38
- Emplea familia de columnas (Big Table + Dynamo).
- CQL lenguaje de consultas.
- Consistencia eventual.
- Soporta múltiples centros de datos
- Compatibilidad con Hadoop y Spark, entre otros.
Características del modelo de datos
- Una tabla de datos por cada instancia de Cassandra.
- Cada familia de columnas puede contener o bien columnas o bien súper
columnas. Las súper columnas son columnas son la agrupación de n-
columnas.
- Cada columna contiene elementos de la forma “Clave-Valor-Tiempo”, donde
el valor del campo tiempo es definible por el usuario.
- Cada fila de una tabla puede tomar valores en columnas distintas de una
familia de columnas que otra fila, es decir, si se dispone de una familia de 5
columnas (A, B, C, D, E), la fila R1 puede tener valores en A y B mientras que
la fila R2 puede tenerlos en A, C, D y E.
Figure 5.10. Movimiento de datos con Cassandra. [45]
39
5.4.1.4. Neo4j
Es un motor de bases de datos NoSQL orientados a grafos, implementada bajo el
lenguaje de programación Java, y desarrollada por Neo Technology, una startup
sueca con sede en San Francisco, cuya primera versión fue lanzada en el año 2012,
y actualmente está bajo 2 tipos diferentes de licencias, una comercial y una Affero
General Public License (AGPL). Un dato interesante referente a Neo4j es que
empresas como eBay, Walmart, Telenor, UBS, Cisco, Hewlett-Packard o Lufthansa
han confiado en las cualidades de Neo4j para mejorar sus servicios.
Este motor usa grafos con la intención de representar los datos y las relaciones
entre ellos; ahora un grafo se define como cualquier representación gráfica
constituida por vértices (ilustración mediante círculos) y aristas (ilustración
mediante líneas de intersección), donde se destacan varios tipos de grafos:
- Grafos no dirigidos: los nodos y las relaciones son intercambiables, por
ejemplo las relaciones de amistad en la red social Facebook.
- Grafos dirigidos: los nodos y las relaciones no son bidireccionales por
defecto, por ejemplo el concepto de seguidores en la red social Twitter.
- Grafos con peso: las relaciones entre nodos tiene algún tipo de valoración
numérica, permitiendo luego realizar operaciones.
- Grafos con etiquetas: definen distintos vértices y relaciones entre ellos, por
ejemplo en la red social Facebook podría definirse nodos por términos como
‘amigo’ o ‘compañero’, y en el caso de las relaciones podrían ilustrarse como
‘amigo de’ o ‘socio de’.
- Grafos de propiedad: básicamente es un grafo con peso, con etiquetas y la
posibilidad de asignar propiedades tanto a nodos como relaciones, como por
ejemplo nombre, edad, país de residencia, nacimiento.
40
Casos de uso
- Detección de fraude: sectores como las bancas, los seguros o el comercio
electrónico.
- Recomendaciones en tiempo real y redes sociales: la posibilidad de conectar
de forma óptima a las personas con productos y servicios en función de la
información personal, sus perfiles en redes sociales y su actividad reciente
en línea.
- Gestión de centro de datos: permite la gestión, el monitoreo y la
optimización de todo tipo de redes físicas y virtuales pese a la gran cantidad
de datos. [A29]
Figure 5.11. Arquitectura lógica de Neo4j. [47]
5.4.2. Base de datos Relacionales
Las bases de datos relacionales cumplen con un modelo relacional, implementado
mediante tablas llena de datos, la cuales se representan en tuplas(filas) que sería
un registro de la tabla y los atributos(columnas) que vendrían siendo los datos de
dichos registros. Permiten establecer relaciones entre datos, las cuales están
guardadas en tablas y a través de dichas conexiones relacionar los datos en ambas
tablas, de ahí proviene su nombre de: Modelo Relacional. Para el desarrollo óptimo
41
de la plataforma de investigación se optó por las bases relacionales frente a las
BDs NoSql, ya que cumple con un modelo relacionado lógicamente, el cual es el
modelo más utilizado en la actualidad para implementar base de datos ya
planificadas. [48]
Ventajas
- Provee herramientas que garantizan evitar la duplicidad de registros.
- Garantiza la integridad.
- Menor redundancia.
- Mayor seguridad de datos.
- Coherencia de los resultados.
- Favorece la normalización por ser más comprensible y aplicable.
- Acceso simultáneo a los datos.
- Datos más documentados.
- Aumenta la productividad de los programadores.
Figure 5.12. Ejemplo de Base de Datos Relacional. [49]
Posterior a lo anterior, la plataforma de investigación (Sherlock) se conectara con
la bases de datos de la Universidad San Buenaventura Cali, la cual es una BDs
relacional gestionada a través de SQL server y así manipular los datos de los
estudiantes que darán uso de la plataforma, además tiene predestinado crecer de
forma continua a través de futuros desarrolladores, resaltando nuevamente la
ventaja que nos brinda la integración y la normalización de la base de datos,
logrando ser más comprensible y aplicable en el futuro.
42
5.4.2.1. MySQL
Es un Sistema de gestión de base de datos relacional, el cual es multihilo y
multiusuario lo que permite ser utilizado por varias personas al mismo tiempo,
incluso realizar varias consultas a la vez, lo cual lo hace sumamente concurrente y
versátil para la plataforma. Se decidió optar por MySQL ya que este gestor de base
de datos es muy utilizado en desarrollo web, es gratuito y permite a los
desarrolladores, realizar cambios en sus sitios de manera simple, con tan sólo
cambiar un archivo, evitando tener que modificar todo el código web. Esto se debe
a que MySQL, trabaja con un sistema centralizado de gestión de datos. [50]
Ventajas
- Es código abierto.
- Es rápido, fiable y fácil de usar.
- Disponibilidad para gran cantidad de software de contribuciones.
- Posee un buen control de acceso de usuarios y seguridad en los datos.
- Perfecta integración con el lenguaje de programación PHP.
- Soporte completo para cláusulas, funciones, tipos de datos y comandos
estándar.
- Soporte en el control de datos en tablas transaccionales.
- Buena portabilidad entre distintos sistemas y plataformas.
- El acoplamiento es flexible.
- Escalabilidad.
Desventajas
- Durante la creación de tablas, internamente no trata las claves ajenas y
foráneas de forma diferentes al resto de campos.
- Los privilegios para una tabla no se elimina automáticamente cuando se
borra dicha tabla.
43
- La función de conversión CATS() no soporta la conversión REAL o BIGINT.
[51]
5.4.2.2. Oracle
Es un motor de bases de datos relacional, que se basa en la tecnología
cliente/servidor, el cual es una herramienta vendida a nivel mundial, pero la gran
potencia que tiene y su elevado precio en el mercado ha hecho que solo se vea en
empresas grandes y multinacionales. Para el desarrollo Oracle tiene un lenguaje 5ª
generación potente para el trato y gestión de base de datos, PL/SQL, que permite
implementar diseños activos, con triggers y procedimientos almacenados, con una
integridad referencial declarativa bastante potente; pero también por normal
general se suele utilizar SQL al crear un formulario. [52]
Características
- Compatibilidad en todas las plataformas, desde una PC hasta un
supercomputador.
- Soporta todas las funciones que se esperan de un servidor robusto.
- Permite el uso de particiones para la mejora de la eficiencia, de replicación e
incluso ciertas versiones admiten la administración de bases de datos
distribuidas.
- El software del servidor puede ejecutarse en multitud de sistemas
operativos.
- Tiene un soporte aceptable. [53]
5.4.2.3. Patrón Maestro Detalle (Master Detail)
Usualmente en la implementación de bases de datos relacionales existen unos
patrones que ayudan a estructurar el diseño de la misma de una forma adecuada,
siguientes unos conceptos específicos, por eso para el desarrollo de la plataforma
se optó por utilizar el patrón Maestro Detalle, el cual por general es conocido como
44
relación de 1 a muchos o 1:N, esto significa que un registro de una tabla puede
estar relacionado con varios registro de otra tabla, permitiendo filtrar los datos de
un conjuntos de datos con otros, es decir, que dicho conjunto que es utilizado para
filtrar los datos se llama Maestro, y la respuesta conjunto de datos filtrada se llama
Detalle. La implementación de este patrón permite una gran eficacia y flexibilidad
frente a peticiones, consultas y actualizaciones en el modelo relacional, debido a
que permite que la base de datos pueda llegar a crecer y no se verá afectada por la
estructuración de otras tablas gracias a las relaciones que generan cierta jerarquía
y delegación.
Figure 5.13. Ejemplo de patrón de bases de datos relacional ‘Maestro Detalle’. [54]
5.4.3. ORM (Object-relational mapping)
El Mapeo Objeto - Relacional es una técnica de programación donde se crean
objetos de un lenguaje de programación orientado a objetos (OOP) a partir de las
clases del negocio para ser desarrollado trabajando en conjunto, mediante los
datos que dispone una base de datos para después ser manipulados llevando a
cabo diferentes tareas. Explicado de forma más general, una tabla vendría siendo
una clase, como una tupla de esa tabla es una instancia de la clase con datos
asignados y las columnas se comportan como lo son las propiedades del objeto
creado. [7][55]
45
Figure 5.14. Esquema de la técnica de programación ORM. [56]
5.5. Arquitectura de software Este concepto se refiere a la estructuración del sistema (software) que
principalmente es implementado en las primeras etapas del desarrollo. La
estructuración es un diseño de alto nivel del software, la cual tiene 2 propósitos:
- Satisfacer los atributos de calidad (desempeño, seguridad, modificabilidad).
- Servir como guía en el desarrollo del software.
Esta arquitectura juega un papel crítico en las etapas tempranas de la elaboración
del sistema, el no diseñar e implementarla puede perjudicar el producto final y que
el mismo no pueda satisfacer las necesidades de los clientes. [57]
5.5.1. Patrones arquitectónicos
Estos patrones son los encargados de definir la estructura de un sistema de
software, específicamente proporciona un grupo de sub-sistemas predefinidos,
donde expresa con detalle sus responsabilidades y reglas de juego, determinando
la organización, comunicación, interacción y relación entre ellos. [58]. Heredan
mucho de la terminología y los conceptos de los patrones de diseño, pero su
46
propósito se centra en crear modelos y métodos re-utilizables para la arquitectura
general de los sistemas de información.
5.5.1.1. Publish Subscribe
Es un patrón de mensajería que se usa en arquitecturas de software donde los
remitentes de los mensajes, denominados editores, no tiene que programar los
mensajes que son enviados a los receptores en específico, denominados
suscriptores, sino que etiquetan los mensajes publicados en clases
indiferentemente de cuantos suscriptores existan. Del mismo modo, los
suscriptores puede tener interés en una o más etiquetas (clases), y solo reciben
mensajes o notificaciones de dichos intereses, indiferentemente de cuantos
editores haya.
5.6. Ingeniería de software De acuerdo con el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE), se basa
en la aplicación de los principios de la ingeniería en el ámbito del desarrollo de
software, donde no implica que a menudo la creación de código, puesto que esto
solo es una etapa en el procesos de ingeniería de software. Ahora bien, si un
proyecto de software requiere de la aplicación de la ingeniería, esto es definido
mucho antes de que tal proyecto esté diseñado, y continúa después del desarrollo.
Durante el proceso de ingeniería de software, entra el diseño de software, donde
entra aparece la creación de los algoritmos o instrucciones para el ordenador, y
finalmente se ejecutan las etapas de validación y mantenimiento; cabe aportar que
las etapas no siempre llevan una concepción lineal en un proyecto, sino que
también puede llevarse a cabo de manera espiral. [59]
5.6.1. Patrones de diseño
Un patrón de diseño describe la soluciones a problemas comunes en el desarrollo
de software y otros ámbitos referentes al diseño de interacción o interfaces que
47
ocurre una y otra vez en el entorno de un desarrollador, brindando posibles
soluciones de una forma coherente y simple. Un patrón de diseño es una
descripción de clases y objetos comunicándose entre sí, adaptada para resolver
problemas de diseño y estructura generalmente [60]. Para que una solución sea
considerada un patrón debe poseer ciertas características, una de ellas es que
debe haber comprobado su efectividad resolviendo problemas similares en
ocasiones anteriores; otra es que debe ser reutilizable, lo que significa que es
aplicable a diferentes problemas de diseño en distintas circunstancias. Los
patrones de diseño se dividen en 3 tipos: de creación, de estructura y de
comportamiento.
5.6.2. Patrones creacionales
En la ingeniería de software son patrones de diseño que se enfocan en los
mecanismos de creación de objetos, donde su principal tarea es definir el momento
adecuado, en respuesta a una situación determinada. La creación general de un
objeto podría ocasionar problemas de diseño o añadiendo complejidad en el
diseño, por lo que estos patrones nacen con el propósito de mediar estos enigmas
[61], por ejemplo el patrón diseño creacional MVC y Singleton, los cuales serán
implementados en este proyecto.
5.6.2.1. MVC
Patrón de diseño de desarrollo de software descrito primera vez por Trygve
Reenskaug en el año 1979, se traduce como Modelo Vista Controlador, el cual es
usado casi siempre para el desarrollo de aplicativos web ya que su estructura
consiste básicamente en separar la capa de abstracción de la base de datos que
sería el modelo, la presentación e interacción de los datos (HTML) que respecta a la
vista, y el intermediario donde se controlan los anteriores y principalmente la lógica
del negocio que es el controlador. También es bastante usado para plataformas de
48
desarrollo de aplicaciones web como lo son Symfony, Cake PHP, Django, Ruby on
Rails, etc. [62]
Figure 5.15. Esquema del patrón de diseño MVC. [63]
5.6.2.2. Singleton
Este patrón tiene como objetivo garantizar que en el desarrollo de una aplicación
una clase sólo tenga una instancia al tiempo y que esta proporcione un de acceso
global de sí mismo, es decir, que si todos objetos que implementan una instancia
de una clase Singleton, por criterio del patrón como tal, utilizan la misma instancia.
Una instancia única se implementa creando en una clase un método que crea una
instancia de la misma si y sólo si todavía no existe alguna; para llevar a cabo la
implementación en su totalidad y garantizar que dicha clase no sea instanciada
nuevamente se regula el alcance del constructor con atributos como lo son el
“protected” o “private”. [64]
Figure 5.16. Esquema del patrón Singleton. [65]
49
5.6.3. Patrones estructurales
En ingeniería de software son patrones de diseño que se centran en la clase y la
composición de objetos, el cual utilizan la herencia para la creación de sus
interface. Básicamente facilitan el diseño en el desarrollo de una aplicación
mediante la identificación de una forma sencilla de realizar relaciones entre
entidades. [66]
5.6.4. Patrones de comportamiento
En ingeniería de software son patrones de diseño que se encargan de resolver
problemas relacionados con el comportamiento de la aplicación, normalmente en
tiempo de ejecución y comunicación entre objetos. [67]
5.7. Diseño de interfaces En el proceso de desarrollo de proyectos tales como una página web, plataforma
web o software, se parte del concepto cliente-servidor a partir de la lógica de
negocio concebida en la apertura del proyecto, donde la parte que concierne a los
usuarios es directamente el lado del cliente (Frontend) como se ha explicado
anteriormente, dando lugar al arte del diseño de interfaces, abstracción gráfica que
permite al usuario de manera simple interactuar y desenvolverse con una
aplicación web o software, sin ser aún el producto final que se espera de un
desarrollo, el cual puede carecer de atributos artísticos, y elementos que le
permitan al usuario tener una completa navegación y claridad de un aplicación, lo
que garantizaría una completa experiencia de usuario.
Una interface es entonces una vista mediadora en la comunicación que se da entre
el usuario-máquina, más específicamente usuario-computador, una conexión que
permite que el objetivo principal de una plataforma o aplicación, florezca de forma
correcta, el crear de manera abstracta un puente de información con el público
50
objetivo, donde el trueque no sea solo de forma lineal, sino que brinde un
intercambio más productivo. [68]
5.7.1. Diseño de una interfaz de usuario
El concepto general del diseño de interfaz de usuario se centra en la anticipación
de lo que un usuario en un punto dado podría hacer, y asegurarse de que dicha
interface tenga elementos accesibles, entendibles e interactivos para la fácil
navegación y manipulación de una aplicación o página web. [69]
En el proceso de creación hay que tener en cuenta que se requiere del estudio de
las personas y el conocimiento tecnológico adecuado para lograr un resultado
aceptable; una vez se tenga conciencia de esto, un diseñador debe preguntarse:
¿Quién es el usuario? ¿Cómo aprender a interactuar el usuario con el nuevo sistema
de cómputo? ¿Cómo el usuario interpreta la información que produce el sistema?
¿Finalmente qué espera el usuario del sistema?; para responder estas incógnitas
de la forma más adecuada de acuerdo al estudio que un diseñador ha hecho
previamente al trabajo, hay que tener en cuenta 3 reglas de oro:
- Dar control al usuario: un sistema que responda a las necesidades del
usuario y que le ayude a desenvolverse en las funciones del sistema.
- Reducción de carga en la memoria del usuario: siempre que sea posible el
sistema recordar información estrictamente pertinente y ayudar al usuario
con un escenario de interacción que facilite el uso de memoria.
- Lograr consistencia por parte de la interfaz: que la información visual está
organizada de acuerdo a una línea gráfica que se mantenga presente en
todas las secciones del sistema. [70]
51
5.7.2. Diseño de interfaz para web
En el diseño de interfaces para páginas o aplicaciones web, hay que tener en
cuenta los conceptos anteriormente explicados, de tal forma que el diseñador web
debe poder trabajar en armonía con los componente de diseño de interfaces, el
diseño de interfaz de usuario y la experiencia de usuario con el objetivo de crear un
producto de calidad; un ejemplo claro puede ser el orden en la estructuración de los
contenidos de un libro, donde su forma física y hasta la forma en que se
encuentran ordenadas las páginas, hacen que la interfaz sea muy sencilla e
intuitiva. [71]
El objetivo del diseño en la web es brindar un ambiente gráfico que le ilustre de
forma cómoda y fácil una guía para el usuario, tal guía debe estar estructurada de
forma que permita una buena interacción con la información que ilustra la página o
aplicación web, de manera que sea un compañero durante el proceso de
navegación para que en últimas el usuario pueda encontrar de forma óptima la
información que estaba buscando al ingresar al sitio en cuestión.
Una vez claro los conceptos hay que tener en cuenta principios elementales de
interfaz de usuario aplicados a la web:
- La claridad es el trabajo principal.
- La interfaz existe para brindar la interacción.
- Conservar la atención del usuario a toda costa.
- Los usuarios deben tener el control.
- La manipulación directa es mejor.
- Una acción primaria por página.
- Mantén las acciones secundarias como secundarias.
- Proveer un siguiente paso natural.
- La apariencia revela el comportamiento.
52
- La consecuencia importa.
- Las jerarquías visuales siempre funcionan.
- La organización inteligente reduce la carga cognitiva.
- Resaltar con color.
- El descubrimiento progresivo.
- Ayuda al usuario en el proceso. [72]
5.7.2.1. Diseño responsivo
El diseño web responsivo es una técnica en el diseño de interface web donde se
busca la correcta visualización y adaptación de una página o aplicación web en
diferentes dispositivos como computadores, tabletas y celulares, ya que es un
hecho de que las personas todos los días acceden a múltiples páginas web a través
de cualquier dispositivo, y en su mayoría ignoran cómo funciona esta tecnología.
Una vez claro el concepto que engloba el diseño web responsivo, la pregunta es:
¿En qué consiste este diseño?, primero se parte de la idea de redimensionar y
posicionar los elementos que constituyen una página web de forma que se adapte
de forma fluida al ancho del dispositivo, logrando una correcta visualización, sin
pérdida en la ilustración y línea gráfica de la interfaz, brindando una mejor
navegación y experiencia de usuario. [73]
Características
- Los layouts e imágenes son fluidos y se adaptan a cada pantalla.
- Permite reducir el tiempo de desarrollo.
- Evita los contenidos duplicados.
- Aumenta la viralidad de los contenidos.
53
Figure 5.17. Esquema Diseño Responsivo. [74]
5.8. Experiencia de usuario (UX) En los inicios de la web, la experiencia de usuario siempre tuvo un papel muy
importante en las páginas web, esto se debió a que las grandes empresas en los
diferentes sectores de la industria vieron la web como un herramienta con
potencial para expandir sus negocios y una manera más personalizada de
interactuar con los clientes y brindarles un servicio más exclusivo y accesible, es
decir, una forma de conectar sin importar de qué lugar se encuentren dichos
clientes; ahora bien, ¿Qué es la experiencia de usuario?, básicamente es el proceso
que realiza un usuario cuando tiene interacción con un producto, además como
mencionamos anteriormente, este concepto tiene su origen en el ámbito del
marketing online, donde se puede apreciar un vínculo con la experiencia de marca,
lo cual es la pretensión de establecer una relación familiar y consistente entre
consumidor y marca. [75]
Otra manera de definir la experiencia de usuario es el nivel de satisfacción de un
usuario cuando utiliza un producto o sistema, lo que será beneficioso en el caso de
que el usuario tenga una buena experiencia, se sentirá feliz con el sitio web, y
54
posteriormente recomendará la página, causando una expansión significativa en un
negocio.
Cuando se decide pensar en un buen diseño de experiencia de usuario, hay que
tener en cuenta factores importantes en su proceso, tales como el proyecto, el
presupuesto, las fechas de entrega y el nivel del profesional que lo realice; además
se debe seguir las siguientes fases:
- Estrategia: de esta manera se permite al principio de un proyecto articular la
marca, los principios básicos y la visión de futuro de la empresa mediante la
determinación de los objetivos.
- Investigación: a pesar de que esta fase es la clave para planear y crear una
experiencia en la que el usuario sea partícipe, es la que más se prescinde, en
especial los profesionales enfocados en el Lean UX.
- Análisis: extracción de ideas de los datos acumulados en la fase de
investigación, donde la comunicación del profesional y el usuario final
ayudará que las decisiones tomadas fueron las correctas.
- Diseño: se construye el feedback del usuario, donde el objetivo principal es
contraponer las ideas y obtener valoraciones, pulirlas y repetir este proceso;
las ideas se plasman en prototipos en papel, diagramas interactivos o semi-
funcionales, todos ellos creados a propósito en baja calidad.
- Producción: en esta fase se lleva a cabo un diseño de alta calidad donde los
accionistas y los usuarios finales interactúan en una versión de alta fidelidad
en fase de prueba, con el fin de lograr la aprobación final del diseño de
experiencia de usuario. [76]
55
Figure 5.18. Esquema Experiencia de Usuario (UX). [77]
5.9. Usabilidad El término o concepto de usabilidad engloba una variedad de elementos a su
alrededor que el significado que genera solo el nombre, ya que este ámbito es algo
más que el potencial o las posibilidades de uso de un producto. Usabilidad puede
ser definido como la medida en la que una página o aplicación web es usado por
usuarios, pertenecientes a un mercado específico, para conseguir objetivos
puntuales de forma efectiva, eficiente y satisfactoria en un contexto de uso
determinado.
El diseño de ingeniería de usabilidad mediante el establecimiento de unos
principios han logrado una reducción en los costes de producción, mantenimientos,
apoyo y uso, y principalmente el mejoramiento en la calidad del producto. [78]
Características
- Facilidad de aprendizaje: mide cuando demorar un usuario en concreto
interactuando por primera vez una interfaz logra aprender el correcto
funcionamiento de ella y realizar operaciones básicas en el proceso.
- Facilidad y Eficiencia de uso: una vez el usuario haya aprendido a usar el
sistema, se podrá definir la rapidez con la que desarrollan las tareas.
56
- Facilidad de recordar cómo funciona: es la capacidad con la que un
usuario recuerda las características y forma de utilizar un sistema para
volver a utilizarlo a futuro.
- Frecuencia y gravedad de errores: es el apoyo que brinda el sistema al
usuario durante el proceso de generación de errores al usar el sistema.
- Satisfacción subjetiva: ilustra la satisfacción de los usuarios cuando han
implementado el sistema, a partir de la facilidad y simplicidad de uso de
las interfaces.
El doctor en ingeniería que basó su carrera en el desarrollo de interfaces de
software, plasmó sus consejos principales para mejorar la usabilidad de un sitio
o aplicación web:
- Aclarar el propósito del sitio: se entiende a que en el primer contacto del
usuario con el sitio o aplicación web, tenga claridad de quién hace el sitio
y cuál es el enlace del mismo.
- Ayudar a los usuarios a encontrar lo que buscan: se refiere a la buena
organización de la información enfatizando en los mensajes de mensajes
principales y sistemas de búsqueda apropiado.
- Mostrar el contenido del sitio: se refiere a la manera correcta de exponer
los contenidos en el sitio evitando clicks innecesarios, mediante la
visualización de temas anteriormente vistos y destacados.
- Diseño para mejorar Interacción, no para definirla: se refiere a una
ideología perfecta para el proceso de desarrollo y tener claro que el
diseño trabaja en compañía con la información, más no competir con ella.
[79]
57
5.10. Filosofías de diseño
5.10.1. Flat Design
Esta filosofía conocida en español como Diseño Plano, tuvo lugar inicialmente en
la interfaz de Windows Phone a finales del 2010 por Microsoft, el cual continuó
posteriormente con la renovación de la interfaz del XBOX 360 en el año 2011 y la
aparición de Metro para Windows 8 en el año 2012. Flat Design parte de la idea de
suprimir todo tipo de decoración en el diseño de una interfaz con el fin de reducir el
mensaje y facilitar la funcionalidad, ¿De qué manera?, mediante la simplificación de
texturas, degradados, biselados, sombreados, etc., básicamente todo los elementos
que no aporten valor a la información que se quiere transmitir al usuario está
navegando en la interfaz.
Características
- Colores: generalmente se opta por usar paletas de colores pastel con
limitadas variaciones en cada color, además se intenta utilizar esquemas de
color colaboren a que el usuario comprenda el diseño de forma gráfica y
facilitar la interacción con el sistema.
- Tipografía: la preferencia se basa en implementar fuentes Sans Serif.
Generalmente para el título casi cualquier fuente de fácil lectura, además se
pueden implementar grandes tamaños mientras se reducen las longitudes
de títulos y subtítulos.
- Mensaje: la tendencia como fue explicado anteriormente es lograr ilustrar la
información de forma simple y clara, es decir, si puede entregar de forma
correcta un mensaje con 5 palabras, no es necesario usar 10, con la idea de
tener discreción y claridad en las denominadas llamadas a la acción; se
duele adicionar el mensaje códigos de color con el fin de brindar jerarquía o
importancia a la información. [80]
58
5.10.2. Material Design
Esta filosofía de diseño fue creada por Google en el año 2014, con la intención de
aportar un cambio significante y sobresaliente en la interfaz del sistema operativo
Android, el cual nombraron como Material Design, concepto que abarca
características como que es responsivo, llamativo, colorido, principalmente
enfocado en la iconografía, movimiento y profundidad; esta filosofía puede
apreciarse en todas las plataformas de Google, en las interfaces que se visualizan
en diferentes dispositivos, como PCs, tabletas y móviles.
En esta filosofía por parte de los profesionales encargados de aplicarla a un
proyecto específico, son los que deciden qué píxeles están encima de otros píxeles,
donde la interfaz los ilustra con luces y sombras, animaciones 3D y en definitiva la
sensación de estar jugando con superficies reales. [81]
Figure 5.19. Ejemplo de diseño Material Design. [82]
59
6. Antecedentes
6.1. Plataformas de investigación, colaborativas y
educativas
6.1.1. Schoology
Hoy en día la plataforma académica más utilizada es la red social educativa,
Schoology, fundado por Jeremy Friedman , Ryan Hwang, Tim Trinidad y Bill Kindler
en San Luis - Estados Unidos del año 2008, la cual es una aplicación para gestionar
mejor el aprendizaje a través de la integración de herramientas digitales en la nube,
cuya incentiva era poder reestructurar la manera de implementar la tecnología en el
aprendizaje y los espacios de clases, mostrando significativamente en qué
dirección se está moviendo el mundo académico y las virtudes que nos brindan los
conocimientos como el desarrollo web. [83] [84]
Uso en el ámbito educativo
- Tiene la opción de incorporar materiales alojados en otras plataformas como
Moodle o Blackboard.
- Se puede añadir contenidos como: asignar tareas, pruebas, archivos,
enlaces, discusiones, álbumes y páginas.
- Actualizar el curso, configurar y consultar el libro de calificaciones de los
alumnos.
- Crear y asignar medallas a los alumnos a modo de recompensas por el
esfuerzo y calificaciones.
- Anotar las faltas de asistencias, consultar el listado de alumnos y ver las
estadísticas (visita, comentarios, usuarios, etc.).
Requerimientos para usar Schoology
- Es gratuito.
60
- Lo único que se necesita para acceder es un registro previo.
- En ese primer acceso, el idioma por defecto de la plataforma es el inglés,
pero este se puede modificar. De momento se puede elegir entre español,
malayo, ingles británico y francés.
- Es fácil de usar.
Ventajas
- Es atractiva.
- Sencilla de utilizar.
- Integra muchas posibilidades en torno a un curso de formación y la opción
de incluir recursos propios y externos alojados en otras plataformas.
- Se puede instalar aplicaciones de aplicaciones de terceros.
- Al igual que otras muchas herramientas online, es posible instalarse la App
en dispositivos móviles tanto en sistemas operativos iOS o Android.
Desventajas
- No se tiene control sobre uso de los datos sensibles.
- Solo administradores o instructores de una institución pueden crear cursos.
- Para que un estudiante se registre debe poseer un código de invitación que
solo un instructor o administrador puede enviarle vía correo electrónico.
Figure 5.20. Captura de la plataforma educativa Schoology. [85]
61
6.1.2. Trello
También se ha popularizado mucho la plataforma colaborativa llamada Trello,
desarrollada por la empresa Fog Creek Software en septiembre del 2011, que para
julio del 2014 es independizado de esta convirtiéndose en Trello Inc.; este sistema
optimiza la gestión de procedimientos de comunicación y de progreso,
independientemente si son tareas académicas o laborales, dividiendo la sección de
tareas como guía para brindar una mejor experiencia y perspectiva del proyecto
que se está liderando o desarrollando. [86] [87]
Ventajas
- Sencilla estructura de unidad / actividades.
- No tener que enviar correos electrónicos.
- Comentarios con dudas de los alumnos.
Desventajas
- Desorden del tablero por alumnos que desconocían cómo usarlo.
- No se puede determinar quién puede mover / archivar tarjetas.
- Imposible insertar videos para verlos directamente en la tarjeta.
Figure 5.21. Captura de la plataforma colaborativa Trello. [88]
62
6.1.3. Claroline
El proyecto Claroline fue iniciado en el año 2000, en el Instituto Pedagógico
Universitario de Multimedia de la Universidad Católica de Lovain (Bélgica), por
Thomas De Praetere, Hugues Peeters y Christophe Gesché, con la financiación de la
Fundación Louvain de la misma Universidad. Claroline es una plataforma de
aprendizaje que permite a los formadores construir cursos online y gestionar las
actividades de aprendizaje y colaboración en la Web, además es una plataforma de
software libre y código abierto, creada en el año 2000 y programada en el lenguaje
de programación multiplataforma PHP usando servidores de Apache y MySQL
como SGBD (Sistema Gestor de Base de Datos). Claroline destaca por su
simplicidad, sencillez de uso, y está disponible para plataformas (Linux, Unix, Mac
OS X y Windows), navegadores libres (Mozilla, Netscape), y está traducido en 35
idiomas. Actualmente esta plataforma es utilizada como herramienta de
aprendizaje en la universidad nacional de Colombia. [89] [90] [91] [92]
Ventajas
- Software libre.
- Intuitivo.
- Dispone de las herramientas por las que suelen caracterizarse este tipo de
gestores de aprendizaje como: grupos, agenda, foros, wikis.
Desventajas
- De nuevo la comunidad es muy limitada en comparación con Moodle.
- Pocos módulos y plugins.
- De nuevo su uso en España en el 2009 era únicamente de un 1%.
6.1.4. Dokeos
Dokeos nació en 2004 a partir de Claroline, el creador de Claroline, Thomas de
Praetere, inició Dokeos debido a que la Universidad Católica de Lovaina prestaba
63
poca atención al desarrollo de Claroline, la cual es una suite de aprendizaje en línea
basada en software libre. Provee todas las características que una aplicación de
aprendizaje en línea necesita, pero Claroline es una marca registrada de la
universidad, decidió crear una nueva aplicación y, de esta forma, poner más énfasis
en el desarrollo de la misma. Para acometer este proyecto creó la empresa del
mismo nombre, Dokeos, esta empresa se encarga del desarrollo de Dokeos y ofrece
hospedaje, consultoría y soporte para empresas e instituciones. Al igual que
Claroline, Dokeos está programado en PHP y como servidor de base de datos usa
MySQL. [90] [92] [93]
Ventajas
- Software libre.
- Su interfaz tiene una apariencia bastante profesional y atractiva que las
demás.
- Disponible de numerosos recursos entre los que destaca la posibilidad de
realizar videoconferencias. Herramienta que de momento otros gestores de
aprendizaje no lo han desarrollado.
- Tiene la capacidad de montar sus propias redes sociales para facilitar la
comunicación entre los estudiantes.
Desventajas
- Su comunidad es mucha más pequeña que moodle.
- Su uso en España en el 2009 es únicamente del 1%.
- Dispone de menor número de roles del usuario que dispone otros gestores
como moodle.
64
6.2. Investigaciones científicas
6.2.1. Sistema de información y gestión proyectos de grado de la
Universidad del Valle
La investigación realizada por Pablo Andrés Díaz, en la Escuela de Ingeniería de
Sistemas y Computación en convenio con la Universidad del Valle, Cali - Colombia,
en Mayo del 2010, se desarrolló un sistema de información del programa
académico de ingeniería de sistemas en la gestión de trabajos de grado y de la
página informativa (SIPAIS), orientado por la profesora Paola Johanna Rodríguez
Carrillo, implementado bajo la metodología de desarrollo de software Extreme
Programming, el uso del lenguaje de programación PHP entendido para el
desarrollo de aplicaciones web y la base de datos relacional orientado a objetos de
código abierto PostgreSQL. [6]
Este proyecto se basó en crear una plataforma de gestión mediante secciones de
actividades, divididas en anteproyectos y trabajos finales de grado, y página
informativa, a través del envío, evaluación y respuesta de documentos, como de la
búsqueda de proyectos ya culminados con fines investigativos.
6.2.2. Sistema de información para la gestión de trabajos de grado de
la Universidad de Cartagena
Marcelo Solís y Poveda Julio Cesar Deavila Pertúz, estudiantes de la Universidad
de Cartagena, en el año 2013, asesorado por su director Martín Monroy Ríos,
realizaron un sistema de información para la gestión de los trabajos de grado,
mediante la distribución de requerimiento funcionales y no funcionales, es decir, la
evaluación, generación de informes, envío documentos, etc., y las características de
seguridad y confiabilidad del sistema. Esta plataforma se llevó a cabo bajo el
dominio de la metodología de desarrollo de software Proceso Unificado Racional
(RUP), el lenguaje de programación multiplataforma PHP, el patrón de diseño MVC,
65
el gestor de bases de datos MySQL, la tecnología de almacenamiento de tablas
InnoDB. [5]
Este proyecto brinda un aporte significativo a la idea de cómo una buena gestión
optimiza los procedimientos de un sistema mediante el ahorro del tiempo, que a su
vez se ve reflejado en una disminución de coste.
6.2.3. Sistemas de E-learning abiertos basados en servicios
En la Universidad Nacional de Educación a Distancia, en Madrid - España del año
2012, el Licenciado en Ciencias Físicas (Especialidad Cálculo Automático) Salvador
Ros Muñoz desarrolló sistemas de E-learning abiertos basados en servicios, donde
se concluyó que estas plataformas facilitan la personalización de entornos de
forma intuitiva para contextos de aprendizaje personalizados, donde el alcance de
esta tecnología logró reducir la carga de trabajo del profesorado, como en el
momento de corregir prácticas, y agilizó la autoevaluación del trabajo desarrollado
por parte de los estudiantes. [2]
6.2.4. Desarrollo de un bloque para la gestión de tutorías en Moodle
La investigación realizada por Diego Macías Álvarez, en la Universidad de Alcalá, en
Alcalá - España del año 2010, consistió en el desarrollo de plataformas de
enseñanza virtual libre y sus características de extensión: Desarrollando un bloque
para la gestión de tutorías en Moodle, donde concluyó que esta plataforma es la
ventajosa frente a los beneficios ofrecidos a los desarrolladores, particularmente
sus utilidades se concentran en que es una aplicación muy flexible, y como
evidencia de esta ventaja es la capacidad de extender el sistema por parte de la
misma comunidad. [90]
66
7. Desarrollo
7.1. Metodología
7.1.1. Investigación en diseño y desarrollo
En el proceso de desarrollo de la plataforma web de investigación, Sherlock, se optó
por hacer una investigación intensiva sobre las tecnologías y filosofías más
competentes en el mercado actualmente para aplicaciones web.
Para este proyecto a partir de los conocimientos que se destacan de un ingeniero
multimedia frente a aplicaciones web, se hizo un estudio sobre a los principios y
paradigmas del diseño de interfaz de usuario aplicados a la web, tomando en
cuenta las jerarquías que lo acompañan, como experiencia de usuario (UX),
Usabilidad, filosofía de diseño, entre otros.
En cuanto a desarrollo se investigaron las herramientas más robustas para el
proceso de desarrollo de plataformas web, frameworks destacados que brinden
funcionalidades acorde al tema de la aplicación, como también tecnologías y
paradigmas referentes al ámbito de la web, como patrones de diseño, patrones
estructurales, arquitecturas, y demás conceptos que ayuden a mejorar el
performance y estabilidad de Sherlock para lograr los objetivos propuestos en este
proyecto, con la idea final de crear un producto final de alta fidelidad.
Las tecnologías y paradigmas mencionados pueden ser estudiados en el Capítulo 7
de Marco teórico, los cual son implementados a detalle en el Capítulo de
Implementación.
67
7.1.2. Reuniones con stakeholders
La principal tarea y motivación de Sherlock es entrar a participar como mediador en
los procesos de investigación en la Universidad de San Buenaventura Cali,
actuando como un integrante más de los grupos y comunidades pertenecientes al
entorno de investigación, además busca moldearse como una herramienta que
permita fluir la gestión y desarrollo de los proyectos de grado y semilleros de
investigación por esta razón se realizaron diferentes reuniones con los actores
principales de la institución involucrados en los procesos administrativos de
investigación con el fin de tener insumos suficientes para generar tareas claves
como lo son el levantamiento de requisitos, límites de la plataforma y definir un
cronograma de trabajo fundamental para el proceso de desarrollo.
De acuerdo con lo anteriormente explicado es preciso exponer los stakeholders
involucrados en el proceso de planeación y construcción de Sherlock, es decir,
quienes son afectados o pueden ser afectados por las actividades del desarrollo.
En un principio el primer involucrado fue el director de la carrera de Ingeniería
Multimedia y el coordinador de los proyectos de grado de la misma, debido a que
esta es la única carrera que será involucrada inicialmente en el uso de la aplicación
web en los proyectos de investigación de la misma, por lo que sus impactos en la
aprobación de Sherlock es tomado de forma radical, gracias al nivel de experticia
de ambos en los procesos investigativos de la carrera.
Por otro lado se tuvo la colaboración de un grupo de docentes y un conglomerado
de estudiantes de Ingeniería Multimedia, frente a las expectativas y
funcionalidades de la plataforma de investigación, y su aporte en los proyecto de
investigación en los que pueda estar involucrados.
68
7.1.3. Diseño y maquetación de la interfaz de usuario
En el proceso de desarrollo del proyecto, después de haber investigado las pautas
adecuadas frente a las filosofías de diseño y los fundamentos de una correcta y
completa interfaz de usuario, teniendo en cuenta los criterios de ingeniería
multimedia aplicados a la web, se realizaron ilustraciones de bocetos de la
organización y las proporciones de las vistas principales que serían parte de la
plataforma, así como de las secciones dentro de las mismas, y así definir los
primeros pasos de la línea gráfica que será parte de la identidad de Sherlock.
Una vez completa la guía de bocetos de lo que sería la plataforma, se realizó el
diseño de los wireframes en la aplicación de escritorio Adobe Illustrator, de forma
detallado de acuerdo al diseño establecido y finalmente la maquetación de la
plataforma para continuar con la implementación.
Ver Anexo 1.
7.1.4. Etapa de diseño de base de datos
Para el diseño de la base de datos de Sherlock se hizo escogió el motor de bases
de datos relacional MySQL, con el apoyo de la aplicación de escritorio MySQL
Workbench. La construcción de la base de datos de la plataforma fue concebida
durante las reuniones realizadas con los stakeholder principales, el proceso de
levantamiento de requisitos y el diseño detallado de software.
7.1.5. Etapa de desarrollo de la plataforma web
El desarrollo de la plataforma de investigación, se puede componer de 2 fases
claves, la plataforma de gestión de proyectos de investigación y el módulo de
administración de las peticiones y normalizaciones de la aplicación; la cuales
fueron implementadas en simultáneo debido a que ambas partes eran necesarias
en la construcción de cada uno de las secciones y módulos de Sherlock.
69
La implementación técnica de ambas partes se divide en 2 etapas, la primera sería
el desarrollo Frontend de la aplicación, la cual consta o hace énfasis a la parte
visual y funcional de la misma, es decir, la interfaz, donde se integraron los
conceptos de filosofías de diseño, las técnicas de UX y usabilidad investigadas
anteriormente, moldeando así una plataforma con una interfaz agradable, de fácil
manipulación, y que permita la libre navegación del usuario, de forma autónoma y
eficaz.
La última etapa de la implementación fue el desarrollo Backend, construido
siguiendo el patrón estructural de diseño MVC (Modelo Vista Controlador), el cual
ofrece ventajas fundamentales en temas de escalabilidad, mantenimiento y
optimización; esto se debe a la separación de la lógica, los modelos y las interfaces
de usuario, donde la instancia de la base de datos fue tratado bajo el patrón de
diseño creacional Singleton y la recepción de las notificaciones fue moldeado por
el patrón arquitectónico Publish Subscribe. Se seleccionó para el desarrollo
backend, el lenguaje de programación PHP, ya que es multiplataforma, brinda la
capacidad de conexión con la mayoría de los motores de base de datos que se
utilizan en la actualidad, entre los cuales se destaca su conectividad con MySQL y
PostgreSQL; por otro lado al ser un lenguaje libre dispone de características que lo
convierten en una herramienta ideal para la creación de aplicaciones web
dinámicas, además el código fuente redactado en PHP es invisible al navegador ya
que el servidor es quien se encarga de ejecutar el código y enviar un resultado
específico en HTML al navegador, lo que permite que la programación es este
lenguaje sea seguro y confiable.
7.1.6. Pruebas
Después del desarrollo de la plataforma de investigación se realizaron pruebas con
los stakeholders del proyecto con el fin de observar y analizar el comportamiento
de los usuarios en la plataforma, como la respuesta de la plataforma en una
70
situación de varios usuarios navegando al tiempo al tiempo en la aplicación, de
forma orgánica. Las pruebas son explicadas más en detalle próximamente en el
capítulo de pruebas y análisis.
7.1.7. Elaboración de documento científico
Se realizó la creación de un documento científico con los resultados obtenidos en
la construcción de la aplicación web y la investigación realizada en el proceso con
el propósito de publicarlo en una revista de reconocimiento científico.
7.2. Diseño
7.2.1. Estudio del color
En el proceso de diseño de una interfaz escoger un color se convierte un factor
crucial debido a la influencia que tiene en el comportamiento que puede llegar a
tener un usuario en el momento en que interactúa con un sistema, como la
percepción del usuario se ve afectada por el efecto psicológico que genera el color
ilustrado generando diferentes reacciones por parte de la persona. Es común
aceptar el impacto que genera la primera impresión de un usuario en el momento
de navegar en una nueva interfaz, en la interacción humano-máquina, donde el
resultado no puede ser compuesto sino certero, es decir, la reacción solo puede ser
a favor o en contra.
Durante la investigación se escogieron colores variantes del verde y el gris. La
explicación de su elección empieza por el tema interés principal de la plataforma, la
investigación, por lo que el verde se relaciona directamente con ambientes
relajantes y refrescantes, induciendo a quien lo contempla a experimentar
sensaciones serenas y armoniosas; en el caso de las variaciones de grises, se
seleccionaron el oscuro y el neutro ya que estos generan una percepción fuerte y
71
elegante, que al mezclarse con el verde se llega a percibir también un ambiente
sofisticado.
#0F6177 #0B8389 #757575 #333333
7.2.2. Tipografía
De acuerdo a la investigación hecha frente al diseño mencionado en el marco
teórico del documento, y después de una búsqueda de tipografías candidatas que
se acoplaran bien a la filosofía de diseño seleccionada en la aplicación, se optó por
usar la tipografía Roboto, la cual cuenta con 9 diferentes estilos, además hace
parte de la familia sans-serif y cumple con los criterios estudiados.
Figure 7.22. Estilos de tipografía Roboto. [94]
72
7.2.3. Iconografía
En el diseño de la plataforma de investigación se usó la iconografía brindada por
las fuentes y estilos cascada de la empresa Font Awesome, los cuales se acoplan
de forma fluida a la filosofía de diseño, paleta de colores y tipografía
seleccionados.
7.3. Implementación
7.3.1. Levantamiento de requisitos
Anexo a este documento se incluye el documento SRS (Software Requirements
Specification). Este proceso se realizó a partir de las reuniones hechas con los
stakeholders y las especificaciones solicitados por los mismos; para esto se
implementó ingeniería de requisitos para lograr analizar, obtener, documentar y
validar las necesidades esenciales que son claves a través de este proceso.
El fin de este procedimiento es tener desde un inicio una base estable de lo que se
quiere diseñar y desarrollar, ordenando mediante la educación y priorización de
requisitos e implicados del proyecto.
En este documento se plantea una breve descripción de qué trata el proyecto,
especificando su propósito, el alcance y finalmente se detalla la perspectiva de la
plataforma de investigación, sus funcionalidades, restricciones, lógica de negocio,
roles de usuario, y el estudio del contexto, el cual se compone de sujeto, uso,
sistema y desarrollo, y finalmente realizar el levantamiento de requisitos con la
información plasmada.
Ver anexo 2.
73
7.3.2. Diseño detallado de software
Durante la implementación de ingeniería de requisitos, una vez revisado el
documento SRS, de que se cumpliera con las especificaciones solicitadas por los
stakeholders y el alcance previsto para el desarrollo de la plataforma de
investigación, se procede a comenzar el diseño detallado de software con el fin de
aterrizar los detalles necesarios para comenzar con la aplicación web.
La construcción de este documento permitió ampliar positivamente la perspectiva
que se tiene de la lógica de negocio, que en últimas se moldea para convertirse en
la lógica perteneciente al diseño y desarrollo de la aplicación web; por ende se
puede deducir que el propósito final que posee es tener una base muy sólida para
empezar la creación de un proyecto con un grado alto de complejidad, optimizando
el tiempo y los recursos que se usan en el desarrollo gracias a su planeación
detallada.
El diseño detallado de software construido para el desarrollo de Sherlock, está
cimentado por el diagrama de casos de uso, escenarios de casos de uso, diagrama
de tarjetas CRC, diagramas de secuencia, diagramas de despliegue detallado y
diagrama de capas y niveles.
En la realización del diagrama de casos de uso se debe de tener en cuenta los
requerimientos detallados en el documento SRS, donde un caso de uso puede estar
representado por 1 o más requerimientos, así se pudo construir un panorama más
detallado de las tareas principales de Sherlock, lo que en retrospectiva agilizaría el
desarrollo de la plataforma web.
Después de tener hecho el diagrama de casos de uso, se procede a realizar los
escenarios de casos de uso, para lo que se tiene que tener seleccionado las tareas
principales del proyecto, ya que los escenarios plantean situaciones hipotéticas en
74
las que un usuario podría enfrentarse al realizar una tarea específica en el sistema,
logrando anticiparse al comportamiento que tendrá dicho sistema cuando un
proceso sea exitoso, esto para el caso de los escenarios primarios, o erróneo en el
caso de los escenarios secundarios; estos últimos da participación a ciertas tareas
en el sistema, que solo pueden ser realizadas en caso de que una acción fracase.
Los escenarios de casos de uso fueron muy fructíferos para diseñar la buena
interfaz de usuario de la aplicación web, ya que brindó pautas de cómo sería el
ambiente o el sistema en el que interactuará un usuario determinado, lo que facilitó
la creación de los wireframes de la plataforma.
Al terminar los escenarios de casos de uso, se procedió a realizar el diagrama de
las tarjetas CRC (Clase, Responsabilidades, Colaboradores), lo que permitió
acercarse en gran medida a las clases que serán necesarias para el desarrollo de la
aplicación web, y cómo se relacionarán entre sí.
Después de tener el diagrama de tarjetas CRC se realizaron los diagramas de
secuencia, una vez teniendo decretadas las clases que serán necesarias en el
proyecto, se generaron objetos para que interactúen entre sí en un sistema a través
del tiempo; para la creación de cualquier de los diagramas de secuencia se
seleccionó uno de los diagramas de caso de uso especificados anteriormente, es
decir, una tarea real de la plataforma para ver su realización a cargo de los objetos,
paso a paso. Esto permitió acercarse a las posibles secciones o módulos que
tendrá la aplicación web, y las funcionalidades que las compondrán.
Los diagramas de despliegue detallado, fueron realizados bajo la composición de
un diagrama de cajas, diagrama de despliegue y un diagrama de paquetes para
cada uno, permitiendo entender la arquitectura que se tendría en el desarrollo de la
plataforma web y cómo se relaciona en el proceso en que un objeto realizar una
tarea en el sistema. Este diagrama permitió analizar la interacción de la estructura
75
de Sherlock, donde un actor se comunica con un dispositivo a través de un
navegador web con el servidor de aplicaciones, detallando los elementos que
llegaron a interactuar en un la realización de una tarea.
Finalmente se realizó el diagrama de capas y niveles, una vez terminado los
diagramas de despliegue detallado, permitiendo observar todos los niveles de
comunicación de las capas que componen la plataforma, desde la interfaz de
usuario del lado cliente hasta el esquema de base de datos del lado del servidor.
La construcción del diseño detallado de software logró corregir y modelar Sherlock
para que el alcance y los aspectos que no fueron tomados en cuenta en el
momento en que se planteó el proyecto, y así tener una estructura más sólida para
empezar la implementación.
Ver anexo 3.
7.3.3. Arquitectura
En el desarrollo de la plataforma de investigación se optó por usar el framework de
PHP creado por el docente Pablo Bejarano, inicialmente como parte de su proyecto
de grado y posteriormente para la enseñanza de desarrollo web backend, el
framework ha ido creciendo y mejorando a través del tiempo mediante las
investigaciones realizadas por el mismo y los requisitos de los temas de clases, en
pro de crear aplicaciones más eficientes y dinámicas desde un enfoque académico.
Durante la implementación de Sherlock se hicieron cambios y adiciones en la
estructura de carpetas de la herramienta, cambios funcionales de la lógica de
renderización de layouts, aumento en la seguridad de las sesiones, permisos de
peticiones asíncronas, mejora de la librería de manejo de archivos, integración de
versionamiento de la plataforma para futuros despliegues a producción, carga
dinámica de archivos fonts, css y js para el mejoramiento del performance, entre
76
otras adiciones en la programación funcional, como la lógica estructural
establecida para las reglas de cada módulo de Sherlock.
En Sherlock como se dijo anteriormente se implementó el patrón de diseño MVC
(Modelo Vista Controlador), el cual viene integrado por defecto en el framework, por
lo que en la estructura de carpetas de la aplicación todas las vistas pertenecientes
a todas las secciones de la plataforma, se encuentran en la carpetas “views” del
proyecto, la cual tiene una estructura de carpetas interna donde cada una posee el
nombre de uno de los controladores de Sherlock, por ejemplo el controlador de
“Usuarios_controller” al renderizar una vista, de acuerdo a las reglas del patrón,
debe encontrarse en la carpeta “Usuarios” de “views”, cabe decir que los
controladores que son los encargados de conectar y mediar la lógica de datos de la
visualización de las vistas se encuentran en la carpeta “controllers”. En la carpeta
de vistas existen 2 carpetas que no se conectan directamente con ningún
controlador, pero que son recursos que se usan para indefinidas secciones de la
aplicación, como la carpeta “modules”, la cual existe por defecto en el framework, y
la carpeta layouts, adicionada en el proceso de este desarrollo, la cual puede
contener los diseños base de indefinidas secciones de la plataforma, además la
lógica que lleva consigo esta carpeta puede apuntar a la incrustación de diferentes
plataformas adicionadas al proyecto distintos a Sherlock.
La lógica de datos de la plataforma es moldeado a través de los modelos que se
encuentran en la carpeta “models”, los cuales posee directamente el nombre de
una entidad o tabla de la base de datos de Sherlock, cuyos archivos heredan del
concepto ORM explicado en el capítulo de Marco teórico, además se conectan
directamente con la base de datos mediante PDO. En el desarrollo de la plataforma
se crearon funcionalidades propias de la lógica de negocio de la misma, pero que
eran necesarias para diferentes secciones de Sherlock , por lo que fueron escritas
en los archivos de la carpeta “bussines_logic”, los cuales contienen la lógica de
77
negocio de las entidades propias de la base de datos, es decir, que cada una
contiene el nombre de alguna de las tablas de Sherlock, parecido a los modelos,
con la diferencia de la adición de la palabra “_bl” al final del nombre, por ejemplo
“Usuarios_bl”; esto supuso una mejora en el rendimiento de la plataforma mediante
la reutilización de recursos.
En la desarrollo de la aplicación web se adicionó la carpeta “uploads”, la cual
contiene todos los archivos multimedia de la plataforma, generados por las
funcionalidades de Sherlock, las cuales por supuesto, tienen conexión con la lógica
de datos de la base de datos, donde internamente contiene una estructura de
carpetas pertenecientes a alguna entidad de la misma, por ejemplo la carpeta de
“usuarios”. También se adiciono la carpeta “helpers” para la reutilización de
recursos específicos que ayuden en el proceso de implementación de alguna
funcionalidad de la plataforma.
En el framework utilizado se hicieron cambios en las librerías “Controller”, “Model” y
“View” del core, con el fin de satisfacer las exigencias de la nueva estructura
implementada en el desarrollo de Sherlock, todo esto mejoró el rendimiento de la
aplicación en temas de mantenimiento, escalabilidad y performance, por lo que
Sherlock posee ahora una estructura que permitirá su crecimiento a través del
tiempo a favor de los nuevos desarrollos y su aumento en la complejidad no se verá
afectada.
79
7.3.4. Implementación de la plataforma
7.3.4.1. Base de datos de la plataforma
En el proceso de desarrollo de la plataforma de investigación, uno de los elementos
más vitales para su implementación es el diseño de la base de datos, para la cual
se tuvieron en cuenta principalmente el documento SRS y el diseño detallado de
software, ya que estos conforman los resultados obtenidos a partir del análisis,
mejora y estructuración de las peticiones o requerimientos de los stakeholders, por
lo que podemos deducir que la base de datos de Sherlock claramente corresponde
a la lógica de negocio del proyecto.
En el proceso de diseñar la base de datos se tuvo como herramienta principal
MySQL Workbench, en la cual se construyeron cada una de las entidades o tablas
que conforman la lógica de Sherlock, dichas entidades fueron concebidas bajo la
implementación del patrón de bases de datos, Maestro detalle, el cual se explica en
el capítulo de Marco teórico, además se incrusto el concepto de arcos exclusivos
con el fin de optimizar y ahorrar tablas de relación intermedia.
Ver anexo 4.
7.3.4.2. Maquetación de la plataforma usando Wireframes
El desarrollo de la aplicación web tuvo un crecimiento estrictamente apoyado en la
investigación hecha en los inicios del proyecto, como el diseño detallado de
software y los wireframes, así como el estudio de las filosofías de diseño, UX y
usabilidad. En el momento de maquetar las secciones que conformar Sherlock, la
guía principal fueron los wireframes construidos bajo los conocimientos adquiridos
en la curso de diseño de interfaces de 9° semestre, que en retrospectiva es el
conjunto de una parte de los resultados de esta investigación; cabe apuntar que el
desarrollo de la aplicación web fue hecho en paralelo entre el Frontend y el
Backend, exceptuando claro está, la base datos, la cual fue hecha antes con ayuda
del diseño detallado de software.
80
Figure 7.24. Wireframe objeto detalle de Sherlock.
La plataforma de investigación en el lado del Frontend se dividió en 2 partes, la
primera es la página web informativa de Sherlock, la cual corresponde a la página
de inicio donde un usuario aún no ha iniciado sesión, el cual tiene la opción
disponible de hacerlo de registrarse en el caso de que no posea una cuenta de
usuario, además de los contenidos informativos claro está.
Figure 7.25. Página web informativa de Sherlock.
81
La segunda parte hace alusión a la plataforma de investigación como tal, donde
contiene las secciones globales como la cabecera y el pie de página; la cabecera
contiene el menú principal y el menú de cuenta. Sherlock también posee menús de
sub-sección de algún módulo específico, como menús detalle que se sincronizan
con un objeto específico de la vista como tal, por ejemplo las opciones que
conforman el detalle de un proyecto de grado o un semillero de investigación.
Figure 7.26. Detalle de un proyecto de grado.
Finalmente existen secciones o vistas de la aplicación web que tienen mucho
parecido en la línea gráfica que las conforman, por lo que se respeta el estudio y los
criterios establecidos para el desarrollo en el proceso de investigativo del proyecto.
7.3.4.3. Estructuración e implementación de módulos de la plataforma
En el desarrollo de la aplicación web se estructuraron diferentes reglas de juego,
todas a favor de acelerar el proceso de implementación, pero con la idea de
aumentar el rendimiento de la plataforma, aumenta la seguridad y la usabilidad de
la misma. En el lado Frontend y el Backend se tuvo la claridad de aumentar la
protección funcional a partir de varios criterios, en primera instancia fue la
ejecución de los formularios, mediante la implementación de la librería
82
“FormValidationSV” en la versión 2.0.7, para la validación de los mismos, no solo en
el tipo de valores permitidos en los campos, sino también adicionando validaciones
asíncronas con el servidor, como por ejemplo la verificación de cuenta de usuario
disponible en el registro de usuario; después en el lado del servidor se implementa
una estructura funcional para validar los datos de los formularios en una petición
ejecutada por un usuario con la ayuda de la librería “PHPValidation”, esta segunda
barrera actuara en el caso de querer burlar el conducto regular de dicho proceso. La
tercera barrera fue a partir de los permisos revelados por los roles de usuario de
una cuenta, para negar el acceso a secciones que no correspondan a su papel en la
plataforma. Finalmente como cuarta y última barrera se implementó la revisión de
incongruencia de datos a partir de la existencia de los mismos y la conexión que
tiene con un usuario específico y los roles que desempeña, como por ejemplo si un
usuario desea entrar en el detalle de un proyecto de grado, pero no es integrante de
dicho proyecto, la plataforma negará el acceso de este individuo, ahora bien, si
pasa el escáner, y decide ejecutar alguna acción que solo el director de dicho
proyecto podría realizar, Sherlock volvería a verificar su relación con el proyecto
sumando la validación de los roles que ocupa o directamente en el liderazgo del
proyecto de grado.
En el lado de Frontend se integró una adición en la estructura de la plataforma, para
cargar de forma dinámica archivos de fuentes, estilos y scripts, esta adición fue
hecha directamente en la librería del core “view”, ya que es la encargada cargar los
recursos en el lado del cliente. Esta funcionalidad dio lugar a estructurar
funcionalidades JavaScript globales, es decir, elementos que siempre se cargan en
todas las secciones de la plataforma, acoplándose a la funcionalidad propia de un
módulo, permitiendo su unión de forma orgánica; cabe apuntar que los módulos en
su mayoría tienen su propio archivo JavaScript en la carpeta “js” de la carpeta
“public”, cuyo nombre corresponde directamente a un controlador específico de la
plataforma, los cuales se cargan de forma dinámica de acuerdo al contexto. Esto
83
resultó muy fructífero en el caso de que un módulo necesitase una funcionalidad
propia de otro, muy parecido a la lógica de negocio de los modelos
(Business_logic). Todo esto fue posible filtrarse al adicionar una constante que
indica en qué sección de la página de encuentra un determinado usuario.
En el lado del servidor se hizo un carga lógica de los menús de la plataforma de
investigación a partir de los roles que desempeña un usuario determinado, lo cual
resultó beneficioso en términos de mantenimiento y escalabilidad, ya que al no
estar estáticos en una vista de la plataforma, se pueden administrar y filtrar en
cualquier etapa de la vida de Sherlock, esto hace que los próximos desarrollos que
pueda tener la aplicación web no se vean afectados en este punto. La creación de
los roles de usuario para filtrar secciones de la plataforma ayudó también a crear
los módulos de administración, ya que al partir de la clara idea de que pocos
usuarios llegarán a poseer el papel de administrador, o súper-administrador (El cual
solo es uno), permitió acelerar el proceso de construcción de los mismos.
En la base de datos de Sherlock inicialmente se pensó la integración de un trigger
que se encargará de validar la fecha límite de una actividad del calendario de un
proyecto de grado o semillero de investigación, con el fin de reprobar dicha tarea,
en pro de tratar de forma imparcial a los encargados y el responsable de validarla,
pero se decidió que no era necesario su implementación para el alcance de la
plataforma, ya que carecía de criterio y podría ser un riesgo a futuro para el
funcionamiento de la base de datos.
Las sesiones de la aplicación web inicialmente eran propensas a tener problemas
de seguridad y compatibilidad con aplicaciones que se encuentren alojadas en el
servidor de aplicaciones, por lo que se le adiciono una llave encriptada creada a
partir de la combinación de la llave de la plataforma, la cual fue encriptada a través
“sha512”, con una fecha específica, todo esto sometido a una encriptación MD5, la
84
cual se anexa en los nombres de las cookies de las sesión, de tal forma que un
futuro desarrollador puede dar uso de las datos con nombres correspondientes a la
lógica de negocio sin verse perjudicado en el proceso.
En cuestión de mantenimiento y performance se adicionó el patrón arquitectónico
Publish Subscribe para la recepción de las notificaciones de Sherlock, las cuales
tiene una funcionalidad adicional de eliminación de notificaciones leídas a partir de
la notificación 51 hacia arriba con tal de optimizar los procesos de la base de
datos. Finalmente se integró una funcionalidad de versionamiento en la que los
nuevos desarrollos de la plataforma no se vean afectado en el momento de
desplegar a producción por recursos almacenadas en caché en el lado del cliente,
por lo que cada vez que se carga un recurso ya sea una fuente, un estilo o script, al
estar ligado a la versión de la plataforma, el navegador no encontrará el archivo
específico y se verá obligado a descargar el nuevo archivo al que apunta la página.
85
8. Pruebas y análisis En el proceso investigativo de la aplicación web, Sherlock, se estructuró una
metodología a seguir en la realización de las pruebas y análisis de la plataforma, de
las cuales surgieron 3 facetas en el transcurso de su ejecución, orientadas
directamente a los stakeholders del proyecto, con el fin de obtener la aprobación
total de las funcionalidades de la aplicación.
8.1. Primera reunión con stakeholder principales En primera instancia se planeó una reunión con los 2 principales stakeholders de
Sherlock, el director de la carrera de ingeniería multimedia y el coordinador
proyectos de grados de la carrera de ingeniería multimedia, con el fin de mostrarles
el resultado de la investigación y desarrollo que se llevó a cabo en el proceso de
implementación de la aplicación web, mediante las exploración y ejecución de las
funcionalidades principales de la misma, por parte de los stakeholders, esto fue
guiado por el equipo de desarrollo.
Finalmente la reunión que se llevó a cabo tuvo un segundo objetivo, el cual
consistía en obtener la aprobación de los directos para la realización de las
pruebas de aceptación y encuestas, de las cuales hablaremos más adelante,
disminuyendo los riesgos durante la realización de las mismas, mediante la
detección y asistencia de bugs, errores o inconsistencias de la plataforma, por lo
que resultó muy fructífero para Sherlock, ya que se pudo generar un documento de
cambios y ajustes por parte de los stakeholders principales.
Ver anexo 5.
86
8.2. Pruebas de aceptación de los stakeholders La segunda faceta de las pruebas y análisis de la plataforma web fue llevado a
cabo gracias a las pruebas de aceptación de las funcionalidades principales de
Sherlock, estos fueron los requerimientos que surgieron de las reuniones realizadas
con los stakeholders al inicio del proceso investigativo del proyecto, los cuales
fueron moldeados y pulidos en la realización del diseño detallado de software de la
aplicación web, el cual fue explicado en el capítulo de desarrollo.
Las pruebas de aceptación se dividieron en 4 roles, los cuales fueron el
administrador, el docente, el estudiante de pregrado y el estudiante de semilleros
de investigación, generando respectivamente 4 documentos a incorporar,
construidos con el listado de funcionalidades solicitadas de Sherlock, cada
documento fue estructurado con los requerimientos puntuales de su rol y
requerimientos globales para cualquier rol de la aplicación web, una sección de
observaciones y la firma del stakeholder, con el fin de hacer valido dicho
documento.
Las pruebas de aceptación por parte de los documentos de administrador y
docente fueron encabezados por el director de la carrera de ingeniería multimedia,
la secretaria del programa de ingeniería multimedia y el coordinador de proyectos
de grado de la carrera de ingeniería multimedia. Por otro lado las pruebas de los
roles de estudiante de pregrado y estudiante de semilleros de investigación fueron
llevado a cabo de una forma diferente, se reunió a un grupo de estudiantes a través
de una video llamada grupal en la aplicación de Google, Hangout, aprovechando el
hecho de que se alojó la plataforma de investigación en una máquina virtual de la
plataforma de Google Cloud, dicha reunión pudo tener lugar en línea sin ningún
problema, siendo la oportunidad propicia para probar el comportamiento de la
plataforma y su rendimiento al trabajar varios usuarios al tiempo, en las diferentes
funcionalidades que posee Sherlock, dando a luz a un video que además de los
87
documentos de aceptación, sirven de evidencia del cumplimiento de los
requerimientos, y más importante aún, el funcionamiento de la aplicación.
Ver anexo 6 y 7.
8.3. Encuestas de experiencia de usuario Finalmente en la tercera y última faceta de las pruebas y análisis de la aplicación
web se llevaron a cabo encuestas de experiencia de usuario, las cuales tuvieron
lugar mediante la guía del equipo de desarrollo, la exploración en la aplicación por
parte de los encuestados y el comportamiento observados en ellos. Para las
realización de las encuestas se seleccionaron 35 estudiantes de la carrera de
ingeniería multimedia, entre los cuales se tomaron estudiantes en la etapa de
anteproyectos y proyectos de grado, como de egresados de la misma; la encuesta
fue construida con 8 preguntas, donde cada una tuvo lugar a calificación
enumerativa, de 1 a 5, donde 1 representa lo más bajo y 5 el más importante, y una
sección de observaciones.
A continuación se presentan los resultados que tuvieron lugar en las encuestas de
experiencia:
Figure 8.27. Respuestas pregunta 1: Considero que Sherlock brinda apoyo en la
creación y gestión de grupos de investigación.
88
Figure 8.28. Respuestas pregunta 2: Considero que Sherlock ayudará a facilitar los
procesos de planteamiento de anteproyectos de grado.
Figure 8.29. Respuestas pregunta 3: La plataforma de investigación facilita la
gestión de los proyectos de investigación mediante la gerencia de un calendario de
actividades y administración de archivos.
89
Figure 8.30. Respuestas pregunta 4: Los procesos de búsqueda de antecedentes
son más amigables utilizando la plataforma de investigación.
Figure 8.31. Respuestas pregunta 5: La aplicación web es intuitiva y amigable con
el usuario en el proceso informativo de los docentes investigadores, proyectos de la
bolsa y semilleros de investigación de la carrera de Ingeniería Multimedia.
90
Figure 8.32. Respuestas pregunta 6: La plataforma de Sherlock posee buenos
tiempos de reacción, permitiendo la navegación en ella de forma ágil.
Figure 8.33. Respuestas pregunta 7: La plataforma Sherlock brinda buenas
alternativas de información para colaborar en el proceso de exploración y
utilización de las diferentes funcionalidades que ofrece.
91
Figure 8.34. Respuestas pregunta 8: La plataforma me permite estar al día con el
estado y el proceso de los proyectos de investigación a través de la recepción
oportuna de notificaciones.
Ver anexo 8.
Por medio de la realización de las pruebas y análisis de los resultados a los
estudiantes actos para el proceso de desarrollo de proyecto de grado del programa
de ingeniería multimedia, se pudo concluir que Sherlock cumple con los
requerimientos establecidos en el momento de plantear el proyecto, pero mediante
el estudio de los resultados se formula el mejorar un poco los procesos de
interacción y usabilidad de la plataforma, ya que los usuarios tuvieron breves
tropiezos en la búsqueda de algunas secciones de exploración de la plataforma,
pero el número de incidencias fue mínima.
Al final de las pruebas los comentarios fueron principalmente positivos, junto con
algunos aportes de nuevas funcionalidades que serían recomendables implementar
a futuro en la aplicación web.
92
9. Conclusiones y trabajos a futuro
9.1. Conclusiones 1. El levantamiento de requisitos es sin duda una formalidad estrictamente
necesaria, permitió detectar las necesidades claves, y las funcionalidades
importantes para lo que sería la plataforma de investigación, Sherlock, esto
se hizo en conjunto con los afectados de llevar a cabo dicho desarrollo, los
stakeholders, por lo que finalmente se pudo empezar una investigación con
pie firme, al tener claro el listado de requerimientos del proyecto.
2. La construcción del diseño detallado de software es una las prácticas más
benéficas a la hora de diseñar y desarrollar un software de alta calidad, para
el alcance de esta investigación, una aplicación web. Este documento logró
visualizar el alcance de un proyecto, moldearlo acorde a las exigencias que
no fueron tomadas en cuenta en sus inicios, logrando una sólida
infraestructura.
3. El diseño e implementación de los wireframes de la plataforma de
investigación permitió visualizar lo que sería finalmente, pero no totalmente,
la aplicación de Sherlock, pero aún más importante cuál sería el espacio en
el que los usuarios de diferentes roles iban a convivir e interactuar,
minimizando las incongruencias y mejorando la navegación en la
plataforma.
4. La selección de los colores, la iconografía y la tipografía que representaran la
identidad gráfica de una proyecto, no son elementos que se debían escoger
a la ligera, debido a que los usuarios en su mayoría siempre tendrán
contacto con las aplicaciones de forma visual, por lo que elegir estos
recursos de forma inadecuada, o apresurada, puede terminar por crear una
93
experiencia negativa para un usuario, por no decir que puede llegar a ser muy
aburrida o desagradable, finalmente esto repercute en la aceptación, la
permanencia y el patrocinio por parte de los usuarios, que dicho de otra
forma, representan los pilares de éxito de una plataforma web. Tener en
cuenta estos aspectos resultó muy benéfico para el diseño y maquetación
de Sherlock, el estudio de filosofía de diseño y del color fueron la mejor
elección para la plataforma en el proceso investigativo.
5. El diseño de la bases de datos relacional de Sherlock logró ser construida de
forma fluida, escalable y flexible, todo gracias a la implementación del
patrón de bases de datos, maestro detalle, lo que permitirá la administración
y escalabilidad de la lógica de negocio de forma segura en el futuro, además
de la adición de los arcos exclusivos, que a través de la flexibilidad que nos
brinda, se pudo reutilizar entidades, minimizando la creación de tablas
innecesarias.
6. La planeación y ejecución de una estructura de implementación a nivel
protección funcional en el código fuente, tanto en el frontend como en el
backend de la aplicación, resultó muy fructífero en cuanto a mantenimiento,
seguridad y escalabilidad. Estas reglas de juego permitieron moldear una
plataforma que se encarga de proteger los datos sensibles de los usuarios
en el lado del cliente y del servidor, minimizando los errores del sistema y la
incongruencia de datos.
7. La implementación de los roles de usuario junto con la carga dinámica de los
cuatro tipos de menú que conforman la aplicación, no solo creó la existencia
de la tercera barrera de protección funcional de la plataforma, sino que
además dejó consigo una estructura para escalar el desarrollo y la creación
94
secciones y filtrarlos acorde a los permisos que sean delegados a los
diferentes roles del sistema.
8. La creación de una llave encriptada creada a partir de la combinación de la
llave de la plataforma y una fecha específica, las cuales fueron sometidas a
una encriptación MD5, a la cual se anexa en los campos de las cookies de
las sesión de Sherlock, aumentó la seguridad y compatibilidad de
aplicaciones alojadas en un mismo servidor.
9. La implementación del versionamiento de la plataforma, logró cimentar y
trabajar en una aplicación que no presentará problemas de compatibilidad
en el lado del frontend en el momento de hacer despliegue de nuevas
funcionalidades en futuros desarrollos de Sherlock.
10. La idea de equipar los procesos investigativos de la carrera de ingeniería
multimedia con una plataforma orientada a la investigación resultó
acertada, esto promueve la búsqueda de información por parte del
alumnado, refuerza la comunicación entre grupos de investigación, mejora la
gestión y culminación de los proyectos del programa de ingeniería
multimedia.
9.2. Trabajos a futuro Una vez culminado la investigación de la aplicación web, Sherlock, y gracias a las
pruebas y análisis realizadas en el proceso, contribuyó con diferentes funcionalidad
para implementar el sistema, ya que es una herramienta que irá creciendo como un
proyecto investigativo permanente de la carrera de ingeniería multimedia, que en
futuro se espera su incrustación en todas las carreras de la Universidad de San
Buenaventura Cali.
95
Para futuro Sherlock deberá adicionar la posibilidad de los estudiantes contacten
directamente con los docentes mediante la aplicación, por solicitudes, para que
puedan encontrar un director para una propuesta de anteproyecto de grado
aprobado, esto se debe a que actualmente es un administrador quien integra el
nuevo director al anteproyecto, el cual fue contactado por fuera para dicha
integración, ya sea por uno estudiante del grupo de investigación o el futuro
director del proyecto. También se espera que un estudiante o docente pueda
solicitar el ingreso a un semillero de investigación a través de Sherlock, es decir,
mediante solicitudes, ya que actualmente toca contactar por fuera al director del
semillero, darle el código de estudiante y que lo integre manualmente.
Durante las encuestas de experiencia de usuario, surgió la solicitud de crear una
sección de contáctenos en la plataforma, para que los usuarios puedan enviar una
puntual que tengan referente a Sherlock, además sintieron la necesidad de que las
notificaciones de la aplicación web lleguen al correo electrónico para optimizar el
proceso de comunicación de las mismas.
Finalmente el equipo de desarrollo al dialogar con los stakeholders principales
referente a la experiencia de la plataforma y las funcionalidades a futuro,
plantearon la idea de incluir una herramienta de generación de actas de los
proyectos de grado y semillero de investigación a través de una grabación de audio
en tiempo real, explicando con un ejemplo, un grupo de investigación se encuentra
en una reunión de entrega con el director de su proyecto de investigación, y
mediante Sherlock activan la funcionalidad de la generación de acta con la
herramienta explicada, lo que se pretende es que mientras los integrantes hablan
durante la reunión, la aplicación en el lado del cliente están procesando el audio,
generando y adicionando las cadenas de texto temporalmente en una variable, la
cual será enviada al lado del servidor para ser convertida en un documento, alojado
en el mismo y su ubicación guardada automáticamente en la base de datos, por lo
96
que al ser del lado del cliente, este proceso será independiente para cada usuario
que use esta funcionalidad, el servidor no se verá afectado en el procesamiento y
será una herramienta poderosa en las generación de actas para los proyectos de
investigación de ingeniería multimedia.
9.3. Recomendaciones Los proyectos de grado son investigaciones que nacen a partir de una idea
concreta de dar un aporte significativo a una carrera universitaria específica,
volviéndose un instrumento de enseñanza y anécdotas para los próximos
investigadores en ansias de ser cada vez mejores y llegar a la verdad.
En algunos casos las investigaciones son proyectos que tienen el potencial de
seguir adelante con nuevos estudios e ir creciendo exponencialmente por el aporte
de diferentes investigadores que decidan continuar con dicha labor; Sherlock es
una plataforma de investigación pensada para la comunidad académica del
programa de ingeniería multimedia, con metas de ser a futuro una herramienta de
apoyo en todas las carreras de la Universidad de San Buenaventura Cali, por eso es
recomendable que los estudiante que realicen este tipo de investigaciones tengan
como objetivo en su proceso de trabajo, el dejar instruido al siguiente o siguientes
investigadores que seguirán con el proceso de estudio del proyecto, evitando que
labores tan significativas caigan en el olvido y solo sirvan de antecedentes para
próximas investigaciones, a pesar de tener el potencial de crecer más.
97
10. Referencias
[1] "Breve historia del desarrollo Web," in Geeks, 2016. [Online]. Available:
http://geeks.ms/wikis/iis/breve-historia-del-desarrollo-web.aspx. Accessed: Nov.
23, 2016.
[2] S. R. Muñoz, "“Sistemas de Elearning abiertos basados en servicios," Ph. D,
Universidad Nacional de Educación a Distancia, Madrid, España, 2012.
[3] A. Sartorio, G. Rodríguez, and M. Vaquero, "Investigación en el diseño y
desarrollo para el enriquecimiento de un framework colaborativo web sensible al
contexto," Univ. Abierta Interamericana (UAI) - Univ. Nacional de Rosario, Rosario,
Argentina, 2011.
[4] I. C. Blanco, "Ingeniería en Informática Plataformas de desarrollo de
aplicaciones Web orientadas a componentes reutilizables," Universidad de Buenos
Aires, Buenos Aires, Argentina, 2008.
[5] M. S. Poveda and J. C. Deavila P, "Sistema de información para la gestión de los
trabajos de grado," Universidad de Cartagena, Cartagena de Indias, Colombia, 2013.
[6] P. A. Díaz, "Sistema de información del programa académico de ingeniería de
sistemas en la gestión de trabajos de grado y de la página informativa (SIPAIS),"
Escuela de Ingeniería de Sistemas y Computación, Cali - Valle del Cauca, Colombia,
2010.
[7] J. C. Roman P, "Diseño e implementación de un sistema colaborativo de
mensajería electrónica para la Universidad de Pamplona," Universidad de
Pamplona, Pamplona, Colombia, 2006.
98
[8] "Prórrogas," in Enciclopedia Jurídica. [Online]. Available:
http://www.enciclopedia-juridica.biz14.com/d/prorrogas/prorrogas.htm. Accessed:
Nov. 23, 2016.
[9] Abelsuing, "Definición de las Líneas de Investigación," in Slideshare. [Online].
Available: http://es.slideshare.net/abelsuing/definicin-de-las-lneas-de-investigacin.
Accessed: Nov. 23, 2016.
[10] M. Logrono, "Maria Jose tellez jarquin," in Slideshare, pascual Yana, 2016.
[Online]. Available: http://es.slideshare.net/MoisesLogroo/proyecto-de-grado-
14557032. Accessed: Nov. 23, 2016.
[11] L. Web, "1.2. Breve historia de HTML (Introducción a XHTML)," in Libros Web,
2006. [Online]. Available:
http://librosweb.es/libro/xhtml/capitulo_1/breve_historia_de_html.html. Accessed:
Nov. 23, 2016.
[12] E. Comunicación, "LA EVOLUCIÓN DE LA WEB 1.0, 2.0 y 3.0," in Enfoque
Comunicación, Enfoque Comunicación, 2015. [Online]. Available:
http://www.enfoquecomunicacion.com/blog/la-evolucion-de-la-web-1-0-2-0-y-3-0.
Accessed: Nov. 23, 2016.
[13] "Haz Historia S.L.," in Haz Historia S.L., 2014. [Online]. Available:
http://www.hazhistoria.net/blog/historia-del-www-de-la-web-10-la-web-30.
Accessed: Nov. 23, 2016.
[14] Divestopedia and S. Institute, "What is back-end developer? - definition from
Techopedia," in Techopedia, Techopedia.com, 2016. [Online]. Available:
https://www.techopedia.com/definition/29568/back-end-developer. Accessed:
Nov. 23, 2016.
99
[15] Quora, "What is the difference between front end and back end development?"
in Quora. [Online]. Available: https://www.quora.com/What-is-the-difference-
between-front-end-and-back-end-development. Accessed: Nov. 23, 2016.
[16] T. P. Group, "PHP 7.1.0 release candidate 3 released," in PHP, 2016. [Online].
Available: http://php.net/. Accessed: Oct. 11, 2016.
[17] "Esquema PHP," in Web-based databases using PHP - part 1 - beginning PHP.
[Online]. Available: http://www.keithjbrown.co.uk/vworks/php/php_p1.php.
Accessed: Nov. 23, 2016.
[18] M. Rouse, "¿Qué es SQL o lenguaje de consultas estructuradas? - Definición en
WhatIs.com," SearchDataCenter en Español, 2016. [Online]. Available:
http://searchdatacenter.techtarget.com/es/definicion/SQL-o-lenguaje-de-
consultas-estructuradas. Accessed: Nov. 23, 2016.
[19] Divestopedia and S. Institute, "What is structured query language (SQL)? -
definition from Techopedia," in Techopedia, Techopedia.com, 2016. [Online].
Available: https://www.techopedia.com/definition/1245/structured-query-
language-sql. Accessed: Nov. 23, 2016.
[20] "Esquema SQL," in Tag archives: DML, 2016. [Online]. Available:
https://mostafaelmasry.com/tag/dml/. Accessed: Nov. 23, 2016.
[21] "Front-end web development," in Wikipedia, Wikimedia Foundation, 2016.
[Online]. Available: https://en.wikipedia.org/wiki/Front-end_web_development.
Accessed: Nov. 23, 2016.
100
[22] "Guía Breve de CSS,". [Online]. Available:
http://www.w3c.es/Divulgacion/GuiasBreves/HojasEstilo. Accessed: Nov. 23,
2016.
[23] "¿Qué es y para qué sirve JavaScript? Embeber JavaScript en HTML. Ejercicio
ejemplo básico (CU00731B)," in APR. [Online]. Available:
http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=5
90:ique-es-y-para-que-sirve-javascript-embeber-javascript-en-html-ejercicio-ejemplo-
basico-cu00731b&catid=69:tutorial-basico-programador-web-html-desde-
cero&Itemid=192. Accessed: Oct. 11, 2016.
[24] Posted and M. Rouse, "What is Ajax (Asynchronous JavaScript and XML)? -
definition from WhatIs.com," in Techtarget, SearchWinDevelopment, 2007. [Online].
Available: http://searchwindevelopment.techtarget.com/definition/Ajax. Accessed:
Nov. 23, 2016.
[25] Divestopedia and S. Institute, "What is jQuery? - definition from Techopedia," in
Techopedia, Techopedia.com, 2016. [Online]. Available:
https://www.techopedia.com/definition/3977/jquery. Accessed: Nov. 23, 2016.
[26] T. T. H. dice, "¿Qué son los web services?," in Msaffirio, Consultoría BPM y TI,
2006. [Online]. Available: https://msaffirio.com/2006/02/05/%C2%BFque-son-los-
web-services/. Accessed: Nov. 23, 2016.
[27] "Esquemas Servicios Web," in Guía Breve de Servicios web. [Online]. Available:
http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb. Accessed: Nov. 23,
2016.
101
[28] Microsoft, "La Arquitectura Orientada a Servicios (SOA) de Microsoft aplicada
al mundo real," Microsoft Corporation, 2006. [Online]. Available:
www.microsoft.com/soa.
[29] V. Beal, "What is service-oriented architecture (SOA)? Webopedia definition," in
Webopedia. [Online]. Available:
http://www.webopedia.com/TERM/S/Service_Oriented_Architecture.html.
Accessed: Nov. 23, 2016.
[30] "SOA,” [Online]. Available:
https://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicio. Accessed: Oct. 13,
2016.
[31] Posted and M. Rouse, "What is SOAP (simple object access protocol)? -
definition from WhatIs.com," in Techtarget, SearchSOA, 2014. [Online]. Available:
http://searchsoa.techtarget.com/definition/SOAP. Accessed: Nov. 23, 2016.
[32] O. F. Brea and DesarrolloW, "SOAP. Simple object access protocol," in
Desarrolloweb, DesarrolloWeb.com, 2012. [Online]. Available:
http://desarrolloweb.com/articulos/1853.php. Accessed: Nov. 23, 2016.
[33] B. G. C and DesarrolloW, "SOAP (simple object access protocol)," in
Desarrolloweb, DesarrolloWeb.com, 2016. [Online]. Available:
http://desarrolloweb.com/articulos/1557.php. Accessed: Nov. 23, 2016.
[34] "RESTful web services introduction," in Tutorialspoint, www.tutorialspoint.com,
2016. [Online]. Available:
https://www.tutorialspoint.com/restful/restful_introduction.htm. Accessed: Nov.
23, 2016.
102
[35] Webmaster, A. de Sistemas, and con experiencia, "¿Qué son las bases de
datos?," in Editorial, Maestros del Web, 2007. [Online]. Available:
http://www.maestrosdelweb.com/que-son-las-bases-de-datos/. Accessed: Oct. 11,
2016.
[36] UPCI and UPCI, "Hernan Lopez," in SlideShare, 2016. [Online]. Available:
http://es.slideshare.net/rafq007/diferencias-entre-base-de-datos-relacional-y-no-
relacional. Accessed: Oct. 11, 2016.
[37] Rubenfa, "MongoDB: Qué es, cómo funciona y cuándo podemos usarlo (o no),"
in Genbetadev, 2016. [Online]. Available: http://www.genbetadev.com/bases-de-
datos/mongodb-que-es-como-funciona-y-cuando-podemos-usarlo-o-no. Accessed:
Nov. 23, 2016.
[38] "Ejemplo de manejo de datos con MongoDB,". [Online]. Available:
http://www.slideshare.net/FrancescoLoFranco/mongodb-how-to-model-and-
extract-your-data. Accessed: Nov. 23, 2016.
[39] Divestopedia and S. Institute, "What is Riak? - definition from Techopedia," in
Techopedia, Techopedia.com, 2016. [Online]. Available:
https://www.techopedia.com/definition/26740/riak. Accessed: Nov. 23, 2016.
[40] M. R. P. Concurrente and Erlanger, "Riak: Base de Datos sin SPOF," in
Altenwald, Altenwald, 2006. [Online]. Available:
http://altenwald.org/2011/09/14/riak-base-de-datos-sin-spof/. Accessed: Nov. 23,
2016.
103
[41] Andreicito1, "Bases de datos NoSQL Riak," in Slideshare. [Online]. Available:
http://es.slideshare.net/andreicito1/bases-de-datos-nosql-riak. Accessed: Nov. 23,
2016.
[42] "Esquema base de datos NoSQL Riak," in Creating a web App in Erlang with
chicago boss and Riak from scratch - I, 2016. [Online]. Available:
http://www.drlinux.org/creating-a-web-app-in-erlang-with-chicago-boss-and-riak-
from-scratch-i/. Accessed: Nov. 23, 2016.
[43] NoSQL, "Cassandra," in http://www.nosql.es/blog/nosql/cassandra.html, 2016.
[Online]. Available: http://www.nosql.es/blog/nosql/cassandra.html. Accessed:
Nov. 23, 2016.
[44] D. Academy, DataStax Academy, and M. Vecino Rosado, "Apache Cassandra -
¿Qué es?," in slideshare, 2016. [Online]. Available:
http://es.slideshare.net/planetcassandra/cassandra-qu-es-de-0-a-100-con-apache-
cassandra. Accessed: Nov. 23, 2016.
[45] "Movimiento de datos con Cassandra," in Javier Pulido: ( ゚▽゚ )/, 2011. [Online].
Available: http://www.franciscojavierpulido.com/2013_09_01_archive.html.
Accessed: Nov. 23, 2016.
[46] J. F. Cía, "Neo4j: Qué es y para qué sirve una base de datos orientada a grafos,"
in Bbvaopen4u, BBVAOpen4U, 2015. [Online]. Available:
https://bbvaopen4u.com/es/actualidad/neo4j-que-es-y-para-que-sirve-una-base-de-
datos-orientada-grafos. Accessed: Nov. 23, 2016.
[47] D. L. González-de-Artaza, "Arquitectura lógica - Neo4j," in Slideshare,
JVJsoftware™, 2016. [Online]. Available: http://es.slideshare.net/dipina/nosql-cassandra-
couchdb-mongodb-y-neo4j. Accessed: Nov. 23, 2016.
104
[48] A. Javier, "Base de datos relacional," in Slideshare, 2016. [Online]. Available:
http://es.slideshare.net/AlexJavier2/una-base-de-datos-relacional. Accessed: Nov.
23, 2016.
[49] "Bases de datos relacional," Wikimedia Foundation, 1970. [Online]. Available:
https://es.wikipedia.org/wiki/Base_de_datos_relacional. Accessed: Oct. 13, 2016.
[50] Oracle, "MyQSL," in Oracle. [Online]. Available:
https://www.oracle.com/es/products/mysql/overview/index.html. Accessed: Oct.
11, 2016.
[51] "Ventajas y desventajas de la base de datos my Sql - mind map," in mindomo.
[Online]. Available: https://www.mindomo.com/es/mindmap/ventajas-y-
desventajas-de-la-base-de-datos-my-sql-402f5022676f47919f2a15e79534330b.
Accessed: Nov. 23, 2016.
[52] D. Masip and DesarrolloW, "Qué es oracle," in Desarrollo Web,
DesarrolloWeb.com, 2016. [Online]. Available:
http://www.desarrolloweb.com/articulos/840.php. Accessed: Nov. 23, 2016.
[53] "Caracteristicas de oracle," in Wikispaces. [Online]. Available:
https://packo.wikispaces.com/Caracteristicas+de+Oracle. Accessed: Nov. 23,
2016.
[54] "Maestro Detalle," in SQL: A simple PHP/MySQL master detail report, 2011.
[Online]. Available: http://jayperetz.com/blog/?p=851. Accessed: Oct. 13, 2016.
105
[55] "Object relational Mapper — doctrine project," in Doctrine Project, 2006.
[Online]. Available: http://www.doctrine-project.org/projects/orm.html. Accessed:
Nov. 23, 2016.
[56] "ORM," Programar fácil, 2015. [Online]. Available:
http://programarfacil.com/blog/que-es-un-orm/. Accessed: Oct. 13, 2016.
[57] "Arquitectura de software," in Ecured. [Online]. Available:
https://www.ecured.cu/Arquitectura_de_software. Accessed: Nov. 23, 2016.
[58] "Patrones Arquitectónicos," in Pbworks. [Online]. Available:
http://isg3.pbworks.com/w/page/7624479/Patrones%20Arquitect%C3%B3nicos.
Accessed: Nov. 23, 2016.
[59] SoftwareEngineerInsider, "What is software engineering?," in Software Engineer
insider, 2011. [Online]. Available:
http://www.softwareengineerinsider.com/articles/what-is-software-
engineering.html#.WCkDrdXhDDc. Accessed: Nov. 23, 2016.
[60] A. Goñi Sarriguren, "Reutilización del Software, patrones de diseño.," in
Reutilización del software Patrones de Diseño, 2006. [Online]. Available:
http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf. Accessed: Nov. 23, 2016.
[61] SourceMaking, "Design patterns and Refactoring," in Sourcemaking, 2007.
[Online]. Available: https://sourcemaking.com/design_patterns/creational_patterns.
Accessed: Nov. 23, 2016.
[62] I. SOMMERVILLE, Ingeniería del Software, Séptima ed. Prentice Hall, 2005.
106
[63] "MVC," in Understanding ASP.NET MVC using real world example, for
beginners and intermediate, 2015. [Online]. Available:
http://www.codeproject.com/Articles/871375/Understanding-ASP-NET-MVC-using-
real-world-example=esquema. Accessed: Oct. 13, 2016.
[64] S. Fernandez, "Presentacion de Patrones Creacionales," Universidad Columbia
del Paraguay, 2011.
[65] "Singleton," in El Patrón Singleton, 2016. [Online]. Available:
https://msdn.microsoft.com/es-es/library/bb972272.aspx. Accessed: Oct. 13,
2016.
[66] SourceMaking, "Design patterns and Refactoring," in Sourcemaking, 2007.
[Online]. Available: https://sourcemaking.com/design_patterns/structural_patterns.
Accessed: Nov. 23, 2016.
[67] SourceMaking, "Design patterns and Refactoring," in Sourcemaking, 2007.
[Online]. Available:
https://sourcemaking.com/design_patterns/behavioral_patterns. Accessed: Nov.
23, 2016.
[68] "Interface," in Oxforddictionaries. [Online]. Available:
https://en.oxforddictionaries.com/definition/interface. Accessed: Nov. 23, 2016.
[69] S. W. -Washington and D. C. 20201, "User interface design basics," in Usability,
Department of Health and Human Services, 2014. [Online]. Available:
https://www.usability.gov/what-and-why/user-interface-design.html. Accessed:
Nov. 23, 2016.
107
[70] UTPL and UTPL, "Diseno de Interfaz de Usuario," in Slideshare, DANNY_LANZA,
2016. [Online]. Available: http://es.slideshare.net/sanfer08/diseno-de-la-interfaz-de-
usuario. Accessed: Nov. 23, 2016.
[71] V. M. Gomez, "El diseño de la interfaz: Diseño de Paginas web," in Lawebera,
2015. [Online]. Available: http://www.lawebera.es/diseno-web/el-diseno-de-la-
interfaz.php. Accessed: Nov. 23, 2016.
[72] J. Vega, "Diseño web: 15 Principios Elementales de Interfaz de Usuario," in
Vegacorp, VegaCorp, 2015. [Online]. Available: http://es.vegacorp.me/diseno-web-
principios-elementales-interfaz-usuario/. Accessed: Nov. 23, 2016.
[73] "¿Qué es el Diseño responsive?," in 40defiebre, 40deFiebre. [Online]. Available:
https://www.40defiebre.com/que-es/diseno-responsive/. Accessed: Nov. 23, 2016.
[74] "Esquema Diseño Responsivo," in Creativos Online, Creativos Online, 2016.
[Online]. Available: http://www.creativosonline.org/blog/diseno-web-responsive-o-
adaptativo-cual-es-la-diferencia.html. Accessed: Nov. 23, 2016.
[75] "¿Qué es la experiencia de usuario?," in 40defiebre, 40deFiebre. [Online].
Available: https://www.40defiebre.com/que-es/experiencia-usuario/. Accessed:
Nov. 23, 2016.
[76] LanceTalent, "Guía del emprendedor: ¿Qué es un diseño UX?," in Lancetalent,
LanceTalent, 2015. [Online]. Available: https://www.lancetalent.com/blog/diseno-
ux/. Accessed: Nov. 23, 2016.
[77] "Esquema Experiencia de Usuario (UX)," Blog de Marketing Digital y Estrategias
de Contenido, 2016. [Online]. Available: https://mott.pe/marketing-digital/diseno-
de-experiencia-de-usuario-ux-y-usabilidad-web/. Accessed: Nov. 23, 2016.
108
[78] "¿Qué es la Usabilidad?," in Sidar. [Online]. Available:
https://www.sidar.org/recur/desdi/traduc/es/visitable/quees/usab.htm. Accessed:
Nov. 23, 2016.
[79] "¿Qué es la Usabilidad?," in Guía Digital. [Online]. Available:
http://www.guiadigital.gob.cl/articulo/que-es-la-usabilidad. Accessed: Nov. 23,
2016.
[80] J. Garcia, "Qué es el flat design o Diseño Plano," in Departamento de Internet,
Departamento de Internet, 2013. [Online]. Available:
http://www.departamentodeinternet.com/que-es-flat-design-diseno-plano/.
Accessed: Nov. 23, 2016.
[81] M. S. Zavia, "Material design es el nuevo diseño de Google para Android (y el
resto de sus plataformas)," in Xatakamovil, 2016. [Online]. Available:
http://www.xatakamovil.com/sistemas-operativos/material-design-es-el-nuevo-
diseno-de-google-para-android-y-el-resto-de-sus-plataformas. Accessed: Nov. 23,
2016.
[82] "Ejemplo de diseño Material Design,". [Online]. Available:
http://www.elandroidelibre.com/wp-content/uploads/2015/09/superficie.png.
Accessed: Nov. 23, 2016.
[83] E. Verde and V. todo mi perfil, "Schoology," 2014. [Online]. Available:
http://herramientasdeaprendizajesocial.blogspot.com.co/2014/03/schoology-
schoology-una-de-aprendizaje.html. Accessed: Oct. 11, 2016.
[84] C. A. Ortega H, "Schoology, la red social para estudiantes y profesores," in
Cultura Digital, Young Marketing, 2013. [Online]. Available:
109
http://www.youngmarketing.co/schoology-la-red-social-para-estudiantes-y-
profesores/. Accessed: Nov. 23, 2016.
[85] "Schoology, una plataforma gratuita de aprendizaje," 2002. [Online]. Available:
http://enmarchaconlastic.educarex.es/listado-de-categorias-2/233-nuevo-
emt/formacion/1287-schoology-una-plataforma-gratuita-de-aprendizaje. Accessed:
Oct. 11, 2016.
[86] "About Trello," in Trello, 2016. [Online]. Available: https://trello.com/about.
Accessed: Nov. 23, 2016.
[87] "Trello: Plataforma colaborativa de trabajo en grupo," in Tec Digital, 2013.
[Online]. Available:
http://tecdigital.tec.ac.cr/servicios/boletin/?q=plataforma_trello. Accessed: Nov.
23, 2016.
[88] Inglés and A. Carranza, "Trello como plataforma educativa, impresiones de un
profesor cascarrabias," in Ingenierogeek. [Online]. Available:
http://www.ingenierogeek.com/2015/07/trello-plataforma-educativa-ventajas-
desventajas-usos-escuela.html. Accessed: Oct. 11, 2016.
[89] "Consortium Claroline - Claroline est un logiciel open source permettant de
déployer facilement une plateforme dédiée à l’apprentissage et au travail
collaboratif en ligne," in Claroline Connect, 2016. [Online]. Available:
http://www.claroline.net/. Accessed: Oct. 5, 2016.
[90] D. Macías Á, "Plataformas de enseñanza virtual libres y sus características de
extensión: Desarrollo de un bloque para la gestión de tutorías en Moodle,"
Universidad de Álcala, Álcala, España, 2010.
110
[91] mica, "Universidad Nacional de Colombia: Facultad de Ciencias EconÃ3micas,"
in Universidad Nacional de Colombia. [Online]. Available:
http://www.fce.unal.edu.co/claroline/. Accessed: Oct. 5, 2016.
[92] M. F. Hernández, "Moodle, Dokeos, Claroline. Ventajas e inconvenientes," 2011.
[Online]. Available: http://unirelearningmaster.blogspot.com.co/2014/02/moodle-
dokeos-claroline-ventajas-e.html. Accessed: Oct. 11, 2016.
[93] "E-LEARNING suite and LMS for growing companies," in DOKEOS - eLearning
made easy, 2016. [Online]. Available: http://www.dokeos.com/. Accessed: Oct. 5,
2016.
[94] V. to?, "Valid values for android:fontFamily and what they map to?",
Stackoverflow.com, 2017. [Online]. Available:
http://stackoverflow.com/questions/19691530/valid-values-for-androidfontfamily-
and-what-they-map-to. [Accessed: 11- Apr- 2017].
111
11. Anexos
Anexo 1: Wireframes.
Anexo 2: Documento SRS (Especificación de Requerimientos de Software).
Anexo 3: Diseño detallado de software.
Anexo 4: Diagrama de la base de datos de Sherlock.
Anexo 5: Cambios de la primera reunión con los stakeholders principales.
Anexo 6: Pruebas de aceptación.
Anexo 7: Video - Pruebas de aceptación - Estudiantes pregrado y semillero.
Anexo 8: Encuestas de experiencia de usuario.
Top Related