162
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja MODALIDAD PRESENCIAL ESCUELA DE CIENCIAS DE LA COMPUTACIÓN SISTEMAS ADAPTATIVOS EN MOODLE: INTERFAZ DE ADMINISTRACIÓN DE RECOMENDACIONES ESTÁTICAS Trabajo de fin de carrera previo a la obtención del título de Ingeniero en Sistemas Informáticos y Computación AUTOR: Angamarca Guadalima Juan Pablo DIRECTOR: Ing. Alberca Prieto Greyson Paúl CODIRECTOR: Ing. López Vargas, Jorge Afranio LOJA ECUADOR 2010

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad ...dspace.utpl.edu.ec/bitstream/123456789/1886/3... · Escuela de Ciencias de la Computación Tesis: Sistemas Adaptativos en

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA

La Universidad Católica de Loja

MODALIDAD PRESENCIAL

ESCUELA DE CIENCIAS DE LA COMPUTACIÓN

SISTEMAS ADAPTATIVOS EN MOODLE:

INTERFAZ DE ADMINISTRACIÓN DE

RECOMENDACIONES ESTÁTICAS

Trabajo de fin de carrera previo a la obtención del título

de Ingeniero en Sistemas Informáticos y Computación

AUTOR:

Angamarca Guadalima Juan Pablo

DIRECTOR:

Ing. Alberca Prieto Greyson Paúl

CODIRECTOR:

Ing. López Vargas, Jorge Afranio

LOJA – ECUADOR

2010

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

ii

CERTIFICACIÓN

Ing. Greyson Alberca

DIRECTOR DE TESIS

CERTIFICA:

Haber dirigido y supervisado el desarrollo del presente proyecto de tesis previo a la

obtención del título de INGENIERO EN SISTEMAS INFORMÁTICOS Y COMPUTACIÓN, y una

vez que este cumple con todas las exigencias y los requisitos legales establecidos por la

Universidad Técnica Particular de Loja, autoriza su presentación para los fines legales

pertinentes.

Loja, 25 de octubre de 2010

_____________________

Ing. Greyson Alberca

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

iii

AUTORÍA Y CESIÓN DE DERECHOS

YO, JUAN PABLO ANGAMARCA GUADALIMA. DECLARO SER EL

AUTOR DEL PRESENTE TRABAJO, Y EXIMO EXPRESAMENTE A LA

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA Y A SUS REPRESENTANTES

LEGALES DE POSIBLES RECLAMOS O ACCIONES LEGALES.

ADICIONALMENTE DECLARO CONOCER Y ACEPTAR LA DISPOSICIÓN DEL

ART. 67 DEL ESTATUTO ORGÁNICO DE LA UNIVERSIDAD TÉCNICA

PARTICULAR DE LOJA QUE EN SU PARTE PERTINENTE TEXTUALMENTE

DICE: “FORMAN PARTE DEL PATRIMONIO DE LA UNIVERSIDAD LA

PROPIEDAD INTELECTUAL DE INVESTIGACIONES, TRABAJOS CIENTÍFICOS

O TÉCNICOS Y TESIS DE GRADO QUE SE REALICEN A TRAVÉS, O CON EL

APOYO FINANCIERO, ACADÉMICO O INSTITUCIONAL (OPERATIVO) DE LA

UNIVERSIDAD”.

.....................................................

F) AUTOR

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

iv

DEDICATORIA

A mis padres, que siempre han

sido el apoyo necesario para salir

adelante, ante todo y en todo momento.

A mis hermanos: compañeros de

sangre en el pasado, presente y futuro

del trajinar de la vida.

A mis abuelos: patriarcas y

matriarcas de la familia que amo.

Juan Pablo

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

v

ÍNDICE DE CONTENIDOS

CERTIFICACIÓN ........................................................................................................................ ii

AUTORÍA Y CESIÓN DE DERECHOS .................................................................................... iii

DEDICATORIA ............................................................................................................................ iv

ÍNDICE DE CONTENIDOS ........................................................................................................ v

ÍNDICE DE ILUSTRACIONES ............................................................................................... viii

RESUMEN .................................................................................................................................... ix

INTRODUCCIÓN ......................................................................................................................... x

1. ESTADO DEL ARTE DE SISTEMAS DE ADMINISTRACIÓN DE RECOMENDACIONES ................ 1

1.1 SISTEMAS RECOMENDADORES .................................................................................................................................. 1 1.2 TÉCNICAS DE LOS SISTEMAS RECOMENDADORES ........................................................................................................... 2

1.2.1 Técnicas automáticas .............................................................................................................................. 2 1.2.2 Matching Conditions ............................................................................................................................... 4

1.3 SISTEMAS DE GESTIÓN DE APRENDIZAJE ...................................................................................................................... 5 1.3.1 Moodle .................................................................................................................................................... 5

1.4 SISTEMAS RECOMENDADORES EN SISTEMAS DE GESTIÓN DEL APRENDIZAJE ........................................................................ 6 1.4.1 Recomendaciones dentro de un sistema LMS ......................................................................................... 6 1.4.2 Elementos del modelo de recomendaciones ........................................................................................... 8 1.4.3 Estándares de usabilidad dentro de un sistema de recomendaciones .................................................. 10

1.5 TRABAJOS RELACIONADOS ..................................................................................................................................... 11

2. DEFINICIÓN DEL PROBLEMA .............................................................................................................. 13

2.1 PLANTEAMIENTO DEL PROBLEMA ............................................................................................................................ 13 2.2 ESTADO ACTUAL .................................................................................................................................................. 14 2.3 OBJETIVOS ......................................................................................................................................................... 15 2.4 JUSTIFICACIÓN .................................................................................................................................................... 15 2.5 ESQUEMA DE LA SOLUCIÓN .................................................................................................................................... 15

2.5.1 Módulo de datos del sistema recomendador ........................................................................................ 16 2.5.2 Módulo de usuario ................................................................................................................................ 16

2.6 METODOLOGÍA ................................................................................................................................................... 17 2.6.1 Desarrollo del modelo de datos ............................................................................................................ 17 2.6.2 Metodología de programación extrema (XP) ....................................................................................... 17 2.6.3 Descripción del contexto de la solución ................................................................................................ 21

2.7 PLANTEAMIENTO DEL DISEÑO................................................................................................................................. 22 2.8 RESULTADOS ESPERADOS ....................................................................................................................................... 23

3. ANÁLISIS Y DEFINICIÓN DE LA SOLUCIÓN...................................................................................... 24

3.1 REQUERIMIENTOS................................................................................................................................................ 24 3.1.1 Requerimientos de la aplicación ........................................................................................................... 24 3.1.2 Requerimientos no funcionales ............................................................................................................. 25

3.2 COMPONENTES RELACIONADOS .............................................................................................................................. 26 3.2.1 Módulo de tutor .................................................................................................................................... 26 3.2.2 Modelado de usuario ............................................................................................................................ 26

3.3 ESCENARIOS ....................................................................................................................................................... 27 3.3.1 Escenario de desarrollo y pruebas ........................................................................................................ 27

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

vi

3.3.2 Escenario de interacción ....................................................................................................................... 27

4. DESARROLLO DE LA SOLUCIÓN ........................................................................................................ 28

4.1 DESARROLLO DEL MODELO DE DATOS ....................................................................................................................... 28 4.1.1 Explicación de las tablas creadas en el modelo y la forma en que satisfacen los requerimientos propuestos para su desarrollo ............................................................................................................................. 28 4.1.2 Modelo obtenido ................................................................................................................................... 35

4.2 VISIÓN GENERAL DEL SISTEMA ................................................................................................................................ 36 4.2.1 Consideraciones de diseño .................................................................................................................... 37

4.3 DESARROLLO DE MECANISMO DE AUTENTICACIÓN ...................................................................................................... 39 4.4 DESARROLLO DEL SERVICIO WEB ............................................................................................................................ 40

4.4.1 Operaciones del servicio Web ............................................................................................................... 40 4.5 DESARROLLO DE LAS INTERFACES ............................................................................................................................ 42

4.5.1 Menú lateral de funcionalidades .......................................................................................................... 43 4.5.2 Listado de tipos de recomendación ....................................................................................................... 43 4.5.3 Creación/Edición de tipos de recomendación ....................................................................................... 44 4.5.4 Listado de categorías de recomendación .............................................................................................. 46 4.5.5 Creación/Edición de tipos de categorías ............................................................................................... 46 4.5.6 Borrado de datos .................................................................................................................................. 47

4.6 INTEGRACIÓN CON MOODLE .................................................................................................................................. 47 4.7 CONSIDERACIONES DE LA PROGRAMACIÓN DE LA APLICACIÓN ....................................................................................... 48

4.7.1 Diseño visual ......................................................................................................................................... 48 4.7.2 Prácticas de programación ................................................................................................................... 49

4.8 PRUEBAS DE LA APLICACIÓN ................................................................................................................................... 49

5. DISCUSIÓN DE RESULTADOS ............................................................................................................... 50

5.1 MODELO DE DATOS .............................................................................................................................................. 50 5.2 SERVICIO WEB .................................................................................................................................................... 50 5.3 INTERFAZ DE ADMINISTRACIÓN ............................................................................................................................... 50 5.4 INTEGRACIÓN CON MOODLE .................................................................................................................................. 51 5.5 PRUEBAS ........................................................................................................................................................... 51 5.6 TRABAJOS FUTUROS ............................................................................................................................................. 52

6. CONCLUSIONES Y RECOMENDACIONES .......................................................................................... 53

6.1 CONCLUSIONES ................................................................................................................................................... 53 6.2 RECOMENDACIONES ............................................................................................................................................ 55

7. ANEXOS..................................................................................................................................................... 56

7.1 HISTORIAS DE USUARIO ........................................................................................................................................ 56 7.2 DESARROLLO DE LA PLANEACIÓN DE LA ENTREGA. ...................................................................................................... 60 7.3 PLANEACIÓN DE ITERACIONES ................................................................................................................................ 61 7.4 TARJETAS CRC .................................................................................................................................................... 66

7.4.1 Clases que representan entidades dentro del contexto del negocio. .................................................... 66 7.4.2 Clases utilitarias .................................................................................................................................... 68

7.5 CASOS DE PRUEBA ............................................................................................................................................... 71 7.6 RESULTADO DE LAS PRUEBAS .................................................................................................................................. 77

7.6.1 Pruebas para caso de prueba CSPRB-001 ............................................................................................. 77 7.6.2 Pruebas para caso de prueba CSPRB-002 ............................................................................................. 77 7.6.3 Pruebas para caso de prueba CSPRB-003 ............................................................................................. 78 7.6.4 Pruebas para caso de prueba CSPRB-004 ............................................................................................. 78 7.6.5 Pruebas para caso de prueba CSPRB-005 ............................................................................................. 78 7.6.6 Pruebas para caso de prueba CSPRB-006 ............................................................................................. 79

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

vii

7.7 MANUAL DE USUARIO .......................................................................................................................................... 80 7.7.1 Ingreso al sistema ................................................................................................................................. 80 7.7.2 Menú lateral ......................................................................................................................................... 81 7.7.3 Revisar listado de tipos de recomendaciones ....................................................................................... 82 7.7.4 Crear un tipo de recomendación ........................................................................................................... 83 7.7.5 Editar tipo de recomendación ............................................................................................................... 88 7.7.6 Listado de categorías ............................................................................................................................ 88 7.7.7 Crear categoría ..................................................................................................................................... 89 7.7.8 Edición de una categoría ....................................................................................................................... 90 7.7.9 Borrado de datos .................................................................................................................................. 90 7.7.10 Uso de ayuda ................................................................................................................................... 91

7.8 MANUAL DEL PROGRAMADOR ................................................................................................................................ 93 7.9 DEFINICIÓN WSDL DEL SERVICIO WEB IMPLEMENTADO ............................................................................................104 7.10 IMPLEMENTACIÓN DEL SERVICIO WEB ...............................................................................................................110 7.11 BLOQUE MOODLE ........................................................................................................................................114 7.12 CÓDIGO FUENTE (VISTAS PRINCIPALES) ..............................................................................................................115

7.12.1 edit-type-rec.php ............................................................................................................................115 7.12.2 edit-category.php ...........................................................................................................................135 7.12.3 require-login.php............................................................................................................................138 7.12.4 confirm-delete.php .........................................................................................................................139

8. BIBLIOGRAFÍA ...................................................................................................................................... 142

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

viii

ÍNDICE DE ILUSTRACIONES

Figura 1.1. Recomendaciones ofrecidas en el sitio web YouTube. .................................................. 1 Figura 1.2. Proceso de las recomendacione. .................................................................................. 7

Figura 2.1 Esquema de módulos del sistema recomendador......................................................... 13 Figura 2.2. Esquema del planteamiento del diseño de la aplicación. ........................................... 23 Figura 4.1. Modelo para recomendaciones en escenarios de aprendizaje ................................... 28 Figura 4.2. Gráfica del modelo de datos diseñado para la solución, obtenido conjuntamente con

los autores de los módulos de seguimiento de usuarios, módulo tutor y modelado de usuario. ... 36

Figura 4.3: Esquema del consumo del servicio Web implementado para la interfaz de

administración de recomendaciones ............................................................................................. 42

Figura 4.4. Menú lateral de la aplicación. .................................................................................... 43 Figura 4.5. Listado de tipos de recomendación. ........................................................................... 44 Figura 4.6. Interfaz de creación/edición de recomendaciones. ..................................................... 45 Figura 4.7. Interfaz de listado de categorías. ............................................................................... 46

Figura 4.8. Interfaz de creación/edición de categorías. ............................................................... 47 Figura 4.9. Diálogo de confirmación de eliminación de datos. .................................................... 47

Figura 4.10. Bloque Moodle desarrollado .................................................................................... 48 Figura 7.1. Autentificación solicitada al ingresar a cualquier página de la interfaz. .................. 80 Figura 7.2. Bloque Moodle desde el que se puede ingresar a la interfaz de administración de

recomendaciones. .......................................................................................................................... 81 Figura 7.3. Menú lateral de la aplicación. .................................................................................... 82

Figura 7.4. Listado de tipos de recomendaciones existentes. ....................................................... 83 Figura 7.5. Interfaz de creación de tipos de recomendaciones (I) ................................................ 84

Figura 7.6. Interfaz de creación de tipos de recomendaciones (II) ............................................... 85 Figura 7.7. Interfaz de creación de tipos de recomendaciones (III) ............................................. 86

Figura 7.8. Notificación de campos obligatorios no completados. ............................................... 87 Figura 7.9. Visualización de un tipo de recomendación al ser creado. ........................................ 87

Figura 7.10. Visualización de un tipo de recomendación al ser editado. ..................................... 88 Figura 7.11. Listado de categorías. ............................................................................................... 89 Figura 7.12. Interfaz de creación de categorías ........................................................................... 89 Figura 7.13. Visualización de una categoría luego de ser creada. ............................................... 90 Figura 7.14. Acceso a la funcionalidad de borrado desde una página de listado. ....................... 91

Figura 7.15. Diálogo de confirmación de borrado de datos. ........................................................ 91

Figura 7.16. Notificación de borrado exitoso de datos. ................................................................ 91

Figura 7.17. Uso de los botones de ayuda. ................................................................................... 92

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

ix

RESUMEN

La Universidad Técnica Particular de Loja cuenta con un Entorno Virtual de Aprendizaje,

basado en un sistema de gestión de aprendizaje (LMS, Learning Management System)

denominado Moodle. En este Entorno, se encuentran registrados los cursos y sus estudiantes, y es

un medio de interacción y contacto. El número de usuarios del Entorno Virtual es elevado en la

actualidad, al igual que la cantidad de recursos que se ofrecen dentro de él. Para evitar un

problema de sobrecarga de información, se puede implementar un sistema de recomendaciones

que permita a los docentes ofrecer recursos relevantes a sus estudiantes. De acuerdo a los

estereotipos de los valores de atributos de modelado de usuario, se pueden crear tipos de

recomendaciones genéricos, a partir de los cuales un tutor o agente recomendador puede elaborar

recomendaciones concretas para que sean ofrecidas a los estudiantes.

En el presente trabajo se trata el desarrollo de una interfaz Web de administración de

recomendaciones, el cual forma parte de la implementación de un sistema de recomendaciones

completo integrado a Moodle. Se incluye el estudio de los elementos de las recomendaciones, la

creación de un modelo de datos para el sistema recomendador, el proceso y documentación del

desarrollo, la creación de un servicio Web para recuperar información del modelo de datos, la

integración de la aplicación con Moodle y las pruebas con usuarios que se realizaron para

verificar el funcionamiento de la aplicación.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

x

INTRODUCCIÓN

Los sistemas recomendadores se crearon con el fin de combatir el problema de sobrecarga

de información al que se veían expuestos los usuarios de sistemas quienes tenían una gran

cantidad de información a su disponibilidad. Estos sistemas se han utilizado en forma masiva en

campos como el comercio electrónico y el entretenimiento en línea. Con la aparición de entornos

virtuales de aprendizaje, se notó que en dichos sistemas también existía el problema de

sobrecarga, al haber numerosos cursos, con muchos estudiantes participantes y recursos

disponibles a ellos. Para ello, un sistema de recomendaciones aplicado a un entorno educativo

virtual debe ofrecer recursos a los estudiantes de acuerdo a sus características particulares como

niveles de conocimiento e interacción.

Esta tesis presenta el desarrollo de una interfaz de administración de recomendaciones, la

cual forma parte de un sistema de recomendaciones completo que se integrará a Moodle. El

proceso de desarrollo incluye:

El análisis correspondiente para la obtención de un modelo de recomendaciones. Este

modelo debe dar cabida al almacenamiento de recomendaciones, tipos de

recomendaciones, categorías de recomendaciones, técnicas de obtención y condiciones de

aplicabilidad. Dicho modelo también contiene el modelado de usuario, del cual, la

interfaz de administración de recomendaciones utiliza la información concerniente a los

atributos del modelo de usuario. Este modelo se obtuvo en conjunto con los autores de los

proyectos relacionados de: seguimiento de usuarios, módulo tutor y agente de modelado

de usuarios.

Realización de actividades de programación acordes a una metodología de desarrollo, la

cual en este caso es la metodología Extreme Programming (XP), que permite desarrollar

software en iteraciones cortas y sin exceso de documentación.

Desarrollo de un servicio Web que permite consumir los datos del modelo de

recomendaciones y de los atributos del modelado de usuario.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

xi

Integración de la interfaz de administración con Moodle, usando sus mecanismos de

autenticación, y un bloque que permita acceder a la interfaz.

Pruebas de aplicación con docentes para verificar su correcto funcionamiento.

Los resultados obtenidos al final del proceso son una interfaz que permite la gestión de

tipos de recomendaciones y categorías de recomendaciones, un modelo de recomendaciones y un

servicio Web que la misma interfaz utiliza para recuperar datos desde el modelo de

recomendaciones.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

1

1. Estado del arte de sistemas de administración de recomendaciones

1.1 Sistemas recomendadores

Un sistema recomendador (SR) es un sistema cuyo propósito es ayudar a los usuarios a

enfrentarse al problema de la sobrecarga de información, ofreciendo recomendaciones sobre

objetos disponibles a ellos dentro del sistema, los cuales que resulten útiles y relevantes a dichos

usuarios. Uno de los primeros sistemas recomendadores es el sistema TAPESTRY, desarrollado

en Xerox PARC, en 1992 (Itmazi, 2005). Su propósito era ofrecer recomendaciones sobre e-mail

y grupos de noticias de Internet, y soportaba dos técnicas de recomendación: filtrado colaborativo

y filtrado basado en contenidos (Itmazi, 2005).

En las dos últimas décadas, se ha intensificado la investigación sobre sistemas

recomendadores, y se han diversificado los campos en los que se utilizan. Actualmente, las

principales aplicaciones de los SR son el comercio electrónico, entretenimiento en línea, redes

sociales, videotecas y bibliotecas virtuales.

Uno de los ejemplos de uso moderno de sistemas recomendadores es YouTube, sitio de

video en línea. Desde el año 2009, se incorporó un sistema de recomendaciones, el cual recoge

información sobre el comportamiento de los usuarios dentro del sitio, el tipo de contenido que los

usuarios observan, y el contenido que han visto en el pasado, para ofrecer videos a los usuarios

basándose en esos datos (Tartakoff, 2009).

Figura 1.1. Recomendaciones ofrecidas en el sitio web YouTube.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

2

1.2 Técnicas de los sistemas recomendadores

Los sistemas recomendadores realizan su trabajo de acuerdo a varias técnicas. Existen

técnicas apoyadas por algoritmos automatizados, así como técnicas en las que un experto humano

crea recomendaciones.

1.2.1 Técnicas automáticas

En cuanto a las técnicas automáticas, su forma de operación se clasifica en tres grupos

(Candillier, Jack, & Fessant, 2009):

1.2.1.1 Filtrado colaborativo

En un proceso de filtrado colaborativo, el objetivo es predecir la clasificación que un

usuario determinado va a dar a un cierto objeto disponible en el sistema. Se clasifica a los

usuarios del sistema en grupos denominados vecindades o grupos de vecinos cercanos

(Krishnakumar, 2007), y las recomendaciones se hacen tomando en cuenta las preferencias de

usuarios similares dentro del sistema, lo cual los convierte en usuarios semejantes. Si un usuario

está dentro de un grupo, a él o ella se le recomendará objetos similares a los que prefirieron sus

vecinos cercanos. El usuario, para poder ser clasificado en un grupo de semejantes y para que

pueda predecirse sus calificaciones sobre nuevos objetos (los cuales no conoce aún), debe estar

activo en el sistema, lo cual significa que ya debe haber calificado objetos en el sistema. De la

misma forma, para poder recomendar objetos, estos deben haber sido calificados previamente.

Enfoques del filtrado colaborativo. El filtrado colaborativo tiene tres enfoques: el filtrado

basado en usuarios, en objetos y en un modelo.

El enfoque basado en usuarios realiza las predicciones en base a las calificaciones que

han dado a los objetos sus vecinos cercanos, para lo cual se necesita una medida de semejanza

entre ellos previamente definida, así como un método para combinar las calificaciones sobre el

objeto de todos los vecinos del grupo.

El enfoque basado en objetos toma en cuenta una medida de similitud entre objetos que

forman vecindarios. La calificación que un usuario le dé a un objeto se predice considerando las

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

3

calificaciones que ha dado el usuario a los objetos que están en la vecindad del objeto que se va a

recomendar.

Cuando la base de usuarios y de objetos disponibles a ellos crece hasta llegar a tener

grandes proporciones, la complejidad de los algoritmos presenta un serio problema al el

rendimiento del sistema. El enfoque basado en modelos trata con este problema, al generar

modelos de datos off-line para que las predicciones on-line se hagan de la forma más rápida

posible. Existen varios tipos de modelos utilizados en este enfoque, por ejemplo, la agrupación de

usuarios para predecir las calificaciones en base a las calificaciones de los miembros del grupo;

modelos bayesianos y modelos basados en reglas de asociación. Cabe destacar que en modelos de

agrupación probabilísticos un usuario puede pertenecer a varios grupos, en estos casos se aplican

jerarquías de grupos para definir los resultados. Las agrupaciones pueden ser tanto de objetos

como de usuarios, si se utilizan ambos tipos de agrupaciones, la calificación que se predice

resulta ser la media de los miembros del grupo de objetos, entre los miembros del grupo de

usuarios.

El concepto de similitud o semejanza es importante dentro del filtrado colaborativo. Para

calcular la similitud, se utilizan varias medidas, como la correlación de Pearson, similitud

Jaccard, similitud Manhattan, y coseno simple. Una explicación detallada de estos tipos de

cálculo de similitud va más allá del alcance de la presente tesis, y puede ser revisada en

(Candillier, Jack, & Fessant, 2009)

1.2.1.2 Filtrado basado en contenidos

Se basa en la semántica o descripciones de los objetos que han preferido los usuarios para

recomendarlos a otros usuarios que hayan preferido objetos con los mismos atributos. En este

tipo de filtrado, se crea un perfil de usuario en el que se describe los objetos que se pueden

recomendar, los objetos de los que gusta el usuario y cómo comparar los objetos a recomendar

contra el perfil de usuario. Estos perfiles pueden crearse simplemente a partir de la información

que ido construyendo el usuario sobre sus preferencias sobre los objetos, o bien puede solicitarse

esta información en forma explícita. En la Figura 1.1 (recomendaciones del sitio Web YouTube)

se puede apreciar un ejemplo de este enfoque, pues los videos que se ofrecen al usuario son

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

4

videos asociados a contenido que se ha visto con anterioridad.

Bajo este enfoque se crea un modelo de usuario, el cual es aprendido automáticamente por

un método de aprendizaje automático (algoritmo supervisado de aprendizaje) que lee las

descripciones de los objetos y produce como salida opiniones de usuario sobre los objetos. Las

preferencias son relaciones entre los usuarios y los objetos, y deben ser codificables para que se

puedan procesar. Para aumentar las posibilidades de hacer buenas recomendaciones, se debe

contar con descripciones bastante detalladas sobre los objetos, perfiles de usuario bien

construidos, y métricas de semejanza entre preferencias. Debido al procesamiento que hace un

filtrado basado en contenidos, se pueden dar recomendaciones sobre objetos que aún no han sido

calificados dentro del sistema, a diferencia del filtrado colaborativo.

1.2.1.3 Filtrado híbrido

Se realiza aprovechando las características de ambos sistemas anteriores, realizando un

filtrado colaborativo y luego uno basado en contenidos, y luego definiendo las recomendaciones

mediante un esquema de votación (Candillier, Jack, & Fessant, 2009).

1.2.2 Matching Conditions

La técnica Matching Conditions (satisfacción de condiciones) es la técnica que se usa para

crear recomendaciones estáticas. A diferencia de las técnicas antes mencionadas, donde se utiliza

algoritmos o agentes automáticos, emplear esta técnica de generación consisten en que un tutor o

administrador de recomendaciones analice el modelo de usuario de un estudiante y cree

recomendaciones personalizadas que se ajusten al contexto del usuario, o bien crear tipos de

recomendaciones genéricos para situaciones definidas, considerando las condiciones a las que se

tendría que ajustar un estudiante para recibir una recomendación del tipo creado. De la misma

forma, un agente recomendador puede usar esta técnica, comparando las recomendaciones

ofrecidas a un usuario y ofreciéndolas a otros usuarios que se ajusten a condiciones similares.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

5

1.3 Sistemas de gestión de aprendizaje

Un sistema de gestión de aprendizaje, conocido también como LMS (siglas en inglés de

Learning Management System), es un sistema comúnmente basado en Web, cuya función es

entregar y administrar contenidos de apoyo al proceso de aprendizaje. El inicio de su uso se

remonta a la década entre 1990 y 2000. Un LMS incluye un conjunto de funcionalidades,

típicamente catálogos de cursos, listas de estudiantes, toma de evaluaciones, publicaciones de

tareas, tareas, foros, y registro de actividades dentro del sistema. Los LMS poseen también

interfaces para la administración del sitio, y administración de los cursos por parte de los

profesores. Su diseño tiene como objetivo guiar a los estudiantes a través de un proceso simple

para lograr los objetivos de evaluar y mantener competencias, participar en cursos, y desarrollar

las actividades de aprendizaje que se definan en cada curso (Public Health Learning, 2009). Estos

sistemas están disponibles tanto en versiones comerciales y versiones libres y de código abierto.

Las características de los sistemas LMS modernos se han adaptado a las posibilidades que abre

Internet y permiten inclusive crear grandes comunidades colaborativas en las que participan

millares de personas (Mallon, Bersin, Howard, & O’Leonard, 2009).

1.3.1 Moodle

Moodle es un sistema LMS de software libre y código abierto. Este sistema puede ser

desplegado sobre las principales plataformas de sistemas operativos existentes en la actualidad, y

su uso es bastante extendido: hacia octubre del año 2009, es el sistema LMS de mayor

penetración en el mercado de sistemas de gestión de aprendizaje (Davis, Carmean, & Wagner,

2009), sobre otros sistemas como Blackboard Course Management o TotalLMS, con un

porcentaje de 20% de mercado frente a las demás alternativas juntas. Moodle posee varias

funcionalidades concernientes a la administración de cursos (Moodle.org, 2010), las cuales se

exponen a continuación:

Tareas: Esta funcionalidad permite que los profesores coloquen información sobre tareas

que deben realizar los estudiantes como parte de los procesos de aprendizaje dentro del

curso. Las tareas pueden ser subidas al LMS, y Moodle ofrece mecanismos de

calificación, notificaciones y retroalimentación.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

6

Chats: Permite la comunicación en tiempo real mediante mensajes instantáneos entre

usuarios conectados al sistema.

Encuestas: Encuestas que los usuarios del sistema pueden completar. El módulo de

encuestas permite obtener reportes para los administradores y profesores, y

retroalimentación por parte de los estudiantes de los cursos.

Foros: Los foros permiten la discusión de temas mediante el posteo de mensajes en la

página del foro. Los foros en Moodle permiten determinar restricciones de acceso sobre

quiénes ingresan y postean en ellos, así como moderar las respuestas y las publicaciones.

Glosarios: Consisten en listas de definiciones sobre los tópicos del curso, editadas por

todos los participantes.

Cuestionarios: Permiten colocar cuestionarios con varios tipos de preguntas (selección

múltiple, ensayo, verdadero/falso, emparejamiento, y otros).

Recursos: Permiten gestionar, almacenar y mostrar diferentes tipos de documentos

electrónicos asociados al curso.

Moodle es el sistema de gestión de aprendizaje utilizado en la Universidad Técnica

Particular de Loja, a partir del año 2006, conocido como Entorno Virtual de Aprendizaje, o EVA.

1.4 Sistemas recomendadores en sistemas de gestión del aprendizaje

1.4.1 Recomendaciones dentro de un sistema LMS

La aplicación de sistemas recomendadores al campo de eLearning, y es de hecho

deseable, puesto que un sistema eLearning puede enfrentarse al problema de sobrecarga de

información, dado que puede contener miles de cursos y recursos disponibles dentro de él. En su

tesis doctoral del año 2005, Jamil Itmazi sostiene que aún en ese tiempo no existen sistemas LMS

que incluyan sistemas de recomendaciones completos, situación que persiste hasta la actualidad

(en la investigación realizada no se ha podido encontrar sistemas recomendadores completos

integrados a sistemas de gestión del aprendizaje).

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

7

Una recomendación es una sugerencia que se ofrece a un estudiante con el fin de realizar

una actividad que resulte útil y de apoyo a su proceso de aprendizaje, actividades que dentro de

un LMS, pueden ser la participación en foros, obtención de recursos, realización de tareas, chats,

revisión y participación en glosarios, y otras. El presente trabajo se enmarca en la recomendación

de estos objetos de aprendizaje.

El sistema administrador no pretende sustituir a los algoritmos que generan

recomendaciones por el conocimiento de los profesores, más bien, trata de mejorar su interacción

dentro del proceso. El objetivo de un sistema de gestión de recomendaciones es ofrecer al

profesor herramientas para poder crear, diseñar, modificar, experimentar con las recomendaciones

(Santos, Martín, Mazzone, & Boticario, 2009). La generación de recomendaciones mediante

algoritmos de inteligencia artificial libera a los profesores de la carga que significaría el tener que

crear las recomendaciones; sin embargo, pueden existir necesidades psicológico-educacionales

que podrían no estar cubiertos por los algoritmos, cuya introducción se haga necesaria. Si los

profesores disponen de una herramienta de administración para crear recomendaciones en forma

personalizada desde cero, este problema puede resolverse de manera sencilla.

Figura 1.2. Proceso de las recomendaciones (Santos O. , Ampliando el apoyo ofrecido por las

plataformas de e-learning mediante un servicio de recomendaciones, 2009).

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

8

Un sistema de administración de recomendaciones apoya al profesor para reconocer

diferentes situaciones en el eLearning, y determinar las recomendaciones que se pueden dar en

dichos casos (Santos). Debe proveer una interfaz funcional utilizando un modelo de

recomendaciones y un modelo de usuario (modelo que contiene información sobre el estilo de

aprendizaje y la interacción del usuario con el LMS). En la figura Figura 1.2, podemos ver un

esquema sobre el proceso de las recomendaciones. La administración de recomendaciones

estáticas corresponde a la sección del experto humano, la cual se contrasta contra la generación

de recomendaciones por medio de algoritmos automáticos.

1.4.2 Elementos del modelo de recomendaciones

Un modelo para un sistema de recomendaciones debe contener la información necesaria,

tal como preferencias, características de aprendizaje e historial de interacción de los usuarios, así

como las similitudes entre usuarios y sus requerimientos de accesibilidad.

Santos y Boticario proponen un modelo basado en ciertos objetivos: el soporte a la

creación de recomendaciones por parte del administrador del curso, información sobre las

razones por las que se crea una recomendación, y retroalimentación por parte de los usuarios

sobre el interés que generen en ellos las recomendaciones con el fin de mejorar el sistema.

Basándonos en el modelo propuesto por Santos y Boticario, los elementos del modelo

consisten en categoría de la recomendación, técnica de obtención, origen de la recomendación,

explicación de la oferta, restricciones temporales o de vencimiento, y las condiciones de

aplicabilidad. A continuación se explican dichos elementos.

Categoría: La categoría de una recomendación es el campo del proceso de aprendizaje al

que se aplica la recomendación. Las recomendaciones enmarcadas en ciertas categorías pueden

ser más útiles que las recomendaciones de otra categoría dependiendo de la situación actual del

curso. Dentro de las categorías podemos citar:

Motivación: Mensaje que tiene como propósito motivar al estudiante frente a

situaciones frustrantes que puedan surgir dentro del desarrollo de las actividades de

enseñanza-aprendizaje dentro del curso, tales como dificultades de comprensión, o

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

9

demora en la realización de las tareas de clase.

Estilos de aprendizaje: Recomendaciones que se ofrecen para que el estudiante realice

actividades dentro del entorno, acordes a su estilo de aprendizaje particular, o bien

para tomar un test de estilos de aprendizaje.

Conocimiento previo: Recomendaciones que se ofrecen tomando en cuenta los

aspectos del curso en los que el usuario tiene mayor dominio, para poner énfasis en las

que no.

Colaboración: Recomendaciones orientadas a la interacción con los otros

participantes del curso.

Interés: Recomendaciones que permiten al usuario acceder a objetos de aprendizaje

referentes a los temas sobre los que más tiene interés dentro del curso.

Accesibilidad: Recomendaciones concernientes a la forma en el que usuario accede a

los contenidos dentro del entorno.

Técnica: Consiste en la técnica usada para crear la recomendación. Puede una de las

técnicas expuestas anteriormente (filtrado colaborativo, basado en contenidos, mixto, matching

conditions).

Origen: Determina si la recomendación fue generada por un algoritmo automatizado que

ha determinado que las características del usuario son apropiadas para ofrecerle la

recomendación, o por un tutor o administrador de recomendaciones.

Explicación: Ofrece información detallada en una forma comprensible por el estudiante

del por qué se le ha ofrecido la recomendación.

Condiciones de aplicabilidad: Determinan cuándo una recomendación se debe o no

ofrecer a un estudiante de acuerdo a la evaluación de valores definidos. Dentro de este campo se

encierran factores como el estilo de aprendizaje, el nivel de tecnología con la que el usuario es

familiar, similitud entre estudiantes, rol dentro de la plataforma, nivel de colaboración, datos de

interacción, nivel de conocimiento, datos de interacción, nivel de interés y recursos utilizados

dentro del LMS.

Restricciones temporales o de vencimiento: Dentro de este apartado se define cuándo y

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

10

hasta cuándo se ofrece una recomendación. Pueden estar dadas por fechas concretas, intervalos

de tiempo o eventos.

1.4.3 Estándares de usabilidad dentro de un sistema de recomendaciones

En el trabajo “An Experimental Usability Test for different Destination Recommender

Systems” (Zins, Bauernfeind, Del Missierb, Venturinib, & Rumetshoferc, 2003), han llegado a la

conclusión que dentro de un sistema recomendador existen tres factores para asegurar las

satisfacción de los usuarios en el uso del sistema: estos tres factores consisten en facilidad de

uso/aprendizaje, efectividad/obtención de resultados, y confiabilidad. Estos factores se han

determinado mediante la evaluación de información objetiva (datos de interacción con el sistema

como tiempo en realizar una tarea, número de veces que el usuario utiliza una funcionalidad, tasa

de error) y subjetiva (retroalimentación mediante el uso de encuestas).

En lo concerniente al diseño, un sistema de recomendaciones debe poner énfasis en las

siguientes áreas (Turnbull):

Proveer ayuda interactiva al usar, buscar, seleccionar y leer recomendaciones.

Hacer que la navegación en las recomendaciones sea natural, e impedir que el usuario se

pierda o se abrume al utilizar el sistema.

Incluir notificaciones y recordatorios.

Diseñar un mecanismo de retroalimentación rápida si las recomendaciones se ofrecen en

tiempo real.

Santos y Boticario añaden otros elementos a los ya explicados:

Escrutabilidad: El usuario debe poder indicar al sistema cuando una recomendación

ofrecida no le es de ayuda, ya sea porque no se ajusta al perfil del usuario o porque no se

aplica a él.

Persuasividad: El sistema debe convencer a los usuarios para que lean las

recomendaciones ofrecidas y realicen las acciones recomendadas. Para lograr esto, es

importante proveer de explicaciones claras y de alto nivel sobre las recomendaciones

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

11

ofertadas.

Satisfaccción: Hacer que el uso del sistema sea más sencillo con el tiempo y que las

recomendaciones se ofrezcan cuando son relevantes.

1.5 Trabajos relacionados

En el trabajo “Users’ experience with a recommender system in an open source standard-

based learning management system” (Santos y Boticario, grupo de investigación aDeNu,

Departamento de Inteligencia Artificial de la escuela de Computación de la Universidad Nacional

de Educación a Distancia, España), se explora la utilidad de los sistemas recomendadores dentro

de los entornos educativos, así como su uso e integración con sistemas de gestión del aprendizaje

(LMS). Santos y Boticario proponen un modelo de recomendaciones y la implementación de un

sistema recomendador sobre la plataforma LMS dotLRN.

Montaner, López y Lluis de la Rosa, en Evaluation of Recommender System Through

Evaluated Users, presentan un trabajo concreto sobre simulación de usuarios para poder probar y

validar recomendaciones. Se desarrolla un procedimiento de descubrimiento de perfiles de

usuario, en que se simulan usuarios basados en una lista de evaluaciones de objetos, evaluaciones

realizadas por usuarios reales (no hay información ficticia). Además, se simula interacciones

entre estos usuarios. En este trabajo, se toman perfiles de usuario reales a partir de los cuales se

crean perfiles artificiales mediante la lectura de las preferencias, y luego se hacen

recomendaciones en base a la información de los perfiles artificiales. Si la recomendación arroja

un objeto incluido en la lista de objetos que posee el perfil real, ese objeto se considera

descubierto, caso contrario se rechaza. Las recomendaciones se hacen en ciclos que simulan días

reales. Cuando las simulaciones arrojan objetos acertados, se hacen recomendaciones a los

usuarios reales. Las simulaciones permiten obtener métricas de precisión, diversidad y retención.

La simulación de la colaboración se realiza creando listas de contactos, dichos contactos se

generan comparando los perfiles de usuario para hallar sus semejanzas. Las recomendaciones se

realizan de acuerdo a sus perfiles y los de sus contactos, y cada recomendación se evalúa

comparando los perfiles artificiales con los reales. Luego, antes de clasificar las recomendaciones

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

12

como válidas o no, se juzga la colaboración de los contactos para adaptar las listas de acuerdo a

los resultados más recientes. La simulación se realiza hasta agotar las variables y se entonces se

obtienen métricas y se presentan resultados.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

13

2. Definición del problema

2.1 Planteamiento del problema

Actualmente en la UTPL existe una gran demanda para las carreras que se ofrecen, por lo

cual se ha dado un gran incremento en los estudiantes matriculados, debido a esto, a los tutores

de cada curso les resulta difícil llevar una relación personalizada con cada estudiante, así mismo,

dar aviso de las tareas propuestas y del material de apoyo compartido. Para mejorar dicha

relación entre tutor-estudiante, se requiere integrar un sistema recomendador al entorno virtual

Moodle.

Figura 2.1 Esquema de módulos del sistema recomendador.

En la figura Figura 2.1 Esquema de módulos del sistema recomendador.se puede observar

los cinco módulos que conforman un sistema recomendador y cómo interactúan estos para poder

llegar a la creación de una recomendación, la misma que es el elemento central que se muestra en

la figura.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

14

El módulo de Seguimiento de usuario brinda información estadística útil para la creación

de modelos de usuario, esta información es utilizada por el Modelo de Usuario que contiene

información de los usuarios como: datos personales, preferencias e intereses, y datos del entorno

que sirven para definir las condiciones de aplicabilidad para el ingreso de recomendaciones. El

módulo de Administración de recomendaciones se encarga de crear los diferentes tipos de

recomendación que pueden existir, también de definir ciertas recomendaciones para lo cual

necesita leer la información del modelo de usuario. El Módulo Tutor que es el que se encarga del

ingreso de recomendaciones también leyendo la información guardada del modelo de usuario.

Con las recomendaciones ingresadas, el Agente recomendador se encarga de ofertarlas a los

estudiantes, la recomendación ofertada puede ser para: ciertas actividades que se tienen que

cumplir, para mostrar tareas específicas a realizar, para indicar los sitios que tienen que visitar,

para indicar los foros que tienen que responder o las lecturas que deben realizar, o para otras

actividades más que se pueden realizar en el desarrollo del curso. La presente tesis trata sobre el

desarrollo del módulo de administración de recomendaciones, cuyo desarrollo requiere el

cumplimiento de ciertas actividades como la obtención de un modelo de recomendaciones y un

modelo de usuario, así como la elaboración de una interfaz que permita crear tipos de

recomendaciones para que sean usadas dentro del sistema.

2.2 Estado actual

Actualmente el LMS utilizado en la Universidad Técnica Particular de Loja (Moodle) no

cuenta con un sistema de recomendaciones. Dada su implementación, es necesario contar con un

sistema de administración de recomendaciones que permita a los un experto recomendador crear,

modelar y llevar registro de los tipos de recomendaciones que se creen dentro del sistema. Este

sistema debe permitir crear tipos de recomendaciones, explotando todas las características de los

modelos de usuario de los estudiantes, para que estos tipos de recomendaciones se usen en la

generación de recomendaciones específicas para los estudiantes, dado que cumplan con las

restricciones y características definidas en los tipos de recomendaciones, es decir, que se

establezcan las condiciones sobre las que se ofrecerá la recomendación; y la técnica con la que se

va a generar.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

15

2.3 Objetivos

Construir una interfaz de administración de recomendaciones estáticas que permita la

creación, edición y eliminación de tipos de recomendaciones genéricos, con el fin de

probar diferentes combinaciones de los factores que componen las recomendaciones, para

que pueda ser usado dentro del Entorno Virtual de Aprendizaje de la UTPL.

Entender la estructura y funcionamiento de un sistema de recomendaciones.

Integrar la solución desarrollada a Moodle.

Desarrollar servicios Web que permitan recuperar datos del modelo de recomendaciones,

con el fin de tener interoperabilidad con otros sistemas de información.

2.4 Justificación

Un sistema recomendador es apropiado para ser implementado dentro del LMS Moodle

usado en la Universidad Técnica Particular de Loja como medio de apoyo al proceso de

aprendizaje, ya que es factible la obtención de información necesaria para ello, tal como datos de

interacción, seguimiento de usuarios, y estilos de aprendizaje, esto último gracias a la obtención

de modelos de usuario. En un sistema de recomendaciones estáticas se debe contar con una

interfaz de administración, en la que se creen tipos de recomendaciones por parte de un experto

recomendador, para a partir de estos tipos crear recomendaciones específicas (de forma manual o

mediante algoritmos), antes de ofrecerlas a los estudiantes; el trabajo expuesto en esta tesis tiene

el fin de construir dicha interfaz.

2.5 Esquema de la solución

Para poder llevar a cabo el desarrollo de la solución, se tiene en cuenta varios aspectos. Se

debe desarrollar un modelo de datos preparado para guardar información sobre las

recomendaciones y los datos que permitan generarlas y ofrecerlas, y considerar que será diseñada

para usuarios que interactúan y aprovechan estos datos a través de interfaces diseñadas para el

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

16

efecto.

La solución de interfaz de administración de recomendaciones estáticas está compuesta

por los módulos que se describen a continuación.

2.5.1 Módulo de datos del sistema recomendador

Consiste en la base de datos contiene la información necesaria que va a ser utilizada por el

sistema recomendador. Tiene dos componentes:

El modelo de recomendaciones, el cual contiene las recomendaciones y los tipos de

recomendaciones que se han creado dentro del sistema con todos los parámetros que los definen.

Este modelo incluye también las categorías de recomendaciones, técnicas de obtención,

restricciones de vencimiento y condiciones a las que se sujetan las recomendaciones.

El modelo de datos para la solución que se va a desarrollar se basa en el análisis que se ha

realizado de los modelos propuestos por Santos y Boticario (1.4.2), unido a ello las necesidades

particulares del entorno para el que se va a desarrollar la solución, es decir el entorno virtual de

aprendizaje de la Universidad Técnica Particular de Loja.

El modelado de usuario, el cual consiste en información relacionada a las preferencias y

características particulares de los usuarios del LMS, tales como niveles de interacción,

preferencias, entorno de usuario, y estilos de aprendizaje.

2.5.2 Módulo de usuario

Consiste en un conjunto de vistas que tienen las siguientes funciones:

Creación, edición y borrado de tipos de recomendaciones: Esta interfaz permite gestionar

tipos de recomendaciones dando valores a los parámetros que los definen, considerando

los factores apropiados de los modelos de usuario para luego, a partir de estos tipos, crear

recomendaciones específicas. En esta interfaz, al tratarse de recomendaciones estáticas, el

conocimiento de un experto se refleja al crear los tipos de recomendaciones mediante la

técnica Matching conditions.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

17

Creación, edición y borrado de categorías de recomendaciones: Para crear categorías de

recomendaciones a las que están asociados los tipos de recomendaciones.

2.6 Metodología

A continuación se describe la metodología utilizada en este trabajo para la obtención de la

información y modelos que serán la base del desarrollo de la interfaz de administración de

recomendaciones.

2.6.1 Desarrollo del modelo de datos

El modelo de datos se ha obtenido en reuniones con los desarrolladores de los proyectos

relacionados (Módulo de Tutor, Seguimiento de usuario, Modelado de usuario). Se han

identificado entidades y relaciones de acuerdo a los elementos de las recomendaciones (1.4.2), y

se han traducido en un modelo de datos. Cabe destacar que para la interfaz de administración de

recomendaciones se utilizan todos los datos del modelo de recomendaciones y una sección de los

datos concernientes al modelado de usuario, concretamente los datos sobre modelos de usuarios,

valores de atributos del modelo de usuario, estilos de aprendizaje y tipos de modelos. El proceso

de desarrollo del modelo y la explicación de los elementos incluidos en él se presentan en la

sección 4.1.

2.6.2 Metodología de programación extrema (XP)

Para desarrollar la solución, se usará la metodología de desarrollo de software

Programación Extrema (XP Programming). Esta metodología consiste en un proceso de

desarrollo ágil, basado en reglas simples. Sus fortalezas son el mejoramiento de la comunicación,

simplicidad y retroalimentación. Permite que el software sea desarrollado de tal forma que las

características se vayan implementando a medida que se necesitan, y los entregables se

materialicen desde el primer día de desarrollo (Wells, 1999-2009).

El desarrollo de los procesos de programación extrema puede encontrarse en los anexos

de este trabajo.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

18

2.6.2.1 Reglas de XP

La programación extrema se basa en un conjunto de reglas algo extenso, el cual puede

consultarse en (Wells, 1999-2009). Para el desarrollo del presente proyecto de tesis se ha

elegido un subconjunto de reglas que se ajustan al proceso de desarrollo que se va a realizar, y se

expone a continuación:

Campo del proceso

de desarrollo

Reglas

Planeación Obtención de historias de usuario

Planeación de entregas para tener un calendario de entrega.

Hacer entregas pequeñas y frecuentes.

Uso de iteraciones, que empiezan con una planeación de

iteración.

Administración Medición de velocidad del proyecto.

Diseño Simplicidad

Uso de tarjetas CRC (Tarjetas Clase-Responsabilidad-

Colaboración) (El desarrollo de las tarjetas CRC para esta

tesis se encuentra en la sección 7.4)

Las funcionalidades no se añaden antes de tiempo.

Refactorización constante.

Codificación Disponibilidad constante del cliente

Codificación de acuerdo a estándares

Integración constante

Pruebas Creación de pruebas al encontrar errores.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

19

2.6.2.2 Procesos de Extreme Programming

2.6.2.2.1 Historias de usuario

Las historias de usuario son descripciones cortas de las funcionalidades que el usuario

describe que se necesitarán dentro el sistema. Estas historias deben ser claras, consistentes, cortas

y sin términos técnicos; de la misma forma, no debe incluir absolutamente ninguna especificación

de la forma de implementación, tal como algoritmos, lenguajes de programación, patrones de

diseño, bases de datos y otros.

Las historias de usuario no deben ser demasiado generales o demasiado específicas, y se

puede saber si su nivel de detalle es adecuado de acuerdo al tiempo que se estime su

implementación: si se estima más de tres semanas, la historia abarca demasiada funcionalidad, y

debe desglosarse. Si se estima una implementación de menos de una semana, la historia cubre un

detalle muy pequeño, por lo que debe ser combinada con otras historias de usuario.

Las historias de usuario son la base para realizar las pruebas de aceptación en cada

iteración. (Wells, 1999-2009)

Para el desarrollo del sistema de administración de recomendaciones se han diseñado un

total de seis historias de usuario, cuyo planteamiento se encuentra detallado en la sección 7.1.

2.6.2.2.2 Planeación de la entrega

Se selecciona un conjunto de historias de usuario que permitan completar la iteración

actual, y el tiempo ideal en el que se completará cada historia de usuario, con refactorización y

pruebas incluidas. Las primeras historias de usuario en desarrollarse deben ser las más

importantes para el proyecto. Este conjunto debe definir un sistema usable, susceptible a pruebas,

y que tenga sentido en el contexto del negocio, de tal forma que pueda ser entregado y puesto a

producción. La planeación se puede realizar por tiempo (cuántas historias de usuario se deben

implementar hasta una fecha determinada) o por alcance (cuánto tiempo tarda implementar un

conjunto de historias dado).

Las planeaciones de entrega se usan para poder definir las planeaciones de iteración.

(Wells, 1999-2009)

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

20

2.6.2.2.3 Planeación de la iteración

La planeación de la iteración marca el inicio de la iteración. Consiste en la asignación de

tiempos y responsabilidades de las tareas de programación de la aplicación. Estas tareas se

determinan a partir de las historias de usuario que el cliente eligió para la iteración actual. En esta

planeación puede incluirse también las tareas de resolución de las pruebas de aceptación fallidas.

Una vez que se asignan las tareas, el responsable de cada tarea debe estimar el tiempo que

tardará la implementación del problema asignado. Cada tarea de programación debe tener una

duración de entre tres a un día. De estimarse un tiempo mayor, deben desglosarse; si se estima un

tiempo menor, deben agruparse. Si se tiene demasiadas tareas para el tiempo total de la iteración,

las tareas pueden ser postergadas. El equipo de desarrollo no debe empezar a preocuparse si

empiezan a postergarse muchas tareas, si esos retrasos se provocan por el tiempo asignado a

procesos adecuados de refactorización (depuración y optimización constante) y pruebas unitarias

(pruebas que garantizan que el código construido funciona bien al ser llamado por otros

módulos). Algo que de hecho puede causar retrasos es empezar a incluir tareas que no estaban

planificadas dentro de la iteración, o tareas no incluidas en el tiempo de las tareas de

programación. De la misma forma, no se deben cambiar las tareas y las estimaciones usando

criterios optimistas, pues aquello puede causar problemas. (Wells, 1999-2009).

La planeación de iteraciones para el desarrollo de la interfaz de administración de

recomendaciones se encuentra en la sección 7.3.

2.6.2.2.4 Pruebas de aceptación

Las historias de usuario obtenidas al iniciar la iteración se convierten ahora en las pruebas

de aceptación. Para cada historia de usuario se debe crear un caso de prueba (los casos de prueba

para el desarrollo de la interfaz de administración de recomendaciones se encuentra en la sección

7.5). En dichas pruebas los clientes determinan si las funcionalidades implementadas satisfacen

las historias de usuario creadas. Cada historia de usuario puede tener una o más pruebas de

aceptación, y no se considera completa hasta que haya pasado satisfactoriamente todas las

pruebas y se asegure que la funcionalidad está trabajando en forma completa.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

21

Las pruebas de aceptación son pruebas con un enfoque de caja negra, es decir, representan

un resultado esperado del sistema. Los clientes son los responsables de verificar la corrección y

exactitud de las pruebas, y de establecer calificaciones para decidir cuáles son las pruebas fallidas

de mayor importancia. Las pruebas de aceptación también se utilizan para detectar regresiones

antes de poner en producción el sistema.

En las pruebas de aceptación también se pueden detectar errores (bugs). Si se encuentra

uno de estos bugs, se debe generar una prueba de aceptación en estado fallido para evitar que

dicho problema continúe dentro de sistema. El generar esta prueba antes de empezar procesos de

depuración ayuda a los usuarios a definir en forma clara el problema y comunicarlo a los

programadores, quienes al disponer de esta información pueden empezar a trabajar en la solución

del problema, y prueban las soluciones desarrolladas mediante pruebas unitarias, las cuales se

ejecutan una y otra vez hasta que el bug ha sido corregido. (Wells, 1999-2009). Los resultados de

las pruebas para los casos de prueba en el desarrollo de esta tesis se encuentran en la sección 7.6.

2.6.2.2.5 Entrega

Se debe hacer entregas frecuentes del sistema a los clientes, idealmente cada semana o

cada dos semanas, tiempo en el que se realizan pruebas para tener un producto funcional y listo

(dentro del alcance de la iteración) para poner en producción. Las reuniones de planeación de

entregas se usan para planear conjuntos de funcionalidad consistentes que puedan ser puestos a

producción desde etapas tempranas del desarrollo del sistema. Debido a esto, es importante

introducir las características más críticas en las etapas más tempranas, pues esto asegura contar

con más tiempo para sus correcciones. (Wells, 1999-2009)

2.6.3 Descripción del contexto de la solución

El sistema administrador de recomendaciones se desarrollará bajo las siguientes

condiciones:

Dado que existe una base de datos de LMS (Moodle), se tomará una copia de esta base de

datos para poder recoger los datos de los usuarios del sistema, y a esta base de datos se

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

22

integrará el modelo de recomendaciones.

Para utilizar las funciones necesarias para interactuar con Moodle, las vistas del sistema

de administración de recomendaciones se desarrollarán en el lenguaje de programación

PHP1.

2.7 Planteamiento del diseño

La solución consistirá en una aplicación web que interactúa con una base de datos propia

al sistema recomendador, y la base de datos Moodle. Este sistema será utilizado por un docente

con experiencia pedagógica (se requiere esta experiencia pues debe conocer, de acuerdo a los

atributos de un modelo de usuario -tales como nivel de interacción, estilos de aprendizaje y

niveles de interés- qué tipo de actividades resultan más adecuadas para apoyar con

recomendaciones a las actividades de aprendizaje), para los fines de creación, edición y

eliminación de tipos de recomendaciones. La solución tendrá como función gestionar (crear,

editar, borrar) tipos de recomendaciones, y la interfaz de creación/edición expone los atributos

del modelado de usuario para crear tipos de recomendaciones genéricos, los cuales se usarán por

un tutor o agente inteligente para crear recomendaciones específicas, considerando la

aplicabilidad que tengan estos tipos de recomendación a los casos particulares de los estudiantes.

1 PHP es el acrónimo del lenguaje PHP Hypertext Processor, lenguaje de programación ampliamente usado en el

desarrollo de aplicaciones Web.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

23

Figura 2.2. Esquema del planteamiento del diseño de la aplicación.

2.8 Resultados esperados

Un sistema de administración de recomendaciones estáticas, que permita la gestión de

tipos recomendaciones. Este sistema deberá poder manejar en su totalidad los elementos

de las recomendaciones para crear los tipos con varias combinaciones de valores de

atributos de modelo de usuario

Integración del sistema de administración de recomendaciones estáticas al Entorno Virtual

de Aprendizaje EVA.

Un servicio Web que permita recuperar información sobre el modelo de recomendaciones,

para que pueda ser usado desde otras aplicaciones, asegurando la interoperabilidad.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

24

3. Análisis y definición de la solución

3.1 Requerimientos

Los requerimientos para el desarrollo de la solución se definen de acuerdo a los elementos

de las recomendaciones y a las necesidades UTPL dentro del entorno virtual, y de acuerdo al tipo

de usuarios que van a utilizar la aplicación.

3.1.1 Requerimientos de la aplicación

3.1.1.1 Requerimientos funcionales

Los requerimientos funcionales indican los servicios que debe proporcionar el sistema,

cómo debe reaccionar ante entradas particulares y cómo debe reaccionar ante situaciones

particulares; también pueden declarar explícitamente lo que el sistema no debe hacer.

(Somerville, 2005). Se lista a continuación un conjunto de requerimientos que el sistema debe

cumplir en cuanto a su operación y comportamiento.

La interfaz de administración del sistema recomendador requiere autentificación

de usuarios, esto se realizará mediante los mecanismos integrados de

autentificación de Moodle.

El sistema interactúa con la base de datos del sistema recomendador y del entorno

virtual para poder obtener datos sobre los estudiantes y las recomendaciones

ofertadas: modelos de usuario, recomendaciones y sus condiciones, restricciones,

técnicas de recomendación, acciones sobre objetos, datos del entorno,

preferencias.

El sistema debe ofrecer una interfaz experta de construcción y edición de tipos de

recomendaciones. La interfaz debe ofrecer las facilidades para especificar:

o Datos de tipos de recomendaciones como nombre, descripción, tipo de

recurso del entorno virtual y categorías de recomendación asociadas.

o Información que sirva como plantilla para todas las recomendaciones que

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

25

se creen a partir de ese tipo de recomendación; esta información incluye un

título de recomendación, explicación, texto, un enlace y restricciones de

vencimiento.

o Restricciones de vencimiento.

o Condiciones, que contienen valores con los que se compararán los

atributos de los modelos de usuario, para ofrecer la recomendación por

medio de un tutor o agente recomendador cuando los valores del tipo de

recomendación coincidan con los del modelo de usuario de algún

estudiante

3.1.2 Requerimientos no funcionales

Los requerimientos no funcionales no se refieren directamente a las funciones que ofrece

el sistema, sino a sus propiedades emergentes como la fiabilidad, el tiempo de respuesta

(Somerville, 2005). Estos requerimientos no funcionales de clasifican en requerimientos del

producto, organizacionales y externos; para este trabajo se ha determinado como necesarios

únicamente requerimientos de producto.

3.1.2.1 Requerimientos del producto

Integridad de la información: El sistema debe tener un nivel aceptable con respecto a la

protección de la integridad de los datos que maneja.

Desempeño: La interfaz de administración del sistema recomendador no es un sistema de

misión crítica, por lo que su no se requiere que su desempeño se compare con altos

estándares de rendimiento. Debe sin embargo, optimizarse su uso de recursos pues sería

puesta a producción en un servidor no dedicado.

Confidencialidad de la información: La información que maneja el sistema de gestión de

recomendaciones no es críticamente sensible, sin embargo debe cumplir con un nivel

aceptable de protección de información.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

26

3.2 Componentes relacionados

3.2.1 Módulo de tutor

El módulo tutor es un módulo que permite la creación de recomendaciones a un

nivel menos detallado que el módulo de administración de recomendaciones. Este módulo

está típicamente manejado por el profesor de cada curso, y crea recomendaciones que se

ofrecen directamente a los estudiantes. Este módulo tutor para el sistema recomendador

ha sido desarrollado en una tesis relacionada.

3.2.2 Modelado de usuario

Este módulo se encarga de recoger información sobre los estudiantes y definir

modelos de usuario, cuyas características permiten asignar recomendaciones a los

estudiantes mediante un agente recomendador. El modelado de usuario para el sistema

recomendador ha sido realizado en una tesis relacionada.

A continuación se especifican las categorías de datos que componen el modelado

de usuario:

Datos de entorno: Ayudan a definir el lugar geográfico del estudiante, así como el

entorno computacional (hardware y software) que el estudiante utiliza para acceder al

entorno virtual de aprendizaje. Dentro de esta categoría se incluye información de zona

geográfica y de entorno de usuario (plataforma de acceso, ej. PC, dispositivo móvil).

Datos de interacción: Definen el grado de interés e interacción que los estudiantes

tienen en su participación dentro del entorno virtual. Los atributos dentro de esta categoría

son:

Nivel de interés: Grado de interés del estudiante en el curso en desarrollo, y nivel

de interés en los recursos que se hacen disponibles en el entorno virtual.

Nivel de interacción: Nivel de interacción de los estudiantes con el entorno virtual.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

27

3.3 Escenarios

Los escenarios consisten en el entorno en el que se desenvuelve la aplicación, tanto en los

procesos de desarrollo y puesta a producción. También describen la forma en que el usuario va a

interactuar con el sistema desarrollado.

3.3.1 Escenario de desarrollo y pruebas

Se realiza en un servidor de prueba del entorno EVA, en el cual se publica el sistema para

su interacción con los datos de Moodle. En este sistema, un administrador experto podrá

administrar crear, editar y eliminar tipos de recomendaciones. Este servidor de prueba tendrá

disponible una copia de la base de datos del entorno virtual, y se integrará a esta base de datos el

modelo del sistema de recomendaciones. Este servidor también tiene una copia del sistema

Moodle, dentro del que se instalarán la interfaz de administración y el bloque de acceso.

3.3.2 Escenario de interacción

Un usuario administrador del sistema ingresa con credenciales apropiadas al sistema. El

sistema le presentará una pantalla principal de administración, en la cual tendrá opciones como

crear/editar/borrar tipos de recomendaciones, crear/editar/borrar categorías de recomendaciones,

y obtener listados de los elementos antes mencionados.

Para crear un tipo de recomendación, el usuario administrador deberá ingresar a la interfaz

de creación, en la cual podrá generar un nuevo tipo especificando los parámetros: descripción,

tipo de recurso del entorno virtual que se va a utilizar, categorías asociadas, explicación,

restricciones temporales y otros elementos. Las condiciones de aplicabilidad se dan estableciendo

valores a los parámetros del modelado de usuario.

Para editar un tipo de recomendación, el usuario administrador sólo debe cambiar los

valores establecidos en los parámetros de las recomendaciones.

La edición y creación de categorías de recomendaciones son las otras tareas que se

realizan en el sistema, utilizando una interfaz que permite el ingreso de datos y su

almacenamiento en la base.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

28

4. Desarrollo de la solución

En este capítulo se exponen los detalles del proceso de desarrollo de la solución. Se

describirá la forma en que se ha logrado obtener el modelo de datos, las consideraciones que se

ha tomado para el diseño del sistema, los requerimientos, la construcción de las interfaces de

usuario, la integración con el entorno virtual de aprendizaje, consideraciones de programación y

pruebas.

4.1 Desarrollo del modelo de datos

En la sección 2.6.1 se hace una descripción general de los elementos que conllevan a la

creación del modelo de datos. En esta sección se van a detallar los factores y requerimientos que

sirven como base y dan origen al modelo de datos.

4.1.1 Explicación de las tablas creadas en el modelo y la forma en que satisfacen los

requerimientos propuestos para su desarrollo

Es necesario desarrollar el modelo de datos de tal forma que satisfaga las necesidades

planteadas por los elementos de las recomendaciones y los requerimientos de la universidad.

Se ha contado en un inicio con un esquema de un modelo de recomendaciones, propuesto

por Santos y Boticario.

Figura 4.1. Modelo para recomendaciones en escenarios de aprendizaje (Santos & Boticario,

Users’ experience with a recommender system in an open source standard-based learning

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

29

management system, 2008)

Este modelo contiene los elementos de las recomendaciones, con las respectivas

relaciones entre ellos. En base a este esquema, podemos ver que es necesario tener un modelo en

el que se almacenen recomendaciones que se ajusten a varios factores, tales como categoría,

técnica, origen, explicación, condiciones de aplicabilidad, restricciones de vencimiento, y un

contexto de usuario.

Para poder definir condiciones de aplicabilidad de la recomendación, se debe tener en

cuenta que es necesario definir atributos cuyo valor determine cuándo una recomendación es

oportuna para un estudiante. Para ello, ha sido necesario desarrollar un modelado de usuario

(llamados contexto de usuario en el esquema de Santos y Boticario), de tal forma que se puedan

recoger y almacenar los datos de dichos modelos, y puedan servir como referencia para la oferta

de recomendaciones. El trabajo de modelado de usuario sostiene que son necesarios, entre otros,

los siguientes atributos para completar un modelo de usuario:

Resultados de estilos de aprendizaje: Esto es la asociación entre los estudiantes y

el estilo de aprendizaje particular que posee el estudiante. El estilo de aprendizaje se llega

a saber mediante la aplicación del test Felder y Silverman. Una vez que se determina el

estilo de aprendizaje del usuario, se asocia al estudiante con dicho estilo y se registra la

relación.

Niveles de interacción e interés: Con los datos de interacción del usuario obtenidos

mediante el modelado de usuario, se puede establecer valores cualitativos para estos

atributos.

Zona geográfica: Obtenido también mediante seguimiento de usuario, el valor de

este atributo también es útil como condición de aplicabilidad para ofrecer una

recomendación. Un ejemplo de la utilidad de este atributo es una recomendación que se

ofrezca sugiriendo al estudiante su asistencia a un evento: será más relevante para las

personas que se encuentren en la zona geográfica donde se va a llevar a cabo dicho

evento.

Entorno de usuario: Este atributo determina el entorno de hardware y software en

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

30

el que el usuario accede con más frecuencia al entorno virtual, de tal forma que se le

presenten recomendaciones cuyos cursos de acción sugeridos puedan llevarse a cabo con

la ayuda de su dispositivo de acceso.

Los requerimientos de la Universidad con respecto al desarrollo del modelo son los

siguientes:

Usar los datos existentes dentro de la base de datos del entorno virtual como referentes

para la oferta de recomendaciones: Este requerimiento se satisface mediante el diseño

del modelado de usuario y de la actividad realizada por el módulo de seguimiento de

usuarios, los cuales aprovechan la información almacenada sobre el acceso e interacción

de los estudiantes con el entorno virtual, datos que sirven para determinar la relevancia

que tendrán las recomendaciones para los estudiantes.

Integrar el modelo de recomendaciones a la base de datos del entorno virtual: Dado que

las recomendaciones se asocian a los estudiantes, cursos y recursos, al igual que sus datos

de modelo de usuario, es necesario integrar el modelo a la base de datos del entorno

virtual. El diseño toma en cuenta este requerimiento y realiza las asociaciones respectivas.

Recomendar los tipos de recursos disponibles dentro del entorno virtual: El modelo de

recomendaciones incluye en la definición de datos de una recomendación o tipo de

recomendación qué tipo de recurso del entorno virtual que se puede ofrecer.

El modelo completo de datos para el sistema recomendador consiste en un modelo de

recomendaciones junto a un modelo de usuario. Para tener una explicación detallada del modelo

de usuario, se debe revisar el trabajo exclusivamente hecho sobre él en el trabajo relacionado

“Modelado de Usuario” (sección 3.2.2). El modelo de recomendaciones se explica en detalle a

continuación.

4.1.1.1 Tabla Recomendación

La tabla Recomendación contiene los datos sobre las recomendaciones concretas que se

ofrezcan dentro del sistema. Se ha definido un número de atributos cuya razón de ser y utilidad se

va a explicar a continuación.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

31

rec_id: Identificador único de cada recomendación creada dentro del sistema.

tec_id: Identificador de la técnica con la que va a ser creada la recomendación.

trc_id: Identificador del tipo de recomendación a partir del cual se va a derivar la

recomendación

id_course: Identificador del curso en el que se ofrece la recomendación. En este campo se

va a almacenar el valor del campo id de la tupla correspondiente al curso en la tabla mdl_course

de la base de datos del entorno virtual.

id_user: Identificador del estudiante a quien se le ofrece la recomendación. En este

campo se va a almacenar el valor del campo id de la tupla correspondiente al alumno en la tabla

mdl_user de la base de datos del entorno virtual.

rec_titulo: Texto que va a definir un título para la recomendación. Este título consistirá en

una denominación o descripción corta que se va a dar a la recomendación.

rec_explicación: Texto en el que se informa al alumno del por qué se le está ofreciendo

esta recomendación. Por ejemplo, una explicación para una recomendación en la que se ofrece al

estudiante que visite un foro, lea las respuestas y deje sus aportes, podría ser, por ejemplo: “Esta

recomendación se le ha ofrecido porque interactuar con sus compañeros y exponer sus ideas

sobre los temas de clase le ayudará a enriquecer el conocimiento adquirido”. Estas explicaciones

deberían ser coherentes con la información del modelo de usuario que tiene el estudiante en el

curso, para que el estudiante sienta confianza hacia el sistema recomendador y sienta que el

apoyo que le brinda es relevante.

rec_texto: Texto en el que el docente dará indicaciones o instrucciones adicionales al

estudiante sobre la recomendación ofrecida a él.

rec_fecha_creacion: Fecha en que se crea (y se ofrece) la recomendación para el

estudiante.

rec_enlace: Campo que sirve para ingresar una dirección Web que puede contener un

recurso que el profesor sienta pertinente que revise el estudiante.

rec_tipo_recurso: Al ser las recomendaciones derivadas a partir de un tipo de

recomendación, en este campo se almacenan identificadores de tipos de recursos del entorno

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

32

virtual. Estos tipos se listan en la explicación del campo trc_tipo_recurso, en la sección 4.1.1.2.

rec_id_recurso: Se almacena en este campo el campo id de la tupla correspondiente al

recurso que se esté ofreciendo en la recomendación. Estos recursos se encuentran en las tablas

mdl_assignment, mdl_forum, mdl_glossary, mdl_message, mdl_quiz, mdl_resource. upload no es

en sí un recurso que tenga un registro físico en la base de datos del entorno virtual, sino que

alimenta la tabla mdl_resources.

Ya que el origen de la recomendación depende de la técnica usada, y únicamente estamos

usando la técnica matching conditons para crear recomendaciones estáticas, no se define dentro

del modelo.

4.1.1.2 Tabla Tipo_recomendación

Los tipos de recomendaciones son tipos predefinidos en base a los cuales se va a crear una

recomendación. A continuación se explican los atributos escogidos para esta tabla:

trc_id: Identificador único del tipo de recomendación.

trc_nombre_tipo_rec: Nombre que se le otorga a un tipo de recomendación. Dicho

nombre debería explicar brevemente el propósito con el que se ha creado el tipo de

recomendación.

trc_descripción_tipo_rec: Aquí se detalla los pormenores del tipo de recomendación que

se está creando, tales como el porqué de las combinaciones de valores de atributos de modelo de

usuario que se definen, o el porqué de las restricciones de vencimiento establecidas.

trc_tipo_recurso: En este campo se almacena el identificador del recurso del entorno

virtual que se está ofreciendo al estudiante. A continuación se listan los tipos de recursos que se

van a ofrecer:

Identificador del recurso Recurso

assignment Tarea

forum Foro

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

33

glossary Glosario

message Mensajería

quiz Cuestionario

resource Recurso

upload Subir archivo

rec_título, rec_explicacion, rec_texto, rec_enlace: Al derivarse las recomendaciones de

los tipos de recomendación, estos campos sirven para definir una plantilla de recomendación. Los

valores almacenados en estos campos servirán como valores por defecto (que podrán ser

cambiados) para los campos de idéntico nombre en las recomendaciones.

4.1.1.3 Tabla Técnica

Esta tabla se ha definido para listar las técnicas mediante las cuales el sistema

recomendador es capaz de generar recomendaciones. Por el momento sólo estará almacenado el

registro de la técnica Matching conditions, pero cuando se cuente a futuro con un agente

inteligente de oferta de recomendaciones, las técnicas que utilice (y posiblemente sus

parámetros), serán almacenados en esta tabla.

tec_id: Identificador único de la técnica de generación de recomendaciones.

tec_nombre_técnica: Nombre de la técnica.

tc_descripción_tecnica: Descripción de la técnica.

4.1.1.4 Tabla Condiciones

En esta tabla se van a almacenar las condiciones bajo las cuales las recomendaciones

basadas en un tipo de recomendación serán aplicables para un estudiante. Para esta tabla se

definieron los siguientes campos:

con_id: Identificador único de la condición.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

34

rec_id: Recomendación que se ajusta a la condición actual.

id_atributo_modelo_usuario: Identificador del atributo del modelo de usuario que se

utiliza en la condición.

con_valor_condición: Valor que deberá tener el atributo de modelo de usuario para que

esta condición se cumpla y se ofrezca la recomendación.

id_course: Identificador del curso en el que se aplica la condición. El valor de este campo

es el campo id de un curso registrado en la tabla mdl_course de la base de datos del entorno

virtual.

id_user: Identificador del estudiante al cual se le aplica la condición de la recomendación.

trc_id: Identificador del tipo de recomendación al cual se asocian estas condiciones.

4.1.1.5 Tabla restricciones_vencimiento

Esta tabla se almacenan las restricciones de vencimiento a las que se van a sujetar las

recomendaciones.

rvc_id: Identificador único de la restricción de vencimiento.

rec_id: Identificador de la recomendación que se ajusta a estas restricciones de

vencimiento.

rvc_veces_a_mostrar: Una recomendación no puede mostrarse para siempre al

estudiante. En este campo se define un número de veces máximo que se puede mostrar la

recomendación una vez que se ha realizado su oferta.

rvc_fecha_expiración: Los cursos dentro del entorno virtual de la Universidad tienen un

intervalo de tiempo en el que están activos, de la misma forma, las tareas o actividades que el

profesor defina para que se realicen dentro del entorno tienen una fecha máxima de

cumplimiento. Es por eso que, además de definir un número de veces que se va a mostrar la

recomendación ofertada, se defina una fecha máxima hasta la que se va a mostrar.

trc_id: Identificador del tipo de recomendación que se asocia a esta restricción de

vencimiento. De esta forma las recomendaciones creadas bajo dicho tipo de recomendación se

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

35

ajustarán a la restricción de vencimiento.

4.1.1.6 Tabla Categoría

Las categorías son ámbitos de la actividad de enseñanza-aprendizaje en la cual va a influir

la recomendación ofertada.

cat_id: Identificador único de la categoría de la recomendación.

cat_nombre_categoría: Nombre de la categoría.

cat_rec_descripción: Descripción del propósito de la categoría, o del propósito con el

que ha definido.

4.1.2 Modelo obtenido

El modelo de recomendaciones creado se muestra a continuación, junto con algunas tablas

del modelo de usuario que se usan dentro del sistema de administración de recomendaciones. Las

tablas pertenecientes al modelo de recomendaciones tienen el prefijo mdl_sr_ y las tablas

pertenecientes al modelado de usuario tienen el prefijo mdl_mu_.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

36

Figura 4.2. Gráfica del modelo de datos diseñado para la solución, obtenido conjuntamente con

los autores de los módulos de seguimiento de usuarios, módulo tutor y modelado de usuario.

4.2 Visión general del sistema

El sistema de administración de recomendaciones consta de varias funcionalidades. La

funcionalidad principal del sistema consiste en la gestión (creación, edición, borrado) de tipos de

recomendaciones. Estos tipos de recomendaciones explotan los atributos de los modelos de

usuario. El sistema también provee de capacidad de gestionar categorías de recomendaciones.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

37

4.2.1 Consideraciones de diseño

En la sección de consideraciones de diseño, van a listarse las consideraciones que se

deben tomar antes de desarrollar una solución completa, así como los problemas que se deben

resolver.

4.2.1.1 Prerrequisitos y dependencias

4.2.1.1.1 Herramientas de desarrollo

Para el desarrollo del sistema de administración de recomendaciones se va a hacer uso de

las herramientas:

Lenguaje de programación PHP (PHP Hypertext Processor), versión 5

Servidor Web Apache2.

Sistema de gestión de base de datos MySQL3

Herramientas de desarrollo: IDE Zend Studio 7, MySQL Administration Tools, Toad.

Sistema operativo: Las herramientas utilizadas para el desarrollo son independientes de la

plataforma, por lo que pueden usarse plataformas Linux4 o Windows

5.

4.2.1.1.2 Características del usuario final

El usuario final es una persona con conocimientos suficientes de operación de

computadores. Estos conocimientos deben incluir la capacidad de usar un navegador Web e

interfaces de aplicaciones en general.

2 Apache es un software servidor de páginas Web, software que se utiliza para montar sitios Web sobre una

diversidad de servidores. 3 MySQL es un sistema de gestión de base de datos (SGBD) ampliamente usado en la actualidad, especialmente en

entornos Web. Una de sus principales ventajas es ser software libre y de código abierto, lo cual permite su uso sin

pago de licencias, y con acceso al código fuente del programa. 4 Sistema operativo ampliamente utilizado en servidores, es software libre y de código abierto. Junto a PHP, MySQL

y Apache, forma un paquete de software denominado LAMP (iniciales), ampliamente utilizado para despliegue de

aplicaciones Web. 5 Microsoft Windows © es un sistema operativo desarrollado por la compañía estadounidense Microsoft, utilizando

tanto en servidores como computadores personales.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

38

4.2.1.1.3 Restricciones generales

No existen restricciones mayores dentro de los campos de entorno de hardware y

software, entornos de usuario final, disponibilidad o volatilidad de los recursos, y requisitos de

interoperabilidad.

4.2.1.1.4 Comunicaciones de red, repositorios de datos, memoria, desempeño

La aplicación debe optimizar sus comunicaciones con la base de datos, carga de

procesamiento y cantidad de memoria utilizada debido a que es posible que sea puesta a

producción en servidores que proporcionan recursos a otras aplicaciones utilizadas por la

Universidad.

4.2.1.1.5 Metas y guías

Las metas del diseño del sistema son las siguientes:

Crear un sistema que sea eficaz en su propósito.

Mantener el diseño simple, y de ser posible expansible y escalable: El sistema

desarrollado podría ser utilizado, modificado y expandido en proyectos posteriores.

Optimizar el uso de recursos: Debido a las razones expuestas en la sección de

restricciones 4.2.1.1.4.

Proveer una experiencia de usuario satisfactoria.

4.2.1.1.6 Métodos de desarrollo

El desarrollo de este sistema se apegará a la metodología de programación extrema (XP),

debido a que es una metodología de desarrollo rápido, y sin mayores complicaciones en la

generación de documentación y los procesos que se deben cumplir durante el desarrollo de la

aplicación.

4.2.1.1.7 Librerías

Se usarán las librerías de funcionalidad que provee Moodle para presentación, manejo de

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

39

autenticación de usuarios, e interacción con la base de datos.

4.2.1.1.8 Arquitectura del sistema

En esta sección se expone a alto nivel las funcionalidades y responsabilidades de cada

componente del sistema, para dar una idea general de cómo funciona el sistema para cumplir con

las funciones que se desean implementar.

Módulo de creación/edición/borrado de tipos de recomendaciones: Este módulo permite

gestionar tipos de recomendaciones editando todos los parámetros disponibles para su

definición.

Módulo de creación/edición/borrado de categorías de recomendaciones: Este módulo

permite gestionar categorías de recomendaciones editando los parámetros disponibles

para su definición.

Listados: Se presentan listados de recomendaciones, tipos de recomendaciones y

categorías de recomendaciones.

4.2.1.1.9 Políticas y tácticas

Las pruebas de funcionalidad de la aplicación se realizarán al terminar cada iteración del

desarrollo del sistema, para asegurar que el sistema cumpla con los requerimientos para

los cuales se está construyendo.

4.3 Desarrollo de mecanismo de autenticación

Para ingresar a la interfaz de administración se requiere que el usuario se autentifique.

Dicha autenticación se realiza con los mecanismos integrados de Moodle (el usuario debe tener

un nombre de usuario y contraseña válidos dentro del entorno virtual), y además, es necesario

que el usuario tenga un rol de administrador de recomendaciones. La asignación de roles es tarea

del administrador del entorno virtual.

El siguiente código, incluido en todas las páginas del sistema, asegura que los usuarios

que ingresen se autentifiquen como usuarios del entorno virtual de aprendizaje y que tengan

asignado el rol de administradores de recomendaciones.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

40

<?php

require ("../config.php");

global $CFG, $USER, $COURSE;

if ($CFG->forcelogin) {

require_login ();

}

// Verificar el rol del usuario actual

if (! (record_exists ( 'role_assignments', 'roleid', 24, 'userid', $USER -> id

))) {

include ('./error.php');

exit;

}?>

4.4 Desarrollo del servicio Web

Un servicio Web es una interfaz de aplicación de programaciones que se ejecuta en un

servidor y puede ser utilizada por aplicaciones cliente, para proveer información mediante el uso

de protocolos abiertos. En el desarrollo de esta tesis, se ha creado un servicio Web de

administración de recomendaciones, el cual provee información sobre tipos de recomendaciones,

categorías de recomendaciones y valores de atributos de modelo de usuario. El servicio Web

implementado permite que la aplicación tenga una arquitectura orientada a servicios, lo cual

significa que la comunicación entre la aplicación y el servicio hace uso de mensajes. Dicho

servicio se ha desarrollado con en el framework de servicios web para PHP NuSOAP

(http://sourceforge.net/projects/nusoap/), el cual permite implementar y consumir servicios web

basados en el protocolo SOAP (Simple Object Access Protocol).

4.4.1 Operaciones del servicio Web

El servicio Web expone información tanto del modelo de recomendaciones como del

modelo de usuario. Dados los requerimientos de información que debe manejar la interfaz de

administración de recomendaciones, se han definido las siguientes operaciones dentro del

servicio Web desarrollado:

GetTiposRecomendacion: Se utiliza para obtener todos los tipos de

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

41

recomendación existentes dentro del modelo del sistema recomendador.

GetTipoRecomendacion: Se utiliza para recuperar un tipo de recomendación en

particular.

GetRestricVencDeTipoRecomendacion: Para obtener un conjunto de

restricciones de vencimiento asociadas a un tipo de recomendación.

GetCategoriasAsociadasATipoRecomendacion: Para obtener las categorías que

se asocian a un tipo de recomendación.

GetCategoria: Obtener una categoría de tipos de recomendaciones.

GetCategorias: Obtener todas las categorías de recomendaciones existentes

dentro del sistema.

GetCondicionDeTipoRec: Obtener las condiciones asociadas a un tipo de

recomendación.

GetValoresEstereotiposAtribModeloUsuario: Datos recuperados desde el

modelo de usuario que indican los valores que puede tomar un atributo de modelo

de usuario.

Al ser un servicio Web basado en SOAP, cuenta con un archivo WSDL (Web Services

Description Language), el cual describe las operaciones disponibles del servicio. También, los

datos que se obtienen del servicio Web están definidos mediante el lenguaje XML6, el cual es

elemento primordial de los servicios Web basados en SOAP.

La aplicación de administración de recomendaciones consume las operaciones del

servicio creado para todas las operaciones en las que es necesario obtener datos desde el modelo

del sistema recomendador. Los mensajes XML se reciben y se les da tratamiento adecuado para

que sean presentados en las vistas como información legible.

El servicio Web implementado permite que toda la información disponible dentro del

6 XML, (eXtensible Markup Language), es un estándar abierto que define un conjunto de reglas para codificar

documentos en formatos legibles por computador. Sus principales objetivo son la simplicidad y generalidad de

representación de información, y la interoperabilidad y uso sobre Internet de la información.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

42

modelo de recomendaciones esté disponible para otras aplicaciones, de tal forma se asegura la

interoperabilidad, al ofrecer la información con un mecanismo ampliamente usado y aceptado.

La definición WSDL del servicio y la implementación del servicio se pueden encontrar en

los anexos 7.8 y 7.10.

Figura 4.3: Esquema del consumo del servicio Web implementado para la interfaz de

administración de recomendaciones

4.5 Desarrollo de las interfaces

Las interfaces de la aplicación se desarrollan con el lenguaje PHP, HTML7 (Hypertext

7 HTML, o Hypertext Markup Language, es el lenguaje predominante para el desarrollo de páginas Web.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

43

Markup Language), Javascript8 (funciones de validación y navegación), y CSS (Cascade Style

Sheets, hojas de estilo en cascada), para aplicar estilos estandarizados a las interfaces. Para poder

satisfacer los requerimientos expuestos en la sección 3.1, se van a desarrollar las siguientes

interfaces de la aplicación:

Menú lateral de funcionalidades

Listado de tipos de recomendación

Creación/edición de tipos de recomendación

Listado de categorías de recomendaciones

Creación /edición de categorías de recomendaciones

Borrado de datos.

4.5.1 Menú lateral de funcionalidades

Este menú contiene acceso a las funcionalidades que se han desarrollado en todo el sistema.

Este menú se puede encontrar en todas las interfaces de la aplicación.

Figura 4.4. Menú lateral de la aplicación.

4.5.2 Listado de tipos de recomendación

Esta interfaz tiene como funcionalidad poder listar todos los tipos de recomendaciones

8 Lenguaje utilizado en desarrollo de aplicaciones Web para validación de datos, despliegue de contenidos y manejo

de información. A diferencia de PHP, este lenguaje no se ejecuta en el servidor, sino en el navegador.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

44

que se creen dentro del sistema. Provee de facilidades para realizar acciones de creación, edición,

visualización y borrado de los tipos de recomendación.

Figura 4.5. Listado de tipos de recomendación.

4.5.3 Creación/Edición de tipos de recomendación

Es una de las dos principales interfaces de la aplicación. Provee las facilidades para

ingresar todos los campos de un tipo de recomendación, una plantilla de recomendación,

condiciones de aplicabilidad y restricciones de vencimiento.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

45

Figura 4.6. Interfaz de creación/edición de recomendaciones.

En esta interfaz se refleja el trabajo hecho en el modelo de recomendaciones. Se puede

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

46

observar que en ella, se introducen los datos para alimentar las tablas de tipos de

recomendaciones, condiciones de aplicabilidad, restricciones de vencimiento, y se recuperan

datos desde el modelado de usuario: estilos de aprendizaje, zona geográfica, plataforma, niveles

de interés en recursos y curso, y niveles de interacción.

4.5.4 Listado de categorías de recomendación

Consiste en un listado de las categorías de recomendaciones que se crean dentro del

sistema. Esta interfaz provee las facilidades necesarias para crear, visualizar, editar y eliminar

categorías de recomendaciones.

Figura 4.7. Interfaz de listado de categorías.

4.5.5 Creación/Edición de tipos de categorías

Esta interfaz permite tanto la creación como la edición de tipos de categorías.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

47

Figura 4.8. Interfaz de creación/edición de categorías.

4.5.6 Borrado de datos

Las interfaces de listados permiten acceder a una funcionalidad de borrado de datos. Se ha

desarrollado una interfaz genérica para utilizarse tanto con categorías o tipos de

recomendaciones. Esta interfaz solicita que se confirme la operación para evitar que se eliminen

datos por equivocación.

Figura 4.9. Diálogo de confirmación de eliminación de datos.

4.6 Integración con Moodle

La integración del sistema con Moodle se realiza mediante la programación de un bloque

Moodle, el cual permite que los usuarios accedan desde el entorno virtual de aprendizaje a la

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

48

aplicación de interfaz de administración de recomendaciones. Este bloque puede colocarse tanto

en las páginas principales de los usuarios como en los cursos a los que tengan acceso.

El bloque desarrollado cumple con la función de verificar el rol del usuario actual, de

manera idéntica a los mecanismos de la aplicación, de tal forma que no se permite el acceso a la

aplicación sin los requisitos de acceso necesarios (autenticación dentro de Moodle, rol de

administrador de recomendaciones)

La programación de este bloque resulta en una pequeña pieza de software que debe ser

agregada a las páginas de Moodle a las que tenga acceso un usuario administrador de

recomendaciones.

Figura 4.10. Bloque Moodle desarrollado

4.7 Consideraciones de la programación de la aplicación

En esta sección de la tesis se detallan consideraciones sobre el diseño y programación de

la aplicación.

4.7.1 Diseño visual

Las interfaces de la aplicación han sido programadas con un estilo visual coherente. Para

poder lograr esto, se ha utilizado hojas de estilos en cascada (CSS), con apego a los atributos

estándar de CSS9.

9 CSS (Cascade Style Sheet) es un lenguaje que permite separar el contenido de un documento escrito en un lenguaje

de marcas (como HTML) de sus detalles de presentación.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

49

4.7.2 Prácticas de programación

Gracias a la utilización del lenguaje PHP, HTML y Javascript, se ha logrado diseñar con

soltura las vistas de la aplicación. Se ha tomado en cuenta buenas prácticas de programación y de

seguridad, tales como añadir secuencias de escape en los campos de texto, analizar entradas de

usuario para evitar inyección SQL10

, no utilizar características no estándares de los lenguajes,

caso que ocurren con frecuencia con los lenguajes HTML y Javascript, y los atributos de las hojas

de estilo en cascada.

4.8 Pruebas de la aplicación

Se ha definido, con el uso de la metodología de programación XP, casos de prueba

necesarios para poder verificar que las interfaces funcionen en la forma que se espera que

funcionen, y que resultan manejables por parte de los usuarios. Los casos de prueba definidos

para la aplicación y los resultados de la ejecución de las pruebas de detallan en las secciones 7.5

y 7.6, respectivamente.

10

SQL (Standard Query Language) es un lenguaje estandarizado para manejar los datos de una base de datos.

Inyección SQL es una técnica de ataque a aplicaciones que consiste en insertar comandos SQL dentro de datos que

ingresan a la aplicación, con el fin de robar información o dañar la base de datos.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

50

5. Discusión de resultados

El trabajo resultante ha sido el producto de varias actividades. En primer lugar, realizando

un análisis de los elementos de las recomendaciones, se obtuvo un modelo de datos para albergar

la información de recomendaciones y tipos de recomendaciones. El siguiente paso fue desarrollar

una interfaz que permita realizar la administración de recomendaciones. Esta interfaz se

construyó cumpliendo con los requerimientos del diseño del modelo y los requerimientos UTPL.

La parte final de la implementación fue la integración de la interfaz a Moodle, lo cual se realizó

mediante la programación de un bloque Moodle.

5.1 Modelo de datos

El modelo de datos resultante consiste en una base de datos diseñada para albergar tanto el

modelo de recomendaciones como el modelado de usuario. El esquema de dicho modelo de datos

obtenido se encuentra la sección 4.1.2.

5.2 Servicio Web

Se implementó un servicio Web, del cual hace uso la interfaz de administración de

recomendaciones para recuperar información del modelo de recomendaciones: tipos de

recomendaciones, categorías de recomendaciones, restricciones de vencimiento y valores de

atributos de modelo de usuario. Las operaciones del servicio Web permiten que la información

esté disponible tanto para la interfaz de administración como para otras aplicaciones que la

requieran.

5.3 Interfaz de administración

La interfaz de administración resultante es un conjunto de vistas que permiten administrar

los tipos de recomendación. Permiten ingresar tipos de recomendaciones seleccionando los

parámetros que son necesarios para definirlas tales como nombre, descripción, tipo de recurso

Moodle, restricciones de vencimiento, condiciones de aplicabilidad. Los tipos de

recomendaciones pueden ser editados en su totalidad. De la misma forma, pueden crearse y

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

51

editarse las categorías de recomendaciones, y pueden revisarse listados tanto de tipos de

recomendaciones como de categorías de recomendaciones. La interfaz de administración podrá

ser utilizada por profesores con sus credenciales actuales de Moodle, o bien pueden crearse

nuevos usuarios bajo un rol Moodle, comentado más adelante. La información guardada por la

interfaz de administración podrá ser leída por un módulo tutor o un agente recomendador.

5.4 Integración con Moodle

La interfaz de administración de recomendaciones está integrada con Moodle de las

siguientes formas:

Se usa el mecanismo de autenticación de Moodle para iniciar sesión y acceder al sistema.

El sistema exige que el usuario que vaya a utilizar la aplicación tenga asignado el rol de

administración de recomendaciones, rol que para el caso de la aplicación creada, se ha

definido en la administración de Moodle.

El sistema se accede desde un bloque Moodle que se puede agregar en cualquier curso.

La programación de las interfaces utiliza funciones que provee Moodle para recuperación

de datos.

La integración con Moodle no ha resultado en mayores problemas, a excepción de la

agregación de bloques Moodle, paso en el que se debe tener cuidado para evitar estropear la

estructura de bloques existentes.

5.5 Pruebas

Las pruebas se realizaron con docentes de la Universidad, usando una copia de la base de

datos del entorno virtual de aprendizaje, por lo que las pruebas del sistema se realizaron en un

entorno muy similar al entorno en que se tendría que desenvolver el sistema en tiempo de

producción.

Los docentes que colaboraron para la realización de las pruebas indicaron que el sistema

es bastante útil para su propósito, y que es sencillo de manejar y entender.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

52

5.6 Trabajos futuros

Si bien hasta el momento se ha completado el alcance del trabajo de esta tesis y se han

cumplido los objetivos, se pueden proponer a continuación las siguientes tareas para

complementar el trabajo realizado:

Realizar un mayor desglose en la interfaz para seleccionar la condición de zona

geográfica. Si bien en el trabajo de modelado de usuario se presenta este desglose, no se

ha presentado la forma de implementarlo dentro del modelo de datos.

Mejorar las características de navegabilidad de las interfaces de listado, para que hayan

capacidades de paginación y evitar cargas de datos muy elevadas al momento de abrir las

páginas.

Integrar las interfaces del módulo de modelado de usuario con las de la interfaz de

administración de recomendaciones para tener acceso a los datos de modelos de usuario

en una mejor manera.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

53

6. Conclusiones y recomendaciones

6.1 Conclusiones

Al término del trabajo realizado en esta tesis, se extraen las siguientes conclusiones:

En el modelo de recomendaciones desarrollado para el sistema, fue

necesario incluir información sobre las recomendaciones, tipos de

recomendaciones, categorías, técnicas, restricciones y condiciones;

adicionalmente a ello fue necesario incluir información de modelado de

usuario, la cual permite determinar cuándo las recomendaciones son

aplicables a los estudiantes.

La interfaz de administración desarrollada permite crear tipos de

recomendaciones con valores definidos para los atributos del modelo de

usuario, lo cual permitirá ofrecer los recursos disponibles dentro del

entorno virtual mediante recomendaciones creadas a partir de dichos

tipos.

La selección de los tipos de actividades: tareas, foros, glosarios, mensajería,

cuestionario, subir archivo y recurso, se realizó por que son los más utilizados dentro

del entorno virtual, por consiguiente con los que están más familiarizados tanto

estudiantes como profesores.

La integración de la interfaz con Moodle es necesaria para que el

sistema pueda ser accedido con facilidad desde el Entorno Virtual de

Aprendizaje. La integración no sólo contempla un fácil acceso y uso,

sino también un ambiente familiar de trabajo, es decir, similar a las

interfaces propias del EVA.

El desarrollo de servicios Web permite el acceso a la información del

modelo de recomendaciones en una forma estandarizada. De tal forma es

sencillo, tanto para la interfaz de administración de recomendaciones

como para otras aplicaciones, el acceso a dicha información.

Un sistema de recomendaciones involucra la acción de varios módulos:

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

54

un módulo de administración de recomendaciones para establecer tipos

genéricos predeterminados de recomendaciones, un módulo de modelado de

usuario para determinar la pertinencia de la oferta de

recomendaciones, y un módulo de tutor para ofrecer las recomendaciones

por parte de los docentes a los alumnos. Adicionalmente, un módulo de

seguimiento de usuarios permite obtener información valiosa sobre las

interacciones de los estudiantes con el Entorno Virtual.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

55

6.2 Recomendaciones

Se debe entender muy bien el funcionamiento y estructura de un sistema de

recomendaciones para poder generar un modelo de datos y construir el sistema. Los

modelos aportados por los autores Santos y Boticario fueron de gran utilidad para

desarrollar el modelo de datos para la interfaz de administración de recomendaciones.

Es necesario realizar más trabajos investigación para proveer de mayor información

sobre desarrollo de aplicaciones integradas a Moodle.

Para formar un sistema de recomendaciones completo deben integrarse los diferentes

módulos desarrollados (Seguimiento de usuario, Módulo Tutor, Modelado de usuario,

Interfaz de administración), así como crear un agente de recomendaciones, el cual se

encarga de ofrecer las recomendaciones a los estudiantes de acuerdo a los valores de

sus modelos de usuario y las recomendaciones que se ajusten a ellos.

Diseñar interfaces de usuario amigables para que personas con diferentes niveles de

conocimiento puedan utilizar aplicaciones sin mayores problemas. Tener en cuenta

aspectos como navegabilidad, usabilidad, aspecto visual, familiarización con entornos

manejados con anterioridad.

Debe realizarse un proceso de pruebas de la aplicación, el cual es útil para verificar el

funcionamiento del sistema y la impresión que tienen los usuarios sobre el mismo.

Si los datos del sistema recomendador deben estar disponibles para múltiples

aplicaciones sobre diferentes tipos de plataformas, es conveniente implementar un

mecanismo estandarizado y de alta accesibilidad para poder recuperarlos, tal es el caso

de los servicios Web.

Explorar las posibilidades del uso de más tipos de actividades dentro del entorno virtual

para poder ofrecer dichas actividades dentro de las recomendaciones.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

56

7. Anexos

7.1 Historias de Usuario

En la sección 2.6.2.2.1 se ha explicado la utilidad y función de las historias de usuario

dentro de la aplicación de la metodología XP. Con el fin de satisfacer los requerimientos y

delinear las funcionalidades necesarias para el sistema, se han diseñado las historias de usuario

que se presentan en este anexo.

Historia de Usuario

Número: 1 Nombre: Ingreso al sistema

Usuario: Administrador de recomendaciones

Modificación de Historia Número: 1 Iteración Asignada: 1

Prioridad en Negocio (Alta / Media / Baja): Alta Puntos Estimados: 1

Riesgo en Desarrollo: (Alto / Medio / Bajo): Bajo Puntos Reales: 1

Descripción: El usuario ingresa a la página principal del sistema, donde es requerido que se

autentifique como usuario registrado en la plataforma Moodle.

Observaciones: Todas las páginas del sistema de administración de recomendaciones deben

estar protegidas con autenticación de usuarios.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

57

Historia de Usuario

Número: 2 Nombre: Consultar categorías de recomendaciones en el sistema

Usuario: Administrador de recomendaciones

Modificación de Historia Número: 1 Iteración Asignada: 1

Prioridad en Negocio (Alta / Media / Baja): Alta Puntos Estimados: 1

Riesgo en Desarrollo: (Alto / Medio / Bajo): Medio Puntos Reales: 1

Descripción: El usuario ingresa a una lista que contiene las categorías de recomendación

creadas dentro del sistema. En esta lista podrá elegir opciones como creación, edición,

visualización y eliminación de categorías de recomendaciones.

Observaciones: No hay observaciones

Historia de Usuario

Número: 3 Nombre: Crear y editar categorías de recomendaciones

Usuario: Administrador de recomendaciones

Modificación de Historia Número: 1 Iteración Asignada: 1

Prioridad en Negocio (Alta / Media / Baja): Alta Puntos Estimados: 1

Riesgo en Desarrollo: (Alto / Medio / Bajo): Medio Puntos Reales: 1

Descripción: El usuario dispone de una interfaz en la que puede ingresar el nombre y la

descripción de una categoría de recomendaciones, para posteriormente guardarla en el

sistema. Si se trata de edición, selecciona la categoría desde la lista de categorías, y se le

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

58

presenta los valores actuales, los cuales puede cambiar y guardar.

Observaciones: No hay observaciones.

Historia de Usuario

Número: 4 Nombre: Consultar tipos de recomendaciones en el sistema

Usuario: Administrador de recomendaciones

Modificación de Historia Número: 1 Iteración Asignada: 1

Prioridad en Negocio (Alta / Media / Baja): Alta Puntos Estimados: 1

Riesgo en Desarrollo: (Alto / Medio / Bajo): Medio Puntos Reales: 1

Descripción: El usuario ingresa a una lista que contiene los tipos de recomendación creados

dentro del sistema. En esta lista podrá elegir opciones como creación, edición, y eliminación

de tipos de recomendaciones.

Observaciones: No hay observaciones.

Historia de Usuario

Número: 5 Nombre: Crear y editar tipos de recomendación

Usuario: Administrador de recomendaciones

Modificación de Historia Número: 1 Iteración Asignada: 1

Prioridad en Negocio (Alta / Media / Baja): Alta Puntos Estimados: 2

Riesgo en Desarrollo: (Alto / Medio / Bajo): Medio Puntos Reales: 2

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

59

Descripción: El usuario dispone de una interfaz en la que puede ingresar el nombre y la

descripción de un tipo de recomendaciones, así como una o más categorías de recomendación

a la que sujeta dicho tipo. También debe poder ingresar datos para crear una “plantilla de

recomendación”. Estos datos se utilizarán para rellenar como valores por defecto al momento

de crear una recomendación a partir de un tipo de recomendación; dichos datos consisten en

un título, texto, explicación, y un enlace. En esta interfaz también debe permitir ingresar

valores para las condiciones (estilo de aprendizaje, ubicación geográfica, plataforma, nivel de

interacción, nivel de interés en el curso, nivel de interés en recursos) y restricciones de

vencimiento (número de veces a mostrar, fecha límite de oferta) a las que se sujetará ofrecer

una recomendación de este tipo. Una vez que se ingrese toda la información, debe permitir

guardarla, y a continuación presentar el cómo se guardó la recomendación. Si se trata de

edición, se le presentarán los valores actuales, los cuales puede cambiar y guardar.

Observaciones: No hay observaciones.

Historia de Usuario

Número: 6 Nombre: Borrado de datos

Usuario: Administrador de recomendaciones.

Modificación de Historia Número: 1 Iteración Asignada:

Prioridad en Negocio (Alta / Media / Baja): Puntos Estimados:

Riesgo en Desarrollo: (Alto / Medio / Bajo): Puntos Reales:

Descripción: En las listas de datos existentes en el sistema, existe la opción de borrado. Al

seleccionar esta opción, el usuario debe confirmar que desea eliminar los datos. Si se cancela

el borrado, debe ser llevado de vuelta a la lista.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

60

Observaciones: No hay observaciones.

7.2 Desarrollo de la planeación de la entrega.

En la sección 2.6.2.2.2 se explica cómo se realiza un proceso de planeación de entrega en

el marco de la aplicación de la metodología de desarrollo XP. Se presentan a continuación las

tareas que se han asignado para realizar y que deben concluir con dos entregas:

Primera entrega: Para la primera entrega, se van a desarrollar las siguientes

funcionalidades del sistema:

Autenticación de usuarios

Creación de estilos CSS para estandarizar la apariencia de la aplicación.

Aseguramiento de la aplicación mediante el desarrollo de mecanismos para evitar

inyección SQL.

Interfaces de administración de categorías de recomendaciones.

Segunda entrega

Desarrollo de interfaces de administración de tipos de recomendaciones.

Desarrollo de interfaz de edición y listado de recomendaciones.

Desarrollo de métodos de borrado de datos.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

61

7.3 Planeación de Iteraciones

Una planeación de iteraciones se diseña para entregar versiones funcionales del sistema en

períodos cortos de tiempo. Para el desarrollo de la interfaz de administración de recomendaciones

se ha establecido dos iteraciones, la primera concerniente a aspectos de integración con Moodle,

estilos visuales y categorías de recomendaciones; y la segunda con creación de tipos de

recomendaciones y el resto de operaciones de edición y borrado de datos.

Tareas de la iteración 1

Tarea

Número tarea: 1 Número historia: 1

Nombre tarea: Creación de un mecanismo de autenticación, y menú lateral de la aplicación.

Tipo de tarea : Desarrollo Puntos estimados: 1

Fecha inicio: 2010/07/29 Fecha fin: 2010/07/30

Programador responsable: Juan Pablo Angamarca G.

Descripción:

Crear un script que pueda ser incluido en todas las vistas de usuario para que se haga

indispensable un inicio de sesión dentro del entorno EVA.

Crear un menú lateral que permita acceder a todas las funcionalidades del sistema.

Tarea

Número tarea: 2 Número historia: 2

Nombre tarea: Creación de una interfaz de listado de categorías de recomendaciones.

Tipo de tarea : Desarrollo Puntos estimados: 1

Fecha inicio: 2010/08/02 Fecha fin: 2010/08/04

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

62

Programador responsable:

Descripción:

Diseñar una interfaz de listado de categorías de recomendaciones.

Crear estilos CSS para aplicarlo en forma estándar en todas las vistas.

Tarea

Número tarea: 3 Número historia: 3

Nombre tarea: Creación de una interfaz de creación y edición de categorías de

recomendaciones.

Tipo de tarea : Desarrollo Puntos estimados: 2

Fecha inicio: 2010/07/05 Fecha fin: 2010/07/12

Programador responsable: Juan Pablo Angamarca G.

Descripción:

Crear una interfaz para crear y editar categorías de recomendaciones. La página debe

controlar que los datos ingresados sean válidos de acuerdo a los tipos de datos de la

página.

Crear un mecanismo para asegurar que los datos en los requests11

a la página no sean

vulnerables a inyección SQL, para aplicar dicho mecanismo a esta página y a todas las

que utilicen parámetros en los requests.

Crear estilos CSS para estandarizar la apariencia de las páginas de creación y edición de

datos.

11

Acción que se realiza sobre un recurso Web.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

63

Tarea

Número tarea: 4 Número historia: 4

Nombre tarea: Creación de una interfaz de listado de tipos de recomendaciones.

Tipo de tarea : Desarrollo Puntos estimados: 1

Fecha inicio: 2010/07/13 Fecha fin: 2010/07/14

Programador responsable: Juan Pablo Angamarca G.

Descripción:

Crear una interfaz para listar los tipos de recomendaciones que se creen dentro del

sistema. Debe utilizar los estilos CSS estándar de la aplicación.

Iteración 2

Tarea

Número tarea: 5 Número historia: 5

Nombre tarea: Creación de una interfaz de creación y edición de tipos de recomendación

Tipo de tarea : Desarrollo Puntos estimados: 3

Fecha inicio: 2010/08/16 Fecha fin: 2010/07/20

Programador responsable: Juan Pablo Angamarca G.

Descripción:

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

64

Crear una interfaz que permita crear y editar tipos de recomendación. Los campos que se

ingresarán/editarán serán los siguientes:

o Nombre del tipo de recomendación

o Descripción del tipo de recomendación

o Categorías asociadas al tipo de recomendación

o Actividad del entorno virtual que se va a utilizar en la recomendación. Este listado

se limita por ahora a Tarea, Foro, Glosario, Mensajería, Cuestionario, Recurso,

Subir archivo.

o Título de recomendación

o Explicación de recomendación

o Texto de la recomendación

o Enlace (dirección Web)

o Restricciones de vencimiento (fecha de vencimiento, número de veces a mostrar

antes de vencer)

o Condiciones: Estilo de aprendizaje, Zona geográfica (lista de centros

universitarios), Plataforma, Nivel de Interés en el curso, Nivel de interacción.

Esta interfaz debe usar los estilos CSS estándar de la aplicación.

Tarea

Número tarea: 6 Número historia: 8

Nombre tarea: Borrado de entidades de datos

Tipo de tarea : Desarrollo Puntos estimados: 2

Fecha inicio: 2010/08/26 Fecha fin: 2010/08/27

Programador responsable: Juan Pablo Angamarca G.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

65

Descripción:

Creación de una página estándar de confirmación y ejecución del borrado de datos de la

aplicación. De acuerdo al tipo de entidad que se realice el borrado, esta página debe

redireccionar al listado de entidades de dicho tipo.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

66

7.4 Tarjetas CRC

Las reglas de XP (sección 2.6.2.1) establecen que deben usarse tarjetas CRC (Clase –

Responsabilidad - Colaboración) con el fin de identificar las clases que van a ser usadas dentro

del diseño del software, las responsabilidades (funciones) que van a cumplir dentro del sistema y

las clases que colaboran con ellas, con el fin de apreciar la interacción entre las entidades que

trabajan en la solución del problema (Wells, 1999-2009). Dentro del proceso de desarrollo del

sistema de administración de recomendaciones, se han identificado clases utilitarias y clases que

representan entidades dentro del contexto del negocio. Esta sección contiene las tarjetas

diseñadas para las clases identificadas.

7.4.1 Clases que representan entidades dentro del contexto del negocio.

Recomendación

Descripción: Representación en la base de datos de la entidad Recomendación del modelo de

datos

Responsabilidades Colaboradores

Servir de contenedor de los datos de una recomendación para su

guardado y recuperación en la base de datos

DataUtils

Categoría

Descripción: Representación en la base de datos de la entidad Categoría del modelo de datos

Responsabilidades Colaboradores

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

67

Servir de contenedor de los datos de una categoría de

recomendaciones para su guardado y recuperación en la base de

datos

DataUtils

RestricciónVencimiento

Descripción: Representación en la base de datos de la entidad Restricción_Vencimiento del

modelo de datos

Responsabilidades Colaboradores

Servir de contenedor de los datos de las restricciones de vencimiento

asociadas a una recomendación o tipo de recomendación para su

guardado y recuperación en la base de datos

DataUtils

TipoRecomendacion

Descripción: Representación en la base de datos de la entidad Tipo_recomendación del modelo

de datos

Responsabilidades Colaboradores

Servir de contenedor de los datos de un tipo de recomendación para

su guardado y recuperación en la base de datos

DataUtils

Condicion

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

68

Descripción: Representación en la base de datos de la entidad Condición del modelo de datos

Responsabilidades Colaboradores

Servir de contenedor de los datos de una condición de aplicabilidad

de una recomendación o tipo de recomendación para su guardado y

recuperación en la base de datos

DataUtils

CategTipoRec

Descripción: Representación en la base de datos de la relación entre las entidades Categoría y

Tipo de recomendación del modelo de datos

Responsabilidades Colaboradores

Servir de contenedor de los datos de la asociaciones de tipos de

recomendación y categorías para su guardado y recuperación en la

base de datos

DataUtils

7.4.2 Clases utilitarias

DataUtils

Descripción: Esta clase provee utilidades de manejo CRUD12

de datos.

Responsabilidades Colaboradores

12

CRUD, acrónimo de Create, Read, Update, Delete (Crear, leer, actualizar, borrar); son operaciones básicas sobre

los datos de una base de datos.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

69

Insertar registros en la base de datos Recomendacion

Actualizar registros en la base de datos TipoRecomendacion

Borrar registros en la base de datos. Categoria

Obtener registros desde la base de datos RestriccionVencimiento

Procesar los datos para evitar que las entradas de usuario provoquen

funcionamiento indebido de la aplicación, tal como la apertura para

ataques de inyección SQL o inserción de código HTML en las

páginas del sistema.

Condicion

Utils

Descripción: Proporcionar diferentes utilidades al sistema

Responsabilidades Colaboradores

Establecer el tipo de acción que realiza un

formulario de datos (inserción o actualización)

DataUtils

Procesamiento de direcciones Web para su

correcta presentación.

Validación de parámetros de requests para

evitar la apertura a ataques de inyección SQL.

Obtener registros desde la base de datos

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

70

PresentationUtils

Descripción: Proveer funciones estándares de presentación de mensajes dentro del sistema.

Responsabilidades Colaboradores

Presentar mensajes de error. Recomendacion

Presentar mensajes de advertencia. TipoRecomendacion

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

71

7.5 Casos de prueba

Los casos de prueba se diseñan para verificar que las historias de usuario se pueden

ejecutar con las funcionalidades desarrolladas. Se ha desarrollado un caso de prueba por cada

historia de usuario propuesta, para hacer que los usuarios sigan las instrucciones indicadas y

efectuar las correcciones al sistema necesarias.

CASO DE PRUEBA

Identificador CSPRB-001

Historia de

Usuario

Ingreso al sistema

Descripción Este caso de prueba sirve para verificar que la entrada al

sistema exige autentificación.

Prioridad Alta

Requisitos Que el sistema esté ejecutándose.

Que al usuario se le haya asignado el rol de

administración de recomendaciones dentro de

Moodle.

Acciones El administrador de recomendaciones ingresa a la

página principal de la interfaz de administración de

recomendaciones, ya sea desde el enlace que se le

presentará dentro del entorno Moodle, o accediendo

directamente a alguna de las páginas que

conforman el sistema. Si no hay una sesión iniciada

como usuario Moodle, la pantalla estándar de inicio

de sesión de Moodle deberá aparecer.

Resultado

esperado

Una vez ingresadas las credenciales de usuario

Moodle, el sistema debe llevar al usuario a la

página solicitada.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

72

CASO DE PRUEBA

Identificador CSPRB-002

Historia de

Usuario

Consultar categorías de recomendaciones en el sistema

Descripción Este caso de prueba verifica que la interfaz de listado de

categorías de recomendaciones está disponible y puede

utilizarse.

Prioridad Alta

Requisitos El usuario debe haber ingresado al sistema con su nombre

de usuario y contraseña.

Acciones En el menú lateral, debe hacer clic en el enlace

“Listado”, en la sección Categorías de

recomendaciones.

Resultado

esperado

El usuario debe encontrar la lista de categorías de

recomendaciones del sistema una vez que ha

realizado las acciones descritas, y debe encontrar

enlaces para ver, editar y borrar por cada categoría

de recomendación. También debe ser capaz de

acceder a la interfaz de creación de categorías de

recomendaciones desde el botón Crear categoría.

CASO DE PRUEBA

Identificador CSPRB-003

Historia de

Usuario

Crear y editar categorías de recomendaciones

Descripción Este caso de prueba verifica que la interfaz de creación y

edición de categorías de recomendaciones está disponible y

puede utilizarse.

Prioridad Alta

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

73

Requisitos El usuario debe haber ingresado al sistema, y debe estar

ubicado en la interfaz de listado de categorías de

recomendaciones.

Acciones El usuario hace clic en el botón Crear categoría o

en el enlace Editar en la lista de categorías. Será

llevado a una página donde podrá ingresar o editar

los valores necesarios para crear una nueva

categoría de recomendaciones o modificar una ya

existente. Los valores que puede editar son Nombre

de la categoría y Descripción de la categoría

(ambos obligatorios). Luego de terminar de

ingresar o modificar los campos, debe hacer clic en

el botón Guardar. Si no se han ingresado los

campos obligatorios, se le presentará un mensaje

indicándole que debe completarlos.

Resultado

esperado

Una vez ingresados los valores necesarios, al hacer

clic en el botón Guardar se mostrará una página que

indicará al usuario la nueva categoría, o el estado la

categoría editada.

CASO DE PRUEBA

Identificador CSPRB-004

Historia de

Usuario

Consultar tipos de recomendaciones en el sistema

Descripción Este caso de prueba verifica que la interfaz de listado de

tipos de categorías de recomendaciones está disponible y

puede utilizarse.

Prioridad Alta

Requisitos El usuario debe haber ingresado al sistema.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

74

Acciones En el menú lateral, debe hacer clic en el enlace

“Listado”, en la sección Tipos de recomendaciones.

Resultado

esperado

El usuario debe encontrar la lista de tipos de

recomendaciones una vez que ha realizado las

acciones descritas. Para cada tipo listado, deben

existir enlaces para ver detalle, editar y borrar.

CASO DE PRUEBA

Identificador CSPRB-005

Historia de

Usuario

Crear y editar tipos de recomendaciones

Descripción Este caso de prueba verifica que la interfaz de creación y

edición de tipos de recomendaciones está disponible y

puede utilizarse.

Prioridad Alta

Requisitos El usuario debe haber ingresado al sistema con su nombre

de usuario y contraseña, y debe estar ubicado en la interfaz

de listado de tipos de recomendaciones.

Acciones El usuario hace clic en el botón Crear tipo de

recomendación o en el enlace Editar en la lista de

categorías. Será llevado a una página donde podrá

ingresar o editar los valores necesarios para crear

un nuevo tipo de recomendación o modificar uno

ya existente. Los valores que se podrán editar en

los campos del formulario están divididos en

secciones:

o Tipo de recomendación: Nombre del tipo

(obligatorio), Descripción del tipo,

Actividad del entorno virtual, Categorías de

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

75

recomendación asociadas (obligatorio).

o Plantilla de recomendación: Título

(obligatorio), Explicación, Texto de la

recomendación (obligatorio), Enlace.

o Restricciones de vencimiento: Fecha de

vencimiento, veces a mostrar (debe

completarse por lo menos uno de los dos).

o Condiciones: Estilo de aprendizaje, Zona

geográfica, Plataforma, Nivel de interés en

el curso, nivel de interés en recursos, Nivel

de interacción.

Luego de terminar de ingresar o modificar los

campos, el usuario debe hacer clic en el botón

Guardar. Si no se ingresaron todos los campos

necesarios, se presentará un mensaje indicándole a

usuario que los ingrese.

Resultado

esperado

Una vez ingresados todos los valores necesarios en

los campos y se haya hecho clic en el botón

Guardar, se mostrará una página que indicará al

usuario el nuevo tipo de recomendación o el estado

del tipo editado.

CASO DE PRUEBA

Identificador CSPRB-006

Historia de

Usuario

Borrado de datos

Descripción Este caso de prueba verifica que la funciona

correctamente las facilidades para borrar datos dentro de

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

76

la aplicación.

Prioridad Alta

Requisitos El usuario debe haber ingresado al sistema, y debe estar

ubicado en cualquiera de los listados (recomendaciones,

tipos de recomendaciones, categorías de

recomendaciones).

Acciones En cualquiera de los listados de datos, el usuario

puede hacer clic en los enlaces “Borrar”. Al

hacer clic en dicho enlace, se le redireccionará a

una página que le pedirá confirmación para

borrar los datos.

Resultado

esperado

Al hacer clic en el botón Sí, el usuario será

redireccionado al listado y se le presentará un

mensaje informándole que los datos han sido

borrados satisfactoriamente. Si hace clic en no,

volverá al listado.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

77

7.6 Resultado de las pruebas

Se ha llevado los casos de prueba propuestos para que sean desarrollados por usuarios.

Los usuarios han expresado que las interfaces son navegables y sencillas, habiendo sólo

observaciones en cuanto a las descripciones y textos de ayuda. En esta sección se presenta, por

cada caso de prueba, la ejecución de los mismos y los resultados obtenidos.

7.6.1 Pruebas para caso de prueba CSPRB-001

Encargado de realizar la prueba:

Ing. Guido Riofrío

Caso de prueba:

CSPRB-001

Observaciones:

Ninguna novedad

Acciones: No es necesario realizar ninguna acción.

Encargado de realizar la prueba:

Ing. Marta Agila

Caso de prueba:

CSPRB-001

Observaciones:

Ninguna novedad

Acciones: No es necesario realizar ninguna acción.

7.6.2 Pruebas para caso de prueba CSPRB-002

Encargado de realizar la prueba:

Ing. Guido Riofrío

Caso de prueba:

CSPRB-002

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

Encargado de realizar la prueba:

Ing. Marta Agila

Caso de prueba:

CSPRB-002

Observaciones:

No hay observaciones.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

78

Acciones: No es necesario realizar ninguna acción.

7.6.3 Pruebas para caso de prueba CSPRB-003

Encargado de realizar la prueba:

Ing. Guido Riofrío

Caso de prueba:

CSPRB-003

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

Encargado de realizar la prueba:

Ing. Marta Agila

Caso de prueba:

CSPRB-003

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

7.6.4 Pruebas para caso de prueba CSPRB-004

Encargado de realizar la prueba:

Ing. Guido Riofrío

Caso de prueba:

CSPRB-004

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

Encargado de realizar la prueba:

Ing. Marta Agila

Caso de prueba:

CSPRB-004

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

7.6.5 Pruebas para caso de prueba CSPRB-005

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

79

Encargado de realizar la prueba:

Ing. Guido Riofrío

Caso de prueba:

CSPRB-005

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

Encargado de realizar la prueba:

Ing. Marta Agila

Caso de prueba:

CSPRB-005

Observaciones:

Ha indicado que hace falta documentar más la interfaz, problema que se ha

solucionado incorporando botones de ayuda.

Acciones: No es necesario realizar ninguna acción.

7.6.6 Pruebas para caso de prueba CSPRB-006

Encargado de realizar la prueba:

Ing. Guido Riofrío

Caso de prueba:

CSPRB-006

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

Encargado de realizar la prueba:

Ing. Marta Agila

Caso de prueba:

CSPRB-006

Observaciones:

No hay observaciones.

Acciones: No es necesario realizar ninguna acción.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

80

7.7 Manual de usuario

El manual de usuario es un documento que detalla la forma de uso de las funcionalidades

del sistema. Esta sección presenta dicha información, con instrucciones sencillas y gráficos de

apoyo como medio de ilustración.

7.7.1 Ingreso al sistema

El ingreso al sistema se puede realizar de varias formas:

Ingresando a la URL base del sistema, http://[Dirección_del_servidor_del_entorno

virtual]/admin-recom. Debe consultar la dirección del servidor al administrador del

entorno virtual. Acceder a esta página redireccionará a la página de inicio de sesión del

entorno virtual. Es requerido que el usuario provea un nombre de usuario y contraseña

válidos con los que ingresan al entorno virtual. El administrador del entorno virtual debe

haberle asignado al usuario el rol de administrador de recomendaciones.

Figura 7.1. Autentificación solicitada al ingresar a cualquier página de la interfaz.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

81

Dentro del entorno virtual, puede accederse a la interfaz utilizando el bloque Moodle

programado para el efecto, desde la página principal del usuario.

Figura 7.2. Bloque Moodle desde el que se puede ingresar a la interfaz de administración de

recomendaciones.

Las páginas de la interfaz de administración recomendaciones pueden guardarse como

marcadores o bookmarks, puede accederse directamente a ellas si es que la sesión ha sido

iniciada, caso contrario, se redireccionará primero a la página mostrada en a).

7.7.2 Menú lateral

Contiene los enlaces a las funcionalidades de la aplicación. Contiene secciones y nombres

autodescriptivos.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

82

Figura 7.3. Menú lateral de la aplicación.

7.7.3 Revisar listado de tipos de recomendaciones

Una vez dentro del sistema, hacer clic en el enlace Listado, de la sección Tipos de

recomendaciones. Allí se listan los tipos creados, y se puede seleccionar opciones para crear,

visualizar, editar y borrar recomendaciones.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

83

Figura 7.4. Listado de tipos de recomendaciones existentes.

7.7.4 Crear un tipo de recomendación

Para crear un tipo de recomendación, se hace clic en el botón “Crear tipo”, ubicado en el

listado de tipos de recomendación, o bien hacer clic en el enlace “Crear tipo”, en el menú lateral.

Se abrirá una página en la que el usuario podrá crear una nueva recomendación, ingresando

valores para los campos solicitados. La interfaz indica los campos que son obligatorios, y para

campos grandes de texto, la cantidad de caracteres que se puede ingresar.

Campos para crear un tipo de recomendación

Nombre del tipo de recomendación: Indica el nombre del tipo de recomendación

que se va a crear-

Descripción del tipo: Una breve descripción del tipo de recomendación, que

puede ser de hasta 500 caracteres.

Actividad del entorno virtual: Debe seleccionarse aquí una de las diferentes

actividades disponibles para realizar en el entorno virtual. Actualmente pueden

escogerse las siguientes: Tarea, Foro, Glosario, Mensajería, Cuestionario, Recurso,

Subir archivo.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

84

Categorías asociadas: Se selecciona aquí la categoría a la que se asocia el tipo de

recomendación. Estos tipos se pueden administrar desde la sección de

administración de categorías de recomendaciones.

Figura 7.5. Interfaz de creación de tipos de recomendaciones (I)

A continuación se encuentra la sección de Plantilla de recomendación. En esta sección se

coloca información para que sirva de plantilla a las recomendaciones que se creen basándose en

el tipo de recomendación que se está creando actualmente.

Título de la recomendación: Un título que describe a breves rasgos la

recomendación.

Explicación: Texto con el que se informa al estudiante las razones del por qué se

le ofrece la recomendación

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

85

Texto de la recomendación: Texto detallado en el que se ofrecen instrucciones y

comentarios sobre la recomendación.

Enlace: Un cuadro de texto para ingresar un enlace Web. Este enlace puede ser

probado presionando la tecla Tabulación y luego haciendo clic en el enlace

“Probar” que se encuentra junto al cuadro de texto.

Figura 7.6. Interfaz de creación de tipos de recomendaciones (II)

A continuación se encuentran las secciones de restricciones de vencimiento y condiciones.

Restricciones de vencimiento: Se debe llenar por lo menos uno de los dos campos:

o Vence en: Especificar hasta qué fecha se puede mostrar una recomendación

creada a partir el tipo actual.

o Vencer al mostrarse el siguiente número de veces: Una recomendación creada

a partir del tipo actual puede mostrarse hasta el número de veces que se

especifique aquí.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

86

Condiciones: Las recomendaciones creadas a partir de este tipo de recomendación se

ofertarán a los estudiantes al coincidir los valores de sus atributos de modelo de usuario

con los valores especificados aquí. Las condiciones para las que se debe especificar

valores son Estilo de aprendizaje, Zona geográfica, Plataforma, Nivel de interés en el

curso, Nivel de interés en recursos, Nivel de Interacción.

Figura 7.7. Interfaz de creación de tipos de recomendaciones (III)

Al terminar de definir el tipo de recomendación, completando por lo menos todos los

campos obligatorios, el usuario podrá hacer clic en el botón Guardar para que el tipo creado se

guarde, o clic en el botón Cancelar para salir de la página y descartar cualquier cambio ingresado.

Si no se completa alguno de los campos obligatorios, la aplicación avisará de ello luego de hacer

clic en el botón Guardar y no permitirá que se guarden los cambios hasta que se hayan

completado dichos campos.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

87

Figura 7.8. Notificación de campos obligatorios no completados.

Una vez completados los campos, se guardarán y se informará al usuario, y se mostrará el

tipo de recomendación creado.

Figura 7.9. Visualización de un tipo de recomendación al ser creado.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

88

7.7.5 Editar tipo de recomendación

Para editar un tipo de recomendación, el usuario debe ubicarse en el listado de tipos de

recomendaciones y hacer clic en el enlace Editar del tipo recomendación correspondiente, o bien

hacer clic en el botón Editar en su página de visualización. A continuación de ello se le presentará

la interfaz de edición, que es idéntica a la de creación, donde tendrá que modificar los campos

que considere necesarios y hacer clic en el botón Guardar, y si desea descartar los cambios, hacer

clic en el botón Cancelar. De la misma forma, si existen campos obligatorios incompletos, se

alertará para que sean completados. Una vez terminado el proceso de edición, se informará de

que los cambios se han guardado exitosamente.

Figura 7.10. Visualización de un tipo de recomendación al ser editado.

7.7.6 Listado de categorías

Para revisar todas las categorías creadas, el usuario debe hacer clic en el enlace Listado,

de la sección Categorías de recomendaciones en el menú lateral de la aplicación. Desde este

listado, podrá revisar todos los tipos creados, así como acceder a las funcionalidades de

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

89

visualización, edición, creación y borrado de categorías.

Figura 7.11. Listado de categorías.

7.7.7 Crear categoría

Para crear una categoría de recomendaciones, el usuario debe hacer clic en el enlace

“Crear categoría” del menú lateral, o bien hacer clic en el botón “Crear categoría” del listado de

categorías. Se presentará una interfaz donde deberá ingresar el nombre de la categoría y su

descripción. Ambos campos son obligatorios y deberán ser completados, si faltara uno de ellos, la

aplicación informará al usuario.

Figura 7.12. Interfaz de creación de categorías

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

90

Una vez creado el tipo, se mostrará la categoría creada, y se informará que los datos han

sido creados con éxito.

Figura 7.13. Visualización de una categoría luego de ser creada.

7.7.8 Edición de una categoría

Para editar una categoría, se debe hacer clic en el enlace Editar de la categoría

correspondiente en el listado, o hacer clic en el botón Editar de su la página de visualización. Se

presentará una interfaz de idéntico funcionamiento a la de creación de categorías.

7.7.9 Borrado de datos

Para borrar ya sea tipos de recomendación o categorías de recomendaciones, se debe

acceder a la página de listado y hacer clic en el enlace Borrar. Se presentará una página de

confirmación de eliminación, en la cual el usuario puede confirmar que desea borrar los datos, o

cancelar la operación.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

91

Figura 7.14. Acceso a la funcionalidad de borrado desde una página de listado.

Figura 7.15. Diálogo de confirmación de borrado de datos.

Si se borran los datos, se regresará a listado y se informará que los datos se han borrado

con éxito.

Figura 7.16. Notificación de borrado exitoso de datos.

7.7.10 Uso de ayuda

Los campos de los formularios de datos cuentan con un botón de ayuda. El botón de

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

92

ayuda consiste en un pequeño icono (círculo amarillo con un signo de interrogación). Al hacer

clic en dicho botón, aparecerá una ventana emergente (pop-up), con una descripción del campo y

sobre los valores que debería ingresar.

Figura 7.17. Uso de los botones de ayuda.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

93

7.8 Manual del programador

Sistema de Administración de Recomendaciones

Generado por phpDocumentor v1.4.1 http://www.phpdoc.org

http://pear.php.net/package/PhpDocumentor

http://www.sourceforge.net/projects/phpdocu

Paquete admin-recom

admin-recom.constants.php

Paquete admin-recom

Autor: Juan Pablo Angamarca

Versión 1.0

ADVERTENCIA_REQUERIDOS_NOVALIDOS = 'Existen campos obligatorios que no han

sido completados, o

campos para los que se han ingresado valores no válidos.' [línea 67]

Mensaje para indicar que no se han completado todos los campos obligatorios.

CREATE = 'create' [línea 12]

Variable que le indica a un formulario de edición de datos que los datos que se están

editando deben guardarse como una tupla nueva.

DATOS_BORRADOS_EXITO = 'Datos borrados exitosamente.' [línea 51]

Mensaje para indicar que el borrado de datos se realizó con éxito.

DATOS_CREADOS_EXITO = 'Datos ingresados exitosamente.' [línea 55]

Mensaje para indicar que la creación de datos se realizó con éxito.

DATOS_EDITADOS_EXITO = 'Datos actualizados exitosamente.' [línea 47]

Mensaje para indicar que la edición de datos se realizó con éxito.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

94

DEBE_SER_NUMERO = 'El valor ingresado debe ser numérico.' [línea 33]

Mensaje para indicar que el valor que se debe ingresar debe ser numérico.

EDIT = 'edit' [línea 17]

Variable que le indica a un formulario de edición de datos que los datos que se están

editando se actualizan a una tupla indicada.

ERROR_ACTUALIZAR = 'Error al actualizar los datos. Puede tratarse de un problema con la

conexión al servidor. Inténtelo más tarde o contacte al administrador.' [línea 63]

Mensaje para indicar que ocurrió un error al actualizar los datos.

ERROR_GUARDAR = 'Error al guardar los datos. Puede tratarse de un problema con la

conexión al servidor.

Inténtelo más tarde o contacte al administrador.' [línea 59]

Mensaje para indicar que ocurrió un error al guardar los datos.

ERROR_NO_DATA_FOUND = 'No se pudo completar la operación para los datos solicitados.

Es probable que no existan, que exista un fallo de conexión o que se haya hecho un pedido

incorrecto a la aplicación.' [línea 21]

Mensaje de error de datos no encontrados.

ESPECIFIQUE_CONDICIONES = 'Debe especificar por lo menos una condición para la

recomendación.' [línea 42]

Mensaje para indicar que se deben especificar condiciones para el tipo de recomendación.

ESPECIFIQUE_RESTRICCION_VENCIMIENTO = 'Debe especificar una fecha de

vencimiento o bien un número

de veces a mostrar.' [línea 38]

Mensaje para indicar que se debe especificar una restricción de vencimiento.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

95

REQUERIDO = 'Campo obligatorio' [línea 25]

Mensaje para indicar un campo obligatorio.

SELECCIONEOPCION = 'Seleccionar por lo menos una opción' [línea 29]

Mensaje para indicar que se debe seleccionar por lo menos una opción.

WSDL = "{{$CFG->wwwroot}/admin-recom/webservice/server.php?wsdl" [línea 71]

Constante que indica la ubicación de la definición WSDL del servicio Web.

Clase PresentationUtils

[línea 7]

Clase que provee utilidades para presentación de elementos en las páginas.

Paquete admin-recom

Autor: Juan Pablo Angamarca G.

void function PresentationUtils::backButton() [línea 57]

Presenta un botón que permite regresar a la página anterior, de la misma forma que el

botón Back del navegador. Esta función no puede ser llamada dentro de un elemento

<form>.

void function PresentationUtils::printErrorHeader($errorText) [línea 45]

Parámetros de la función:

$errorText $errorText Texto del error.

Imprimir un mensaje de error. Se presenta un icono que consiste en un círculo rojo con una

línea horizontal blanca en el centro, y junto al icono un texto que describe la advertencia.

void function PresentationUtils::printHeader($headerText) [línea 21]

Parámetros de la función:

$headerText $headerText Texto de la cabecera.

Imprimir una cabecera.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

96

void function PresentationUtils::printInfoMessage($infoText) [línea 68]

Parámetros de la función:

$infoText $infoText Texto informativo.

Imprimir un mensaje informativo. Consiste en un icono de una bombilla azul, y junto a

dicho icono, un texto informativo.

void function PresentationUtils::printWarningHeader($warningText) [línea 32]

Parámetros de la función:

$warningText $warningText Texto de la advertencia.

Imprimir un mensaje de advertencia. Se presenta un icono que consiste en un triángulo

amarillo con un signo de interrogación en el centro, y junto al icono, un texto que describe

la advertencia.

Clase Utils

[línea 9]

Paquete admin-recom

Autor: Juan Pablo Angamarca G.

void function Utils::lastId($idField, $table) [línea 66]

Parámetros de la función:

$idField $idField Nombre del PK

$table $table Nombre de la tabla

Devolver el último id insertado en la tabla $table

string function Utils::prepareURI($uriToPrepare) [línea 83]

Parámetros de la función:

$uriToPrepare $uriToPrepare URI para preparar.

Preparar una URI para que tenga el prefijo http:// y el render del atributo href sea correcto

en los enlaces que se utilice.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

97

void function Utils::printHelpButton($title, $text) [línea 126]

Parámetros de la función:

$title $title Título del botón.

$text $text Texto que va a aparecer como ayuda.

Imprimir un botón de ayuda estándar Moodle.

void function Utils::sanitizeString($string) [línea 116]

Parámetros de la función:

$string $string Cadena a procesar.

Procesar una cadena para que no pueda ser usada para ataques de inyección SQL.

void function Utils::setFormActionType($action, $_get, $_post, $getKey, $postKey, $_GET,

$_POST) [línea 53]

Parámetros de la función:

$_get $_GET

$_post $_POST

$action $action String que se debe pasar por referencia para setear la acción

$getKey $getKey Key del id de la tupla (page.php?keyid=x)

$postKey $postKey Key del id de la tupla (< input name="postKey" type="hidden"

value="< ? php echo tupla->id;? >">)

$_get

$_post

string function Utils::validateIntParamOnGET($intToValidate) [línea 99]

Parámetros de la función:

$intToValidate $intToValidate Parámetro a validar

Función para validar parámetros GET como enteros, de preferencia positivos. Esta función

devolverá el valor entero para cualquier valor positivo o negativo, y -1 para valores que no

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

98

sean números enteros válidos.

void function Utils::verifyRequiredDataForDisplayExists($tablerow, $getPostParams, $keyId,

$table, $queryField,

[$orderBy = ''], $_GET) [línea 26]

Parámetros de la función:

$getPostParams $_GET o $_POST, sea cual tenga el id de los datos buscados.

$tablerow $tablerow Fila de datos que debe pasarse por referencia. Si los dato con id

$keyId

existe en la tabla $table, se almacenarán en esta variable.

$keyId $keyId key de $getPostParams en donde está el id solicitado.

$table $table Tabla en la que se buscan los datos

$queryField $queryField Nombre del campo id de la tabla

$orderBy $orderBy Ordenar $tablerow de acuerdo a este parámetro.

$getPostParams

Verificar que los datos que se van a mostrar existan. Si no existen para

mostrar/editar/borrar la ejecución del script actual se detiene con una llamada al método

exit().

Paquete admin-recom.blckadminrecom

Clase block_blckadminrecom

[línea 8]

Bloque que facilita el ingreso a la interfaz de administración de recomendaciones desde

Moodle.

Paquete admin-recom.blckadminrecom

Autor: Juan Pablo Angamarca G.

array function block_blckadminrecom::aplicable_formats() [línea 65]

Función que devuelve los formatos aplicables al bloque.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

99

string function block_blckadminrecom::get_content() [línea 23]

Función que define el contenido del bloque. Incluye procesos de autenticación.

void function block_blckadminrecom::init() [línea 13]

Función de inicialización del bloque Moodle.

boolean function block_blckadminrecom::instance_allow_config() [línea 57]

Establecer si el bloque puede ser configurado o no.

boolean function block_blckadminrecom::instance_allow_multiple() [línea 49]

Establecer si pueden o no existir múltiples instancias del bloque.

Clase DataUtils

[línea 14]

Paquete admin-recom.classesdb

Autor: Juan Pablo Angamarca G.

boolean function DataUtils::autoCommitFalse() [línea 232]

MySQL SET AUTOCOMMIT = 0

boolean function DataUtils::beginTransaction() [línea 241]

MySQL START TRANSACTION WITH CONSISTENT SNAPSHOT Las tablas deben

tener motor InnoDB.

boolean function DataUtils::commit() [línea 249]

SQL COMMIT

void function DataUtils::delete($tablename, $pkname, $idDelete, $rowsDeleted) [línea 211]

Parámetros de la función:

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

100

$tablename $tablename Nombre de la tabla (debe pasarse completo, con el prefijo

incluido)

$pkname $pkname Nombre del campo pk

$idDelete $idDelete id de la tupla a borrar

$rowsDeleted $rowsDeleted Pasar por referencia para obtener el número de filas borradas

[referirse a la documentación de la función mysql_affected_rows para ver las

particularidades

de este valor de retorno]. Pasar NULL si no se necesita ese valor.

Borrar una tupla de una tabla de la base de datos.

mixed function DataUtils::getCondicion($recid, $codigoAtributo) [línea 268]

Parámetros de la función:

$recid $recid Id de la recomendación

$codigoAtributo $codigoAtributo Código del atributo del modelo de usuario.

Obtener una condición de una recomendación.

mixed function DataUtils::getCondicionTipoRec($trecid, $codigoAtributo) [línea 284]

Parámetros de la función:

$trecid $trecid Id del tipo de recomendación

$codigoAtributo $codigoAtributo Código del atributo del modelo de usuario.

Obtener una condición de un tipo de recomendación.

void function DataUtils::insert($entity, $fulltablename, [$idinserted = null]) [línea 67]

Parámetros de la función:

$entity $entity Objeto de datos. La clave primaria debe ser siempre el primer campo del

objeto.

Sus campos deben tener exactamente los mismos nombres, case y número que columnas

que

la tabla de la base de datos

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

101

$tablename $fulltablename Nombre de la tabla (debe pasarse completo, con el prefijo

incluido)

$idinserted $idinserted Pasar por referencia si se necesita conocer el último id insertado,

pasar null si no se lo necesita.

Insertar una nueva tupla en una tabla en la base de datos.

boolean function DataUtils::rollback() [línea 257]

SQL ROLLBACK

void function DataUtils::sqlIUString($field) [línea 30]

Parámetros de la función:

$field $field

SQL INSERT o UPDATE

void function DataUtils::update($entity, $tablename, $rowsAffected) [línea 110]

Parámetros de la función:

$entity $entity Objeto de datos. La clave primaria debe ser siempre el primer campo del

objeto.

Sus campos deben tener exactamente los mismos nombres, case y número que columnas

que

la tabla de la base de datos

$tablename $tablename Nombre de la tabla (debe pasarse completo, con el prefijo

incluido)

$rowsAffected $rowsAffected Pasar por referencia para saber el número de columnas

modificadas: el valor de que devuelve la función mysql_affected_rows() [referirse a la

documentación de esta función para ver las particularidades de este valor de retorno].

Pasar NULL si no se necesita ese valor.

Actualizar una tupla de una tabla en la base de datos.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

102

boolean function DataUtils::updateFields($entity, $tablename, $fieldlist, $rowsAffected) [línea

161]

Parámetros de la función:

$dataobject $entity Objeto de datos. La clave primaria debe ser siempre el primer campo

del objeto. Sus campos deben tener exactamente los mismos nombres, case y número que

columnas que la tabla de la base de datos

$tableName $tablename Nombre completo de la tabla

$fieldlist $fieldlist Lista de campos, separados por comas

$rowsaffected $rowsAffected Pasar por referencia si se necesita, caso contrario pasar

null, condiciones de retorno son las de mysql_affected_rows

Actualizar ciertos campos de una tupla de una tabla en la base de datos.

Paquete admin-recom.webservice

server.php

Definición de las operaciones del servicio Web.

Paquete admin-recom.webservice

Autor: Juan Pablo Angamarca G.

string function GetCategoria($catid) [línea 122]

Parámetros de la función:

$catid $catid Id de la categoría.

Operación del servicio Web que devuelve una categoría

de recomendaciones.

string function GetCategorias() [línea 139]

Operación del servicio Web que devuelve todas las categorías

existentes dentro de la base de datos del sistema recomendador.

string function GetCategoriasAsociadasATipoRecomendacion($trecid) [línea 91]

Parámetros de la función:

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

103

$trecid $trecid Id del tipo de recomendación.

Operación del servicio Web que devuelve las categorías asociadas a un tipo de

recomendación.

string function GetCondicionDeTipoRec($trecid, $codigoAtributo) [línea 163]

Parámetros de la función:

$trecid $trecid Id del tipo de recomendación.

$codigoAtributo $codigoAtributo Código correspondiente al atributo de modelo de usuario.

Obtener una condición de un tipo de recomendación.

string function GetRestricVencDeTipoRecomendacion($trecid) [línea 73]

Parámetros de la función:

$trecid $trecid Id del tipo de recomendación.

Operación del servicio Web que devuelve la tupla de restricciones de vencimiento de

un tipo de recomendación.

string function GetTipoRecomendacion($trecid) [línea 55]

Parámetros de la función:

$trecid $trecid Id del tipo de recomendación.

Operación del servicio Web que devuelve un tipo de recomendación.

string function GetTiposRecomendacion() [línea 32]

Operación del servicio Web que devuelve los tipos de recomendación existentes en la base

de datos del sistema recomendador.

string function GetValoresEstereotiposAtribModeloUsuario($atributo) [línea 186]

Parámetros de la función:

$atributo $atributo Nombre del atributo

Operación del servicio Web que recupera los estereotipos de valores para los atributos del

modelo de usuario.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

104

7.9 Definición WSDL del servicio Web implementado

WSDL es el lenguaje de descripción de servicios Web basados en SOAP, por lo que para

el consumo de dichos servicios es imprescindible contar con la definición WSDL de los mismos.

A continuación se presenta dicha definición para el servicio creado para su consumo por parte de

la interfaz de administración de recomendaciones y de otras aplicaciones.

<definitions

targetNamespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice">

<types>

<xsd:schema

targetNamespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice">

<xsd:import

namespace="http://schemas.xmlsoap.org/soap/encoding/" />

<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />

</xsd:schema>

</types>

<message name="GetTiposRecomendacionRequest" />

<message name="GetTiposRecomendacionResponse">

<part name="return" type="xsd:string" />

</message>

<message name="GetTipoRecomendacionRequest">

<part name="trecid" type="xsd:string" />

</message>

<message name="GetTipoRecomendacionResponse">

<part name="return" type="xsd:string" />

</message>

<message name="GetRestricVencDeTipoRecomendacionRequest">

<part name="trecid" type="xsd:string" />

</message>

<message name="GetRestricVencDeTipoRecomendacionResponse">

<part name="return" type="xsd:string" />

</message>

<message name="GetCategoriasAsociadasATipoRecomendacionRequest">

<part name="trecid" type="xsd:string" />

</message>

<message name="GetCategoriasAsociadasATipoRecomendacionResponse">

<part name="return" type="xsd:string" />

</message>

<message name="GetCategoriaRequest">

<part name="catid" type="xsd:string" />

</message>

<message name="GetCategoriaResponse">

<part name="return" type="xsd:string" />

</message>

<message name="GetCategoriasRequest" />

<message name="GetCategoriasResponse">

<part name="return" type="xsd:string" />

</message>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

105

<message name="GetCondicionDeTipoRecRequest">

<part name="trecid" type="xsd:string" />

<part name="$codigoAtributo" type="xsd:string" />

</message>

<message name="GetCondicionDeTipoRecResponse">

<part name="return" type="xsd:string" />

</message>

<message name="GetValoresEstereotiposAtribModeloUsuarioRequest">

<part name="atributo" type="xsd:string" />

</message>

<message name="GetValoresEstereotiposAtribModeloUsuarioResponse">

<part name="return" type="xsd:string" />

</message>

<portType name="AdminRecomWebServicePortType">

<operation name="GetTiposRecomendacion">

<input message="tns:GetTiposRecomendacionRequest" />

<output message="tns:GetTiposRecomendacionResponse" />

</operation>

<operation name="GetTipoRecomendacion">

<input message="tns:GetTipoRecomendacionRequest" />

<output message="tns:GetTipoRecomendacionResponse" />

</operation>

<operation name="GetRestricVencDeTipoRecomendacion">

<input

message="tns:GetRestricVencDeTipoRecomendacionRequest" />

<output

message="tns:GetRestricVencDeTipoRecomendacionResponse" />

</operation>

<operation name="GetCategoriasAsociadasATipoRecomendacion">

<input

message="tns:GetCategoriasAsociadasATipoRecomendacionRequest" />

<output

message="tns:GetCategoriasAsociadasATipoRecomendacionResponse" />

</operation>

<operation name="GetCategoria">

<input message="tns:GetCategoriaRequest" />

<output message="tns:GetCategoriaResponse" />

</operation>

<operation name="GetCategorias">

<input message="tns:GetCategoriasRequest" />

<output message="tns:GetCategoriasResponse" />

</operation>

<operation name="GetCondicionDeTipoRec">

<input message="tns:GetCondicionDeTipoRecRequest" />

<output message="tns:GetCondicionDeTipoRecResponse" />

</operation>

<operation name="GetValoresEstereotiposAtribModeloUsuario">

<input

message="tns:GetValoresEstereotiposAtribModeloUsuarioRequest" />

<output

message="tns:GetValoresEstereotiposAtribModeloUsuarioResponse" />

</operation>

</portType>

<binding name="AdminRecomWebServiceBinding"

type="tns:AdminRecomWebServicePortType">

<soap:binding style="rpc"

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

106

transport="http://schemas.xmlsoap.org/soap/http" />

<operation name="GetTiposRecomendacion">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetTiposRecomendacion"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

<operation name="GetTipoRecomendacion">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetTipoRecomendacion"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

<operation name="GetRestricVencDeTipoRecomendacion">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetRestricVencDeTipoRecomendacion"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

107

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

<operation name="GetCategoriasAsociadasATipoRecomendacion">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetCategoriasAsociadasATipoRecomendacion"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

<operation name="GetCategoria">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetCategoria"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

<operation name="GetCategorias">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetCategorias"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

108

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

<operation name="GetCondicionDeTipoRec">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetCondicionDeTipoRec"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

<operation name="GetValoresEstereotiposAtribModeloUsuario">

<soap:operation

soapAction="http://localhost/eva19/admin-

recom/webservice/server.php/GetValoresEstereotiposAtribModeloUsuario"

style="rpc" />

<input>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded"

namespace="http://localhost/eva19/admin-

recom/webservice/adrecwebservice"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

</binding>

<service name="AdminRecomWebService">

<port name="AdminRecomWebServicePort"

binding="tns:AdminRecomWebServiceBinding">

<soap:address

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

109

location="http://localhost/eva19/admin-

recom/webservice/server.php" />

</port>

</service>

</definitions>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

110

7.10 Implementación del servicio Web

En este anexo se presenta la implementación del servicio Web en el lenguaje PHP,

haciendo uso de la librería de servicios Web NuSOAP.

<?php

require ('../utils.php');

require_once ("lib/nusoap.php");

require_once('../../config.php');

require_once('../../lib/dmllib.php');

$ns = "$CFG->wwwroot/admin-recom/webservice/adrecwebservice";

$server = new soap_server ();

$server->configureWSDL ( 'AdminRecomWebService', $ns );

$server->wsdl->schemaTargetNamespace = $ns;

$server->register ( 'GetTiposRecomendacion', array (), array ('return' =>

'xsd:string' ), $ns );

$server->register ( 'GetTipoRecomendacion', array ('trecid' => 'xsd:string' ),

array ('return' => 'xsd:string' ), $ns );

$server->register ( 'GetRestricVencDeTipoRecomendacion', array ('trecid' =>

'xsd:string' ), array ('return' => 'xsd:string' ), $ns );

$server->register ( 'GetCategoriasAsociadasATipoRecomendacion', array

('trecid' => 'xsd:string' ), array ('return' => 'xsd:string' ), $ns );

$server->register ( 'GetCategoria', array ('catid' => 'xsd:string' ), array

('return' => 'xsd:string' ), $ns );

$server->register ( 'GetCategorias', array (), array ('return' => 'xsd:string'

), $ns );

$server->register ( 'GetCondicionDeTipoRec', array ('trecid' => 'xsd:string',

'$codigoAtributo' => 'xsd:string' ), array ('return' => 'xsd:string' ), $ns );

$server->register ( 'GetValoresEstereotiposAtribModeloUsuario', array

('atributo' => 'xsd:string' ), array ('return' => 'xsd:string' ), $ns );

function GetTiposRecomendacion() {

$queryTiposRecomendaciones = get_records ( 'sr_tipo_recomendacion', '',

'', 'trc_nombre_tipo_rec' );

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><tipos-

recomendacion>';

foreach ( $queryTiposRecomendaciones as $idTipoRec => $filaTipoRec ) {

$xmlreturn = $xmlreturn . '<tipo-recomendacion>';

foreach ( $filaTipoRec as $arraykey => $arrayvalue ) {

$xmlreturn = $xmlreturn .

"<$arraykey>$arrayvalue</$arraykey>";

}

$xmlreturn = $xmlreturn . '</tipo-recomendacion>';

}

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

111

$xmlreturn = $xmlreturn . '</tipos-recomendacion>';

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

function GetTipoRecomendacion($trecid) {

$tiporec = get_record ( 'sr_tipo_recomendacion', 'trc_id', $trecid );

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><tipo-

recomendacion>';

foreach ($tiporec as $fieldname => $fieldvalue) {

$xmlreturn = $xmlreturn . "<$fieldname>$fieldvalue</$fieldname>";

}

$xmlreturn = $xmlreturn . '</tipo-recomendacion>';

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

function GetRestricVencDeTipoRecomendacion($trecid) {

$rvenc = get_record ( 'sr_restricciones_vencimiento', 'trc_id', $trecid

);

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><restriccion-

vencimiento>';

foreach ($rvenc as $fieldname => $fieldvalue) {

$xmlreturn = $xmlreturn . "<$fieldname>$fieldvalue</$fieldname>";

}

$xmlreturn = $xmlreturn . '</restriccion-vencimiento>';

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

function GetCategoriasAsociadasATipoRecomendacion($trecid) {

$utils = new Utils ();

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><categorias>';

if (($utils->validateIntParamOnGET ( $trecid )) != - 1) {

$sql = "SELECT cat.cat_id, cat.cat_nombre_categoria FROM

(mdl_sr_categoria cat

INNER JOIN mdl_sr_categ_tipo_rec ctr ON (cat.cat_id =

ctr.cat_id))

INNER JOIN mdl_sr_tipo_recomendacion trec ON (trec.trc_id =

ctr.trc_id)

WHERE (ctr.trc_id = {$trecid}) ORDER BY

cat.cat_nombre_categoria";

$queryCtgs = get_records_sql ( $sql );

foreach ( $queryCtgs as $idCat => $filaCat ) {

$xmlreturn = $xmlreturn . '<categoria>';

foreach ($filaCat as $fieldname => $fieldvalue) {

$xmlreturn = $xmlreturn .

"<$fieldname>$fieldvalue</$fieldname>";

}

$xmlreturn = $xmlreturn . '</categoria>';

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

112

}

}

$xmlreturn = $xmlreturn . '</categorias>';

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

function GetCategoria($catid) {

$categoria = get_record ( 'sr_categoria', 'cat_id', $catid );

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><categoria>';

foreach ( $categoria as $fieldname => $fieldvalue ) {

$xmlreturn = $xmlreturn . "<$fieldname>$fieldvalue</$fieldname>";

}

$xmlreturn = $xmlreturn . '</categoria>';

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

function GetCategorias() {

$queryCategorias = get_records ( 'sr_categoria', '', '',

'cat_nombre_categoria' );

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><categorias>';

foreach ( $queryCategorias as $idCat => $filaCat ) {

$xmlreturn = $xmlreturn . '<categoria>';

foreach ( $filaCat as $fieldname => $fieldvalue ) {

$xmlreturn = $xmlreturn .

"<$fieldname>$fieldvalue</$fieldname>";

}

$xmlreturn = $xmlreturn . '</categoria>';

}

$xmlreturn = $xmlreturn . '</categorias>';

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

function GetCondicionDeTipoRec($trecid, $codigoAtributo) {

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><condicion>';

$sql = "SELECT srcon.*

FROM mdl_sr_condiciones srcon INNER JOIN

mdl_mu_atributos_modelo_usuario amu

ON (srcon.amu_id_atributo_modelo_usuario =

amu.amu_id_atributo_modelo_usuario)

WHERE (srcon.trc_id = $trecid) AND (amu.amu_codigo =

'$codigoAtributo')";

$condicion = get_record_sql ( $sql );

foreach ($condicion as $fieldname => $fieldvalue) {

$xmlreturn = $xmlreturn . "<$fieldname>$fieldvalue</$fieldname>";

}

$xmlreturn = $xmlreturn . '</condicion>';

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

113

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

function GetValoresEstereotiposAtribModeloUsuario($atributo) {

$records = get_records('mu_valores_estereotipos', 'ves_atributo_mu',

$atributo);

$xmlreturn = '<?xml version="1.0" encoding="utf-8"?><estereotipos>';

foreach ($records as $idxrow => $row) {

$xmlreturn = $xmlreturn . '<estereotipo>';

foreach ($row as $fieldname => $fieldvalue) {

$xmlreturn = $xmlreturn .

"<$fieldname>$fieldvalue</$fieldname>";

}

$xmlreturn = $xmlreturn . '</estereotipo>';

}

$xmlreturn = $xmlreturn . '</estereotipos>';

return new soapval ( 'return', 'xsd:string', $xmlreturn );

}

$server->service ( $HTTP_RAW_POST_DATA );

?>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

114

7.11 Bloque Moodle

Código fuente del bloque desarrollado que provee integración de la interfaz de

administración de recomendaciones con el Entorno Virtual de Aprendizaje.

<?php

class block_blckadminrecom extends block_base {

function init() {

$this->title = 'Administración de recomendaciones';

$this->version = 2010082800;

}

function get_content() {

global $CFG, $COURSE, $USER;

if ($this->content != NULL) {

return $this->content;

}

$this->content = new StdClass ();

if (record_exists ( 'role_assignments', 'roleid', 24, 'userid',

$USER->id )) {

$this->content = '';

$this->content->text = '<a style="font-size:10pt" href="' .

$CFG->wwwroot . '/admin-recom/" target="_blank">Administración de

recomendaciones</a>';

}

return $this->content;

}

function instance_allow_multiple() {

return true;

}

function instance_allow_config() {

return false;

}

function aplicable_formats () {

return array ('all' => true, 'course-view' => true, 'mod' => true,

'my' => true);

}

}

?>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

115

7.12 Código fuente (vistas principales)

Esta sección contiene el código fuente de las principales vistas desarrolladas dentro de la

aplicación, las cuales consisten en código PHP, HTML y Javascript.

7.12.1 edit-type-rec.php

Archivo de código fuente que contiene el código para editar tipos de recomendación.

<?php

// Variables, requires y sets

require ('./require-login.php');

require ('./utils.php');

require ('./classesdb/data-utils.php');

require ('./presentation-utils.php');

require ('./webservice/lib/nusoap.php');

global $CFG, $MOODLE_MODULES, $ESCALA, $ESTILOS_APRENDIZAJE, $INFO_TABLES;

$utils = new Utils ();

// Setear la acción actual

$action = '';

$utils->setFormActionType ( &$action, $_GET, $_POST, "trecid", "txtTrecId" );

// Variables de validación

$noNombreTipo = false;

$noTextoRecomendacion = false;

$noTitulo = false;

$noCategorias = false;

$noRestriccionVencimiento = false;

$vecesNoEsUnNumero = false;

$fechaNoValida = false;

// Variables de datos

$tRecEditActual = new TipoRecomendacion ();

$rVenc = new RestriccionVencimiento ();

$condEstApr = new Condicion ();

$condIntCur = new Condicion ();

$condIntRec = new Condicion ();

$condNivInt = new Condicion ();

$condZonGeo = new Condicion ();

$condEntUsu = new Condicion ();

$fechaExpiracionArray = array ();

$categoriasAsociadas = array ();

// Variables utilitarias

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

116

$showErrorSave = false;

$showWarningIncompleteOrNotValidData = false;

$dataUtils = new DataUtils ();

$presUtils = new PresentationUtils ();

if ($_SERVER ["REQUEST_METHOD"] == "POST") {

if (array_key_exists ( "cancelar", $_POST )) {

header ( 'Location: list-type-rec.php' );

exit ();

} else {

// En autopost cargar los valores en el form

$tRecEditActual->trc_id = intval ( $_POST ["txtTrecId"] );

$tRecEditActual->rec_enlace = substr ( $utils->sanitizeString (

$_POST ["enlaceWeb"] ), 0, 500 );

if ($tRecEditActual->rec_enlace != '') {

$tRecEditActual->rec_enlace = $utils->prepareURI (

$tRecEditActual->rec_enlace );

}

$tRecEditActual->rec_explicacion = substr ( $utils->sanitizeString

( $_POST ["explicacionRec"] ), 0, 500 );

$tRecEditActual->trc_fecha_creacion = $_POST ["fechaCreacion"];

$tRecEditActual->rec_texto = substr ( $utils->sanitizeString (

$_POST ["textoRec"] ), 0, 500 );

$tRecEditActual->rec_titulo = substr ( $utils->sanitizeString (

$_POST ["tituloRec"] ), 0, 100 );

$tRecEditActual->tec_id = 1;

$tRecEditActual->trc_descripcion_tipo_rec = substr ( $utils-

>sanitizeString ( $_POST ["descTipo"] ), 0, 500 );

$tRecEditActual->trc_nombre_tipo_rec = substr ( $utils-

>sanitizeString ( $_POST ["nombreTipo"] ), 0, 100 );

$tRecEditActual->trc_tipo_recurso = $_POST ["moduloMoodle"];

$rVenc->rvc_id = intval ( $_POST ["txtRvcId"] );

$rVenc->rvc_fecha_expiracion = $_POST ["fechaVencimiento"];

$rVenc->rvc_veces_a_mostrar = $_POST ["venceEnNVeces"];

$rVenc->trc_id = intval ( $_POST ["txtTrecId"] );

$condEstApr->con_valor_condicion = $_POST ['estiloAprendizaje'];

$condEstApr->con_id = $_POST ['idCondEstApr'];

$condIntCur->con_valor_condicion = $_POST ['nivelInteresCurso'];

$condIntCur->con_id = $_POST ['idCondIntCur'];

$condIntRec->con_valor_condicion = $_POST

['nivelInteresRecursos'];

$condIntRec->con_id = $_POST ['idCondIntRec'];

$condNivInt->con_valor_condicion = $_POST ['nivelInteraccion'];

$condNivInt->con_id = $_POST ['idCondNivInt'];

$condZonGeo->con_valor_condicion = $_POST ['zonGeografica'];

$condZonGeo->con_id = $_POST ['idCondZonGeo'];

$condEntUsu->con_valor_condicion = $_POST ['entUsuario'];

$condEntUsu->con_id = $_POST ['idCondEntUsu'];

foreach ( $_POST ["catsAsociadas"] as $key => $value ) {

$categoriasAsociadas [$value] = $value;

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

117

}

// Verificar los campos requeridos, validación de datos

$noNombreTipo = (empty ( $tRecEditActual->trc_nombre_tipo_rec )) ?

true : false;

$noCategorias = (count ( $_POST ['catsAsociadas'] ) < 1) ? true :

false;

$noTextoRecomendacion = (empty ( $tRecEditActual->rec_texto )) ?

true : false;

$noTitulo = (empty ( $tRecEditActual->rec_titulo )) ? true :

false;

$fechaExpiracionArray = explode ( "-", $rVenc-

>rvc_fecha_expiracion );

$fechaNoValida = ((( int ) $fechaExpiracionArray [0]) == 0) || (((

int ) $fechaExpiracionArray [1]) == 0) || ((( int ) $fechaExpiracionArray [2])

== 0);

$vecesNoEsUnNumero = ((( int ) $rVenc->rvc_veces_a_mostrar) == 0)

? true : false;

$noRestriccionVencimiento = $fechaNoValida && $vecesNoEsUnNumero;

if (! $noNombreTipo && ! $noCategorias && ! $noTitulo && !

$noTextoRecomendacion && ! $noRestriccionVencimiento) {

if ($fechaNoValida) {

$rVenc->rvc_fecha_expiracion = NULL;

}

// Todos los requeridos están completos y los valores son

válidos, guardar.

if ($action == EDIT) {

//Al editar, comprobación de preexistencia de

condiciones

$condEstAprPresente = ( bool ) $_POST

["condEstAprPresente"];

$condIntCurPresente = ( bool ) $_POST

["condIntCurPresente"];

$condIntRecPresente = ( bool ) $_POST

["condIntRecPresente"];

$condNivIntPresente = ( bool ) $_POST

["condNivIntPresente"];

$condZonGeoPresente = ( bool ) $_POST

["condZonGeoPresente"];

$condEntUsuPresente = ( bool ) $_POST

["condEntUsuPresente"];

$noRollback = true;

$noRollback = $noRollback && ( bool ) ($dataUtils-

>beginTransaction ());

$noRollback = $noRollback && ( bool ) ($dataUtils-

>autoCommitFalse ());

// Actualizar tipo de recomendación

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

118

$noRollback = $noRollback && ( bool ) ($dataUtils-

>update ( $tRecEditActual, 'mdl_' . $INFO_TABLES ["trecid"] ["table"], NULL

));

// Actualizar restricciones de vencimiento

$noRollback = $noRollback && ( bool ) ($dataUtils-

>update ( $rVenc, 'mdl_' . $INFO_TABLES ["rvid"] ["table"], NULL ));

// Actualizar condiciones

function updateCondicion($condicionPresente,

$condicion, $codigoAtributoModeloUsuario, $trcId, $noRollback) {

$dataUtils = new DataUtils ();

if (! $condicionPresente && (strval (

$condicion->con_valor_condicion ) != '0')) {

$condicion->trc_id = $trcId;

$queryAtribModUs = get_record (

'mu_atributos_modelo_usuario', 'amu_codigo', $codigoAtributoModeloUsuario );

if ((( bool ) $queryAtribModUs) == false)

{

$noRollback = false;

}

$condicion->amu_id_atributo_modelo_usuario

= intval ( $queryAtribModUs->amu_id_atributo_modelo_usuario );

$noRollback = $noRollback && ( bool )

($dataUtils->insert ( $condicion, 'mdl_sr_condiciones', NULL ));

} else if ($condicionPresente && (strval (

$condicion->con_valor_condicion ) == '0')) {

$noRollback = $noRollback && ( bool )

($dataUtils->delete ( 'mdl_sr_condiciones', 'con_id', $condicion->con_id, NULL

));

} else if ($condicionPresente && (strval (

$condicion->con_valor_condicion ) != '0')) {

$noRollback = $noRollback && ( bool )

($dataUtils->updateFields ( $condicion, 'mdl_sr_condiciones',

'con_valor_condicion', NULL ));

}

}

updateCondicion ( $condEntUsuPresente, $condEntUsu,

'ENT_USU', $tRecEditActual->trc_id, &$noRollback );

updateCondicion ( $condEstAprPresente, $condEstApr,

'EST_APR', $tRecEditActual->trc_id, &$noRollback );

updateCondicion ( $condIntCurPresente, $condIntCur,

'INT_CUR', $tRecEditActual->trc_id, &$noRollback );

updateCondicion ( $condIntRecPresente, $condIntRec,

'INT_REC', $tRecEditActual->trc_id, &$noRollback );

updateCondicion ( $condNivIntPresente, $condNivInt,

'NIV_INT', $tRecEditActual->trc_id, &$noRollback );

updateCondicion ( $condZonGeoPresente, $condZonGeo,

'ZON_GEO', $tRecEditActual->trc_id, &$noRollback );

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

119

$queryCatsActuales = get_records (

'sr_categ_tipo_rec', 'trc_id', $tRecEditActual->trc_id );

$catsActuales = array ();

foreach ( $queryCatsActuales as $ctrid => $row ) {

$catsActuales [$ctrid] = $row->cat_id;

}

// Buscar en el array de categorías asociadas que se

han editado. Si alguna

// de ellas no está en las categorías originales,

agregarla.

foreach ( $categoriasAsociadas as $key => $catId ) {

if (! array_search ( $catId, $catsActuales )) {

$catTipo = new CategTipoRec ();

$catTipo->cat_id = $catId;

$catTipo->trc_id = $tRecEditActual-

>trc_id;

$noRollback = $noRollback && (( bool )

$dataUtils->insert ( $catTipo, 'mdl_sr_categ_tipo_rec', NULL ));

}

}

// Buscar en el array de categorías originales. Si

alguna de ellas no está

// en las categorías editadas, borrarla.

foreach ( $catsActuales as $ctrid => $catId ) {

if (! array_search ( $catId,

$categoriasAsociadas )) {

$noRollback = $noRollback && (( bool )

$dataUtils->delete ( 'mdl_sr_categ_tipo_rec', 'ctr_id', $ctrid, NULL ));

}

}

if ($noRollback == false) {

$dataUtils->rollback ();

$showErrorSave = true;

} else {

if ($dataUtils->commit () == false) {

$showErrorSave = true;

} else {

header ( "Location: view-type-

rec.php?trecid=$tRecEditActual->trc_id&edited=y" );

exit ();

}

}

} else if ($action == CREATE) {

$noRollback = true;

$noRollback = $noRollback && ($dataUtils-

>beginTransaction ());

$noRollback = $noRollback && ($dataUtils-

>autoCommitFalse ());

$newTrcId = 0;

// Insert tipo de recomendación

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

120

$noRollback = $noRollback && ($dataUtils->insert (

$tRecEditActual, 'mdl_' . $INFO_TABLES ["trecid"] ["table"], &$newTrcId ));

// Insert restricciones de vencimiento

if (empty ( $rVenc->rvc_veces_a_mostrar )) {

$rVenc->rvc_veces_a_mostrar = NULL;

}

if (empty ( $rVenc->rvc_fecha_expiracion )) {

$rVenc->rvc_fecha_expiracion = NULL;

}

$rVenc->trc_id = $newTrcId;

$noRollback = $noRollback && ($dataUtils->insert (

$rVenc, 'mdl_' . $INFO_TABLES ["rvid"] ["table"], NULL ));

// Insertar asociaciones tipo-categoría

foreach ( $categoriasAsociadas as $key => $idCat ) {

$catTipoRec = new CategTipoRec ();

$catTipoRec->cat_id = $idCat;

$catTipoRec->trc_id = $newTrcId;

$noRollback = $noRollback && ($dataUtils->insert

( $catTipoRec, 'mdl_sr_categ_tipo_rec', NULL ));

}

// Insertar condiciones

function insertarCondicionTipoRec($condicion,

$codigoAtributoModeloUsuario, $trcId, $noRollback) {

if (strval ( $condicion->con_valor_condicion )

!= '0') {

$condicion->trc_id = $trcId;

$queryAtribModUs = get_record (

'mu_atributos_modelo_usuario', 'amu_codigo', $codigoAtributoModeloUsuario );

if ($queryAtribModUs == false) {

$noRollback = false;

return;

}

$dataUtils = new DataUtils ();

$condicion->amu_id_atributo_modelo_usuario

= intval ( $queryAtribModUs->amu_id_atributo_modelo_usuario );

$noRollback = $noRollback && ( bool )

($dataUtils->insert ( $condicion, 'mdl_sr_condiciones', NULL ));

}

}

insertarCondicionTipoRec ( $condEntUsu, 'ENT_USU',

$newTrcId, &$noRollback );

insertarCondicionTipoRec ( $condEstApr, 'EST_APR',

$newTrcId, &$noRollback );

insertarCondicionTipoRec ( $condIntCur, 'INT_CUR',

$newTrcId, &$noRollback );

insertarCondicionTipoRec ( $condIntRec, 'INT_REC',

$newTrcId, &$noRollback );

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

121

insertarCondicionTipoRec ( $condNivInt, 'NIV_INT',

$newTrcId, &$noRollback );

insertarCondicionTipoRec ( $condZonGeo, 'ZON_GEO',

$newTrcId, &$noRollback );

if ($noRollback == false) {

$dataUtils->rollback ();

$showErrorSave = true;

} else {

if ($dataUtils->commit () == false) {

$showErrorSave = true;

} else {

header ( "Location: view-type-

rec.php?trecid=$newTrcId&created=y" );

exit ();

}

}

}

} else {

$showWarningIncompleteOrNotValidData = true;

}

}

}

if ($_SERVER ["REQUEST_METHOD"] == "GET") {

if (isset ( $_GET ["trecid"] ) && (($utils->validateIntParamOnGET (

$_GET ["trecid"] )) != - 1)) {

$id = $_GET ["trecid"];

// Cargar datos para edición.

// Cargar tipo de recomendación

$queryTrec = get_record ( 'sr_tipo_recomendacion', 'trc_id', $id

);

$tRecEditActual->rec_enlace = $queryTrec->rec_enlace;

$tRecEditActual->rec_explicacion = $queryTrec->rec_explicacion;

$tRecEditActual->trc_fecha_creacion = $queryTrec-

>trc_fecha_creacion;

$tRecEditActual->rec_texto = $queryTrec->rec_texto;

$tRecEditActual->rec_titulo = $queryTrec->rec_titulo;

$tRecEditActual->tec_id = $queryTrec->tec_id;

$tRecEditActual->trc_descripcion_tipo_rec = $queryTrec-

>trc_descripcion_tipo_rec;

$tRecEditActual->trc_id = $queryTrec->trc_id;

$tRecEditActual->trc_nombre_tipo_rec = $queryTrec-

>trc_nombre_tipo_rec;

$tRecEditActual->trc_tipo_recurso = $queryTrec->trc_tipo_recurso;

// Cargar restricciones de vencimiento

$queryRVenc = get_record ( 'sr_restricciones_vencimiento',

'trc_id', $tRecEditActual->trc_id );

$rVenc->rec_id = NULL;

$rVenc->rvc_fecha_expiracion = $queryRVenc->rvc_fecha_expiracion;

$rVenc->rvc_id = $queryRVenc->rvc_id;

$rVenc->rvc_veces_a_mostrar = $queryRVenc->rvc_veces_a_mostrar;

$rVenc->trc_id = $queryRVenc->trc_id;

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

122

$fechaExpiracionArray = explode ( '-', $rVenc-

>rvc_fecha_expiracion );

// Cargar condiciones

$condEstApr = $dataUtils->getCondicionTipoRec ( $tRecEditActual-

>trc_id, 'EST_APR' );

$condEstAprPresente = ( bool ) $condEstApr;

$condIntCur = $dataUtils->getCondicionTipoRec ( $tRecEditActual-

>trc_id, 'INT_CUR' );

$condIntCurPresente = ( bool ) $condIntCur;

$condIntRec = $dataUtils->getCondicionTipoRec ( $tRecEditActual-

>trc_id, 'INT_REC' );

$condIntRecPresente = ( bool ) $condIntRec;

$condNivInt = $dataUtils->getCondicionTipoRec ( $tRecEditActual-

>trc_id, 'NIV_INT' );

$condNivIntPresente = ( bool ) $condNivInt;

$condZonGeo = $dataUtils->getCondicionTipoRec ( $tRecEditActual-

>trc_id, 'ZON_GEO' );

$condZonGeoPresente = ( bool ) $condZonGeo;

$condEntUsu = $dataUtils->getCondicionTipoRec ( $tRecEditActual-

>trc_id, 'ENT_USU' );

$condEntUsuPresente = ( bool ) $condEntUsu;

$sql = "SELECT cat_id from mdl_sr_categ_tipo_rec where trc_id =

$tRecEditActual->trc_id";

$queryCtgs = get_records_sql ( $sql );

foreach ( $queryCtgs as $key => $idCatRow ) {

$categoriasAsociadas [$idCatRow->cat_id] = $idCatRow-

>cat_id; //cat_nombre_categoria;

}

}

}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<link rel=StyleSheet href="./css/styles.css" type="text/css" />

<script language="javascript" src="./js/utils.js"

type="text/javascript"></script>

<title> <?php

if ($action == EDIT) {

echo 'Editar tipo de recomendación';

} else {

echo 'Crear tipo de recomendación';

}

?> </title>

</head>

<body>

<?php

include ('header.php')?>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

123

<table width="100%" cellpadding="10">

<tbody class="tbody-content">

<tr>

<td width="20%"><?php

include ('left.php');

?></td>

<td width="80%">

<?php

//// Cuerpo de la página.

if ($showErrorSave) {

$presUtils->printErrorHeader ( ERROR_GUARDAR );

}

if ($showWarningIncompleteOrNotValidData) {

$presUtils->printErrorHeader ( ADVERTENCIA_REQUERIDOS_NOVALIDOS );

}

?>

<form name="frmEditTypeRec" action="edit-type-rec.php" method="post">

<div id="editCategoriaDiv" class="standard-border">

<div class="standard-header"><span class="standard-header-

text">

<?php

echo (($action == EDIT) ? 'Editar ' : 'Crear ') . 'tipo de recomendación';

?>

</span></div>

<input type="hidden" name="txtTrecId"

value="<?php

echo $tRecEditActual->trc_id;

?>" />

<table>

<tbody class="tbody-content">

<tr>

<td>

<p class="required" style="text-align:

right">* Campos

obligatorios.</p>

<p class="underlined-label">Datos del tipo

de recomendación</p>

<table class="highlight-row">

<tbody class="tbody-content">

<tr>

<td>

<p class="input-

label">Nombre del tipo: <span class="required">*</span></p>

</td>

<td><input size="80px"

name="nombreTipo" type="text"

maxlength="100"

value="<?php

echo

$tRecEditActual->trc_nombre_tipo_rec;

?>" /> <span

class="required"><?php

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

124

if ($noNombreTipo)

{

echo

REQUERIDO;

}

?>

</span></td>

</tr>

<tr>

<td>

<p class="input-

label">Descripción del tipo</p>

</td>

<td><textarea

name="descTipo" cols="65" rows="7"

onKeyDown="textCounter(document.frmEditTypeRec.descTipo,

document.frmEditTypeRec.countDesc, 500)"

onKeyUp="textCounter(document.frmEditTypeRec.descTipo,

document.frmEditTypeRec.countDesc, 500)"><?php

echo

$tRecEditActual->trc_descripcion_tipo_rec;

?></textarea> <br>

<span class="small-text">

<?php

echo

CARACTERES_RESTANTES;

?> </span> <input

style="border: none;" readonly="readonly"

type="text"

id="countDesc" value="500" />

<?php

$utils-

>printHelpButton ( 'Descripción del tipo', 'Información del propósito por el

que se crea este tipo de recomendación.' );

?>

</td>

</tr>

<tr>

<td>

<p class="input-

label">Actividad del entorno virtual:</p>

</td>

<td>

<?php

choose_from_menu ( $MOODLE_MODULES, 'moduloMoodle',

$tRecEditActual->trc_tipo_recurso, NOSELECTION, '', NULL );

$utils->printHelpButton ( 'Actividad del entorno virtual',

'Seleccione el tipo de actividad que se va a realizar dentro del entorno

virtual con esta recomendación. Para tipos de recomendaciones en las que no se

incluya un recurso o funcionalidad del entorno virtual, deje este campo en

blanco.' );

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

125

?>

</td>

</tr>

<tr>

<td>

<p class="input-

label">Categorías asociadas: <span

class="required">*</span></p>

</td>

<td>

<?php

// Obtener todas las categorías y marcar las que tiene

asociado el tipo de recomendación.

if (($_SERVER ["REQUEST_METHOD"] == 'POST') &&

$noCategorias) {

echo '<span class="required">' . SELECCIONEOPCION .

'</span><br>';

}

$queryCatDisp = get_records ( 'sr_categoria', '', '',

'cat_nombre_categoria' );

foreach ( $queryCatDisp as $idcat => $filaCat ) {

echo '<input type="checkbox" name="catsAsociadas[]"

value="' . $idcat . '" ' . (array_search ( $idcat, $categoriasAsociadas ) ?

'checked="checked">' : '>') . '<span class="normal-text">' . $filaCat-

>cat_nombre_categoria . '</span></input><br />';

}

echo '<br>';

$utils->printHelpButton ( 'Categorías asociadas', 'Una

recomendación puede tener más una o más categorías o campos del proceso de

aprendizaje que se relacionen a ella. Para gestionar las categorías de

recomendaciones dentro del sistema, debe utilizar las funcionalidades de la

sección Categorías de recomendaciones, en el menú lateral de la aplicación.'

);

?>

</td>

</tr>

<tr>

<td><span class="input-

label">Fecha de creación:</span></td>

<td><input type="text"

readonly="readonly" name="fechaCreacion"

border=""

value="

<?php

if ($action == CREATE) {

echo date ( "Y-m-d" );

} else {

echo $tRecEditActual->trc_fecha_creacion;

}

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

126

?>" /></td>

</tr>

</tbody>

</table>

<p class="underlined-label">Plantilla de

recomendación</p>

<table class="highlight-row">

<tbody class="tbody-content">

<tr>

<td>

<p class="input-

label">Título: <span class="required">*</span></p>

</td>

<td><input size="80px"

name="tituloRec" type="text"

maxlength="100"

value="<?php

echo

$tRecEditActual->rec_titulo;

?>" /><span

class="required"> <?php

if ($noTitulo) {

echo

REQUERIDO;

}

?></span>

<?php

$utils-

>printHelpButton ( 'Título', 'Un título genérico para las recomendaciones que

se creen a partir de este tipo de recomendación' );

?>

</td>

</tr>

<tr>

<td>

<p class="input-

label">Texto de la recomendación: <span

class="required">*</span></p>

</td>

<td><textarea

name="textoRec" cols="65" rows="7"

onKeyDown="textCounter(document.frmEditTypeRec.textoRec,

document.frmEditTypeRec.countText, 500)"

onKeyUp="textCounter(document.frmEditTypeRec.textoRec,

document.frmEditTypeRec.countText, 500)"><?php

echo

$tRecEditActual->rec_texto;

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

127

?></textarea> <span

class="required"><?php

if

($noTextoRecomendacion) {

echo

REQUERIDO;

}

?></span><br>

<span class="small-text">

<?php

echo

CARACTERES_RESTANTES;

?> </span> <input

style="border: none;" readonly="readonly"

type="text"

id="countText" value="500" />

<?php

$utils-

>printHelpButton ( 'Texto de la recomendación', 'Texto en el que se debe dar

indicaciones, instrucciones, u otro tipo de información acerca de la

recomendación que se está ofertando.' );

?></td>

</tr>

<tr>

<td>

<p class="input-

label">Explicación:</p>

</td>

<td><textarea

name="explicacionRec" cols="65" rows="7"

onKeyDown="textCounter(document.frmEditTypeRec.explicacionRec,

document.frmEditTypeRec.countExp, 500)"

onKeyUp="textCounter(document.frmEditTypeRec.explicacionRec,

document.frmEditTypeRec.countExp, 500)"><?php

echo

$tRecEditActual->rec_explicacion;

?></textarea><br>

<span class="small-text">

<?php

echo

CARACTERES_RESTANTES;

?> </span> <input

style="border: none;" readonly="readonly"

type="text"

width="15" id="countExp" value="500" />

<?php

$utils-

>printHelpButton ( 'Explicación', 'Texto para informar al estudiante del por

qué se le está ofreciendo esta recomendación.' );

?></td>

</tr>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

128

<tr>

<td>

<p class="input-

label">Enlace:</p>

</td>

<td><input size="80px"

name="enlaceWeb" type="text" size="40"

maxlength="200"

value="<?php

echo

$tRecEditActual->rec_enlace;

?>"

onblur="outputLinkProbe(this.value)" /> <a id="linkprober"

target="_blank"

href="<?php

/*if ($action ==

EDIT) {

echo

$tRecEditActual->rec_enlace;

} else {*/

echo (empty (

$tRecEditActual->rec_enlace )) ? 'http://' : $tRecEditActual->rec_enlace;

/*}*/

?>"><span

class="hyperlinks">Probar enlace</span></a>

<?php

$utils-

>printHelpButton ( 'Enlace', "Opcionalmente se puede ingresar un enlace

(dirección Web) con algún recurso que se requiera que el estudiante visite.

Para probar la dirección ingresada, haga clic en el enlace \"Probar enlace\"

junto al cuadro de texto." );

?></td>

</tr>

</tbody>

</table>

<p class="underlined-label">Restricciones

de vencimiento</p>

<p class="descriptions"><span

class="required">*</span> Puede

completar el valor cualquiera de los dos

valores. El valor que se

complete será el que defina cuándo vence

la recomendación. Si

completa los dos, la recomendación vencerá

al primero que se

cumpla.</p><?php

if (($_SERVER ["REQUEST_METHOD"] == "POST") &&

$noRestriccionVencimiento) {

echo '<p class="required">' .

ESPECIFIQUE_RESTRICCION_VENCIMIENTO . '</p>';

}

?>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

129

<input type="hidden"

value="<?php

echo $rVenc->rvc_id;

?>"

name="txtRvcId">

<table class="highlight-row">

<tbody>

<tr>

<td><span class="input-

label">Vence en:</span></td>

<td>

<?php

require_once ("tc_calendar.php");

$myCalendar = new tc_calendar ( "fechaVencimiento", true );

$myCalendar->setDate ( $fechaExpiracionArray [2],

$fechaExpiracionArray [1], $fechaExpiracionArray [0] );

$myCalendar->setIcon ( "images/iconCalendar.gif" );

$myCalendar->writeScript ();

?>

</td>

<td><input type="hidden"

name="rvcId"

value="<?php

echo $rVenc->rvc_id;

?>" /></td>

</tr>

<tr>

<td><span class="input-

label">Vence al mostrarse el siguiente

número de

veces:</span></td>

<td><input

name="venceEnNVeces" type="text" size="40"

maxlength="100"

value="<?php

echo $rVenc-

>rvc_veces_a_mostrar;

?>" /> <span

class="validation-error">

<?php

if ((! empty ( $rVenc->rvc_veces_a_mostrar ) &&

$vecesNoEsUnNumero)) {

echo DEBE_SER_NUMERO;

}

?> </span></td>

</tr>

</tbody>

</table>

<p class="underlined-

label">Condiciones</p>

<input type="hidden"

value="<?php

echo $condEstAprPresente;

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

130

?>"

name="condEstAprPresente"> <input

type="hidden"

value="<?php

echo $condIntCurPresente;

?>"

name="condIntCurPresente"> <input

type="hidden"

value="<?php

echo $condIntRecPresente;

?>"

name="condIntRecPresente"> <input

type="hidden"

value="<?php

echo $condNivIntPresente;

?>"

name="condNivIntPresente"> <input

type="hidden"

value="<?php

echo $condZonGeoPresente;

?>"

name="condZonGeoPresente"> <input

type="hidden"

value="<?php

echo $condEntUsuPresente;

?>"

name="condEntUsuPresente">

<table class="highlight-row">

<tbody class="tbody-content">

<tr>

<td><span class="input-

label">Estilo de aprendizaje:</span></td>

<td> <?php

choose_from_menu (

$ESTILOS_APRENDIZAJE, 'estiloAprendizaje', $condEstApr->con_valor_condicion,

NOSELECTION );

?>

<?php

$utils->printHelpButton (

'Estilo de aprendizaje', 'Debe seleccionar aquí un estilo de aprendizaje para

el cual se va a aplicar este tipo de recomendación. La información sobre los

estilos de aprendizaje de los estudiantes puede encontrarse en el módulo de

modelado de usuario.' );

?></td>

<td><input type="hidden"

name="idCondEstApr"

value="<?php

if ($action == EDIT) {

echo $condEstApr-

>con_id;

}

?>" /></td>

</tr>

<tr>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

131

<td><span class="input-

label">Zona Geográfica (centro):</span></td>

<td>

<?php

$displayCentros = array ();

$queryCentros = execute_sql (

"SELECT DISTINCT(centro) AS centro FROM mdl_enrol_utpl order by centro", false

);

$queryCentros = get_records_sql

( 'SELECT DISTINCT(centro) AS centro FROM mdl_enrol_utpl ORDER BY centro' );

$displayCentros ["todos"] =

"Todos";

foreach ( $queryCentros as $id

=> $row ) {

$displayCentros [$row-

>centro] = $row->centro;

}

choose_from_menu (

$displayCentros, 'zonGeografica', $condZonGeo->con_valor_condicion,

NOSELECTION, '', NULL );

?><input type="hidden"

name="idCondZonGeo"

value="<?php

if ($action == EDIT) {

echo $condZonGeo-

>con_id;

}

?>" />

<?php

$utils->printHelpButton ( 'Zona

Geográfica', 'Ubicación de los estudiantes para los cuales se ofertará esta

recomendación. Este atributo tiene relevancia cuando por ejemplo, se

recomienda asistencia a un evento, la recomendación podría tener mucha más

relevancia para los estudiantes en el mismo lugar o uno cercano al del evento.

Los datos de ubicaciones geográficas de los estudiantes pueden encontrarse en

el módulo de modelado de usuario.' );

?>

</td>

</tr>

<tr>

<td><span class="input-

label">Plataforma:</span></td>

<td>

<?php

$plataformas = array ("PC" =>

"PC", "Dispositivo móvil" => "Dispositivo móvil" );

choose_from_menu (

$plataformas, 'entUsuario', $condEntUsu->con_valor_condicion, NOSELECTION, '',

NULL );

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

132

?> <input type="hidden"

name="idCondEntUsu"

value="<?php

if ($action == EDIT) {

echo $condEntUsu-

>con_id;

}

?>" />

<?php

$utils-

>printHelpButton ( 'Plataforma', 'Seleccione un valor cuando el tipo de

dispositivo con el que el estudante accede al entorno virtual es relevante

para el tipo de recomendación que se va a ofertar. Los datos de plataforma

pueden encontrarse en el módulo de modelado de usuario.' );

?>

</td>

</tr>

<tr>

<td>

<p class="input-

label">Nivel de interés en el curso:</p>

</td>

<td

id="cellNivelInteresCurso">

<?php

$client = new nusoap_client ( WSDL, true );

$atributosInteresCurso = $client->call (

'GetValoresEstereotiposAtribModeloUsuario', array ('atributo' => 'Nivel de

Interes en el Curso' ) );

$xmlstringInteresCurso = <<<XML

$atributosInteresCurso

XML;

$listaInteresCurso = simplexml_load_string (

$xmlstringInteresCurso );

$escalaInteres = array ();

foreach ( $listaInteresCurso as $rowidx => $row ) {

$value = $row->ves_valor_estereotipo . '';

$escalaInteres [$value] = $value;

}

choose_from_menu ( $escalaInteres, 'nivelInteresCurso',

$condIntCur->con_valor_condicion, NOSELECTION );

//choose_from_menu ( $ESCALA, 'nivelInteresCurso',

$condIntCur->con_valor_condicion, NOSELECTION );

$utils->printHelpButton ( 'Nivel de interés en el curso',

'Seleccione un valor cuando el nivel de interés en el curso que tiene el

estudiante es relevante para el tipo de recomendación que se va a ofertar.' );

?>

</td>

<td><input type="hidden"

name="idCondIntCur"

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

133

value="<?php

if ($action == EDIT) {

echo $condIntCur-

>con_id;

}

?>" /></td>

</tr>

<tr>

<td>

<p class="input-

label">Nivel de interés en recursos:</p>

</td>

<td

id="cellNivelInteresRecursos"><?php

$client = new

nusoap_client ( WSDL, true );

$atributosWS = $client-

>call ( 'GetValoresEstereotiposAtribModeloUsuario', array ('atributo' =>

'Nivel de Interes en Recursos' ) );

$xmlstring = <<<XML

$atributosWS

XML;

$listaWS =

simplexml_load_string ( $xmlstring );

$escalaRecursos = array

();

foreach ( $listaWS as

$rowidx => $row ) {

$value = $row-

>ves_valor_estereotipo . '';

$escalaRecursos

[$value] = $value;

}

choose_from_menu (

$escalaRecursos, 'nivelInteresRecursos', $condIntRec->con_valor_condicion,

NOSELECTION );

$utils->printHelpButton (

'Nivel de interés en recursos', 'Seleccione un valor cuando el nivel de

interés en recursos que tiene el estudiante es relevante para el tipo de

recomendación que se va a ofertar.' );

?></td>

<td><input type="hidden"

name="idCondIntRec"

value="<?php

if ($action == EDIT) {

echo $condIntRec-

>con_id;

}

?>" /></td>

</tr>

<tr>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

134

<td>

<p class="input-

label">Nivel de interacción:</p>

</td>

<td

id="cellNivelInteraccion"><?php

$client = new

nusoap_client ( WSDL, true );

$atributosWS = $client-

>call ( 'GetValoresEstereotiposAtribModeloUsuario', array ('atributo' =>

'Nivel de Interaccion' ) );

$xmlstring = <<<XML

$atributosWS

XML;

$listaWS =

simplexml_load_string ( $xmlstring );

$escalaInteraccion =

array ();

foreach ( $listaWS as

$rowidx => $row ) {

$value = $row-

>ves_valor_estereotipo . '';

$escalaInteraccion

[$value] = $value;

}

choose_from_menu (

$escalaInteraccion, 'nivelInteraccion', $condNivInt->con_valor_condicion,

NOSELECTION );

$utils->printHelpButton (

'Nivel de interacción en el curso', 'Seleccione un valor cuando el nivel de

interacción en el curso que tiene el estudiante es relevante para el tipo de

recomendación que se va a ofertar.' );

?></td>

<td><input type="hidden"

name="idCondNivInt"

value="<?php

if ($action == EDIT) {

echo $condNivInt-

>con_id;

}

?>" /></td>

</tr>

</tbody>

</table>

</td>

</tr>

</tbody>

</table>

</div>

<br>

<input name="guardar" type="submit" value="Guardar"> <input

name="cancelar" type="submit" value="Cancelar"></form>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

135

</td>

</tr>

</tbody>

</table>

</body>

</html>

7.12.2 edit-category.php

Archivo de código fuente para editar categorías.

<?php require ('./require-login.php'); require ('./admin-recom-constants.php'); require ('./presentation-utils.php'); require ('./classesdb/data-utils.php'); require ('./utils.php'); global $CFG; $showSaveWarning = false; $showRequiredWarning = false; $presUtils = new PresentationUtils (); $catEditActual = new Categoria (); // Setear la acción actual $action = ''; $utils = new Utils (); $utils->setFormActionType ( &$action, $_GET, $_POST, 'catid', 'txtCatId' ); $noNombre = false; $noDescripcion = false; if ($_SERVER ["REQUEST_METHOD"] == "POST") { if (array_key_exists ( "cancelar", $_POST )) { header ( 'Location: list-categories.php' ); exit (); } else { // Autopost para setear los valores de los controles en el form. $catEditActual->cat_nombre_categoria = $_POST ["nombreCategoria"]; $catEditActual->cat_rec_descripcion = $_POST ["descCategoria"]; $catEditActual->cat_id = $_POST ["txtCatId"]; $noNombre = empty ( $catEditActual->cat_nombre_categoria ); $noDescripcion = empty ( $catEditActual->cat_rec_descripcion ); if ($noNombre || $noDescripcion) { $showRequiredWarning = true; } else if ($action == EDIT) { $idUpdate = (empty ( $_GET ["catid"] )) ? $_POST ["txtCatId"] : $_GET ["catid"];

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

136

$sql = "UPDATE {$CFG->prefix}sr_categoria " . "SET cat_nombre_categoria = '" . $_POST ["nombreCategoria"] . "', " . "cat_rec_descripcion = '" . $_POST ["descCategoria"] . "' " . "WHERE cat_id = " . $idUpdate; $success = execute_sql ( $sql, false ); if ($success) { header ( "Location: view-category.php?catid={$_POST["txtCatId"]}&edited=y" ); exit (); } else { $showSaveWarning = true; } } else if ($action == CREATE) { $dataUtils = new DataUtils (); $newCatId = 0; $success = $dataUtils->insert ( $catEditActual, 'mdl_sr_categoria', &$newCatId ); if ($success) { header ( "Location: view-category.php?catid=$newCatId&created=y" ); exit (); } else { $showSaveWarning = true; } } } } if ($_SERVER ["REQUEST_METHOD"] == "GET") { // Al editar sólo se llega por GET if (array_key_exists ( "catid", $_GET )) { $query = get_records ( 'sr_categoria', 'cat_id', $_GET ["catid"], 'cat_nombre_categoria' ); $rowCategoria = $query ["{$_GET["catid"]}"]; $catEditActual->cat_nombre_categoria = $rowCategoria->cat_nombre_categoria; $catEditActual->cat_rec_descripcion = $rowCategoria->cat_rec_descripcion; $catEditActual->cat_id = $rowCategoria->cat_id; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel=StyleSheet href="./css/styles.css" type="text/css" /> <title>Editar categoría</title> </head>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

137

<body> <?php include ('header.php')?> <table width="100%" cellpadding="10"> <tbody class="tbody-content"> <tr> <td width="20%"><?php include ('left.php'); ?></td> <td width="80%"> <?php if ($showSaveWarning) { $presUtils->printWarningHeader ( ERROR_GUARDAR ); } else if ($showRequiredWarning) { $presUtils->printWarningHeader ( ADVERTENCIA_REQUERIDOS_NOVALIDOS ); } ?> <form name="editCategoriaForm" method="post" action="edit-category.php"> <div id="editCategoriaDiv" class="standard-border"> <?php $presUtils->printHeader ( (($action == EDIT) ? 'Editar ' : 'Crear ') . 'categoría' ); ?> <input type="hidden" name="txtCatId" value="<?php echo $catEditActual->cat_id; ?>" /> <table class="highlight-row"> <tbody class="tbody-content"> <tr> <p class="required" style="text-align:right"> * Campos obligatorios.</p> <p class="underlined-label">Datos de la categoría</p> <td> <p class="input-label">Nombre de la categoría: <span class="required">*</span></p> </td> <td><input name="nombreCategoria" type="text" maxlength="100" value="<?php echo $catEditActual->cat_nombre_categoria; ?>" /> <span class="required"><?php

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

138

if ($noNombre) { echo REQUERIDO; } ?> </span></td> </tr> <tr> <td> <p class="input-label">Descripción de la categoría: <span class="required">*</span></p> </td> <td><textarea name="descCategoria" cols="65" rows="7"><?php echo $catEditActual->cat_rec_descripcion; ?></textarea><span class="required"><?php if ($noDescripcion) { echo REQUERIDO; } ?> </span></td> </tr> </tbody> </table> </div> <input name="guardar" type="submit" value="Guardar"> <input name="cancelar" type="submit" value="Cancelar"></form> </td> </tr> </tbody> </table> </body> </html>

7.12.3 require-login.php

Archivo de código fuente que controla inicio de sesión y autenticación de rol de

administrador de recomendaciones.

<?php require ("../config.php"); global $CFG, $USER, $COURSE; if ($CFG->forcelogin) { require_login (); }

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

139

// Verificar el rol del usuario actual if (! (record_exists ( 'role_assignments', 'roleid', 24, 'userid', $USER -> id ))) { include ('./error.php'); exit; } ?>

7.12.4 confirm-delete.php

Archivo de código fuente para borrar datos.

<?php require ('./require-login.php'); require ('./utils.php'); $showIncorrectRequestWarning = false; $showAlertDataNotDeleted = false; if ($_SERVER ["REQUEST_METHOD"] == 'GET') { global $TABLES_KEYS, $INFO_TABLES; $utils = new Utils (); // Verificar que el request sea correcto if (isset ( $_GET ["id"] ) && (($utils->validateIntParamOnGET ( $_GET ["id"] )) != - 1) && isset ( $_GET ["type"] ) && array_search ( $_GET ["type"], $TABLES_KEYS )) { $showIncorrectRequestWarning = false; } else { $showIncorrectRequestWarning = true; } } else if ($_SERVER ["REQUEST_METHOD"] == 'POST') { $type = $_POST ["type"]; $returnTo = $INFO_TABLES [$type] ["listview"]; if (array_key_exists ( "borrar", $_POST )) { include ('./classesdb/data-utils.php'); $id = $_POST ["id"]; $dataUtils = new DataUtils (); $noRollback = true; $noRollback = $noRollback && $dataUtils->beginTransaction (); $noRollback = $noRollback && $dataUtils->autoCommitFalse (); $rowCount = 0; $noRollback = $noRollback && $dataUtils->delete ( 'mdl_' . $INFO_TABLES [$type] ["table"], $INFO_TABLES [$type] ["pk"], $id, &$rowCount ); if (($noRollback == false) || ($rowCount < 1)) { $dataUtils->rollback (); $showAlertDataNotDeleted = true; } else {

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

140

if ($dataUtils->commit () == false) { $dataUtils->rollback (); $showAlertDataNotDeleted = true; } else { echo ("<script>location.href = '$returnTo?deleted=y';</script>"); exit (); } } } else { echo ("<script>location.href = '$returnTo';</script>"); exit (); } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel=StyleSheet href="./css/styles.css" type="text/css" /> <title>Confirmar borrado de datos</title> </head> <body> <?php include ('header.php'); ?> <table width="100%" cellpadding="10"> <tbody class="tbody-content"> <tr> <td width="20%"><?php include ('left.php'); ?></td> <td width="80%"> <form action="confirm-delete.php" method="post" name="confim-delete"> <div id="viewRecDiv" class="standard-border"> <?php require ('./presentation-utils.php'); $presUtils = new PresentationUtils (); $presUtils->printHeader ( 'Confirmación de borrado de datos' ); if (($_SERVER ["REQUEST_METHOD"] == 'GET') && $showIncorrectRequestWarning) { $presUtils->printWarningHeader ( ERROR_NO_DATA_FOUND ); $presUtils->backButton (); exit (); } else if (($_SERVER ["REQUEST_METHOD"] == 'POST') && $showAlertDataNotDeleted) { $presUtils->printErrorHeader ( ERROR_NO_DATA_FOUND ); $presUtils->backButton (); exit (); }

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

141

?> <p><span class="critical-question"> ¿Está seguro de que desea borrar los datos? Esta operación no se puede deshacer.</span> <input type="hidden" name="id" value="<?php echo ($_SERVER ["REQUEST_METHOD"] == 'POST') ? $_POST ["id"] : $_GET ["id"]; ?>" /> <input type="hidden" name="type" value="<?php echo ($_SERVER ["REQUEST_METHOD"] == 'POST') ? $_POST ["type"] : $_GET ["type"]; ?>" /> <input name="borrar" type="submit" value="Sí"/> <input name="cancelar" type="submit" value="No"/> </p> </div> </form> </td> </tr> </tbody> </table> </body>

</html>

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

142

8. Bibliografía

Public Health Learning. (2009). Recuperado el 12 de Julio de 2010, de LMS Overview:

http://www.publichealthlearning.com/Online_Help_Guides/Closed/Learner_User_Manual

/LMS%20User%20Manual/!SSL!%5CWebHelp/Learner/LMS_Overview.htm

Candillier, L., Jack, K., & Fessant, F. (2009). State of the Art - Recommender Systems.

Francia: IGI Global.

Davis, B., Carmean, C., & Wagner, E. (15 de Octubre de 2009). Moodle Moves To The

Front of the LMS Adoption Pack. Recuperado el 2009, de Learning Solutions Magazine:

http://www.learningsolutionsmag.com/articles/111/

Itmazi, J. (2005). Sistema flexible de gestión de eLearning para soportar el aprendizaje en

las Universidades Tradicionales y Abiertas. Granada, España.

Krishnakumar, A. (2007). Recoo: A Recommendation System for Youtube RSS Feeds.

Santa Cruz, California, Estados Unidos.

Mallon, D., Bersin, J., Howard, C., & O’Leonard, K. (2009). WSI LMS: Learning Media

System. Recuperado el 25 de Julio de 2010, de

http://www.wsilms.com/Portals/0/WSILMS_Data_Files/LMS_Market_Overview_Bersin.

pdf

Moodle.org. (2010). Moodle.org. Recuperado el 2009, de

http://docs.moodle.org/en/Features

Santos, O. (2009). Ampliando el apoyo ofrecido por las plataformas de e-learning

mediante un servicio de recomendaciones. Granada, España.

Santos, O. C., Martín, L., Mazzone, E., & Boticario, J. (2009). Management of

recommendations for accessible eLearning platforms: is it a need for learning

management system users? Madrid, España.

Santos, O., & Boticario, J. (2008). Users’ experience with a recommender system in an

open source standard-based learning management system. (a. R. UNED, Ed.) Madrid,

España.

Somerville, I. (2005). Ingeniería del Software. Pearson Addison-Wesley.

Escuela de Ciencias de la Computación

Tesis: Sistemas Adaptativos en Moodle: Interfaz de administración de

recomendaciones estáticas

143

Tartakoff, J. (20 de Agosto de 2009). Moodle Moves To the Front of the LMS Adoption

Pack. Recuperado el 2009, de http://paidcontent.org/article/419-youtube-tries-to-get-

visitors-to-watch-more-clips-new-recommendation-sy/

Turnbull, D. (s.f.). Interacting with Recommender Systems. Recuperado el 2010, de

http://www.ischool.utexas.edu/~donturn/papers/chi99/chi99.html

Wells, D. (1999-2009). The Rules of Extreme Programming. Obtenido de The Rules of

Extreme Programming: http://www.extremeprogramming.org/rules.html

Zins, A. H., Bauernfeind, U., Del Missierb, F., Venturinib, A., & Rumetshoferc, H. (2003).

An Experimental Usability Test for different Destination Recommender Systems. Viena,

Austria.

Sistemas Adaptativos en Moodle:

Interfaz de administración de recomendaciones estáticas

RESUMEN

La Universidad Técnica Particular de Loja cuenta con

un Entorno Virtual de Aprendizaje, basado en un

sistema de gestión de aprendizaje (LMS ) denominado

Moodle. En este Entorno, se encuentran registrados los

cursos y sus estudiantes, y es un medio de interacción

y contacto. El número de usuarios del Entorno Virtual

es elevado en la actualidad, al igual que la cantidad de

recursos que se ofrecen dentro de él. Para evitar un

problema de sobrecarga de información, se puede

implementar un sistema de recomendaciones que

permita a los docentes ofrecer recursos relevantes a

sus estudiantes. De acuerdo a los estereotipos de los

valores de atributos de modelado de usuario, se

pueden crear tipos de recomendaciones genéricos, a

partir de los cuales un tutor o agente recomendador

puede elaborar recomendaciones concretas para que

sean ofrecidas a los estudiantes.

En el presente trabajo se trata el desarrollo de una

interfaz Web de administración de recomendaciones,

el cual forma parte de la implementación de un

sistema de recomendaciones completo integrado a

Moodle. Se incluye el estudio de los elementos de las

recomendaciones, la creación de un modelo de datos

para el sistema recomendador, el proceso y

documentación del desarrollo, la creación de un

servicio Web para recuperar información del modelo

de datos, la integración de la aplicación con Moodle y

las pruebas con usuarios que se realizaron para

verificar el funcionamiento de la aplicación.

Palabras Clave: Sistemas recomendadores,

administración de recomendaciones, Moodle,

modelado de usuario, servicios Web.

1. INTRODUCCIÓN

Los sistemas recomendadores se crearon con el fin de

combatir el problema de sobrecarga de información al

que se veían expuestos los usuarios de sistemas

quienes tenían una gran cantidad de información a su

disponibilidad. Estos sistemas se han utilizado en

forma masiva en campos como el comercio

electrónico y el entretenimiento en línea. Con la

aparición de entornos virtuales de aprendizaje, se notó

que en dichos sistemas también existía el problema de

sobrecarga, al haber numerosos cursos, con muchos

estudiantes participantes y recursos disponibles a ellos.

Para ello, un sistema de recomendaciones aplicado a

un entorno educativo virtual debe ofrecer recursos a

los estudiantes de acuerdo a sus características

particulares como niveles de conocimiento e

interacción.

Esta tesis presenta el desarrollo de una interfaz de

administración de recomendaciones, la cual forma

parte de un sistema de recomendaciones completo que

se integrará a Moodle. El proceso de desarrollo

incluye:

El análisis correspondiente para la obtención

de un modelo de recomendaciones. Este

modelo debe dar cabida al almacenamiento

de recomendaciones, tipos de

recomendaciones, categorías de

recomendaciones, técnicas de obtención y

condiciones de aplicabilidad. Dicho modelo

también contiene el modelado de usuario,

del cual, la interfaz de administración de

recomendaciones utiliza la información

concerniente a los atributos del modelo de

usuario. Este modelo se obtuvo en conjunto

con los autores de los proyectos

relacionados de: seguimiento de usuarios,

módulo tutor y agente de modelado de

usuarios.

Realización de actividades de programación

acordes a una metodología de desarrollo, la

cual en este caso es la metodología Extreme

Programming (XP), que permite desarrollar

software en iteraciones cortas y sin exceso

de documentación.

Desarrollo de un servicio Web que permite

consumir los datos del modelo de

recomendaciones y de los atributos del

modelado de usuario.

Integración de la interfaz de administración

con Moodle, usando sus mecanismos de

Juan Pablo Angamarca G.

Escuela de Ciencias de la

Computación

Universidad Técnica Particular

de Loja

Ing. Jorge López

Instituto de Investigación en

Ingeniería y Ciencias de la

Computación

Universidad Técnica Particular de

Loja

Ing. Greyson Alberca

Instituto de Investigación en

Ingeniería y Ciencias de la

Computación

Universidad Técnica Particular de

Loja

autenticación, y un bloque que permita

acceder a la interfaz.

Pruebas de aplicación con docentes para

verificar su correcto funcionamiento.

Los resultados obtenidos al final del proceso son una

interfaz que permite la gestión de tipos de

recomendaciones y categorías de recomendaciones, un

modelo de recomendaciones y un servicio Web que la

misma interfaz utiliza para recuperar datos desde el

modelo de recomendaciones.

2. ESTADO DEL ARTE

2.1. Sistemas recomendadores

Un sistema recomendador (SR) es un sistema cuyo

propósito es ayudar a los usuarios a enfrentarse al

problema de la sobrecarga de información, ofreciendo

recomendaciones sobre objetos disponibles a ellos

dentro del sistema, los cuales que resulten útiles y

relevantes a dichos usuarios. Uno de los primeros

sistemas recomendadores es el sistema TAPESTRY,

desarrollado en Xerox PARC, en 1992 (Itmazi, 2005).

Su propósito era ofrecer recomendaciones sobre e-

mail y grupos de noticias de Internet, y soportaba dos

técnicas de recomendación: filtrado colaborativo y

filtrado basado en contenidos (Itmazi, 2005); dichas

técnicas se explican en capítulos posteriores.

En las dos últimas décadas, se ha intensificado la

investigación sobre sistemas recomendadores, y se han

diversificado los campos en los que se utilizan.

Actualmente, las principales aplicaciones de los SR

son el comercio electrónico, entretenimiento en línea,

redes sociales, videotecas y bibliotecas virtuales.

Uno de los ejemplos de uso moderno de sistemas

recomendadores es YouTube, sitio de video en línea.

Desde el año 2009, se incorporó un sistema de

recomendaciones, el cual recoge información sobre el

comportamiento de los usuarios dentro del sitio, el tipo

de contenido que los usuarios observan, y el contenido

que han visto en el pasado, para ofrecer videos a los

usuarios basándose en esos datos (Tartakoff, 2009).

2.2. LMS y Recomendaciones dentro de un LMS

Un sistema de gestión de aprendizaje, conocido

también como LMS (siglas en inglés de Learning

Management System), es un sistema comúnmente

basado en Web, cuya función es entregar y

administrar contenidos de apoyo al proceso de

aprendizaje. El inicio de su uso se remonta a la

década entre 1990 y 2000. Un LMS incluye un

conjunto de funcionalidades, típicamente catálogos

de cursos, listas de estudiantes, toma de

evaluaciones, publicaciones de tareas, tareas,

foros, y registro de actividades dentro del sistema.

Los LMS poseen también interfaces para la

administración del sitio, y administración de los

cursos por parte de los profesores. Su diseño tiene

como objetivo guiar a los estudiantes a través de

un proceso simple para lograr los objetivos de

evaluar y mantener competencias, participar en

cursos, y desarrollar las actividades de aprendizaje

que se definan en cada curso. Estos sistemas están

disponibles tanto en versiones comerciales y

versiones libres y de código abierto. Las

características de los sistemas LMS modernos se

han adaptado a las posibilidades que abre Internet

y permiten inclusive crear grandes comunidades

colaborativas en las que participan millares de

personas.

Moodle es un sistema LMS de software libre y

código abierto. Este sistema puede ser desplegado

sobre las principales plataformas de sistemas

operativos existentes en la actualidad, y su uso es

bastante extendido. Moodle es el sistema de

gestión de aprendizaje utilizado en la Universidad

Técnica Particular de Loja, a partir del año 2006,

conocido como Entorno Virtual de Aprendizaje, o

EVA.

2.3. Elementos de las recomendaciones

Un modelo para un sistema de recomendaciones

debe contener la información necesaria, tal como

preferencias, características de aprendizaje e

historial de interacción de los usuarios, así como

las similitudes entre usuarios y sus requerimientos

de accesibilidad.

Santos y Boticario proponen un modelo basado en

ciertos objetivos: el soporte a la creación de

recomendaciones por parte del administrador del

curso, información sobre las razones por las que se

crea una recomendación, y retroalimentación por

parte de los usuarios sobre el interés que generen

en ellos las recomendaciones con el fin de mejorar

el sistema.

Basándonos en el modelo propuesto por Santos y

Boticario, los elementos del modelo consisten en

categoría de la recomendación, técnica de

obtención, origen de la recomendación,

explicación de la oferta, restricciones temporales o

de vencimiento, y las condiciones de aplicabilidad.

A continuación se explican dichos elementos.

Categoría: La categoría de una recomendación es

el campo del proceso de aprendizaje al que se

aplica la recomendación. Las recomendaciones

enmarcadas en ciertas categorías pueden ser más

útiles que las recomendaciones de otra categoría

dependiendo de la situación actual del curso.

Dentro de las categorías podemos citar:

• Motivación: Mensaje que tiene como

propósito motivar al estudiante dentro de

situaciones frustrantes que puedan surgir dentro

del desarrollo de las actividades de enseñanza-

aprendizaje dentro del curso, tales como

dificultades de comprensión, o demora en la

realización de las tareas de clase.

• Estilos de aprendizaje: Recomendaciones

que se ofrecen para que el estudiante realice

actividades dentro del entorno, acordes a su estilo

de aprendizaje particular, o bien para tomar un test

de estilos de aprendizaje.

• Conocimiento previo: Recomendaciones

que se ofrecen tomando en cuenta los aspectos del

curso en los que el usuario tiene mayor dominio, para

poner énfasis en las que no.

• Colaboración: Recomendaciones orientadas

a la interacción con los otros participantes del curso.

• Interés: Recomendaciones que permiten al

usuario acceder a objetos de aprendizaje referentes a

los temas sobre los que más tiene interés dentro del

curso.

• Accesibilidad: Recomendaciones

concernientes a la forma en el que usuario accede a los

contenidos dentro del entorno.

Técnica: Consiste en la técnica usada para crear la

recomendación. Puede una de las técnicas expuestas

anteriormente (filtrado colaborativo, basado en

contenidos, mixto, matching conditions).

Origen: Determina si la recomendación fue generada

por un algoritmo automatizado que ha determinado

que las características del usuario son apropiadas para

ofrecerle la recomendación, o por un tutor o

administrador de recomendaciones.

Explicación: Ofrece información detallada en una

forma comprensible por el estudiante del por qué se le

ha ofrecido la recomendación.

Condiciones de aplicabilidad: Determinan cuándo

una recomendación se debe o no ofrecer a un

estudiante de acuerdo a la evaluación de valores

definidos. Dentro de este campo se encierran factores

como el estilo de aprendizaje, el nivel de tecnología

con la que el usuario es familiar, similitud entre

estudiantes, rol dentro de la plataforma, nivel de

colaboración, datos de interacción, nivel de

conocimiento, datos de interacción, nivel de interés y

recursos utilizados dentro del LMS.

Restricciones temporales o de vencimiento: Dentro

de este apartado se define cuándo y hasta cuándo se

ofrece una recomendación. Pueden estar dadas por

fechas concretas, intervalos de tiempo o eventos.

3. DEFINICIÓN DEL PROBLEMA

3.1. Planteamiento del problema

Dentro de un entorno LMS, se puede

manejar una cantidad inmensa de cursos y

recursos. Sin un sistema de

recomendaciones, es probable que los

usuarios del LMS tengan que enfrentarse al

problema de sobrecarga de información,

muy común en los entornos de Internet, y

no puedan realizar sus actividades en forma

adecuada al no tener un medio de apoyo

para discernir entre los recursos que le

serán de utilidad y los que no.

3.2. Estado actual

Actualmente el LMS utilizado en la

Universidad Técnica Particular de Loja

(Moodle) no cuenta con un sistema de

recomendaciones. Dada su implementación,

es necesario contar con un sistema de

administración de recomendaciones que

permita a los un experto recomendador

crear, modelar y llevar registro de los tipos

de recomendaciones que se creen dentro del

sistema. Este sistema debe permitir crear

tipos de recomendaciones, explotando todas

las características de los modelos de

usuario de los estudiantes, para que estos

tipos de recomendaciones se usen en la

generación de recomendaciones específicas

para los estudiantes, dado que cumplan con

las restricciones y características definidas

en los tipos de recomendaciones, es decir,

que se establezcan las condiciones sobre las

que se ofrecerá la recomendación; y la

técnica con la que se va a generar. Debe

permitir también editar y cambiar

parámetros de las recomendaciones creadas

y ya ofrecidas a los estudiantes.

3.3. Objetivos

Construir una interfaz de

administración de recomendaciones

estáticas que permita la creación,

edición y eliminación de tipos de

recomendaciones genéricos, con el fin

de probar diferentes combinaciones de

los factores que componen las

recomendaciones, para que pueda ser

usado dentro del Entorno Virtual de

Aprendizaje de la UTPL.

Entender la estructura y

funcionamiento de un sistema de

recomendaciones.

Integrar la solución desarrollada a

Moodle.

3.4. Esquema de la solución

3.4.1. Módulo de datos del sistema

recomendador

Consiste en la base de datos contiene la

información necesaria que va a ser utilizada

por el sistema recomendador. Tiene dos

componentes:

El modelo de recomendaciones, el cual

contiene las recomendaciones y los tipos de

recomendaciones que se han creado dentro

del sistema con todos los parámetros que los

definen. Este modelo incluye además las

categorías de recomendaciones, tipos de

recomendaciones, técnicas de obtención,

restricciones de vencimiento y condiciones a

las que se sujetan las recomendaciones y

tipos de recomendaciones.

El modelo de datos para la solución que se

va a desarrollar se basa en el análisis que se

ha realizado de los modelos propuestos por

Santos y Boticario (1.4.2), unido a ello las

necesidades particulares del entorno para el

que se va a desarrollar la solución, es decir el

entorno virtual de aprendizaje EVA UTPL.

El modelado de usuario, el cual consiste en

información relacionada a las preferencias y

características particulares de los usuarios

del LMS, tales como niveles de interacción,

preferencias, entorno de usuario, y estilos de

aprendizaje. El modelado de usuario para el

sistema de recomendaciones del cual es parte

este trabajo ha sido realizado por el autor del

proyecto relacionado “Agente de Modelado

de Usuarios”.

Figura 1.Modelo de datos del sistema recomendador.

3.4.2. Módulo de usuario

Consiste en un conjunto de vistas que tienen

las siguientes funciones:

Creación, edición y borrado de tipos

de recomendaciones: Esta interfaz

permite gestionar tipos de

recomendaciones dando valores a los

parámetros que los definen,

considerando los factores apropiados

de los modelos de usuario para luego,

a partir de estos tipos, crear

recomendaciones apropiadas. En esta

interfaz, al tratarse de

recomendaciones estáticas, el

conocimiento de un experto se refleja

al crear los tipos de recomendaciones

mediante la técnica Matching

conditions.

Creación, edición y borrado de

categorías de recomendaciones: Para

crear categorías de recomendaciones a

las que están asociados los tipos de

recomendaciones.

4. ANÁLISIS Y DEFINICIÓN DE LA

SOLUCIÓN

4.1. Requerimientos

Los requerimientos funcionales indican los servicios

que debe proporcionar el sistema, cómo debe

reaccionar ante entradas particulares y cómo debe

reaccionar ante situaciones particulares; también

pueden declarar explícitamente lo que el sistema no

debe hacer. (Somerville, 2005). Se lista a continuación

un conjunto de requerimientos que el sistema debe

cumplir en cuanto a su operación y comportamiento.

La interfaz de administración del sistema

recomendador requiere autentificación de

usuarios, esto se realizará mediante los

mecanismos integrados de autentificación de

Moodle.

El sistema interactúa con la base de datos

del sistema recomendador para poder

obtener datos sobre los estudiantes y las

recomendaciones ofertadas: modelos de

usuario, recomendaciones y sus condiciones,

restricciones, técnicas de recomendación,

acciones sobre objetos, datos del entorno,

preferencias.

El sistema debe ofrecer una interfaz experta

de construcción y edición de tipos de

recomendaciones. La interfaz debe ofrecer

las facilidades para especificar:

o Datos de tipos de recomendaciones

como nombre, descripción, tipo de

recurso del entorno virtual y categorías

de recomendación asociadas.

o Información que sirva como plantilla

para todas las recomendaciones que se

creen a partir de ese tipo de

recomendación; esta información incluye

un título de recomendación, explicación,

texto, un enlace y restricciones de

vencimiento.

o Restricciones de vencimiento.

o Condiciones, que contienen valores con

los que se compararán los atributos de

los modelos de usuario, para ofrecer la

recomendación por medio de un tutor o

agente recomendador cuando los valores

del tipo de recomendación coincidan con

los del modelo de usuario de algún

estudiante.

4.2. Componentes relacionados

4.2.1. Módulo de tutor

El módulo tutor es un módulo que permite la

creación de recomendaciones a un nivel

menos detallado que el módulo de

administración de recomendaciones. Este

módulo está típicamente manejado por el

profesor de cada curso, y crea

recomendaciones que se ofrecen

directamente a los estudiantes. Este módulo

tutor para el sistema recomendador ha sido

desarrollado por el autor del trabajo

relacionado “Módulo tutor de ingreso de

recomendaciones”

4.2.2. Modelado de usuario

Este módulo se encarga de recoger

información sobre los estudiantes y definir

modelos de usuario, cuyas características

permiten asignar recomendaciones a los

estudiantes mediante un agente

recomendador.

A continuación se especifican las categorías

de datos que componen el modelado de

usuario:

Datos de entorno: Ayudan a definir el

lugar geográfico del estudiante, así como

el entorno computacional (hardware y

software) que el estudiante utiliza para

acceder al entorno virtual de aprendizaje.

Dentro de esta categoría se incluye

información de zona geográfica y de

entorno de usuario (plataforma de

acceso, ej. PC, dispositivo móvil).

Datos de interacción: Definen el grado

de interés e interacción que los

estudiantes tienen en su participación

dentro del entorno virtual. Los atributos

dentro de esta categoría son: Nivel de

interés (Grado de interés del estudiante

en el curso en desarrollo, y nivel de

interés en los recursos que se hacen

disponibles en el entorno virtual) y nivel

de interacción (nivel de interacción de

los estudiantes con el entorno virtual)

Fig.2. Esquema de la solución

5. DESARROLLO DE LA SOLUCIÓN

Para la aplicación de interfaz de administración se

requiere que para ingresar, se exija a los usuarios

autenticación. Dicha autenticación se realiza con los

mecanismos integrados de Moodle para verificar que

al ingresar se provea un nombre de usuario y

contraseña válidos, y que el usuario tenga un rol de

administrador de recomendaciones dentro del sistema.

5.1. Desarrollo del servicio Web

En el desarrollo de esta tesis, se ha creado un servicio

Web de administración de recomendaciones, el cual

provee información sobre tipos de recomendaciones,

categorías de recomendaciones y valores de atributos

de modelo de usuario. El servicio Web implementado

permite que la aplicación tenga una arquitectura

orientada a servicios, lo cual significa que la

comunicación entre la aplicación y el servicio hace

uso de mensajes. Dicho servicio se ha desarrollado con

en el framework de servicios web para PHP NuSOAP,

el cual permite implementar y consumir servicios web

basados en el protocolo SOAP (Simple Object Access

Protocol).

5.1.1. Operaciones del servicio Web

El servicio Web expone información tanto del modelo

de recomendaciones como del modelo de usuario.

Dados los requerimientos de información que debe

manejar la interfaz de administración de

recomendaciones, se han definido las siguientes

operaciones dentro del servicio Web desarrollado:

GetTiposRecomendacion: Se utiliza para

obtener todos los tipos de recomendación

existentes dentro del modelo del sistema

recomendador.

GetTipoRecomendacion: Se utiliza para

recuperar un tipo de recomendación en

particular.

GetRestricVencDeTipoRecomendacion: Para

obtener un conjunto de restricciones de

vencimiento asociadas a un tipo de

recomendación.

GetCategoriasAsociadasATipoRecomendaci

on: Para obtener las categorías que se

asocian a un tipo de recomendación.

GetCategoria: Obtener una categoría de

tipos de recomendaciones.

GetCategorias: Obtener todas las categorías

de recomendaciones existentes dentro del

sistema.

GetCondicionDeTipoRec: Obtener las

condiciones asociadas a un tipo de

recomendación.

GetValoresEstereotiposAtribModeloUsuario

: Datos recuperados desde el modelo de

usuario que indican los valores que puede

tomar un atributo de modelo de usuario.

Figura 3. Esquema del consumo del servicio Web

implementado para la interfaz de administración de

recomendaciones

Al ser un servicio Web basado en SOAP, cuenta con

un archivo WSDL (Web Services Description

Language), el cual describe las operaciones

disponibles del servicio. También, los datos que se

obtienen del servicio Web están definidos mediante el

lenguaje XML , el cual es elemento primordial de los

servicios Web basados en SOAP.

La aplicación de administración de recomendaciones

consume las operaciones del servicio creado para

todas las operaciones en las que es necesario obtener

datos desde el modelo del sistema recomendador. Los

mensajes XML se reciben y se les da tratamiento

adecuado para que sean presentados en las vistas como

información legible.

El servicio Web implementado permite que toda la

información disponible dentro del modelo de

recomendaciones esté disponible para otras

aplicaciones, de tal forma se asegura la

interoperabilidad, al ofrecer la información con un

mecanismo ampliamente usado y aceptado.

5.2. Desarrollo de las interfaces

Las interfaces de la aplicación se desarrollan con el

lenguaje PHP, HTML (Hypertext Markup Language),

Javascript (funciones de validación y navegación), y

CSS (Cascade Style Sheets, hojas de estilo en

cascada), para aplicar estilos estandarizados a las

interfaces. Para poder satisfacer los requerimientos

expuestos, se van a desarrollar las siguientes interfaces

de la aplicación:

• Menú lateral de funcionalidades

• Listado de tipos de recomendación

• Creación/edición de tipos de recomendación

• Listado de categorías de recomendaciones

• Creación /edición de categorías de

recomendaciones

• Borrado de datos.

5.2.1. Menú lateral de funcionalidades

Este menú contiene acceso a las funcionalidades que

se han desarrollado en todo el sistema. Este menú se

puede encontrar de forma constante en todas las

interfaces de la aplicación.

5.2.2. Listado de tipos de recomendación

Esta interfaz tiene como funcionalidad poder listar

todos los tipos de recomendaciones que se creen

dentro del sistema. Provee de facilidades para realizar

acciones de creación, visualización y borrado de los

tipos de recomendación.

5.2.3. Creación/Edición de tipos de

recomendación

Es una de las dos principales interfaces de la

aplicación. Provee las facilidades para ingresar todos

los campos de un tipo de recomendación, una plantilla

de recomendación, condiciones de aplicabilidad y

restricciones de vencimiento.

Fig. 4. Interfaz de creación/edición de tipos de

recomendaciones.

En esta interfaz se refleja el trabajo hecho en el

modelo de recomendaciones. Se puede observar que

en ella, se introducen los datos para alimentar las

tablas de tipos de recomendaciones, condiciones de

aplicabilidad, restricciones de vencimiento, y se

recuperan datos del modelado de usuario como estilos

de aprendizaje, zona geográfica, plataforma, niveles de

interés en recursos y curso, y niveles de interacción.

5.2.4. Listado de categorías de

recomendación

Consiste en un listado de las categorías de

recomendaciones que se crean dentro del sistema. Esta

interfaz provee las facilidades necesarias para crear,

visualizar, editar y eliminar categorías de

recomendaciones.

5.2.5. Creación/Edición de tipos de

recomendaciones

La segunda interfaz principal del sistema, esta interfaz

permite tanto la creación como la edición de tipos de

categorías.

5.2.6. Borrado de datos

Todas las interfaces de listados permiten borrar

los datos creados. Se ha desarrollado una interfaz

genérica para utilizarse contra categorías o tipos de

recomendaciones. Esta interfaz solicita que se

confirme la operación para evitar que se eliminen

datos por equivocación.

5.3. Integración con Moodle

La integración del sistema con Moodle se realiza

mediante la programación de un bloque Moodle, el

cual permite que los usuarios accedan desde el entorno

virtual de aprendizaje a la aplicación de interfaz de

administración de recomendaciones. Este bloque

puede colocarse tanto en las páginas principales de los

usuarios como en los cursos a los que tengan acceso.

Este bloque cumple con la función de verificar el rol

del usuario actual, de manera idéntica a los

mecanismos de la aplicación, de tal forma que no da

acceso a la aplicación sin los requisitos de acceso

necesarios (rol de administrador de recomendaciones).

5.4. Consideraciones de la programación de la

aplicación

5.4.1. Diseño visual

Las interfaces de la aplicación han sido programadas

con un estilo visual coherente. Para poder lograr esto,

se ha utilizado hojas de estilos en cascada (CSS), con

apego a los atributos estándar de CSS.

5.4.2. Prácticas de programación

Gracias a la utilización del lenguaje PHP, HTML y

Javascript, se ha logrado diseñar con soltura las vistas

de la aplicación. Se ha tomado en cuenta buenas

prácticas de programación y de seguridad, tales como

añadir secuencias de escape en los campos de texto,

analizar entradas de usuario para evitar inyección

SQL, no utilizar características no estándares de los

lenguajes, caso que ocurren con frecuencia con los

lenguajes HTML y Javascript, y los atributos de las

hojas de estilo en cascada.

5.4.3. Pruebas de la aplicación

Se ha definido, con el uso de la metodología de

programación XP, casos de prueba necesarios

para poder verificar que las interfaces funcionen

en la forma que se espera que funcionen, y que

resultan manejables por parte de los usuarios.

6. CONCLUSIONES

En el modelo de recomendaciones

desarrollado para el sistema, fue

necesario incluir información sobre las

recomendaciones, tipos de

recomendaciones, categorías, técnicas,

restricciones y condiciones;

adicionalmente a ello fue necesario incluir

información de modelado de

usuario, la cual permite determinar cuándo

las recomendaciones son

aplicables a los estudiantes.

La interfaz de administración desarrollada

permite crear tipos de

recomendaciones con valores definidos para

los atributos del modelo de

usuario, lo cual permitirá ofrecer los

recursos disponibles dentro del

entorno virtual mediante recomendaciones

creadas a partir de dichos

tipos.

La selección de los tipos de actividades:

tareas, foros, glosarios, mensajería,

cuestionario, subir archivo y recurso, se

realizó por que son los más utilizados dentro

del entorno virtual, por consiguiente con los

que están más familiarizados tanto

estudiantes como profesores.

La integración de la interfaz con Moodle es

necesaria para que el

sistema pueda ser accedido con facilidad

desde el Entorno Virtual de

Aprendizaje. La integración no sólo

contempla un fácil acceso y uso,

sino también un ambiente familiar de

trabajo, es decir, similar a las

interfaces propias del EVA.

El desarrollo de servicios Web permite el

acceso a la información del

modelo de recomendaciones en una forma

estandarizada. De tal forma es

sencillo, tanto para la interfaz de

administración de recomendaciones

como para otras aplicaciones, el acceso a

dicha información.

Un sistema de recomendaciones involucra la

acción de varios módulos:

un módulo de administración de

recomendaciones para establecer tipos

genéricos predeterminados de

recomendaciones, un módulo de modelado

de

usuario para determinar la pertinencia de la

oferta de

recomendaciones, y un módulo de tutor para

ofrecer las recomendaciones

por parte de los docentes a los alumnos.

Adicionalmente, un módulo de

seguimiento de usuarios permite obtener

información valiosa sobre las

interacciones de los estudiantes con el

Entorno Virtual.

7. RECOMENDACIONES

Se debe entender muy bien el

funcionamiento y estructura de un

sistema de recomendaciones para poder

generar un modelo de datos y construir el

sistema. Los modelos aportados por los

autores Santos y Boticario fueron de gran

utilidad para desarrollar el modelo de

datos para la interfaz de administración

de recomendaciones.

Es necesario realizar más trabajos

investigación para proveer de mayor

información sobre desarrollo de

aplicaciones integradas a Moodle.

Para formar un sistema de

recomendaciones completo deben

integrarse los diferentes módulos

desarrollados (Seguimiento de usuario,

Módulo Tutor, Modelado de usuario,

Interfaz de administración), así como

crear un agente de recomendaciones, el

cual se encarga de ofrecer las

recomendaciones a los estudiantes de

acuerdo a los valores de sus modelos de

usuario y las recomendaciones que se

ajusten a ellos.

Diseñar interfaces de usuario amigables

para que personas con diferentes niveles

de conocimiento puedan utilizar

aplicaciones sin mayores problemas.

Tener en cuenta aspectos como

navegabilidad, usabilidad, aspecto visual,

familiarización con entornos manejados

con anterioridad.

Debe realizarse un proceso de pruebas de

la aplicación, el cual es útil para verificar

el funcionamiento del sistema y la

impresión que tienen los usuarios sobre el

mismo.

Si los datos del sistema recomendador

deben estar disponibles para múltiples

aplicaciones sobre diferentes tipos de

plataformas, es conveniente implementar

un mecanismo estandarizado y de alta

accesibilidad para poder recuperarlos, tal

es el caso de los servicios Web.

Explorar las posibilidades del uso de más

tipos de actividades dentro del entorno

virtual para poder ofrecer dichas

actividades dentro de las

recomendaciones.

8. BIBLIOGRAFÍA

• Candillier, L., Jack, K., & Fessant, F. (2009).

State of the Art - Recommender Systems. Francia:

IGI Global.

• Davis, B., Carmean, C., & Wagner, E. (15 de

Octubre de 2009). Moodle Moves To The Front of

the LMS Adoption Pack. Recuperado el 2009, de

Learning Solutions Magazine:

http://www.learningsolutionsmag.com/articles/111

• Itmazi, J. (2005). Sistema flexible de gestión

de eLearning para soportar el aprendizaje en las

Universidades Tradicionales y Abiertas. Granada,

España.

• Krishnakumar, A. (2007). Recoo: A

Recommendation System for Youtube RSS Feeds.

Santa Cruz, California, Estados Unidos.

• Moodle.org. (2010). Moodle.org.

Recuperado el 2009, de

http://docs.moodle.org/en/Features

• Santos, O. (2009). Ampliando el apoyo

ofrecido por las plataformas de e-learning

mediante un servicio de recomendaciones.

Granada, España.

• Santos, O. C., Martín, L., Mazzone, E., &

Boticario, J. (2009). Management of

recommendations for accessible eLearning

platforms: is it a need for learning management

system users? Madrid, España.

• Santos, O., & Boticario, J. (s.f.). Users’

experience with a recommender system in an open

source standard-based learning management

system. (a. R. UNED, Ed.) Madrid, España.

• Somerville, I. (2005). Ingeniería del

Software, Pearson Addison-Wesley.

• Tartakoff, J. (20 de Agosto de 2009).

Moodle Moves To the Front of the LMS Adoption

Pack. Recuperado el 2009, de

http://paidcontent.org/article/419-youtube-tries-to-

get-visitors-to-watch-more-clips-new-

recommendation-sy/

• Turnbull, D. (s.f.). Interacting with

Recommender Systems. Recuperado el 2010, de

http://www.ischool.utexas.edu/~donturn/papers/ch

i99/chi99.html

• Wells, D. (1999-2009). The Rules of

Extreme Programming. Obtenido de The Rules of

Extreme Programming:

http://www.extremeprogramming.org/rules.html

• Zins, A. H., Bauernfeind, U., Del Missierb,

F., Venturinib, A., & Rumetshoferc, H. (2003). An

Experimental Usability Test for different

Destination Recommender Systems. Viena,

Austria.

Public Health Learning. (2010). Recuperado

el 12 de Julio de 2010, de LMS Overview:

http://www.publichealthlearning.com/Online_Help

_Guides/Closed/Learner_User_Manual/LMS%20

User%20Manual/!SSL!%5CWebHelp/Learner/LM

S_Overview.htm