Sie sind auf Seite 1von 172

UNIVERSIDAD DE ALCAL

Escuela Tcnica Superior de Ingeniera Informtica

INGENIERA INFORMTICA

Proyecto Fin de Carrera

Anlisis del desarrollo de extensiones para


Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Mara Jess Garca Alba


Diciembre 2010
UNIVERSIDAD DE ALCAL
Escuela Tcnica Superior de Ingeniera Informtica

INGENIERA INFORMTICA

Anlisis del desarrollo de extensiones para Moodle:


Desarrollo de un mdulo para la gestin de laboratorios docentes

Autor: Mara Jess Garca Alba


Director: D. Marcos Marv Ruiz

TRIBUNAL:

Presidente: D. David Orden Martn

Vocal 1: D Ana Marco Garca

Vocal 2: D. Marcos Marv Ruiz

CALIFICACIN: FECHA:
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Contenido
1 Resumen .................................................................................................................. 9

2 Introduccin .......................................................................................................... 11
2.1 Objetivos ........................................................................................................ 13

3 Las Tecnologas de la Informacin en la educacin ........................................ 15


3.1 La Web y la educacin a distancia ............................................................. 15

3.2 E-learning (Electronic Learning) ................................................................ 19


3.3 B-learning (Blended Learning) ................................................................... 21

3.4 La educacin superior y las TICS ............................................................... 23

3.5 Sistemas de Gestin de Aprendizaje ......................................................... 25

3.5.1 Sistemas de Administracin de Aprendizaje (LMS)........................... 26

3.5.2 Sistemas de Administracin de Contenidos de Aprendizaje (LCMS)


28
3.6 Moodle ........................................................................................................... 29
4 Arquitectura de Moodle ...................................................................................... 33
4.1 Entorno de Moodle....................................................................................... 33

4.2 Base de datos ................................................................................................. 34


4.3 Sistema operativo ......................................................................................... 35

4.4 Servidor Web................................................................................................. 35


4.5 Estructura de directorios ............................................................................. 37

4.5.1 Cdigo de Moodle ................................................................................... 37

4.5.2 Base de datos de Moodle ........................................................................ 40


4.5.3 Datos de Moodle ...................................................................................... 40

4.6 Estructura bsica de Moodle....................................................................... 41

4.6.1 Actividades ............................................................................................... 42


4.6.2 Recursos .................................................................................................... 44

4.6.3 Bloques ...................................................................................................... 45

4.7 Control de acceso, inicio de sesin y roles de usuario ............................ 47


4.7.1 Permisos .................................................................................................... 48
4.7.2 Capacidades ............................................................................................. 49

4.7.3 Roles .......................................................................................................... 49

5
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5 Desarrollo de un mdulo de actividad.............................................................. 51


5.1 Instalacin de Moodle.................................................................................. 51

5.1.1 Requisitos.................................................................................................. 51
5.1.2 Instalacin de requisitos ......................................................................... 53

5.1.3 Instalacin de Moodle ............................................................................. 54

5.2 Guas de estilo para desarrolladores ......................................................... 62


5.2.1 Estilo del cdigo....................................................................................... 62

5.2.2 Reglas generales....................................................................................... 62

5.2.3 Estilo de la interfaz .................................................................................. 69


5.3 Estructura de un mdulo de actividad...................................................... 71
5.3.1 Ficheros principales................................................................................. 72
5.4 Libreras para el desarrollo de mdulos ................................................... 83

5.4.1 accesslib.php ............................................................................................ 84


5.4.2 datalib.php................................................................................................ 85

5.4.3 ddllib.php ................................................................................................. 86


5.4.4 dmllib.php ................................................................................................ 86

5.4.5 weblib.php ................................................................................................ 90


5.4.6 moodlelib.php .......................................................................................... 90
5.4.7 Otras libreras importantes .................................................................... 91
5.5 Creacin de un mdulo sencillo ................................................................. 91
5.5.1 Formulario de configuracin de la instancia ....................................... 92

5.5.2 Tablas del mdulo en la base de datos ................................................. 94


5.5.3 Edicin de la librera de funciones del mdulo .................................. 95
5.5.4 El paquete de idioma .............................................................................. 96

5.5.5 Permisos del mdulo .............................................................................. 97


5.5.6 Otros ficheros importantes ..................................................................... 98

5.5.7 Actualizacin del mdulo ...................................................................... 98


5.5.8 Crear soporte para copias de seguridad y restauracin .................... 99

6 Mdulo de gestin de grupos de laboratorio: Gruposlab ............................ 103

6.1 Definicin del sistema................................................................................ 103


6.1.1 Descripcin y planteamiento del problema ....................................... 103

6
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.1.2 Descripcin general del entorno tecnolgico .................................... 104


6.1.3 Identificacin de usuarios .................................................................... 106

6.2 Catlogo de requisitos ............................................................................... 106


6.2.1 Requisitos funcionales .......................................................................... 106

6.2.2 Requisitos de datos................................................................................ 113

6.2.3 Requisitos de Interfaz ........................................................................... 114


6.2.4 Requisitos de Seguridad ....................................................................... 115

6.2.5 Requisitos de codificacin .................................................................... 116

6.3 Anlisis de la aplicacin ............................................................................ 116


6.3.1 Modelo de datos .................................................................................... 116
6.3.2 Modelo de casos de uso ........................................................................ 120
6.3.3 Diagramas de flujo ................................................................................ 126

6.3.4 Definicin de interfaces de usuario..................................................... 130


6.3.5 Diagrama de componentes................................................................... 135

6.3.6 Especificacin del plan de pruebas ..................................................... 136


7 Manuales de usuario .......................................................................................... 141

7.1 Manual del usuario profesor .................................................................... 141


7.1.1 Aadir el mdulo GruposLab a un curso .......................................... 141
7.1.2 Configuracin general de la aplicacin .............................................. 141
7.1.3 Configuracin particular de cada grupo ............................................ 142
7.1.4 Administrar los grupos de laboratorio ............................................... 145

7.2 Manual del usuario alumno ...................................................................... 148


7.2.1 Matricularse en un grupo de laboratorio ........................................... 148
7.2.2 Comprobar su grupo de laboratorio ................................................... 150

7.3 Manual de administrador ......................................................................... 151


7.3.1 Instalar mdulo GruposLab ................................................................. 151

7.3.2 Desinstalar mdulo GruposLab .......................................................... 153


8 Presupuesto ......................................................................................................... 155

8.1 Presupuesto de ejecucin material ........................................................... 155

8.1.1 Costes de sistemas ................................................................................. 155


8.1.2 Costes por tiempo de trabajo ............................................................... 156

7
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

8.1.3 Coste total de ejecucin material ......................................................... 156


8.2 Gastos generales y beneficio industrial ................................................... 157

8.3 Presupuesto de ejecucin por contrata .................................................... 157


8.4 Honorarios facultativos ............................................................................. 157

8.5 Importe total del presupuesto .................................................................. 158

9 Conclusiones y trabajos futuros ....................................................................... 159


10 Bibliografa ...................................................................................................... 163

11 ndice de ilustraciones ................................................................................... 167

12 ndice de tablas ............................................................................................... 169


13 ndice de cdigo.............................................................................................. 171

8
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

1 Resumen
En este proyecto de fin de carrera se da una solucin al problema del reparto de
alumnos en los grupos de prcticas de algunas asignaturas universitarias. Para ello se
ha realizado un mdulo para la plataforma de enseanza virtual Moodle, encargado de
facilitar esta labor tanto a los alumnos como a los profesores.

Al hilo de esta aplicacin, se ha recopilado y sistematizado el material de ayuda


para desarrolladores disponible en la red. Asimismo, se ha redactado una gua que
ayudar a los principiantes en la tarea de modificar mdulos existentes o aadir
nuevas funcionalidades a Moodle.

9
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

2 Introduccin
La incorporacin de las tecnologas de la informacin en el aula ha supuesto un
cambio en la enseanza tradicional a nivel metodolgico y actitudinal tanto para los
profesionales de la enseanza como para los propios alumnos (Romero, 2006). Como
consecuencia de esta irrupcin tecnolgica, se hace necesario un entorno software
adecuado para albergar los contenidos de aprendizaje.

Se puede considerar los Sistemas de Gestin de Aprendizaje (SGA) o Learning


Management System (LMS) como el software que automatiza la administracin de
acciones de formacin. Estos sistemas registran usuarios, organizan diferentes cursos
en un catlogo, almacenan datos sobre usuarios y proveen de informes para la gestin.
Ofrecen los mecanismos necesarios para que el formador pueda crear y distribuir
contenidos, monitorizar la participacin de los alumnos inscritos, as como evaluar su
desempeo. (Arribas, 2008).

En la actualidad existe una amplia oferta de Sistemas de Gestin de


Aprendizaje, entre la que cabe destacar las plataformas de uso libre o cdigo abierto.
Estas ofrecen mltiples ventajas a la institucin que decida adoptarlas, como la
ausencia de pagos por licencias comerciales. O la posibilidad de modificar o ampliar el
software segn las necesidades de la institucin, ya que se cuenta con acceso directo al
cdigo fuente. En este ltimo punto se centrar el desarrollo del proyecto de fin de
carrera, como se detallar ms adelante.

Dentro de los Sistemas de Gestin de Aprendizaje de cdigo abierto cabe


destacar al ya mencionado Moodle (Module Object-Oriented Dynamic Learning
Environment) (Moodle, 2009), que cuenta en la actualidad con 44,921 sitios y ms de 30
millones de usuarios en 208 pases del mundo (http://moodle.org/stats/), y se ha
puesto, en los ltimos aos, a la cabeza del mercado de aprendizaje a distancia
(Jernimo, 2008).

Moodle es un paquete de software para la creacin de cursos y sitios Web


basados en internet. Es un proyecto en desarrollo diseado para dar soporte a un
marco de educacin social constructivista (Gmez, 2005 citado por Jernimo, 2008).

Uno de los principales aspectos que caracteriza a Moodle es su estructura


modular. Gracias a ella, es posible modificar, eliminar o crear nuevos mdulos o
aplicaciones para adaptar la plataforma a las necesidades formativas de cada
institucin.

Los grupos de innovacin docente del Departamento de Matemticas de la


Universidad de Alcal (InnovamatUAH y LibreTICS) vienen realizando un esfuerzo

11
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

para generalizar el uso de las TIC a nivel docente. Estas actuaciones se han centrado en
la utilizacin de Moodle como herramienta para la gestin de la docencia y, de forma
simultnea, en la adaptacin de las asignaturas del departamento hacia el Espacio
Europeo de Educacin Superior (EEES). No obstante, teniendo en cuenta que los
estudios son presenciales, no se considera Moodle como un medio bsico de
comunicacin con los estudiantes, pero s una buena herramienta para el auto
aprendizaje y la autoevaluacin. Aun as, de cara a la implantacin del espacio EEES, la
utilizacin de Moodle permitir organizar y programar el trabajo docente de una forma
muy gil, clara y estructurada.

Durante la puesta en marcha de la plataforma Moodle en el Departamento de


Matemticas, en el que disfruto de una beca de formacin, echamos en falta en la
herramienta (Moodle) una serie de funcionalidades que seran de utilidad. Una de ellas
era el citado mdulo para gestionar laboratorios docentes. Hasta la fecha, esta tarea era
soportada por otra aplicacin, llamada Fourier y que en su momento constituy un
trabajo de fin de carrera. Adems, cuando se plante el desarrollar este mdulo, un
rpido vistazo a la documentacin para desarrolladores Moodle puso de manifiesto
que la informacin fundamental se encuentra dispersa.

El prrafo anterior recoge las necesidades a las que responde este proyecto. Por
un lado, se estudiar con detenimiento la arquitectura de Moodle, as como la
documentacin y las libreras de cdigo que provee al desarrollador. Se realizar una
gua o manual para el desarrollador que ayude en la tarea de modificar o desarrollar
nuevas extensiones para aadir funcionalidades a la plataforma. Por otro lado, se
desarrollar un mdulo para gestionar los laboratorios docentes de las asignaturas del
departamento de Matemticas de la Universidad de Alcal, que permitir a los
profesores configurar los grupos de prcticas disponibles y a los alumnos seleccionar
varios laboratorios en orden de preferencia. Ser el propio mdulo el que se encargar
de repartir los alumnos entre los grupos, de acuerdo a un algoritmo equitativo, e
informar a cada alumno de cul es el grupo en el que se encuentra. El cdigo fuente
de este mdulo, as como toda la documentacin en formato digital se adjuntar
mediante un CD a la memoria final.

Actualmente la plataforma virtual Moodle del Departamento de Matemticas


cuenta con una media de 12.000 visitas diarias, generadas por los ms de 2.500 usuarios
registrados en la plataforma y matriculados en cerca de un centenar de cursos
correspondientes a asignaturas de diferentes titulaciones, seminarios y msteres
universitarios. Estos elevadas cifras nos permiten imaginar la importancia que tendr
el mdulo desarrollado y los beneficios que reportar a todos los usuarios del Sistema
de Gestin de aprendizaje Moodle.

12
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

2.1 Objetivos
En este apartado se detallan los objetivos generales expuestos en la seccin
anterior: Organizar y sistematizar la documentacin para desarrolladores de Moodle
relacionada con el desarrollo extensiones y realizar un mdulo para la gestin de los
laboratorios docentes del departamento de Matemticas de la Universidad de Alcal
integrado en la plataforma Moodle. Con estas ideas en mente, los objetivos especficos
planteados son los siguientes:

1. Revisar la documentacin para desarrolladores que proporciona Moodle, as


como las distintas libreras de cdigo fuente que incluye.
2. Analizar los distintos tipos de extensiones que se pueden desarrollar para
Moodle (Mdulos de actividades, bloques, temas, etc), estudiando las
peculiaridades de cada una y las funcionalidades que pueden ofrecer.
3. Repasar los mdulos estndar de Moodle, y determinar cules podran ser
algunas de las funcionalidades docentes requeridas por el Departamento de
Matemticas que no estn cubiertas correctamente por estos mdulos.
4. Desarrollar un mdulo para la gestin de laboratorios docentes adaptado a las
peculiaridades del departamento de Matemticas de la Universidad de Alcal.
5. Probar y depurar el mdulo obtenido en un entorno educativo real, donde
alumnos y profesores puedan contribuir localizando errores y aportando
sugerencias.
6. Redactar un detallado manual de usuario, tanto para el administrador de
mdulo, como para el profesor y el alumno.
7. Realizar una breve gua que englobe y ordene los recursos ofrecidos por Moodle
para ayudar en el proceso de desarrollo de un mdulo de actividad.
8. Enviar el mdulo de gestin de laboratorios a Moodle.org para que, tras ser
aprobado por sus revisores oficiales, sea incluido en la lista de extensiones no
oficiales y pueda ser descargado y utilizado por cualquier institucin que lo
necesite.
9. Redactar un informe o memoria final que contenga toda la documentacin
citada en los objetivos anteriores, as como la gua de ayuda para el
desarrollador de mdulos y las conclusiones obtenidas de la realizacin del
trabajo.

En cuanto a la estructura de este proyecto de fin de carrera y la metodologa


empleada, en primer lugar se ha llevado a cabo una breve revisin bibliogrfica sobre
los temas de enseanza electrnica y sistemas de gestin de aprendizaje.
Posteriormente se hace un breve estudio sobre los recursos para el desarrollador que
proporciona Moodle en su portal Web. Ms tarde se han estudiado los distintos tipos
de extensiones con las que el desarrollador puede colaborar en la modificacin o
ampliacin de las capacidades de la plataforma virtual, y se han analizado los mdulos
oficiales que contiene el paquete de descarga de Moodle, para identificar algunas
necesidades particulares del departamento que no estn cubiertas con estos mdulos
estndar.

13
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

A continuacin se ha ejecutado el desarrollo de un mdulo para la gestin de


laboratorios docentes, y al hilo de este desarrollo se ha ido confeccionando una gua o
tutorial que servir como ayuda y referencia al futuro desarrollador de mdulos.
Por ltimo, se ha completado esta memoria final donde se recogen los
resultados del proyecto, as como las conclusiones a las que se ha llegado tras la
realizacin del trabajo.

14
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

3 Las Tecnologas de la Informacin en la educacin


En este apartado analizaremos una serie de conceptos tericos relacionados con
la influencia de las tecnologas de la informacin en el mbito de la educacin, que nos
servirn para definir el contexto en el que se situar la temtica del presente proyecto
de fin de carrera. En primer lugar se analizar la necesidad de la Web en la educacin a
distancia, para despus pasar a definir conceptos bsicos como e-learning o b-learning.
A continuacin se examinar la repercusin de las TICS en la educacin superior y
posteriormente se explicarn los distintos tipos de plataformas de enseanza virtual
con los que cuentan las universidades. Y por ltimo, al hilo de este apartado, se
describirn brevemente las caractersticas de la plataforma de cdigo libre Moodle, que
es actualmente se utiliza en el departamento de Matemticas de la
Universidad de Alcal.

3.1 La Web y la educacin a distancia


La Web o WWW (World Wide Web) (Berners-Lee, 1999) se puede calificar sin
duda alguna como el componente fundamental que ha revolucionado y popularizado
el uso de Internet, gracias a ser un medio de difusin y comunicacin abierto, flexible y
de tecnologa muy simple. Esto ha dado origen a un amplio espectro de aplicaciones
como el comercio electrnico, la banca electrnica o los sistemas de entretenimiento en
lnea, por mencionar algunos.

El sector educativo ha encontrado en esta tecnologa un excelente medio para


romper con las limitaciones geogrficas y temporales que los esquemas tradicionales
de enseanza-aprendizaje conllevan, revolucionando, y cambiando a la vez, el
concepto de educacin a distancia. Su adopcin y uso han sido amplios, lo que ha
permitido un desarrollo rpido y consistente en el que la Web ha ido tomando distintas
formas dentro de los procesos educativos.

Medios como la radio, la televisin, las grabaciones sonoras, el vdeo, el telfono


y, ms recientemente, los diferentes servicios de Internet han hecho de la educacin a
distancia una alternativa para quines por limitaciones geogrficas, ocupacionales o
fsicas no pueden asistir a los cursos en escuelas presenciales tradicionales.

La Web se convierte en la infraestructura bsica para desarrollar los procesos de


enseanza-aprendizaje no presenciales. As, ha dado lugar a un modelo conocido como
e-formacin o e-learning, cada vez ms valorado, no como sustituto de la formacin
presencial tradicional, sino ms como un complemento que se ha de adaptar segn las
necesidades y nivel de madurez del pblico receptor de esta formacin (Garca y
Garca, 2001), que puede ir desde ser una actividad complementaria muy concreta y
residual en los estudios de primaria y secundaria, a ser un modelo nicamente no

15
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

presencial en la formacin a distancia o formacin continua empresarial. No obstante,


las aproximaciones mixtas, que combinan actividades formativas presenciales y no
presenciales (o soluciones blended), toman cada vez ms fuerza y se posicionan como
una importante alternativa ante los grandes retos que se avecinan con la integracin
del sistema universitario al nuevo Espacio Europeo de Educacin Superior y el
creciente peso de la formacin a lo largo de toda la vida.

La educacin a distancia ha tenido un proceso de evolucin a la par con las


tecnologas que rpidamente han ido surgiendo en las ltimas dcadas, en este sentido
Mena (2004) afirma que en realidad la educacin a distancia ha tenido siempre una
ntima relacin con la tecnologa sobre todo con la que la sociedad consideraba
hegemnica en cada momento.

La Web se ha introducido rpidamente como un recurso de apoyo, de extensin


o de sustitucin a los esquemas tradicionales de enseanza presencial o a distancia. La
aplicacin de las tecnologas Web ha dado origen incluso a aplicaciones dinmicas que
permiten la generacin de cursos apegados a las necesidades particulares de cada
estudiante y a las posibilidades tecnolgicas y de contenidos de la Web (Vassileva,
1997). Aggarwal & Bento (2003) sugieren tres formas en las que la Web participa en
un proceso de enseanza-aprendizaje:

1. Web para el almacenamiento, diseminacin y recuperacin de informacin. La


Web es un importante apoyo para el acceso a contenidos de los sistemas de
enseanza tradicional. Los alumnos pueden consultar informacin o tener
acceso a los contenidos de clase en la Web aunque toda la instruccin se lleva a
cabo de manera presencial.
2. Web para enseanza en dos medios (mixta). Muchas instituciones educativas
estn optando por impartir una parte de la instruccin presencial y otra parte a
travs de la Web. Es lo que se conoce como aprendizaje mixto (blended
learning).
3. Aprendizaje Basado en Web. Consiste en llevar a cabo todo el proceso
educativo a travs de la Web, prescindiendo por completo de cualquier
componente de la enseanza presencial tradicional.

Con mayor o menor penetracin en cada uno de los modelos, la tecnologa Web
se impone como la tendencia en el desarrollo de sistemas educativos apoyados por las
TIC. Una importante aportacin de estas tecnologas a la educacin a distancia clsica
es la incorporacin de los conceptos de formacin sncrona y asncrona (Marcelo,
Puente, Ballesteros & Palazn, 2002). En la formacin sncrona se establece una
relacin temporal como la que comnmente se tienen en un curso en un aula
tradicional , en el que los participantes deben coincidir en un mismo instante de

16
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

tiempo, como es el caso de las aulas de videoconferencia de una sola va en la que la


comunicacin se establece slo del ponente al receptor, lo cual facilita y abarata el
servicio; o videoconferencias de dos canales en las que el ponente o profesor y los
alumnos interactan en tiempo real, pero con el inconveniente de altos costos y poca
masificacin (Romero & Rubio, 2004). En la formacin asncrona los asistentes no
necesariamente tienen concurrencia temporal, pueden acceder al sistema cuando les
sea conveniente, para consultar los materiales y para participar en las diversas
actividades programadas. En ambos casos, el lugar desde el que los asistentes
participen es irrelevante.

A pesar de que el aporte de las TIC ha sido la interaccin a distancia en tiempo


real, en la prctica el modelo ms socorrido es el asncrono y lo ms comn es
encontrar sistemas con herramientas que permiten ambos tipos de comunicacin. Por
ejemplo se puede mencionar a los campus virtuales que dan la posibilidad de acceder a
materiales y conexin con los profesores por e-mail, en los sistemas ms bsicos, o por
emulaciones de campus presenciales con funciones ms sofisticadas como foros,
debates, bibliotecas digitales, matrcula y consultas, entre otras (Romero & Rubio,
2004).

Sin lugar a dudas, la Web ha permitido que las posibilidades de educacin, a


ciertos niveles y con aplicaciones muy especficas, se masifiquen y se globalicen
haciendo posible que aplicaciones relativamente sencillas puedan ser utilizadas por
individuos dispersos geogrficamente y abriendo un nuevo espacio cultural, educativo
e incluso comercial, conocido como e-learning.

De acuerdo a un estudio realizado por la Organizacin para la Cooperacin y


el Desarrollo Econmico OCDE en 2002 estas son las principales ventajas educativas
que ofrecen las nuevas tecnologas.

Independencia en tiempo y en espacio: aprender en cualquier sitio y momento.


Acceso de todos a la educacin.
Acceso a travs de Internet a recursos y servicios educativos en permanente
crecimiento.
Potencial para un aprendizaje basado en tareas utilizando software rpido de
bsquedas y recuperacin, o para el trabajo de investigacin.
Formacin bajo demanda.
Enseanza / aprendizaje a distancia mediante las TIC.

Sin embargo, si se utilizan las TIC correctamente, pueden generar grandes


beneficios tambin a la educacin presencial. Vivimos en la sociedad de la informacin,
en un mundo globalizado donde los avances tecnolgicos han originado profundas
transformaciones tanto en la banca, como en los sistemas financiero, comercial y

17
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

productivo de todo el mundo. Por qu creemos que la educacin puede sobrevivir sin
hacer ninguna de esas transformaciones y sin utilizar ninguna de las herramientas
tecnolgicas, que la gente usa para desarrollar transformaciones en todos los dems
sistemas? (Escorcia, 2001).

Adems de superar las barreras de espacio y las limitaciones de horarios rgidos


y establecidos de la educacin tradicional. La incorporacin de las TIC en el aula ayuda
a mejorar los siguientes aspectos educativos, segn el mismo estudio de la OCDE antes
citado:

Eleccin del estilo de enseanza.


Servicios y materiales de enseanza personalizados.
Seguimiento y registro individual de los procesos educativos.
Autoevaluacin y monitorizacin del rendimiento del alumno.
Comunicacin interactiva entre los agentes que participan o influyen en los
procesos educativos.
Acceso interactivo a recursos didctico.

El entrenamiento basado Web (Web Based Training o WBT), es una de las


tecnologas ms utilizadas por su facilidad de implementacin. En los ltimos aos ha
evolucionado de manera acelerada, con el surgimiento de plataformas gestoras del
aprendizaje LMS (Learning Management System) y sus variantes como las plataformas
gestoras de contenidos de aprendizaje LCMS (Learning Content Management System)
y los sistemas manejadores de cursos CMS (Course Management System). Estas
permiten crear un entorno virtual de aprendizaje con mucha facilidad, sin necesidad de
ser expertos programadores. Podemos definir una LMS como un sistema que organiza
las actividades de formacin dentro de una institucin (Join, 2005). La plataforma
comercial ms popular es Blackboard.

Una alternativa factible es utilizar plataformas LMS basadas software libre. El


software libre es el software que, una vez obtenido, puede ser usado, copiado,
estudiado, modificado y redistribuido libremente. Suele estar disponible
gratuitamente en Internet.

El software libre es propiedad de todos: cada persona en el mundo tiene


derecho a usar el software, modificarlo y copiarlo de la misma manera que los autores
de este mismo. Es un legado de la humanidad que no tiene propietario, de la misma
manera que las leyes bsicas de la fsica o las matemticas. No existe un monopolio y
no es necesario pagar peaje por su uso (Hernndez, 2005).

Existe una variedad bastante grande de licencias de software libre que podemos
dividir en dos grandes familias. Una de ellas est compuesta por las licencias que no

18
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

imponen condiciones especiales en la segunda redistribucin esto es, que slo


especifican que el software se puede redistribuir o modificar, pero no imponen
condiciones especiales para stos casos, lo que conlleva por ejemplo, que alguien que
reciba el programa pueda despus redistribuirlo como software propietario. Estas
licencias son las que llamaremos licencias permisivas. La otra familia, que
denominaremos licencias robustas o licencias copyleft, que al estilo de la GNU GPL,
imponen condiciones en caso de que se quiera redistribuir el software, condiciones que
van en la lnea de forzar a que se sigan cumpliendo las condiciones de la licencia
despus de la primera redistribucin. Mientras que el primer grupo hace nfasis en la
libertad de quien recibe un programa, ya que le permite hacer casi lo que quiera con l,
solo en trminos de las redistribuciones siguientes, el segundo obliga a que las
sucesivas modificaciones y redistribuciones respeten los trminos de la licencia
original.

Moodle es una de las plataformas LMS de software Libre ms populares, que se


distribuye bajo licencia GNU y que est actualmente viviendo una fase explosiva de
expansin. Su comunidad de usuarios y desarrolladores es muy numerosa y se
caracteriza por su entusiasmo respecto al sistema. Moodle es un proyecto inspirado en
la pedagoga del constructivismo social. (Join, 2005). Es un sistema muy flexible que
funciona prcticamente en cualquier plataforma y muy fcil de administrar y operar.
Por eso resulta conveniente utilizar Moodle como entorno virtual de aprendizaje para
apoyar y enriquecer la enseanza tradicional.

3.2 E-learning (Electronic Learning)


Actualmente, la modalidad ms innovadora en la educacin a distancia basada
en Web son los sistemas o entornos e-learning, que hacen uso de los servicios y
facilidades de Internet para hacer posible el proceso de enseanza-aprendizaje.

Diferentes autores definen el concepto de e-learning de muy diversas formas,


segn la idiosincrasia y el mbito de aplicacin en el que se est utilizando.

Si se toma como referencia la raz de la palabra, e-learning se traduce como


aprendizaje electrnico, y como tal, en su concepto m{s amplio puede comprender
cualquier actividad educativa que utilice medios electrnicos para realizar todo o parte
del proceso formativo.

En el glosario de trminos de la American Society of Training and Development


(Kaplan-Leiserson, 2010) se encuentra la siguiente definicin: e-learning (electronic
learning): Trmino que cubre un amplio grupo de aplicaciones y procesos, tales como
aprendizaje basado en Web, aprendizaje basado en computadora, aulas virtuales y
colaboracin digital. Incluye entrega de contenidos va Internet, intranet/extranet,
audio y videograbaciones, transmisiones va satlite, TV interactiva, CD-ROM y m{s.

19
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

sta es una definicin que abre el rango del e-learning prcticamente a


cualquier proceso relacionado con educacin y tecnologas. Sin embargo, otros autores
acotan ms el alcance del e-learning reducindolo exclusivamente al mbito de
Internet, como Rosenberg (2001) que lo define como: el uso de tecnologas de
Internet para la entrega de un amplio rango de soluciones que mejoran el conocimiento
y el rendimiento. Est basado en tres criterios fundamentales:

1. El e-learning trabaja en red, lo que lo hace capaz de ser instantneamente


actualizado, almacenado, recuperado, distribuido y permite compartir
instruccin o informacin.
2. Es entregado al usuario final a travs del uso de ordenadores utilizando
tecnologa estndar de Internet.
3. Se enfoca en la visin ms amplia del aprendizaje que va ms all de los
paradigmas tradicionales de capacitacin.

Es comn encontrar referencias del uso de e-learning enfocado slo a la


empresa, esto es debido a que la capacitacin basada en computadoras o CBT
(Computer Based Training) tuvo su origen en la industria, sin embargo, como la
definicin dada lo ha propuesto anteriormente, el e-learning se aplica ms all de los
paradigmas tradicionales de capacitacin y cubre las aplicaciones ms amplias de los
modelos de enseanza-aprendizaje.

Los entornos e-learning son complejos ecosistemas en los que intervienen


usuarios con distintas habilidades y objetivos, sistemas de diversas aplicaciones con
tecnologas heterogneas y contenidos digitales de formas y formatos diversos. Llegar
a una operacin e integracin en la que todos los componentes involucrados (personas
y sistemas) realicen sus tareas, interacten y obtengan los resultados deseados es una
labor compleja que requiere de esfuerzos importantes para lograr la comunicacin y la
transmisin de informacin, de forma parcial o global, entre aplicaciones y
organizaciones.

En la prctica, para llevar a cabo un programa de formacin basado en e-


learning, se hace uso de plataformas o sistemas de software que permiten la
comunicacin e interaccin entre profesores, alumnos y contenidos. Se tienen
principalmente dos tipos de plataformas: las que se utilizan para impartir y dar
seguimiento administrativo a los cursos en lnea y, por otro lado, las que se utilizan
para la gestin de los contenidos digitales. Ambas plataformas las estudiaremos con
ms detalle en apartados posteriores.

La imparticin de un curso tambin puede llevarse a cabo de forma combinada,


con una parte basada en e-learning y otra en los mtodos tradicionales, dndose lo que
se conoce como blended learning (Thorne, 2003). De esta flexible combinacin en la

20
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

que los cursos se imparten de forma mixta, muchas organizaciones estn extrayendo
beneficios para los alumnos y para las organizaciones. Desde este punto de vista el e-
learning no viene a desplazar a los modelos tradicionales, sino que es un medio
alternativo o complementario para poder impartir educacin a los sectores que antes
no eran accesibles.

3.3 B-learning (Blended Learning)


La incorporacin de las TICs en el aula ha supuesto un cambio en la enseanza
tradicional a nivel metodolgico y actitudinal tanto para los profesionales de la
enseanza, como para los propios alumnos. (Romero, 2006).

Cuando la instruccin tradicional en el aula es combinada con tecnologa Web,


se le conoce como insercin de tecnologa o Mejoramiento en Web. Actualmente, es
uno de los segmentos ms populares y de ms extenso crecimiento en la educacin
superior. (Belanger y Jordan, 2000).

Los beneficios que la Web provee pueden ser utilizados para preparar
estudiantes antes de la clase, para retencin en el aprendizaje y para proveer un til
depsito de los materiales del curso.

Recientemente esta innovacin ha dado lugar a un nuevo modelo denominado


b-learning (Blended Learning), donde no se trata solo de agregar tecnologa a la clase,
sino de reemplazar algunas actividades de aprendizaje con otra apoyadas con
tecnologa. (Rosas, 2005). Es decir, se trata de un modelo compuesto por instruccin
presencial y caractersticas del aprendizaje electrnico o e-learning, con la finalidad de
potenciar las fortalezas y disminuir las limitaciones de ambas modalidades.

Para Bartolom (2004) la idea clave es la seleccin de los medios adecuados para
cada necesidad educativa. Es decir, se trata de un modelo eclctico compuesto por
instruccin presencial y funcionalidades del aprendizaje electrnico o e-learning, con la
finalidad de potenciar las fortalezas y disminuir las limitaciones de ambas
modalidades. Este modelo permite permanecer menos tiempo en el aula, propicia un
potencial ahorro de espacios fsicos e incrementa la participacin de los estudiantes
como responsables de su propio aprendizaje entre otros beneficios.

El trmino blended learning, se puede traducir al castellano como


Aprendizaje Mixto, sigue una tendencia con una marcada raz procedente del campo
de la psicologa escolar en la que destaca el trmino aprendizaje como contrapuesto
al de enseanza (Bartolom, 2004).

Blended learning no es un concepto nuevo. Durante aos hemos estado


combinando las clases magistrales con los ejercicios, los estudios de caso, juegos de rol

21
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

y las grabaciones de vdeo y audio, por no citar el asesoramiento y la tutora (Brodsky,


2003). Quiz el termino sea lo ms novedoso, se han dado otras denominaciones a
modalidades del mismo tipo en diferentes contextos. Por ejemplo en la Universitat de
Illes Balears, se describe como Educacin Flexible el sistema en donde se aprovechan
sistemas virtuales como la videoconferencia o la web, con sesiones presenciales.
Tambin se utilizan trminos como enseanza semipresencial, formacin mixta y en la
literatura anglosajona se utiliza el trmino Modelo Hbrido.

De acuerdo a estudios realizados por Bartolom (2004), Blended learning no


surge del e-learning sino de la enseanza tradicional ante el problema de los elevados
costos. Sin embargo tambin se puede justificar la implantacin de este modelo por
razones de pertinencia y de calidad en la educacin.

En b-learning el formador asume de nuevo su rol tradicional, pero usa en


beneficio propio el material didctico que la informtica e Internet le proporcionan,
para ejercer su labor en dos frentes: como tutor on-line y como educador tradicional. La
forma en que combine ambas estrategias depende de las necesidades especficas de ese
curso, dotando as a la formacin online de una gran flexibilidad.

Utilizando un buen sistema de gestin de aprendizaje y con un programa de


formacin continua bien fundamentado para el personal docente tanto en los aspectos
metodolgicos como en los tcnicos, es posible incorporar gradualmente esta
modalidad de enseanza en la Educacin Superior.

Tanto el aprendizaje electrnico (e-learning) como el aprendizaje combinado (b-


learning) tiene sus fundamentos en las teoras del aprendizaje y su aplicacin al uso de
medios tecnolgicos. En este sentido, podramos identificar las siguientes teoras:

Conductismo: atencin a ejercicios de tipo mecnico con retroalimentacin


inmediata (por ejemplo, tutoriales).
Constructivismo: atencin a la construccin de los conocimientos basado en el
esfuerzo individual (por ejemplo, exploracin en bibliotecas virtuales, estudio
de casos)
Cognitivismo: atencin a las estrategias de aprender a aprender y capacidad
indagativa de los estudiantes (por ejemplo, exploracin).
Humanismo: atencin a diferencias individuales y al trabajo colaborativo (por
ejemplo, estilos y ritmos de aprendizaje).

Por lo tanto, y aunque se enfatiza la centralidad del estudiante, esta modalidad


de aprendizaje combinado no descansa en un nico modelo, sino que ms bien supone
un enfoque eclctico orientado a la reflexin crtica como componente esencial. Ms
an, Dodge (2001) plante que el blended learning involucra poner a los estudiantes

22
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

en diversas situaciones en las cuales han de interactuar. As, segn diversos autores, la
interaccin en un ambiente de aprendizaje combinado es un importante componente
del proceso cognitivo, pues incrementa la motivacin, una actitud positiva hacia el
aprendizaje, y el aprendizaje significativo (Sutton, 1999).

3.4 La educacin superior y las TICS


A todo esto, las universidades convencionales, tal como las califican Tait y
Mills (1999) ya han comenzado a reaccionar. Si bien es cierto que no existen indicios
suficientemente cientficos para apoyar esta idea, el salto cualitativo realizado por
algunas universidades a distancia, ha permitido que algunas instituciones de
educacin superior hayan salido de su letargo y estn dispuestas tambin a aprovechar
al mximo no slo lo que les ofrecen las TIC, sino tambin el aprendizaje que pueda
venir de la mano de experiencias de educacin a distancia.

En este sentido, la reaccin de las universidades convencionales tiene


formalizaciones bien distintas. Por un lado, nos estamos encontrando universidades
que simplemente permiten el uso de las TIC a su profesorado en su labor docente
cotidiana. Son instituciones que todava no creen de manera decidida en la aportacin
de estas nuevas prcticas al conjunto de la educacin universitaria. Prefieren establecer
un periodo de prueba en el cual sea su profesorado quien explore, experimente y
valore qu se podra hacer, a dnde se podra llegar y cmo debera hacerse.

Por otro lado, hay otras instituciones universitarias que, conscientes de la


importancia que el uso de las TIC puede tener para no quedar rezagados respecto otras
universidades, impulsan su uso entre su profesorado. Es lo que Bates (2000) ha
denominado el imperativo tecnolgico. A travs de programas de promocin i/o
innovacin, ponen a su disposicin recursos para su experimentacin y posterior
evaluacin.

Sin embargo estos dos modelos expresados anteriormente, si se quedan ah, si


no avanzan de manera cualitativamente significativa, es difcil que puedan obtener
resultados relevantes. El mayor riesgo que existe es el de desarrollar el modelo del
Llanero Solitario en el cual el profesorado va a sentirse a menudo, y siguiendo el
smil cinematogr{fico, solo ante el peligro.

Hay otros dos modelos que pueden resultar ms interesantes. Uno es el de


aquellas universidades que han elaborado un plan estratgico para la incorporacin de
las TIC en su institucin, en los distintos mbitos de la docencia, la investigacin y la
gestin. Estos tienen muchas posibilidades de desarrollar sistemas coherentes que les
permitan alcanzar objetivos mucho ms ambiciosos. Uno de los buenos ejemplos en
este sentido puede ser la Penn State University norteamericana, que ya en 1997 elabor
un plan de estas caractersticas. Hoy en da, Penn State contina siendo una buena

23
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

universidad presencial, una buena universidad a distancia y su WorldCampus virtual


est consiguiendo ya un cierto prestigio acadmico.

Finalmente, existen aquellas universidades que han optado por crear sus
propias versiones virtuales, mediante el establecimiento de fundaciones o empresas
que van a gestionar esos contenidos virtuales de forma independiente de la institucin
matriz.

Los modelos aqu planteados, sin ser exhaustivos, identifican estrategias


distintas respecto a su relacin con la educacin a distancia y/o con la virtualidad. A
saber, algunas intentan simplemente asimilar la capacidad de evolucin o revolucin,
segn se mire, de la aplicacin de las TIC y, en concreto, de los sistemas de educacin a
travs de entornos virtuales, partiendo de la base que la buena formacin solo puede
ser de carcter presencial.

En otros casos, se trata simplemente de competir con la virtualidad, como si en


realidad el dilema fuera presencial/no presencial, o de cubrir o no cubrir con oferta la
demanda social ahora existente (i.e. e-learning/no e-learning, esa es la cuestin).

Finalmente, algunas universidades observan esta situacin como una gran


oportunidad para situar el uso de las TIC y el uso de la virtualidad como un elemento
diferencial de valor aadido, factor clave para la innovacin y la mejora de la calidad
educativa en sus instituciones (b-learning).

Por tanto, las TICs representan uno de los principales factores de cambio de las
instituciones de educacin superior. Segn el Informe Bricall (2000), stas auguran en
el campo educativo la progresiva desaparicin de las restricciones de espacio y de
tiempo en la enseanza y la adopcin de un modelo de aprendizaje ms centrado en el
estudiante. Al mismo tiempo, favorecen la comercializacin, entendiendo como
comercializacin la oferta de cursos online en distintas universidades, y la
globalizacin de la educacin superior, as como un nuevo modelo de gestin de su
organizacin.

El blended learning o aprendizaje combinado es una estrategia consolidada a


da de hoy en nuestro pas. Sin embargo, el proceso de adaptacin a este tipo de
educacin se ha llevado a cabo de forma lenta y constante durante los ltimos diez
aos. Pues, como lo indica el Informe Bricall 2000, en relacin al uso de TICs, en la
educacin superior los cambios se producen, por el momento, ms lentamente, aunque
no por ello son menos importantes. En este contexto, algunas experiencias, a nivel
nacional, que merecen nuestra atencin estn relacionadas con programas de
postgrado y de educacin continua.

24
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

En este contexto, podemos afirmar que la introduccin de TICS en la educacin


superior genera oportunidades de desarrollo en los siguientes mbitos:

Modelo pedaggico: Se pasa de un paradigma centrado en la enseanza a un


paradigma centrado en el aprendizaje, con nfasis en los estilos y ritmos del
proceso cognitivo y en la construccin colaborativa de los conocimientos.
Oferta educativa que traspasa fronteras: Se posibilita la entrega del servicio
educativo fuera del territorio nacional de las instituciones.
Gestin institucional: Se agiliza la toma de decisiones y su comunicacin y/o
socializacin con la comunidad educativa.
Estrategias de investigacin: Se favorecen las relaciones en tiempo real entre
investigadores y/o grupos de investigadores, sin restricciones de distancia.

Sin embargo, aunque se observa un esfuerzo en las instituciones de educacin


superior por incorporar TICs en los mbitos mencionados, se evidencia cierta
resistencia en el estamento acadmico por asumir este importante cambio. Es ms, esta
resistencia puede entenderse como una cualidad propia de las personas y de las
instituciones, que paradjicamente acta como garanta de control para un buen
gobierno institucional (Duart & Lupiez, 2005). Esto supone incorporar las TICs como
parte del plan estratgico de las instituciones, con lo cual se posibilita su debida
socializacin y capacitacin de los docentes y administrativos, tanto en los aspectos
tcnicos como ticos de la estrategia tecnolgica.

3.5 Sistemas de Gestin de Aprendizaje


Tanto los LMS (Learning Management System) como los LCMS (Learning
Content Management System), que veremos en los apartados siguientes, se pueden
generalizar como sistemas de gestin de aprendizaje, ya que el primero gestiona la
parte administrativa de los cursos as como el seguimiento de actividades y avance del
alumno. El segundo gestiona el desarrollo de contenidos, su acceso y almacenamiento.
En el entorno educativo, los ms comunes son los LMS ya que la complejidad de los
LCMS los ha llevado a un desarrollo ms lento. Debemos tener en cuenta que una
determinada herramienta (LMS o LCMS) no est directamente ligada a un paradigma
educativo concreto (e-learning, b-learning), sino que cualquier sistema de gestin de
aprendizaje puede adaptarse a las necesidades educativas concretas de cada
institucin.

25
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

3.5.1 Sistemas de Administracin de Aprendizaje (LMS)


Entre las herramientas ms utilizadas para los ambientes o sistemas e-learning
estn los Sistemas de Administracin de Aprendizaje o LMS, tambin ampliamente
conocidos como plataformas de aprendizaje. Un LMS es un software basado en un
servidor Web que provee mdulos para los procesos administrativos y de seguimiento
que se requieren para un sistema de enseanza-aprendizaje, simplificando el control de
estas tareas, como se puede ver en la imagen que se presenta a continuacin. Avgeriou,
Papasalourus & Retalis (2001) distinguen como grupos funcionales de los sistemas de
aprendizaje: gestin de cursos, gestin de clases, herramientas de comunicacin,
herramientas para los estudiantes, gestin del contenido, herramientas de evaluacin y
gestin de la institucin educativa.

En los LMS los mdulos con funciones administrativas permiten, por ejemplo,
configurar cursos, matricular alumnos, registrar profesores, asignar cursos a un
alumno, llevar informes de progreso y calificaciones. Los LMS tambin facilitan el
aprendizaje distribuido y colaborativo a partir de actividades y contenidos
preelaborados, de forma sncrona o asncrona, utilizando los servicios de comunicacin
de Internet como el correo, los foros, las videoconferencias y el chat.

El alumno interacta con la plataforma a travs de una interfaz web que le


permite seguir las lecciones del curso, realizar las actividades programadas,
comunicarse con el profesor y con otros alumnos, as como dar seguimiento a su
propio progreso con datos estadsticos y calificaciones.

Ilustracin 1: Sistemas de Administracin de Aprendizaje (LMS)

26
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

La complejidad y las capacidades de las plataformas varan de un sistema a


otro, pero en general todas cuentan con funciones bsicas como las que se han
mencionado. Es importante resaltar que un LMS no se involucra con la creacin,
reutilizacin, administracin o mantenimiento de los contenidos (Rengarajan, 2001).
Entre las plataformas comerciales ms comunes se encuentran Blackboard, WebCT2 y
EduStance. De software libre las ms reconocidas son Moodle y Claroline. Comezaa y
Garca (2005) presentan una comparativa en la que analizan las caractersticas de las
ltimas cuatro plataformas nombradas. En dicha comparativa consideraron las
herramientas disponibles de cada plataforma, las funcionalidades para evaluacin y los
aspectos generales de seguridad y concluyen que, para la construccin de los LMS, los
aspectos tcnicos son los que ms se han cuidado.

Podemos realizar nuestra propia comparativa con la herramienta EduTools


(http://www.edutools.info/item_list.jsp?pj=4), que nos permite seleccionar hasta 10
plataformas de un total de 40 para despus mostrarnos detalladamente las
caractersticas de cada una de ellas. Primero, analiza herramientas para el aprendizaje:
comunicacin, productividad y participacin del alumno; segundo, herramientas de
soporte: administracin, manejo de los cursos y diseo curricular; y tercero,
especificaciones tcnicas: hardware/software y precio/licencia. Este anlisis
comparativo refleja el desarrollo actual de las plataformas y el gran nmero de
opciones que se encuentran en este competitivo mercado.

Ilustracin 2: Plataformas de enseanza virtual ms comunes

Algunos LMS se han desarrollado con base a ciertos estndares y estn


preparados para comunicarse unos con otros y para compartir contenidos. En la
imagen anterior se presenta un listado de los productos que Edutools ha evaluado y
han cumplido con la caracterstica Instructional Standards Compliance que se refiere
a que han incluido alguna de las especificaciones para la importacin y/o exportacin
de contenidos. Como contenidos se consideran aqullos de formato digital, como son

27
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

los diferentes tipos de documentos electrnicos, textos, imgenes, multimedia,


animaciones, vdeos, simulaciones, etctera.

3.5.2 Sistemas de Administracin de Contenidos de Aprendizaje (LCMS)


Los Sistemas de Administracin de Contenidos de Aprendizaje o LCMS
(Learning Content Management Systems) tienen su origen en los CMS (Content
Management System) cuyo objetivo es simplificar la creacin y la administracin de los
contenidos en lnea, y han sido utilizados principalmente en publicaciones peridicas
(artculos, informes, fotografas, etctera). En la mayora de los casos lo que hacen los
CMS es separar los contenidos de su presentacin o estilo en pantalla y tambin
facilitar un mecanismo de trabajo para la gestin de una publicacin web. Los LCMS
siguen el concepto bsico de los CMS, que es la administracin de contenidos, pero
enfocados al mbito educativo, administrando y concentrando nicamente recursos
educativos y no todo tipo de informacin.

Ilustracin 3: Sistemas de Administracin de Contenidos de Aprendizaje (LCMS)

En esencia, se define LCMS como un sistema basado en Web que es utilizado


para crear, aprobar, publicar, administrar y almacenar recursos educativos (como los
objetos de aprendizaje) y cursos en lnea (Rengarajan, 2001). Los principales usuarios

28
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

son los diseadores de cursos que utilizan los contenidos para construir dichos cursos,
los profesores que utilizan los contenidos para complementar su material de clase e
incluso los alumnos en algn momento pueden acceder a la herramienta para
desarrollar sus tareas o completar sus conocimientos.

Los contenidos usualmente se almacenan como objetos descritos e identificables


de forma nica. En un LCMS se tienen contenedores o repositorios para almacenar los
recursos, como se puede ver en la imagen anterior, que pueden ser utilizados de
manera independiente o directamente asociados a la creacin de cursos dentro del
mismo sistema. Es decir, el repositorio puede estar disponible para que los profesores
armen los cursos, pero tambin pueden estar abiertos para que cualquier usuario
recupere recursos no vinculados a ningn curso en particular, que les pueden ser de
utilidad para reforzar lo aprendido sobre algn tema. El proceso de trabajo dentro de
un LCMS requiere de control en cada fase del contenido, esto conlleva un proceso
editorial para controlar la calidad de los contenidos creados y para permitir y organizar
su publicacin.

El mercado de los LCMS es mucho ms reducido que el de los LMS, entre los
productos ms comunes se encuentra ATutor, distribuido como software libre y
compatible con estndares e-learning y b-learning para la exportacin e importacin
de contenidos con otras plataformas y con Repositorios de Objetos de Aprendizaje.

3.6 Moodle
Moodle es un paquete de software libre para la creacin de cursos y sitios Web
basados en Internet. Consiste en un proyecto diseado con la filosofa de la educacin
social constructivista.

De acuerdo con Stallman (2004), con software libre nos referimos a la libertad
de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software.
Nos referimos especialmente a cuatro clases de libertad para los usuarios de software:

Libertad 0: la libertad para ejecutar el programa sea cual sea nuestro propsito.
Libertad 1: la libertad para estudiar el funcionamiento del programa y
adaptarlo a tus necesidades el acceso al cdigo fuente es condicin
indispensable para esto.
Libertad 2: la libertad para redistribuir copias y ayudar as a tu vecino.
Libertad 3: la libertad para mejorar el programa y luego publicarlo para el bien
de toda la comunidad el acceso al cdigo fuente es condicin indispensable
para esto.

Software libre es cualquier programa cuyos usuarios gocen de estas libertades.

29
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

El software libre aplicado a contextos educativos, ofrece posibilidades que


pueden favorecer el proceso de enseanza-aprendizaje en funcin de los destinatarios,
de sus necesidades, su nivel de formacin ya que puede ser modificado y adaptado en
funcin de nuestros intereses y de los objetivos que persigamos. (Romero, 2006).

Moodle se encuadra dentro de la categora de los LMS, y puede ser utilizado


tanto para desarrollar cursos completamente on-line siguiendo la metodologa del e-
learning, como para complementar la educacin presencial haciendo uso tan solo de las
herramientas que el profesor considere oportunas para facilitar sus clases (metodologa
b-learning).

La palabra Moodle es el acrnimo de Modular Object-Oriented Dynamic


Learning Environment (Ambiente de Aprendizaje Modular Orientado a Objetos
Dinmicos). Se distribuye gratuitamente bajo licencia GPL de GNU.

Entre las caractersticas ms importantes de la plataforma Moodle a nivel


tcnico destacan las siguientes:

1. Su diseo es modular, permitiendo gran flexibilidad para agregar y suprimir


funcionalidades en muchos niveles.
2. Se ejecuta sin necesidad de cambios en el sistema operativo bajo Unix, Linux,
Windows, Mac OS X, Netware y todos aquellos sistemas operativos que
permitan PHP.
3. Soporta las principales marcas de manejadores de bases de datos.
4. Su actualizacin desde una versin anterior a la siguiente es un proceso muy
sencillo. Dispone de un sistema interno capaz de reparar y actualizar sus bases
de datos cada cierto tiempo.

A nivel pedaggico Moodle ofrece funcionalidades bastante atractivas para los


docentes, como las siguientes:

1. Promueve una pedagoga constructivista social. Dado el carcter colaborativo


de las herramientas utilizadas en l y la filosofa de trabajo en la que se
sustenta.
2. Es adecuado para la enseanza nicamente a travs de la Red como para
complementar la enseanza presencial.
3. Cuenta con un interfaz atractivo, de tecnologa sencilla, ligera eficiente y
compatible.
4. Permite el acceso de invitados a los cursos.
5. Los cursos son clasificados en categoras, lo que facilita su bsqueda.
6. Es fcil de instalar, por lo que no precisa un nivel avanzado de conocimientos
informticos para proceder a su implementacin.

30
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

7. Un sitio Moodle puede albergar miles de cursos y estos pueden ser clasificados
en distintas categoras.

Moodle se rige por una filosofa basada en la teora constructivista, sustentada


en la idea de interaccin con los dems y a travs de la conexin de conocimientos
nuevos con aprendizaje previamente adquirido. Conectando la estrategia didctica del
profesorado con las ideas previas del alumnado, construyendo de manera slida los
conceptos, interconectando los unos con los otros en forma de red de conocimiento.
(Ballester, 2002).

Moodle posee una interfaz intuitiva que facilita a los diseadores de cursos la
construccin de foros, chats, lista de correo, glosarios, bibliotecas, autoevaluaciones y
dems funcionalidades. Los recursos disponibles en Moodle se pueden clasificar en
tres categoras: Recursos Transmisivos, Recursos Interactivos y Recursos
Colaborativos. A estas tres categoras tambin podemos aadir las herramientas de
comunicacin.

Recursos transmitivos: Se refiere a todos los mdulos, recursos, actividades en


Moodle que tienen como funcin principal la de transmitir informacin. El
profesor se establece prcticamente en emisor nico. Los alumnos, en
receptores. Lo ms usual es que estos contenidos estn constituidos por algn
tipo de texto ms o menos estructurado con apoyo de imgenes, esquemas.
Vienen a ser lo que en la enseanza tradicional llamamos libros de texto,
apuntes, manuales didcticos, presentaciones multimedia, etc. En Moodle este
tipo de contenidos se generan fundamentalmente a partir de lo que el propio
programa llama recursos. El elemento recurso no es ms que un enlace a
cualesquiera de los recursos materiales que puedan representarse por un
archivo electrnico. Documentos de texto, presentaciones con diapositivas,
archivos de imagen, programas de ordenador ejecutables, archivos de CAD,
archivos de audio y vdeo, etc. pueden constituir un recurso. Los recursos
transmisivos disponibles en Moodle son: Pgina de texto, Pgina Web, Enlace a
archivo o Web, Directorio, Etiqueta y Libro.
Recursos interactivos: Estos recursos se centran ms en el alumno, quien tiene
determinado control de navegacin sobre los contenidos. Cuanto menos
lineales sean los contenidos y la propia navegacin, mayor interactividad habr.
Se pone el peso, por lo tanto, en definir el sistema por el cual el que aprende
accede a la informacin que se le quiere transmitir. En Moodle los Recursos
interactivos disponibles son: Lecciones, Cuestionarios, SCORM, Glosarios y
Tareas.
Recursos colaborativos: Estas herramientas pueden introducir en nuestras
escuelas la posibilidad de disponer de recursos altamente orientados a la

31
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

interaccin y el intercambio de ideas y materiales tanto entre el profesor y los


alumnos como de los alumnos entre s (Gmez, 2006) Moodle incluye las
siguientes herramientas colaborativas: Foros, Talleres y Wikis.
Herramientas de comunicacin: Uno de los propsitos principales de la
plataforma Moodle consiste en facilitar y enriquecer la interaccin entre todos
los miembros de la comunidad (estudiantes entre s, profesores entre s y entre
alumnos y profesores). Por ello las herramientas de comunicacin son bsicas.
Para Gmez (2006) no resulta conveniente integrarlas dentro de los recursos
transmitivos, colaborativos o interactivos, ms bien considera las herramientas
de comunicacin un requisito para que las otras tres funcionen adecuadamente.
Las herramientas de comunicacin disponibles en Moodle son: Correo
electrnico, Chats, Mensajes, Consultas y Encuestas.

Utilizando Moodle como Entorno Virtual de Aprendizaje obtendremos un


sistema flexible donde, adems de aprender los alumnos pueden compartir
experiencias de aprendizaje y conocimientos con otras comunidades virtuales,
compuestas por otros usuarios de la plataforma en todo el mundo.

Una de las caractersticas principales de Moodle es su modularidad. Cada uno


de los recursos que componen la plataforma se define como una pieza de software
independiente que puede ser modificada o eliminada segn las necesidades de la
institucin de enseanza que la adopte. De la misma forma tambin es posible instalar
nuevos mdulos que aadan funcionalidad al sistema, bien descargndolos desde la
pgina oficial de mdulos no estndar de Moodle o bien desarrollndolos a medida. El
proceso de desarrollo de un mdulo no es complejo, pero requiere conocer un poco
ms a fondo la arquitectura y el funcionamiento interno del sistema. Por ello, antes de
lanzarnos al desarrollo de un nuevo mdulo, en el siguiente captulo estudiaremos con
detenimiento dicha estructura interna de Moodle.

32
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

4 Arquitectura de Moodle
Moodle significa Modular Object-Oriented Dynamic Learning Environment
(Entorno de enseanza dinmico orientado a objetos modular). Desde la perspectiva
del programador, la M de Moodle contiene un concepto muy importante, ya que
Moodle, en su totalidad, est diseado de forma modular. Esto permite al
desarrollador realizar importantes modificaciones a la plataforma sin necesidad de
cambiar el cdigo fuente. La modularidad se convierte en una importante caracterstica
que permite reducir la cantidad de tiempo empleada en realizar modificaciones cuando
se lanzan nuevas versiones de Moodle.

En este apartado se introducirn algunos de los conceptos ms importantes


relacionados con la arquitectura de Moodle; cmo est estructurado y cmo funciona.
Para ello, en primer lugar repasaremos las caractersticas del entorno tcnico en el que
se asienta Moodle, detenindonos especialmente en los requisitos de sistema operativo,
base de datos y servidor Web, para posteriormente centrarnos en la estructura de
directorios del sistema. A continuacin repasaremos los principales tres tipos de
mdulos que se pueden desarrollar para Moodle: actividades, recursos y bloques; y
terminaremos el apartado introduciendo los roles de usuario y el control de acceso, que
se deben tener muy en cuenta a la hora de programar una extensin.

4.1 Entorno de Moodle


Moodle es un ejemplo de aplicacin LAMP (Linux, Apache, MySQL y PHP). Se
trata fundamentalmente de aplicaciones web escritas con un lenguaje de script, que
utilizan una base de datos SQL para almacenar informacin. Con el incremento de la
popularidad de ejecutar aplicaciones web de cdigo abierto en Windows y en Mac OS
X, han surgido dos nuevos trminos: WAMP y MAMP. En la siguiente figura se
muestran los componentes del sistema en Moodle.

33
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 4: Entorno LAMP

Moodle est escrito en PHP, y la versin actual (versin 1.9) requiere la versin
de PHP 4.3.0 o superior para funcionar. La versin 2.0 de Moodle, actualmente en
desarrollo, necesitar la versin de PHP 5.2.8 o superior.

4.2 Base de datos


La capa de base de datos en Moodle ha sido escrita utilizando la librera de PHP
ADOdb, que fue creada para proporcionar un mtodo estndar de acceso a varios
sistemas de bases de datos, utilizando una interfaz de programacin consistente. Las
libreras de bases de datos nativas en PHP son especficas de una base de datos, por lo
que es difcil usarlas para escribir un programa que soporte mltiples servidores de
bases de datos. Gracias al uso de ADOdb, Moodle proporciona soporte para varias
bases de datos, entre las que se incluyen: MySQL, PostgreSQL, Microsoft SQL y Oracle.
Moodle soporta una lista mucho ms larga de bases de datos para la integracin de
sistemas externos, utilizando la arquitectura de extensiones de la plataforma. Aunque
Moodle proporciona soporte para muchas bases de datos, en la prctica la mayora de
los sistemas estn desplegados utilizando MySQL, por lo que se presta ms atencin a
las instalaciones de MySQL, que por este motivo tienen menos fallos y cuentan con el
conjunto ms amplio de extensiones de terceros. PostgreSQL es la segunda base de
datos ms popular y tiene un fuerte seguimiento entre los entusiastas del rendimiento
y los grandes sistemas (decenas de miles de usuarios). Las instalaciones de MySQL y
Oracle se usan principalmente en organizaciones con una inversin previa en uno de

34
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

estos sistemas, y debido a su menor uso no estn tan probados como los anteriores.
Tambin es ms difcil encontrar un buen soporte para utilizar estos tipos de bases de
datos con Moodle. Algunos mdulos aadidos de terceros no funcionan bajo estos
sistemas sin un parche.

Los requisitos de la versin de la base de datos para Moodle 1.9 y para Moodle
2.0 son:

MySQL 4.1.16
PostgreSQL 8.0
Microsoft SQL 9.0
Oracle 9.0

4.3 Sistema operativo


Moodle es capaz de funcionar en cualquier sistema operativo que soporte la
versin requerida de PHP y la base de datos. Generalmente se instala en alguno de los
tres principales sistemas operativos: Windows, Mac OS X o Linux (o sistemas
operativos basados en Unix). Si los comparamos con Linux, Mac OS X y Windows
tienen un menor rendimiento en desarrollos a gran escala. En Windows se debe a una
menor optimizacin de la pila PHP, que ha sido mejorada en Windows Server 2008, y
en Mac OS x a un pobre rendimiento en la bifurcacin de procesos, de la que dependen
Apache y MySQL para poder tener una alta concurrencia. En un entorno de desarrollo,
cualquiera de estos tres sistemas operativos se puede usar como una excelente
plataforma, pero en un entorno de produccin cada uno de ellos tendr distintas
caractersticas de rendimiento.

4.4 Servidor Web


Moodle normalmente trabajar con cualquier servidor web que soporte la
versin apropiada de PHP. En la prctica, el servidor web ms usado es Apache, que
est disponible para la mayora de sistemas operativos. Internet Information Services
(IIS) es otro servidor web muy popular para alojar Moodle. Tambin hay un creciente
nmero de defensores de Lighthttpd como servidor web, como se puede ver reflejado
en los foros de Moodle (http://moodle.org/forums/), debido a su bajo consumo de
memoria. Es extremadamente popular su uso en entornos virtuales (VMware, Xen
HyperV), donde el uso de memoria es ms que una preocupacin.

Moodle, como aplicacin web, tiene sus propias limitaciones de soporte y


desarrollo, debido al modo en que se usa. Un usuario que interacta con Moodle
realizar una cantidad de clicks ms alta de lo normal, y Moodle genera varias
sentencias SQL para construir cada una de esas pginas. Moodle es muy eficiente
realizando este trabajo, sin embargo, es bastante complicado. Esto significa que, como
desarrolladores, tenemos que conocer el tipo de arquitecturas con las que sern usadas

35
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

nuestras modificaciones. Tambin significa que tenemos que ser conscientes de las
implicaciones de rendimiento del cdigo que se aada. La siguiente figura ilustra
varias configuraciones comunes utilizadas para Moodle en un entorno de produccin.
Moodle se puede desplegar de mltiples formas -desde un simple profesor que lo
ejecuta en su ordenador de sobremesa, hasta clsters de servidores de alto
rendimiento:

Ilustracin 5: Arquitecturas tpicas de Moodle

Moodle, al seguir el modelo de aplicacin PHP estndar, es escalable en


determinados puntos. El primer punto de escalabilidad es la base de datos, que puede
moverse fcilmente a un servidor separado fsicamente. Tambin se pueden utilizar
mltiples servidores web usando un balanceador de carga. Si usamos mltiples
servidores web necesitaremos tambin almacenamiento compartido para nuestros
datos de Moodle. La informacin de sesin puede almacenarse en estos datos de
Moodle, o en la base de datos. El servidor de bases de datos es el punto donde la
escalabilidad de Moodle es ms limitada. Para escalar la base de datos es necesario
montar un servidor de bases de datos ms rpido, reemplazando al servidor antiguo.
En la actualidad no hay un mtodo estndar para escalar una nica instalacin de
Moodle a travs de mltiples servidores de bases de datos, como hacemos con los
servidores de aplicaciones web. Tambin es una prctica comn usar Moodle con un
acelerador PHP como eAccelerator o APC. Es importante probar nuestro cdigo en
estos entornos para estar seguros de que funciona correctamente.

36
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

4.5 Estructura de directorios


Como se muestra en la siguiente figura, cada sistema Moodle en
funcionamiento se puede dividir en tres reas separadas: cdigo, datos y base de datos.

Ilustracin 6: Las tres reas de Moodle

4.5.1 Cdigo de Moodle


Como PHP es un lenguaje interpretado, el cdigo de Moodle se almacena como
ficheros de cdigo fuente en el servidor web. Cuando un fichero en particular es
solicitado por el servidor, el intrprete PHP parsea el cdigo al instante y la salida
resultante se enva a travs del servidor web. Como se ha mencionado antes, la M de
Moodle significa Modular, y su estructura de directorios refleja esta modularidad, ya
que cada carpeta del nivel superior representa un componente de Moodle. Algunos de
los principales componentes soportan mdulos de expansin o plugins. Cada mdulo
de expansin tiene su propia carpeta dentro del directorio del componente. En algunos
casos, los mdulos de actividad tambin pueden tener soporte para expansiones
adicionales. Desde el punto de vista del usuario final, los mdulos se instalan copiando
su carpeta dentro del directorio apropiado en el servidor. Moodle detecta el nuevo
mdulo la siguiente vez que un administrador accede al sistema, localiza el cdigo SQL
del mdulo, lo ejecuta y finalmente muestra por pantalla los resultados.

Los procesos de actualizacin se realizan de la misma manera, haciendo un


seguimiento de la versin de la base de datos y actualizando automticamente si es
necesario.

La siguiente captura de pantalla es un listado de los directorios de una


instalacin reciente de Moodle 1.9.9.

37
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 7: Directorios de Moodle

A continuacin, exploraremos algunos de los directorios ms importantes


utilizados por los desarrolladores que desean realizar cambios a Moodle. Moodle
utiliza una nomenclatura simple para sus mdulos, cuyos archivos se almacenan en su
propia carpeta, y el nombre de esta carpeta es el nombre que Moodle muestra en su
interfaz cuando se referencia al mdulo.

admin: Esta carpeta almacena los ficheros PHP que controlan la interfaz de los
usuarios administradores. Tambin contiene el fichero cron.php, que se ejecuta
como un proceso batch para realizar tareas de mantenimiento del sistema como
el envo de correos y la realizacin de las copias de seguridad de los cursos. A
menudo se utiliza el proceso cron para realizar este tipo de operaciones
programadas.
auth: La carpeta auth contiene todos los mdulos de autenticacin de Moodle.
Cada mdulo tendr su propio directorio dentro de esta carpeta. Los mdulos
de autenticacin controlan la creacin de usuarios y el acceso de estos al
sistema.
backup: Esta carpeta contiene las utilidades de copia de seguridad del ncleo
del sistema. Se trata de funciones para guardar, restaurar e importar cursos.
Cada mdulo individual es responsable de realizar la copia de seguridad de su
cdigo y puede hacer uso de estas funciones si lo necesita. Como cada mdulo
es auto-contenido, se permite a los desarrolladores aadir mdulos
limpiamente a Moodle sin tener que modificar el cdigo del ncleo.

38
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

blocks: Los bloques se usan para mostrar bloques de informacin en la columna


de la izquierda o de la derecha de la pgina de Moodle. Son uno de los tipos
ms simples de mdulos que se pueden realizar, y suelen funcionar a travs de
las versiones de Moodle sin apenas alguna modificacin.
course: Este componente de Moodle tiene una importancia obvia, dado que la
plataforma se organiza en cursos. Como desarrolladores, podemos desear
aadir o modificar formatos de cursos e informes. Los formatos de curso
personalizados se pueden usar para cambiar la disposicin de los elementos en
los cursos.
enrol: La carpeta enrol contiene todos los mdulos de matriculacin de Moodle.
Estos mdulos controlan la creacin y administracin de las matriculaciones a
nivel de curso.
files: El componente files permite a Moodle incorporar archivos al sistema. Esto
incluye subida de archivos, control de acceso, y visualizacin de ficheros. Este
componente ser reescrito en Moodle 2.0 para permitir el almacenamiento y el
uso de ficheros en repositorios externos, como Alfresco, Box.net y Google Docs.
filter: El sistema de filtros de Moodle es una facilidad de bsqueda y reemplazo
basada en expresiones de texto y expresiones regulares. Este sistema es
alimentado durante la creacin de la pgina por el contenido introducido por el
usuario que se encuentra en la base de datos. Los filtros encuentran
coincidencias y modifican la pgina antes de ser mostrada. Por ejemplo, existe
un filtro que soporta auto-conversin del lenguaje de marcado TEX a grficos
de ecuaciones. El filtro de plugins multimedia encuentra referencias a tipos
comunes de archivos multimedia y los envuelve en sus apropiadas etiquetas,
para embeber automticamente el contenido multimedia en la pgina. Aunque
esta es una capacidad muy potente, debe ser desarrollada con cuidado,
teniendo en mente las implicaciones de rendimiento.
lang: La carpeta lang almacena las cadenas de idioma del ncleo del sistema.
Esta es la base del soporte de localizacin e idioma de Moodle. Todas las
cadenas mostradas al usuario final se asignan a travs de esta utilidad. Las
cadenas de idioma se almacenan en la carpeta lang de los datos de Moodle. Esta
estructura permite una personalizacin local muy sencilla de los ficheros de
idioma.
lib: La carpeta lib almacena las libreras de funciones del ncleo del sistema.
Cuando se desarrollen mdulos o se personalice el sistema, se usarn clases y
funciones definidas en esta carpeta.
mod: La carpeta mod almacena los mdulos de actividad como Tarea, Wiki,
Leccin o Foro. Las actividades educativas son el ncleo de cada curso
desarrollado en Moodle. Lo mdulos de actividad son ms difciles de crear que
los bloques y deben disearse de manera que instruyan al estudiante.

39
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

my: my es un portal ligero en Moodle. Proporciona la lista de cursos en las que


un usuario participa, incluyendo un resumen de las actividades prximas. El
usuario puede tambin aadir y borrar bloques en su portal. Este componente
proporciona una buena localizacin para mostrar informacin personalizada
con mnimos cambios en el ncleo de Moodle.
theme: La carpeta theme almacena todos los temas prediseados de Moodle y
cualquier tema personalizado instalado en el sistema. Los temas son una
combinacin de CSS, HTML y PHP. Cada tema tiene su propia carpeta. El
sistema de temas es til para definir el aspecto visual, la cabecera y el pie de la
pgina de Moodle. Sin embargo est limitado en la cantidad de elementos de la
pgina que puede modificar. Por ejemplo, ciertos componentes de la pgina de
Moodle estn escritos para que se muestren en una determinada forma.

4.5.2 Base de datos de Moodle


La base de datos de Moodle est organizada en aproximadamente doscientas
tablas relacionadas. La instalacin por defecto aade el prefijo mdl_ al nombre de cada
una de las tablas. Cada componente principal del sistema normalmente tiene una o
ms tablas, cada una comenzando con el nombre del componente. Por ejemplo, hay
dos tablas relacionadas con el componente config: mdl_config y mdl_config_plugins.
Como programadores, tendremos que modificar la base de datos de forma regular. Por
tanto es importante para nosotros ser capaces de tratar la base de datos completa como
una entidad, copiando y moviendo instancias de una base de datos completa de
Moodle para la creacin de reas de pruebas en las que desarrollar nuestro cdigo.
Normalmente haremos esto con herramientas de lnea de comandos como mysqldump y
MySQL.

4.5.3 Datos de Moodle


Los ficheros subidos por los usuarios al sistema se almacenan en la localizacin
moodledata. En esta carpeta tambin se almacenan los datos de sesin de los usuarios
que se han logueado en el sistema si las sesiones basadas en fichero estn configuradas.
En los datos de Moodle tambin se almacenan paquetes de idioma opcionales que
pueden ser descargados desde la interfaz de administracin. Moodle estructura los
datos de esta carpeta bien por usuarios o bien por cursos. Cada curso tiene una carpeta,
nombrada con un nmero entero que representa el identificador nico asignado a
dicho curso en la base de datos. Podemos determinar fcilmente estos valores
navegando en un curso a travs de la pgina de Moodle e inspeccionando los
parmetros en la URL. Por ejemplo, examinando esta URL de un curso:

http://localhost/workspace/moodle19/course/view.php?id=3

Podemos ver que id=3, al final de la cadena, ser el identificador de nuestro


curso. Si hemos subido ficheros a este curso, existir una carpeta moodledata/3. En esta

40
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

carpeta, Moodle almacena datos de sus mdulos en la subcarpeta moddata. Cuando un


mdulo necesita almacenar ficheros, los almacena dentro de esta carpeta en un
directorio con el mismo nombre que el mdulo. Por ejemplo, el mdulo Wiki tendr
aqu una carpeta llamada wiki. Adems, Moodle crear una carpeta llamada backupdata
si se han realizado copias de seguridad de algn curso. Los ficheros que han sido
subidos directamente por un usuario usando la interfaz de ficheros del curso se
encontrarn en la raz de esta carpeta. Los usuarios pueden crear tambin sus propias
carpetas y subcarpetas dentro del directorio raz.

Moodle 2.0 utilizar un modelo completamente nuevo para organizar los


ficheros subidos por el usuario basado en un algoritmo hash. El principal objetivo de
este nuevo mtodo es conseguir un uso eficiente del espacio de almacenamiento en
disco y una mayor flexibilidad a la hora de compartir ficheros entre mltiples cursos.

4.6 Estructura bsica de Moodle


Desde el punto de vista del usuario, un sitio Moodle est compuesto por:
categoras, cursos, temas (o semanas) y actividades.

Ilustracin 8: Estructura general de Moodle

Los principales elementos que componen un sitio Moodle son los siguientes:

Categoras: Las categoras son los contenedores de informacin de ms alto


nivel, estn formadas por cursos y sirven para organizarlos de manera que sean
ms fcilmente localizables por el alumno en la pantalla inicial de la aplicacin.
Cursos: Los cursos son la parte ms importante de la estructura de Moodle. Son
creados por los administradores del sitio y dirigidos por los usuarios que se
establezcan como profesores del curso. Para que un alumno, dado de alta en el

41
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

sistema, pueda acceder a un curso deber estar matriculado en l. Cuando un


administrador crea un curso debe proceder a su configuracin mediante un
formulario proporcionado por Moodle en el que se establecen valores para los
distintos campos, como por ejemplo el nombre del curso o el formato (semanal,
por temas...).
Semanas y temas: La organizacin de un curso podr llevarse a cabo por
semanas o bien por temas, segn la preferencia del profesorado. Tras la
creacin del curso, su configuracin, y la matriculacin de usuarios, estos
podrn acceder al mismo y observar una serie de bloques diferenciados que
representan las semanas del curso o temas, segn el formato que se haya
establecido. Cada uno de estos bloques contendr, a partir del momento en el
que el profesor las aada, distintos tipos de actividades que los alumnos
debern realizar para su evaluacin.
Actividades: Moodle ofrece la posibilidad de aadir a cada semana o a cada
tema distintos tipos de actividades. Existen siete actividades instaladas por
defecto, a las que se pueden aadir todas las que el usuario desee.
Recursos: Para complementar el contenido de las semanas o temas de cada
curso, Moodle, adems de actividades, ofrece la posibilidad de agregar otro
tipo de recursos a las mismas.
Bloques: Las funcionalidades extra fuera de las actividades y recursos son
implementadas por los bloques, contenedores que se sitan a los lados del sitio
Web y que tienen una funcin concreta de carcter general (relacionada o no
con los mdulos de actividades.
A continuacin haremos un repaso por todas las actividades, recursos y bloques
que componen el paquete estndar de instalacin de Moodle.

4.6.1 Actividades
Las actividades con las que cuenta Moodle por defecto son las que se muestran
en la tabla siguiente. Desde la pgina de Moodle se pueden descargar otras muchas
con distintas funcionalidades, e incluso nosotros mismos podemos desarrollar nuestra
actividad personalizada. En captulos posteriores se profundizar en el proceso de
desarrollo de un mdulo de actividad para Moodle.

Base de datos: El mdulo Base de datos permite al profesorado y/o a los


estudiantes construir un banco de registros sobre cualquier tema o asunto, as
como realizar bsquedas y mostrar resultados. El formato, cuyo formulario
puede ser creado por el profesor, y la estructura de estas entradas pueden ser
prcticamente ilimitados, incluyendo imgenes, archivos, direcciones URL,
nmeros y texto, entre otras cosas.
Chat: El chat de Moodle permite mantener conversaciones entre usuarios en
tiempo real, generando as una interaccin fluida mediante texto sncrono.

42
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Incluye las fotos de los perfiles en la ventana de chat y soporta direcciones URL,
emoticonos, integracin de HTML, imgenes, etc.
Consulta: Es similar a una encuesta, donde el profesor formula una nica
pregunta y ofrece a los usuarios distintas elecciones. Se puede considerar una
votacin, y puede usarse para opinar sobre algn tema o para recibir una
respuesta de cada estudiante (por ejemplo, para pedir su consentimiento para
algo).
Cuestionario: Permite la realizacin de exmenes de diferente tipo, donde los
profesores pueden definir una base de datos de preguntas que podrn ser
reutilizadas en diferentes cuestionarios.
Encuesta: Es similar a la actividad Consulta, pero con varias preguntas de
distinto tipo.
Foro: Se trata de una actividad para el debate entre usuarios de un curso. Hay
diferentes tipos de foros disponibles: exclusivos para los profesores, de noticias
de un curso y abiertos a todos.
Glosario: El glosario presenta un catlogo no exhaustivo de palabras relativas a
una misma disciplina, campo de estudio, actividad, tema o rea del saber, con
su definicin y/o comentarios, a veces bastante simples. Adems puede o no
estar clasificado en categoras y subcategoras.
Hot Potatoes: Este mdulo permite al profesorado elaborar y/o administrar los
ejercicios elaborados con el programa Hot Potatoes a travs de Moodle. Los
ejercicios se crean con Hot Potatoes, y luego se incorporan al curso de Moodle.
Leccin: Una leccin proporciona contenidos interactivos de forma interesante
y flexible. Estos contenidos consisten en una serie de pginas (normalmente
escritas con el editor HTML integrado en Moodle), y textos que el alumno ha de
recorrer; al final de cada pgina se puede plantear opcionalmente una pregunta
con varias posibles respuestas para comprobar de alguna manera que el
alumno lo ha ledo y/o comprendido. La navegacin a lo largo de la leccin
depende de la interaccin del estudiante con las preguntas planteadas.
Recurso: Admite la presentacin de cualquier contenido digital: Word,
PowerPoint, Flash, vdeo, sonidos, etc. Los archivos pueden ser subidos y
manejados en el servidor, o pueden ser creados sobre la marcha usando
formularios web (de texto o HTML). Tambin se pueden enlazar contenidos
externos en Web o incluirlos perfectamente en la interfaz del curso, o realizar
enlaces con aplicaciones Web, transfirindoles datos.
SCORM: Un paquete SCORM (Sharable Content Object Reference Model) es un
bloque de material web empaquetado de una manera que sigue el estndar
SCORM de objetos de aprendizaje. Estos paquetes pueden incluir pginas web,
grficos, programas Javascript, presentaciones Flash y cualquier otra cosa que

43
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

funcione en un navegador web. El mdulo SCORM permite cargar fcilmente


cualquier paquete SCORM estndar y convertirlo en parte de un curso.
Tarea: permite al profesor calificar trabajos enviados por los alumnos. Puede
especificarse la fecha final de entrega de una tarea y la calificacin mxima que
se le podr asignar. Los estudiantes pueden subir sus tareas (en cualquier
formato de archivo) al servidor, y se registra la fecha en la que se han subido.
Wiki: Un Wiki posibilita la creacin colectiva de documentos en un lenguaje
simple de marcas, utilizando un navegador web.

4.6.2 Recursos
Para complementar el contenido de las semanas o temas de cada curso, Moodle,
adems de actividades, ofrece la posibilidad de agregar otro tipo de recursos a las
mismas.

Editar una pgina de texto. Una pgina de texto es un texto normal


mecanografiado sin formato (texto plano), es decir, sin ningn tipo de estilos
(negrita, cursiva) y sin estructuras (listas, tablas). Es recomendable su uso
en aquellos contenidos de carcter obligatorio y relativamente estable durante
en curso, como por ejemplo normas de seguridad.
Editar una pgina Web. La pgina de texto y, especialmente, la pgina web son
dos recursos muy adecuados para publicar todo tipo de contenidos. En
concreto, la creacin de pgina web nos permite aadir materiales curriculares
propios o personalizados utilizando el editor integrado de Moodle.
Enlazar un archivo o una pgina Web. El enlace a una web es til para aadir
contenidos externos al sitio Moodle de forma rpida o para facilitar el acceso y
conocimiento de sitios de inters general (buscadores, diccionarios,
instituciones, etc.), mientras que el enlace a un archivo nos permite agregar
contenidos con mltiples formatos, comprimidos o no, con la ventaja adicional
de que no es obligatorio que estn en el sitio Moodle (aunque requiere la
configuracin por parte del administrador).
Directorio. Este tipo de recurso es, como su nombre indica, simplemente un
acceso a un directorio o carpeta particular del sitio web del curso o de la unidad
didctica. Permite mostrar un directorio completo (junto con sus
subdirectorios), previamente creado por el profesor o administrador, desde el
rea de archivos de su curso. De esta manera, podemos facilitar que con un
nico enlace los alumnos tengan acceso a toda una lista de ficheros que se
pueden descargar a sus ordenadores.
Desplegar paquetes de contenido IMS. IMS es un esqueleto de especificaciones
que ayuda a definir variados estndares tcnicos, incluyendo materiales de e-
learning. La especificacin IMS (Content Packaging Specification) hace posible
almacenar los contenidos en un formato estndar que puede ser reutilizado en

44
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

diferentes sistemas sin necesidad de convertir dichos contenidos a otros


formatos. El recurso de tipo IMS CP en Moodle permite utilizar ese tipo de
paquetes de contenidos, cargndolos e incluyndolos en los cursos de forma
sencilla.
Aadir una etiqueta. Las etiquetas nos permiten aadir pequeos fragmentos
de texto HTML, grficos o elementos multimedia entre los bloques de
contenido (en la columna central si se trata de un curso en formato semanal o
por temas, o en las columnas laterales si se trata de un curso en formato social).

4.6.3 Bloques
El aspecto del entorno que envuelve un curso en Moodle puede variar en
funcin de las necesidades de alumnos y profesores. Esta personalizacin se consigue
mediante el uso, por parte del profesor del curso, de los denominados bloques de
Moodle, que aparecen a la izquierda o la derecha de la pantalla. Existen varios tipos de
bloques con funcionalidades muy diversas: informar, controlar, gestionar, etc. Algunos
trabajan de forma independiente y otros colaboran entre s. A continuacin se
describen los bloques establecidos por defecto en Moodle. A ellos podemos agregar
cuanto deseemos, de acuerdo con la funcionalidad que queramos instalar en la
plataforma Moodle.

Administracin: Mediante este bloque el usuario podr acceder a diferentes


herramientas administrativas en funcin de su perfil. Desde estas opciones el
alumno podr examinar sus calificaciones, cambiar su contrasea o darse de
baja de un curso (el profesor se encargar de decidir qu opciones estarn
disponibles para sus alumnos). Por otra parte, el profesor puede configurar el
aspecto de un curso (incorporando bloques por ejemplo), aadir nuevas
actividades, dar de alta a nuevos usuarios o hacer copias de seguridad. Cuanto
mayor sea nuestro nivel de privilegios, de ms opciones podremos disponer.
Actividad reciente: El bloque Actividad reciente muestra, de una forma
abreviada, los acontecimientos producidos en el curso desde la ltima visita. Lo
podemos utilizar para tener una visin rpida del desarrollo del trabajo
realizado, tanto por nosotros mismos, como por el resto de usuarios del curso.
Actividades: El bloque de Actividades lista todas las categoras de actividades
disponibles en el curso (foros, consultas, tareas, etc.).
Buscar en los foros: El bloque Buscar en los foros permite buscar entre los
mensajes publicados en los foros de un curso la informacin tecleada en el
cuadro de texto del bloque.
Calendario: Este bloque puede usarse como una agenda personal, sirve para
mantener una visin organizada de las fechas y plazos importantes para el
seguimiento de la asignatura o de un curso: fechas de exmenes, de entrega de
trabajos, reuniones de tutora, etc. Existen cuatro categoras de eventos

45
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

temporales que podemos controlar con el calendario y cada uno de ellos est
identificado con un color de fondo en el bloque: eventos globales, eventos de
curso, eventos de grupo y eventos de usuario.
Canales RSS remotos: El bloque Canales RSS remotos permite mostrar
contenidos de canales RSS de sitios Web externos. El administrador debe
configurar el bloque para permitir al profesorado agregar y gestionar los
canales. En caso contrario, slo el administrador puede aadir o gestionar los
canales del sitio Moodle.
Cursos: El bloque Cursos muestra un listado de todos los cursos en los que
estamos matriculados o somos profesores/as, y puede utilizarse para moverse
rpidamente entre esos cursos. Debajo de esta lista, aparece el vnculo Todos los
cursos, que lleva a una pgina donde se muestran todos los cursos del sitio
agrupados por categoras (esto no quiere decir que se pueda entrar en ellos).
Descripcin del curso/sitio: El bloque Descripcin de curso/sitio muestra el texto
introducido en el resumen (informe) del curso presente en el formulario de
Configuracin del curso o en la descripcin del sitio que se realiza en la pgina de
Ajustes de portada. La cabecera del bloque slo se muestra en el modo de
edicin. Se pueden incluir imgenes y enlaces.
Enlaces de seccin: El bloque Enlaces de Seccin facilita la navegacin rpida por
las diferentes secciones o semanas del curso, dependiendo del formato del
curso usado, Temas o Semanal. Los nmeros que aparecen en el bloque son
enlaces a las secciones numeradas del curso. Este bloque es especialmente til
en los cursos con un gran nmero de secciones y cuando tenemos una sola
seccin visible.
Entrada aleatoria del glosario: Es un bloque que permite mostrar, por ejemplo
cada vez que se accede a la pgina principal de un curso, una nueva entrada del
glosario elegido, o una frase clebre, una cita, o un refrn, de forma sencilla y
colaborativa.
Eventos prximos: El bloque Eventos prximos muestra una lista de los
acontecimientos prximos (ya sea un evento global, de curso o de usuario) en el
calendario, con enlaces al contenido del acontecimiento sealado. Los eventos
se pueden programar en el calendario y todas las actividades de Moodle con
fecha lmite generan un evento automticamente.
HTML: El bloque HTML se utiliza para presentar en la pgina principal del sitio
o de un curso informacin textual, grfica, etc. Facilita un bloque flexible que
puede incorporar variedad de funciones y usos, proporcionando un editor
HTML para formatear el texto, aadiendo imgenes o creando enlaces.
Tambin es posible trabajar directamente con el cdigo fuente, lo que permite
introducir marcadores del lenguaje HTML. Eso hace posible incluir video,

46
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

sonido, flash, y otros ficheros que aadirn elementos nicos a la pgina del
curso.
Memtees: El bloque Mentees, slo disponible a partir de Moodle 1.8, es
bsicamente un bloque para que los padres de los alumnos puedan acceder a
Moodle y puedan ver las actividades o calificaciones de sus hijos. Para aadir
este bloque debemos tener instalada la versin 1.8, o superior, de Moodle, pues
slo funciona con esta versin.
Mensajes: El bloque Mensajes constituye un sistema de mensajera interna del
sistema que permite la comunicacin directa entre todos los usuarios del sitio
sin necesidad de usar el correo electrnico.
Novedades: El bloque Novedades presenta las cabeceras de las ltimas noticias o
mensajes publicados por el profesor o profesora en el Foro de Noticias. Siguiendo
el hipervnculo ms se accede al foro donde est publicada la noticia y se
puede ver el mensaje completo. En principio, todos los estudiantes de un curso
estn suscritos a este foro, de forma que tambin recibirn estos mensajes en su
correo particular.
Personas: El bloque Personas contiene el enlace a Participantes, que es un listado
de la totalidad de participantes del curso. Por defecto, aparece primero el
profesorado y despus los alumnos, ordenados por el ltimo acceso al curso. Al
hacer clic sobre el nombre de algn participante nos muestra su perfil personal.
Resultados del cuestionario: El bloque Resultados del cuestionario muestra
informacin sobre los resultados alcanzados por los usuarios en un
determinado cuestionario en tiempo real.
Usuarios en lnea: El bloque de los Usuarios en lnea muestra a los usuarios
matriculados (no muestra los invitados) del curso actual y presentes en un
perodo de tiempo fijado por el administrador del sitio (por defecto son los
ltimos 5 minutos).

4.7 Control de acceso, inicio de sesin y roles de usuario


Al ser una plataforma tan abierta, Moodle debe ser riguroso con su seguridad.
Por ello hace grandes esfuerzos para asegurar que ninguna persona acceda al sistema
si no debe hacerlo, y que los usuarios que acceden lo hagan de la manera correcta.

Moodle cuenta con un potente sistema de permisos y control de acceso, cuyo


ncleo son las cuentas de usuario. Aunque es posible permitir el acceso a un curso a
cualquier visitante sin necesidad de autenticacin, a estos usuarios invitados no les est
permitido hacer algunas cosas importantes en el sistema. Lo usual es que queramos
saber quines son nuestros usuarios, y que cada uno tenga su propia cuenta.

Una cuenta de usuario proporciona acceso individual al sistema mediante un


nombre de usuario y una contrasea. Estas cuentas se crean utilizando los plugins de

47
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

autenticacin. La manera ms simple de crear una cuenta de usuario es hacerlo de


forma manual, creando un usuario mediante la interfaz de administracin. Sin
embargo, el sistema ms comn de autenticacin es el basado en e-mails, que permite a
los usuarios crear sus propias cuentas mediante la verificacin de e-mail. En cualquier
caso, se requiere un nombre de usuario y una direccin de correo electrnico, adems
de una contrasea. Las contraseas en Moodle se codifican con una funcin hash MD5
para hacerlas ilegibles y difciles de averiguar.

Para acceder al sistema, un usuario introduce su usuario y contrasea. Si son


correctos se le permite el acceso al sitio. El sistema de sesiones de Moodle utiliza
funciones de cookies de PHP para introducir cookies en la sesin actual y ayudar a
identificar al usuario durante toda su visita al sistema.

4.7.1 Permisos
Los permisos en Moodle pueden ser asignados dentro de seis contextos:
sitio/global, categora de curso, curso, bloques y actividades, usuario y portada. Existen
siete roles integrados: administrador, profesor, profesor no editor, estudiante, creador
de cursos, usuario autenticado e invitado, y todos ellos pueden ser asignados en uno o
ms de los contextos mencionados. Como desarrolladores, podemos crear capacidades
para controlar el acceso a las nuevas funcionalidades que despleguemos en el sistema,
y tambin se puede crear cualquier nmero de roles personalizados a partir de la lista
de unas doscientas capacidades del sistema. A cada capacidad se le puede asignar uno
de estos cuatro niveles de acceso: No configurada, permitida, prohibida y prevenida.
Cada usuario puede tener mltiples roles que heredan permisos de todos los niveles de
contexto aplicables a una peticin de acceso realizada por el usuario. La combinacin
de todo lo anterior proporciona una solucin poderosa y flexible para los
administradores.

Los roles estndar del sistema son:

Administrador: El administrador del sistema tiene todos los permisos.


Creador de cursos: Puede crear cursos en el sistema y puede estar limitado a
una categora de cursos.
Profesor: Puede administrar un curso, y adems puede desarrollar y actualizar
su contenido.
Profesor no editor: Puede administrar un curso, pero no puede modificar su
estructura.
Estudiante: Puede estar matriculado en un curso.
Usuario autenticado: Todo usuario que haya iniciado sesin en el sistema tiene
este rol.
Invitado: Los usuarios no autenticados que tiene permiso de acceso al sistema.

48
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Se pueden crear multitud de roles personalizados utilizando la interfaz de


Moodle. Para comprobar y forzar un inicio de sesin dentro de nuestro cdigo, se debe
realizar una llamada a require_login. Esta funcin permite comprobar si un usuario ha
iniciado sesin, y forzar a que lo haga si lo requiere el elemento al que est tratando de
acceder. Por ejemplo, podemos crear una actividad especfica en un mdulo que
requiera que el usuario haya iniciado sesin en el sistema. Si no lo ha hecho, ser
redireccionado a la funcin de login adecuada.

4.7.2 Capacidades
Las capacidades estn asociadas con niveles de contexto y son reglas especficas
de acceso que pueden ser concedidas a los roles. Ejemplos de capacidades son los
siguientes:

moodle/site:manageblocks. Puede administrar bloques en el nivel de contexto


sitio.
moodle/user:viewdetails. Puede ver los detalles de un usuario en el nivel de
contexto usuario.
moodle/course:view. Puede ver un curso en el nivel de contexto curso.

Cuando se desarrollen nuevas capacidades para el cdigo personalizado, se


debe considerar cuidadosamente en qu contexto estarn mejor localizadas. Las
capacidades normalmente se colocan en el nivel de contexto ms bajo en el que puedan
funcionar.

4.7.3 Roles
Los roles son identificadores especficos asociados con todos los contextos.
Principalmente se usan para agrupar capacidades de un contexto, de forma que este
grupo de capacidades puede ser asignado a los usuarios. Las capacidades se asignan a
roles en contextos especficos bien por defecto o mediante una asignacin especfica.

4.7.3.1 Asignacin de roles


Por ltimo, a los usuarios se les puede asignar roles en contextos especficos.
Esta asignacin les proporciona el acceso definido por las capacidades en ese rol para
ese contexto.

Para resumir:

Los contextos son elementos especficos en Moodle.


Los roles estn asociados con todos los contextos.
Las capacidades se asignan a roles en un contexto dado.
A los usuarios se les asignan roles en un contexto dado.

49
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Son la asignacin de roles a nivel de contexto y las capacidades que un rol tiene
en ese contexto lo que determina si un usuario puede realizar la accin requerida.

Como desarrolladores de cdigo para Moodle, necesitaremos tener esta


funcionalidad en mente, para que de esta manera podamos disear y construir el
control de acceso que deseamos para nuestras funciones.

50
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5 Desarrollo de un mdulo de actividad


Quiz lo ms complicado en el desarrollo de mdulos de actividad para Moodle
sean los primeros pasos, debido a la escasa documentacin existente, especialmente en
espaol.

Este captulo constituye un manual mediante el cual se pretende simplificar al


desarrollador la tarea de programar un nuevo mdulo que aada funcionalidades a la
plataforma, o de modificar uno ya existente para adaptarlo a unas necesidades
concretas. En l se ha recopilado, organizado y sistematizado la informacin disponible
en Internet, especialmente en la pgina para desarrolladores de la Web oficial de
Moodle (http://docs.moodle.org/en/Development:Developer_documentation).

Para ello se repasarn las principales libreras de cdigo con las que cuenta el
programador para realizar su proyecto. A continuacin se analizar la estructura y el
contenido de los ficheros que componen un mdulo, para terminar realizando paso por
paso el desarrollo de un mdulo sencillo, que ser el germen de lo que posteriormente
podra ser un trabajo mayor.

Para facilitar la labor del desarrollador de Moodle inexperto, tambin se


detallar la manera de llevar a cabo la instalacin de la plataforma, preparando para
ello el sistema con todos los requisitos necesarios.

Tanto el cdigo fuente contenido en este manual, como las explicaciones


tericas relacionadas con el sistema de mdulos de Moodle, se refieren a la ltima
versin estable de la plataforma disponible en el momento de redactar este texto
(versin 1.9.9).

5.1 Instalacin de Moodle


Los pasos que aqu se detallan servirn para configurar un entorno vlido y as,
posteriormente, obtener una instalacin satisfactoria de Moodle en el equipo. Estos
pasos estn pensados para todos aquellos usuarios que utilicen la plataforma para
desarrollar mdulos.

Se explicar en detalle el proceso de instalacin tanto de Moodle como de sus


requisitos previos en un servidor Linux, en concreto en Ubuntu 10.04.

5.1.1 Requisitos
Moodle est desarrollado principalmente en GNU/Linux usando Apache,
MySQL y PHP (tambin conocida como plataforma LAMP), aunque es probado
regularmente con PostgreSQL y en los sistemas operativos Windows XP, MacOS X y
Netware 6.

51
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Los requerimientos de instalacin de Moodle son los siguientes:

Un servidor web. La mayora de los usuarios utilizan Apache, pero Moodle


debe funcionar bien en cualquier servidor web que soporte PHP, como el IIS
(Internet Information Server) de las plataformas Windows.
Una instalacin de PHP en funcionamiento (versin 4.3.0 o posterior). PHP 5
est soportado a partir de Moodle 1.4.
Una base de datos: MySQL o PostgreSQL, que estn completamente soportadas
y recomendadas para su uso con Moodle. MySQL es la eleccin preferida para
mucha gente. Hay algunos argumentos a favor de PostgreSQL, especialmente si
est planificando instalaciones de grandes dimensiones. MySQL 4.1.16 es la
versin mnima para trabajar con Moodle 1.9 (muchas distribuciones de Linux
incorporan versiones ms antiguas, as que se debe comprobar este extremo).

La mayora de los servicios de alojamiento web (hosting) soportan todo esto por
defecto. Si se ha contratado alguno de los pocos servicios de alojamiento web que no
soportan estas caractersticas, se debe considerar la posibilidad de trasladar el sistema a
otro sitio.

El apartado siguiente es una gua de cmo instalar Apache2, MySQL y PHP5.


Proporcionar instrucciones, paso a paso para instalar estos programas en una de las
plataformas ms utilizadas: Ubuntu 10.04.

Requerimientos adicionales:

Librera GD y librera FreeType 2 para poder construir los grficos de los


registros de Moodle.
mbstring es requerido para manipular cadenas de caracteres multi-byte (iconv
tambin es recomendable).
La extensin mysql si va a utilizar la base de datos MySQL. En algunas
distribuciones de Linux (principalmente RedHat) se trata de un paquete
opcional.
La extensin pgsql si va a utilizar una base de datos PostgreSQL.
La extensin zlib es necesaria si va a utilizar las funcionalidades zip/unzip.
Otras extensiones PHP podran ser necesarias dependiendo de las
funcionalidades opcionales de Moodle que vayan a ser utilizadas,
especialmente las relacionadas con autenticacin y matriculacin (p. ej. la
extensin LDAP).

52
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.1.2 Instalacin de requisitos

5.1.2.1 Instalacin de Apache2


Lo primero es instalar un servidor HTTP, en nuestro caso, vamos a instalar
Apache2 y el mdulo de PHP5 para Apache. Desde el terminal escribimos:

sudo apt-get install apache2 libapache2-mod-php5


Cdigo 1: Instalacin de Apache2

Una vez que se ha completado la instalacin, si todo ha ido bien, al escribir


http://localhost/ en la barra de direcciones de nuestro navegador, nos debe aparecer
un mensaje como el siguiente:

Ilustracin 9: Apache instalado correctamente

Este mensaje nos indica que el servidor web se ha instalado y est funcionando
correctamente.

5.1.2.2 Instalacin de MySQL


A continuacin tenemos que instalar MySQL. Tambin instalaremos el enlace
entre apache y mysql, y el de php5 y mysql. Lo hacemos con el siguiente comando:

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql


Cdigo 2: Instalacin de MySQL

Durante la instalacin se nos preguntar por la contrasea de MySQL, tal y


como se muestra en la imagen inferior:

53
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 10: Instalacin de MySql

5.1.2.3 Instalacin de PHP


Por ltimo, instalaremos todos los paquetes que necesitemos de PHP5,
mediante el siguiente comando:

sudo apt-get install php5 php5-gd


Cdigo 3: Instalacin de PHP

5.1.3 Instalacin de Moodle


Despus de la instalacin en nuestro servidor de todos los requisitos previos,
podemos proceder a instalar nuestra plataforma Moodle. Para ello debemos descargar
la ltima versin estable (en nuestro caso Moodle v1.9.9) de la pgina oficial de
descargas de Moodle:

wget http://download.moodle.org/download.php/stable19/moodle-1.9.9.tgz
Cdigo 4: Descarga de Moodle

A continuacin descomprimimos el fichero y movemos la carpeta moodle a


/var/www/ que es donde, por defecto, se alojan las pginas web en Apache2:

tar xzvf moodle-1.9.9.tgz


sudo mv moodle /var/www/
Cdigo 5: Descomprimir Moodle y colocarlo el directorio www

Adems, Moodle necesita un directorio para almacenar archivos. Por seguridad


no debe ser accesible desde la web por lo que lo crearemos en /var y le cambiaremos los
permisos y el propietario para que Moodle pueda acceder a l:

54
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

sudo mkdir -p /var/moodledata


sudo chown -R nobody:www-data /var/moodledata
sudo chmod -R 0770 /var/moodledata
Cdigo 6: Crear el directorio moodledata y darle permisos adecuados

Una vez ejecutado el comando anterior ya dejamos de lado el Terminal y los


siguientes pasos los realizaremos desde un navegador web, donde pondremos la IP del
servidor en la barra de direcciones:

Ilustracin 11: Instalacin de Moodle-Paso 1

Despus de seleccionar el idioma, hacemos clic en Siguiente para continuar la


instalacin.

A continuacin el sistema comprueba si tenemos todo lo necesario para que


Moodle se ejecute correctamente.

55
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 12: Instalacin de Moodle-Paso 2

En el paso siguiente comprobamos las direcciones donde se instalar Moodle:

Ilustracin 13: Instalacin de Moodle-Paso 3

Sobre todo, debemos comprobar que el directorio de datos es el que hemos


creado en los pasos anteriores.

Despus tenemos que completar la informacin correspondiente a MySQL con


el nombre de usuario y la contrasea que escribimos durante la instalacin de MySQL.

56
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 14: Instalacin de Moodle-Paso 4

A continuacin se verifica que se cumplen todos los requisitos necesarios en la


configuracin del servidor. Si no es as, podemos abrir un terminal e instalar los
paquetes requeridos o recomendados antes de continuar con la instalacin de Moodle.

Ilustracin 15: Instalacin de Moodle-Paso 5

En el paso siguiente descargamos el paquete de idioma de Espaol Espaa


(es_es).

57
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 16: Instalacin de Moodle-Paso 6

En este punto finaliza la configuracin y Moodle intenta crear un fichero de


configuracin en /var/www/moodle. En nuestro caso no lo ha conseguido, pero nos
ofrece la posibilidad de descargar el archivo config.php para despus colocarlo nosotros
manualmente en el servidor.

Ilustracin 17: Instalacin de Moodle-Paso 7

Continuamos en el navegador web y aceptamos las condiciones de la licencia.


Durante todo el proceso siguiente aparecern pantallas que nos informarn de la

58
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

insercin de nuevas tablas en la base de datos. Debemos comprobar que no existan


mensajes de error y aceptar para pasar a la siguiente pantalla.

Ilustracin 18: Instalacin de Moodle-Paso 8

Ilustracin 19: Instalacin de Moodle-Paso 9

La siguiente pantalla nos informa de la versin instalada.

59
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 20: Instalacin de Moodle-Paso 10

En la siguiente pantalla tendremos que suministrar los datos del administrador


de Moodle:

Ilustracin 21: Instalacin de Moodle-Paso 11

Por ltimo configuramos la pgina inicial de nuestra plataforma:

60
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 22: Instalacin de Moodle-Paso 12

Y, si todo ha ido bien, ya hemos terminado nuestra instalacin de Moodle.

Ilustracin 23: Instalacin de Moodle-Paso 13

61
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.2 Guas de estilo para desarrolladores


5.2.1 Estilo del cdigo
Este manual de estilo ha sido creado para conseguir que todo el cdigo de
Moodle cumpla estas caractersticas, de forma que sea ms fcil de entender para los
futuros desarrolladores. Es cierto que la parte ms antigua del cdigo de Moodle no
cumple estas normas en algunos casos, pero la comunidad de desarrolladores est
trabajando para solucionarlo gradualmente. Todo el cdigo nuevo definitivamente
deber adherirse a estos estndares de la forma ms exacta posible.

5.2.2 Reglas generales


Este apartado se basa en las Reglas Generales que propone Moodle para sus
desarrolladores
(http://docs.moodle.org/es/Manual_de_Estilo_de_Cdigo#Reglas_Generales).

Todos los archivos de cdigo deben utilizar la extensin .php.


Todas las plantillas deben utilizar la extensin .html.
Todos los archivos de texto deben utilizar el formato de texto Unix (la mayora
de los editores de texto tienen esto como una opcin).
Todas las etiquetas PHP deben ser 'completas', como <?Php ?>, no 'reducidas',
como <? ?>.
Todos los avisos de copyright deben ser mantenidos. Podemos incluir los
nuestros si resulta necesario.
Todos los archivos deben incluir el archivo principal config.php.
Cualquier otro include/require debe utilizar una ruta absoluta que comience
por $CFG->dirroot o $CFG->libdir, nunca relativos, ya que estos en algunas
ocasiones funcionan de forma extraa en PHP.
Cada archivo debe comprobar que el usuario est autenticado correctamente,
utilizando las funciones require_login(), require_capability() y has_capability().
Todos los accesos a la base de datos deben utilizar las funciones definidas en
lib/datalib.php cuando sea posible, ya que esto permite la compatibilidad con un
gran nmero de bases de datos y prcticamente todo es posible utilizando estas
funciones. La inclusin de cdigo SQL queda restringida a funciones especficas
de nuestro cdigo (normalmente en el archivo lib.php. Adems debemos
comprobar que funciona en cualquier plataforma y debe estar claramente
comentado.
No se deben crear o utilizar variables globales distintas de las estndar $CFG,
$SESSION, $THEME, $SITE, $COURSE y $USER.
Todas las variables deben ser inicializadas o, al menos, comprobada su
existencia utilizando isset() o empty() antes de ser utilizadas.

62
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Todas las cadenas deben ser traducibles. Para ello crearemos nuevos textos en
los archivos lang/es_utf8 con palabras reducidas en ingls y su traduccin
completa al espaol y las recuperaremos en nuestro cdigo utilizando las
funciones get_string() o print_string().
Todos los errores deben ser visualizados utilizando la funcin print_error() para
maximizar la traduccin y ayudar a los usuarios (Automticamente se enlaza
con Moodle Docs).
Todos los ficheros de ayuda deben ser traducibles. Para ello crearemos nuevos
textos en el directorio lang/es_utf8/help y los llamaremos utilizando la funcin
helpbutton(). Si necesitamos actualizar un fichero de ayuda:
o Para un pequeo cambio, donde la traduccin antigua del fichero
podra tener todava sentido, est permitido que se haga el cambio, pero
debera ser notificado a translation@moodle.org
o Para un cambio importante tendremos que crear un nuevo fichero
aadindole en el nombre un nmero incrementado (Ej. filename2.html)
para que los traductores puedan ver fcilmente que se trata de una
nueva versin del archivo. Obviamente el nuevo cdigo y los ndices de
las pginas de ayuda deben ser modificados para apuntar a las
versiones ms recientes.
La informacin que llega desde el navegador (enviada con los mtodos GET o
POST) automticamente tiene las "magic_quotes" aplicadas (sin importar la
configuracin de PHP) por lo que podemos insertarla con total seguridad en la
base de datos. El resto de la informacin (obtenida desde los archivos, o desde
la base de datos) debe ser escapada con la funcin addslashes() antes de
insertarla en la base de datos.
MUY IMPORTANTE: Todos los textos dentro de Moodle, especialmente
aquellos que han sido introducidos por los usuarios, deben ser mostrados
utilizando la funcin format_text(). Esto asegura que el texto es filtrado y
limpiado correctamente.
Las acciones de los usuarios deben ser grabadas utilizando la funcin
add_to_log(). Estos registros son utilizados para la generacin de los "Informes
de Actividad" y los registros.
Al generar enlaces HTML, deben hacerse siempre relativos a la raz del sitio
Moodle, por ejemplo, enlace a $CFG->wwwroot/mod/blonk/view.php?id=99 en
lugar de nicamente view.php?id=99. Gracias a esto el cdigo funcionar aunque
sea llamado por un script que se encuentre en otra carpeta diferente.

63
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.2.2.1 Estilo del cdigo fuente


Es necesario cumplir las siguientes normas para poder comprender el cdigo
fuente de Moodle correctamente.

El sangrado del texto debe ser siempre de 4 espacios. No debemos utilizar los
tabuladores NUNCA.
Los nombres de las variables tienen que ser siempre fciles de leer, procurando
que sean palabras en minsculas con significado en ingls. Si realmente
necesitamos ms de una palabra, debemos ponerlas juntas.
Debemos utilizar nombres en plural para las matrices de objetos.

BIEN: $quiz
BIEN: $errorstring
BIEN: $assignments (para un array de objetos)
BIEN: $i (solo en bucles pequeos)
MAL: $Quiz
MAL: $aReallyLongVariableNameWithoutAGoodReason
MAL: $error_string
Cdigo 7: Ejemplos de nombres de variables correctos e incorrectos

Las constantes tienen que definirse siempre en maysculas, y empezar siempre


por el nombre del mdulo al que pertenecen. Deberan tener las palabras
separadas por guiones bajos.

define("FORUM_MODE_FLATOLDEST", 1);
Cdigo 8: Ejemplo de definicin de una constante

Los nombres de las funciones tienen que ser palabras sencillas en minsculas y
en ingls, y empezar con el nombre del mdulo al que pertenecen para evitar
conflictos entre mdulos. Las palabras deberan separarse por guiones bajos.
Los parmetros, si es posible, tendrn valores por defecto. Debemos comprobar
que no haya espacio entre el nombre de la funcin y los parntesis.

function forum_set_display_mode($mode=0) {
global $USER, $CFG;
if ($mode) {
$USER->mode = $mode;
} else if (empty($USER->mode)) {
$USER->mode = $CFG->forum_displaymode;
}
}
Cdigo 9: Ejemplo de funcin bien definida

Los bloques de cdigo siempre deben estar encerrados por llaves (incluso si
solo constan de una lnea). Moodle utiliza el siguiente estilo:

64
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

if ($quiz->attempts) {
if ($numattempts > $quiz->attempts) {
error($strtoomanyattempts, "view.php?id=$cm->id");
}
}
Cdigo 10: Ejemplo de bloque de cdigo correcto siguiendo el estilo de Moodle

Las cadenas tienen que ser definidas utilizando comillas simples siempre que
sea posible. Esto sirve para obtener un mejor rendimiento.

$var = 'texto sin variables';


$var = "con caracteres especiales como nueva lnea \n";
$var = 'una cadena muy muy larga con una '.$sola.' variable';
$var = "algo de $texto con $varias variables $dentro";
Cdigo 11: Ejemplos de definicin de cadenas

Los comentarios deben aadirse de forma que resulten prcticos, para explicar
el flujo del cdigo y el propsito de las funciones y variables.
Cada funcin (y cada clase) debera utilizar el popular formato phpDoc. Esto
permite que la documentacin sea generada automticamente.
Los comentarios en lnea deberan utilizar los caracteres //, alineados con
cuidado por encima de las lneas de cdigo que comenta. Los comentarios de
p{rrafo utilizan los caracteres /**.**/

/**
The description should be first, with asterisks laid out exactly
like this example. If you want to refer to a another function,
do it like this: {@link clean_param()}. Then, add descriptions
for each parameter as follows.
*
@param int $postid The PHP type is followed by the variable name
@param array $scale The PHP type is followed by the variable name
@param array $ratings The PHP type is followed by the variable name
@return mixed
**/
function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {
if (!$ratings) {
$ratings = array(); // Initialize the empty array
if ($rates = get_records("forum_ratings", "post",
$postid)) {
// Process each rating in turn

65
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

foreach ($rates as $rate) {


....etc

Cdigo 12: Ejemplos de comentarios de lnea y prrafo

El espacio en blanco se puede utilizar con bastante libertad. No pasa


nada por separar las cosas un poco para ganar en claridad. Generalmente,
debera haber un espacio entre llaves y lneas normales y ninguno entre llaves y
variables o funciones:

foreach ($objects as $key => $thing) {


process($thing);
}
if ($x == $y) {
$a = $b;
} else if ($x == $z) {
$a = $c;
} else {
$a = $d;
}
Cdigo 13: Ejemplo del uso de espacios para hacer ms claro el cdigo

Cuando estemos realizando una COPIA de un objeto, utilizaremos siempre la


funcin clone(), originalmente slo disponible en php5 (en caso contrario
simplemente tendremos una referencia al primer objeto). Moodle nos garantiza
que este mtodo funcionar tambin bajo PHP4.

MAL: $b = $a;
BIEN: $b = clone($a);
Cdigo 14: Ejemplo de copia correcta de un objeto

Si lo que se quiere copiar no es un objeto, pero puede contener objetos (p. ej. un
array de objetos) utilizaremos la funcin fullclone() en su lugar.

5.2.2.2 Estructura de la base de datos


En cuanto a las tablas que nuestro mdulo crear e insertar en la base de datos
de Moodle, se debe tener en cuenta las siguientes consideraciones:
Cada tabla debe tener un campo autonumrico id (INT10) como clave primaria.
La tabla principal que contiene instancias de cada mdulo debe tener el mismo
nombre que el mdulo y contener, por lo menos, los siguientes campos:
o id - clave primaria
o course - el identificador del curso al que la instancia pertenece
o name - el nombre completo de la instancia

66
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

El resto de las tablas asociadas con un mdulo que contiene informacin sobre
cualquier otra cosa (p.ej. respuestas), deberan ser llamadas modulo_respuestas
(en plural).
Los nombres de las tablas y de los campos tienen que evitar el uso de palabras
reservadas por las bases de datos. Esto se debe comprobar antes de crearlas.
Los nombres de los campos (columnas) deberan ser sencillos y cortos,
siguiendo las mismas reglas que los nombres de las variables.
Cuando sea posible, las columnas que contengan una referencia al campo id de
otra tabla (por ejemplo, modulo) debera ser llamado moduloid. (esta norma es
nueva y no es seguida por algunas tablas antiguas).
Los campos booleanos sern implementados como enteros cortos (por ejemplo,
INT4) con los valores 0 o 1, para permitir la futura expansin de los valores si
fuera necesario.
La mayora de las tablas tienen que tener un campo timemodified (INT10) que
ser actualizado con la fecha actual (timestamp de UNIX) obtenida con la
funcin time() de PHP.
Debemos definir siempre un valor por defecto para cada campo (y hacer que
tenga sentido).
Cada tabla debe comenzar con el prefijo de la base de datos ($CFG->prefix). En
muchos casos esto es gestionado automticamente. Adems, bajo PostgreSQL,
el nombre de cada ndice debe empezar tambin con el prefijo.
Para garantizar la compatibilidad entre bases de datos, se deben seguir las
reglas siguientes sobre el uso del comando AS (solo si necesitamos alias en
tablas/campos, por supuesto):
o No debemos utilizar el comando AS para alias de tablas.
o Utilizaremos el comando AS para alias de campos (columnas).
Nunca debemos crear UNIQUE KEYs (restricciones) para nada. En su lugar
utilizaremos UNIQUE INDEXes. En el futuro, si se decide aadir integridad
referencial a Moodle y si se necesitan UNIQUE KEYs, sern utilizadas, pero no
por ahora. El editor XMLDB permite especificar tanto restricciones UNIQUE
como FOREIGN (y eso es bueno, teniendo el XML bien definido), pero solo los
ndices subyacentes sern realmente generados en la base de datos.
El uso de UNIQUE KEYs creadas en el Editor XMLDB (punto anterior) solo
debe ser definido si el campo/campos van a ser el objetivo para alguna
FOREIGN KEY (a nivel de editor). En caso contrario, las crearemos como
UNIQUE INDEXes.
Las tablas asociadas con un bloque deben seguir las siguientes convenciones en
sus nombres: $CFG->prefix + block_ + nombre del bloque + aadidos. Por ejemplo,
asumiendo que $CFG->prefix es 'mdl_', todas las tablas para el bloque
"rss_client" debern empezar por 'mdl_block_rss_client' (siendo posible aadir

67
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

ms palabras al final, Ej. mdl_block_rss_client_anothertable...). Esta regla ser


completamente forzada con Moodle 2.0, dando algo de tiempo a los
desarrolladores hasta entonces.
Nunca debemos realizar cambios a la base de datos en ramas estables. Si lo
hacemos, los sitios actualizados de una versin estable a la siguiente pueden
encontrarse con cambios por duplicado, lo cual puede producir errores serios.
Cuando hagamos referencia a una variable entera en consultas SQL, no
debemos entrecomillar el valor. Por ejemplo, get_records_select('question',
"category=$catid") es correcto. get_records_select('question', "category='$catid'") es
incorrecto. Ese uso oculta posibles errores cuando $catid est sin definir.

5.2.2.3 Normas de seguridad (y de control de la informacin de formularios y URLs)


A la hora de desarrollar nuestro propio mdulo, tambin hay que tener en
cuenta una serie de normas de seguridad, especialmente en lo que se refiere a la
informacin obtenida del usuario por medio de formularios y de parmetros en la
URL. Es muy importante mantener la seguridad en estos procedimientos para poder
garantizar la integridad de los datos manejados por nuestro mdulo. Algunas de las
normas a seguir en este sentido son las siguientes:

No debemos basar nuestro cdigo en register_globals. Cada variable debe ser


correctamente inicializada en cada fichero de cdigo. Debe ser obvia la
procedencia de cada variable.
Debemos inicializar todos los arrays y objetos aunque estn vacos. $a = array() o
$obj = new stdClass().
No debemos utilizar la funcin optional_variable(). En su lugar, utilizaremos la
funcin optional_param().
Seleccionaremos la opcin PARAM_XXXX apropiada al tipo de parmetro que
esperamos. Para comprobar y definir un valor opcional para una variable,
utilizaremos la funcin set_default().
No utilizaremos la funcin require_variable(). En su lugar, utilizaremos la
funcin required_param().
Seleccionaremos la opcin PARAM_XXXX apropiada al tipo de parmetro que
esperamos.
Utilizaremos data_submitted(), con cuidado. La informacin todava debe ser
limpiada antes de utilizarla.
No debemos utilizar $_GET, $_POST o $_REQUEST. En su lugar, utilizaremos
las funciones required_param() u optional_param() apropiadas.
No debemos comprobar las acciones con cdigo como: if (isset($_GET['algo'])).
Utilizaremos, por ejemplo, $algo = optional_param( algo, -1, PARAM_INT ) y
entonces compruebaremos que est dentro de los valores esperados, por
ejemplo, if ($something>=0) {....

68
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Cuando sea posible agruparemos todas las llamadas a required_param(),


optional_param() y el resto de inicializacin de variables en el principio de cada
fichero (o funcin) para que sea fcilmente localizable.
Utilizaremos el mecanismo sesskey para proteger el envo de formularios de
ataques. Un ejemplo de uso: cuando el formulario es generado, incluiremos
<input type="hidden" name="sesskey" value="<?php echo sesskey(); ?>" />. Cuando
el formulario es procesado, comprobaremos if (!confirm_sesskey()) {error('Bad
Session Key');}.
Todos los nombres de ficheros deben ser limpiados de caracteres extraos
utilizando la funcin clean_filename(), si esto no ha sido realizado con el uso de
las funciones required_param() y optional_param() con anterioridad.
Cualquier informacin leda desde la base de datos debe tener la funcin
addslashes() aplicada antes de volver a enviar la informacin a la base de datos.
Un objeto completo puede ser procesado con la funcin addslashes_object().
No debemos utilizar informacin obtenida de $_SERVER si podemos evitarlo.
Presenta algunos problemas de portabilidad.
Si no ha sido realizado en ningn otro lugar, debemos asegurarnos de que la
informacin enviada a la base de datos ha sido filtrada mediante la funcin
clean_param() utilizando la opcin PARAM_XXXX apropiada.
Si escribimos cdigo SQL, nos aseguraremos completamente de que es correcto.
En particular, compruebaremos la falta de comillas en las variables utilizadas.
Es un punto de entrada para ataques de tipo SQL injection.
Comprobaremos toda la informacin (especialmente la que es enviada a la base
de datos) en cada archivo que es utilizada. Nunca debemos confiar en que otro
cdigo estar haciendo ese trabajo.
Los bloques de cdigo que se incluyan deben presentar una estructura PHP
correcta (por ejemplo, con una declaracin de una clase, de funciones, etc.) Los
bloques de cdigo lineales suelen tender a utilizar variables sin inicializar (y
son menos legibles).
Si necesitamos usar shell_exec() (o cualquier otra funcin que invoque un shell),
nos aseguraremos de que se han limpiado los parmetros anteriormente con
escapeshellcmd()/escapeshellarg() (de lo contrario abrimos la puerta a ataques de
inyeccin de shell).

5.2.3 Estilo de la interfaz


En este apartado se ofrece una coleccin de ideas para adaptar la interfaz de
nuestro mdulo al estilo global de Moodle, de la mejor manera posible:

Simplicidad: Debemos usar el mnimo de interfaz necesario para obtener la


funcionalidad que necesitamos.

69
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Pginas estndar: Tanto en mdulos de actividad como en bloques, existen una


serie de ficheros que se deben crear obligatoriamente. En el caso de los mdulos
de actividad, estos ficheros se detallan en el apartado Estructura de un mdulo de
actividad.
Debe haber un script por funcin o pgina principal.
Plantilla de pgina:
o Imprimiremos las cabeceras con print_heading(), usaremos el CSS para
IDs y Clases.
o Imprimiremos las cajas alrededor del texto usando print_simple_box().
Plantilla de formulario:
o Mostraremos las opciones ms importantes en la parte superior.
o Cada entrada debe tener una etiqueta y, si es necesario, un archivo de
ayuda.
o Si hay ms de 10 opciones, las desglosaremos en los parmetros
necesarios y opcionales, extra o avanzados.
Manejo de tablas:
o Usaremos la funcin print_table() cuando sea posible.
Herramientas de navegacin estndar:
o Todas las pginas deberan llamar a print_header(), y suministrar una
ruta de navegacin estndar que apareciera all. Donde sea posible,
debera verse como: COURSE >> INDEX >>INSTANCE >> SUBPAGES...
o Las pginas incluidas en mdulos de actividad deberan llamar a
navmenu() para generar el men de navegacin apropiado.
Direcciones URL:
o Las direcciones URL deben ser lo ms cortas posible.
o No debemos usar subrayado en nombres de parmetros o nombres de
archivos.
o Nunca debemos usar dos palabras cuando una sea suficiente.
Botones o enlaces: El Web Accelerator de Google proporciona algunas
sugerencias:
o Las acciones que puedan modificar el estado de Moodle (archivos de
datos, base de datos, informacin de sesin) deben ser llevadas a cabo
por medio de botones.
o Como mnimo, tales acciones, que son implementadas como enlaces,
deben remitir a una pgina de confirmacin que s utilice botones.
Enlaces a archivos de ayuda:
o Los botones de ayuda deben estar a la derecha del objeto
(excepcionalmente pueden estar a la izquierda, si el objeto est alineado
a la derecha)

70
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.3 Estructura de un mdulo de actividad


Un mdulo de actividades viene definido por un conjunto de ficheros PHP y
HTML que se incluyen dentro de una carpeta con el nombre del mdulo, que a su vez
se incluye en la carpeta /mod del directorio base de Moodle. No resulta difcil encontrar
estos ficheros, en forma de plantilla, en la red, aunque con escasa documentacin y
siempre en ingls.

Estos documentos presentan una estructura flexible, con unos campos bsicos,
que deben ampliarse para dar funcionalidad al mdulo.

Para que Moodle reconozca nuestro mdulo de actividad este debe seguir dicha
estructura de archivos (algunos necesarios y otros opcionales). Para ello, a partir de
este momento vamos a considerar que nuestro mdulo de prueba va a llamarse
nombremodulo. Por tanto, y teniendo en cuenta que los archivos en negrita son los
archivos obligatorios que deberemos tener en nuestro mdulo, la estructura sera la
siguiente:

/ raz de Moodle.

/mod carpeta de mdulos.


o /nombremodulo carpeta raz de nuestro mdulo. Aqu dentro irn
todos nuestros archivos y carpetas.
/db carpeta con datos a introducir en la base de datos durante
la instalacin/actualizacin del mdulo.
access.php contiene las capacidades/permisos del
mdulo.
install.xml esquema de la base de datos en xmldb para
la instalacin del mdulo.
upgrade.php procedimientos de actualizacin del
mdulo.
icon.gif icono de la actividad que se muestra en el curso (entre
otros sitios).
index.php muestra la lista de instancias de actividades de
nuestro mdulo que hay en el curso.
lib.php funciones requeridas por Moodle para comunicarse
con nuestro mdulo.
locallib.php funciones propias que necesitemos para nuestro
mdulo.
mod_form.php formulario de configuracin de la actividad al
ser creada o editada.

71
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

version.php informacin sobre versiones relacionadas con el


mdulo.
view.php pgina de inicio de la actividad (p.ej. cuando entra
en la actividad un alumno).
styles.php definicin de estilos css para nuestro mdulo.
backuplib.php funciones para realizar la copia de seguridad
del mdulo.
restorelib.php funciones para realizar el restablecimiento de
una copia de seguridad del mdulo.
/lang directorio de idiomas
/es_es_utf8 directorio de idioma correspondiente al
espaol de Espaa versin UTF8.
nombremodulo.php archivo con las cadenas
usadas en el mdulo en el idioma de arriba.
/help carpeta con los archivos de ayuda.
/nombremodulo ayuda de este mdulo.
index.html ndice con enlaces a
los dems archivos de ayuda de
este mdulo.
mods.html informacin general
de nuestro mdulo.
miayuda5.html archivo de ayuda
propio con ayuda sobre algo de
nuestro mdulo.
miarchivo.php tambin podemos crear tantos archivos
(pginas) como necesitemos.

Como se coment en la gua de estilo, todos los archivos PHP deben incluir el
archivo config.php, ubicado en el directorio base de Moodle.

5.3.1 Ficheros principales


En este apartado se describir el contenido de los principales ficheros
mostrados en el apartado anterior.

5.3.1.1 access.php
El fichero access.php define las capacidades de los usuarios en funcin a los roles
para este mdulo, su formato es el siguiente:

<?php
$mod_nombremodulo_capabilities = array('mod/
nombremodulo:nombre_capacidad_primera' => array(
///Tipo de capacidad

72
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

'captype' => 'write',


///Contexto de la actividad
'contextlevel' => CONTEXT_MODULE,
///Permisos
'legacy' => array(
'editingteacher' => CAP_PROHIBIT,
'coursecreator' => CAP_PROHIBIT,
'teacher' => CAP_PROHIBIT,
'admin' => CAP_PROHIBIT,
'student' => CAP_ALLOW
)
),
///Aqu se pueden aadir tantas capacidades como se desee
'mod/nombremodulo:nombre_capaciad_enesima' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'editingteacher' => CAP_ALLOW,
'coursecreator' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'admin' => CAP_ALLOW,
'student' => CAP_PROHIBIT
)
)
);
?>
Cdigo 15: Ejemplo de fichero access.php

En cuanto a los permisos, existen roles generales, aplicables a todo el sitio, que
se pueden consultar y modificar con una cuenta de administrador en Usuario->
Permisos y por otro lado cada curso tiene sus roles locales que ha de ser configurados
cuando se crea un curso desde una cuenta de administrador del curso (vale la de
administrador del sitio) en el apartado Asignar Roles. Este modelo permite que el
mismo usuario sea alumno, profesor, administrador, etc dependiendo del curso en el
que se encuentre.

Las capacidades o permisos son cargados en la tabla de la base de datos cuando


el mdulo es instalado o actualizado. Cuando se actualizan o modifican las
capacidades o permisos, es necesario actualizar el nmero de versin del mdulo a
travs del fichero version.php. El sistema tiene cuatro posibles valores para las
capacidades o permisos: CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT, y heredado
(no est establecido). Es importante que el nombre de las capacidades o permisos sea
nico.

73
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.3.1.2 install.xml
Este fichero XML define las tablas de la base de datos que tendr nuestro
mdulo, establece una gramtica para la creacin de tablas y hacer as Moodle ms
portable, frente las anteriores versiones, que definan un archivo para cada tipo de base
de datos. install.xml define el tipo de datos, longitud, nombre y, en general, todos los
campos que pueden definirse con sentencias SQL. La creacin de las tablas se lleva a
cabo con la instalacin del mdulo.

Existe un editor en Moodle llamado XMLDB, donde se puede crear el esquema


de forma ms sencilla, y generar el cdigo XML.

A continuacin se adjunta y comenta un fichero de ejemplo:

<!-- Definicin del tipo de documento, no se modifica -->


<?xml version="1.0" encoding="UTF-8" ?>
<XMLDBPATH="mod/nombremodulo/db" VERSION="20070401" COMMENT="Archivo XMLDB
para mod/nombremodulo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
>
<!-- Definicin de las tablas -->
<TABLES>
<!-- Definicin de la tabla del mdulo, debe existir obligatoriamente.
En el caso de que haya ms de una tabla, deben enlazarse mediante los
campos PREVIOUS y NEXT, que apuntan a la tabla anterior y siguiente,
respectivamente.
-->
<TABLE NAME="nombremodulo" COMMENT="Comentario sobre la tabla
nombremodulo ">
<!-- Campos que tendr la tabla -->
<!--
NAME: Nombre del campo
TYPE: Tipo del dato
LENGTH: Longitud del dato
NOTNULL: El campo puede ser o no nulo
UNSIGNED: El campo tiene signo o no
SEQUENCE y ENUM: El campo es autoincremental o no
COMMENT: Comentario sobre el campo
NEXT: Siguiente campo de la tabla
PREVIOUS: Campo previo de la tabla
-->
<FIELDS>
<FIELDNAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true"
SEQUENCE="true" ENUM="false" COMMENT="id de la instancia" NEXT="course"/>

74
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

<FIELD NAME="course" TYPE="int" LENGTH="10" NOTNULL="true"


UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" COMMENT="Curso al
que pertenece la instancia" PREVIOUS="id" NEXT="name"/>
<FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true"
SEQUENCE="false" ENUM="false" COMMENT="Nombre de la instancia"
PREVIOUS="course">
<!-- El resto de campos de la tabla deben ir aqu -->
</FIELDS>
<!-- Claves de la tabla
NAME: Nombre de la clave
TYPE: Primary, unique o foreign
FIELDS: Campos que componen la clave
COMMENT: Comentario sobre la clave
OPCIONALES:
NEXT y PREVIOUS: Apuntando a la clave siguiente y anterior, de
existir.
REFFIELDS Y REFTABLE: En el caso de las claves externas, campo y
tabla al que referencian
-->
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="Clave
primaria para nombremodulo "/>
</KEYS>
<!-- ndices de la tabla, campos anlogos a los de las claves-->
<INDEXES>
<INDEX NAME="course" UNIQUE="false" FIELDS="course"/>
</INDEXES>
</TABLE>
</TABLES>
<!-- Sentencias SQL que se ejecutarn al instalar el mdulo -->
<STATEMENTS>
<!-- Sentencia
Se define el nombre, el tipo de sentencia, la tabla sobre la que se
ejecuta y un comentario descriptivo -->
<STATEMENT NAME="insert log_display" TYPE="insert" TABLE="log_display"
COMMENT="Inserta registros en la tabla de log" />
<SENTENCES>
<!-- Contenido de las sentencias propiamente dicho, no usan campos
PREVIOUS ni NEXT -->
<SENTENCE TEXT="(module, action, mtable, field) VALUES (nombremodulo,
'add', 'nombremodulo', 'name')" />
<SENTENCE TEXT="(module, action, mtable, field) VALUES (nombremodulo,
'update', 'nombremodulo', 'name')" />
</SENTENCES>
</STATEMENT>

75
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

</STATEMENTS>
</XMLDB>
Cdigo 16: Ejemplo de fichero install.xml

Analizando el fichero se puede observar que tenemos tablas y sentencias, y que


stas estn formando listas doblemente enlazadas mediante los campos NEXT y
PREVIOUS.

Es por ello, y por las restricciones en los tipos de los campos a definir y sus
valores permitidos por los que se recomienda el uso del editor de XMLDB que tiene la
plataforma.

La primera tabla tiene el mismo nombre del mdulo y es obligatoria, as como


los campos id, course y name.

Al igual que las tablas y los campos, los ndices y las claves, si se aaden y si
hay ms de una, hay que enlazarlos.

5.3.1.3 upgrade.php
Este fichero mantiene un registro de los cambios que es necesario realizar entre
distintas versiones del mdulo.

En ocasiones la actualizacin de una antigua versin a una nueva puede


implicar cambios mayores (como por ejemplo, en la base de datos) que pueden hacer
que el mdulo deje de funcionar correctamente.

Los comandos que se usen en este fichero deben ser neutrales en cuanto a la
base de datos, usando las funciones definidas en lib/ddlib.php.

La funcin upgrade deber{ devolver verdadero si todos los cambios se han


llevado a cabo de manera satisfactoria.

A continuacin se muestra un ejemplo de lo que podra ser el contenido del


archivo upgrade.php:

<?php
function xmldb_nombremodulo_upgrade($oldversion=0) {
global $CFG, $THEME, $db;
$result = true;
/// Actualizacin necesaria si la versin actual es
/// anterior a la del 01 de Abril de 2008
if ($result && $oldversion < 2008040100) {
///Introducir actualizaciones a realizar
}
/// Actualizacin necesaria si la versin actual es
/// anterior a la del 12 de Abril de 2008

76
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

if ($result && $oldversion < 2008041200) {


///Introducir actualizaciones a realizar
}
return $result;
}
?>
Cdigo 17: Ejemplo de fichero upgrade.php

Las actualizaciones a realizar en la base de datos se pueden generar copiando el


resultado que genera en cdigo PHP el editor XMLDB.

5.3.1.4 icon.gif
Este archivo es el icono que representa a un mdulo. Debe ser un archivo GIF
de tamao 16x16 pxeles. Por ejemplo, se ha utilizado este icono para el mdulo
Gruposlab:

5.3.1.5 index.php
El fichero index.php lista todas las instancias de una actividad que estn
presentes en un determinado curso. Normalmente se muestran en formato tabular con
una fila por cada instancia de la actividad y con columnas para los campos name, intro
y otros campos propios de cada mdulo.

5.3.1.6 lib.php
lib.php es la biblioteca de funciones del mdulo a desarrollar, en ella se
implementar toda (o casi toda) la funcionalidad del mdulo. Existen un conjunto de
normas que se deben seguir a la hora de desarrollar esta biblioteca, de las que
destacamos las siguientes:

Las funciones deben nombrarse de la siguiente manera:


nombremodulo_nombrefuncion().
Las variables globales debern nombrarse de la siguiente manera:
$NOMBREMODULO_NOMBREVARIABLE.

lib.php deber implementar ciertas funciones preestablecidas que usar Moodle


con distintos propsitos:

nombremodulo_add_instance($nombremodulo): Esta funcin es ejecutada


cuando un profesor crea una instancia del mdulo.
nombremodulo_update_instance($nombremodulo): Esta funcin es ejecutada
cuando un profesor, editando, actualiza la instancia del mdulo.
nombremodulo_delete_instance($id): Esta funcin es ejecutada cuando un
profesor elimina una instancia del mdulo.

77
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

nombremodulo_user_outline($course, $user, $mod, $nombremodulo): Devuelve


un resumen con la informacin de lo que ha hecho un usuario con una instancia
en particular del mdulo. Es til para los informes de actividad del usuario.
nombremodulo_user_complete($course, $user, $mod, $nombremodulo):
Imprime una representacin de lo que un usuario ha hecho con una instancia
en particular del mdulo. Es til para los informes de actividad del usuario.
nombremodulo_print_recent_activity($course, $isteacher, $timestart): Dado un
curso y un tiempo, debe encontrar la actividad reciente del mdulo, y la
imprime.
nombremodulo_cron(): Funcin que se ejecutar peridicamente segn el cron
de Moodle. Hay que tener cuidado con esta funcin. A diferencia al resto de
funciones, a esta funcin no se le pasa el registro $nombremodulo. Esto significa
que esta funcin, llamada por el cron del ncleo de Moodle, tiene que buscar el
id de cada instancia del mdulo antes de operar. Esta funcin se ejecutar una
nica vez, incluso si existen varias instancias del mdulo.
nombremodulo_get_participants($nombremoduloid): Debe devolver un vector
de los registros de usuarios (todos los datos) que son participantes de una
instancia dada del mdulo. Debe incluir cada usuario involucrado en la
instancia, independientemente de su rol (estudiante, profesor, admin, ...).
nombremodulo_scale_used($nombremoduloid, $scaleid): Esta funcin devuelve
si una escala est siendo usada por una instancia del mdulo, si tiene soporte
para escalas.
nombremodulo_scale_used_anywhere($scaleid): Comprueba si la escala est
siendo usada por cualquier instancia del mdulo.
nombremodulo_install(): Ejecuta acciones personalizadas para el mdulo
despus de la instalacin.
nombremodulo_uninstall(): Ejecuta acciones personalizadas para el mdulo
despus de la desinstalacin.
nombremodulo_reset_course_form_definition(&$mform): Esta funcin es
llamada directamente por /course/reset.php. Necesita sacar algunos controles de
formulario para controlar las distintas opciones para resetear el mdulo. Debe
usar el formulario de la API (Application Programming Interface) para crearlo.
La forma es consultar las configuraciones relacionando el mdulo.
nombremodulo_reset_course_form_defaults($course): Usado para establecer
valores por defecto a los elementos del formulario mostrados por
nombremodulo_reset_course_form_definition.
nombremodulo_reset_userdata($data): Es llamada indirectamente por
/course/reset.php, que llama a reset_course_userdata() en /lib/moodlelib.php, que
llama a todas las funciones de cada mdulo. El parmetro es lo que devolvi el
formulario impreso por forum_reset_course.

78
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

nombremodulo_get_view_actions(): Distingue entre acciones de lectura "read"


del log. Es utilizada por el ncleo de Moodle durante la organizacin del log.
Las acciones que se listan dentro deben coincidir las que se listaron en la tabla
"log_display" en el archivo install.xml.

nombremodulo_post_actions(): Distingue entre acciones de lectura "post" del


log. Es utilizada por el ncleo de Moodle durante la organizacin del log. Las acciones
que se listan dentro deben coincidir las que se listaron en la tabla "log_display" en el
archivo install.xml.

5.3.1.7 mod_form.php
Como mostraba el esquema de ficheros de un mdulo, este es uno de los
ficheros obligatorios, mediante el cual se configurar cada instancia del mdulo que se
aada a un curso.

Moodle proporciona un mecanismo estndar para crear este formulario, y para


ello est definida la clase moodleform_mod. Nuestra clase ha de llamarse obligatoriamente
mod_nombremdulo_mod_form.

Esta clase debe extender de moodleform_mod y crear el mtodo definition(),


mediante el cual definiremos el formulario que presentar las distintas opciones a
configurar de la instancia.

Para aadir campos al formulario tenemos varias funciones bsicas:

addElement: Aade un elemento al formulario. El primer parmetro es el tipo


de elemento y el segundo el nombre. El resto de parmetros ya dependen del
tipo de elemento.
setType: Establece el tipo de contenido del elemento.
setDefault: Establece el valor por defecto de un elemento.
addRule: Establece las restricciones de un elemento, como por ejemplo que sea
un campo obligatorio, o que slo pueda tener nmeros.

La estructura bsica de este fichero sera la siguiente:

<?php

require_once ('moodleform_mod.php');

class mod_nombremodulo_mod_form extends moodleform_mod {


function definition() {
global $COURSE;
$mform =& $this->_form;

79
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

//----------------------------------------------------------------
/// Aadimos el conjunto de campos general, donde se muestran todas las
///opciones comunes
$mform->addElement('header', 'general', get_string('general', 'form'));
/// Aadimos el campo estndar nombre
$mform->addElement('text', 'name', get_string('nombremoduloname',
'nombremodulo'), array('size'=>'64'));
$mform->setType('name', PARAM_TEXT);
$mform->addRule('name', null, 'required', null, 'client');
/// Aadimos los campos opcionales intro e introformat
$mform->addElement('htmleditor', 'intro',
get_string('nombremodulointro', 'nombremodulo'));
$mform->setType('intro', PARAM_RAW);
$mform->addRule('intro', get_string('required'), 'required',
null, 'client');
$mform->setHelpButton('intro', array('writing', 'richtext'), false,
'editorhelpbutton');

$mform->addElement('format', 'introformat', get_string('format'));

//----------------------------------------------------------------
/// Aadimos el resto de opciones del modulo en este conjunto de
/// campos o en otro si resultara ms lgico
$mform->addElement('static', 'label1', 'nombremodulosetting1', 'Aqu
van los campos de tu mdulo, Reemplazame!');

$mform->addElement('header','nombremodulofieldset',
get_string('nombremodulofieldset', 'nombremodulo'));
$mform->addElement('static', 'label2', 'nombremodulosetting2', 'Aqu
van los campos de tu mdulo, Reemplazame!');

//---------------------------------------------------------------
// Aadimos elementos estndar, comunes a todos los mdulos
$this->standard_coursemodule_elements();
//----------------------------------------------------------------
// Aadimos los botones estndar, comunes a todos los mdulos
$this->add_action_buttons();

}
}

?>
Cdigo 18: Ejemplo de fichero mod_form.php

80
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Cabe destacar que los elementos declarados en mod_form.php sern


guardados en los campos de la tabla con ese nombre al procesar el formulario sin
que lo indiquemos explcitamente.

Una vez se pulsa guardar instancia, y se ha aceptado el formulario


introducido, el mdulo ejecuta la funcin nombremodulo_add_instance o
nombremodulo_update_instance, ambas ubicadas en lib.php.

5.3.1.8 version.php
Este archivo es importante porque a la hora de modificar las tablas de la base de
datos, a travs de db/upgrade.php, o aadir/eliminar/modificar el archivo db/access.php,
durante el desarrollo del mdulo (que ya ha sido instalado en Moodle), fuerza a
Moodle para que edite las tablas y realice los cambios necesarios. Lo hace comparando
la versin actual con la versin anterior. Si la versin actual es posterior a la previa,
Moodle hace los cambios y actualiza a la nueva versin.

Su formato es el siguiente:

<?php
$module->version = 2007040200; // Versin actual del mdulo (Formato
YYYYMMDDX)
$module->cron = 0; // Intervalo de tiempo, en segundos, en el que cron
//debercomprobar la versin de este mdulo
?>
Cdigo 19: Ejemplo de fichero version.php

5.3.1.9 view.php
El fichero view.php es, seguramente, junto con el fichero lib.php, uno de los ms
importantes a la hora de desarrollar un mdulo de actividades para Moodle. En l se
define el contenido que se mostrar a cada usuario de la actividad mediante el uso de
capacidades o permisos.

A continuacin se detalla el cdigo mnimo que debe contener este fichero:

<?php
/// Remplazar nombremodulo por el nombre del mdulo a desarrollar
///Include que todos los ficheros php deben tener
require_once("../../config.php");
require_once("lib.php");
///Estas lneas se establecen por defecto para obtener el id de la
instancia actual
$id = optional_param('id', 0, PARAM_INT);
$a = optional_param('a', 0, PARAM_INT);
///Haciendo comprobaciones sobre los parmetros pasados
if ($id) {

81
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

if (! $cm = get_record("course_modules", "id", $id)) {


error("Course Module ID was incorrect");
}
if (! $course = get_record("course", "id", $cm->course)) {
error("Course is misconfigured");
}
if (! $nombremodulo = get_record("nombremodulo", "id", $cm->instance)) {
error("Course module is incorrect");
}
} else {
if (! $nombremodulo = get_record("nombremodulo", "id", $a)) {
error("Course module is incorrect");
}
if (! $course = get_record("course", "id", $ nombremodulo ->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("nombremodulo ", $
nombremodulo ->id, $course->id)) {
error("Course Module ID was incorrect");
}
}
///Para ver esta pgina, el usuario debe estar autenticado
require_login($course->id);
///Aade al log la visita de la actividad
add_to_log($course->id, " nombremodulo ", "view", "view.php?id=$cm->id",
"$nombremodulo ->id");
/// Para imprimir el encabezado de la pgina
if ($course->category) {
$navigation = "<a href=\"../../course/view.php?id=$course->id\">$course-
>shortname</a> ->";
} else {
$navigation = '';
}
///Ver documentacin de la funcin get_string()
$strnombremodulos = get_string("modulenameplural", " nombremodulo ");
$strnombremodulo = get_string("modulename", " nombremodulo ");
///Impresin del encabezado propiamente dicho
print_header("$course->shortname: $ nombremodulo ->name", "$course-
>fullname", "$navigation <a href=index.php?id=$course-
>id>$strnombremodulos</a> ->$ nombremodulo ->name","", "", true,
update_module_button($cm->id, $course->id,$strnombremodulo),
navmenu($course, $cm));
/// Parte principal de la pgina
///Aqu debe ir el cdigo del desarrollador
/// Imprime el pie de pgina

82
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

print_footer($course);
?>
Cdigo 20: Ejemplo de fichero view.php

5.4 Libreras para el desarrollo de mdulos


Moodle no solo facilita un entorno para la integracin de nuevos mdulos
desarrollados en PHP, sino que incorpora una serie de libreras enfocadas a facilitar la
labor de los desarrolladores. Sin embargo, resulta difcil iniciarse en ellas y conocer el
cometido de cada una, a pesar de encontrarse documentacin en el propio cdigo
fuente.

En este apartado se enumerarn algunas de las libreras ms importantes, as


como las funciones bsicas que todo desarrollador debera conocer antes de comenzar
a construir un mdulo.

La API de Moodle es un conjunto de clases y libreras de funciones construidas


sobre funciones definidas en las libreras de PHP4, ya que originalmente Moodle
estaba basado en esta versin de PHP. Sin embargo, algunas de las nuevas
construcciones de Moodle utilizan estructuras orientadas a objetos y proporcionan
clases extensibles.

La mayora de las principales libreras de Moodle se encuentran en el directorio


/lib/. La nomenclatura de todos estos ficheros generalmente sigue la convencin
[funcin]lib.php. Algunos ejemplos son textlib.php y weblib.php. Estas libreras contienen
la API de Moodle.

Casi todas las libreras del ncleo se incluyen en el flujo de ejecucin cuando se
carga el archivo config.php mediante la inclusin de /lib/setup.php. El fichero setup.php
realiza un include de las principales libreras de Moodle.

Esto no significa que se definan todas las funciones disponbles en Moodle. Y, de


hecho, cada una de estas libreras puede incluir otras. Sin embargo, el ncleo de las
funciones que se pueden necesitar est contenido en estas libreras. Algunas de las ms
importantes se describirn en los apartados siguientes.

Algunas de estas libreras fueron desarrolladas por el propio equipo de Moodle,


otras por terceros y, hoy en da, se distribuyen con Moodle gracias a sus licencias de
cdigo abierto.

No existe un nico documento que abarque toda la API de Moodle, pero un


recurso que puede resultar de gran ayuda es la referencia del cdigo generada a partir
de los comentarios del propio cdigo fuente por medio de PHPXref, que se puede
encontrar en http://xref.moodle.org/nav.html?index.html.

83
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.4.1 accesslib.php
Esta librera describe funciones para el soporte de capacidades. Las tres
funciones que aparecen a continuacin servirn para ilustrar el tipo general de las
funciones de la librera. No obstante, se recomienda consultar su extensa
documentacin para obtener informacin sobre otras funciones que dan soporte al
sistema de capacidades.

5.4.1.1 require_capability
Esta funcin comprueba que el usuario tiene cierta capacidad. Si no la tiene, la
pgina deja de ejecutarse mostrando un mensaje de error estndar.

require_capability($capability, $context=NULL, $userid=NULL,


$doanything=true, $errormessage='nopermissions', $stringfile='')
Cdigo 21: Funcin require_capability

Los parmetros que utiliza son los siguientes:

$capability: Capacidad que deseamos comprobar.


$context: Contexto en el que se debe tener esta capacidad.
$userid: ID del usuario cuya capacidad queremos comprobar.
$doanything: Establecer a false si no queremos que ocurra nada.
$errormessage: Cadena con el mensaje de error.
$stringfile: Archivo en el que buscar $errormessage.

5.4.1.2 has_capability
Esta funcin devolver true si un usuario $userid, por defecto el usuario que est
accediendo al mdulo, tiene la capacidad $capability en el contexto $context.

has_capability($capability, $context=NULL, $userid=NULL, $doanything=true)


Cdigo 22: Funcin has_capability

Parmetros:

$capability: Capacidad que deseamos comprobar.


$context: Contexto de la capacidad.
$userid: ID del usuario cuya capacidad deseamos comprobar.
$doanything: Si se establece a falso, la funcin no opera.

5.4.1.3 get_context_instance
Devuelve el contexto de una instancia como un objeto.

get_context_instance($contextlevel=NULL, $instance=SITEID)
Cdigo 23: Funcin get_context_instance

Parmetros:

84
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

$contextlevel: Nivel del contexto, acepta los siguientes valores:


o CONTEXT_SYSTEM
o CONTEX_PERSONAL
o CONTEXT_USER
o CONTEXT_COURSECAT
o CONTEXT_COURSE
o CONTEXT_GROUP
o CONTEXT_MODULE
o CONTEXT_BLOCK
$instance: Identificacin de la instancia del contexto.

5.4.2 datalib.php
En esta librera se encuentran las funciones para el manejo de la informacin de
la base de datos. Con un funcionamiento similar a la funcin get_users(), que se detalla
a continuacin, datalib.php implementa funciones para obtener los cursos del sitio o de
un determinado usuario, los mdulos de un determinado curso, los usuarios que han
sido confirmados en el sistema, los distintos grupos establecidos, los usuarios que
conforman cada grupo y ms informacin similar, todas ellas documentadas en el
archivo datalib.php.

5.4.2.1 get_users
Esta funcin obtiene un subconjunto de los usuarios del sitio.

get_users($get=true, $search='', $confirmed=false, $exceptions='',


$sort='firstname ASC', $firstinitial='', $lastinitial='', $page='',
$recordsperpage='', $fields='*')
Cdigo 24: Funcin get_users

Parmetros:
$get: Si se establece a false, solo retornar una cuenta del nmero de registros
coincidentes.
$search: Una determinada cadena a buscar.
$confirmed: Si se establece a true, solo devolver los usuarios que hayan sido
confirmados en el curso.
$exceptions: Una lista en forma de array conteniendo ciertos identificadores de
usuario a ignorar.
$sort: Fragmento SQL para la ordenacin de los registros a devolver.
$firstinitial: Inicial del primer nombre de los usuarios a buscar.
$lastinicial: Inicial del apellido de los usuarios a buscar.
$recordsperpage: Nmero de registros a obtener en cada llamada, para evitar
saturacin.

85
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

$fields: Campos de los registros a obtener (igual que el contenido de una


sentencia SELECT).

5.4.3 ddllib.php
En esta librera se pueden encontrar las funciones para el manejo de la
estructura de la base de datos. Proporciona funcionalidades avanzadas para hacer la
manipulacin de la estructura de la base de datos lo ms portable posible. Dichas
estructuras deben modificarse usando funciones de esta biblioteca y nunca con
sentencias propias de determinada base de datos.

Se proporcionan funciones como las siguientes, cuyo nombre, en ocasiones,


recuerda a las sentencias SQL habituales:

create_table() para crear una tabla.


drop_table() para borrar el contenido de una tabla.
rename_table() para cambiar el nombre a una tabla.
add_field() para aadir un campo a una tabla.
change_field_tipe() para cambiar el tipo de un campo.
add_key() para aadir una clave.
add_index() para aadir un ndice.

5.4.4 dmllib.php
En esta librera se encuentran las funciones necesarias para obtener, borrar,
actualizar, contar e insertar registros en la base de datos. Las funciones que se
describirn a continuacin sern las que el desarrollador use en un 99% de los casos.
Para obtener documentacin de funciones menos usuales, como de costumbre, se debe
consutlar la documentacin del archivo.

5.4.4.1 Funciones generales

5.4.4.1.1 execute_sql
Ejecuta una sentencia SQL e imprime el resultado si se especifica.

execute_sql($command, $feedback=true)
Cdigo 25: Funcin execute_sql

Parmetros:

$command: Sentencia SQL completa a ejecutar.


$feedback: Si se establece a true, el sistema imprimir el resultado de la
ejecucin.

86
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Para acceder a las tablas de la base de datos debemos precederlas del prefijo de
todas las tablas de Moodle, esto se consigue introduciendo el texto {$CFG-
>prefix}nombre_tabla (sin comillas).

5.4.4.2 Funciones para comprobar la existencia de registros

5.4.4.2.1 record_exists
Devolver true si existe en la tabla $table al menos un registro cuyos valores en
los campos $fieldx se correspondan con $valuex.

record_exists($table, $field1='', $value1='', $field2='', $value2='',


$field3='', $value3='')
Cdigo 26: Funcin record_exists

Parmetros:

$table: Tabla en la que buscar los registros.


$field1: Primer campo sobre el que comparar.
$value1: Primer valor que comparar.
$field2: Segundo campo sobre el que comparar.
$value2: Segundo valor que comparar.
$field3: Tercer campo sobre el que comparar.
$value3: Tercer valor que comparar.

5.4.4.2.2 record_exists_select
Devolver true si existen registros en la tabla $table cuyos valores se
correspondan con el fragmento WHERE pasado como parmetro.

record_exists_select($table, $select='')
Cdigo 27: Funcin record_exists_select

Parmetros:

$table: Tabla en la que buscar los registros.


$select: Fragmento completo WHERE.

5.4.4.2.3 record_exists_sql
Devolver true si la sentencia SQL pasada como parmetro retorna algn
resultado.

record_exists_sql($sql)
Cdigo 28: funcin record_exists_sql

Parmetros:

$SQL: Sentencia SQL a ejecutar.

87
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.4.4.3 Funciones para el conteo de registros

5.4.4.3.1 count_records
Devolver el nmero de registros que haya en la tabla $table cuyos valores en
los campos $fieldx se correspondan con $valuex.

count_records($table, $field1='', $value1='', $field2='', $value2='',


$field3='', $value3='')
Cdigo 29: Funcin count_records

Parmetros:

Anlogos a los parmetros de la funcin record_exists().

5.4.4.3.2 count_records_select
Devolver el nmero de registros que existen en la tabla $table cuyos valores se
correspondan con el fragmento WHERE pasado como parmetro.

count_records_select($table, $select='', $countitem='COUNT(*)')


Cdigo 30: Funcin count_records_select

Parmetros:

$table: Tabla en la que buscar los registros.


$select: Fragmento completo WHERE.
$countitem: Elemento sobre el que realizar la cuenta.

5.4.4.3.3 count_records_sql
Devolver el resultado de la ejecucin de la sentencia SQL.

count_records_sql($sql)
Cdigo 31: Funcin count_records_sql

Parmetros:

$SQL: Sentencia SQL a ejecutar, del tipo SELECT COUNT() .

5.4.4.4 Funciones para la obtencin de registros


Con un comportamiento similar a las funciones anteriores, en dmllib.php
podemos encontrar, entre otras y junto con su documentacin, las siguientes funciones
para la obtencin de registros:

get_record() para obtener un nico registro en forma de objeto.


get_record_select() idem, pero introduciendo una clusula where.
get_record_sql() idem, pero introduciendo una sentencia SQL completa.
get_records() para obtener un array de registros en forma de objetos.
get_records_select() idem, pero introduciendo una clusula where.

88
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

get_records_sql() idem, pero introduciendo una sentencia SQL completa.

5.4.4.5 Funciones para el borrado de registros


Para el borrado de registros de la base de datos, nicamente se implementan
dos funciones importantes:

delete_records(), con parmetros anlogos a record_exists(), borra todos los


registros que tengan valores coincidentes en los campos pasados como
parmetros.
delete_records_sql() borra todos los registros de la tabla $table pasada como
parmetro que coinciden con la clusula WHERE tambin pasada como
parmetro.

5.4.4.6 Funciones para la insercin y actualizacin de registros

5.4.4.6.1 insert_record
Inserta un registro pasado como objeto, cuyos nombres de atributos se
correspondern con los campos del registro, en la tabla pasada como parmetro.

insert_record($table, $dataobject, $returnid=true, $primarykey='id')


Cdigo 32: Funcin insert_record

Parmetros:

$table: Tabla en la que insertar el registro.


$dataobject: Objeto conteniendo el registro a insertar.
$returnid: Si es true, la funcin devolver el identificador del nuevo registro
insertado.
$primarykey: La clave primaria del registro a insertar, en la mayora de los
casos es id.

5.4.4.6.2 update_record
Actualiza un registro en la tabla cuyo nombre es pasado como parmetro.

update_record($table, $dataobject)
Cdigo 33: Funcin update_record

Parmetros:

$table: Tabla en la que actualizar el registro.


$dataobject: Objeto conteniendo el registro a insertar, cada nombre de atributo
debe corresponderse con un campo de la tabla, y debe tener un campo id que
sirva para identificarlo en la tabla especificada.

89
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.4.5 weblib.php
En esta librera se encuentran las funciones para la creacin de elementos
HTML y salida web en general.

A continuacin se referencian algunas de las funciones que el desarrollador


debera conocer antes de comenzar su trabajo y que, como siempre, se encuentran
documentadas en el propio cdigo fuente:

print_heading(), como sustituto del conocido <h1>.


print_heading_with_help(), idem, pero proporcionando un botn de ayuda.
helpbutton() imprime un botn de ayuda.
print_simple_box() imprime una caja en la que se puede colocar cualquier tipo
de contenido.
choose_from_menu() imprime un men de seleccin.
choose_from_radio() imprime botones de radio.
print_textbox() imprime una caja de texto.
print_textfield() imprime un campo de texto.

El contenido de esta librera es muy extenso y resultar de gran ayuda al nuevo


desarrollador. Se aconseja leerla detenidamente, prestando especial atencin a la forma
en la que Moodle facilita la creacin de controles de formularios as como a las
funciones que se encargan de recoger las variables de los mismos (required_param() y
data_submitted() especialmente).

As como se especifica el uso obligatorio de la funcin required_param() (aunque


el acceso a las variables $_GET y $_POST funciona perfectamente), en ningn
documento de Moodle se obliga al uso de funciones para crear elementos del
formulario, aunque facilita mucho la tarea al programador.

5.4.6 moodlelib.php
En este fichero pueden encontrarse todo tipo de funciones de propsito general
para Moodle. Cconviene que el desarrollador novel las ojee antes de comenzar su
trabajo sin llegar a prestarles una atencin mayor de lo conveniente para no
complicarse demasiado.

Segn vaya avanzando en el desarrollo, es posible que le surja la duda de si


cierta funcionalidad, ligada fuertemente con el ncleo de Moodle, estar desarrollada.
Seguramente lo est aqu.

90
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.4.7 Otras libreras importantes


Moodle se basa en numerosas libreras, tanto internas como externas. Hasta
ahora, hemos comentado las libreras internas. Algunas de las libreras externas que
podemos utilizar se enumeran a continuacin:

PEAR: Las siglas PEAR provienen de PHP Extension and Application Repository
(Repositorio de aplicaciones y extensiones PHP). Por tanto, no es una nica librera,
sino un conjunto de herramientas para generar y actualizar libreras PHP y
mdulos.
ADOdb: ADOdb es una librera de bases de datos que proporciona una interfaz
unificada de programacin para una gran variedad de bases de datos. A pesar
de que Moodle soporta un conjunto bsico de bases de datos para su respaldo
directo, ADOdb realmente resulta muy til en las bases de datos soportadas
para la autenticacin externa contra una base de datos y los plugins de
matriculacin.
YUI: La librera de la interfaz de usuario de Yahoo! (Yahoo! user interface) est
escrita en JavaScript y se usa para crear ricas interfaces web de usuario
utilizando AJAX, DOM y DHTML. La interfaz de edicin de cursos de Moodle
utiliza esta librera para poder colocar elementos en el curso simplemente
arrastrndolos y soltndolos.
XMLDB: XMLDB se aadi a Moodle como parte de la iniciativa para agregar
soporte para Microsoft SQL y Oracle. XMLDB convirti todos los ficheros de
configuracin de la base de datos en esquemas XML, de manera que los mismos
ficheros pudieran ser usados por los cuatro tipos de bases de datos soportadas
hasta el momento. De esta manera se extendieron las capacidades ofrecidas por
ADOdb, proporcionando un nico cdigo base para acceder a todas las bases
de datos soportadas, mientras se segua manteniendo el rendimiento.

5.5 Creacin de un mdulo sencillo


La mayora de nuevos mdulos se crean utilizando la plantilla NEWMODULE,
que es un mdulo que no forma parte del ncleo de la distribucin de Moodle, pero ha
sido donado bajo las mismas condiciones de licencia GPL. Este mdulo puede ser
descargado desde http://moodle.org/mod/data/view.php?d=13&rid=715&filter=1.
NEWMODULE es un buen punto de inicio para comenzar a crear nuestra actividad,
aunque le faltan varios requisitos funcionales importantes. El ms notable de ellos es la
falta de funcionalidad para realizar copias de seguridad y restauracin.

Los pasos bsicos para realizar un mdulo son:

Desarrollo del formulario para configurar cada nueva instancia del mdulo
(fichero mod_form.php).

91
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Creacin de las tablas del mdulo (fichero install.xml).


Edicin de la librera de funciones del mdulo (fichero lib.php).
Edicin del resto de archivos obligatorios para adecuarlos al nuevo mdulo:
index.php, version.php y ficheros de idiomas.
Edicin del fichero view.php que muestra cada instancia.

En primer lugar, tendremos que descargar la ltima versin de NEWMODULE


y renombrar la carpeta con el nombre de nuestro nuevo mdulo, por ejemplo prueba.
Despus, en nuestro editor de textos realizaremos una bsqueda global en todos los
archivos, reemplazando la palabra newmodule por la palabra prueba. A continuacin,
renombraremos tambin el fichero de idioma. Para ello buscaremos en la carpeta
lang/es_utf8 un fichero llamado newmodule.php y lo renombraremos como prueba.php.
Ahora ya podemos mover la carpeta entera al directorio /mod de nuestro servidor de
desarrollo y comenzar a trabajar.

5.5.1 Formulario de configuracin de la instancia


El fichero mod_form.php es llamado cada vez que se aade una instancia de una
actividad y con l la configuraremos. En la plantilla ya tenemos los campos
obligatorios como name y otros tpicos como intro.

Aqu nos serviremos de la modularidad que nos ofrece la plataforma para no


preocuparnos de cmo guardar los datos en la base de datos ni de cmo se define un
formulario en HTML, simplemente con extender la clase moodlemod_form como en la
plantilla y aadir los campos de configuracin de la instancia que definamos en la base
de datos es suficiente.

A continuacin se muestra un ejemplo de un formulario generado con la clase


moodleform_mod. Pertenece al mdulo Newmodule, al que nosotros hemos renombrado
como prueba.

92
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 24: Formulario generado con la clase moodleform_mod

Ahora podremos aadir ms elementos al formulario si lo deseamos. Por


ejemplo, si queremos aadir un control selector de fecha llamado start_date, tendremos
que escribir el siguiente cdigo:

$options=array('startyear'=>date('Y'),'optional'=>false);
$mform->addElement('date_time_selector', 'start_date',
get_string('startdate', 'prueba'), $options);

Cdigo 34: Ejemplo aadir lista desplegable

Donde $options ser un array en el que le indicaremos al control que debe


comenzar a mostrar fechas a partir del ao actual, y que adems el control no se puede
deshabilitar mediante un checkbox.

Ese cdigo es todo lo que necesitamos para aadir el campo start_date (el
control de seleccin de fecha) en la configuracin de la instancia. En caso de que no
existan, habra que crear el campo start_date en la tabla prueba de la base de datos y la
cadena startdate en el fichero de idioma del mdulo

93
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 25: Aadir un campo selector de fecha a un formulario

5.5.2 Tablas del mdulo en la base de datos


Todo mdulo necesita al menos una tabla, que debe tener el mismo nombre que
el mdulo, para guardar las propiedades de cada instancia, aunque se pueden declarar
ms.

La plantilla NEWMODULE ya proporciona un fichero vlido (install.xml) en el


que slo hay que modificar el nombre de la tabla y algunos comentarios. Una vez
instalado el mdulo ya podremos editar las tablas desde Moodle. Para ello es
recomendable utilizar el editor XMLDB, que podemos encontrar en la seccin de
administracin del sitio, en el submen Miscelnea. Usando este editor se evitarn
errores ya que no permite guardar la tabla con errores y solamente nos permite dar
valores vlidos a las propiedades. Hay que tener en cuenta que al usar el editor se
modifica el fichero install.xml de la instalacin, y es importante tenerlo en cuenta si se
desarrolla el mdulo desde otra carpeta distinta a la de instalacin.

En la siguiente imagen, el editor XMLDB nos muestra los campos de la tabla


prueba de nuestro mdulo prueba, donde hemos aadido el campo start_date, necesario
para guardar el valor del selector de fecha que hemos aadido en el apartado anterior.

94
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 26: Editor XMLDB

5.5.3 Edicin de la librera de funciones del mdulo


Como se coment en captulos anteriores, el fichero lib.php almacena todas las
funciones bsicas utilizadas por otros archivos del mdulo. Todas las funciones
obligatorias estn incluidas en la plantilla NEWMODULE y funcionarn perfectamente
en nuestra actividad de ejemplo sin realizar ningn cambio. Pero este es tambin el
lugar indicado para colocar nuestras propias funciones adicionales, que servirn para
reutilizar y para aadir claridad al cdigo. Con respecto a esto, debemos tener en
cuenta que podemos optimizar el rendimiento de nuestro cdigo si colocamos estas
funciones adicionales en locallib.php en lugar de situarlas en lib.php. Esto mejora el
rendimiento porque las funciones del ncleo de Moodle necesitarn incluir el archivo
lib.php del mdulo, pero no necesitan las funciones locales, por lo que si las situamos en
otro archivo aparte, reduciremos el tamao de lib.php. Las guas de programacin de
Moodle sealan que solo es necesario crear un fichero separado si se aaden gandes
cantidades de cdigo.

95
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.5.4 El paquete de idioma


Moodle es una plataforma internacional. Cada paquete de idioma que se quiera
definir ha de crearse como un fichero de idioma, de manera que cada cadena de texto
que se muestre por pantalla se extraiga de un conjunto de archivos de idioma.

Los paquetes de idioma se encuentran en la carpeta moodledata/lang con


nombres que indican que son paquetes de idioma utf-8. El idioma por defecto es el
ingls en_utf8, que se encuentra en una carpeta diferente (moodle/lang).

Para desarrollar un fichero de idioma para nuestro mdulo que sea espaol
internacional (es_utf8), tendremos que crear un fichero con el mismo nombre que el
mdulo y extensin .php en la carpeta lang/es_es_utf8. Por ejemplo, si el mdulo se
denomina prueba, el fichero se llamar prueba.php y estar en la carpeta
moodle/mod/prueba/lang/es_es_utf8, compuesto de lneas de texto cortas denominadas
cadenas (string), como se muestra a continuacin:

//moodle
$string[modulename] = Prueba;
$string[modulenameplural] = Pruebas;

//Del propio mdulo


$string[name] = Nombre para la actividad prueba;
$string[description] = Descripcin de la actividad;
$string[grade] = Calificacin de la actividad prueba;

$string[startdate] = Seleccione la fecha de inicio;


Cdigo 35: Ejemplo de cadenas en el fichero de idioma

Las primeras entradas hacen referencia a variables que utiliza Moodle


(modulename, modulenameplural). Las variables name, description y grade son propias del
mdulo prueba y podran utilizar en el formulario de configuracin del mdulo. Por
ltimo, la cadena startdate ir asociada al selector de fecha que hemos diseado en
apartados anteriores. Estas cadenas se utilizan de la siguiente manera:

print_string(startdate, prueba);
get_string(startdate, prueba);

Cdigo 36: Recuperacin de cadenas del fichero de idioma

Si una cadena no existe en un idioma en particular, se mostrar por defecto su


equivalente en ingls. Esto puede producir en determinadas ocasiones la mezcla de

96
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

diferentes lenguajes (normalmente el ingls ms el lenguaje definido por el usuario).


Este problema se corrige con la insercin de la cadena que produce el fallo en el fichero
de idioma correspondiente.

5.5.5 Permisos del mdulo


Como ya se coment en el apartado anterior, los permisos sirven para establecer
el nivel de acceso a determinadas funcionalidades que tendrn los distintos tipos de
usuario (o roles) para un mdulo.

Asignando permisos a la actividad se puede restringir el acceso a cierta


informacin, configurar distintos tipos de vistas para los diferentes roles, establecer
capacidades para los administradores, etc.

Para establecer permisos en nuestra actividad, editaremos el fichero access.php


que encontramos en la carpeta db de nuestro mdulo. Si el mdulo se denomina prueba
y queremos establecer qu usuario tendr acceso a la vista del mismo y qu usuario
puede calificar el mdulo, el fichero quedara de la siguiente manera:

<?php
$mod_inicio_capabilities = array(
'mod/prueba:view' => array(
'captype' => 'read',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'guest' => CAP_ALLOW,
'student' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
),
'mod/prueba:grade' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)

97
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

)
);
?>

Cdigo 37: Ejemplo de definicin de capacidades

5.5.6 Otros ficheros importantes


index.php: Solamente con cambiar newmodule por el nombre de nuestro mdulo
ya listar todas las instancias del mismo.
version.php: Tendremos que modificar este fichero con la fecha que identifica a
la versin. El valor que utilicemos lo tendremos en cuenta en el fichero
db/update.php.
view.php: Este fichero es quizs el ms importante de un mdulo ya que
muestra la instancia, es decir, muestra la nueva actividad. En la plantilla, como
en los anteriores, sustituyendo newmodule por el nombre de nuestro mdulo
tendremos la base para crear nuestra actividad, ya que en una variable
tendremos todos los valores de la instancia. A partir de ah ya es cosa del
desarrollador darle la funcionalidad deseada a la actividad.

5.5.7 Actualizacin del mdulo


Ya sabemos crear nuestras propias tablas con el editor XMLDB, pero puede que
en algn momento tengamos que actualizar esas tablas y no podemos desinstalar el
mdulo porque se perdera la informacin de las tablas que ya tenemos creadas. La
solucin es crear un script que nos actualice las tablas necesarias cuando nuestra
versin del mdulo sea mayor. Este fichero se llama upgrade.php, y como todos los
dems archivos, ya se encuentra creado en la plantilla NEWMODULE. Tan solo
tendremos que modificarlo aadiendo al cdigo las modificaciones que deseamos
hacer a en la base de datos. Estos cambios se pueden implementar con el editor
XMLDB, y despus aadir al archivo upgrade.php el cdigo PHP que se genera.

La versin del mdulo que se encuentra en la base de datos de configuracin de


Moodle se compara con el valor que se encuentra en el archivo version.php del mdulo,
y cuando Moodle detecte una nueva versin del mdulo, llamar al archivo
upgrade.php. A continuacin se muestra una seccin de cdigo de ejemplo generado por
el edito XMLDB, que representa las lneas necesarias para aadir un nuevo campo a la
tabla prueba llamado scale.

if ($result && $oldversion < 2009060103) {


/// Definimos el campo scale que se aadir a la tabla prueba
$table = new XMLDBTable('prueba');
$field = new XMLDBField('scale');
$field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED,

98
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

XMLDB_NOTNULL, null, null, null, '0',


'timemodified');
/// Aadimos el campo
$result = $result && add_field($table, $field);

Cdigo 38: Ejemplo de cambios en la base de datos

5.5.8 Crear soporte para copias de seguridad y restauracin


El sistema de copias de seguridad de cursos de Moodle utiliza un formato
simple de fichero XML para almacenar datos de las actividades. El ncleo de Moodle
llama a las funciones que se encuentran en el fichero backuplib.php de todos los
mdulos de un curso. Si no se encuentra el fichero backuplib.php, la copia de seguridad
se ejecutar sin errores. Sin embargo, ninguno de los datos referentes a nuestro mdulo
se habr guardado, lo que nos podra hacer perder informacin de los usuarios. El
usuario no se dar cuenta de que la informacin se ha perdido hasta que se haga una
restauracin del curso. Las funciones de restauracin de una actividad se almacenan en
restorelib.php. Tenemos que tener en cuenta que el sistema de copias de seguridad y
restauracin est siendo completamente reescrito en Moodle 2.0, aunque la intencin es
que siga siendo compatible con versiones anteriores. Aunque la plantilla
NEWMODULE carece de soporte para copias de seguridad y restauracin, podemos
utilizar una copia de algn mdulo que s lo utilice, como por ejemplo el mdulo
Choice, y modificarlo para que se adapte a las necesidades de nuestro mdulo.

A continuacin se muestra un ejemplo e cdigo XML para una instancia de una


actividad:

<MOD>
<ID>80</ID>
<TYPE>prueba</TYPE>
<INSTANCE>1</INSTANCE>
<ADDED>1250743636</ADDED>
<SCORE>0</SCORE>
<INDENT>0</INDENT>
<VISIBLE>1</VISIBLE>
<GROUPMODE>1</GROUPMODE>
<GROUPINGID>0</GROUPINGID>
<GROUPMEMBERSONLY>0</GROUPMEMBERSONLY>
<IDNUMBER>$@NULL@$</IDNUMBER>
<ROLES_OVERRIDES>
</ROLES_OVERRIDES>

99
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

<ROLES_ASSIGNMENTS>
</ROLES_ASSIGNMENTS>
</MOD>

Cdigo 39: Ejemplo de cdigo XML de backup

5.5.8.1 Funciones en backuplib.php


En esta seccin encontraremos un listado de las funciones que deben crearse en
el fichero backuplib.php de nuestro mdulo. Podemos organizar dichas funciones en dos
categoras: las comunes a todos los mdulos de actividad y las que son internas de un
mdulo en particular.

5.5.8.1.1 Funciones comunes de copia de seguridad


Las funciones comunes de copia de seguridad se deben implementar para cada
mdulo de actividad, con el objetivo de soportar correctamente la funcin de copia de
seguridad. Estas funciones son las siguientes:

nombremodulo_backup_mods(): Es el punto de entrada principal para el


proceso de backup. Hace copia de seguridad de una o ms actividades. Llama a
la funcin nombremodulo_backup_one_mod() para cada instancia de la actividad
en el curso.
nombremodulo_backup_one_mod(): Crea la copia de seguridad de una nica
instancia de la actividad. Es responsable de llamar a las funciones de copia de
seguridad internas especficas del mdulo. Por ejemplo, si nuestro mdulo
tiene una tabla llamada nombremodulo_respuesta, esta funcin llamar a
backup_nombremodulo_respuesta().
nombremodulo_check_backup_mods(): Esta funcin es llamada desde las
libreras de copia de seguridad del ncleo que se encuentran en /backup. Se
utiliza para generar informacin para las pantallas de opciones de copia de
seguridad.
nombremodulo_check_backup_mods_instances(): Llamada por
nombremodulo_check_backup_mods() para generar informacin de cada instancia
de la actividad en un curso. Llama a la funcin interna
nombremodulo_respuesta_ids_by_instance().
nombremodulo_encode_content_links(): Necesaria para soportar enlaces
interactivos. Asegura que la interactividad de los enlaces permanece intacta
entre los procesos de copia de seguridad y restauracin.
nombremodulo_ids(): Devuelve un array de todos los identificadores de nuestro
mdulo en un curso y es usada por nombremodulo_check_backup_mods().

100
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

5.5.8.1.2 Funciones internas de copia de seguridad


Las funciones internas de copia de seguridad tambin deben ser implementadas
para cada mdulo de actividad. Sin embargo, estas pueden variar dependiendo de la
estructura interna de nuestro mdulo. Generalmente, necesitaremos las siguientes tres
funciones para cada tabla extra que implemente nuestra actividad. Por ejemplo, si
nuestro mdulo, aparte de la tabla principal, tiene una tabla llamada
nombremodulo_respuesta, implementara las siguientes tres funciones.

backup_nombremodulo_respuesta(): Crea la salida XML para hacer la copia de


seguridad de la tabla nombremodulo_respuesta. Se ejecuta desde
nombremodulo_backup_mods().
nombremodulo_respuesta_ids_by_course(): Utiliza una sentencia SQL para
devolver un array de identificadores de la tabla nombremodulo_respuesta. Es
llamada por nombremodulo_check_backup_mods().
nombremodulo_respuesta_ids_by_instance(): Devuelve un array de
identificadores de la tabla nombremodulo_respuestas para una instancia particular
del mdulo. Es llamada por la funcin
nombremodulo_check_backup_mods_instances().

5.5.8.2 Funciones en restorelib.php


En esta seccin encontraremos un listado de las funciones que deben crearse en
el fichero restorelib.php de nuestro mdulo. Al igual que en el caso de las funciones de
backuplib.php, podemos organizar dichas funciones en dos categoras: las comunes a
todos los mdulos de actividad y las que son internas de un mdulo en particular.

5.5.8.2.1 Funciones comunes de restauracin


Las funciones comunes deben ser implementadas para cada mdulo de
actividad para que se pueda soportar la funcin de restauracin. Estas funciones son
las siguientes:

nombremodulo_restore_mods(): Este es el punto de entrada principal al cdigo


de restauracin del mdulo, y es llamado desde el ncleo de Moodle para
realizar las restauraciones. A su vez, llama a la funcin
nombremodulo_respuestas_restore_mods() para realizar funciones de restauracin
interna.
nombremodulo_decode_content_links_caller(): Invierte la codificacin de
enlaces del proceso de copia de seguridad para restaurar la interactividad de
los enlaces. Itera a travs de todo el contenido del mdulo y llama a la funcin
nombre_modulo_decode_content_links() donde es necesario realizar la
decodificacin. Se la llama desde la funcin restore_decode_content_links().

101
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Nombremodulo_decode_content_links(): Realiza la decodificacin actual de


contenido en el archivo de restauracin. Esta funcin se requiere para soportar
el enlazado interactivo.
nombremodulo_restore_logs(): Devuelve un registro de log. Llamada por la
funcin restore_log_module().
nombremodulo_restore_wiki2markdown(): Convierte instrucciones del formato
FORMAT_WIKI al formato FORMAT_MARKDOWN.

5.5.8.2.2 Funciones internas de restauracin


Las funciones internas de restauracin tambin deben ser implementadas para
cada mdulo de actividad. Sin embargo, pueden variar dependiendo de la estructura
interna del mdulo. Generalmente, necesitaremos una funcin para cada tabla
adicional que hayamos implementado en nuestra actividad, como se muestra a
continuacin:

nombremodulo_respuesta_restore_mods(): Esta funcin restaura las entradas de


la tabla nombremodulo_respuesta y es llamada por la funcin
nombremodulo_restore_mods().

102
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6 Mdulo de gestin de grupos de laboratorio: Gruposlab

6.1 Definicin del sistema


En este captulo se rene toda la documentacin tcnica generada a lo largo del
proceso de desarrollo del mdulo. Se parte desde la definicin del sistema y el catlogo
inicial de requisitos, hasta los manuales de usuario, pasando por un anlisis detallado
de la aplicacin, que cuenta con todos los diagramas y las explicaciones necesarias para
entender su funcionamiento.

6.1.1 Descripcin y planteamiento del problema


Como ya se ha comentado en apartados anteriores, el Departamento de
Matemticas de la Universidad de Alcal utiliza activamente la plataforma de
enseanza virtual Moodle como complemento on-line a su actividad docente
presencial, dentro de lo que se ha definido como modalidad de enseanza b-learning.
Dentro de esta plataforma se hace un uso intensivo de los recursos estndar de
Moodle, as como de otros mdulos no estndar, descargados desde la pgina oficial
de Moodle para su posterior instalacin en el sistema. Pero se ha observado una
carencia en relacin al sistema de reparto de grupos de laboratorio, que a da de hoy no
est cubierta por ningn mdulo existente.

El problema del reparto de los grupos de laboratorio viene existiendo desde


hace muchos aos. Normalmente las asignaturas tericas disponen tambin de una o
varias sesiones prcticas, impartidas generalmente en laboratorios con un nmero
limitado de equipos informticos. Por este motivo, los alumnos de la asignatura se
deben dividir en grupos ms pequeos que se adecuen a las plazas disponibles en cada
laboratorio. Este reparto no es fcil de hacer, puesto que cada alumno tiene sus propias
preferencias, basadas en las circunstancias personales de cada uno (horarios de trabajo,
horario de asignaturas de otros cursos, etc). Estas circunstancias personales deben
adaptarse a los horarios establecidos por los profesores, y por ello se les debe dar a los
alumnos la posibilidad de elegir.

En cursos anteriores se resolva el problema poniendo una lista en la puerta del


laboratorio, por ejemplo, a la que los alumnos deban ir corriendo a apuntarse para
asegurarse un sitio en su grupo preferido, o posteriormente mediante la utilizacin de
una aplicacin web especfica que segua contando con el mismo problema, ya que
tena en cuenta el orden de inscripcin de los alumnos a la hora de repartir los grupos.
Para resolver este problema, se pretende desarrollar un mdulo para Moodle que se
encargue de gestionar este reparto de grupos de laboratorio sin tener en cuenta el
orden de inscripcin de los alumnos, siempre que se apunten dentro del periodo
establecido por el profesor. El mdulo, al que llamaremos Gruposlab, permitir que

103
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

tanto los profesores como los estudiantes interacten con l para lograr el propsito de
repartir los grupos, teniendo en cuenta tanto las preferencias de los profesores como de
cada uno de los alumnos.

El profesor de una asignatura podr agregar el mdulo Gruposlab a su curso de


Moodle y despus configurarlo aadiendo la informacin relativa a todos los grupos
de prcticas que se abrirn de dicha asignatura, entre la que se incluye el lugar donde
se impartir, el nombre del profesor responsable y el nmero mximo de alumnos
permitido en cada grupo. El profesor tambin establecer un periodo de matriculacin
durante el cual los alumnos podrn acceder a la plataforma y seleccionar sus opciones
en orden de preferencia. Una vez que se ha cerrado el periodo de matriculacin, se
realizar automticamente el reparto de alumnos en los grupos, utilizando un
algoritmo que se basa principalmente en ir eligiendo aleatoriamente a todos los
alumnos uno por uno, para intentar colocarlos en su opcin preferida. Cuando el
proceso de reparto haya finalizado, el profesor podr comprobar los resultados y
descargar las listas de alumnos de todos sus grupos de laboratorio. Adems podr
realizar manualmente los cambios de alumnos que considere necesarios entre los
distintos grupos.

El alumno, a su vez, podr acceder a la plataforma y visualizar la informacin


disponible de todos los grupos de laboratorio, para despus seleccionar varias
opciones en orden de preferencia. El algoritmo de reparto tendr en cuenta todas las
opciones si no fuera posible situar a un alumno en su primera opcin. Una vez que
haya terminado el periodo de matriculacin y se haya llevado a cabo el reparto de
grupos, cuando acceda al mdulo Gruposlab, el alumno podr consultar el grupo al que
ha sido finalmente asignado.

Adicionalmente, cuando se lleve a cabo el reparto de grupos de laboratorio, el


sistema avisar a todos los profesores de la asignatura envindoles un correo
electrnico. Tambin enviar un mensaje de correo a todos los alumnos que se hayan
matriculado, indicndoles el grupo al que han sido asignados.

Adems, el mdulo Gruposlab deber cumplir con todos los requisitos de


programacin que el proyecto Moodle requiere para todas las extensiones de la
plataforma programadas por terceros, de manera que pueda ser aceptado e incluido en
sus repositorios para que otras personas e instituciones que lo consideren de inters
puedan hacer uso libre de l.

6.1.2 Descripcin general del entorno tecnolgico


El mdulo Gruposlab se integrar en la plataforma virtual Moodle. Por lo tanto
ser la propia plataforma la que marque el entorno tecnolgico del sistema. Podemos

104
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

considerar a Moodle como una arquitectura de tres capas, segn se muestra en el


esquema siguiente:

Ilustracin 27: Entorno tecnolgico

La ventaja principal de esta implementacin fsica es que el desarrollo se puede


llevar a cabo en varios niveles y, en caso de que sobrevenga algn cambio, slo se ataca
al nivel requerido sin tener que revisar entre cdigo mezclado.

Adems, permite distribuir el trabajo de creacin de una aplicacin por niveles;


de este modo, cada grupo de trabajo est totalmente abstrado del resto de niveles, de
forma que basta con conocer la API que existe entre niveles.

En el diseo de sistemas informticos actual se suele usar las arquitecturas


multinivel o programacin por capas. En dichas arquitecturas, a cada nivel se le confa
una misin simple, lo que permite el diseo de arquitecturas escalables (que pueden
ampliarse con facilidad en caso de que las necesidades aumenten).

En nuestro caso, la primera capa sern los ordenadores de los usuarios, donde
estos podrn interactuar con la interfaz Web de Moodle.

La segunda capa ser el nivel de aplicaciones, que envuelve el software de


aplicacin usado en la programacin de la plataforma y todos sus mdulos.

La tercera capa ser el servidor de ficheros y bases de datos donde se


almacenar la informacin relativa a los cursos y usuarios de Moodle.

Todas estas capas podrn residir en diferentes equipos, existiendo multitud de


ordenadores donde resida la capa de presentacin (son los clientes de la arquitectura
cliente/servidor); un servidor para la capa de negocio y otro para la capa de datos.
Tambin es posible, como es nuestro caso, que la capa de negocio y la capa de datos se

105
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

encuentren alojadas en el mismo servidor, o incluso que las tres capas se encuentren en
el mismo equipo si se trata de un entorno de desarrollo.

6.1.3 Identificacin de usuarios


Podemos distinguir tres tipos de usuarios que interactuarn con el Mdulo
Gruposlab: administradores, profesores y estudiantes.

Estudiante: el estudiante podr ver la descripcin de cada grupo de laboratorio,


y tendr la opcin de seleccionar sus grupos preferidos para inscribirse.
Adems, una vez que se han repartido los grupos, podr entrar al sistema para
comprobar en qu grupo ha sido finalmente matriculado.
Profesor: el profesor de un curso podr aadir el mdulo Gruposlab a dicho
curso y configurarlo a su medida aadiendo el nmero deseado de grupos de
laboratorio. Una vez que se ha haya cerrado el periodo de matriculacin, el
profesor podr ver la lista de alumnos matriculados en cada grupo, y realizar
los intercambios de alumnos entre grupos que considere necesarios.
Administrador: El administrador podr instalar y desinstalar el mdulo dentro
de la plataforma virtual Moodle. Adems contar con acceso a todas las
funcionalidades de los usuarios Estudiante y Profesor.

6.2 Catlogo de requisitos


En el catlogo de requisitos realizamos la especificacin de los requisitos de la
aplicacin a partir de la definicin del sistema.

6.2.1 Requisitos funcionales


Para los requisitos funcionales usamos el enfoque de necesidades de los
usuarios, as podemos ver qu requisitos ha de tener la aplicacin para cumplir las
necesidades de cada usuario.

6.2.1.1 Estudiante

6.2.1.1.1 RQF-01_Visualizacin de informacin


IDENTIFICADOR RQF-01
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Visualizacin de informacin: La aplicacin permitir al
estudiante visualizar la informacin correspondiente a cada
grupo de laboratorio configurado por el profesor.
PRIORIDAD Alta
COMENTARIOS Tambin se mostrarn los grupos situados sobre un horario
semanal.
Tabla 1: RQF-01_Visualizacin de informacin

106
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.1.1.2 RQF-02_Inscripcin
IDENTIFICADOR RQF-02
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Inscripcin: El mdulo permitir al alumno matricularse en un
grupo de laboratorio.
PRIORIDAD Muy Alta
COMENTARIOS Se le permitir seleccionar varias opciones en orden de
preferencia.
Tabla 2: RQF-02_Inscripcin

6.2.1.1.3 RQF-03_Modificacin de la inscripcin


IDENTIFICADOR RQF-03
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Modificacin de la inscripcin: Una vez que el estudiante se ha
inscrito, podr acceder a la plataforma todas las veces que
desee para modificar su eleccin.
PRIORIDAD Media
COMENTARIOS Las modificaciones estarn admitidas mientras no se haya
cerrado el periodo de matriculacin.
Tabla 3: RQF-03_Modificacin de la inscripcin

6.2.1.1.4 RQF-04_Aviso de reparto


IDENTIFICADOR RQF-04
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Aviso de reparto: Cuando se produzca el reparto de grupos de
laboratorio, el sistema deber avisar al alumno mediante correo
electrnico.
PRIORIDAD Media
COMENTARIOS Tambin se le informar en el mismo correo del grupo en el
que ha sido inscrito.
Tabla 4: RQF-04_Aviso de reparto

107
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.1.1.5 RQF-05_Informacin de grupo asignado


IDENTIFICADOR RQF-05
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Informacin de grupo asignado: El alumno podr acceder al
sistema para comprobar en qu grupo ha sido inscrito despus
de realizarse el reparto.
PRIORIDAD Alta
COMENTARIOS Se le sugerir que contacte con el profesor en caso de que desee
realizar algn cambio.
Tabla 5: RQF-05_Informacin de grupo asignado

6.2.1.2 Profesor

6.2.1.2.1 RQF-06_Insercin en un curso


IDENTIFICADOR RQF-06
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Insercin en un curso: El profesor podr seleccionar el mdulo
Gruposlab para aadirlo a un curso.
PRIORIDAD Muy Alta
COMENTARIOS Funcionalidad proporcionada por el propio ncleo de Moodle.
Tabla 6: RQF-06_Insercin en un curso

6.2.1.2.2 RQF-07_ Eliminacin de un curso


IDENTIFICADOR RQF-07
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Eliminacin de un curso: el profesor podr eliminar la instancia
del mdulo Gruposlab de su curso cuando lo desee.
PRIORIDAD Muy Alta
COMENTARIOS Funcionalidad proporcionada por el propio ncleo de Moodle.
Tabla 7: RQF-07:_Eliminacin de un curso

6.2.1.2.3 RQF-08_Configuracin de la instancia


IDENTIFICADOR RQF-08
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Configuracin de la instancia: el profesor podr configurar los
parmetros generales de la instancia mediante un formulario.
PRIORIDAD Muy Alta
COMENTARIOS Aqu seleccionar el nmero de grupos que habr disponibles.
Tabla 8: RQF-08_Configuracin de la instancia

108
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.1.2.4 RQF-09_Modificacin de la instancia


IDENTIFICADOR RQF-09
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Modificacin de la instancia: El profesor podr acceder a la
configuracin de la instancia y modificarla.
PRIORIDAD Muy Alta
COMENTARIOS Dependiendo del punto en que nos encontremos con respecto
al periodo de matriculacin, se podrn modificar unos datos u
otros.
Tabla 9: RQF-9_Modificacin de la instancia

6.2.1.2.5 RQF-010_Configuracin particular de cada grupo


IDENTIFICADOR RQF-010
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Configuracin particular de cada grupo: El profesor podr
configurar individualmente cada uno de los grupos que ha
seleccionado en la configuracin general.
PRIORIDAD Alta
COMENTARIOS
Tabla 10: RQF-10_Configuracin particular de cada grupo

6.2.1.2.6 RQF-11_Modificacin de configuracin de grupos


IDENTIFICADOR RQF-11
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Modificacin de configuracin de grupos: El profesor podr
modificar la configuracin de cada uno de los grupos de
laboratorio.
PRIORIDAD Alta
COMENTARIOS
Tabla 11: RQF-11_Modificacin particular de grupo

6.2.1.2.7 RQF-12_Visualizacin de grupos


IDENTIFICADOR RQF-12
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Visualizacin de grupos: el profesor podr ver, situados en un
calendario semanal, los grupos que ha configurado.
PRIORIDAD Media
COMENTARIOS El nombre de cada grupo ser un enlace que mostrar ms
informacin del grupo si se pincha sobre l.
Tabla 12: RQF-12_Visualizacin de grupos

109
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.1.2.8 RQF-13_Visualizacin de listas de estudiantes


IDENTIFICADOR RQF-13
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Visualizacin de listas de alumnos: una vez que se ha
producido el reparto de grupos, el profesor podr visualizar
por pantalla el listado de alumnos inscritos en cada grupo.
PRIORIDAD Alta
COMENTARIOS
Tabla 13: RQF-13_Visualizacin de listas de estudiantes

6.2.1.2.9 RQF-14_Descarga de listas de estudiantes


IDENTIFICADOR RQF-14
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Descarga de listas de estudiantes: El profesor podr descargar
el listado de estudiantes de cada grupo en formato de hoja de
clculo.
PRIORIDAD Media
COMENTARIOS
Tabla 14: RQF-14_Descarga de listas de estudiantes

6.2.1.2.10 RQF-15_Redistribucin de estudiantes


IDENTIFICADOR RQF-15
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Redistribucin de estudiantes: Una vez que se ha producido el
reparto de grupos, el profesor podr agregar o eliminar los
alumnos que desee de cualquiera de los grupos.
PRIORIDAD Alta
COMENTARIOS El profesor podr asignar al grupo que desee a los alumnos
que no se han inscrito en ningn grupo.
Tabla 15: RQF-15_Redistribucin de estudiantes

6.2.1.2.11 RQF-16_Aviso de reparto


IDENTIFICADOR RQF-16
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Aviso de reparto: Cuando se produzca el reparto de grupos de
laboratorio, el sistema deber avisar al profesor mediante
correo electrnico.
PRIORIDAD Media
COMENTARIOS
Tabla 16: RQF-16_Aviso de reparto

110
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.1.3 Administrador

6.2.1.3.1 RQF-17_Instalacin del mdulo


IDENTIFICADOR RQF-17
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Instalacin del mdulo: El administrador ser el encargado de
instalar el mdulo Gruposlab en la plataforma de enseanza
virtual Moodle.
PRIORIDAD Muy Alta
COMENTARIOS
Tabla 17: RQF-17_Instalacin del mdulo

6.2.1.3.2 RQF-18_Actualizacin del mdulo


IDENTIFICADOR RQF-18
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Actualizacin del mdulo: El administrador se encargar de
realizar las modificaciones necesarias en el mdulo y de llevar
a cabo la actualizacin en Moodle.
PRIORIDAD Alta
COMENTARIOS
Tabla 18: RQF-18_Actualizacin del mdulo

6.2.1.3.3 RQF-19_Desinstalacin del mdulo


IDENTIFICADOR RQF-19
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Desinstalacin del mdulo: El administrador de Moodle llevar
a cabo la tarea de desinstalar el mdulo Gruposlab del sistema.
PRIORIDAD Muy Alta
COMENTARIOS
Tabla 19: RQF-19_Desinstalacin del mdulo

111
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.1.4 Sistema

6.2.1.4.1 RQF-20_Reparto de grupos


IDENTIFICADOR RQF-20
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Reparto de grupos: el sistema deber proceder de forma
automtica al reparto de grupos cuando se alcance la fecha
final del periodo de matriculacin.
PRIORIDAD Muy Alta
COMENTARIOS
Tabla 20: RQF-20_Reparto de grupos

6.2.1.4.2 RQF-21_Eliminacin de archivos temporales


IDENTIFICADOR RQF-21
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Funcional
DESCRIPCIN Eliminacin de ficheros temporales: el sistema deber eliminar
de forma peridica los ficheros temporales creados cuando un
profesor solicita la descarga del listado de alumnos en formato
hoja de clculo.
PRIORIDAD Alta
COMENTARIOS
Tabla 21: RQF-21_Eliminacin de archivos temporales

112
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.2 Requisitos de datos


Para los requisitos de datos usamos el enfoque de que puedan usarse como
modelo de la base de datos.

6.2.2.1 RQD-01_Datos de la instancia


IDENTIFICADOR RQD-01
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Datos
DESCRIPCIN Se almacenarn los datos necesarios para la configuracin de la
instancia:
id
course
name
start_date
end_date
groups_number
intro
introformat
timecreated
timemodified
configured
distributed
full_groups
PRIORIDAD Muy Alta
COMENTARIOS
Tabla 22: RQD-01_Datos de la instancia

6.2.2.2 RQD-02_Datos de los grupos


IDENTIFICADOR RQD-02
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Datos
DESCRIPCIN Se almacenarn los datos relativos a todos los grupos
configurados por los profesores:
id
id_instance
group_name
id_teacher
weekday
repetition
parity
start_time
end_time
place
max_students
PRIORIDAD Muy Alta
COMENTARIOS
Tabla 23: RQD-02_Datos de los grupos

113
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.2.3 RQD-03_Datos de los estudiantes


IDENTIFICADOR RQD-01
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Datos
DESCRIPCIN Se almacenarn los datos relativos a las opciones seleccionadas
por cada estudiante.
id
id_student
id_instance
id_choice
option1
option2
option3
PRIORIDAD Muy Alta
COMENTARIOS
Tabla 24: RQD-03_Datos de los estudiantes

6.2.3 Requisitos de Interfaz

6.2.3.1 RQI-01_Interfaces separadas


IDENTIFICADOR RQI-01
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Interfaz
DESCRIPCIN Se crearan interfaces separadas para cada una de las siguientes
funcionalidades del sistema:
Configuracin/modificacin de la instancia
Configuracin/modificacin de grupos de laboratorio.
Visualizacin de grupos de laboratorio
Eleccin/modificacin de opciones de inscripcin.
Visualizacin de listados de estudiantes.
Reordenacin de estudiantes
PRIORIDAD Alta
COMENTARIOS
Tabla 25: RQI-01_Interfaces separadas

6.2.3.2 RQI-02_Calendario de grupos


IDENTIFICADOR RQI-02
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Interfaz
DESCRIPCIN Se mostrar un calendario semanal donde aparezcan los
grupos disponibles.
PRIORIDAD Alta
COMENTARIOS El nombre de los grupos ser un enlace que lleve a una pgina
con ms informacin de cada grupo.
Tabla 26: RQI-02_Calendario de grupos

114
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.4 Requisitos de Seguridad

6.2.4.1 RQS-01_Control de acceso de usuarios


IDENTIFICADOR RQS-01
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Seguridad
DESCRIPCIN Control de acceso de usuarios. Se Controlar que cada tipo de
usuario pueda acceder solo con los permisos que le
correspondan de acuerdo a su rol.
PRIORIDAD Alta
COMENTARIOS
Tabla 27: RQS-01_Control de acceso de usuarios

6.2.4.2 RQS-02_Configurar grupos


IDENTIFICADOR RQS-02
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Seguridad
DESCRIPCIN Configurar grupos. Se crear una capacidad que permita
configurar los grupos de laboratorio.
PRIORIDAD Alta
COMENTARIOS Esta capacidad estar permitida para los siguientes roles:
'editingteacher'
'coursecreator'
'teacher'
'admin'
Tabla 28: RQS-02_Configurar grupos

6.2.4.3 RQS-03_Inscribirse
IDENTIFICADOR RQS-03
VERSIN 1.0 (17/7/2010)
AUTORES M Jess Garca
TIPO Seguridad
DESCRIPCIN Inscribirse. Se crear una capacidad que permita inscribirse a
los grupos de laboratorio.
PRIORIDAD Alta
COMENTARIOS Esta capacidad estar permitida para los siguientes roles:
'student'
Tabla 29: RQS-03_Inscribirse

115
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.2.5 Requisitos de codificacin

6.2.5.1 RQC-01_Estilo de cdigo


IDENTIFICADOR RQC-01
VERSIN 1.0 (12/7/2010)
AUTOR M Jess Garca
TIPO Codificacin
DESCRIPCIN El cdigo fuente de la aplicacin deber respetar los estndares
de Moodle.
PRIORIDAD Alta
COMENTARIOS Se comentan las principales reglas de estilo que se deben
cumplir. La referencia completa se puede consultar en el
apartado Guas de estilo para desarrolladores de este documento.
El sangrado del texto debe ser siempre de 4 espacios.
Los nombres de las variables tienen que ser siempre
fciles de leer, procurando que sean palabras en
minsculas con significado en ingls.
Las constantes tienen que definirse siempre en
maysculas, y empezar por el nombre del mdulo al
que pertenecen.
Los nombres de las funciones tienen que ser palabras
sencillas en minsculas y en Ingls, y empezar con el
nombre del mdulo al que pertenecen.
Los bloques de cdigo siempre deben estar encerrados
por llaves
Las cadenas tienen que ser definidas utilizando
comillas simples siempre que sea posible.
Los comentarios deben ser aadidos de forma que
resulten prcticos, para explicar el flujo del cdigo y el
propsito de las funciones y variables.
Tabla 30: RQC-01_Estilo de cdigo

6.3 Anlisis de la aplicacin


6.3.1 Modelo de datos
Describiremos el modelo de datos del mdulo mediante el siguiente diagrama
de Entidad-Relacin. A partir de l detallaremos las entidades, relaciones y atributos
que lo componen.

116
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 28: Diagrama Entidad/Relacin

6.3.1.1 Entidades
Las entidades que componen el modelo son las siguientes:

gruposlab: La entidad gruposlab almacena la informacin referente a cada


instancia del mdulo Gruposlab. Cada vez que un profesor aada una actividad
de Grupos de Laboratorio a uno de sus cursos, se insertar un resgistro en esta
tabla. Algunos de los datos que se guardan son requeridos por Moodle para el
correcto funcionamiento del mdulo, mientras que otros son propios de la
configuracin particular de cada instancia. Tambin se guarda la referencia del
curso al que pertenece dicha instancia.
gruposlab_groups: La tabla gruposlab_groups almacena la informacin de cada
grupo de laboratorio que se configura en el sistema, entre la que se encuentra el
profesor responsable del grupo, el nmero mximo de alumnos que se
permitir que se matriculen, o el lugar donde se impartir. Tambin se
almacena la referencia de la instancia a la que pertenece cada grupo.

117
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

gruposlab_students: Esta entidad almacena las opciones que elige cada


estudiante de Moodle que se inscribe en los grupos de laboratorio, as como la
opcin que finalmente se le asigna. Cada alumno que aparece en esta tabla es a
su vez un alumno de Moodle, por lo que se guarda una referencia a la tabla user
del sistema. Tambin se guarda la referencia a la instancia en la que se ha
matriculado el estudiante.
user: Esta es una tabla del sistema que guarda la informacin personal de cada
usuario registrado en la plataforma Virtual.
course: Esta tabla tambin pertenece al sistema, y guarda la infomacin relativa
a cada curso que existe en la plataforma.

6.3.1.2 Relaciones
En este apartado describiremos las diferentes relaciones que se muestran en el
diagrama E/R.

Relacin gruposlab-gruposlab_students: En una instancia del mdulo se


pueden inscribir varios o ningn alumno, mientras que cada estudiante que
aparece en un registro de la tabla gruposlab_students solo puede haberse inscrito
en una instancia concreta.
Relacin user-gruposlab_students: Un usuario de Moodle puede estar
matriculado en tantas instancias del mdulo Gruposlab como desee (puede
matricularse en los grupos de laboratorio de varias asignaturas). Cada
estudiante que aparece en un registro de la tabla gruposlab_students slo puede
corresponderse con un usuario de la tabla user del sistema.
Relacin user-gruposlab_groups: Un usuario de Moodle puede ser profesor en
tantas instancias del mdulo Gruposlab como desee. Cada uno de estos
profesores registrados en la tabla gruposlab_groups slo puede corresponderse
con un usuario de la tabla user del sistema.
Relacin gruposlab-gruposlab_groups: Cada instancia del mdulo gruposlab
puede tener configurados varios grupos de laboratorio (como mnimo uno).
Cada uno de estos grupos que aparecen en la tabla gruposlab_groups slo puede
pertenecer a una instancia concreta.
Relacin course-gruposlab: Cada curso del sistema puede configurar las
instancias del mdulo Gruposlab que desee. Cada una de estas instancias slo
pertenece a un curso concreto.
Relacin gruposlab_groups-gruposlab_students: en cada grupo de laboratorio
pueden estar inscritos varios alumnos, pero cada alumno slo puede estar
inscrito en un grupo.

118
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.3.1.3 Atributos
Entidad gruposlab:
o id: Identificador de la instancia y clave primaria de la entidad. Se trata
de un entero de 10 dgitos.
o course: Identificador del curso en el que se encuentra la instancia. Es un
entero.
o name: Nombre que se le da a la instancia. Es una cadena de caracteres.
o start_date: Fecha en la que comenzar el periodo de inscripcin de los
grupos de laboratorio. Es un entero.
o end_date: Fecha en la que terminar el periodo de inscripcin de los
grupos de laboratorio. Es un entero.
o groups_number: Nmero de grupos de laboratorio que tendrn
disponibles los alumnos para elegir entre ellos. Es un entero.
o intro: Descripcin de la actividad Grupos de laboratorio. Es un campo
de texto.
o introformat: Formato del campo intro. Es un entero.
o timecrated: Fecha de creacin de la instancia. Es un entero.
o timemodified: Fecha de modificacin de la instancia. Es un entero.
o configured: Este campo indica si el profesor ha configurado ya o no los
grupos de laboratorio. Es un entero.
o distributed: Indica si se ha producido ya el reparto automtico de los
alumnos en los grupos de laboratorio. Es un entero.
o full_groups: Indica si se han tratado de inscibir en los grupos ms
alumnos de los que entran en el total de las plazas ofertadas por el
profesor.
Entidad gruposlab_groups:
o id: Identificador del grupo de laboratorio y clave primaria de la entidad.
Es un entero.
o id_instance: Identificador de la instancia del mdulo a la que pertenece
un grupo de laboratorio. Es un entero.
o group_name: Nombre del grupo de laboratorio. Es una cadena de
caracteres.
o id_teacher: Identificador del profesor que impartir este grupo de
laboratorio. Es un entero.
o weekday: Da de la semana en que se impartir el grupo de laboratorio.
Es un entero que puede tomar varios valores (0-lunes, 1-martes, 2-
mircoles, etc.).
o repetition: Indica la periodicidad con la que se impartir el grupo de
laboratorio. Es un entero que puede tomar varios valores (0-semanal, 1-
quincenal, 2-mensual).

119
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

o parity: En caso de que el laboratorio se imparta quincenalmente, este


campo indica si se celebra las semanas pares o impares del mes. Es un
entero que puede tomar varios valores (0-semanas pares, 1-semanas
impares).
o start_time: Este campo indica la hora a la que comienza la clase de este
grupo de laboratorio. Es un entero.
o end_time: Indica la hora a la que finaliza la clase de este grupo de
laboratorio.
o place: Este campo almacena el nombre del aula en la que se impartirn
las clases de este grupo de laboratorio. Es una cadena de caracteres.
o max_students: Este campo contiene el nmero de plazas libres que
quedan en este grupo de laboratorio. Es un entero.
Entidad gruposlab_students:
o id: Identificador del registro y clave principal de la entidad. Es un
entero.
o id_student: Identificador que tiene en la base de datos de Moodle el
estudiante que ha elegido estas opciones. Es un entero.
o id_choice: Identificador del grupo de laboratorio al que finalmente ha
sido asignado el estudiante, despus de producirse el reparto
automtico de grupos. Es un entero.
o option1: Identificador del grupo de laboratorio que ha elegido el
alumno como primera opcin. Es un entero.
o option2: Identificador del grupo de laboratorio que ha elegido el
alumno como segurnda opcin. Es un entero.
o option3: Identificador del grupo de laboratorio que ha elegido el
alumno como tercera opcin. Es un entero.
Entidad user: La entidad user no pertenece al mdulo gruposlab, sino a la base
de datos de Moodle. La incluimos en el esquema porque se relaciona con las
tablas gruposlab_students y gruposlab_groups por medio de su campo id.
Entidad course: La entidad course no pertenece al mdulo gruposlab, sino a la
base de datos de Moodle. La incluimos en el esquema porque se relaciona con
la tabla gruposlab por medio de su campo id.

6.3.2 Modelo de casos de uso


A continuacin se muestra el diagrama general de casos de uso del mdulo:

120
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 29: Modelo de casos de uso general

Como podemos ver en el diagrama, contamos con tres tipos de usuario que
podrn realizar distintas acciones en la aplicacin. El sistema comprobar el rol de cada
usuario para saber qu tareas puede o no realizar. Los actores que aparecen en este
diagrama son los que definamos en el apartado Identificacin de usuarios, con las
funcionalidades que all se detallaban.

Estas funcionalidades estn reflejadas en los casos de uso que se pueden ver en
la imagen, que son los siguientes:

Gestin de instancias: Aqu se incluye la configuracin y edicin de una


instancia, as como la insercin y borrado del curso de la misma.
Gestin de grupos: La gestin de grupos incluye la configuracin y edicin de
los grupos de laboratorio, as como la visualizacin por pantalla de informacin
relacionada con ellos.
Gestin de alumnos: La gestin de alumnos consiste en la visualizacin y
descarga de listas de usuario, as como en la redistribucin de alumnos entre
grupos.
Avisos: Los avisos consistirn en notificaciones va correo electrnico de
distintos eventos en el sistema.
Inscripcin: La inscripcin se refiere a la capacidad de elegir y editar las
opciones preferidas de inscripcin en un grupo de laboratorio, as como la
visualizacin por pantalla del grupo asignado.

121
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Validacin usuario: Antes de poder realizar cualquier caso de uso de los


anteriores, el sistema debe verificar las capacidades que le otorga su rol a cada
usuario.

Como se puede ver en el diagrama, tambin existen relaciones entre los actores
del sistema y los diferentes grupos de acciones (casos de uso) que pueden llevar a cabo.
Adems de estas relaciones tambin existen relaciones entre el sistema de validacin de
usuarios y todos los dems casos de uso que hacen uso de este sistema para controlar
el acceso de los actores a las acciones que pueden realizar.

6.3.2.1 Gestin de instancias


A continuacin se muestra el diagrama de casos de uso para la accin Gestin de
instancias:

Ilustracin 30: Modelo de casos de uso: Gestin de instancias

Como nos muestra el diagrama, las acciones incluidas en este caso de uso las
puede realizar tanto el profesor del curso como el administrador del sistema.

Se puede desglosar los siguientes cuatro casos de uso:

Aadir instancia: Se puede aadir al curso instancias del mdulo Gruposlab.


Borrar instancia: Se puede borrar del curso instancias del mdulo Gruposlab.
Configurar instancia: La instancia puede ser configurada introduciendo los
parmetros necesarios.
Editar instancia: Una instancia configurada puede ser editada para modificar
sus parmetros.

122
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Tambin existen relaciones entre los actores (Profesor y Administrador) y todos


los casos de uso (Acciones). Adems, los casos de uso tambin se relacionan entre s.

Borrar instancia <incluye> Aadir instancia: La relacin representa que para


poder eliminar una instancia del mdulo Gruposlab de un curso, primero debe
haberse aadido.
Configurar instancia <incluye> Aadir instancia: Esta relacin nos indica que
para poder configurar una instancia, primero debemos haberla aadido al
curso.
Editar instancia <incluye> Configurar instancia: Para poder modificar la
configuracin de una instancia, primero debe estar configurada.

6.3.2.2 Gestin de grupos


A continuacin podemos ver el diagrama de casos de uso de la accin Gestin de
grupos.

Ilustracin 31: Modelo de casos de uso: Gestin de grupos

En este caso, el profesor y el administrador pueden realizar las siguientes


acciones:

Configurar grupos: Permite asignar a los grupos los parmetros deseados.


Modificar grupos: Se puede modificar la configuracin de los grupos.
Ver grupos: Es posible visualizar por pantalla informacin sobre los grupos de
laboratorio.

123
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

En cuanto a las relaciones que nos muestra este diagrama, podemos ver que no
es posible modificar la configuracin de un grupo si este no ha sido previamente
configurado.

6.3.2.3 Gestin de alumnos


En el siguiente diagrama podemos ver los casos de uso de la accin Gestin de
alumnos:

Ilustracin 32: Modelo de casos de uso: Gestin de alumnos

En este caso, el profesor puede realizar las siguientes acciones:

Ver alumnos de un grupo: Permite visualizar por pantalla la lista de alumnos


asignados a un grupo de laboratorio.
Aadir alumnos a un grupo: Permite seleccionar de una lista los alumnos que se
han quedado sin grupo y aadirlos al grupo deseado.
Eliminar alumnos de un grupo: Se pueden eliminar alumnos de un grupo de
laboratorio, por ejemplo para despus reubicarlos en otro grupo.
Descargar lista de alumnos de un grupo: Permite descargar en formato de hoja
de clculo la lista de alumnos de un grupo de laboratorio.

Adems podemos ver que existe una relacin de extensin entre Descargar lista
de alumnos de un grupo y Ver alumnos de un grupo. Esto significa que el caso de uso
Descargar lista de alumnos de un grupo extiende la funcionalidad ofrecida por Ver alumnos
de un grupo, permitiendo descargar la informacin adems de verla por pantalla.

124
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.3.2.4 Avisos
A continuacin se muestra el diagrama de casos de uso del sistema de avisos:

Ilustracin 33: Modelo de casos de uso: Avisos

En este caso tenemos dos actores distintos en el diagrama: el Profesor y el


Alumno. Ambos tendrn acceso al sistema de avisos, pero cada uno recibir correos
electrnicos referentes a eventos distintos.

El profesor tendr asignados los siguientes casos de uso:

Aviso de reparto de grupos: El usuario recibir un correo electrnico


indicndole que ya se ha llevado a cabo el reparto de grupos de laboratorio.
Aviso de plazas llenas: Se recibir un aviso por correo electrnico cuando el
nmero de alumnos que se ha tratado de inscribir a la actividad supera el
nmero total de plazas asignadas por el profesor a todos los grupos.

A su vez, el alumno tendr acceso a la siguiente accin:

Aviso de grupo asignado: El usuario recibir un correo electrnico cuando se


haya producido el reparto de grupos de laboratorio, indicndole el grupo al que
finalmente ha sido asignado.

125
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.3.2.5 Inscripcin
A continuacin podemos ver el diagrama de casos de uso del sistema de
inscripcin:

Ilustracin 34: Modelo de casos de uso: Inscripcin

El usuario puede realizar las siguientes acciones:

Inscribirse a los grupos: Permite que un usuario se inscriba, seleccionando por


orden de preferencia los grupos deseados.
Editar inscripcin: El usuario puede cambiar sus opciones antes de que se
cierre el periodo de matriculacin.
Ver grupo asignado: Una vez que se ha producido el reparto de grupos, el
usuario puede acceder al sistema para ver en qu grupo ha sido inscrito.

En cuanto a las relaciones entre casos de uso, como podemos ver en el


diagrama, editar una inscripcin implica haberla realizado antes.

6.3.3 Diagramas de flujo


A continuacin mostraremos el diagrama de flujo de ejecucin del programa
tanto para el usuario Profesor como para el Alumno.

126
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.3.3.1 Diagrama de flujo del usuario Profesor

Ilustracin 35: Diagrama de flujo de usuario profesor

Como se muestra en el diagrama, una vez que el usuario ha iniciado sesin


como profesor, el sistema comprueba si los grupos estn configurados, si no es as
muestra la interfaz para configurarlos, y si ya estn configurados, permite al usuario
modificar dicha configuracin. A continuacin comprueba en qu momento del
periodo de matriculacin nos encontramos, para mostrar por pantalla unas cosas u
otras dependiendo del momento en el que estemos. Adems de permitir modificar la
configuracin de los grupos, el sistema muestra un calendario semanal en el que
aparecen enlaces a los grupos de laboratorio configurados. Si el profesor pincha sobre
uno de esos enlaces, se le mostrar la lista de alumnos de ese grupo en caso de que los
grupos ya hayan sido repartidos. Adems le permitir redistribuir los alumnos en los
grupos y descargar el listado de alumnos como hoja de clculo.

127
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.3.3.2 Diagrama de flujo del usuario Alumno

Ilustracin 36: Diagrama de flujo del usuario Alumno

Despus de iniciar sesin correctamente como alumno, el usuario podr realizar


distintas acciones dependiendo del momento del periodo de matriculacin en el que se
encuentre. Si est dentro del periodo de inscripcin y el profesor ha configurado
correctamente los grupos, el alumno se podr apuntar a sus grupos preferidos, siempre
que no se haya superado el lmite de plazas. Si el alumno ya ha elegido sus opciones,
podr acceder al sistema para modificarlas siempre que se encuentre dentro del
periodo de matriculacin.

128
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

6.3.3.3 Diagrama de flujo del algoritmo de reparto de grupos

Ilustracin 37: Diagrama de flujo del algoritmo de reparto de grupos

129
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

En el diagrama anterior se puede ver la secuencia que sigue el algoritmo para


repartir los grupos de laboratorio. Suponemos que hay al menos dos grupos de
laboratorio y que el nmero de plazas ofertadas entre todos los grupos de laboratorios
es igual al nmero total de alumnos.

Se selecciona un grupo (segn el orden en el que aparecen en la base de datos).


El algoritmo selecciona a todos los alumnos que tienen como primera opcin la del
grupo seleccionado y los ordena de forma aleatoria. El algoritmo elije el primer alumno
de la lista y, si el grupo an no est lleno, lo inscribe en ese grupo, le enva un correo
para avisarle y lo marca como asignado. Este proceso se repite hasta que no queden
alumnos (cuya primera opcin fuera el grupo actual) o el grupo est completo.

A continuacin el algoritmo toma el siguiente grupo y repite la misma


secuencia de operaciones con los alumnos. As, hasta completar todos los grupos y
todas las primeras opciones de todos lo estudiante. Si todos los alumnos han sido
asignados, el algoritmo manda un correo al profesor y termina. En caso contrario,
queda al menos un alumno sin asignar.

El algoritmo empieza de nuevo, trabajando ahora con la segunda opcin


solicitada por los alumnos no asignados y, si fuera necesario, se repite el proceso con la
tercera.

Una vez que se ha completado el proceso, los estudiantes que no han sido
inscritos en ningn grupo sern asignados aleatoriamente en alguno de los grupos que
tengan plazas libres. Por ltimo el sistema enviar un correo electrnico a los
profesores informando de que se ha producido el reparto de grupos de laboratorio.

6.3.4 Definicin de interfaces de usuario


Las principales interfaces que podemos encontrar en la aplicacin son:

Listados: Son unas tablas donde se muestran los diferentes datos de una
consulta a la base de datos.
Formularios de datos: Pantallas con una serie de campos de texto para
introducir datos.

De este modo, las interfaces con las que contar el sistema son las siguientes:

130
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Listado Formulario
Configurar/editar instancia X
Listado de instancias X
Configurar/editar grupos de laboratorio X
Listado de alumnos de un grupo X
Agregar/eliminar alumnos de un grupo X X
Inscribirse/editar inscripcin X
Tabla 31: Interfaces de usuario

En algunos casos se puede combinar un formulario con un listado, como en la


pantalla de agregar/ eliminar alumnos de un grupo.

A continuacin se muestran los prototipos de estas interfaces de usuario:

Configurar/editar instancias:
Mediante el formulario que aparece en la imagen inferior el usuario
podr introducir los campos necesarios para configurar una instancia del
mdulo Gruposlab. Se divide en tres bloques de elementos.
o Ajustes generales: en esta seccin introduciremos el nombre que le
daremos a la instancia y una descripcin. Ambos campos son
obligatorios.
o Ajustes particulares del mdulo: Aqu se debe indicar el nmero de
grupos de laboratorio que se crear para los alumnos, as como las
fechas de inicio y fin del periodo de inscripcin. Mientras este periodo
est abierto los alumnos podrn apuntarse a los grupos de laboratorio.
Si estamos tratando de editar la instancia, debemos tener en cuenta que
una vez que haya comenzado el periodo de matriculacin los cambios
que se hagan sobre la fecha de inicio no se aplicarn. El campo donde se
indica el nmero de grupos es obligatorio.
o Ajustes comunes del mdulo: Este bloque es comn a todos los
mdulos de Moodle. Aqu podremos seleccionar si queremos que el
mdulo aparezca visible o no para los alumnos. El campo ID number lo
utiliza el sistema de calificaciones de Moodle. Como el mdulo
Gruposlab no utiliza calificaciones, este campo se puede dejar en blanco.

131
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 38: interfaz Configurar/Editar instancias

Listado de instancias:
En este listado el usuario podr ver los grupos que ha configurado
dentro de su curso. Si pincha sobre uno de ellos le llevar a la pgina principal
de la instancia.

Ilustracin 39: Interfaz listado de instancias

Configurar/editar grupos de laboratorio:


En este formulario se podr configurar tantos grupos como se haya
seleccionado en el formulario de configuracin de la instancia. Es obligatorio
introducir informacin en los campos Nombre de grupo, Lugar y Nmero mximo
de alumnos. El resto de campos, si no se modifican, guardan los valores por
defecto. El campo Elegir semanas slo se habilitar si en el campo Repeticin se ha
elegido el valor Quincenal, e indica si el laboratorio se impartir las semanas
pares o impares del mes.

132
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 40: Interfaz Configurar/Editar grupos de laboratorio

Listado de alumnos de un grupo:


Se puede acceder al listado de alumnos inscritos en cada grupo de
laboratorio. En la lista aparecer el nombre y apellidos del alumno junto con su
imagen de perfil. Se puede ordenar la lista tanto por nombre como por
apellidos.

Ilustracin 41: Interfaz listado de alumnos de un grupo

133
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Agregar/eliminar alumnos de un grupo:


Este formulario consta de dos listados de alumnos, uno con los
miembros actualmente inscritos en un grupo y otro con los miembros
potenciales, es decir, los alumnos que no estn inscritos en ningn otro grupo.
Se pueden seleccionar uno o varios alumnos a la vez de estas listas, y moverlos
de una a otra mediante los botones Aadir y Quitar.

Ilustracin 42: Interfaz Agregar/Eliminar alumnos de un grupo

Inscribirse/editar inscripcin:
En este formulario el alumno obtendr informacin referente a cada
grupo disponible y, mediante listas desplegables, podr seleccionar sus
opciones por orden de preferencia. Si hay uno o dos grupos de laboratorio
disponibles, solo se le permitir elegir su primera opcin. En caso de haber dos
grupos la opcin no elegida se considerar automticamente la segunda opcin.
Si existen tres o ms grupos de laboratorio, el alumno tendr tres listas
desplegables donde podr elegir su primera, segunda y tercera opcin.
Independientemente del nmero de grupos disponibles, el alumno no podr
elegir ms de tres opciones. Cabe destacar que aunque el alumno seleccione tres
veces la misma opcin, no aumentan sus posibilidades de ser admitido en ese
grupo de laboratorio.

134
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 43: Interfaz Inscribirse/Editar inscripcin

6.3.5 Diagrama de componentes


El diagrama de componentes muestra de forma directa y visual los directorios y
ficheros que componen el mdulo Gruposlab.

Ilustracin 44: Diagrama de componentes

135
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

La funcionalidad de cada uno de estos ficheros se comenta a continuacin:

gruposlab: Directorio que contiene todos los archivos y carpetas del mdulo.
o edit_form.php: Formulario para editar la configuracin de los grupos
de laboratorio.
o groups_form.php: Formulario para configurar los grupos de
laboratorio.
o mod_form.php: Formulario para configurar la instancia del mdulo.
o options_form.php: Formulario para inscribirse a los grupos de
laboratorio.
o index.php: Muestra el listado de instancias del mdulo.
o members.php: Muestra la pgina de agregar/quitar alumnos de los
grupos de laboratorio.
o versin.php: Contiene el nmero de versin actual del mdulo.
o view.php: Pgina principal del mdulo.
o lib.php: Librera de funciones del mdulo.
o icon.gif: Icono grfico del mdulo.
o db: Directorio que contiene todos los ficheros relacionados con la base
de datos.
access.php: Fichero de permisos.
install.xml: Declaracin de las tablas de la base de datos.
upgrade.php: Instrucciones de actualizacin de la base de datos.
o lang: Directorio que contiene los ficheros de cadenas de idioma y de
ayuda. Habr una subcarpeta por cada idioma soportado por el mdulo.
en_utf8: Carpeta que contiene los archivos de ayuda y las
cadenas de idioma en ingls.
gruposlab.php: Cadenas de idioma del mdulo en ingls.
help: Directorio que contiene los ficheros de ayuda del
mdulo en ingls.
es_es_utf8: Carpeta que contiene los archivos de ayuda y las
cadenas de idioma en espaol de Espaa.
gruposlab.php: Cadenas de idioma del mdulo en espaol
de Espaa.
help: Directorio que contiene los ficheros de ayuda del
mdulo en espaol de Espaa.

6.3.6 Especificacin del plan de pruebas


El objetivo del plan de pruebas es asegurar que la aplicacin desarrollada
cumple con los requisitos impuestos y funciona correctamente. A continuacin
generaremos una lista con una serie de pruebas que se han de pasar en el sistema, para
simplificar se incluir en la misma tabla el resultado de dichas pruebas.

136
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Cdigo de Requisito a probar Objetivo que se quiere conseguir Resultado


prueba
P001 RQF-01. Visualizacin Comprobar que el estudiante puede Correcto
de la informacin visualizar correctamente el calendario
semanal donde aparecen los grupos de
laboratorio.
P002 RQF-02. Inscripcin Probar que el alumno puede ver Correcto
correctamente el formulario de
inscripcin, donde aparece toda la
informacin sobre los grupos de
laboratorio, y que puede inscribirse
correctamente seleccionando las
opciones necesarias.
P003 RQF-03. Modificacin Comprobar que, cuando acceda al Correcto
de la inscripcin mdulo un estudiante que ya se ha
inscrito a los grupos, le aparezca el
formulario de modificacin de
inscripcin (siempre que se encuentre
dentro del periodo de matriculacin).
Tambin comprobar que la modificacin
de la inscripcin se realiza
correctamente.
P004 RQF-04. Aviso de Comprobar que el alumno recibe Correcto
reparto correctamente un correo despus de
realizarse el reparto de grupos de
laboratorio.
P005 RQF-05. Informacin Comprobar que cuando el alumno Correcto
de grupo asignado accede al mdulo, despus de haberse
producido el reparto de grupos de
laboratorio, puede visualizar la
informacin sobre el grupo en el que ha
sido inscrito.
P006 RQF-06. Insercin en Comprobar que el profesor puede Correcto
un curso agregar correctamente el mdulo
Gruposlab en su curso.
P007 RQF-07. Eliminacin Comrpobar que el profesor puede Correcto
de un curso eliminar correctamente el mdulo
Gruposlab de su curso.
P008 RQF-08. Configuracin Agregar el mdulo Gruposlab a un curso Correcto
de la instancia y comprobar que el profesor puede
configurar la instancia correctamente.
Comprobar que el formulario muestra
un aviso si se introducen datos
incorrectos en los campos o si no se
introducen datos obligatorios.

137
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Cdigo de Requisito a probar Objetivo que se quiere conseguir Resultado


prueba
P009 RQF-09. Modificacin Comprobar que es posible modificar Correcto
de la instancia correctamente la configuracin de una
instancia anteriormente configurada, y
que adems se es posible modificar las
opciones permitidas dependiendo del
momento del periodo de matriculacin
en que nos encontremos.
P010 RQF-10. Configuracin Comrpobar que el profesor puede Correcto
particular de cada configurar correctamente cada uno de
grupo sus grupos de laboratorio, y que el
sistema le enva automticamente al
formulario de configuracin de los
grupos cada vez que accede al mdulo si
los grupos estn sin configurar.
Comrpobar que los campos muestran
los avisos necesarios si no se introducen
los datos esperados.
P011 RQF-11. Modificacin En una instancia con los grupos de Correcto
de configuracin de laboratorio configurados, comprobar
grupos que estos se pueden editar
correctamente, siempre que el periodo
de matriculacin no haya finalizado.
P012 RQF-12. Visualizacin En una instancia correctamente Correcto
de grupos configurada, comprobar que se pueden
visualizar los grupos de laboratorio en el
calendario semanal, y que si se pincha
sobre el nombre de alguno de dichos
grupos, se muestra una pgina con ms
informacin sobre el grupo.
P013 RQF-13. Visualizacin Una vez que se ha producido el reparto Correcto
de listas de estudiantes de grupos, comrpobar que el profesor, al
pinchar sobre uno de los grupos en el
calendario semanal, puede ver la lista de
alumnos que han sido asignados a ese
grupo.
P014 RQF-14. Descarga de Comprobar que se puede descargar Correcto
listas de estudiantes correctamente el listado de estudiantes (con
de cada grupo en formato de hoja de problemas)
clculo.

P015 RQF-15. Despus de producirse el reparto de Correcto


Redistribucin de estudiantes, comprobar que el profesor
estudiantes puede acceder a la pantalla de
redistribucin de estudiantes, y que
puede eliminarlos y aadirlos
correctamente a los grupos.

138
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Cdigo de Requisito a probar Objetivo que se quiere conseguir Resultado


prueba
P016 RQF-16. Aviso de Despus del reparto de grupos de Correcto
reparto laboratorio, comprobar que todos los
profesores del curso reciben
correctamente un correo electrnico
avisndoles de que se ha producido el
reparto.
P017 RQF-17. Instalacin Comrpobar que un administrador Correcto
del mdulo puede instalar correctamente el mdulo
en la plataforma Moodle.
P018 RQF-18. Comrpobar que un administrador Correcto
Desinstalacin del puede desinstalar el mdulo de la
mdulo plataforma Moodle y que sus tablas
asociadas se eliminan correctamente de
la base de datos.
P019 RQF-19. Reparto de Comprobar que el reparto de grupos se Correcto
grupos realiza de la forma correcta y en el
momento indicado.
P020 RQF-20. Eliminacin Comrpobar que se eliminan Correcto
de archivos correctamente del sistema los archivos
temporales temporales generados por el mdulo.
P021 RQD-01. Datos de la Comprobar que se almacena Correcto
instancia correctamente en la tabla gruposlab de la
base de datos la informacin referente a
cada instancia del mdulo.
P022 RQD-02. Datos de los Comprobar que se almacena Correcto
grupos correctamente en la tabla
gruposlab_groups de la base de datos la
informacin referente a grupo de
laboratorio configurado.
P023 RQD-03. Datos de los Comrpobar que se almacena Correcto
estudiantes correctamente en la tabla
gruposlab_students de la base de datos la
informacin referente a las opciones
seleccionadas por cada estudiante
inscrito en los grupos de laboratorio.
P024 RQI-01. Interfaces Comprobar la correcta visualizacin de Correcto
separadas todas las interfaces del sistema.
P025 RQI-02. Calendario de Comprobar la correcta visualizacin del Correcto
grupos calendario semanal donde se muestran
los grupos de laboratorio. Probar que los
enlaces apunten a las pginas correctas.
P026 RQS-01. Control de Comprobar que solo los usuarios que Correcto
acceso de usuarios han iniciado sesin en el sistema tienen
acceso al mdulo.
P027 RQS-02. Configurar Comprobar que solo los roles Correcto
grupos permitidos tienen la capacidad de
configurar los grupos de laboratorio.

139
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Cdigo de Requisito a probar Objetivo que se quiere conseguir Resultado


prueba
P028 RQS-03. Inscribirse Comprobar que slo el usuario Correcto
estudiante puede inscribirse a los
grupos de laboratorio.
P029 RQC-01. Estilo del Revisar el cdigo fuente para comprobar Correcto
cdigo que cumple con los estndares de
programacin de Moodle.
Tabla 32: Especificacin del plan de pruebas

Como se puede ver en los resultados que muestra la tabla anterior, todas las
pruebas realizadas con la ltima versin del mdulo Gruposlab han sido positivas. Por
lo tanto podemos afirmar que la aplicacin cumple con todos los requisitos que se
especificaban en el apartado de Anlisis de requisitos.

Tan solo una de las pruebas, la P014, no ha dado resultados completamente


satisfactorios. La hoja de clculo que se genera se visualiza correctamente el visor de
hojas de clculo de la suite ofimtica OpenOffice.org, pero en Microsoft Excel se
muestra un aviso donde dice que los datos pueden haberse perdido, a pesar de que
finalmente abre el archivo y los muestra correctamente.

140
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

7 Manuales de usuario

7.1 Manual del usuario profesor


7.1.1 Aadir el mdulo GruposLab a un curso
Para aadir el mdulo Gruposlab a un curso, es necesario entrar en el curso y
activar la edicin pulsando el botn Activar Edicin que aparece en la parte superior
derecha de la pantalla.

A continuacin se debe pulsar sobre la lista desplegable Agregar actividad..., y


seleccionar Grupos de Laboratorio.

Ilustracin 45: Agregar el mdulo GruposLab a un curso

7.1.2 Configuracin general de la aplicacin


Al aadir la actividad Grupos de Laboratorio a nuestro curso, se mostrar una
pantalla de configuracin como la que se aparece en la imagen siguiente.

En ella hay que rellenar algunos campos necesarios para la correcta


configuracin de la actividad. Estos campos son los siguientes:

Nombre: Se debe introducir el nombre que se le quiere dar a la actividad, por


ejemplo Grupos de prcticas de lgebra.
Descripcin: En este campo el profesor puede introducir una descripcin de la
actividad que se llevar a cabo en los grupos de laboratorio, o cualquier otra
informacin que considere oportuna. Esta descripcin se mostrar a los
alumnos cuando interacten con el mdulo.
Nmero de grupos: Se debe indicar el nmero de grupos de laboratorio que se
va a abrir. Posteriormente se podr configurar cada uno de estos grupos de
forma individual.

141
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Inicio de matriculacin: Se debe introducir la fecha en la que los alumnos


podrn comenzar a apuntarse a los grupos.
Fin de matriculacin: Se debe introducir la fecha tope para que los alumnos se
matriculen. Esta ser tambin la fecha en la que el mdulo realizar de forma
automtica la distribucin de los alumnos en los grupos.

El resto de campos son estndar para todos los mdulos de Moodle y se pueden
dejar con los valores por defecto.

Ilustracin 46: Configuracin general de la aplicacin

Para guardar la configuracin general y pasar a configurar los grupos


individualmente, se debe pulsar el botn Guardar cambios y mostrar. Si, por el contrario,
se desea guardar la configuracin actual, pero se quiere continuar con el resto de
opciones ms tarde, se debe pulsar el botn Guardar cambios y regresar al curso.

7.1.3 Configuracin particular de cada grupo


Despus de realizar la configuracin general del mdulo, que se explica en el
apartado anterior, si pulsamos el botn Guardar cambios y mostrar, aparecer una
pantalla como la que se muestra en la imagen inferior, donde tendremos la posibilidad
de configurar cada grupo de forma individual. Si hemos decidido terminar la

142
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

configuracin anterior pulsando el botn Guardar cambios y regresar al curso, la prxima


vez que intentemos acceder a la actividad tambin aparecer la pantalla inferior para
configurar los grupos.

Ilustracin 47: Configuracin individual de los grupos

Las opciones que podemos configurar para cada grupo de laboratorio son las
siguientes:

Nombre del grupo: En este campo se debe poner el nombre que queremos dar a
este grupo, por ejemplo: Grupo A o Grupo Maana.
Profesor: Al pinchar en esta lista desplegable aparecern todos los profesores
que estn dados de alta en el curso. Se debe seleccionar cul de los profesores
ser el encargado de impartir ese laboratorio.
Da: En esta lista se debe seleccionar el da de la semana que se impartir el
laboratorio.
Hora de comienzo: Seleccionaremos la hora a la que comienza el laboratorio.
Hora de fin: Aqu pondremos la hora a la que finaliza. La hora de fin debe ser
posterior a la hora de inicio. Si por error esto no se configura as, el grupo no se
crear.
Repeticin: En este campo podremos seleccionar si el laboratorio se imparte
una vez a la semana, cada quince das o una vez al mes.

143
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Elegir semanas: Este campo solo ser editable si hemos seleccionado la


modalidad quincenal en el apartado anterior. Aqu se debe elegir si el
laboratorio se imparte las semanas pares del mes o las semanas impares.
Lugar: En este campo se debe escribir el nombre del aula donde se impartir el
laboratorio, por ejemplo: Laboratorio L1 o Seminario E21.
Nmero mximo de alumnos: Aqu se debe escribir el nmero mximo de
alumnos que se podrn apuntar a ese laboratorio. Si la asignatura cuenta con
ms alumnos de los que suman las plazas asignadas en total a todos los grupos,
algunos alumnos no podrn matricularse y ser el profesor quien deba
colocarlos manualmente en alguno de los grupos. El nmero mximo de
alumnos en cada grupo se puede modificar en cualquier momento, siempre
queno se haya producido an el reparto de grupos.

Cuando hemos terminado de establecer la configuracin deseada para los


grupos, si pulsamos el botn Guardar cambios, el sistema nos mostrar un mensaje
indicndonos que los cambios se han guardado correctamente:

Ilustracin 48: Mensaje grupos configurados correctamente

A continuacin el sistema nos redirigir a la pgina principal de nuestro curso.

En cualquier momento podremos pulsar el botn Actualizar Grupos de


Laboratorio que aparece en la parte superior derecha de la imagen. Si lo hacemos,
aparecer de nuevo la pantalla de configuracin general y podremos modificar las
opciones del mdulo, tanto las opciones generales como la configuracin particular de
cada grupo.

144
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

7.1.4 Administrar los grupos de laboratorio


Una vez que la configuracin del mdulo est completada, si el profesor accede
a sus Grupos de Laboratorio, se mostrar una pgina como la que aparece ms abajo
(Ilustracin 49).

El mensaje que aparece en el recuadro inferior depende del momento en el que


nos encontremos con respecto a la matriculacin:

Si an no ha comenzado el periodo de matriculacin, el sistema lo indicar, y


adems informar de las fecha de inicio y finalizacin del periodo de
matriculacin.
Durante el periodo de matriculacin, aparecer un mensaje que indicar el
nmero de alumnos que hasta el momento se ha apuntado a los grupos de
laboratorio.
Despus de que se haya cerrado el periodo de matriculacin, no aparece
ningn mensaje.

Ilustracin 49: Calendario con los grupos de laboratorio

El calendario donde se muestran los grupos disponibles se muestra siempre, y


el profesor puede pinchar sobre sus enlaces para obtener ms informacin sobre cada
grupo configurado.

Cuando llega la fecha tope del periodo de matriculacin, se produce el reparto


de los alumnos en los grupos.

Despus de que se haya producido el reparto, si el profesor pincha sobre el


calendario en uno de los enlaces de los grupos, podr ver una pantalla como la de la

145
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

imagen inferior (Ilustracin 50), desde la que podr administrar los alumnos de dicho
grupo.

Ilustracin 50: Administracin de un grupo de laboratorio

7.1.4.1 Exportar listado de alumnos a una hoja de clculo


Pulsando el botn Exportar a Excel, el profesor puede obtener una lista con
todos los alumnos de un laboratorio en formato Excel. El resultado sera similar al
siguiente:

146
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Grupos de prcticas
Grupo A
Profesor: Profesor1 Pruebas
Horario: Semanal, Lunes 8:00 - 9:00
Lugar: Laboratorio EL1
N Alumnos: 5

ALUMNOS
# Apellidos Nombre E-mail Comentarios
1 Pruebas Alumno9 alumno9@uah.es
2 Pruebas Alumno10 alumno10@uah.es
3 Pruebas Alumno17 alumno17@uah.es
4 Pruebas Alumno19 alumno19@uah.es
5 Pruebas Alumno20 alumno20@uah.es

7.1.4.2 Aadir/eliminar alumnos a un grupo


Una vez que se ha producido el reparto de alumnos el profesor, de manera
manual, puede agregar alumnos a un grupo o eliminarlos de otro. Para ello debe
pulsar el botn Agregar/quitar alumnos, que est bajo el listado de alumnos.

En la pantalla que aparece, tiene a un lado la lista de alumnos que estn


matriculados en el grupo, y al otro lado la lista de alumnos potenciales. Es decir, los
alumnos que estn matriculados en el curso, pero han sido asignados a ningn grupo
de laboratorio, bien porque el nmero de plazas era inferior al nmero de alumnos, o
bien porque el profesor los haya eliminado de otro grupo de laboratorio.

Para agregar un alumno, tan solo se debe seleccionar el alumno deseado de la


lista de miembros potenciales y pulsar el botn Aadir.

Para eliminar un alumno del grupo, se debe seleccionar el alumno deseado de


la lista de miembros existentes y pulsar el botn Quitar.

147
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 51: Agregar/quitar alumnos de un grupo

7.2 Manual del usuario alumno


7.2.1 Matricularse en un grupo de laboratorio
Para matricularse en un grupo de laboratorio, el alumno debe acceder al curso y
pinchar sobre el enlace del mdulo Grupos de laboratorio.

En la pgina que aparece, hay un calendario donde se encuentran todos los


grupos que ha configurado el profesor y debajo de l, un listado de dichos grupos con
informacin referente a cada uno de ellos.

Al final de la pgina, el alumno debe seleccionar el grupo que ms se ajuste a


sus necesidades y ponerlo como primera opcin. En caso de que existan tres o ms
grupos de laboratorio disponibles, el alumno deber elegir otras dos opciones en orden
de preferencia, que sern valoradas adecuadamente en caso de que no pudiera ser
asignado al grupo preferido.

El alumno debe tener en cuenta que seleccionar varias veces el mismo grupo de
laboratorio no aumenta sus posibilidades de ser asignado a dicho grupo. Si el alumno
selecciona varias veces el mismo grupo y no es posible matricularlo en l, el sistema le
asignar otro de los grupos disponibles de forma aleatoria.

148
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 52: Elegir grupo de laboratorio

Tras hacer su eleccin, el alumno puede guardar los cambios, y un mensaje le


indicar que sus opciones se han guardado correctamente en el sistema.

149
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Si el alumno vuelve a acceder a la actividad Grupos de laboratorio despus de


haber seleccionado sus grupos preferidos, el sistema se lo indicar mediante un
mensaje, pero le dejar modificar su eleccin mientras el periodo de matrcula siga
abierto.

Ilustracin 53: Modificar grupos de laboratorio

Si pulsa sobre el botn Cambiar grupos, volver a una pgina como la anterior,
donde de nuevo podr seleccionar sus opciones en el orden que desee.

7.2.2 Comprobar su grupo de laboratorio


Despus de cerrarse el periodo de matriculacin y de haberse realizado el
reparto de alumnos entre los grupos disponibles, el alumno recibir un correo
electrnico, indicndole el grupo al que finalmente ha sido asignado. El mensaje que el
alumno recibir ser similar al siguiente:

Se han repartido los grupos de laboratorio de la asignatura Curso Pruebas GruposLab,


Has sido apuntado/a en el grupo: Grupo A
A partir de este momento, el alumno ya no podr cambiarse de grupo. Si desea
hacerlo deber ponerse en contacto con el profesor para que l haga el cambio
manualmente.

Si el alumno accede al mdulo de los grupos de laboratorio, tan solo obtendr


informacin sobre el grupo en el que est matriculado:

150
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 54: Comprobar grupo asignado

7.3 Manual de administrador


7.3.1 Instalar mdulo GruposLab
Para instalar el mdulo Gruposlab, debemos descomprimir el archivo
gruposlab.zip y colocar la carpeta que contiene en el directorio de los mdulos de
nuestro servidor Moodle.

Este directorio normalmente se ubica en la ruta por defecto, que suele ser la
siguiente:

/var/www/moodle/mod

Ilustracin 55: Colocar carpeta gruposlab en el directorio de mdulos

151
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Una vez que colocada la carpeta gruposlab en su sitio, debemos acceder a la


pgina principal de Moodle como administrador, y pulsar el enlace Notificaciones, que
aparece en la parte izquierda de la pantalla:

Ilustracin 56: Pulsar Notificaciones para instalar el mdulo

Al pulsar este enlace, se realiza automticamente la instalacin del mdulo,


crendose en este momento todas las tablas que sean necesarias en la base de datos.

Cuando haya finalizado la instalacin, aparecer una pantalla con el resumen


de todas las operaciones que se han llevado a cabo durante la instalacin. Si no ha
sucedido ningn problema, podremos desplazarnos hasta el final de la pgina y pulsar
el botn Continuar.

A partir de este momento ya tenemos instalado el mdulo Grupos de Laboratorio


en Moodle, y podremos hacer uso de l.

152
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 57: Mdulo instalado correctamente

7.3.2 Desinstalar mdulo GruposLab


Para desinstalar el mdulo GruposLab, debemos acceder como administrador a
la pgina principal de Moodle, y seleccionar en la parte izquierda de la pantalla
Mdulos->Actividades->Gestionar Actividades.

A continuacin aparece en pantalla la lista con todos los mdulos instalados en


Moodle. Seleccionaremos el mdulo Grupos de Laboratorio y pulsaremos borrar.

Ilustracin 58: Desinstalar mdulo GruposLab

153
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

A continuacin aparecer en pantalla un aviso, indicndo que se eliminar


completamente todo lo que haya en la base de datos asociado al mdulo. Si estamos
seguros de que queremos borrarlo, pulsaremos S.

Si no ha habido ningn problema durante la eliminacin, el siguiente mensaje


nos informar de que todos los datos asociados con el mdulo Grupos de Laboratorio han
sido eliminados de la base de datos, y se advierte que para completar la eliminacin (y
prevenir que el mdulo se reinstale por s mismo) se debera borrar del servidor el
directorio gruposlab, ubicado en la carpeta que contiene los mdulos de Moodle.
Normalmente la ruta de esta carpeta es la siguiente:

/var/www/moodle/mod/gruposlab.

Por lo tanto, para completar la desinstalacin, se debe eliminar dicho directorio.

Una vez que lo hayamos hecho, ya no aparecer el mdulo Gruposlab en la lista


de mdulos de la imagen anterior, y habr desaparecido tambin de todos los cursos
que hubieran estado haciendo uso de l en el momento de la desinstalacin.

154
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

8 Presupuesto
A continuacin se detallan los distintos apartados que constituyen el
presupuesto del proyecto.

8.1 Presupuesto de ejecucin material


En este apartado se incluyen tanto los costes hardware como software, as como
los costes por tiempo de trabajo.

8.1.1 Costes de sistemas


En este apartado se muestran los costes de los equipos hardware necesarios
para el desarrollo del proyecto, as como de las licencias de los distintos programas
software que se han utilizado, y tambin de los consumibles.

COSTES DE SISTEMAS
Concepto Coste
Hardware 99,5
Software 635
Consumibles 86,36
TOTAL: 820,86
Tabla 33: Costes de sistemas

A continuacin se muestra el desglose de los distintos apartados:

HARDWARE
Concepto Coste Duracin Tiempo de uso Total
Equipo 700 4 aos 6 meses 87,5
desarrollo
Impresora Color 400 4 aos 1 mes 12
TOTAL: 99,5
Tabla 34: Costes de Hardware

Los requisitos mnimos de hardware deseables, tanto para el equipo como para
la impresora, son los siguientes:

Equipo de desarrollo:
o Procesador Intel Pentium 4, 2 GHz.
o 1 Gb Memoria RAM
o 40 Gb disco duro
o Conexin a internet
Impresora lser a color:
o Velocidad de impresin en color (normal, A4): 30 ppm
o Calidad de impresin en color (ptima): Hasta 1200 x 600 ppp
o Memoria de serie: 256 Mb

155
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

SOFTWARE
Concepto Coste
Licencia Windows 7 319
Licencia Ubuntu 10.10 0
Licencia Microsoft Office 2010 139
Licencia VMware Workstation 177
Licencia Apache 0
Licencia MySQL 0
Licencia PHP 0
Licencia Paint.net 0
Licencia Notepad++ 0
Licencia NX 0
Licencia Moodle 0
TOTAL: 635
Tabla 35: Costes de Software

RECURSOS CONSUMIBLES
Concepto Precio Duracin Uso Total
Tner Negro 190 10.500 pginas 200 pginas 3,62
Tner Amarillo 258 7.000 pginas 200 pginas 7,38
Tner Cian 258 7.000 pginas 200 pginas 7,38
Tner Magenta 258 7.000 pginas 200 pginas 7,38
Papel 15 5.000 pginas 200 pginas 0,6
Encuadernacin 60 60
TOTAL: 86,36
Tabla 36: Costes de consumibles

8.1.2 Costes por tiempo de trabajo


Coste por hora establecido por la asociacin de Ingenieros e Ingenieros tcnicos
en informtica, adems de los costes de realizacin de la documentacin.

COSTE TOTAL DE TIEMPO TRABAJADO


Concepto Horas Coste/hora Total
INGENIERA 250 h
Anlisis 20 h 42 840
Diseo 30 h 42 1.260
Desarrollo 150 h 42 6.300
Pruebas 50 h 42 2.100
DOCUMENTACIN 130 h 15 1.950
TOTAL: 12.450
Tabla 37: Coste total de tiempo trabajado

8.1.3 Coste total de ejecucin material


El coste total de ejecucin material es la suma del importe del coste de sistemas
y de los costes por tiempo de trabajo.

156
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

COSTE TOTAL DE EJECUCIN MATERIAL


Concepto Total
Coste de sistemas 820,86
Coste por tiempo de trabajo 12.450
TOTAL: 13.270,86
Tabla 38: Coste total de ejecucin material

8.2 Gastos generales y beneficio industrial


Normalmente se trata de los gastos necesarios para disponer de instalaciones en
las que desempear el trabajo, adems de otros gastos adicionales. Los gastos generales
y el beneficio industrial son el resultado de aplicar un recargo del 22% sobre el Coste
Total de Ejecucin Material, resultando:

GASTOS GENERALES Y BENEFICIO INDUSTRIAL


TOTAL: 2.919,59
Tabla 39: Gastos generales y beneficio industrial

8.3 Presupuesto de ejecucin por contrata


El presupuesto de ejecucin por contrata es el resultado de sumar el Coste Total
de Ejecucin y los Gastos Generales.

COSTE DE EJECUCIN POR CONTRATA


Concepto Coste
Coste total de ejecucin 13.270,86
Gastos generales 2.919,59
TOTAL: 16.190,45
Tabla 40: Coste de ejecucin por contrata

8.4 Honorarios facultativos


Se estiman unas tarifas sobre el presupuesto de Ejecucin Material como las
siguientes:

CONCEPTO COEFICIENTE REDUCTOR PORCENTAJE


Hasta 30.000 C=1 7%
Desde 30.000 C=0,9 7%
Tabla 41: Tarifas de honorarios facultativos

Los derechos del visado se calcularn aplicando la siguiente frmula:

Derechos del visado = p x P x C, donde:

p porcentaje
P Presupuesto de Ejecucin Material
C Coeficiente reductor

Obteniendo un valor para los honorarios de:

157
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

HONORARIOS FACULTATIVOS
TOTAL: 928,96
Tabla 42: Honorarios facultativos

8.5 Importe total del presupuesto


El importe total del presupuesto se calcula sumando el presupuesto de
ejecucin por contrata y los honorarios. A dicho valor se le aplicar el 18% de IVA.

TOTAL PRESUPUESTO
Concepto Coste
Presupuesto de Ejecucin por contrata 16.192,45
Honorarios 928,96
SUBTOTAL 17.121,41
IVA (18%) 3.081,85
TOTAL: 20.203,26
Tabla 43: Presupuesto total

158
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

9 Conclusiones y trabajos futuros


Los resultados de este proyecto de fin de carrera han sido la sistematizacin de
la documentacin para desarrolladores y la creacin de un mdulo para la gestin de
laboratorios docentes.

En cuanto a la documentacin para desarrolladores, se han examinado todas las


fuentes disponibles en Internet y se ha realizado una recopilacin de todos los
elementos que el desarrollador novel debe tener en cuenta antes de comenzar su
trabajo. Adems se ha realizado una sencilla gua en la que se explica paso por paso
cmo realizar un mdulo para Moodle que disponga de las funcionalidades bsicas. A
partir de ah ser tarea del desarrollador profundizar lo que considere necesario para
aadir todas las funcionalidades que requiera su aplicacin.

El mdulo para la gestin de grupos de laboratorio ofrece diversas


funcionalidades tanto a los profesores (configurar grupos de laboratorio, gestionar
alumnos, etc) como a los alumnos (visualizar informacin sobre cada grupo de
laboratorio disponible, seleccionar varios grupos a los que se quiere apuntar en orden
de preferencia, etc). Adems, el mdulo se encarga de hacer el reparto de alumnos en
los diferentes grupos por medio de un algoritmo equitativo en el que no influye el
orden en el que los alumnos se hayan apuntado a los grupos, sino que los distribuye
aleatoriamente teniendo en cuenta tanto sus preferencias como las de los profesores. El
cdigo fuente de este mdulo, as como toda la documentacin en formato digital se
adjunta mediante un CD a la memoria final.

Finalmente, se ha redactado el presente informe (memoria) que cuenta, entre


otros apartados, con una descripcin detallada de la arquitectura de Moodle, un listado
detallado de los recursos y libreras de cdigo disponibles para desarrolladores, y una
manual que explicar los pasos a seguir a la hora de desarrollar un nuevo mdulo para
la plataforma. Adems, el mdulo Gruposlab ha sido probado en un entorno educativo
real, gracias a la colaboracin de varios profesores del Departamento de Matemticas,
arrojando resultados positivos tras un periodo de depiuracin, y siendo aceptado tanto
por alumnos como por docentes.

Una vez alcanzados los objetivos que se plantearon en el anteproyecto, a nivel


personal este trabajo me ha servido para consolidar mis conocimientos de
programacin de aplicaciones Web (en concreto en el lenguaje PHP), as como para
aprender a administrar una plataforma de enseanza virtual.

Por otro lado, aunque a da de hoy el mdulo Gruposlab es completamente


funcional, tras los ensayos realizados han salido a la luz nuevos requisitos funcionales
que no es posible desarrollar dentro del entorno de este proyecto de fin de carrera

159
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

debido al imitaciones temporales, pero que sera bueno tener en cuenta para futuras
versiones de la aplicacin.

Entre ellos, cabe destacar que con la entrada de las universidades espaolas en
el Espacio Europeo de Educacin Superior (conocido como Plan Bolonia) no slo se
forman grupos (ms o menos grandes) para trabajar en el laboratorio, tal y como cubre
este proyecto como necesidad directamente planteada por el Departamento de
Matemticas de la Universidad de Alcal. Sin embargo, tambin hay que formar
grupos para hacer trabajos, resolver bloques de problemas, exponer bloques de
contenidos en clase, trabajos de campo, etc. Para todas estas situaciones sera muy til
disponer de una herramienta para automatizar en la medida de lo posible la creacin y
gestin de grupos. Por tanto sera interesante tratar de generalizar el mdulo Gruposlab
tanto como fuera posible para abarcar todos estos problemas, realizando los cambios
oportunos (si fueran necesarios).

Adems de lo anterior, otras cosas que se podran aadir o mejorar en versiones


futuras del mdulo actual son las siguientes:

Sera conveniente que se revisase el formulario de configuracin de cada grupo


de laboratorio, de forma que la aplicacin avisase si detecta que se estn
configurando opciones que podran ser potencialmente incorrectas, como por
ejemplo si se estn configurando dos grupos que coinciden a la misma hora en
el mismo aula, o si un profesor est asignado en dos grupos a la vez en el
mismo horario. En casos como estos el sistema debera avisar al profesor que
est realizando la configuracin, pero no impedirle que contina con ella una
vez que se ha asegurado de que es correcta.
En el mismo formulario, tambin se debera comprobar que la hora a la que
comienza un grupo de laboratorio sea anterior a la hroa en que termina. En la
versin actual el sistema no genera el grupo si se da esta circunstancia, pero no
muestra ningn aviso. El sistema debera impedir que se guarde la
configuracin si se da esta circunstancia.
Una vez que se ha producido el reparto de grupos de laboratorio, debera
existir la posibilidad de visualizar a la vez las listas de alumnos de todos los
grupos en la misma pantalla. Actualmente para ver los listados se debe
seleccionar un grupo, y se muestra la lista de alumnos de ese grupo.
Sera conveniente que se desarrollaran las libreras necesarias para que el
mdulo tuviera soporte para las copias de seguridad y la restauracin de los
cursos de Moodle.
En la versin actual del mdulo, cuando se produce el reparto de los grupos de
laboratorio el sistema enva un correo automticamente a los profesores del
curso y otro a cada alumno indicndole el grupo al que ha sido asignado. Sera

160
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

conveniente que antes enviar el correo a los alumnos, el profesor pudiera


revisar las listas de alumnos generadas por el sistema, realizar los cambios
necesarios y por ltimo dar su confirmacin para que los correos fueran
enviados.
Por ltimo, aunque el mdulo ya ha sido enviado a la comunidad de Moodle
para su revisin y posterior aprobacin, sera conveniente que se realizara un
seguimiento de este proceso, de manera que se asegure la inclusin del mdulo
dentro del repositorio oficial de mdulos no estndar de la plataforma. De esta
forma toda institucin que quiera hacer uso de las funcionalidades
desarrolladas podr descargarlo, modificarlo y usarlo libremente segn sus
propias necesidades.

161
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

10 Bibliografa
AGGARWAL, A. K. & BENTO, R. (2000). Web-based education. En A.
Aggarwal, (Ed.), Web Based Learning and teaching technologies: opportunities and
challenges (pp. 198-215). Hercshey/London: Idea Group.
AVGERIOU, P., PAPASALOURUS, A., RETALIS, S. (2001). Web-Based
Learning Environments: Issues, Trends, Challenges. En Proceedings of the 1 st
IOSTE Symposium in Southern Europe, Science and Technology Education .
(paralimmi, Cyprus , May 2001)
BALLESTER, A. (2002). El Aprendizaje Significativo en la Prctica. Cmo hacer
el Aprendizaje Significativo en el Aula. Espaa
BARTOLOM, A. (2004). Blended Learning, Conceptos Bsicos. Pxel-Bit
Revista de Medios y Educacin, 23, 7-20.
BATES, T. (A.W.) (2000) Managing Technological Change. Strategies for
College and University Leaders. San Francisco: Jossey-Bass.
BELANGER, F Y JORDAN, D. H. (2000). Evaluation and Implementation Of
Distance Learning: Technologies Tools and Techniques. Virginia Polytecnnic
Institute and State University, USA
BRIET PLANELLS, D. (2006). Un reto en la Formacin del Profesorado.
Ponencia presentada al VI Congreso Internacional Virtual de Educacin CIVE
2006, Espaa.
BRODSKY, M. W. (2003). Four Blended Learning Blunders and How to Avoid
Them. Learning Circuits, Noviembre 2003.
COMEZAA, O. & GARCA, F. (2005). Plataformas para Educacin Basada en
Web: Herramientas, Procesos de Evaluacin y Seguridad. Informe Tcnico DPTOIA-
IT-2005-1. Salamanca: Departamento de Informtica y Automtica, Universidad
de Salamanca.
DODGE, B. (2001). FOCUS: Five rules for writing a great webquest. Learning &
Leading with Technology, 28(8). Recuperado en lnea el 3 de junio de 2008, en
http://webquest.sdsu.edu/documents/focus.pdf
DUART, J. & LUPIEZ, F. (2005). La perspectiva organizativa del e-learning.
Revista de Universidad y Sociedad del Conocimiento Vol.2 - N 1 / Mayo de
2005. Recuperado en lnea el 3 de junio de 2008, de www.uoc.edu/rusc
EDUTOOLS. (2010). Compare Management Systems . Recuperado en lnea el 7
noviembre 2010, de http://www.edutools.info/course/compare/all.jsp.
ESCORCIA G. (2001). La Importancia de la Tecnologa en la Educacin.
GARCA PEALVO, F.J. (s/f) Estado actual de los sistemas e-learning.
Recuperado en lnea el 7 de noviembre de 2010, en

163
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

http://campus.usal.es/~teoriaeducacion/rev_numero_06_2/n6_02_art_garcia_pe
nalvo.htm
GARCA PEALVO, F. J. y GARCA CARRASCO, J. (2001) Los espacios
virtuales educativos en el mbito de Internet: Un refuerzo a la formacin
tradicional, Teora de la Educacin. Educacin y Culturaen la Sociedad de la
Informacin. Recuperado en lnea el 7 de noviembre de 2010, en
http://www3.usal.es/~teoriaeducacion/rev_numero_03/n3_art_garcia-
garcia.htm
GMEZ, J. (2006). Moodle 1.5 Manual de Consulta. Propuesta Pedaggica.
Valladolid: GNU Press.
GONZLEZ DE FELIPE, A.T. (s/f). Gua de apoyo para el uso de Moodle 1.9.4.
Usuario desarrollador. EUITIO, Universidad de Oviedo. Recuperado en lnea el
9 de noviembre de 2010, en
http://download.moodle.org/docs/es/1.9.4_usuario_desarrollador.pdf
GONZLEZ DE FELIPE, A.T. (s/f). Gua de apoyo para el uso de Moodle 1.9.4.
Usuario profesor. EUITIO, Universidad de Oviedo. Recuperado en lnea el 9 de
noviembre de 2010, en
http://download.moodle.org/docs/es/1.9.4_usuario_profesor.pdf
GONZLEZ MARIO J.C. (2006). B-Learning utilizando Software Libre, una
alternativa viable en Educacin Superior. Universidad Autnoma de
Tamaulipas. Mexico. Recuperado en lnea el 9 de noviembre de 2010, en
http://revistas.ucm.es/edu/11302496/articulos/RCED0606120121A.PDF
HERNNDEZ, J.M. (2005). Software libre: tcnicamente viable,
econmicamente sostenible y socialmente justo. Zero Factory S.L. Barcelona.
IVORRA OLTRA, I. (2009). Tutorial:Creacin de unmdulo actividad.Moodle
(1.9.3). Recuperado en lnea el 9 de noviembre de 2010, en
http://gplsi.dlsi.ua.es/~slujan/materiales/creacion-modulo-moodle.pdf
JOIN (2005). Evaluacin de las plataformas LMS.
KAPLAN-LEISERSON, E. (s/f). Glosary. American Society of Training and
Development. Citado por Clara Lpez Guzmn.
LARA FUILLERAT J.M. (2009). Moodle, Manual de referencia para el
profesorado. Recuperado en lnea el 9 de noviembre de 2010, en
http://www.scribd.com/doc/16990042/Moodle-Manual-de-referencia-para-
profesores-version-19
LPEZ GUZMN, C. (2005) Los repositorios de objetos de aprendizaje como
soporte para los entornos e-learning (Cap. 2). Recuperado en lnea el 9 de
noviembre de 2010, en
http://www.biblioweb.dgsca.unam.mx/libros/repositorios/la_web.htm

164
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

MARCELO, C., PUENTE, D., BALLESTEROS, M. A. & PALAZN, A. (2002).


e-learning, Teleformacin, Diseo, Desarrollo y Evaluacin de la Formacin a travs de
Internet . Barcelona: Gestin 2000.
MENA, M. (2004). Amrica Latina en la Bsqueda de Nuevos Modelos de
Educacin a Distancia. En M. Mena (compiladora), La Educacin a Distancia en
Amrica Latina (pp 15-36). Buenos Aires: ICDE-UNESCO.
MOODLE (2010). Pgina oficial de Moodle. Recuperada en lnea el 9 de
noviembre de 2010, en http://moodle.org/
MOORE, J. & CHURCHWARD, M. (2010). Moodle 1.9 Extension
Development. Birmingham: Packt Publishing.
PHPXREF: MOODLE (2010). Referencia del cdigo fuente de Moodle.
Recuperado en lnea el 9 de noviembre de 2010, en
http://xref.moodle.org/nav.html?index.html
RENGARAJAN, R. (2001). LCMS and LMS: Taking Advantage of Tight
Integration. Click 2 Learn. Recuperado en lnea el 7 de noviembre de 2010, de
http://www.e-learn.cz/soubory/lcms_and_lms.pdf.
RODRGUEZ MARTN, F.J. (2007). Tutorial para la creacin de un Mdulo en
Moodle. Recuperado en lnea el 9 de noviembre de 2010, en
http://moodle.org/pluginfile.php/226/mod_forum/attachment/335652/Tutorial_
M_dulos.pdf
ROMERO, L. M. & RUBIO M. J. (2004). Lineamientos generales para la
educacin a distancia. En Mena, M. (compiladora) La Educacin a Distancia en
Amrica Latina (pp 175-215). Buenos Aires: ICDE-UNESCO.
ROMERO, T.A. (2006). Moodle, Unimos Mentes, Creamos Conocimiento Libre.
Ponencia presentada al VI Congreso Internacional Virtual de Educacin CIVE
2006, Espaa.
ROSAS, P. (2005). La Gestin de Ambientes Virtuales de Aprendizaje en los
Posgrados de la U de G. en Tecnologas para Internacionalizar el Aprendizaje.
(pp. 63-75). Guadalajara: Universidad de Guadalajara, Mjico.
ROSENBERG, M. J. (2001). e-learning Strategies for Delivering Knowledge in the
Digital Age. Columbus, HO: McGraw-Hill.
SANGR MORER A. (2002) Educacin a distancia, educacin presencial y
usos de la tecnologa: una trada para el progreso educativo. Recuperado en
lnea el 7 de noviembre de 2010, en
http://edutec.rediris.es/Revelec2/revelec15/sangra.pdf
STALLMAN, R M. (2004). Software Libre para una Sociedad Libre. Madrid:
GNU Press.
SUTTON, L. (1999). Interaction. Arizona State University. Recuperado en lnea
el 7 de noviembre de 2010, en
http://seamonkey.ed.asu.edu/~mcisaac/emc703/leah5.html

165
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

TAIT, A.; MILLS, R. (ED) (1999) The convergence of distance and


conventional education. London: Routdlege
THORNE, K. (2003). Blended Learning: How to Integrate Online & Traditional
Learning . London : VA Kogan.
VASSILEVA J. (1997) Dynamic Courseware Generation on the WWW.
Proceedings of the Intelligent Educational Systems on the World Wide Web.
Workshop at AIED'97, Kobe. Japan.
VERA, F. (2008) La modalidad Blended Learning en Educacin Superior.
Recuperado en lnea el 7 de noviembre de 2010, en
http://www.utemvirtual.cl/nodoeducativo/wp-
content/uploads/2009/03/fvera_2.pdf

166
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

11 ndice de ilustraciones
Ilustracin 1: Sistemas de Administracin de Aprendizaje (LMS) ....................... 26
Ilustracin 2: Plataformas de enseanza virtual ms comunes ............................ 27
Ilustracin 3: Sistemas de Administracin de Contenidos de Aprendizaje
(LCMS) ....................................................................................................................................... 28
Ilustracin 4: Entorno LAMP ..................................................................................... 34
Ilustracin 5: Arquitecturas tpicas de Moodle ....................................................... 36
Ilustracin 6: Las tres reas de Moodle .................................................................... 37
Ilustracin 7: Directorios de Moodle ........................................................................ 38
Ilustracin 8: Estructura general de Moodle............................................................ 41
Ilustracin 9: Apache instalado correctamente ....................................................... 53
Ilustracin 10: Instalacin de MySql ......................................................................... 54
Ilustracin 11: Instalacin de Moodle-Paso 1 .......................................................... 55
Ilustracin 12: Instalacin de Moodle-Paso 2 .......................................................... 56
Ilustracin 13: Instalacin de Moodle-Paso 3 .......................................................... 56
Ilustracin 14: Instalacin de Moodle-Paso 4 .......................................................... 57
Ilustracin 15: Instalacin de Moodle-Paso 5 .......................................................... 57
Ilustracin 16: Instalacin de Moodle-Paso 6 .......................................................... 58
Ilustracin 17: Instalacin de Moodle-Paso 7 .......................................................... 58
Ilustracin 18: Instalacin de Moodle-Paso 8 .......................................................... 59
Ilustracin 19: Instalacin de Moodle-Paso 9 .......................................................... 59
Ilustracin 20: Instalacin de Moodle-Paso 10 ........................................................ 60
Ilustracin 21: Instalacin de Moodle-Paso 11 ........................................................ 60
Ilustracin 22: Instalacin de Moodle-Paso 12 ........................................................ 61
Ilustracin 23: Instalacin de Moodle-Paso 13 ........................................................ 61
Ilustracin 24: Formulario generado con la clase moodleform_mod................... 93
Ilustracin 25: Aadir un campo selector de fecha a un formulario .................... 94
Ilustracin 26: Editor XMLDB.................................................................................... 95
Ilustracin 27: Entorno tecnolgico......................................................................... 105
Ilustracin 28: Diagrama Entidad/Relacin ........................................................... 117
Ilustracin 29: Modelo de casos de uso general .................................................... 121
Ilustracin 30: Modelo de casos de uso: Gestin de instancias ........................... 122
Ilustracin 31: Modelo de casos de uso: Gestin de grupos ................................ 123
Ilustracin 32: Modelo de casos de uso: Gestin de alumnos ............................. 124
Ilustracin 33: Modelo de casos de uso: Avisos .................................................... 125
Ilustracin 34: Modelo de casos de uso: Inscripcin ............................................ 126
Ilustracin 35: Diagrama de flujo de usuario profesor ......................................... 127
Ilustracin 36: Diagrama de flujo del usuario Alumno........................................ 128
Ilustracin 37: Diagrama de flujo del algoritmo de reparto de grupos ............. 129

167
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Ilustracin 38: interfaz Configurar/Editar instancias ........................................... 132


Ilustracin 39: Interfaz listado de instancias.......................................................... 132
Ilustracin 40: Interfaz Configurar/Editar grupos de laboratorio ...................... 133
Ilustracin 41: Interfaz listado de alumnos de un grupo ..................................... 133
Ilustracin 42: Interfaz Agregar/Eliminar alumnos de un grupo ....................... 134
Ilustracin 43: Interfaz Inscribirse/Editar inscripcin .......................................... 135
Ilustracin 44: Diagrama de componentes............................................................. 135
Ilustracin 45: Agregar el mdulo GruposLab a un curso .................................. 141
Ilustracin 46: Configuracin general de la aplicacin ........................................ 142
Ilustracin 47: Configuracin individual de los grupos ...................................... 143
Ilustracin 48: Mensaje grupos configurados correctamente .............................. 144
Ilustracin 49: Calendario con los grupos de laboratorio .................................... 145
Ilustracin 50: Administracin de un grupo de laboratorio ................................ 146
Ilustracin 51: Agregar/quitar alumnos de un grupo .......................................... 148
Ilustracin 52: Elegir grupo de laboratorio ............................................................ 149
Ilustracin 53: Modificar grupos de laboratorio ................................................... 150
Ilustracin 54: Comprobar grupo asignado ........................................................... 151
Ilustracin 55: Colocar carpeta gruposlab en el directorio de mdulos ............ 151
Ilustracin 56: Pulsar Notificaciones para instalar el mdulo............................. 152
Ilustracin 57: Mdulo instalado correctamente ................................................... 153
Ilustracin 58: Desinstalar mdulo GruposLab .................................................... 153

168
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

12 ndice de tablas
Tabla 1: RQF-01_Visualizacin de informacin .................................................... 106
Tabla 2: RQF-02_Inscripcin .................................................................................... 107
Tabla 3: RQF-03_Modificacin de la inscripcin................................................... 107
Tabla 4: RQF-04_Aviso de reparto .......................................................................... 107
Tabla 5: RQF-05_Informacin de grupo asignado ................................................ 108
Tabla 6: RQF-06_Insercin en un curso .................................................................. 108
Tabla 7: RQF-07:_Eliminacin de un curso ............................................................ 108
Tabla 8: RQF-08_Configuracin de la instancia .................................................... 108
Tabla 9: RQF-9_Modificacin de la instancia ........................................................ 109
Tabla 10: RQF-10_Configuracin particular de cada grupo ................................ 109
Tabla 11: RQF-11_Modificacin particular de grupo ........................................... 109
Tabla 12: RQF-12_Visualizacin de grupos ........................................................... 109
Tabla 13: RQF-13_Visualizacin de listas de estudiantes .................................... 110
Tabla 14: RQF-14_Descarga de listas de estudiantes ............................................ 110
Tabla 15: RQF-15_Redistribucin de estudiantes ................................................. 110
Tabla 16: RQF-16_Aviso de reparto ........................................................................ 110
Tabla 17: RQF-17_Instalacin del mdulo ............................................................. 111
Tabla 18: RQF-18_Actualizacin del mdulo ........................................................ 111
Tabla 19: RQF-19_Desinstalacin del mdulo ....................................................... 111
Tabla 20: RQF-20_Reparto de grupos ..................................................................... 112
Tabla 21: RQF-21_Eliminacin de archivos temporales ....................................... 112
Tabla 22: RQD-01_Datos de la instancia................................................................. 113
Tabla 23: RQD-02_Datos de los grupos .................................................................. 113
Tabla 24: RQD-03_Datos de los estudiantes .......................................................... 114
Tabla 25: RQI-01_Interfaces separadas ................................................................... 114
Tabla 26: RQI-02_Calendario de grupos ................................................................ 114
Tabla 27: RQS-01_Control de acceso de usuarios ................................................. 115
Tabla 28: RQS-02_Configurar grupos ..................................................................... 115
Tabla 29: RQS-03_Inscribirse ................................................................................... 115
Tabla 30: RQC-01_Estilo de cdigo ......................................................................... 116
Tabla 31: Interfaces de usuario ................................................................................ 131
Tabla 32: Especificacin del plan de pruebas ........................................................ 140
Tabla 33: Costes de sistemas .................................................................................... 155
Tabla 34: Costes de Hardware ................................................................................. 155
Tabla 35: Costes de Software ................................................................................... 156
Tabla 36: Costes de consumibles ............................................................................. 156
Tabla 37: Coste total de tiempo trabajado .............................................................. 156
Tabla 38: Coste total de ejecucin material ............................................................ 157

169
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Tabla 39: Gastos generales y beneficio industrial ................................................. 157


Tabla 40: Coste de ejecucin por contrata .............................................................. 157
Tabla 41: Tarifas de honorarios facultativos .......................................................... 157
Tabla 42: Honorarios facultativos ........................................................................... 158
Tabla 43: Presupuesto total ...................................................................................... 158

170
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

13 ndice de cdigo
Cdigo 1: Instalacin de Apache2 ............................................................................. 53
Cdigo 2: Instalacin de MySQL ............................................................................... 53
Cdigo 3: Instalacin de PHP .................................................................................... 54
Cdigo 4: Descarga de Moodle .................................................................................. 54
Cdigo 5: Descomprimir Moodle y colocarlo el directorio www ........................ 54
Cdigo 6: Crear el directorio moodledata y darle permisos adecuados ............. 55
Cdigo 7: Ejemplos de nombres de variables correctos e incorrectos ................. 64
Cdigo 8: Ejemplo de definicin de una constante ................................................ 64
Cdigo 9: Ejemplo de funcin bien definida ........................................................... 64
Cdigo 10: Ejemplo de bloque de cdigo correcto siguiendo el estilo de Moodle
..................................................................................................................................................... 65
Cdigo 11: Ejemplos de definicin de cadenas ....................................................... 65
Cdigo 12: Ejemplos de comentarios de lnea y prrafo........................................ 66
Cdigo 13: Ejemplo del uso de espacios para hacer ms claro el cdigo ............ 66
Cdigo 14: Ejemplo de copia correcta de un objeto ................................................ 66
Cdigo 15: Ejemplo de fichero access.php ............................................................... 73
Cdigo 16: Ejemplo de fichero install.xml ............................................................... 76
Cdigo 17: Ejemplo de fichero upgrade.php ........................................................... 77
Cdigo 18: Ejemplo de fichero mod_form.php ....................................................... 80
Cdigo 19: Ejemplo de fichero version.php............................................................. 81
Cdigo 20: Ejemplo de fichero view.php ................................................................. 83
Cdigo 21: Funcin require_capability .................................................................... 84
Cdigo 22: Funcin has_capability ........................................................................... 84
Cdigo 23: Funcin get_context_instance ................................................................ 84
Cdigo 24: Funcin get_users .................................................................................... 85
Cdigo 25: Funcin execute_sql ................................................................................ 86
Cdigo 26: Funcin record_exists ............................................................................. 87
Cdigo 27: Funcin record_exists_select.................................................................. 87
Cdigo 28: funcin record_exists_sql ....................................................................... 87
Cdigo 29: Funcin count_records ........................................................................... 88
Cdigo 30: Funcin count_records_select ................................................................ 88
Cdigo 31: Funcin count_records_sql .................................................................... 88
Cdigo 32: Funcin insert_record ............................................................................. 89
Cdigo 33: Funcin update_record........................................................................... 89
Cdigo 34: Ejemplo aadir lista desplegable ........................................................... 93
Cdigo 35: Ejemplo de cadenas en el fichero de idioma ........................................ 96
Cdigo 36: Recuperacin de cadenas del fichero de idioma ................................. 96
Cdigo 37: Ejemplo de definicin de capacidades ................................................. 98

171
Anlisis del desarrollo de extensiones para Moodle: Desarrollo de un mdulo para la gestin de
laboratorios docentes

Cdigo 38: Ejemplo de cambios en la base de datos .............................................. 99


Cdigo 39: Ejemplo de cdigo XML de backup .................................................... 100

172

Das könnte Ihnen auch gefallen