UNIVERSIDAD DE ALCALÁ

Escuela Técnica Superior de Ingeniería Informática

INGENIERÍA INFORMÁTICA

Proyecto Fin de Carrera

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes

María Jesús García Alba Diciembre 2010 UNIVERSIDAD DE ALCALÁ

Escuela Técnica Superior de Ingeniería Informática

INGENIERÍA INFORMÁTICA

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes
Autor: María Jesús García Alba Director: D. Marcos Marvá Ruiz
TRIBUNAL:

Presidente: D. David Orden Martín

Vocal 1º: Dª Ana Marco García

Vocal 2º: D. Marcos Marvá Ruiz

CALIFICACIÓN:………………… FECHA: ……………………………

.

............................1 Sistemas de Administración de Aprendizaje (LMS).......... 41 4........................................................5 Entorno de Moodle............................................ 48 4............................................................. 42 4............................6 4 Moodle ............................... 35 Estructura de directorios .....Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Contenido 1 2 Resumen .................................................................................. 25 3.... 45 4.......... 13 Las Tecnologías de la Información en la educación ................ 40 4.......3 Datos de Moodle ..........................2 Base de datos de Moodle ........................1 Código de Moodle ..3 Roles ..............5..............................................................5........... 21 La educación superior y las TICS ....................................................................................................................................1 3.................... 9 Introducción ................................................................................................................................7 Control de acceso................ 37 4................. 29 Arquitectura de Moodle .............. inicio de sesión y roles de usuario ................. 34 Sistema operativo ..............................................3 3............ 15 3...............................1 4............. 11 2..... 15 E-learning (Electronic Learning) .........................................5................................................. 26 3.................................2 Sistemas de Administración de Contenidos de Aprendizaje (LCMS) 28 3.................................6..1 3 Objetivos ................................................................................................ 40 4.....................4 3....5 La Web y la educación a distancia ..................... 23 Sistemas de Gestión de Aprendizaje ... 49 4.....................7........................................................................................................................................4 4........................................................................................................1 Actividades ...................................................................2 3....................................................................3 4................5................... 47 4...................... 35 Servidor Web............................6................2 Capacidades ..........................................................5...............................................................1 Permisos .......................................7....................................2 Recursos ........................................................................................................................................ 37 4.................................6 Estructura básica de Moodle.................... 19 B-learning (Blended Learning) ......3 Bloques .... 44 4.6..........................................................................7................ 33 Base de datos .....2 4......... 49 5 ..................................... 33 4........

........ 91 5...........................php ................ 84 5............................... 62 5.......................3 Estilo de la interfaz ...... 97 5................................................................7 Actualización del módulo .....1 accesslib.......................4........................4...............................5....................... 98 5........ 86 5..................1.....php....php ..................1 Formulario de configuración de la instancia ....3 ddllib................................1 Definición del sistema................................................................................................ 98 5.......... 99 6 Módulo de gestión de grupos de laboratorio: Gruposlab ............................. 103 6.............2 Reglas generales.....5 Permisos del módulo ............. 91 5.................................2 Tablas del módulo en la base de datos ................................ 86 5.........4.4..3 Instalación de Moodle ................................................ 94 5...............4 El paquete de idioma .....................2..........................3 Edición de la librería de funciones del módulo ..5 weblib............................1.8 Crear soporte para copias de seguridad y restauración ............ 95 5......................................................................................................1..... 54 5................5.............................5.......php .............................................................4 Librerías para el desarrollo de módulos ..........1 Estilo del código.3 Estructura de un módulo de actividad.................. 62 5.......1 Instalación de Moodle....................... 51 5......................................... 71 5...........1........................................................php ...................................................................1 Ficheros principales................................................................2 Guías de estilo para desarrolladores .............................................3.1 Descripción y planteamiento del problema ........... 69 5..................... 51 5.........4...........2........................... 72 5..................................2 Instalación de requisitos ............ 103 6............... 51 5.................. 92 5... 85 5...............5 Creación de un módulo sencillo ............................................. 53 5...........................2 datalib..................................4 dmllib..........................................1 Requisitos............................................................7 Otras librerías importantes ............... 90 5............................5........4.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5 Desarrollo de un módulo de actividad..............6 Otros ficheros importantes ....5................................ 62 5..........................................5................................................................................5..................... 90 5..............................2......................6 moodlelib..........................5.......... 96 5.............................php ...........................................4...................................................................... 83 5... 103 6 ..........................................

........2 Catálogo de requisitos ........3..........................1 Matricularse en un grupo de laboratorio ............................................1........................... 150 7........2 Desinstalar módulo GruposLab .........6 Especificación del plan de pruebas ...................2 Costes por tiempo de trabajo .......3............................................................ 135 6... 148 7................................................. 104 6.............................................................. 116 6......... 114 6........................................................ 116 6...... 136 7 Manuales de usuario ................................... 141 7....2...4 Definición de interfaces de usuario...1......Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.................................1 Requisitos funcionales ........5 Requisitos de codificación .3.................................2....................................................................................................................................................................... 141 7.1................................................... 145 7.....5 Diagrama de componentes...........1..1......................................... 106 6........................3 Diagramas de flujo ................................... 148 7........................ 106 6..........3.......3......1.......................................................... 155 8............................................................. 126 6..... 141 7.....................3 Configuración particular de cada grupo ...1 Presupuesto de ejecución material ..........................................................................3..............................................1.......................... 115 6...... 141 7. 151 7...........................3 Análisis de la aplicación ............1 Añadir el módulo GruposLab a un curso ................. 155 8. 151 7................................................................... 116 6..................................3...................2 Requisitos de datos............ 130 6............................ 113 6...........1............3 Manual de administrador .........................................................2 Comprobar su grupo de laboratorio ......................1 Costes de sistemas ..............4 Requisitos de Seguridad .........1 Instalar módulo GruposLab ...................... 142 7..................................3 Requisitos de Interfaz ....................3 Identificación de usuarios ......................3......2 Manual del usuario alumno .........2....................... 156 7 ................. 153 8 Presupuesto ....................1 Modelo de datos .............. 106 6............................... 155 8......................2 Descripción general del entorno tecnológico .................................................................2.................2 Modelo de casos de uso ............................................................................ 120 6...........................................2 Configuración general de la aplicación ........................................4 Administrar los grupos de laboratorio ................................2............1 Manual del usuario profesor .....2..2........

................................ 169 Índice de código...........................................2 8...............................................................4 8............................................................. 158 Conclusiones y trabajos futuros ......... 159 Bibliografía ......................... 157 Presupuesto de ejecución por contrata .....5 9 10 11 12 13 Gastos generales y beneficio industrial ..................................................................................3 8........................1......................... 167 Índice de tablas .................. 157 Honorarios facultativos .............. 157 Importe total del presupuesto ......................................................................................................................................................................... 171 8 ................................................Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 8......................................... 163 Índice de ilustraciones ..................3 Coste total de ejecución material .............. 156 8................................................................

se ha redactado una guía que ayudará a los principiantes en la tarea de modificar módulos existentes o añadir nuevas funcionalidades a Moodle. Para ello se ha realizado un módulo para la plataforma de enseñanza virtual Moodle. 9 . se ha recopilado y sistematizado el material de ayuda para desarrolladores disponible en la red. encargado de facilitar esta labor tanto a los alumnos como a los profesores. Asimismo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 1 Resumen En este proyecto de fin de carrera se da una solución al problema del reparto de alumnos en los grupos de prácticas de algunas asignaturas universitarias. Al hilo de esta aplicación.

.

Ofrecen los mecanismos necesarios para que el formador pueda crear y distribuir contenidos. entre la que cabe destacar las plataformas de uso libre o código abierto. 2008). Es un proyecto en desarrollo diseñado para dar soporte a un marco de educación social constructivista (Gómez. 2006). como la ausencia de pagos por licencias comerciales. monitorizar la participación de los alumnos inscritos. así como evaluar su desempeño. En este último punto se centrará el desarrollo del proyecto de fin de carrera. se hace necesario un entorno software adecuado para albergar los contenidos de aprendizaje. Estos sistemas registran usuarios. 2005 citado por Jerónimo. 2008). O la posibilidad de modificar o ampliar el software según las necesidades de la institución. ya que se cuenta con acceso directo al código fuente. Se puede considerar los Sistemas de Gestión de Aprendizaje (SGA) o Learning Management System (LMS) como el software que automatiza la administración de acciones de formación. que cuenta en la actualidad con 44. eliminar o crear nuevos módulos o aplicaciones para adaptar la plataforma a las necesidades formativas de cada institución. en los últimos años. Los grupos de innovación docente del Departamento de Matemáticas de la Universidad de Alcalá (InnovamatUAH y LibreTICS) vienen realizando un esfuerzo 11 . almacenan datos sobre usuarios y proveen de informes para la gestión. Como consecuencia de esta irrupción tecnológica. Moodle es un paquete de software para la creación de cursos y sitios Web basados en internet. organizan diferentes cursos en un catálogo. Dentro de los Sistemas de Gestión de Aprendizaje de código abierto cabe destacar al ya mencionado Moodle (Module Object-Oriented Dynamic Learning Environment) (Moodle. es posible modificar. 2008).org/stats/). 2009). y se ha puesto. como se detallará más adelante. Uno de los principales aspectos que caracteriza a Moodle es su estructura modular.921 sitios y más de 30 millones de usuarios en 208 países del mundo (http://moodle. Estas ofrecen múltiples ventajas a la institución que decida adoptarlas. a la cabeza del mercado de aprendizaje a distancia (Jerónimo. En la actualidad existe una amplia oferta de Sistemas de Gestión de Aprendizaje. (Arribas. Gracias a ella.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 2 Introducción La incorporación de las tecnologías de la información en el aula ha supuesto un cambio en la enseñanza tradicional a nivel metodológico y actitudinal tanto para los profesionales de la enseñanza como para los propios alumnos (Romero.

000 visitas diarias. así como toda la documentación en formato digital se adjuntará mediante un CD a la memoria final. Por un lado. así como la documentación y las librerías de código que provee al desarrollador. El código fuente de este módulo. se estudiará con detenimiento la arquitectura de Moodle. la utilización de Moodle permitirá organizar y programar el trabajo docente de una forma muy ágil. se desarrollará un módulo para gestionar los laboratorios docentes de las asignaturas del departamento de Matemáticas de la Universidad de Alcalá. de forma simultánea. Estos elevadas cifras nos permiten imaginar la importancia que tendrá el módulo desarrollado y los beneficios que reportará a todos los usuarios del Sistema de Gestión de aprendizaje Moodle. Estas actuaciones se han centrado en la utilización de Moodle como herramienta para la gestión de la docencia y. en la adaptación de las asignaturas del departamento hacia el Espacio Europeo de Educación Superior (EEES). Será el propio módulo el que se encargará de repartir los alumnos entre los grupos. generadas por los más de 2. no se considera Moodle como un medio básico de comunicación con los estudiantes. Se realizará una guía o manual para el desarrollador que ayude en la tarea de modificar o desarrollar nuevas extensiones para añadir funcionalidades a la plataforma. Aun así. llamada Fourier y que en su momento constituyó un trabajo de fin de carrera. Por otro lado. cuando se planteó el desarrollar este módulo. de acuerdo a un algoritmo equitativo. un rápido vistazo a la documentación para desarrolladores Moodle puso de manifiesto que la información fundamental se encuentra dispersa. Actualmente la plataforma virtual Moodle del Departamento de Matemáticas cuenta con una media de 12. pero sí una buena herramienta para el auto aprendizaje y la autoevaluación. teniendo en cuenta que los estudios son presenciales. Durante la puesta en marcha de la plataforma Moodle en el Departamento de Matemáticas. e informará a cada alumno de cuál es el grupo en el que se encuentra.500 usuarios registrados en la plataforma y matriculados en cerca de un centenar de cursos correspondientes a asignaturas de diferentes titulaciones.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes para generalizar el uso de las TIC a nivel docente. No obstante. de cara a la implantación del espacio EEES. en el que disfruto de una beca de formación. Una de ellas era el citado módulo para gestionar laboratorios docentes. clara y estructurada. Hasta la fecha. esta tarea era soportada por otra aplicación. seminarios y másteres universitarios. que permitirá a los profesores configurar los grupos de prácticas disponibles y a los alumnos seleccionar varios laboratorios en orden de preferencia. Además. echamos en falta en la herramienta (Moodle) una serie de funcionalidades que serían de utilidad. El párrafo anterior recoge las necesidades a las que responde este proyecto. 12 .

como para el profesor y el alumno. sea incluido en la lista de extensiones no oficiales y pueda ser descargado y utilizado por cualquier institución que lo necesite. 6.1 Objetivos En este apartado se detallan los objetivos generales expuestos en la sección anterior: Organizar y sistematizar la documentación para desarrolladores de Moodle relacionada con el desarrollo extensiones y realizar un módulo para la gestión de los laboratorios docentes del departamento de Matemáticas de la Universidad de Alcalá integrado en la plataforma Moodle. 5. así como la guía de ayuda para el desarrollador de módulos y las conclusiones obtenidas de la realización del trabajo. En cuanto a la estructura de este proyecto de fin de carrera y la metodología empleada. Probar y depurar el módulo obtenido en un entorno educativo real. 8. Con estas ideas en mente. y determinar cuáles podrían ser algunas de las funcionalidades docentes requeridas por el Departamento de Matemáticas que no están cubiertas correctamente por estos módulos. 7. Desarrollar un módulo para la gestión de laboratorios docentes adaptado a las peculiaridades del departamento de Matemáticas de la Universidad de Alcalá. Enviar el módulo de gestión de laboratorios a Moodle. 3. Analizar los distintos tipos de extensiones que se pueden desarrollar para Moodle (Módulos de actividades. Redactar un informe o memoria final que contenga toda la documentación citada en los objetivos anteriores. 4. Más tarde se han estudiado los distintos tipos de extensiones con las que el desarrollador puede colaborar en la modificación o ampliación de las capacidades de la plataforma virtual. estudiando las peculiaridades de cada una y las funcionalidades que pueden ofrecer. bloques. 9. los objetivos específicos planteados son los siguientes: 1. Repasar los módulos estándar de Moodle. Revisar la documentación para desarrolladores que proporciona Moodle. en primer lugar se ha llevado a cabo una breve revisión bibliográfica sobre los temas de enseñanza electrónica y sistemas de gestión de aprendizaje. tanto para el administrador de módulo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 2. Posteriormente se hace un breve estudio sobre los recursos para el desarrollador que proporciona Moodle en su portal Web. temas. Redactar un detallado manual de usuario. para identificar algunas necesidades particulares del departamento que no están cubiertas con estos módulos estándar. 2. así como las distintas librerías de código fuente que incluye.org para que. tras ser aprobado por sus revisores oficiales. Realizar una breve guía que englobe y ordene los recursos ofrecidos por Moodle para ayudar en el proceso de desarrollo de un módulo de actividad. 13 . donde alumnos y profesores puedan contribuir localizando errores y aportando sugerencias. etc). y se han analizado los módulos oficiales que contiene el paquete de descarga de Moodle.

se ha completado esta memoria final donde se recogen los resultados del proyecto. Por último.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes A continuación se ha ejecutado el desarrollo de un módulo para la gestión de laboratorios docentes. 14 . así como las conclusiones a las que se ha llegado tras la realización del trabajo. y al hilo de este desarrollo se ha ido confeccionando una guía o tutorial que servirá como ayuda y referencia al futuro desarrollador de módulos.

la televisión. las grabaciones sonoras. cada vez más valorado. y cambiando a la vez. que nos servirán para definir el contexto en el que se situará la temática del presente proyecto de fin de carrera. 3. El sector educativo ha encontrado en esta tecnología un excelente medio para romper con las limitaciones geográficas y temporales que los esquemas tradicionales de enseñanza-aprendizaje conllevan. 1999) se puede calificar sin duda alguna como el componente fundamental que ha revolucionado y popularizado el uso de Internet. 2001). ocupacionales o físicas no pueden asistir a los cursos en escuelas presenciales tradicionales. revolucionando. a ser un modelo únicamente no 15 . se describirán brevemente las características de la plataforma de código libre Moodle. el concepto de educación a distancia. que puede ir desde ser una actividad complementaria muy concreta y residual en los estudios de primaria y secundaria. no como sustituto de la formación presencial tradicional. Esto ha dado origen a un amplio espectro de aplicaciones como el comercio electrónico. A continuación se examinará la repercusión de las TICS en la educación superior y posteriormente se explicarán los distintos tipos de plataformas de enseñanza virtual con los que cuentan las universidades. Su adopción y uso han sido amplios. ha dado lugar a un modelo conocido como e-formación o e-learning. gracias a ser un medio de difusión y comunicación abierto.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 3 Las Tecnologías de la Información en la educación En este apartado analizaremos una serie de conceptos teóricos relacionados con la influencia de las tecnologías de la información en el ámbito de la educación. que es actualmente se utiliza en el departamento de Matemáticas de la Universidad de Alcalá.1 La Web y la educación a distancia La Web o WWW (World Wide Web) (Berners-Lee. la banca electrónica o los sistemas de entretenimiento en línea. los diferentes servicios de Internet han hecho de la educación a distancia una alternativa para quiénes por limitaciones geográficas. Así. En primer lugar se analizará la necesidad de la Web en la educación a distancia. sino más como un complemento que se ha de adaptar según las necesidades y nivel de madurez del público receptor de esta formación (García y García. flexible y de tecnología muy simple. por mencionar algunos. para después pasar a definir conceptos básicos como e-learning o b-learning. Medios como la radio. el vídeo. el teléfono y. lo que ha permitido un desarrollo rápido y consistente en el que la Web ha ido tomando distintas formas dentro de los procesos educativos. La Web se convierte en la infraestructura básica para desarrollar los procesos de enseñanza-aprendizaje no presenciales. Y por último. al hilo de este apartado. más recientemente.

Puente. Los alumnos pueden consultar información o tener acceso a los contenidos de clase en la Web aunque toda la instrucción se lleva a cabo de manera presencial. Una importante aportación de estas tecnologías a la educación a distancia clásica es la incorporación de los conceptos de formación síncrona y asíncrona (Marcelo. Es lo que se conoce como aprendizaje mixto (blended tradicional . toman cada vez más fuerza y se posicionan como una importante alternativa ante los grandes retos que se avecinan con la integración del sistema universitario al nuevo Espacio Europeo de Educación Superior y el creciente peso de la formación a lo largo de toda la vida. En la formación síncrona se establece una aula relación temporal como la que comúnmente se tienen en un curso en un la Web. La aplicación de las tecnologías Web ha dado origen incluso a aplicaciones dinámicas que permiten la generación de cursos apegados a las necesidades particulares de cada estudiante y a las posibilidades tecnológicas y de contenidos de la Web (Vassileva. 1997). 3. prescindiendo por completo de cualquier componente de la enseñanza presencial tradicional. La Web se ha introducido rápidamente como un recurso de apoyo. Ballesteros & Palazón. Aprendizaje Basado en Web. en este sentido Mena (2004) afirma que ‚en realidad la educación a distancia ha tenido siempre una íntima relación con la tecnología sobre todo con la que la sociedad consideraba hegemónica en cada momento‛. 2. Aggarwal & Bento (2003) sugieren tres formas en las que la Web participa en un proceso de enseñanza-aprendizaje: 1.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes presencial en la formación a distancia o formación continua empresarial. la tecnología Web se impone como la tendencia en el desarrollo de sistemas educativos apoyados por las TIC. Con mayor o menor penetración en cada uno de los modelos. 2002). La Web es un importante apoyo para el acceso a contenidos de los sistemas de enseñanza tradicional. Web para el almacenamiento. las aproximaciones mixtas. de extensión o de sustitución a los esquemas tradicionales de enseñanza presencial o a distancia. Consiste en llevar a cabo todo el proceso educativo a través de la Web. Web para enseñanza en dos medios (mixta). No obstante. La educación a distancia ha tenido un proceso de evolución a la par con las tecnologías que rápidamente han ido surgiendo en las últimas décadas. en el que los participantes deben coincidir en un mismo instante de 16 . que combinan actividades formativas presenciales y no presenciales (o soluciones blended). Muchas instituciones educativas están optando por impartir una parte de la instrucción presencial y otra parte a través de learning). diseminación y recuperación de información.

en un mundo globalizado donde los avances tecnológicos han originado profundas transformaciones tanto en la banca. bibliotecas digitales. Formación bajo demanda. a ciertos niveles y con aplicaciones muy específicas. conocido como e-learning. Enseñanza / aprendizaje a distancia mediante las TIC. comercial y 17 . como en los sistemas financiero. Acceso a través de Internet a recursos y servicios educativos en permanente crecimiento. en los sistemas más básicos. lo cual facilita y abarata el servicio. educativo e incluso comercial. se masifiquen y se globalicen haciendo posible que aplicaciones relativamente sencillas puedan ser utilizadas por individuos dispersos geográficamente y abriendo un nuevo espacio cultural. Vivimos en la sociedad de la información. matrícula y consultas. Sin embargo. debates. o videoconferencias de dos canales en las que el ponente o profesor y los alumnos interactúan en tiempo real. Acceso de todos a la educación. el lugar desde el que los asistentes participen es irrelevante. De acuerdo a un estudio realizado por la Organización para la Cooperación y el Desarrollo Económico OCDE en 2002 estas son las principales ventajas educativas que ofrecen las nuevas tecnologías. 2004). entre otras (Romero & Rubio. si se utilizan las TIC correctamente. la Web ha permitido que las posibilidades de educación.       Independencia en tiempo y en espacio: aprender en cualquier sitio y momento. pueden acceder al sistema cuando les sea conveniente. para consultar los materiales y para participar en las diversas actividades programadas. en la práctica el modelo más socorrido es el asíncrono y lo más común es encontrar sistemas con herramientas que permiten ambos tipos de comunicación. En la formación asíncrona los asistentes no necesariamente tienen concurrencia temporal. Potencial para un aprendizaje basado en tareas utilizando software rápido de búsquedas y recuperación. Sin lugar a dudas. En ambos casos. o para el trabajo de investigación. A pesar de que el aporte de las TIC ha sido la interacción a distancia en tiempo real. pueden generar grandes beneficios también a la educación presencial. pero con el inconveniente de altos costos y poca masificación (Romero & Rubio. Por ejemplo se puede mencionar a los campus virtuales que dan la posibilidad de acceder a materiales y conexión con los profesores por e-mail.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes tiempo. o por emulaciones de campus presenciales con funciones más sofisticadas como foros. 2004). como es el caso de las aulas de videoconferencia de una sola vía en la que la comunicación se establece sólo del ponente al receptor.

Autoevaluación y monitorización del rendimiento del alumno. Servicios y materiales de enseñanza personalizados. copiado. El entrenamiento basado Web (Web Based Training o WBT). Estas permiten crear un entorno virtual de aprendizaje con mucha facilidad. Es un legado de la humanidad que no tiene propietario. Suele estar disponible gratuitamente en Internet. según el mismo estudio de la OCDE antes citado:       Elección del estilo de enseñanza. Comunicación interactiva entre los agentes que participan o influyen en los procesos educativos. 2001). La incorporación de las TIC en el aula ayuda a mejorar los siguientes aspectos educativos. puede ser usado. Acceso interactivo a recursos didáctico. Existe una variedad bastante grande de licencias de software libre que podemos dividir en dos grandes familias. 2005). es una de las tecnologías más utilizadas por su facilidad de implementación. El software libre es propiedad de todos: cada persona en el mundo tiene derecho a usar el software. ¿Por qué creemos que la educación puede sobrevivir sin hacer ninguna de esas transformaciones y sin utilizar ninguna de las herramientas tecnológicas. Podemos definir una LMS como un sistema que organiza las actividades de formación dentro de una institución (Join. modificarlo y copiarlo de la misma manera que los autores de este mismo. El software libre es el software que. modificado y redistribuido libremente. una vez obtenido. Seguimiento y registro individual de los procesos educativos. sin necesidad de ser expertos programadores. Una de ellas está compuesta por las licencias que no 18 . Una alternativa factible es utilizar plataformas LMS basadas software libre. 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). 2005). Además de superar las barreras de espacio y las limitaciones de horarios rígidos y establecidos de la educación tradicional. No existe un monopolio y no es necesario pagar peaje por su uso (Hernández. que la gente usa para desarrollar transformaciones en todos los demás sistemas? (Escorcia. La plataforma comercial más popular es Blackboard.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes productivo de todo el mundo. de la misma manera que las leyes básicas de la física o las matemáticas. En los últimos años ha evolucionado de manera acelerada. estudiado.

Es un sistema muy flexible que funciona prácticamente en cualquier plataforma y muy fácil de administrar y operar. 19 . En el glosario de términos de la American Society of Training and Development (Kaplan-Leiserson. Estas licencias son las que llamaremos licencias permisivas. que al estilo de la GNU GPL. que denominaremos licencias robustas o licencias copyleft. que hacen uso de los servicios y facilidades de Internet para hacer posible el proceso de enseñanza-aprendizaje. que se distribuye bajo licencia GNU y que está actualmente viviendo una fase explosiva de expansión. (Join. ya que le permite hacer casi lo que quiera con él. pero no imponen condiciones especiales para éstos casos.2 E-learning (Electronic Learning) Actualmente. Moodle es una de las plataformas LMS de software Libre más populares. tales como aprendizaje basado en Web. que sólo especifican que el software se puede redistribuir o modificar. y como tal. en su concepto m{s amplio puede comprender cualquier actividad educativa que utilice medios electrónicos para realizar todo o parte del proceso formativo. el segundo obliga a que las sucesivas modificaciones y redistribuciones respeten los términos de la licencia original. 3. Su comunidad de usuarios y desarrolladores es muy numerosa y se caracteriza por su entusiasmo respecto al sistema. intranet/extranet. aprendizaje basado en computadora. la modalidad más innovadora en la educación a distancia basada en Web son los sistemas o entornos e-learning. La otra familia. Por eso resulta conveniente utilizar Moodle como entorno virtual de aprendizaje para apoyar y enriquecer la enseñanza tradicional. TV interactiva. 2005). 2010) se encuentra la siguiente definición: ‚e-learning (electronic learning): Término que cubre un amplio grupo de aplicaciones y procesos. imponen condiciones en caso de que se quiera redistribuir el software. condiciones que van en la línea de forzar a que se sigan cumpliendo las condiciones de la licencia después de la primera redistribución. transmisiones vía satélite. Mientras que el primer grupo hace énfasis en la libertad de quien recibe un programa. aulas virtuales y colaboración digital. lo que conlleva por ejemplo. CD-ROM y m{s‛. Moodle es un proyecto inspirado en la pedagogía del constructivismo social. Diferentes autores definen el concepto de e-learning de muy diversas formas. e-learning se traduce como ‚aprendizaje electrónico‛. que alguien que reciba el programa pueda después redistribuirlo como software propietario. Si se toma como referencia la raíz de la palabra. Incluye entrega de contenidos vía Internet. solo en términos de las redistribuciones siguientes. según la idiosincrasia y el ámbito de aplicación en el que se está utilizando.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes imponen condiciones especiales en la segunda redistribución esto es. audio y videograbaciones.

La impartición de un curso también puede llevarse a cabo de forma combinada. como Rosenberg (2001) que lo define como: ‚… el uso de tecnologías de Internet para la entrega de un amplio rango de soluciones que mejoran el conocimiento y el rendimiento. de forma parcial o global. 3. con una parte basada en e-learning y otra en los métodos tradicionales. Está basado en tres criterios fundamentales: 1. las que se utilizan para la gestión de los contenidos digitales. Se enfoca en la visión más amplia del aprendizaje que va más allá de los paradigmas tradicionales de capacitación‛.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ésta es una definición que abre el rango del e-learning prácticamente a cualquier proceso relacionado con educación y tecnologías. Llegar a una operación e integración en la que todos los componentes involucrados (personas y sistemas) realicen sus tareas. se hace uso de plataformas o sistemas de software que permiten la comunicación e interacción entre profesores. interactúen y obtengan los resultados deseados es una labor compleja que requiere de esfuerzos importantes para lograr la comunicación y la transmisión de información. De esta flexible combinación en la 20 . almacenado. dándose lo que se conoce como blended learning (Thorne. alumnos y contenidos. esto es debido a que la capacitación basada en computadoras o CBT (Computer Based Training) tuvo su origen en la industria. En la práctica. Se tienen principalmente dos tipos de plataformas: las que se utilizan para impartir y dar seguimiento administrativo a los cursos en línea y. sin embargo. lo que lo hace capaz de ser instantáneamente actualizado. distribuido y permite compartir instrucción o información. Sin embargo. Los entornos e-learning son complejos ‚ecosistemas‛ en los que intervienen usuarios con distintas habilidades y objetivos. Ambas plataformas las estudiaremos con más detalle en apartados posteriores. por otro lado. el e-learning se aplica más allá de los paradigmas tradicionales de capacitación y cubre las aplicaciones más amplias de los modelos de enseñanza-aprendizaje. para llevar a cabo un programa de formación basado en elearning. recuperado. sistemas de diversas aplicaciones con tecnologías heterogéneas y contenidos digitales de formas y formatos diversos. 2003). entre aplicaciones y organizaciones. como la definición dada lo ha propuesto anteriormente. otros autores acotan más el alcance del e-learning reduciéndolo exclusivamente al ámbito de Internet. El e-learning trabaja en red. 2. Es común encontrar referencias del uso de e-learning enfocado sólo a la empresa. Es entregado al usuario final a través del uso de ordenadores utilizando tecnología estándar de Internet.

Es decir. Desde este punto de vista el elearning no viene a desplazar a los modelos tradicionales. sino que es un medio alternativo o complementario para poder impartir educación a los sectores que antes no eran accesibles. Este modelo permite permanecer menos tiempo en el aula. 2005). como para los propios alumnos. sigue una tendencia con una marcada raíz procedente del campo de la psicología escolar en la que destaca el término ‚aprendizaje‛ como contrapuesto al de ‚enseñanza‛ (Bartolomé. se puede traducir al castellano como Aprendizaje Mixto. Durante años hemos estado combinando las clases magistrales con los ejercicios. Blended learning no es un concepto nuevo. para retención en el aprendizaje y para proveer un útil depósito de los materiales del curso. Para Bartolomé (2004) la idea clave es la selección de los medios adecuados para cada necesidad educativa. El término ‚blended learning‛. 3. se trata de un modelo ecléctico compuesto por instrucción presencial y funcionalidades del aprendizaje electrónico o e-learning. Es decir. muchas organizaciones están extrayendo beneficios para los alumnos y para las organizaciones. 2004). Actualmente.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes que los cursos se imparten de forma mixta. Cuando la instrucción tradicional en el aula es combinada con tecnología Web. (Rosas. con la finalidad de potenciar las fortalezas y disminuir las limitaciones de ambas modalidades. juegos de rol 21 . los estudios de caso. (Belanger y Jordan. con la finalidad de potenciar las fortalezas y disminuir las limitaciones de ambas modalidades. Los beneficios que la Web provee pueden ser utilizados para preparar estudiantes antes de la clase. propicia un potencial ahorro de espacios físicos e incrementa la participación de los estudiantes como responsables de su propio aprendizaje entre otros beneficios. (Romero. 2000). es uno de los segmentos más populares y de más extenso crecimiento en la educación superior. se trata de un modelo compuesto por instrucción presencial y características del aprendizaje electrónico o e-learning. sino de reemplazar algunas actividades de aprendizaje con otra apoyadas con tecnología.3 B-learning (Blended Learning) La incorporación de las TICs en el aula ha supuesto un cambio en la enseñanza tradicional a nivel metodológico y actitudinal tanto para los profesionales de la enseñanza. 2006). Recientemente esta innovación ha dado lugar a un nuevo modelo denominado b-learning (Blended Learning). se le conoce como ‚inserción de tecnología‛ o Mejoramiento en Web. donde no se trata solo de agregar tecnología a la clase.

En este sentido. De acuerdo a estudios realizados por Bartolomé (2004). Constructivismo: atención a la construcción de los conocimientos basado en el esfuerzo individual (por ejemplo. para ejercer su labor en dos frentes: como tutor on-line y como educador tradicional. 2003). Humanismo: atención a diferencias individuales y al trabajo colaborativo (por ejemplo. Por ejemplo en la Universitat de Illes Balears. tutoriales). Blended learning no surge del e-learning sino de la enseñanza tradicional ante el problema de los elevados costos. Por lo tanto. pero usa en beneficio propio el material didáctico que la informática e Internet le proporcionan. esta modalidad de aprendizaje combinado no descansa en un único modelo. podríamos identificar las siguientes teorías:   Conductismo: atención a ejercicios de tipo mecánico con retroalimentación inmediata (por ejemplo. Dodge (2001) planteó que el blended learning involucra poner a los estudiantes 22 . También se utilizan términos como enseñanza semipresencial. y aunque se enfatiza la centralidad del estudiante. En b-learning el formador asume de nuevo su rol tradicional. Más aún. se han dado otras denominaciones a modalidades del mismo tipo en diferentes contextos. sino que más bien supone un enfoque ecléctico orientado a la reflexión crítica como componente esencial. exploración). Quizá el termino sea lo más novedoso. exploración en bibliotecas virtuales.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes y las grabaciones de vídeo y audio. dotando así a la formación online de una gran flexibilidad. estilos y ritmos de aprendizaje). por no citar el asesoramiento y la tutoría‛ (Brodsky. estudio de casos)   Cognitivismo: atención a las estrategias de aprender a aprender y capacidad indagativa de los estudiantes (por ejemplo. formación mixta y en la literatura anglosajona se utiliza el término Modelo Híbrido. Utilizando un buen sistema de gestión de aprendizaje y con un programa de formación continua bien fundamentado para el personal docente tanto en los aspectos metodológicos como en los técnicos. Sin embargo también se puede justificar la implantación de este modelo por razones de pertinencia y de calidad en la educación. La forma en que combine ambas estrategias depende de las necesidades específicas de ese curso. con sesiones presenciales. Tanto el aprendizaje electrónico (e-learning) como el aprendizaje combinado (blearning) tiene sus fundamentos en las teorías del aprendizaje y su aplicación al uso de medios tecnológicos. se describe como Educación Flexible el sistema en donde se aprovechan sistemas virtuales como la videoconferencia o la web. es posible incorporar gradualmente esta modalidad de enseñanza en la Educación Superior.

Así. Son instituciones que todavía no creen de manera decidida en la aportación de estas nuevas prácticas al conjunto de la educación universitaria. A través de programas de promoción i/o innovación. Sin embargo estos dos modelos expresados anteriormente.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes en diversas situaciones en las cuales han de interactuar. la investigación y la gestión. Penn State continúa siendo una buena 23 . Hoy en día. pues incrementa la motivación. Hay otros dos modelos que pueden resultar más interesantes. tal como las califican Tait y Mills (1999) ya han comenzado a reaccionar. y siguiendo el símil cinematogr{fico. Uno de los buenos ejemplos en este sentido puede ser la Penn State University norteamericana. ‚solo ante el peligro‛. el salto cualitativo realizado por algunas universidades a distancia. conscientes de la importancia que el uso de las TIC puede tener para no quedar rezagados respecto otras universidades. 3. y el aprendizaje significativo (Sutton. hay otras instituciones universitarias que. sino también el aprendizaje que pueda venir de la mano de experiencias de educación a distancia. si se quedan ahí. experimente y valore qué se podría hacer. es difícil que puedan obtener resultados relevantes. la interacción en un ambiente de aprendizaje combinado es un importante componente del proceso cognitivo. Si bien es cierto que no existen indicios suficientemente científicos para apoyar esta idea. Es lo que Bates (2000) ha denominado el ‚imperativo tecnológico‛. Por otro lado. ponen a su disposición recursos para su experimentación y posterior evaluación. Estos tienen muchas posibilidades de desarrollar sistemas coherentes que les permitan alcanzar objetivos mucho más ambiciosos. a dónde se podría llegar y cómo debería hacerse. 1999). ‚impulsan‛ su uso entre su profesorado. una actitud positiva hacia el aprendizaje. ha permitido que algunas instituciones de educación superior hayan salido de su letargo y estén dispuestas también a aprovechar al máximo no sólo lo que les ofrecen las TIC. la reacción de las universidades convencionales tiene formalizaciones bien distintas. En este sentido. Por un lado. Uno es el de aquellas universidades que han elaborado un plan estratégico para la incorporación de las TIC en su institución. las universidades ‚convencionales‛. según diversos autores. en los distintos ámbitos de la docencia. Prefieren establecer un periodo de prueba en el cual sea su profesorado quien explore. que ya en 1997 elaboró un plan de estas características.4 La educación superior y las TICS A todo esto. nos estamos encontrando universidades que simplemente ‚permiten‛ el uso de las TIC a su profesorado en su labor docente cotidiana. El mayor riesgo que existe es el de desarrollar el modelo del ‚Llanero Solitario‛ en el cual el profesorado va a sentirse a menudo. si no avanzan de manera cualitativamente significativa.

A saber. las TICs representan uno de los principales factores de cambio de las instituciones de educación superior. como si en realidad el dilema fuera presencial/no presencial. Los modelos aquí planteados. algunas intentan simplemente asimilar la capacidad de evolución o revolución. se trata simplemente de competir con la virtualidad. Finalmente. existen aquellas universidades que han optado por crear sus propias versiones virtuales. Pues. Por tanto. Al mismo tiempo. El blended learning o aprendizaje combinado es una estrategia consolidada a día de hoy en nuestro país. partiendo de la base que la buena formación solo puede ser de carácter presencial. en relación al uso de TICs. de la aplicación de las TIC y. algunas universidades observan esta situación como una gran oportunidad para situar el uso de las TIC y el uso de la virtualidad como un elemento diferencial de valor añadido. En otros casos. factor clave para la innovación y la mejora de la calidad educativa en sus instituciones (b-learning). identifican estrategias distintas respecto a su relación con la educación a distancia y/o con la virtualidad. relacionadas con programas de 24 . Sin embargo. En este contexto. y la globalización de la educación superior. de los sistemas de educación a través de entornos virtuales. como lo indica el Informe Bricall 2000. a nivel nacional. mediante el establecimiento de fundaciones o empresas que van a gestionar esos contenidos virtuales de forma independiente de la institución matriz. una buena universidad a distancia y su WorldCampus virtual está consiguiendo ya un cierto prestigio académico. en concreto. según se mire. ‚en la educación superior los cambios se producen. entendiendo como comercialización la oferta de cursos online en distintas universidades. Finalmente. que merecen nuestra atención están postgrado y de educación continua. o de cubrir o no cubrir con oferta la demanda social ahora existente (i. e-learning/no e-learning. sin ser exhaustivos. favorecen la comercialización. esa es la cuestión). más lentamente. el proceso de adaptación a este tipo de educación se ha llevado a cabo de forma lenta y constante durante los últimos diez años.e. así como un nuevo modelo de gestión de su organización. algunas experiencias. por el momento. éstas auguran en el campo educativo la progresiva desaparición de las restricciones de espacio y de tiempo en la enseñanza y la adopción de un modelo de aprendizaje más centrado en el estudiante. aunque no por ello son menos importantes. Según el Informe Bricall (2000).Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes universidad presencial.

El segundo gestiona el desarrollo de contenidos. podemos afirmar que la introducción de TICS en la educación superior genera oportunidades de desarrollo en los siguientes ámbitos:  Modelo pedagógico: Se pasa de un paradigma centrado en la enseñanza a un paradigma centrado en el aprendizaje. se evidencia cierta resistencia en el estamento académico por asumir este importante cambio. ya que el primero gestiona la parte administrativa de los cursos así como el seguimiento de actividades y avance del alumno. con énfasis en los estilos y ritmos del proceso cognitivo y en la construcción colaborativa de los conocimientos. b-learning).Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes En este contexto. Sin embargo. aunque se observa un esfuerzo en las instituciones de educación superior por incorporar TICs en los ámbitos mencionados.5 Sistemas de Gestión de Aprendizaje Tanto los LMS (Learning Management System) como los LCMS (Learning Content Management System). Estrategias de investigación: Se favorecen las relaciones en tiempo real entre investigadores y/o grupos de investigadores. que veremos en los apartados siguientes. 3. sin restricciones de distancia. sino que cualquier sistema de gestión de aprendizaje puede adaptarse a las necesidades educativas concretas de cada institución. En el entorno educativo. se pueden generalizar como sistemas de gestión de aprendizaje. que paradójicamente actúa como garantía de control para un buen gobierno institucional (Duart & Lupiáñez.    Oferta educativa que traspasa fronteras: Se posibilita la entrega del servicio educativo fuera del territorio nacional de las instituciones. los más comunes son los LMS ya que la complejidad de los LCMS los ha llevado a un desarrollo más lento. esta resistencia puede entenderse como una cualidad propia de las personas y de las instituciones. 25 . Es más. 2005). Esto supone incorporar las TICs como parte del plan estratégico de las instituciones. tanto en los aspectos técnicos como éticos de la estrategia tecnológica. con lo cual se posibilita su debida socialización y capacitación de los docentes y administrativos. Gestión institucional: Se agiliza la toma de decisiones y su comunicación y/o socialización con la comunidad educativa. su acceso y almacenamiento. Debemos tener en cuenta que una determinada herramienta (LMS o LCMS) no está directamente ligada a un paradigma educativo concreto (e-learning.

Avgeriou. así como dar seguimiento a su propio progreso con datos estadísticos y calificaciones. como se puede ver en la imagen que se presenta a continuación. asignar cursos a un alumno. los foros. Papasalourus & Retalis (2001) distinguen como grupos funcionales de los sistemas de aprendizaje: gestión de cursos. registrar profesores. las videoconferencias y el chat.1 Sistemas de Administración de Aprendizaje (LMS) Entre las herramientas más utilizadas para los ambientes o sistemas e-learning están los Sistemas de Administración de Aprendizaje o LMS. herramientas para los estudiantes. utilizando los servicios de comunicación de Internet como el correo.5. Los LMS también facilitan el aprendizaje distribuido y colaborativo a partir de actividades y contenidos preelaborados.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 3. también ampliamente conocidos como plataformas de aprendizaje. simplificando el control de estas tareas. Un LMS es un software basado en un servidor Web que provee módulos para los procesos administrativos y de seguimiento que se requieren para un sistema de enseñanza-aprendizaje. Ilustración 1: Sistemas de Administración de Aprendizaje (LMS) 26 . gestión de clases. El alumno interactúa con la plataforma a través de una interfaz web que le permite seguir las lecciones del curso. realizar las actividades programadas. herramientas de evaluación y gestión de la institución educativa. gestión del contenido. de forma síncrona o asíncrona. configurar cursos. comunicarse con el profesor y con otros alumnos. herramientas de comunicación. En los LMS los módulos con funciones administrativas permiten. llevar informes de progreso y calificaciones. matricular alumnos. por ejemplo.

Comezaña y García (2005) presentan una comparativa en la que analizan las características de las últimas cuatro plataformas nombradas. 2001). Primero.info/item_list. Como contenidos se consideran aquéllos de formato digital.jsp?pj=4). Este análisis comparativo refleja el desarrollo actual de las plataformas y el gran número de opciones que se encuentran en este competitivo mercado. De software libre las más reconocidas son Moodle y Claroline. pero en general todas cuentan con funciones básicas como las que se han mencionado. especificaciones técnicas: hardware/software y precio/licencia. para la construcción de los LMS. como son 27 . Podemos realizar nuestra propia comparativa con la herramienta EduTools (http://www. Entre las plataformas comerciales más comunes se encuentran Blackboard. las funcionalidades para evaluación y los aspectos generales de seguridad y concluyen que. En dicha comparativa consideraron las herramientas disponibles de cada plataforma. Ilustración 2: Plataformas de enseñanza virtual más comunes Algunos LMS se han desarrollado con base a ciertos estándares y están preparados para comunicarse unos con otros y para compartir contenidos. que nos permite seleccionar hasta 10 plataformas de un total de 40 para después mostrarnos detalladamente las características de cada una de ellas. herramientas de soporte: administración. Es importante resaltar que un LMS no se involucra con la creación.edutools. productividad y participación del alumno. manejo de los cursos y diseño curricular. En la imagen anterior se presenta un listado de los productos que Edutools ha evaluado y han cumplido con la característica ‚Instructional Standards Compliance‛ que se refiere a que han incluido alguna de las especificaciones para la importación y/o exportación de contenidos. reutilización. y tercero. los aspectos técnicos son los que más se han cuidado.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes La complejidad y las capacidades de las plataformas varían de un sistema a otro. administración o mantenimiento de los contenidos (Rengarajan. WebCT2 y EduStance. analiza herramientas para el aprendizaje: comunicación. segundo.

administrar y almacenar recursos educativos (como los objetos de aprendizaje) y cursos en línea (Rengarajan.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes los diferentes tipos de documentos electrónicos. se define LCMS como un sistema basado en Web que es utilizado para crear.5. imágenes. Los LCMS siguen el concepto básico de los CMS. animaciones. aprobar. y han sido utilizados principalmente en publicaciones periódicas (artículos. 3. simulaciones. que es la administración de contenidos. textos. multimedia.2 Sistemas de Administración de Contenidos de Aprendizaje (LCMS) Los Sistemas de Administración de Contenidos de Aprendizaje o LCMS (Learning Content Management Systems) tienen su origen en los CMS (Content Management System) cuyo objetivo es simplificar la creación y la administración de los contenidos en línea. etcétera). etcétera. pero enfocados al ámbito educativo. informes. administrando y concentrando únicamente recursos educativos y no todo tipo de información. vídeos. En la mayoría de los casos lo que hacen los CMS es separar los contenidos de su presentación o estilo en pantalla y también facilitar un mecanismo de trabajo para la gestión de una publicación web. fotografías. Los principales usuarios 28 . publicar. 2001). Ilustración 3: Sistemas de Administración de Contenidos de Aprendizaje (LCMS) En esencia.

Es decir. 3. 29 . Libertad 1: la libertad para estudiar el funcionamiento del programa y adaptarlo a tus necesidades –el acceso al código fuente es condición indispensable para esto. que pueden ser utilizados de manera independiente o directamente asociados a la creación de cursos dentro del mismo sistema. los profesores que utilizan los contenidos para complementar su material de clase e incluso los alumnos en algún momento pueden acceder a la herramienta para desarrollar sus tareas o completar sus conocimientos. como se puede ver en la imagen anterior. distribuido como software libre y compatible con estándares e-learning y b-learning para la exportación e importación de contenidos con otras plataformas y con Repositorios de Objetos de Aprendizaje. De acuerdo con Stallman (2004). que les pueden ser de utilidad para reforzar lo aprendido sobre algún tema. el repositorio puede estar disponible para que los profesores armen los cursos.6 Moodle Moodle es un paquete de software libre para la creación de cursos y sitios Web basados en Internet. Consiste en un proyecto diseñado con la filosofía de la educación social constructivista. El proceso de trabajo dentro de un LCMS requiere de control en cada fase del contenido. estudiar. Software libre es cualquier programa cuyos usuarios gocen de estas libertades. pero también pueden estar abiertos para que cualquier usuario recupere recursos no vinculados a ningún curso en particular. cambiar y mejorar el software. esto conlleva un proceso editorial para controlar la calidad de los contenidos creados y para permitir y organizar su publicación. entre los productos más comunes se encuentra ATutor. El mercado de los LCMS es mucho más reducido que el de los LMS. Libertad 3: la libertad para mejorar el programa y luego publicarlo para el bien de toda la comunidad –el acceso al código fuente es condición indispensable para esto. con software libre nos referimos a la libertad de los usuarios para ejecutar.   Libertad 2: la libertad para redistribuir copias y ayudar así a tu vecino. distribuir.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes son los diseñadores de cursos que utilizan los contenidos para construir dichos cursos. 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 propósito. 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. copiar.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes El software libre aplicado a contextos educativos, ofrece posibilidades que pueden favorecer el proceso de enseñanza-aprendizaje en función de los destinatarios, de sus necesidades, su nivel de formación ya que puede ser modificado y adaptado en función de nuestros intereses y de los objetivos que persigamos. (Romero, 2006). Moodle se encuadra dentro de la categoría de los LMS, y puede ser utilizado tanto para desarrollar cursos completamente on-line siguiendo la metodología del elearning, como para complementar la educación presencial haciendo uso tan solo de las herramientas que el profesor considere oportunas para facilitar sus clases (metodología b-learning). La palabra Moodle es el acrónimo de Modular Object-Oriented Dynamic Learning Environment (Ambiente de Aprendizaje Modular Orientado a Objetos Dinámicos). Se distribuye gratuitamente bajo licencia GPL de GNU. Entre las características más importantes de la plataforma Moodle a nivel técnico destacan las siguientes: 1. Su diseño 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 actualización desde una versión 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 pedagógico Moodle ofrece funcionalidades bastante atractivas para los docentes, como las siguientes: 1. Promueve una pedagogía constructivista social. Dado el carácter colaborativo de las herramientas utilizadas en él y la filosofía de trabajo en la que se sustenta. 2. Es adecuado para la enseñanza únicamente a través de la Red como para complementar la enseñanza presencial. 3. Cuenta con un interfaz atractivo, de tecnología sencilla, ligera eficiente y compatible. 4. Permite el acceso de invitados a los cursos. 5. Los cursos son clasificados en categorías, lo que facilita su búsqueda. 6. Es fácil de instalar, por lo que no precisa un nivel avanzado de conocimientos informáticos para proceder a su implementación.

30

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 7. Un sitio Moodle puede albergar miles de cursos y estos pueden ser clasificados en distintas categorías. Moodle se rige por una filosofía basada en la teoría constructivista, sustentada en la idea de interacción con los demás y a través de la conexión de conocimientos nuevos con aprendizaje previamente adquirido. Conectando la estrategia didáctica del profesorado con las ideas previas del alumnado, ‚construyendo‛ de manera sólida 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 diseñadores de cursos la construcción de foros, chats, lista de correo, glosarios, bibliotecas, autoevaluaciones y demás funcionalidades. Los recursos disponibles en Moodle se pueden clasificar en tres categorías: Recursos Transmisivos, Recursos Interactivos y Recursos Colaborativos. A estas tres categorías también podemos añadir las herramientas de comunicación.  Recursos transmitivos: Se refiere a todos los módulos, recursos, actividades en Moodle que tienen como función principal la de transmitir información. El profesor se establece prácticamente en emisor único. Los alumnos, en receptores. Lo más usual es que estos contenidos estén constituidos por algún tipo de texto más o menos estructurado con apoyo de imágenes, esquemas. Vienen a ser lo que en la enseñanza tradicional llamamos libros de texto, apuntes, manuales didácticos, 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 más que un enlace a cualesquiera de los recursos materiales que puedan representarse por un archivo electrónico. Documentos de texto, presentaciones con diapositivas, archivos de imagen, programas de ordenador ejecutables, archivos de CAD, archivos de audio y vídeo, etc. pueden constituir un recurso. Los recursos transmisivos disponibles en Moodle son: Página de texto, Página Web, Enlace a archivo o Web, Directorio, Etiqueta y Libro.  Recursos interactivos: Estos recursos se centran más en el alumno, quien tiene determinado control de navegación sobre los contenidos. Cuanto menos lineales sean los contenidos y la propia navegación, mayor interactividad habrá. Se pone el peso, por lo tanto, en definir el sistema por el cual el que aprende accede a la información 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

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes interacción y el intercambio de ideas y materiales tanto entre el profesor y los alumnos como de los alumnos entre sí (Gómez, 2006) Moodle incluye las siguientes herramientas colaborativas: Foros, Talleres y Wikis.  Herramientas de comunicación: Uno de los propósitos principales de la plataforma Moodle consiste en facilitar y enriquecer la interacción entre todos los miembros de la comunidad (estudiantes entre sí, profesores entre sí y entre alumnos y profesores). Por ello las herramientas de comunicación son básicas. Para Gómez (2006) no resulta conveniente integrarlas dentro de los recursos transmitivos, colaborativos o interactivos, más bien considera las herramientas de comunicación un requisito para que las otras tres funcionen adecuadamente. Las herramientas de comunicación disponibles en Moodle son: Correo electrónico, Chats, Mensajes, Consultas y Encuestas. Utilizando Moodle como Entorno Virtual de Aprendizaje obtendremos un sistema flexible donde, además 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 características 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 según las necesidades de la institución de enseñanza que la adopte. De la misma forma también es posible instalar nuevos módulos que añadan funcionalidad al sistema, bien descargándolos desde la página oficial de módulos no estándar de Moodle o bien desarrollándolos a medida. El proceso de desarrollo de un módulo no es complejo, pero requiere conocer un poco más a fondo la arquitectura y el funcionamiento interno del sistema. Por ello, antes de lanzarnos al desarrollo de un nuevo módulo, en el siguiente capítulo estudiaremos con detenimiento dicha estructura interna de Moodle.

32

para posteriormente centrarnos en la estructura de directorios del sistema. en primer lugar repasaremos las características del entorno técnico en el que se asienta Moodle. La modularidad se convierte en una importante característica que permite reducir la cantidad de tiempo empleada en realizar modificaciones cuando se lanzan nuevas versiones de Moodle. base de datos y servidor Web. Esto permite al desarrollador realizar importantes modificaciones a la plataforma sin necesidad de cambiar el código fuente. A continuación repasaremos los principales tres tipos de módulos que se pueden desarrollar para Moodle: actividades.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 4 Arquitectura de Moodle Moodle significa Modular Object-Oriented Dynamic Learning Environment (Entorno de enseñanza dinámico orientado a objetos modular). Apache. que se deben tener muy en cuenta a la hora de programar una extensión. la ‚M‛ de Moodle contiene un concepto muy importante. ya que Moodle. Desde la perspectiva del programador. Para ello. que utilizan una base de datos SQL para almacenar información. MySQL y PHP). han surgido dos nuevos términos: WAMP y MAMP. 4. y terminaremos el apartado introduciendo los roles de usuario y el control de acceso. Se trata fundamentalmente de aplicaciones web escritas con un lenguaje de script. cómo está estructurado y cómo funciona. En la siguiente figura se muestran los componentes del sistema en Moodle. En este apartado se introducirán algunos de los conceptos más importantes relacionados con la arquitectura de Moodle. está diseñado de forma modular. en su totalidad. 33 .1 Entorno de Moodle Moodle es un ejemplo de aplicación LAMP (Linux. recursos y bloques. deteniéndonos especialmente en los requisitos de sistema operativo. Con el incremento de la popularidad de ejecutar aplicaciones web de código abierto en Windows y en Mac OS X.

2. 4. utilizando una interfaz de programación consistente. Las instalaciones de MySQL y Oracle se usan principalmente en organizaciones con una inversión previa en uno de 34 .9) requiere la versión de PHP 4.2 Base de datos La capa de base de datos en Moodle ha sido escrita utilizando la librería de PHP ADOdb. que fue creada para proporcionar un método estándar de acceso a varios sistemas de bases de datos. que por este motivo tienen menos fallos y cuentan con el conjunto más amplio de extensiones de terceros. actualmente en desarrollo. Microsoft SQL y Oracle. PostgreSQL es la segunda base de datos más popular y tiene un fuerte seguimiento entre los entusiastas del rendimiento y los grandes sistemas (decenas de miles de usuarios).8 o superior. Gracias al uso de ADOdb. necesitará la versión de PHP 5. por lo que se presta más atención a las instalaciones de MySQL.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 4: Entorno LAMP Moodle está escrito en PHP. entre las que se incluyen: MySQL. Moodle soporta una lista mucho más larga de bases de datos para la integración de sistemas externos. Las librerías de bases de datos nativas en PHP son específicas de una base de datos. en la práctica la mayoría de los sistemas están desplegados utilizando MySQL. Moodle proporciona soporte para varias bases de datos. utilizando la arquitectura de extensiones de la plataforma. La versión 2. Aunque Moodle proporciona soporte para muchas bases de datos. PostgreSQL. y la versión actual (versión 1.0 o superior para funcionar.3. por lo que es difícil usarlas para escribir un programa que soporte múltiples servidores de bases de datos.0 de Moodle.

Internet Information Services (IIS) es otro servidor web muy popular para alojar Moodle.9 y para Moodle 2. sin embargo. Moodle. También es más difícil encontrar un buen soporte para utilizar estos tipos de bases de datos con Moodle.0 Microsoft SQL 9. tenemos que conocer el tipo de arquitecturas con las que serán usadas 35 . Es extremadamente popular su uso en entornos virtuales (VMware. el servidor web más usado es Apache.0 Oracle 9. como aplicación web. es bastante complicado. Mac OS X y Windows tienen un menor rendimiento en desarrollos a gran escala.16 PostgreSQL 8. cualquiera de estos tres sistemas operativos se puede usar como una excelente plataforma. Algunos módulos añadidos de terceros no funcionan bajo estos sistemas sin un parche. tiene sus propias limitaciones de soporte y desarrollo. En la práctica.4 Servidor Web Moodle normalmente trabajará con cualquier servidor web que soporte la versión apropiada de PHP. 4. Moodle es muy eficiente realizando este trabajo.org/forums/).Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes estos sistemas. En Windows se debe a una menor optimización de la pila PHP. que está disponible para la mayoría de sistemas operativos. Un usuario que interactúa con Moodle realizará una cantidad de clicks más alta de lo normal. donde el uso de memoria es más que una preocupación. y debido a su menor uso no están tan probados como los anteriores. Mac OS X o Linux (o sistemas operativos basados en Unix). de la que dependen Apache y MySQL para poder tener una alta concurrencia. como se puede ver reflejado en los foros de Moodle (http://moodle. Esto significa que.1. Si los comparamos con Linux. En un entorno de desarrollo. debido al modo en que se usa.3 Sistema operativo Moodle es capaz de funcionar en cualquier sistema operativo que soporte la versión requerida de PHP y la base de datos. y Moodle genera varias sentencias SQL para construir cada una de esas páginas. como desarrolladores. Xen HyperV). Los requisitos de la versión de la base de datos para Moodle 1. que ha sido mejorada en Windows Server 2008.0 son:     MySQL 4. debido a su bajo consumo de memoria. Generalmente se instala en alguno de los tres principales sistemas operativos: Windows. pero en un entorno de producción cada uno de ellos tendrá distintas características de rendimiento. También hay un creciente número de defensores de Lighthttpd como servidor web. y en Mac OS x a un pobre rendimiento en la bifurcación de procesos.0 4.

o en la base de datos. Es importante probar nuestro código en estos entornos para estar seguros de que funciona correctamente. Moodle se puede desplegar de múltiples formas -desde un simple profesor que lo ejecuta en su ordenador de sobremesa.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes nuestras modificaciones. hasta clústers de servidores de alto rendimiento: Ilustración 5: Arquitecturas típicas de Moodle Moodle. es escalable en determinados puntos. En la actualidad no hay un método estándar para escalar una única instalación de Moodle a través de múltiples servidores de bases de datos. Para escalar la base de datos es necesario montar un servidor de bases de datos más rápido. que puede moverse fácilmente a un servidor separado físicamente. Si usamos múltiples servidores web necesitaremos también almacenamiento compartido para nuestros datos de Moodle. 36 . También es una práctica común usar Moodle con un acelerador PHP como eAccelerator o APC. La información de sesión puede almacenarse en estos datos de Moodle. También significa que tenemos que ser conscientes de las implicaciones de rendimiento del código que se añada. reemplazando al servidor antiguo. al seguir el modelo de aplicación PHP estándar. También se pueden utilizar múltiples servidores web usando un balanceador de carga. El primer punto de escalabilidad es la base de datos. El servidor de bases de datos es el punto donde la escalabilidad de Moodle es más limitada. como hacemos con los servidores de aplicaciones web. La siguiente figura ilustra varias configuraciones comunes utilizadas para Moodle en un entorno de producción.

Cuando un fichero en particular es solicitado por el servidor. y su estructura de directorios refleja esta modularidad.1 Código de Moodle Como PHP es un lenguaje interpretado. datos y base de datos. cada sistema Moodle en funcionamiento se puede dividir en tres áreas separadas: código. Desde el punto de vista del usuario final. Algunos de los principales componentes soportan módulos de expansión o plugins. localiza el código SQL del módulo. Ilustración 6: Las tres áreas de Moodle 4. el intérprete PHP parsea el código al instante y la salida resultante se envía a través del servidor web. 37 .9. ya que cada carpeta del nivel superior representa un componente de Moodle.5. Los procesos de actualización se realizan de la misma manera.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 4. Moodle detecta el nuevo módulo la siguiente vez que un administrador accede al sistema.9. Como se ha mencionado antes. lo ejecuta y finalmente muestra por pantalla los resultados. La siguiente captura de pantalla es un listado de los directorios de una instalación reciente de Moodle 1. los módulos se instalan copiando su carpeta dentro del directorio apropiado en el servidor. En algunos casos. Cada módulo de expansión tiene su propia carpeta dentro del directorio del componente. haciendo un seguimiento de la versión de la base de datos y actualizando automáticamente si es necesario.5 Estructura de directorios Como se muestra en la siguiente figura. el código de Moodle se almacena como ficheros de código fuente en el servidor web. la ‚M‛ de Moodle significa ‚Modular‛. los módulos de actividad también pueden tener soporte para expansiones adicionales.

 auth: La carpeta auth contiene todos los módulos de autenticación de Moodle. Los módulos de autenticación controlan la creación de usuarios y el acceso de estos al sistema. Se trata de funciones para guardar. Cada módulo individual es responsable de realizar la copia de seguridad de su código y puede hacer uso de estas funciones si lo necesita.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 7: Directorios de Moodle A continuación. 38 . que se ejecuta como un proceso batch para realizar tareas de mantenimiento del sistema como el envío de correos y la realización de las copias de seguridad de los cursos. Cada módulo tendrá su propio directorio dentro de esta carpeta. Como cada módulo es auto-contenido. cuyos archivos se almacenan en su propia carpeta. A menudo se utiliza el proceso cron para realizar este tipo de operaciones programadas.php.  admin: Esta carpeta almacena los ficheros PHP que controlan la interfaz de los usuarios administradores.  backup: Esta carpeta contiene las utilidades de copia de seguridad del núcleo del sistema. restaurar e importar cursos. se permite a los desarrolladores añadir módulos limpiamente a Moodle sin tener que modificar el código del núcleo. exploraremos algunos de los directorios más importantes utilizados por los desarrolladores que desean realizar cambios a Moodle. Moodle utiliza una nomenclatura simple para sus módulos. También contiene el fichero cron. y el nombre de esta carpeta es el nombre que Moodle muestra en su interfaz cuando se referencia al módulo.

 filter: El sistema de filtros de Moodle es una facilidad de búsqueda y reemplazo basada en expresiones de texto y expresiones regulares. Wiki. Esta estructura permite una personalización local muy sencilla de los ficheros de idioma.  mod: La carpeta mod almacena los módulos de actividad como Tarea. Todas las cadenas mostradas al usuario final se asignan a través de esta utilidad.  enrol: La carpeta enrol contiene todos los módulos de matriculación de Moodle.net y Google Docs.  files: El componente files permite a Moodle incorporar archivos al sistema. Box. y suelen funcionar a través de las versiones de Moodle sin apenas alguna modificación.  lang: La carpeta lang almacena las cadenas de idioma del núcleo del sistema. El filtro de plugins multimedia encuentra referencias a tipos comunes de archivos multimedia y los envuelve en sus apropiadas etiquetas. Esto incluye subida de archivos. existe un filtro que soporta auto-conversión del lenguaje de marcado TEX a gráficos de ecuaciones. Este sistema es alimentado durante la creación de la página por el contenido introducido por el usuario que se encuentra en la base de datos. Cuando se desarrollen módulos o se personalice el sistema. dado que la plataforma se organiza en cursos. Los filtros encuentran coincidencias y modifican la página antes de ser mostrada. para embeber automáticamente el contenido multimedia en la página. debe ser desarrollada con cuidado. Aunque esta es una capacidad muy potente. Son uno de los tipos más simples de módulos que se pueden realizar. teniendo en mente las implicaciones de rendimiento. como Alfresco. Esta es la base del soporte de localización e idioma de Moodle.  course: Este componente de Moodle tiene una importancia obvia.0 para permitir el almacenamiento y el uso de ficheros en repositorios externos. podemos desear añadir o modificar formatos de cursos e informes. 39 . Este componente será reescrito en Moodle 2.  lib: La carpeta lib almacena las librerías de funciones del núcleo del sistema. Las cadenas de idioma se almacenan en la carpeta lang de los datos de Moodle. control de acceso. Estos módulos controlan la creación y administración de las matriculaciones a nivel de curso. se usarán clases y funciones definidas en esta carpeta. Como desarrolladores. Las actividades educativas son el núcleo de cada curso desarrollado en Moodle. Por ejemplo. y visualización de ficheros. Los formatos de curso personalizados se pueden usar para cambiar la disposición de los elementos en los cursos.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  blocks: Los bloques se usan para mostrar bloques de información en la columna de la izquierda o de la derecha de la página de Moodle. Lo módulos de actividad son más difíciles de crear que los bloques y deben diseñarse de manera que instruyan al estudiante. Lección o Foro.

4. tendremos que modificar la base de datos de forma regular. Cada componente principal del sistema normalmente tiene una o más tablas. Por tanto es importante para nosotros ser capaces de tratar la base de datos completa como una entidad. Cada tema tiene su propia carpeta. Normalmente haremos esto con herramientas de línea de comandos como mysqldump y MySQL. Cada curso tiene una carpeta.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  my: my es un portal ligero en Moodle. Como programadores. Este componente proporciona una buena localización para mostrar información personalizada con mínimos cambios en el núcleo de Moodle. Podemos determinar fácilmente estos valores navegando en un curso a través de la página de Moodle e inspeccionando los parámetros en la URL.  theme: La carpeta theme almacena todos los temas prediseñados de Moodle y cualquier tema personalizado instalado en el sistema. En los datos de Moodle también se almacenan paquetes de idioma opcionales que pueden ser descargados desde la interfaz de administración. Por ejemplo.3 Datos de Moodle Los ficheros subidos por los usuarios al sistema se almacenan en la localización moodledata. Proporciona la lista de cursos en las que un usuario participa. El usuario puede también añadir y borrar bloques en su portal.2 Base de datos de Moodle La base de datos de Moodle está organizada en aproximadamente doscientas tablas relacionadas. existirá una carpeta moodledata/3. incluyendo un resumen de las actividades próximas.php?id=3 Podemos ver que id=3. nombrada con un número entero que representa el identificador único asignado a dicho curso en la base de datos. cada una comenzando con el nombre del componente.5. ciertos componentes de la página de Moodle están escritos para que se muestren en una determinada forma. Por ejemplo. HTML y PHP. examinando esta URL de un curso: http://localhost/workspace/moodle19/course/view. copiando y moviendo instancias de una base de datos completa de Moodle para la creación de áreas de pruebas en las que desarrollar nuestro código. En esta carpeta también se almacenan los datos de sesión de los usuarios que se han logueado en el sistema si las sesiones basadas en fichero están configuradas. Si hemos subido ficheros a este curso. hay dos tablas relacionadas con el componente config: mdl_config y mdl_config_plugins. será el identificador de nuestro curso. Moodle estructura los datos de esta carpeta bien por usuarios o bien por cursos. Por ejemplo. la cabecera y el pie de la página de Moodle.5. Sin embargo está limitado en la cantidad de elementos de la página que puede modificar. 4. El sistema de temas es útil para definir el aspecto visual. En esta 40 . al final de la cadena. La instalación por defecto añade el prefijo mdl_ al nombre de cada una de las tablas. Los temas son una combinación de CSS.

un sitio Moodle está compuesto por: categorías.6 Estructura básica de Moodle Desde el punto de vista del usuario. Los ficheros que han sido subidos directamente por un usuario usando la interfaz de ficheros del curso se encontrarán en la raíz de esta carpeta. El principal objetivo de este nuevo método es conseguir un uso eficiente del espacio de almacenamiento en disco y una mayor flexibilidad a la hora de compartir ficheros entre múltiples cursos. dado de alta en el 41 .  Cursos: Los cursos son la parte más importante de la estructura de Moodle. Además. están formadas por cursos y sirven para organizarlos de manera que sean más fácilmente localizables por el alumno en la pantalla inicial de la aplicación. temas (o semanas) y actividades. Son creados por los administradores del sitio y dirigidos por los usuarios que se establezcan como profesores del curso. Moodle creará una carpeta llamada backupdata si se han realizado copias de seguridad de algún curso.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes carpeta. Cuando un módulo necesita almacenar ficheros. el módulo Wiki tendrá aquí una carpeta llamada wiki. Para que un alumno. Ilustración 8: Estructura general de Moodle Los principales elementos que componen un sitio Moodle son los siguientes:  Categorías: Las categorías son los contenedores de información de más alto nivel. Moodle almacena datos de sus módulos en la subcarpeta moddata. Moodle 2. cursos. Por ejemplo. los almacena dentro de esta carpeta en un directorio con el mismo nombre que el módulo.0 utilizará un modelo completamente nuevo para organizar los ficheros subidos por el usuario basado en un algoritmo hash. 4. Los usuarios pueden crear también sus propias carpetas y subcarpetas dentro del directorio raíz.

a las que se pueden añadir todas las que el usuario desee.6. Existen siete actividades instaladas por defecto. A continuación haremos un repaso por todas las actividades. y la matriculación de usuarios. contenedores que se sitúan a los lados del sitio Web y que tienen una función concreta de carácter general (relacionada o no con los módulos de actividades. incluyendo imágenes.1 Actividades Las actividades con las que cuenta Moodle por defecto son las que se muestran en la tabla siguiente. En capítulos posteriores se profundizará en el proceso de desarrollo de un módulo de actividad para Moodle.  Semanas y temas: La organización de un curso podrá llevarse a cabo por semanas o bien por temas. recursos y bloques que componen el paquete estándar de instalación de Moodle. El formato.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes sistema. Tras la creación del curso. cuyo formulario puede ser creado por el profesor.. 4.. según la preferencia del profesorado.  Bloques: Las funcionalidades extra fuera de las actividades y recursos son implementadas por los bloques.). su configuración. Cada uno de estos bloques contendrá.  Chat: El chat de Moodle permite mantener conversaciones entre usuarios en tiempo real. Cuando un administrador crea un curso debe proceder a su configuración mediante un formulario proporcionado por Moodle en el que se establecen valores para los distintos campos. pueda acceder a un curso deberá estar matriculado en él. así como realizar búsquedas y mostrar resultados. generando así una interacción fluida mediante texto síncrono. y la estructura de estas entradas pueden ser prácticamente ilimitados. distintos tipos de actividades que los alumnos deberán realizar para su evaluación. como por ejemplo el nombre del curso o el formato (semanal.  Base de datos: El módulo Base de datos permite al profesorado y/o a los estudiantes construir un banco de registros sobre cualquier tema o asunto. números y texto. a partir del momento en el que el profesor las añada. e incluso nosotros mismos podemos desarrollar nuestra actividad personalizada. estos podrán acceder al mismo y observar una serie de bloques diferenciados que representan las semanas del curso o temas. Desde la página de Moodle se pueden descargar otras muchas con distintas funcionalidades. además de actividades. archivos. entre otras cosas. según el formato que se haya establecido.  Recursos: Para complementar el contenido de las semanas o temas de cada curso. ofrece la posibilidad de agregar otro tipo de recursos a las mismas.  Actividades: Moodle ofrece la posibilidad de añadir a cada semana o a cada tema distintos tipos de actividades. Moodle. 42 . direcciones URL. por temas.

presentaciones Flash y cualquier otra cosa que 43 . y luego se incorporan al curso de Moodle. Hay diferentes tipos de foros disponibles: exclusivos para los profesores. etc. de noticias de un curso y abiertos a todos. al final de cada página se puede plantear opcionalmente una pregunta con varias posibles respuestas para comprobar de alguna manera que el alumno lo ha leído y/o comprendido. o realizar enlaces con aplicaciones Web. Se puede considerar una votación. transfiriéndoles datos. Los ejercicios se crean con Hot Potatoes.  Recurso: Admite la presentación de cualquier contenido digital: Word. o pueden ser creados sobre la marcha usando formularios web (de texto o HTML).  Hot Potatoes: Este módulo permite al profesorado elaborar y/o administrar los ejercicios elaborados con el programa Hot Potatoes a través de Moodle.   Encuesta: Es similar a la actividad Consulta. gráficos. Estos contenidos consisten en una serie de páginas (normalmente escritas con el editor HTML integrado en Moodle). donde el profesor formula una única pregunta y ofrece a los usuarios distintas elecciones. tema o área del saber. programas Javascript.  Lección: Una lección proporciona contenidos interactivos de forma interesante y flexible.  Cuestionario: Permite la realización de exámenes de diferente tipo.  SCORM: Un paquete SCORM (Sharable Content Object Reference Model) es un bloque de material web empaquetado de una manera que sigue el estándar SCORM de objetos de aprendizaje. emoticonos. Estos paquetes pueden incluir páginas web. Foro: Se trata de una actividad para el debate entre usuarios de un curso. a veces bastante simples.  Glosario: El glosario presenta un catálogo no exhaustivo de palabras relativas a una misma disciplina. sonidos. campo de estudio. La navegación a lo largo de la lección depende de la interacción del estudiante con las preguntas planteadas. Además puede o no estar clasificado en categorías y subcategorías.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Incluye las fotos de los perfiles en la ventana de chat y soporta direcciones URL. También se pueden enlazar contenidos externos en Web o incluirlos perfectamente en la interfaz del curso. actividad. etc.  Consulta: Es similar a una encuesta. y textos que el alumno ha de recorrer. PowerPoint. integración de HTML. donde los profesores pueden definir una base de datos de preguntas que podrán ser reutilizadas en diferentes cuestionarios. imágenes. con su definición y/o comentarios. vídeo. Los archivos pueden ser subidos y manejados en el servidor. para pedir su consentimiento para algo). Flash. y puede usarse para opinar sobre algún tema o para recibir una respuesta de cada estudiante (por ejemplo. pero con varias preguntas de distinto tipo.

2 Recursos Para complementar el contenido de las semanas o temas de cada curso. La página de texto y. diccionarios. El enlace a una web es útil para añadir contenidos externos al sitio Moodle de forma rápida o para facilitar el acceso y conocimiento de sitios de interés general (buscadores.6.  Editar una página de texto. Una página de texto es un texto normal mecanografiado sin formato (texto plano). la creación de página web nos permite añadir materiales curriculares propios o personalizados utilizando el editor integrado de Moodle. simplemente un acceso a un directorio o carpeta particular del sitio web del curso o de la unidad didáctica. previamente creado por el profesor o administrador. la página web son dos recursos muy adecuados para publicar todo tipo de contenidos. De esta manera. Los estudiantes pueden subir sus tareas (en cualquier formato de archivo) al servidor.  Enlazar un archivo o una página Web. instituciones. como su nombre indica. La especificación IMS (Content Packaging Specification) hace posible almacenar los contenidos en un formato estándar que puede ser reutilizado en 44 . ofrece la posibilidad de agregar otro tipo de recursos a las mismas. mientras que el enlace a un archivo nos permite agregar contenidos con múltiples formatos. cursiva…) y sin estructuras (listas. etc.  Wiki: Un Wiki posibilita la creación colectiva de documentos en un lenguaje simple de marcas.  Editar una página Web. Este tipo de recurso es.  Tarea: permite al profesor calificar trabajos enviados por los alumnos. podemos facilitar que con un único enlace los alumnos tengan acceso a toda una lista de ficheros que se pueden descargar a sus ordenadores. además de actividades. IMS es un esqueleto de especificaciones que ayuda a definir variados estándares técnicos. 4. como por ejemplo normas de seguridad.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes funcione en un navegador web. especialmente. es decir. tablas…). desde el área de archivos de su curso.  Directorio. sin ningún tipo de estilos (negrita. con la ventaja adicional de que no es obligatorio que estén en el sitio Moodle (aunque requiere la configuración por parte del administrador). Puede especificarse la fecha final de entrega de una tarea y la calificación máxima que se le podrá asignar.  Desplegar paquetes de contenido IMS. En concreto. utilizando un navegador web.). incluyendo materiales de elearning. Permite mostrar un directorio completo (junto con sus subdirectorios). Es recomendable su uso en aquellos contenidos de carácter obligatorio y relativamente estable durante en curso. y se registra la fecha en la que se han subido. Moodle. El módulo SCORM permite cargar fácilmente cualquier paquete SCORM estándar y convertirlo en parte de un curso. comprimidos o no.

El recurso de tipo IMS CP en Moodle permite utilizar ese tipo de paquetes de contenidos. Por otra parte. etc. Existen varios tipos de bloques con funcionalidades muy diversas: informar. Esta personalización se consigue mediante el uso. cambiar su contraseña o darse de baja de un curso (el profesor se encargará de decidir qué opciones estarán disponibles para sus alumnos). A ellos podemos agregar cuanto deseemos. Existen cuatro categorías de eventos 45 . por parte del profesor del curso. los acontecimientos producidos en el curso desde la última visita.  Actividad reciente: El bloque Actividad reciente muestra. Lo podemos utilizar para tener una visión rápida del desarrollo del trabajo realizado. o en las columnas laterales si se trata de un curso en formato social).  Calendario: Este bloque puede usarse como una agenda personal.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes diferentes sistemas sin necesidad de convertir dichos contenidos a otros formatos.3 Bloques El aspecto del entorno que envuelve un curso en Moodle puede variar en función de las necesidades de alumnos y profesores. 4. el profesor puede configurar el aspecto de un curso (incorporando bloques por ejemplo). sirve para mantener una visión organizada de las fechas y plazos importantes para el seguimiento de la asignatura o de un curso: fechas de exámenes.6.  Administración: Mediante este bloque el usuario podrá acceder a diferentes herramientas administrativas en función de su perfil. consultas. gráficos o elementos multimedia entre los bloques de contenido (en la columna central si se trata de un curso en formato semanal o por temas. Algunos trabajan de forma independiente y otros colaboran entre sí. cargándolos e incluyéndolos en los cursos de forma sencilla. Las etiquetas nos permiten añadir pequeños fragmentos de texto HTML. etc. de los denominados bloques de Moodle. Buscar en los foros: El bloque Buscar en los foros permite buscar entre los mensajes publicados en los foros de un curso la información tecleada en el cuadro de texto del bloque.   Actividades: El bloque de Actividades lista todas las categorías de actividades disponibles en el curso (foros. de una forma abreviada. reuniones de tutoría. que aparecen a la izquierda o la derecha de la pantalla. controlar. dar de alta a nuevos usuarios o hacer copias de seguridad. gestionar.). de más opciones podremos disponer. de entrega de trabajos. tanto por nosotros mismos. como por el resto de usuarios del curso. Desde estas opciones el alumno podrá examinar sus calificaciones.  Añadir una etiqueta. de acuerdo con la funcionalidad que queramos instalar en la plataforma Moodle. Cuanto mayor sea nuestro nivel de privilegios. etc. añadir nuevas actividades. tareas. A continuación se describen los bloques establecidos por defecto en Moodle.

Debajo de esta lista. gráfica. aparece el vínculo Todos los cursos….Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión 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. y puede utilizarse para moverse rápidamente entre esos cursos. eventos de curso. lo que permite introducir marcadores del lenguaje HTML. Los números que aparecen en el bloque son enlaces a las secciones numeradas del curso. 46 . Eso hace posible incluir video.  Eventos próximos: El bloque Eventos próximos muestra una lista de los acontecimientos próximos (ya sea un evento global. eventos de grupo y eventos de usuario. La cabecera del bloque sólo se muestra en el modo de edición. Este bloque es especialmente útil en los cursos con un gran número de secciones y cuando tenemos una sola sección visible. una nueva entrada del glosario elegido.  Cursos: El bloque Cursos muestra un listado de todos los cursos en los que estamos matriculados o somos profesores/as.  Canales RSS remotos: El bloque Canales RSS remotos permite mostrar contenidos de canales RSS de sitios Web externos.  HTML: El bloque HTML se utiliza para presentar en la página principal del sitio o de un curso información textual. Se pueden incluir imágenes y enlaces. etc. proporcionando un editor HTML para formatear el texto. que lleva a una página donde se muestran todos los cursos del sitio agrupados por categorías (esto no quiere decir que se pueda entrar en ellos). de forma sencilla y colaborativa. de curso o de usuario) en el calendario. con enlaces al contenido del acontecimiento señalado.  Entrada aleatoria del glosario: Es un bloque que permite mostrar. El administrador debe configurar el bloque para permitir al profesorado agregar y gestionar los canales.  Enlaces de sección: El bloque Enlaces de Sección facilita la navegación rápida por las diferentes secciones o semanas del curso.  Descripción del curso/sitio: El bloque Descripción de curso/sitio muestra el texto introducido en el resumen (informe) del curso presente en el formulario de Configuración del curso o en la descripción del sitio que se realiza en la página de Ajustes de portada. una cita. dependiendo del formato del curso usado. Temas o Semanal. o un refrán. Facilita un bloque flexible que puede incorporar variedad de funciones y usos. En caso contrario. o una frase célebre. por ejemplo cada vez que se accede a la página principal de un curso. sólo el administrador puede añadir o gestionar los canales del sitio Moodle. añadiendo imágenes o creando enlaces. También es posible trabajar directamente con el código fuente. Los eventos se pueden programar en el calendario y todas las actividades de Moodle con fecha límite generan un evento automáticamente.

o superior. 4. Para añadir este bloque debemos tener instalada la versión 1. es básicamente un bloque para que los padres de los alumnos puedan acceder a Moodle y puedan ver las actividades o calificaciones de sus hijos.  Novedades: El bloque Novedades presenta las cabeceras de las últimas noticias o mensajes publicados por el profesor o profesora en el Foro de Noticias.  Memtees: El bloque Mentees. de forma que también recibirán estos mensajes en su correo particular. todos los estudiantes de un curso están suscritos a este foro. aparece primero el profesorado y después los alumnos. y que cada uno tenga su propia cuenta. Por ello hace grandes esfuerzos para asegurar que ninguna persona acceda al sistema si no debe hacerlo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes sonido. de Moodle. cuyo núcleo son las cuentas de usuario. Al hacer clic sobre el nombre de algún participante nos muestra su perfil personal. Una cuenta de usuario proporciona acceso individual al sistema mediante un nombre de usuario y una contraseña.7 Control de acceso. que es un listado de la totalidad de participantes del curso. Moodle cuenta con un potente sistema de permisos y control de acceso.  Usuarios en línea: El bloque de los Usuarios en línea muestra a los usuarios matriculados (no muestra los invitados) del curso actual y presentes en un período de tiempo fijado por el administrador del sitio (por defecto son los últimos 5 minutos). pues sólo funciona con esta versión. Moodle debe ser riguroso con su seguridad. flash. y que los usuarios que acceden lo hagan de la manera correcta. ordenados por el último acceso al curso. Por defecto. inicio de sesión y roles de usuario Al ser una plataforma tan abierta. sólo disponible a partir de Moodle 1.  Personas: El bloque Personas contiene el enlace a Participantes. Lo usual es que queramos saber quiénes son nuestros usuarios.8. Siguiendo el hipervínculo más… se accede al foro donde está publicada la noticia y se puede ver el mensaje completo. En principio.8. Estas cuentas se crean utilizando los plugins de 47 . a estos usuarios invitados no les está permitido hacer algunas cosas importantes en el sistema. y otros ficheros que añadirán elementos únicos a la página del curso. Aunque es posible permitir el acceso a un curso a cualquier visitante sin necesidad de autenticación.  Resultados del cuestionario: El bloque Resultados del cuestionario muestra información sobre los resultados alcanzados por los usuarios en un determinado cuestionario en tiempo real.  Mensajes: El bloque Mensajes constituye un sistema de mensajería interna del sistema que permite la comunicación directa entre todos los usuarios del sitio sin necesidad de usar el correo electrónico.

A cada capacidad se le puede asignar uno de estos cuatro niveles de acceso: No configurada. estudiante. podemos crear capacidades para controlar el acceso a las nuevas funcionalidades que despleguemos en el sistema.7. permitida. Invitado: Los usuarios no autenticados que tiene permiso de acceso al sistema. bloques y actividades. y también se puede crear cualquier número de roles personalizados a partir de la lista de unas doscientas capacidades del sistema. usuario autenticado e invitado. Estudiante: Puede estar matriculado en un curso. Para acceder al sistema.1 Permisos Los permisos en Moodle pueden ser asignados dentro de seis contextos: sitio/global. 48 . el sistema más común de autenticación es el basado en e-mails. Existen siete roles integrados: administrador. se requiere un nombre de usuario y una dirección de correo electrónico. y además puede desarrollar y actualizar su contenido. usuario y portada. Si son correctos se le permite el acceso al sitio. Sin embargo. Profesor no editor: Puede administrar un curso. Las contraseñas en Moodle se codifican con una función hash MD5 para hacerlas ilegibles y difíciles de averiguar. Profesor: Puede administrar un curso. creando un usuario mediante la interfaz de administración. Los roles estándar del sistema son:        Administrador: El administrador del sistema tiene todos los permisos. un usuario introduce su usuario y contraseña. El sistema de sesiones de Moodle utiliza funciones de cookies de PHP para introducir cookies en la sesión actual y ayudar a identificar al usuario durante toda su visita al sistema. La combinación de todo lo anterior proporciona una solución poderosa y flexible para los administradores. Cada usuario puede tener múltiples roles que heredan permisos de todos los niveles de contexto aplicables a una petición de acceso realizada por el usuario. y todos ellos pueden ser asignados en uno o más de los contextos mencionados. Como desarrolladores. categoría de curso. que permite a los usuarios crear sus propias cuentas mediante la verificación de e-mail. pero no puede modificar su estructura. además de una contraseña. Usuario autenticado: Todo usuario que haya iniciado sesión en el sistema tiene este rol.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes autenticación. curso. La manera más simple de crear una cuenta de usuario es hacerlo de forma manual. prohibida y prevenida. profesor no editor. creador de cursos. En cualquier caso. Creador de cursos: Puede crear cursos en el sistema y puede estar limitado a una categoría de cursos. 4. profesor.

será redireccionado a la función de login adecuada. a los usuarios se les puede asignar roles en contextos específicos. 4. se debe realizar una llamada a require_login. Las capacidades se asignan a roles en contextos específicos bien por defecto o mediante una asignación específica. Esta asignación les proporciona el acceso definido por las capacidades en ese rol para ese contexto. 49 . Puede ver un curso en el nivel de contexto curso. Si no lo ha hecho. Cuando se desarrollen nuevas capacidades para el código personalizado. podemos crear una actividad específica en un módulo que requiera que el usuario haya iniciado sesión en el sistema. moodle/course:view.3 Roles Los roles son identificadores específicos asociados con todos los contextos. de forma que este grupo de capacidades puede ser asignado a los usuarios.7. y forzar a que lo haga si lo requiere el elemento al que está tratando de acceder. Ejemplos de capacidades son los siguientes:    moodle/site:manageblocks. Por ejemplo. moodle/user:viewdetails. Los roles están asociados con todos los contextos. Para resumir:     Los contextos son elementos específicos en Moodle. Las capacidades normalmente se colocan en el nivel de contexto más bajo en el que puedan funcionar. Para comprobar y forzar un inicio de sesión dentro de nuestro código. Principalmente se usan para agrupar capacidades de un contexto. 4. 4. Puede administrar bloques en el nivel de contexto sitio. A los usuarios se les asignan roles en un contexto dado.7. Esta función permite comprobar si un usuario ha iniciado sesión. Puede ver los detalles de un usuario en el nivel de contexto usuario.7.1 Asignación de roles Por último. Las capacidades se asignan a roles en un contexto dado. se debe considerar cuidadosamente en qué contexto estarán mejor localizadas.3.2 Capacidades Las capacidades están asociadas con niveles de contexto y son reglas específicas de acceso que pueden ser concedidas a los roles.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Se pueden crear multitud de roles personalizados utilizando la interfaz de Moodle.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Son la asignación 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 acción requerida. para que de esta manera podamos diseñar y construir el control de acceso que deseamos para nuestras funciones. necesitaremos tener esta funcionalidad en mente. 50 . Como desarrolladores de código para Moodle.

debido a la escasa documentación existente. MacOS X y Netware 6.org/en/Development:Developer_documentation).9. o de modificar uno ya existente para adaptarlo a unas necesidades concretas. preparando para 5. Se explicará en detalle el proceso de instalación tanto de Moodle como de sus requisitos previos en un servidor Linux.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5 Desarrollo de un módulo de actividad Quizá lo más complicado en el desarrollo de módulos de actividad para Moodle sean los primeros pasos. para terminar realizando paso por paso el desarrollo de un módulo sencillo.9). aunque es probado regularmente con PostgreSQL y en los sistemas operativos Windows XP. Estos pasos están pensados para todos aquellos usuarios que utilicen la plataforma para desarrollar módulos. Para facilitar la labor del desarrollador de Moodle inexperto. En él se ha recopilado. especialmente en la página para desarrolladores de la Web oficial de Moodle (http://docs. 51 . A continuación se analizará la estructura y el contenido de los ficheros que componen un módulo.moodle. organizado y sistematizado la información disponible en Internet. Tanto el código fuente contenido en este manual. ello el sistema con todos los requisitos necesarios. obtener una instalación satisfactoria de Moodle en el equipo. se refieren a la última versión estable de la plataforma disponible en el momento de redactar este texto (versión 1. 5. Para ello se repasarán las principales librerías de código con las que cuenta el programador para realizar su proyecto.1 Instalación de Moodle Los pasos que aquí se detallan servirán para configurar un entorno válido y así. en concreto en Ubuntu 10. Este capítulo constituye un manual mediante el cual se pretende simplificar al desarrollador la tarea de programar un nuevo módulo que añada funcionalidades a la plataforma. que será el germen de lo que posteriormente podría ser un trabajo mayor. posteriormente. como las explicaciones teóricas relacionadas con el sistema de módulos de Moodle.1.04. también se detallará la manera de llevar a cabo la instalación de la plataforma. MySQL y PHP (también conocida como plataforma LAMP).1 Requisitos Moodle está desarrollado principalmente en GNU/Linux usando Apache. especialmente en español.

El apartado siguiente es una guía de cómo instalar Apache2. MySQL 4. paso a paso para instalar estos programas en una de las plataformas más utilizadas: Ubuntu 10. MySQL y PHP5.16 es la versión mínima para trabajar con Moodle 1.    La extensión pgsql si va a utilizar una base de datos PostgreSQL. Una base de datos: MySQL o PostgreSQL.4.0 o posterior). Hay algunos argumentos a favor de PostgreSQL.9 (muchas distribuciones de Linux incorporan versiones más antiguas. La extensión mysql si va a utilizar la base de datos MySQL. En algunas distribuciones de Linux (principalmente RedHat) se trata de un paquete opcional. Si se ha contratado alguno de los pocos servicios de alojamiento web que no soportan estas características. Otras extensiones PHP podrían de ser necesarias que dependiendo a ser de las funcionalidades extensión LDAP). opcionales Moodle vayan utilizadas. La extensión zlib es necesaria si va a utilizar las funcionalidades zip/unzip.04. se debe considerar la posibilidad de trasladar el sistema a otro sitio. como el IIS (Internet Information Server) de las plataformas Windows.   Una instalación de PHP en funcionamiento (versión 4. la 52 .3. Proporcionará instrucciones. así que se debe comprobar este extremo).1. La mayoría de los servicios de alojamiento web (hosting) soportan todo esto por defecto. especialmente si está planificando instalaciones de grandes dimensiones. especialmente las relacionadas con autenticación y matriculación (p. La mayoría de los usuarios utilizan Apache.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Los requerimientos de instalación de Moodle son los siguientes:  Un servidor web. que están completamente soportadas y recomendadas para su uso con Moodle. MySQL es la elección preferida para mucha gente. pero Moodle debe funcionar bien en cualquier servidor web que soporte PHP. ej. mbstring es requerido para manipular cadenas de caracteres multi-byte (iconv también es recomendable). PHP 5 está soportado a partir de Moodle 1. Requerimientos adicionales:    Librería GD y librería FreeType 2 para poder construir los gráficos de los registros de Moodle.

1. También instalaremos el enlace entre apache y mysql. 5. en nuestro caso.1.1.2.2 Instalación de requisitos 5. y el de php5 y mysql.1 Instalación de Apache2 Lo primero es instalar un servidor HTTP. Lo hacemos con el siguiente comando: sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql Código 2: Instalación de MySQL Durante la instalación se nos preguntará por la contraseña de MySQL. nos debe aparecer un mensaje como el siguiente: Ilustración 9: Apache instalado correctamente Este mensaje nos indica que el servidor web se ha instalado y está funcionando correctamente.2. al escribir ‚http://localhost/‛ en la barra de direcciones de nuestro navegador.2 Instalación de MySQL A continuación tenemos que instalar MySQL. tal y como se muestra en la imagen inferior: 53 . si todo ha ido bien. Desde el terminal escribimos: sudo apt-get install apache2 libapache2-mod-php5 Código 1: Instalación de Apache2 Una vez que se ha completado la instalación.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5. vamos a instalar Apache2 y el módulo de PHP5 para Apache.

9.tgz sudo mv moodle /var/www/ Código 5: Descomprimir Moodle y colocarlo el directorio www Además.9.3 Instalación de PHP Por último.1. se alojan las páginas web en Apache2: tar xzvf moodle-1.2. podemos proceder a instalar nuestra plataforma Moodle. 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 . instalaremos todos los paquetes que necesitemos de PHP5.9) de la página oficial de descargas de Moodle: wget http://download. mediante el siguiente comando: sudo apt-get install php5 php5-gd Código 3: Instalación de PHP 5.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 10: Instalación de MySql 5. Para ello debemos descargar la última versión estable (en nuestro caso Moodle v1. Moodle necesita un directorio para almacenar archivos.9.tgz Código 4: Descarga de Moodle A continuación descomprimimos el fichero y movemos la carpeta moodle a /var/www/ que es donde. por defecto.moodle.3 Instalación de Moodle Después de la instalación en nuestro servidor de todos los requisitos previos.php/stable19/moodle-1.9.org/download.1.9.

hacemos clic en Siguiente para continuar la instalación. 55 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes sudo mkdir -p /var/moodledata sudo chown -R nobody:www-data /var/moodledata sudo chmod -R 0770 /var/moodledata Código 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. A continuación el sistema comprueba si tenemos todo lo necesario para que Moodle se ejecute correctamente. donde pondremos la IP del servidor en la barra de direcciones: Ilustración 11: Instalación de Moodle-Paso 1 Después de seleccionar el idioma.

Después tenemos que completar la información correspondiente a MySQL con el nombre de usuario y la contraseña que escribimos durante la instalación de MySQL. 56 . debemos comprobar que el directorio de datos es el que hemos creado en los pasos anteriores.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 12: Instalación de Moodle-Paso 2 En el paso siguiente comprobamos las direcciones donde se instalará Moodle: Ilustración 13: Instalación de Moodle-Paso 3 Sobre todo.

57 . podemos abrir un terminal e instalar los paquetes requeridos o recomendados antes de continuar con la instalación de Moodle. Si no es así.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 14: Instalación de Moodle-Paso 4 A continuación se verifica que se cumplen todos los requisitos necesarios en la configuración del servidor. Ilustración 15: Instalación de Moodle-Paso 5 En el paso siguiente descargamos el paquete de idioma de ‚Español – España (es_es)‛.

En nuestro caso no lo ha conseguido. Ilustración 17: Instalación de Moodle-Paso 7 Continuamos en el navegador web y aceptamos las condiciones de la licencia. pero nos ofrece la posibilidad de descargar el archivo config.php para después colocarlo nosotros manualmente en el servidor. Durante todo el proceso siguiente aparecerán pantallas que nos informarán de la 58 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 16: Instalación de Moodle-Paso 6 En este punto finaliza la configuración y Moodle intenta crear un fichero de configuración en /var/www/moodle.

Ilustración 18: Instalación de Moodle-Paso 8 Ilustración 19: Instalación de Moodle-Paso 9 La siguiente pantalla nos informa de la versión instalada. 59 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes inserción de nuevas tablas en la base de datos. Debemos comprobar que no existan mensajes de error y aceptar para pasar a la siguiente pantalla.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 20: Instalación de Moodle-Paso 10 En la siguiente pantalla tendremos que suministrar los datos del administrador de Moodle: Ilustración 21: Instalación de Moodle-Paso 11 Por último configuramos la página inicial de nuestra plataforma: 60 .

ya hemos terminado nuestra instalación de Moodle. Ilustración 23: Instalación de Moodle-Paso 13 61 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 22: Instalación de Moodle-Paso 12 Y. si todo ha ido bien.

html.1 Estilo del código Este manual de estilo ha sido creado para conseguir que todo el código de Moodle cumpla estas características.2.2 Reglas generales Este apartado se basa en las ‚Reglas Generales‛ que propone Moodle para sus desarrolladores (http://docs.php. Podemos incluir los nuestros si resulta necesario.   No se deben crear o utilizar variables globales distintas de las estándar $CFG. Todos los accesos a la base de datos deben utilizar las funciones definidas en lib/datalib.php.moodle. como <? ?>. comprobada su existencia utilizando isset() o empty() antes de ser utilizadas. $SITE. como <?Php ?>. La inclusión de código SQL queda restringida a funciones específicas de nuestro código (normalmente en el archivo lib. Todos los archivos deben incluir el archivo principal config. de forma que sea más fácil de entender para los futuros desarrolladores. Todos los archivos de texto deben utilizar el formato de texto Unix (la mayoría de los editores de texto tienen esto como una opción).2 Guías de estilo para desarrolladores 5.        Todos los archivos de código deben utilizar la extensión . require_capability() y has_capability(). nunca relativos. al menos. ya que esto permite la compatibilidad con un gran número de bases de datos y prácticamente todo es posible utilizando estas funciones. Todas las plantillas deben utilizar la extensión .org/es/Manual_de_Estilo_de_Código#Reglas_Generales). $SESSION. Todas las variables deben ser inicializadas o.2. $THEME.   Cada archivo debe comprobar que el usuario está autenticado correctamente. 5. Es cierto que la parte más antigua del código de Moodle no cumple estas normas en algunos casos. ya que estos en algunas ocasiones funcionan de forma extraña en PHP. Además debemos comprobar que funciona en cualquier plataforma y debe estar claramente comentado.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5. Todas las etiquetas PHP deben ser 'completas'. 62 . utilizando las funciones require_login(). pero la comunidad de desarrolladores está trabajando para solucionarlo gradualmente.php. Todos los avisos de copyright deben ser mantenidos. $COURSE y $USER.php cuando sea posible. Todo el código nuevo definitivamente deberá adherirse a estos estándares de la forma más exacta posible. Cualquier otro include/require debe utilizar una ruta absoluta que comience por $CFG->dirroot o $CFG->libdir. no 'reducidas'.

especialmente aquellos que han sido introducidos por los usuarios.  Las acciones de los usuarios deben ser grabadas utilizando la función add_to_log(). Obviamente el nuevo código y los índices de las páginas de ayuda deben ser modificados para apuntar a las versiones más recientes.php?id=99.  Todos los errores deben ser visualizados utilizando la función print_error() para maximizar la traducción y ayudar a los usuarios (Automáticamente se enlaza con Moodle Docs). está permitido que se haga el cambio. Estos registros son utilizados para la generación de los "Informes de Actividad" y los registros. por ejemplo.html) para que los traductores puedan ver fácilmente que se trata de una nueva versión del archivo. enlace a $CFG->wwwroot/mod/blonk/view.php?id=99 en lugar de únicamente view. filename2. Para ello crearemos nuevos textos en los archivos lang/es_utf8 con palabras reducidas en inglés y su traducción completa al español y las recuperaremos en nuestro código utilizando las funciones get_string() o print_string(). 63 .  La información que llega desde el navegador (enviada con los métodos GET o POST) automáticamente tiene las "magic_quotes" aplicadas (sin importar la configuración de PHP) por lo que podemos insertarla con total seguridad en la base de datos. deben hacerse siempre relativos a la raíz del sitio Moodle.  Todos los ficheros de ayuda deben ser traducibles.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  Todas las cadenas deben ser traducibles. pero debería ser notificado a translation@moodle. Para ello crearemos nuevos textos en el directorio lang/es_utf8/help y los llamaremos utilizando la función helpbutton(). Gracias a esto el código funcionará aunque sea llamado por un script que se encuentre en otra carpeta diferente. Esto asegura que el texto es filtrado y limpiado correctamente. donde la traducción antigua del fichero podría tener todavía sentido. Si necesitamos actualizar un fichero de ayuda: o Para un pequeño cambio.org o Para un cambio importante tendremos que crear un nuevo fichero añadiéndole en el nombre un número incrementado (Ej.  MUY IMPORTANTE: Todos los textos dentro de Moodle. o desde la base de datos) debe ser escapada con la función addslashes() antes de insertarla en la base de datos. El resto de la información (obtenida desde los archivos. deben ser mostrados utilizando la función format_text().  Al generar enlaces HTML.

1 Estilo del código fuente Es necesario cumplir las siguientes normas para poder comprender el código fuente de Moodle correctamente. if ($mode) { $USER->mode = $mode. BIEN: $quiz BIEN: $errorstring BIEN: $assignments (para un array de objetos) BIEN: $i (solo en bucles pequeños) MAL: $Quiz MAL: $aReallyLongVariableNameWithoutAGoodReason MAL: $error_string Código 7: Ejemplos de nombres de variables correctos e incorrectos  Las constantes tienen que definirse siempre en mayúsculas. Debemos comprobar que no haya espacio entre el nombre de la función y los paréntesis.  Debemos utilizar nombres en plural para las matrices de objetos. } else if (empty($USER->mode)) { $USER->mode = $CFG->forum_displaymode.2. Las palabras deberían separarse por guiones bajos. si es posible. Moodle utiliza el siguiente estilo: 64 . y empezar con el nombre del módulo al que pertenecen para evitar conflictos entre módulos. y empezar siempre por el nombre del módulo al que pertenecen.2. function forum_set_display_mode($mode=0) { global $USER. 1). debemos ponerlas juntas. Código 8: Ejemplo de definición de una constante  Los nombres de las funciones tienen que ser palabras sencillas en minúsculas y en inglés. Si realmente necesitamos más de una palabra. tendrán valores por defecto. $CFG. Los parámetros.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5.   El sangrado del texto debe ser siempre de 4 espacios. No debemos utilizar los tabuladores NUNCA. Deberían tener las palabras separadas por guiones bajos. procurando que sean palabras en minúsculas con significado en inglés. Los nombres de las variables tienen que ser siempre fáciles de leer. define("FORUM_MODE_FLATOLDEST". } } Código 9: Ejemplo de función bien definida  Los bloques de código siempre deben estar encerrados por llaves (incluso si solo constan de una línea).

**/ /** The description should be first. $postid)) { // Process each rating in turn 65 . Esto sirve para obtener un mejor rendimiento. "post". * @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. Cada función (y cada clase) debería utilizar el popular formato phpDoc. "view. alineados con cuidado por encima de las líneas de código que comenta. do it like this: {@link clean_param()}. with asterisks laid out exactly like this example. add descriptions for each parameter as follows. $ratings=NULL) { if (!$ratings) { $ratings = array(). Código 11: Ejemplos de definición de cadenas    Los comentarios deben añadirse de forma que resulten prácticos. Los comentarios de p{rrafo utilizan los caracteres /**….Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes if ($quiz->attempts) { if ($numattempts > $quiz->attempts) { error($strtoomanyattempts. para explicar el flujo del código y el propósito de las funciones y variables. $var = "algo de $texto con $varias variables $dentro".$sola. Los comentarios en línea deberían utilizar los caracteres //. If you want to refer to a another function. $var = 'texto sin variables'. $var = 'una cadena muy muy larga con una '.php?id=$cm->id"). Then. $var = "con caracteres especiales como nueva línea \n". Esto permite que la documentación sea generada automáticamente. $scale. // Initialize the empty array if ($rates = get_records("forum_ratings".' variable'. } } Código 10: Ejemplo de bloque de código correcto siguiendo el estilo de Moodle  Las cadenas tienen que ser definidas utilizando comillas simples siempre que sea posible.

se debe tener en cuenta las siguientes consideraciones:   Cada tabla debe tener un campo autonumérico id (INT10) como clave primaria. los siguientes campos: o o o id . originalmente sólo disponible en php5 (en caso contrario simplemente tendremos una referencia al primer objeto). Generalmente. debería haber un espacio entre llaves y líneas normales y ninguno entre llaves y variables o funciones: foreach ($objects as $key => $thing) { process($thing). Código 14: Ejemplo de copia correcta de un objeto  Si lo que se quiere copiar no es un objeto. } else if ($x == $z) { $a = $c..2. por lo menos. MAL: $b = $a.el identificador del curso al que la instancia pertenece name . BIEN: $b = clone($a).2. un array de objetos) utilizaremos la función fullclone() en su lugar..el nombre completo de la instancia 66 .clave primaria course . } Código 13: Ejemplo del uso de espacios para hacer más claro el código  Cuando estemos realizando una COPIA de un objeto. 5.. utilizaremos siempre la función clone(). Moodle nos garantiza que este método funcionará también bajo PHP4.2 Estructura de la base de datos  En cuanto a las tablas que nuestro módulo creará e insertará en la base de datos de Moodle.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes foreach ($rates as $rate) { . No pasa nada por separar las cosas un poco para ganar en claridad. La tabla principal que contiene instancias de cada módulo debe tener el mismo nombre que el módulo y contener. } else { $a = $d.etc Código 12: Ejemplos de comentarios de línea y párrafo  El espacio en blanco se puede utilizar con bastante libertad. pero puede contener objetos (p. } if ($x == $y) { $a = $b. ej.

asumiendo que $CFG->prefix es 'mdl_'. INT4) con los valores 0 o 1. Además. siguiendo las mismas reglas que los nombres de las variables. ‚respuestas‛). serán utilizadas. En su lugar utilizaremos UNIQUE INDEXes. Cuando sea posible. Cada tabla debe comenzar con el prefijo de la base de datos ($CFG->prefix). si se decide añadir integridad referencial a Moodle y si se necesitan UNIQUE KEYs. En muchos casos esto es gestionado automáticamente.  Los campos booleanos serán implementados como enteros cortos (por ejemplo. bajo PostgreSQL. por supuesto): o o  No debemos utilizar el comando AS para alias de tablas.  Para garantizar la compatibilidad entre bases de datos. todas las tablas para el bloque "rss_client" deberán empezar por 'mdl_block_rss_client' (siendo posible añadir 67 .   Debemos definir siempre un valor por defecto para cada campo (y hacer que tenga sentido). En caso contrario. para permitir la futura expansión de los valores si fuera necesario. (esta norma es nueva y no es seguida por algunas tablas antiguas).ej.    Los nombres de las tablas y de los campos tienen que evitar el uso de palabras reservadas por las bases de datos. En el futuro. Por ejemplo.  La mayoría de las tablas tienen que tener un campo timemodified (INT10) que será actualizado con la fecha actual (timestamp de UNIX) obtenida con la función time() de PHP. pero no por ahora. teniendo el XML bien definido). el nombre de cada índice debe empezar también con el prefijo. pero solo los índices subyacentes serán realmente generados en la base de datos. Los nombres de los campos (columnas) deberían ser sencillos y cortos. las columnas que contengan una referencia al campo id de otra tabla (por ejemplo. deberían ser llamadas modulo_respuestas (en plural).  Las tablas asociadas con un bloque deben seguir las siguientes convenciones en sus nombres: $CFG->prefix + block_ + nombre del bloque + añadidos. se deben seguir las reglas siguientes sobre el uso del comando AS (solo si necesitamos alias en tablas/campos. las crearemos como UNIQUE INDEXes. El editor XMLDB permite especificar tanto restricciones UNIQUE como FOREIGN (y eso es bueno.  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). modulo) debería ser llamado moduloid. Nunca debemos crear UNIQUE KEYs (restricciones) para nada. Esto se debe comprobar antes de crearlas. Utilizaremos el comando AS para alias de campos (columnas).Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  El resto de las tablas asociadas con un módulo que contiene información sobre cualquier otra cosa (p.

No debemos comprobar las acciones con código como: if (isset($_GET['algo'])). Por ejemplo. utilizaremos las funciones required_param() u optional_param() apropiadas. utilizaremos la función required_param(). "category=$catid") es correcto.0. también hay que tener en cuenta una serie de normas de seguridad. -1.. No debemos utilizar la función optional_variable().. con cuidado. utilizaremos la función optional_param().3 Normas de seguridad (y de control de la información de formularios y URLs) A la hora de desarrollar nuestro propio módulo. En su lugar. PARAM_INT ) y entonces compruebaremos que está dentro de los valores esperados.. 68 . Para comprobar y definir un valor opcional para una variable. los sitios actualizados de una versión estable a la siguiente pueden encontrarse con cambios por duplicado. Ese uso oculta posibles errores cuando $catid está sin definir.      No utilizaremos la función require_variable(). especialmente en lo que se refiere a la información obtenida del usuario por medio de formularios y de parámetros en la URL. mdl_block_rss_client_anothertable.. Cada variable debe ser correctamente inicializada en cada fichero de código. Utilizaremos data_submitted(). En su lugar. Algunas de las normas a seguir en este sentido son las siguientes:  No debemos basar nuestro código en register_globals.. Utilizaremos. Esta regla será completamente forzada con Moodle 2. No debemos utilizar $_GET. no debemos entrecomillar el valor. $algo = optional_param( algo. if ($something>=0) {.2. "category='$catid'") es incorrecto. get_records_select('question'. Es muy importante mantener la seguridad en estos procedimientos para poder garantizar la integridad de los datos manejados por nuestro módulo.  Nunca debemos realizar cambios a la base de datos en ramas estables.). La información todavía debe ser limpiada antes de utilizarla. por ejemplo. $_POST o $_REQUEST. dando algo de tiempo a los desarrolladores hasta entonces. get_records_select('question'.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes más palabras al final.2. utilizaremos la función set_default().  Cuando hagamos referencia a una variable entera en consultas SQL. Ej. Debe ser obvia la procedencia de cada variable. Seleccionaremos la opción PARAM_XXXX apropiada al tipo de parámetro que esperamos. Seleccionaremos la opción PARAM_XXXX apropiada al tipo de parámetro que esperamos.    Debemos inicializar todos los arrays y objetos aunque estén vacíos. $a = array() o $obj = new stdClass(). lo cual puede producir errores serios. 5. Si lo hacemos. por ejemplo. En su lugar.

con una declaración de una clase.   No debemos utilizar información obtenida de $_SERVER si podemos evitarlo. Nunca debemos confiar en que otro código estará haciendo ese trabajo. En particular.  Si necesitamos usar shell_exec() (o cualquier otra función que invoque un shell).Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  Cuando sea posible agruparemos todas las llamadas a required_param(). 69 .  Si escribimos código SQL. nos aseguraremos de que se han limpiado los parámetros anteriormente con escapeshellcmd()/escapeshellarg() (de lo contrario abrimos la puerta a ataques de inyección de shell).  Los bloques de código que se incluyan deben presentar una estructura PHP correcta (por ejemplo. de la mejor manera posible:  Simplicidad: Debemos usar el mínimo de interfaz necesario para obtener la funcionalidad que necesitamos. Si no ha sido realizado en ningún otro lugar. ?>" />.  Utilizaremos el mecanismo sesskey para proteger el envío de formularios de ataques. Es un punto de entrada para ataques de tipo SQL injection. de funciones. compruebaremos la falta de comillas en las variables utilizadas. debemos asegurarnos de que la información enviada a la base de datos ha sido filtrada mediante la función clean_param() utilizando la opción PARAM_XXXX apropiada. optional_param() y el resto de inicialización de variables en el principio de cada fichero (o función) para que sea fácilmente localizable. Un ejemplo de uso: cuando el formulario es generado.2. comprobaremos if (!confirm_sesskey()) {error('Bad Session Key'). 5. etc.}. si esto no ha sido realizado con el uso de las funciones required_param() y optional_param() con anterioridad. incluiremos <input type="hidden" name="sesskey" value="<?php echo sesskey(). Cuando el formulario es procesado.) Los bloques de código lineales suelen tender a utilizar variables sin inicializar (y son menos legibles). Un objeto completo puede ser procesado con la función addslashes_object(). Presenta algunos problemas de portabilidad.  Todos los nombres de ficheros deben ser limpiados de caracteres extraños utilizando la función clean_filename(). nos aseguraremos completamente de que es correcto.3 Estilo de la interfaz En este apartado se ofrece una colección de ideas para adaptar la interfaz de nuestro módulo al estilo global de Moodle.  Cualquier información leída desde la base de datos debe tener la función addslashes() aplicada antes de volver a enviar la información a la base de datos.  Comprobaremos toda la información (especialmente la que es enviada a la base de datos) en cada archivo que es utilizada.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  Páginas estándar: Tanto en módulos de actividad como en bloques, existen una serie de ficheros que se deben crear obligatoriamente. En el caso de los módulos de actividad, estos ficheros se detallan en el apartado Estructura de un módulo de actividad.   Debe haber un script por función o página principal. Plantilla de página: o o  o o o   Imprimiremos las cabeceras con print_heading(), usaremos el CSS para IDs y Clases. Imprimiremos las cajas alrededor del texto usando print_simple_box(). Mostraremos las opciones más importantes en la parte superior. Cada entrada debe tener una etiqueta y, si es necesario, un archivo de ayuda. Si hay más de 10 opciones, las desglosaremos en los parámetros necesarios y opcionales, extra o avanzados. Manejo de tablas: o o Usaremos la función print_table() cuando sea posible. Todas las páginas deberían llamar a print_header(), y suministrar una ruta de navegación estándar que apareciera allí. Donde sea posible, debería verse como: COURSE >> INDEX >>INSTANCE >> SUBPAGES... o  Las páginas incluidas en módulos de actividad deberían llamar a navmenu() para generar el menú de navegación apropiado. Direcciones URL: o o o  Las direcciones URL deben ser lo más cortas posible. No debemos usar subrayado en nombres de parámetros o nombres de archivos. 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, información de sesión) deben ser llevadas a cabo por medio de botones. o  Como mínimo, tales acciones, que son implementadas como enlaces, deben remitir a una página de confirmación 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) Herramientas de navegación estándar: Plantilla de formulario:

70

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes

5.3 Estructura de un módulo de actividad
Un módulo de actividades viene definido por un conjunto de ficheros PHP y HTML que se incluyen dentro de una carpeta con el nombre del módulo, que a su vez se incluye en la carpeta /mod del directorio base de Moodle. No resulta difícil encontrar estos ficheros, en forma de plantilla, en la red, aunque con escasa documentación y siempre en inglés. Estos documentos presentan una estructura flexible, con unos campos básicos, que deben ampliarse para dar funcionalidad al módulo. Para que Moodle reconozca nuestro módulo 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 módulo 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 módulo, la estructura sería la siguiente: / – raíz de Moodle.

/mod – carpeta de módulos.
o

/nombremodulo – carpeta raíz de nuestro módulo. Aquí dentro irán todos nuestros archivos y carpetas.

/db – carpeta con datos a introducir en la base de datos durante la instalación/actualización del módulo.
  

access.php – contiene las capacidades/permisos del módulo. install.xml – esquema de la base de datos en xmldb para la instalación del módulo. upgrade.php – procedimientos de actualización del módulo.

    

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 módulo que hay en el curso. lib.php – funciones requeridas por Moodle para comunicarse con nuestro módulo. locallib.php – funciones propias que necesitemos para nuestro módulo. mod_form.php – formulario de configuración de la actividad al ser creada o editada.

71

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes
     

version.php – información sobre versiones relacionadas con el módulo. view.php – página de inicio de la actividad (p.ej. cuando entra en la actividad un alumno). styles.php – definición de estilos css para nuestro módulo. backuplib.php – funciones para realizar la copia de seguridad del módulo. restorelib.php – funciones para realizar el restablecimiento de una copia de seguridad del módulo. /lang – directorio de idiomas

/es_es_utf8 – directorio de idioma correspondiente al español de España versión UTF8.
 

nombremodulo.php – archivo con las cadenas usadas en el módulo en el idioma de arriba. /help – carpeta con los archivos de ayuda.

/nombremodulo – ayuda de este módulo.

index.html – índice con enlaces a los demás archivos de ayuda de este módulo.

 

mods.html – información general de nuestro módulo. miayuda5.html – archivo de ayuda propio con ayuda sobre algo de nuestro módulo.

miarchivo.php – también podemos crear tantos archivos (páginas) como necesitemos.

Como se comentó en la guía 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 función a los roles para este módulo, su formato es el siguiente:
<?php $mod_nombremodulo_capabilities = nombremodulo:nombre_capacidad_primera' => array( ///Tipo de capacidad array('mod/

72

php En cuanto a los permisos. existen roles generales. 'teacher' => CAP_PROHIBIT. administrador. CAP_PROHIBIT. Este modelo permite que el mismo usuario sea alumno. El sistema tiene cuatro posibles valores para las capacidades o permisos: CAP_ALLOW. 'contextlevel' => CONTEXT_MODULE. Las capacidades o permisos son cargados en la tabla de la base de datos cuando el módulo es instalado o actualizado. 'admin' => CAP_ALLOW. ///Aquí se pueden añadir tantas capacidades como se desee 'mod/nombremodulo:nombre_capaciad_enesima' => array( 'captype' => 'write'. Es importante que el nombre de las capacidades o permisos sea único. 'teacher' => CAP_ALLOW. 'student' => CAP_PROHIBIT ) ) ). 'legacy' => array( 'editingteacher' => CAP_ALLOW. CAP_PREVENT. es necesario actualizar el número de versión del módulo a través del fichero version. ///Contexto de la actividad 'contextlevel' => CONTEXT_MODULE. 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. 'student' => CAP_ALLOW ) ). 73 . 'coursecreator' => CAP_PROHIBIT.php. profesor. ///Permisos 'legacy' => array( 'editingteacher' => CAP_PROHIBIT. aplicables a todo el sitio.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 'captype' => 'write'. 'admin' => CAP_PROHIBIT. Cuando se actualizan o modifican las capacidades o permisos. etc dependiendo del curso en el que se encuentre. ?> Código 15: Ejemplo de fichero access. y heredado (no está establecido). 'coursecreator' => CAP_ALLOW.

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"/> anterior y siguiente.Definición del tipo de documento././.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5..xml Este fichero XML define las tablas de la base de datos que tendrá nuestro módulo.xml define el tipo de datos.xsd" > <!-.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=". nombre y.3. en general. donde se puede crear el esquema de forma más sencilla. frente las anteriores versiones. no se modifica --> <?xml version="1. todos los campos que pueden definirse con sentencias SQL. sobre la tabla 74 ./lib/xmldb/xmldb..0" encoding="UTF-8" ?> <XMLDBPATH="mod/nombremodulo/db" VERSION="20070401" para mod/nombremodulo" COMMENT="Archivo XMLDB xmlns:xsi="http://www. debe existir obligatoriamente. install. establece una gramática para la creación de tablas y hacer así Moodle más portable. que apuntan a la tabla respectivamente.w3. Existe un editor en Moodle llamado XMLDB. que definían un archivo para cada tipo de base de datos. A continuación se adjunta y comenta un fichero de ejemplo: <!-. En el caso de que haya más de una tabla.Definición de la tabla del módulo.Definición de las tablas --> <TABLES> <!-.. --> <TABLE NAME="nombremodulo" COMMENT="Comentario nombremodulo "> <!-. deben enlazarse mediante los campos PREVIOUS y NEXT. y generar el código XML.1. longitud. La creación de las tablas se lleva a cabo con la instalación del módulo.2 install.

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.Sentencia Se define el nombre. 'add'. campo y tabla al que referencian --> <KEYS> <KEY NAME="primary" primaria para nombremodulo "/> </KEYS> TYPE="primary" FIELDS="id" COMMENT="Clave NOTNULL="true" la instancia" <!-. de existir.Claves de la tabla NAME: Nombre de la clave TYPE: Primary. campos análogos a los de las claves--> <INDEXES> <INDEX NAME="course" UNIQUE="false" FIELDS="course"/> </INDEXES> </TABLE> </TABLES> <!-. 'nombremodulo'. field) VALUES (nombremodulo. el tipo de sentencia. no usan campos PREVIOUS ni NEXT --> <SENTENCE TEXT="(module. mtable. REFFIELDS Y REFTABLE: En el caso de las claves externas. action.Contenido de las sentencias propiamente dicho. 'name')" /> <SENTENCE TEXT="(module. 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> <!-. 'name')" /> </SENTENCES> </STATEMENT> 75 .El resto de campos de la tabla deben ir aquí --> </FIELDS> <!-. 'nombremodulo'. field) VALUES (nombremodulo.Índices de la tabla. action.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión 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" SEQUENCE="false" ENUM="false" COMMENT="Nombre de PREVIOUS="course"> <!-. mtable.Sentencias SQL que se ejecutarán al instalar el módulo --> <STATEMENTS> <!-. 'update'.

hay que enlazarlos. y que éstas están formando listas doblemente enlazadas mediante los campos NEXT y PREVIOUS. Al igual que las tablas y los campos.php Este fichero mantiene un registro de los cambios que es necesario realizar entre distintas versiones del módulo. así como los campos id.php.3 upgrade. Los comandos que se usen en este fichero deben ser neutrales en cuanto a la base de datos.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes </STATEMENTS> </XMLDB> Código 16: Ejemplo de fichero install. La primera tabla tiene el mismo nombre del módulo y es obligatoria. los índices y las claves. si se añaden y si hay más de una. $THEME. 5.1.xml Analizando el fichero se puede observar que tenemos tablas y sentencias. /// Actualización necesaria si la versión actual es /// anterior a la del 01 de Abril de 2008 if ($result && $oldversion < 2008040100) { ///Introducir actualizaciones a realizar } /// Actualización necesaria si la versión actual es /// anterior a la del 12 de Abril de 2008 76 . Es por ello.3. En ocasiones la actualización de una antigua versión a una nueva puede implicar cambios mayores (como por ejemplo. $db. La función ‚upgrade‛ deber{ devolver verdadero si todos los cambios se han llevado a cabo de manera satisfactoria. en la base de datos) que pueden hacer que el módulo deje de funcionar correctamente.php: <?php function xmldb_nombremodulo_upgrade($oldversion=0) { global $CFG. usando las funciones definidas en lib/ddlib. course y name. A continuación se muestra un ejemplo de lo que podría ser el contenido del archivo upgrade. $result = true. 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.

1.3.php deberá implementar ciertas funciones preestablecidas que usará Moodle con distintos propósitos:    nombremodulo_add_instance($nombremodulo): Esta función es ejecutada cuando un profesor crea una instancia del módulo. intro y otros campos propios de cada módulo. se ha utilizado este icono para el módulo Gruposlab: 5. de las que destacamos las siguientes:   Las Las funciones variables deben globales nombrarse deberán de la de la siguiente siguiente manera: manera: nombremodulo_nombrefuncion(). lib.php lista todas las instancias de una actividad que están presentes en un determinado curso.3.6 lib.3.php es la biblioteca de funciones del módulo a desarrollar.1.php lib. Debe ser un archivo GIF de tamaño 16x16 píxeles.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes if ($result && $oldversion < 2008041200) { ///Introducir actualizaciones a realizar } return $result. 5.5 index. Normalmente se muestran en formato tabular con una fila por cada instancia de la actividad y con columnas para los campos name. Por ejemplo. 77 .1. editando. actualiza la instancia del módulo.4 icon.php El fichero index. Existen un conjunto de normas que se deben seguir a la hora de desarrollar esta biblioteca. en ella se implementará toda (o casi toda) la funcionalidad del módulo.gif Este archivo es el icono que representa a un módulo. nombremodulo_delete_instance($id): Esta función es ejecutada cuando un profesor elimina una instancia del módulo. nombremodulo_update_instance($nombremodulo): Esta función es ejecutada cuando un profesor. nombrarse $NOMBREMODULO_NOMBREVARIABLE. } ?> Código 17: Ejemplo de fichero upgrade.php Las actualizaciones a realizar en la base de datos se pueden generar copiando el resultado que genera en código PHP el editor XMLDB. 5.

llamada por el cron del núcleo de Moodle. independientemente de su rol (estudiante.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  nombremodulo_user_outline($course.     nombremodulo_scale_used_anywhere($scaleid): Comprueba si la escala está siendo usada por cualquier instancia del módulo. El parámetro es lo que devolvió el formulario impreso por forum_reset_course. $isteacher. Hay que tener cuidado con esta función. tiene que buscar el id de cada instancia del módulo antes de operar. Esta función se ejecutará una única vez.. La forma es consultar las configuraciones relacionando el módulo. Esto significa que esta función. 78 .  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_install(): Ejecuta acciones personalizadas para el módulo después de la instalación.  nombremodulo_cron(): Función que se ejecutará periódicamente según el cron de Moodle. Debe incluir cada usuario involucrado en la instancia. $nombremodulo): Imprime una representación de lo que un usuario ha hecho con una instancia en particular del módulo.php. $nombremodulo): Devuelve un resumen con la información de lo que ha hecho un usuario con una instancia en particular del módulo.  nombremodulo_reset_userdata($data): Es llamada indirectamente por /course/reset. $mod.  nombremodulo_get_participants($nombremoduloid): Debe devolver un vector de los registros de usuarios (todos los datos) que son participantes de una instancia dada del módulo. Es útil para los informes de actividad del usuario. . Necesita sacar algunos controles de formulario para controlar las distintas opciones para resetear el módulo. nombremodulo_reset_course_form_definition(&$mform): Esta función es llamada directamente por /course/reset. debe encontrar la actividad reciente del módulo. a esta función no se le pasa el registro $nombremodulo.  nombremodulo_user_complete($course. que llama a reset_course_userdata() en /lib/moodlelib.  nombremodulo_scale_used($nombremoduloid. si tiene soporte para escalas. profesor.. Debe usar el formulario de la API (Application Programming Interface) para crearlo. y la imprime. Es útil para los informes de actividad del usuario. $user.  nombremodulo_print_recent_activity($course. A diferencia al resto de funciones. $user. que llama a todas las funciones de cada módulo. $mod. nombremodulo_uninstall(): Ejecuta acciones personalizadas para el módulo después de la desinstalación. incluso si existen varias instancias del módulo. $scaleid): Esta función devuelve si una escala está siendo usada por una instancia del módulo.php.).php. admin. $timestart): Dado un curso y un tiempo.

mediante el cual se configurará cada instancia del módulo que se añada a un curso. y para ello está definida la clase moodleform_mod. 5.php Como mostraba el esquema de ficheros de un módulo. como por ejemplo que sea un campo obligatorio. Esta clase debe extender de moodleform_mod y crear el método definition(). mediante el cual definiremos el formulario que presentará las distintas opciones a configurar de la instancia. Las acciones que se listan dentro deben coincidir las que se listaron en la tabla "log_display" en el archivo install.xml.3.    setType: Establece el tipo de contenido del elemento. Para añadir campos al formulario tenemos varias funciones básicas:  addElement: Añade un elemento al formulario. Es utilizada por el núcleo de Moodle durante la organización del log. Moodle proporciona un mecanismo estándar para crear este formulario.1. $mform =& $this->_form.php'). Es utilizada por el núcleo de Moodle durante la organización del log. El primer parámetro es el tipo de elemento y el segundo el nombre. Nuestra clase ha de llamarse obligatoriamente mod_nombremódulo_mod_form.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  nombremodulo_get_view_actions(): Distingue entre acciones de lectura "read" del log. o que sólo pueda tener números.7 mod_form. nombremodulo_post_actions(): Distingue entre acciones de lectura "post" del log. setDefault: Establece el valor por defecto de un elemento. La estructura básica de este fichero sería la siguiente: <?php require_once ('moodleform_mod. 79 . Las acciones que se listan dentro deben coincidir las que se listaron en la tabla "log_display" en el archivo install. El resto de parámetros ya dependen del tipo de elemento. este es uno de los ficheros obligatorios. class mod_nombremodulo_mod_form extends moodleform_mod { function definition() { global $COURSE.xml. addRule: Establece las restricciones de un elemento.

array('writing'. array('size'=>'64')). get_string('required').'nombremodulofieldset'. null. } } ?> Código 18: Ejemplo de fichero mod_form. $mform->setHelpButton('intro'. 'client'). 'nombremodulo')). $mform->addElement('static'. 'form')). comunes a todos los módulos $this->standard_coursemodule_elements(). 'editorhelpbutton'). Reemplazame!'). Reemplazame!'). 'Aquí van los campos de tu módulo. 'nombremodulosetting2'. false. 'name'. 'introformat'. $mform->addRule('name'. get_string('general'. get_string('format')). 'required'.php 'Aquí 80 . 'general'. //---------------------------------------------------------------/// Añadimos el resto de opciones del modulo en este conjunto de /// campos o en otro si resultara más lógico $mform->addElement('static'.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes //---------------------------------------------------------------/// Añadimos el conjunto de campos general. van los campos de tu módulo. 'label2'. /// Añadimos el campo estándar ‘nombre’ $mform->addElement('text'. get_string('nombremoduloname'. 'nombremodulo')). null. get_string('nombremodulointro'. $mform->setType('name'. 'client'). //--------------------------------------------------------------// Añadimos elementos estándar. PARAM_TEXT). donde se muestran todas las ///opciones comunes $mform->addElement('header'. PARAM_RAW). $mform->addElement('format'. $mform->addRule('intro'. 'nombremodulosetting1'. null. 'intro'. 'required'. get_string('nombremodulofieldset'. 'richtext'). $mform->setType('intro'. 'nombremodulo'). //---------------------------------------------------------------// Añadimos los botones estándar. comunes a todos los módulos $this->add_action_buttons(). /// Añadimos los campos opcionales ‘intro’ e ‘introformat’ $mform->addElement('htmleditor'. $mform->addElement('header'. 'label1'.

Si la versión actual es posterior a la previa.php"). 5. en el que cron //deberácomprobar la versión de este módulo ?> Código 19: Ejemplo de fichero version. PARAM_INT). ///Estas líneas se establecen por defecto para obtener el id de la instancia actual $id = optional_param('id'.. Moodle hace los cambios y actualiza a la nueva versión.php. 0. uno de los más importantes a la hora de desarrollar un módulo de actividades para Moodle. $a = optional_param('a'. Su formato es el siguiente: <?php $module->version YYYYMMDDX) = 2007040200. require_once("lib.1. durante el desarrollo del módulo (que ya ha sido instalado en Moodle).php Este archivo es importante porque a la hora de modificar las tablas de la base de datos. a través de db/upgrade. 0. En él se define el contenido que se mostrará a cada usuario de la actividad mediante el uso de capacidades o permisos.1. PARAM_INT). Lo hace comparando la versión actual con la versión anterior.php.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Cabe destacar que los elementos declarados en mod_form. ///Haciendo comprobaciones sobre los parámetros pasados if ($id) { 81 .php").3. // Versión actual del módulo (Formato $module->cron = 0.php.8 version. fuerza a Moodle para que edite las tablas y realice los cambios necesarios. // Intervalo de tiempo. en segundos. ambas ubicadas en lib. y se ha aceptado el formulario introducido. seguramente.php..php es.php El fichero view. A continuación se detalla el código mínimo que debe contener este fichero: <?php /// Remplazar ‚nombremodulo‛ por el nombre del módulo a desarrollar ///Include que todos los ficheros php deben tener require_once(".3. o añadir/eliminar/modificar el archivo db/access././config. junto con el fichero lib.php serán guardados en los campos de la tabla con ese nombre al procesar el formulario sin que lo indiquemos explícitamente.php 5.9 view. el módulo ejecuta la función nombremodulo_add_instance o nombremodulo_update_instance. Una vez se pulsa guardar instancia.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión 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 página, el usuario debe estar autenticado require_login($course->id); ///Añade 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 página if ($course->category) { $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course>shortname</a> ->"; } else { $navigation = ''; } ///Ver documentación de la función get_string() $strnombremodulos = get_string("modulenameplural", " nombremodulo "); $strnombremodulo = get_string("modulename", " nombremodulo "); ///Impresión 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 página ///Aquí debe ir el código del desarrollador /// Imprime el pie de página ", $

82

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes
print_footer($course); ?>
Código 20: Ejemplo de fichero view.php

5.4 Librerías para el desarrollo de módulos
Moodle no solo facilita un entorno para la integración de nuevos módulos desarrollados en PHP, sino que incorpora una serie de librerías enfocadas a facilitar la labor de los desarrolladores. Sin embargo, resulta difícil iniciarse en ellas y conocer el cometido de cada una, a pesar de encontrarse documentación en el propio código fuente. En este apartado se enumerarán algunas de las librerías más importantes, así como las funciones básicas que todo desarrollador debería conocer antes de comenzar a construir un módulo. La API de Moodle es un conjunto de clases y librerías de funciones construidas sobre funciones definidas en las librerías de PHP4, ya que originalmente Moodle estaba basado en esta versión de PHP. Sin embargo, algunas de las nuevas construcciones de Moodle utilizan estructuras orientadas a objetos y proporcionan clases extensibles. La mayoría de las principales librerías de Moodle se encuentran en el directorio /lib/. La nomenclatura de todos estos ficheros generalmente sigue la convención [función]lib.php. Algunos ejemplos son textlib.php y weblib.php. Estas librerías contienen la API de Moodle. Casi todas las librerías del núcleo se incluyen en el flujo de ejecución cuando se carga el archivo config.php mediante la inclusión de /lib/setup.php. El fichero setup.php realiza un include de las principales librerías de Moodle. Esto no significa que se definan todas las funciones disponbles en Moodle. Y, de hecho, cada una de estas librerías puede incluir otras. Sin embargo, el núcleo de las funciones que se pueden necesitar está contenido en estas librerías. Algunas de las más importantes se describirán en los apartados siguientes. Algunas de estas librerías fueron desarrolladas por el propio equipo de Moodle, otras por terceros y, hoy en día, se distribuyen con Moodle gracias a sus licencias de código 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 código generada a partir de los comentarios del propio código fuente por medio de PHPXref, que se puede encontrar en http://xref.moodle.org/nav.html?index.html.

83

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5.4.1 accesslib.php Esta librería describe funciones para el soporte de capacidades. Las tres

funciones que aparecen a continuación servirán para ilustrar el tipo general de las funciones de la librería. No obstante, se recomienda consultar su extensa documentación para obtener información sobre otras funciones que dan soporte al sistema de capacidades. 5.4.1.1 require_capability Esta función comprueba que el usuario tiene cierta capacidad. Si no la tiene, la página deja de ejecutarse mostrando un mensaje de error estándar.
require_capability($capability,
Código 21: Función require_capability

$context=NULL,

$userid=NULL,

$doanything=true, $errormessage='nopermissions', $stringfile='')

Los parámetros 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 función devolverá true si un usuario $userid, por defecto el usuario que esté accediendo al módulo, tiene la capacidad $capability en el contexto $context.
has_capability($capability, $context=NULL, $userid=NULL, $doanything=true)
Código 22: Función has_capability

Parámetros:     $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 función 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)
Código 23: Función get_context_instance

Parámetros:

84

$sort='firstname ASC'. Con un funcionamiento similar a la función get_users().2 CONTEXT_SYSTEM CONTEX_PERSONAL CONTEXT_USER CONTEXT_COURSECAT CONTEXT_COURSE CONTEXT_GROUP CONTEXT_MODULE CONTEXT_BLOCK $instance: Identificación de la instancia del contexto. $search: Una determinada cadena a buscar. $search=''.4. $exceptions: Una lista en forma de array conteniendo ciertos identificadores de usuario a ignorar. $confirmed=false. datalib. $firstinitial=''. datalib. $page=''. get_users($get=true. acepta los siguientes valores: o o o o o o o o  5. $recordsperpage: Número de registros a obtener en cada llamada. solo devolverá los usuarios que hayan sido confirmados en el curso. $confirmed: Si se establece a true. que se detalla a continuación. los usuarios que han sido confirmados en el sistema.php En esta librería se encuentran las funciones para el manejo de la información de la base de datos. los módulos de un determinado curso.php. $exceptions=''. $sort: Fragmento SQL para la ordenación de los registros a devolver.2.1 get_users Esta función obtiene un subconjunto de los usuarios del sitio. los distintos grupos establecidos. $firstinitial: Inicial del primer nombre de los usuarios a buscar. $recordsperpage=''.4. para evitar saturación. $lastinitial=''. $lastinicial: Inicial del apellido de los usuarios a buscar. $fields='*') Código 24: Función get_users Parámetros:         $get: Si se establece a false. solo retornará una cuenta del número de registros coincidentes. todas ellas documentadas en el archivo datalib.php implementa funciones para obtener los cursos del sitio o de un determinado usuario. 85 . los usuarios que conforman cada grupo y más información similar. 5.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  $contextlevel: Nivel del contexto.

el sistema imprimirá el resultado de la ejecución. $feedback: Si se establece a true. Dichas estructuras deben modificarse usando funciones de esta biblioteca y nunca con sentencias propias de determinada base de datos. rename_table() para cambiar el nombre a una tabla. recuerda a las sentencias SQL habituales:         5.php En esta librería se pueden encontrar las funciones para el manejo de la estructura de la base de datos. Se proporcionan funciones como las siguientes.4. add_key() para añadir una clave. Para obtener documentación de funciones menos usuales. como de costumbre. contar e insertar registros en la base de datos. en ocasiones.4 create_table() para crear una tabla. 5. borrar. 86 .4.4. Proporciona funcionalidades avanzadas para hacer la manipulación de la estructura de la base de datos lo más portable posible.4. actualizar.1 Funciones generales 5. execute_sql($command. add_field() para añadir un campo a una tabla. Las funciones que se describirán a continuación serán las que el desarrollador use en un 99% de los casos. se debe consutlar la documentación del archivo. drop_table() para borrar el contenido de una tabla.3 ddllib.php En esta librería se encuentran las funciones necesarias para obtener.4. change_field_tipe() para cambiar el tipo de un campo. add_index() para añadir un índice.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  $fields: Campos de los registros a obtener (igual que el contenido de una sentencia SELECT).1.1 execute_sql Ejecuta una sentencia SQL e imprime el resultado si se especifica. cuyo nombre. 5. $feedback=true) Código 25: Función execute_sql Parámetros:   $command: Sentencia SQL completa a ejecutar. … dmllib.4.

$value1=''. $select='') Código 27: Función record_exists_select Parámetros:   $table: Tabla en la que buscar los registros.2. record_exists_select($table. 87 . $field3=''. record_exists($table. $field2=''.2.4.4. $select: Fragmento completo WHERE. esto se consigue introduciendo el texto ‚{$CFG>prefix}nombre_tabla‛ (sin comillas).4.3 record_exists_sql Devolverá true si la sentencia SQL pasada como parámetro retorna algún resultado.4. $value2: Segundo valor que comparar. $value3: Tercer valor que comparar.2.4. Parámetros:        $table: Tabla en la que buscar los registros. 5. $value2=''.2 Funciones para comprobar la existencia de registros 5.4. 5. 5. $field2: Segundo campo sobre el que comparar. record_exists_sql($sql) Código 28: función record_exists_sql Parámetros:  $SQL: Sentencia SQL a ejecutar.2 record_exists_select Devolverá true si existen registros en la tabla $table cuyos valores se correspondan con el fragmento WHERE pasado como parámetro. $value3='') Código 26: Función record_exists $field1=''. $field1: Primer campo sobre el que comparar.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.4. $value1: Primer valor que comparar.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Para acceder a las tablas de la base de datos debemos precederlas del prefijo de todas las tablas de Moodle. $field3: Tercer campo sobre el que comparar.4.

4. del tipo ‘SELECT COUNT(…) …‛. pero introduciendo una cláusula where.1 count_records Devolverá el número de registros que haya en la tabla $table cuyos valores en los campos $fieldx se correspondan con $valuex. entre otras y junto con su documentación. count_records_sql($sql) Código 31: Función count_records_sql Parámetros:  $SQL: Sentencia SQL a ejecutar.4.php podemos encontrar. $field3=''.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5. get_record_sql() idem.4. $value2=''.4. las siguientes funciones para la obtención de registros:      get_record() para obtener un único registro en forma de objeto.4. count_records_select($table.4. 5. $countitem='COUNT(*)') Código 30: Función count_records_select Parámetros:    $table: Tabla en la que buscar los registros. en dmllib. $value3='') Código 29: Función count_records $field1=''. $countitem: Elemento sobre el que realizar la cuenta. pero introduciendo una cláusula where.4. pero introduciendo una sentencia SQL completa.4. get_record_select() idem. $value1=''. 88 . 5. get_records_select() idem. 5. $field2=''.2 count_records_select Devolverá el número de registros que existen en la tabla $table cuyos valores se correspondan con el fragmento WHERE pasado como parámetro.3. $select=''. $select: Fragmento completo WHERE. get_records() para obtener un array de registros en forma de objetos.3.3 count_records_sql Devolverá el resultado de la ejecución de la sentencia SQL.4. count_records($table.3.4 Funciones para la obtención de registros Con un comportamiento similar a las funciones anteriores.3 Funciones para el conteo de registros 5.4. Parámetros: Análogos a los parámetros de la función record_exists().

insert_record($table.4. la función devolverá el identificador del nuevo registro insertado. $dataobject: Objeto conteniendo el registro a insertar.4.4. con parámetros análogos a record_exists(). $dataobject. 5. $primarykey='id') Código 32: Función insert_record Parámetros:     $table: Tabla en la que insertar el registro.6. $returnid=true.4.4. update_record($table. cuyos nombres de atributos se corresponderán con los campos del registro. 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. en la mayoría de los casos es ‘id’.4. únicamente se implementan dos funciones importantes:  delete_records(). $dataobject: Objeto conteniendo el registro a insertar.4.6. 89 . borra todos los registros que tengan valores coincidentes en los campos pasados como parámetros. $returnid: Si es true.2 update_record Actualiza un registro en la tabla cuyo nombre es pasado como parámetro. $primarykey: La clave primaria del registro a insertar.4.  delete_records_sql() borra todos los registros de la tabla $table pasada como parámetro que coinciden con la cláusula WHERE también pasada como parámetro. pero introduciendo una sentencia SQL completa.5 Funciones para el borrado de registros Para el borrado de registros de la base de datos.6 Funciones para la inserción y actualización de registros 5. en la tabla pasada como parámetro. $dataobject) Código 33: Función update_record Parámetros:   $table: Tabla en la que actualizar el registro.1 insert_record Inserta un registro pasado como objeto. 5.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  get_records_sql() idem. 5.

Así como se especifica el uso obligatorio de la función required_param() (aunque el acceso a las variables $_GET y $_POST funciona perfectamente). Se aconseja leerla detenidamente. helpbutton() imprime un botón de ayuda. Seguramente lo esté aquí.6 moodlelib. print_textfield() imprime un campo de texto. estará desarrollada. idem. 5. choose_from_menu() imprime un menú de selección. es posible que le surja la duda de si cierta funcionalidad.php En esta librería se encuentran las funciones para la creación de elementos HTML y salida web en general. print_heading_with_help(). aunque facilita mucho la tarea al programador.4. como sustituto del conocido <h1>.4.5 weblib. prestando especial atención a la forma en la que Moodle facilita la creación 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). print_textbox() imprime una caja de texto. Cconviene que el desarrollador novel las ojee antes de comenzar su trabajo sin llegar a prestarles una atención mayor de lo conveniente para no complicarse demasiado. 90 . se encuentran documentadas en el propio código fuente:          print_heading(). … El contenido de esta librería es muy extenso y resultará de gran ayuda al nuevo desarrollador. pero proporcionando un botón de ayuda.php En este fichero pueden encontrarse todo tipo de funciones de propósito general para Moodle. como siempre. en ningún documento de Moodle se obliga al uso de funciones para crear elementos del formulario. Según vaya avanzando en el desarrollo. print_simple_box() imprime una caja en la que se puede colocar cualquier tipo de contenido.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5. ligada fuertemente con el núcleo de Moodle. choose_from_radio() imprime botones de radio. A continuación se referencian algunas de las funciones que el desarrollador debería conocer antes de comenzar su trabajo y que.

DOM y DHTML.  YUI: La librería 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. ADOdb realmente resulta muy útil en las bases de datos soportadas para la autenticación externa contra una base de datos y los plugins de matriculación.4. aunque le faltan varios requisitos funcionales importantes. pero ha sido donado bajo las mismas condiciones de licencia GPL. Los pasos básicos para realizar un módulo son:  Desarrollo del formulario para configurar cada nueva instancia del módulo (fichero mod_form.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5. no es una única librería.  5. ADOdb: ADOdb es una librería de bases de datos que proporciona una interfaz unificada de programación para una gran variedad de bases de datos. proporcionando un único código base para acceder a todas las bases de datos soportadas. De esta manera se extendieron las capacidades ofrecidas por ADOdb.php?d=13&rid=715&filter=1. 91 . Hasta ahora. NEWMODULE es un buen punto de inicio para comenzar a crear nuestra actividad. La interfaz de edición de cursos de Moodle utiliza esta librería para poder colocar elementos en el curso simplemente arrastrándolos y soltándolos. Algunas de las librerías externas que podemos utilizar se enumeran a continuación:  PEAR: Las siglas PEAR provienen de PHP Extension and Application Repository (Repositorio de aplicaciones y extensiones PHP). sino un conjunto de herramientas para generar y actualizar librerías PHP y módulos.5 Creación de un módulo sencillo La mayoría de nuevos módulos se crean utilizando la plantilla NEWMODULE.7 Otras librerías importantes Moodle se basa en numerosas librerías. hemos comentado las librerías internas. tanto internas como externas. El más notable de ellos es la falta de funcionalidad para realizar copias de seguridad y restauración. Por tanto.  XMLDB: XMLDB se añadió a Moodle como parte de la iniciativa para agregar soporte para Microsoft SQL y Oracle. A pesar de que Moodle soporta un conjunto básico de bases de datos para su respaldo directo. que es un módulo que no forma parte del núcleo de la distribución de Moodle.org/mod/data/view. de manera que los mismos ficheros pudieran ser usados por los cuatro tipos de bases de datos soportadas hasta el momento. Este módulo puede ser descargado desde http://moodle. mientras se seguía manteniendo el rendimiento. XMLDB convirtió todos los ficheros de configuración de la base de datos en esquemas XML.php).

1 Formulario de configuración de la instancia El fichero mod_form.php y lo renombraremos como prueba. Edición del fichero view. tendremos que descargar la última versión de NEWMODULE y renombrar la carpeta con el nombre de nuestro nuevo módulo. renombraremos también el fichero de idioma.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes     Creación de las tablas del módulo (fichero install. en nuestro editor de textos realizaremos una búsqueda global en todos los archivos. A continuación.php. Después. Pertenece al módulo Newmodule. En primer lugar. Edición del resto de archivos obligatorios para adecuarlos al nuevo módulo: index. reemplazando la palabra newmodule por la palabra prueba. por ejemplo prueba. simplemente con extender la clase moodlemod_form como en la plantilla y añadir los campos de configuración de la instancia que definamos en la base de datos es suficiente.php y ficheros de idiomas.xml). al que nosotros hemos renombrado como prueba. Para ello buscaremos en la carpeta lang/es_utf8 un fichero llamado newmodule.php). Edición de la librería de funciones del módulo (fichero lib. Aquí nos serviremos de la modularidad que nos ofrece la plataforma para no preocuparnos de cómo guardar los datos en la base de datos ni de cómo se define un formulario en HTML.php es llamado cada vez que se añade una instancia de una actividad y con él la configuraremos. 5. 92 .php que muestra cada instancia. En la plantilla ya tenemos los campos obligatorios como name y otros típicos como intro. version. Ahora ya podemos mover la carpeta entera al directorio /mod de nuestro servidor de desarrollo y comenzar a trabajar.5. A continuación se muestra un ejemplo de un formulario generado con la clase moodleform_mod.php.

habría 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 módulo 93 . si queremos añadir un control selector de fecha llamado start_date. $options). En caso de que no existan. Ese código es todo lo que necesitamos para añadir el campo start_date (el control de selección de fecha) en la configuración de la instancia.'optional'=>false). tendremos que escribir el siguiente código: $options=array('startyear'=>date('Y'). 'prueba'). 'start_date'.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 24: Formulario generado con la clase moodleform_mod Ahora podremos añadir más elementos al formulario si lo deseamos. $mform->addElement('date_time_selector'. get_string('startdate'. Código 34: Ejemplo añadir lista desplegable Donde $options será un array en el que le indicaremos al control que debe comenzar a mostrar fechas a partir del año actual. y que además el control no se puede deshabilitar mediante un checkbox. Por ejemplo.

en el submenú Miscelánea.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 25: Añadir un campo selector de fecha a un formulario 5. La plantilla NEWMODULE ya proporciona un fichero válido (install. el editor XMLDB nos muestra los campos de la tabla prueba de nuestro módulo prueba. necesario para guardar el valor del selector de fecha que hemos añadido en el apartado anterior. Usando este editor se evitarán errores ya que no permite guardar la tabla con errores y solamente nos permite dar valores válidos a las propiedades. En la siguiente imagen.xml de la instalación. aunque se pueden declarar más. Para ello es recomendable utilizar el editor XMLDB. 94 . Una vez instalado el módulo ya podremos editar las tablas desde Moodle.2 Tablas del módulo en la base de datos Todo módulo necesita al menos una tabla. donde hemos añadido el campo start_date. para guardar las propiedades de cada instancia.5. Hay que tener en cuenta que al usar el editor se modifica el fichero install. que podemos encontrar en la sección de administración del sitio. y es importante tenerlo en cuenta si se desarrolla el módulo desde otra carpeta distinta a la de instalación.xml) en el que sólo hay que modificar el nombre de la tabla y algunos comentarios. que debe tener el mismo nombre que el módulo.

Con respecto a esto.php del módulo. Las guías de programación de Moodle señalan que solo es necesario crear un fichero separado si se añaden gandes cantidades de código. debemos tener en cuenta que podemos optimizar el rendimiento de nuestro código si colocamos estas funciones adicionales en locallib.php.php.php almacena todas las funciones básicas utilizadas por otros archivos del módulo.3 Edición de la librería de funciones del módulo Como se comentó en capítulos anteriores. Esto mejora el rendimiento porque las funciones del núcleo de Moodle necesitarán incluir el archivo lib.5.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 26: Editor XMLDB 5.php en lugar de situarlas en lib. pero no necesitan las funciones locales. por lo que si las situamos en otro archivo aparte. 95 . Todas las funciones obligatorias están incluidas en la plantilla NEWMODULE y funcionarán perfectamente en nuestra actividad de ejemplo sin realizar ningún cambio. reduciremos el tamaño de lib. el fichero lib. que servirán para reutilizar y para añadir claridad al código. Pero este es también el lugar indicado para colocar nuestras propias funciones adicionales.

el fichero se llamará prueba. description y grade son propias del módulo prueba y podrían utilizar en el formulario de configuración del módulo. como se muestra a continuación: //moodle $string[‘modulename’] = ‘Prueba’. Código 36: Recuperación de cadenas del fichero de idioma Si una cadena no existe en un idioma en particular. $string[‘description’] = ‘Descripción de la actividad’. El idioma por defecto es el inglés en_utf8. de manera que cada cadena de texto que se muestre por pantalla se extraiga de un conjunto de archivos de idioma. $string[‘grade’] = ‘Calificación de la actividad prueba’.php en la carpeta lang/es_es_utf8. ‘prueba’). tendremos que crear un fichero con el mismo nombre que el módulo y extensión . Esto puede producir en determinadas ocasiones la mezcla de 96 . se mostrará por defecto su equivalente en inglés. get_string(‘startdate’. ’prueba’). la cadena startdate irá asociada al selector de fecha que hemos diseñado en apartados anteriores. que se encuentra en una carpeta diferente (moodle/lang). //Del propio módulo $string[‘name’] = ‘Nombre para la actividad prueba’.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5. Estas cadenas se utilizan de la siguiente manera: print_string(‘startdate’. compuesto de líneas de texto cortas denominadas cadenas (string). Las variables name. Por ejemplo. si el módulo se denomina prueba. $string[‘startdate’] = ‘Seleccione la fecha de inicio’.php y estará en la carpeta moodle/mod/prueba/lang/es_es_utf8. $string[‘modulenameplural’] = ‘Pruebas’. Los paquetes de idioma se encuentran en la carpeta moodledata/lang con nombres que indican que son paquetes de idioma utf-8. Por último. Cada paquete de idioma que se quiera definir ha de crearse como un fichero de idioma.5. Para desarrollar un fichero de idioma para nuestro módulo que sea español internacional (es_utf8). modulenameplural).4 El paquete de idioma Moodle es una plataforma internacional. … Código 35: Ejemplo de cadenas en el fichero de idioma Las primeras entradas hacen referencia a variables que utiliza Moodle (modulename.

5 Permisos del módulo Como ya se comentó en el apartado anterior. 'teacher' => CAP_ALLOW. etc. Asignando permisos a la actividad capacidades para los administradores. 'legacy' => array( 'teacher' => CAP_ALLOW.5. editaremos el fichero access. 'admin' => CAP_ALLOW ) ). 5. configurar distintos tipos de vistas para los diferentes roles. 'contextlevel' => CONTEXT_MODULE. los permisos sirven para establecer el nivel de acceso a determinadas funcionalidades que tendrán los distintos tipos de usuario (o roles) para un módulo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes diferentes lenguajes (normalmente el inglés más el lenguaje definido por el usuario). Para establecer permisos en nuestra actividad. Este problema se corrige con la inserción de la cadena que produce el fallo en el fichero de idioma correspondiente. el fichero quedaría de la siguiente manera: <?php $mod_inicio_capabilities = array( 'mod/prueba:view' => array( 'captype' => 'read'. 'legacy' => array( 'guest' => CAP_ALLOW. 'mod/prueba:grade' => array( 'captype' => 'write'. 'editingteacher' => CAP_ALLOW. 'student' => CAP_ALLOW. Si el módulo se denomina prueba y queremos establecer qué usuario tendrá acceso a la vista del mismo y qué usuario puede calificar el módulo. 'admin' => CAP_ALLOW ) se puede restringir el acceso a cierta información.php que encontramos en la carpeta db de nuestro módulo. establecer 97 . 'editingteacher' => CAP_ALLOW. 'contextlevel' => CONTEXT_MODULE.

El valor que utilicemos lo tendremos en cuenta en el fichero db/update.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes ) ). es decir.php.6   Otros ficheros importantes index. y después añadir al archivo upgrade. 98 .5.php: Este fichero es quizás el más importante de un módulo ya que muestra la instancia.php: Solamente con cambiar newmodule por el nombre de nuestro módulo ya listará todas las instancias del mismo.php. pero puede que en algún momento tengamos que actualizar esas tablas y no podemos desinstalar el módulo porque se perdería la información de las tablas que ya tenemos creadas. llamará al archivo upgrade. En la plantilla. La solución es crear un script que nos actualice las tablas necesarias cuando nuestra versión del módulo sea mayor. $field = new XMLDBField('scale').  view. ?> Código 37: Ejemplo de definición de capacidades 5. Este fichero se llama upgrade.php del módulo. La versión del módulo que se encuentra en la base de datos de configuración de Moodle se compara con el valor que se encuentra en el archivo version. A continuación se muestra una sección de código de ejemplo generado por el edito XMLDB. como en los anteriores.php. ya que en una variable tendremos todos los valores de la instancia. sustituyendo newmodule por el nombre de nuestro módulo tendremos la base para crear nuestra actividad. y cuando Moodle detecte una nueva versión del módulo. XMLDB_UNSIGNED. $field->setAttributes(XMLDB_TYPE_INTEGER. version. y como todos los demás archivos. Tan solo tendremos que modificarlo añadiendo al código las modificaciones que deseamos hacer a en la base de datos. '10'. 5.5. ya se encuentra creado en la plantilla NEWMODULE. muestra la nueva actividad.php: Tendremos que modificar este fichero con la fecha que identifica a la versión. if ($result && $oldversion < 2009060103) { /// Definimos el campo scale que se añadirá a la tabla prueba $table = new XMLDBTable('prueba'). que representa las líneas necesarias para añadir un nuevo campo a la tabla prueba llamado scale.7 Actualización del módulo Ya sabemos crear nuestras propias tablas con el editor XMLDB. A partir de ahí ya es cosa del desarrollador darle la funcionalidad deseada a la actividad. Estos cambios se pueden implementar con el editor XMLDB.php el código PHP que se genera.

php. A continuación se muestra un ejemplo e código 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 .5. El usuario no se dará cuenta de que la información se ha perdido hasta que se haga una restauración del curso. ninguno de los datos referentes a nuestro módulo se habrá guardado.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes XMLDB_NOTNULL. Las funciones de restauración de una actividad se almacenan en restorelib. null. Sin embargo. $field). podemos utilizar una copia de algún módulo que sí lo utilice. /// Añadimos el campo $result = $result && add_field($table. aunque la intención es que siga siendo compatible con versiones anteriores. null. y modificarlo para que se adapte a las necesidades de nuestro módulo. la copia de seguridad se ejecutará sin errores. '0'. El núcleo de Moodle llama a las funciones que se encuentran en el fichero backuplib. como por ejemplo el módulo Choice. Código 38: Ejemplo de cambios en la base de datos 5.php.0. Aunque la plantilla NEWMODULE carece de soporte para copias de seguridad y restauración. Si no se encuentra el fichero backuplib.php de todos los módulos de un curso. null. Tenemos que tener en cuenta que el sistema de copias de seguridad y restauración está siendo completamente reescrito en Moodle 2.8 Crear soporte para copias de seguridad y restauración El sistema de copias de seguridad de cursos de Moodle utiliza un formato simple de fichero XML para almacenar datos de las actividades. lo que nos podría hacer perder información de los usuarios. 'timemodified').

si nuestro módulo tiene una tabla llamada nombremodulo_respuesta. 100 . nombremodulo_encode_content_links(): interactivos.1 Funciones en backuplib. Llama Necesaria a Llamada la para función soportar por interna enlaces nombremodulo_check_backup_mods() para generar información de cada instancia nombremodulo_respuesta_ids_by_instance().  nombremodulo_check_backup_mods_instances(): de  la actividad en un curso.5. esta función llamará a backup_nombremodulo_respuesta(). Por ejemplo. Podemos organizar dichas funciones en dos categorías: las comunes a todos los módulos de actividad y las que son internas de un módulo en particular. con el objetivo de soportar correctamente la función de copia de seguridad. Hace copia de seguridad de una o más actividades.php En esta sección encontraremos un listado de las funciones que deben crearse en el fichero backuplib.  nombremodulo_ids(): Devuelve un array de todos los identificadores de nuestro módulo en un curso y es usada por nombremodulo_check_backup_mods().  nombremodulo_check_backup_mods(): Esta función es llamada desde las librerías de copia de seguridad del núcleo que se encuentran en /backup. 5. Estas funciones son las siguientes:  nombremodulo_backup_mods(): Es el punto de entrada principal para el proceso de backup. Se utiliza para generar información para las pantallas de opciones de copia de seguridad. Asegura que la interactividad de los enlaces permanece intacta entre los procesos de copia de seguridad y restauración.php de nuestro módulo.  nombremodulo_backup_one_mod(): Crea la copia de seguridad de una única instancia de la actividad.8. Llama a la función nombremodulo_backup_one_mod() para cada instancia de la actividad en el curso.5.8.1. Es responsable de llamar a las funciones de copia de seguridad internas específicas del módulo.1 Funciones comunes de copia de seguridad Las funciones comunes de copia de seguridad se deben implementar para cada módulo de actividad.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes <ROLES_ASSIGNMENTS> </ROLES_ASSIGNMENTS> </MOD> Código 39: Ejemplo de código XML de backup 5.

1.8.2. Por ejemplo. aparte de la tabla principal. Sin embargo.  nombremodulo_respuesta_ids_by_instance(): del módulo. implementaría las siguientes tres funciones.php de nuestro módulo. 5.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 5. y es llamado desde el núcleo de Moodle para realizar interna. A su vez. 5. tiene una tabla llamada nombremodulo_respuesta. llama a la función nombremodulo_respuestas_restore_mods() para realizar funciones de restauración 101 . podemos organizar dichas funciones en dos categorías: las comunes a todos los módulos de actividad y las que son internas de un módulo en particular.8. las restauraciones. Es llamada Devuelve por un la array de identificadores de la tabla nombremodulo_respuestas para una instancia particular función nombremodulo_check_backup_mods_instances().2 Funciones internas de copia de seguridad Las funciones internas de copia de seguridad también deben ser implementadas para cada módulo de actividad. estas pueden variar dependiendo de la estructura interna de nuestro módulo.php. nombremodulo_respuesta_ids_by_course(): Utiliza una sentencia SQL para devolver un array de identificadores de la tabla nombremodulo_respuesta. Se la llama desde la función restore_decode_content_links().  backup_nombremodulo_respuesta(): Crea la salida XML para hacer la copia de seguridad  de la tabla nombremodulo_respuesta. Generalmente.1 Funciones comunes de restauración Las funciones comunes deben ser implementadas para cada módulo de actividad para que se pueda soportar la función de restauración. Estas funciones son las siguientes:  nombremodulo_restore_mods(): Este es el punto de entrada principal al código de restauración del módulo.5. necesitaremos las siguientes tres funciones para cada tabla extra que implemente nuestra actividad.5. Itera a través de todo el contenido del módulo y llama a la función nombre_modulo_decode_content_links() donde es necesario realizar la decodificación.  nombremodulo_decode_content_links_caller(): Invierte la codificación de enlaces del proceso de copia de seguridad para restaurar la interactividad de los enlaces. Es llamada por nombremodulo_check_backup_mods().8. Al igual que en el caso de las funciones de backuplib.5.2 Funciones en restorelib. Se ejecuta desde nombremodulo_backup_mods(). si nuestro módulo.php En esta sección encontraremos un listado de las funciones que deben crearse en el fichero restorelib.

  nombremodulo_restore_logs(): Devuelve un registro de log. necesitaremos una función para cada tabla adicional que hayamos implementado en nuestra actividad. nombremodulo_restore_wiki2markdown(): Convierte instrucciones del formato FORMAT_WIKI al formato FORMAT_MARKDOWN. 102 .8.5. Sin embargo.2.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  Nombremodulo_decode_content_links(): Realiza la decodificación actual de contenido en el archivo de restauración. 5.2 Funciones internas de restauración Las funciones internas de restauración también deben ser implementadas para cada módulo de actividad. Llamada por la función restore_log_module(). como se muestra a continuación:  nombremodulo_respuesta_restore_mods(): Esta función restaura las entradas de la tabla nombremodulo_respuesta y es llamada por la función nombremodulo_restore_mods(). Generalmente. pueden variar dependiendo de la estructura interna del módulo. Esta función se requiere para soportar el enlazado interactivo.

pasando por un análisis detallado de la aplicación. El problema del reparto de los grupos de laboratorio viene existiendo desde hace muchos años. descargados desde la página oficial de Moodle para su posterior instalación en el sistema. permitirá que 103 .1 Descripción y planteamiento del problema Como ya se ha comentado en apartados anteriores. siempre que se apunten dentro del periodo establecido por el profesor. El módulo. Dentro de esta plataforma se hace un uso intensivo de los recursos estándar de Moodle. los alumnos de la asignatura se deben dividir en grupos más pequeños que se adecuen a las plazas disponibles en cada laboratorio. horario de asignaturas de otros cursos. En cursos anteriores se resolvía el problema poniendo una lista en la puerta del laboratorio. y por ello se les debe dar a los alumnos la posibilidad de elegir. al que llamaremos Gruposlab. ya que tenía en cuenta el orden de inscripción de los alumnos a la hora de repartir los grupos. Este reparto no es fácil de hacer. basadas en las circunstancias personales de cada uno (horarios de trabajo. impartidas generalmente en laboratorios con un número limitado de equipos informáticos. hasta los manuales de usuario. Estas circunstancias personales deben adaptarse a los horarios establecidos por los profesores.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6 Módulo de gestión de grupos de laboratorio: Gruposlab 6. o posteriormente mediante la utilización de una aplicación web específica que seguía contando con el mismo problema. a la que los alumnos debían ir corriendo a apuntarse para asegurarse un sitio en su grupo preferido. que a día de hoy no está cubierta por ningún módulo existente. etc). Para resolver este problema. Normalmente las asignaturas teóricas disponen también de una o varias sesiones prácticas. Pero se ha observado una carencia en relación al sistema de reparto de grupos de laboratorio. puesto que cada alumno tiene sus propias preferencias. el Departamento de Matemáticas de la Universidad de Alcalá utiliza activamente la plataforma de enseñanza virtual Moodle como complemento on-line a su actividad docente presencial. así como de otros módulos no estándar. Se parte desde la definición del sistema y el catálogo inicial de requisitos.1 Definición del sistema En este capítulo se reúne toda la documentación técnica generada a lo largo del proceso de desarrollo del módulo. por ejemplo. dentro de lo que se ha definido como modalidad de enseñanza b-learning. que cuenta con todos los diagramas y las explicaciones necesarias para entender su funcionamiento. 6. se pretende desarrollar un módulo para Moodle que se encargue de gestionar este reparto de grupos de laboratorio sin tener en cuenta el orden de inscripción de los alumnos.1. Por este motivo.

el alumno podrá consultar el grupo al que ha sido finalmente asignado. Adicionalmente.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes tanto los profesores como los estudiantes interactúen con él para lograr el propósito de repartir los grupos. Además. Además podrá realizar manualmente los cambios de alumnos que considere necesarios entre los distintos grupos. para después seleccionar varias opciones en orden de preferencia. El profesor también establecerá un periodo de matriculación durante el cual los alumnos podrán acceder a la plataforma y seleccionar sus opciones en orden de preferencia.2 Descripción general del entorno tecnológico El módulo Gruposlab se integrará en la plataforma virtual Moodle. a su vez. indicándoles el grupo al que han sido asignados. El alumno. cuando se lleve a cabo el reparto de grupos de laboratorio. El profesor de una asignatura podrá agregar el módulo Gruposlab a su curso de Moodle y después configurarlo añadiendo la información relativa a todos los grupos de prácticas que se abrirán de dicha asignatura. el sistema avisará a todos los profesores de la asignatura enviándoles un correo electrónico. Por lo tanto será la propia plataforma la que marque el entorno tecnológico del sistema. podrá acceder a la plataforma y visualizar la información disponible de todos los grupos de laboratorio. El algoritmo de reparto tendrá en cuenta todas las opciones si no fuera posible situar a un alumno en su primera opción. teniendo en cuenta tanto las preferencias de los profesores como de cada uno de los alumnos. Cuando el proceso de reparto haya finalizado. entre la que se incluye el lugar donde se impartirá. el módulo Gruposlab deberá cumplir con todos los requisitos de programación que el proyecto Moodle requiere para todas las extensiones de la plataforma programadas por terceros. Podemos 104 . se realizará automáticamente el reparto de alumnos en los grupos.1. cuando acceda al módulo Gruposlab. de manera que pueda ser aceptado e incluido en sus repositorios para que otras personas e instituciones que lo consideren de interés puedan hacer uso libre de él. También enviará un mensaje de correo a todos los alumnos que se hayan matriculado. 6. el nombre del profesor responsable y el número máximo de alumnos permitido en cada grupo. el profesor podrá comprobar los resultados y descargar las listas de alumnos de todos sus grupos de laboratorio. para intentar colocarlos en su opción preferida. Una vez que se ha cerrado el periodo de matriculación. utilizando un algoritmo que se basa principalmente en ir eligiendo aleatoriamente a todos los alumnos uno por uno. Una vez que haya terminado el periodo de matriculación y se haya llevado a cabo el reparto de grupos.

En nuestro caso. Además. sólo se ataca al nivel requerido sin tener que revisar entre código mezclado. La segunda capa será el nivel de aplicaciones. En el diseño de sistemas informáticos actual se suele usar las arquitecturas multinivel o programación por capas. lo que permite el diseño de arquitecturas escalables (que pueden ampliarse con facilidad en caso de que las necesidades aumenten). cada grupo de trabajo está totalmente abstraído del resto de niveles. según se muestra en el esquema siguiente: Ilustración 27: Entorno tecnológico La ventaja principal de esta implementación física es que el desarrollo se puede llevar a cabo en varios niveles y. que la capa de negocio y la capa de datos se 105 . existiendo multitud de ordenadores donde resida la capa de presentación (son los clientes de la arquitectura cliente/servidor). de forma que basta con conocer la API que existe entre niveles.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes considerar a Moodle como una arquitectura de tres capas. de este modo. en caso de que sobrevenga algún cambio. La tercera capa será el servidor de ficheros y bases de datos donde se almacenará la información relativa a los cursos y usuarios de Moodle. como es nuestro caso. En dichas arquitecturas. que envuelve el software de aplicación usado en la programación de la plataforma y todos sus módulos. También es posible. un servidor para la capa de negocio y otro para la capa de datos. Todas estas capas podrán residir en diferentes equipos. a cada nivel se le confía una misión simple. la primera capa serán los ordenadores de los usuarios. permite distribuir el trabajo de creación de una aplicación por niveles. donde estos podrán interactuar con la interfaz Web de Moodle.

1. Además contará con acceso a todas las funcionalidades de los usuarios Estudiante y Profesor. Además.2 Catálogo de requisitos En el catálogo de requisitos realizamos la especificación de los requisitos de la aplicación a partir de la definición del sistema.  Profesor: el profesor de un curso podrá añadir el módulo Gruposlab a dicho curso y configurarlo a su medida añadiendo el número deseado de grupos de laboratorio. 6.1 RQF-01_Visualización de información IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-01 1. podrá entrar al sistema para comprobar en qué grupo ha sido finalmente matriculado.1 Estudiante 6.2. PRIORIDAD COMENTARIOS Tabla 1: RQF-01_Visualización de información 106 . 6. una vez que se han repartido los grupos.3 Identificación de usuarios Podemos distinguir tres tipos de usuarios que interactuarán con el Módulo Gruposlab: administradores.1.2. o incluso que las tres capas se encuentren en el mismo equipo si se trata de un entorno de desarrollo.2.1.  Estudiante: el estudiante podrá ver la descripción de cada grupo de laboratorio. 6. y realizar los intercambios de alumnos entre grupos que considere necesarios. Una vez que se ha haya cerrado el periodo de matriculación. 6. y tendrá la opción de seleccionar sus grupos preferidos para inscribirse. así podemos ver qué requisitos ha de tener la aplicación para cumplir las necesidades de cada usuario. el profesor podrá ver la lista de alumnos matriculados en cada grupo.1 Requisitos funcionales Para los requisitos funcionales usamos el enfoque de necesidades de los usuarios.0 (12/7/2010) Mª Jesús García Funcional Visualización de información: La aplicación permitirá al estudiante visualizar la información correspondiente a cada grupo de laboratorio configurado por el profesor.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes encuentren alojadas en el mismo servidor. profesores y estudiantes.  Administrador: El administrador podrá instalar y desinstalar el módulo dentro de la plataforma virtual Moodle. Alta También se mostrarán los grupos situados sobre un horario semanal.1.

4 RQF-04_Aviso de reparto IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-04 1.2.3 RQF-03_Modificación de la inscripción IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-03 1.1.2. Muy Alta Se le permitirá seleccionar varias opciones en orden de preferencia. 6. el sistema deberá avisar al alumno mediante correo electrónico.1.1.0 (12/7/2010) Mª Jesús García Funcional Aviso de reparto: Cuando se produzca el reparto de grupos de laboratorio.2. Media Las modificaciones estarán admitidas mientras no se haya cerrado el periodo de matriculación.0 (12/7/2010) Mª Jesús García Funcional Modificación de la inscripción: Una vez que el estudiante se ha inscrito.1.0 (12/7/2010) Mª Jesús García Funcional Inscripción: El módulo permitirá al alumno matricularse en un grupo de laboratorio.1. podrá acceder a la plataforma todas las veces que desee para modificar su elección.1. PRIORIDAD COMENTARIOS Tabla 4: RQF-04_Aviso de reparto 107 . Media También se le informará en el mismo correo del grupo en el que ha sido inscrito.2 RQF-02_Inscripción IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS Tabla 2: RQF-02_Inscripción RQF-02 1. PRIORIDAD COMENTARIOS Tabla 3: RQF-03_Modificación de la inscripción 6.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.

2. Tabla 6: RQF-06_Inserción en un curso 6.3 RQF-08_Configuración de la instancia IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQF-08 1.1.2. Muy Alta Aquí seleccionará el número de grupos que habrá disponibles.5 RQF-05_Información de grupo asignado IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-05 1.2.2.0 (12/7/2010) Mª Jesús García Funcional Eliminación de un curso: el profesor podrá eliminar la instancia del módulo Gruposlab de su curso cuando lo desee.1.1 RQF-06_Inserción en un curso IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQF-06 1. Tabla 7: RQF-07:_Eliminación de un curso 6.1. PRIORIDAD COMENTARIOS Tabla 5: RQF-05_Información de grupo asignado 6.2.2.2.1.0 (12/7/2010) Mª Jesús García Funcional Configuración de la instancia: el profesor podrá configurar los parámetros generales de la instancia mediante un formulario.2 Profesor 6.2.0 (12/7/2010) Mª Jesús García Funcional Información de grupo asignado: El alumno podrá acceder al sistema para comprobar en qué grupo ha sido inscrito después de realizarse el reparto. Muy Alta Funcionalidad proporcionada por el propio núcleo de Moodle.2 RQF-07_ Eliminación de un curso IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQF-07 1.1.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6. Muy Alta Funcionalidad proporcionada por el propio núcleo de Moodle.0 (12/7/2010) Mª Jesús García Funcional Inserción en un curso: El profesor podrá seleccionar el módulo Gruposlab para añadirlo a un curso. Tabla 8: RQF-08_Configuración de la instancia 108 . Alta Se le sugerirá que contacte con el profesor en caso de que desee realizar algún cambio.1.

1. se podrán modificar unos datos u otros.2.2.2.7 RQF-12_Visualización de grupos IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQF-12 1.1.1. Muy Alta Dependiendo del punto en que nos encontremos con respecto al periodo de matriculación.2.2.0 (12/7/2010) Mª Jesús García Funcional Modificación de la instancia: El profesor podrá acceder a la configuración de la instancia y modificarla. los grupos que ha configurado.6 RQF-11_Modificación de configuración de grupos IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-11 1.1. Media El nombre de cada grupo será un enlace que mostrará más información del grupo si se pincha sobre él.2.5 RQF-010_Configuración particular de cada grupo IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-010 1. Alta PRIORIDAD COMENTARIOS Tabla 11: RQF-11_Modificación particular de grupo 6.2. Tabla 9: RQF-9_Modificación de la instancia 6.2. Alta PRIORIDAD COMENTARIOS Tabla 10: RQF-10_Configuración particular de cada grupo 6.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.0 (12/7/2010) Mª Jesús García Funcional Configuración particular de cada grupo: El profesor podrá configurar individualmente cada uno de los grupos que ha seleccionado en la configuración general.0 (12/7/2010) Mª Jesús García Funcional Visualización de grupos: el profesor podrá ver. situados en un calendario semanal.0 (12/7/2010) Mª Jesús García Funcional Modificación de configuración de grupos: El profesor podrá modificar la configuración de cada uno de los grupos de laboratorio.4 RQF-09_Modificación de la instancia IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQF-09 1. Tabla 12: RQF-12_Visualización de grupos 109 .

8 RQF-13_Visualización de listas de estudiantes IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-13 1. Alta El profesor podrá asignar al grupo que desee a los alumnos que no se han inscrito en ningún grupo.0 (12/7/2010) Mª Jesús García Funcional Descarga de listas de estudiantes: El profesor podrá descargar el listado de estudiantes de cada grupo en formato de hoja de cálculo.1.0 (12/7/2010) Mª Jesús García Funcional Aviso de reparto: Cuando se produzca el reparto de grupos de laboratorio.2. Alta PRIORIDAD COMENTARIOS Tabla 13: RQF-13_Visualización de listas de estudiantes 6. Media PRIORIDAD COMENTARIOS Tabla 14: RQF-14_Descarga de listas de estudiantes 6.11 RQF-16_Aviso de reparto IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-16 1.10 RQF-15_Redistribución de estudiantes IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-15 1.1. el sistema deberá avisar al profesor mediante correo electrónico.2.0 (12/7/2010) Mª Jesús García Funcional Redistribución de estudiantes: Una vez que se ha producido el reparto de grupos.2.2.1.2. el profesor podrá agregar o eliminar los alumnos que desee de cualquiera de los grupos.2.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6. Media PRIORIDAD COMENTARIOS Tabla 16: RQF-16_Aviso de reparto 110 . PRIORIDAD COMENTARIOS Tabla 15: RQF-15_Redistribución de estudiantes 6.1. el profesor podrá visualizar por pantalla el listado de alumnos inscritos en cada grupo.2.0 (12/7/2010) Mª Jesús García Funcional Visualización de listas de alumnos: una vez que se ha producido el reparto de grupos.9 RQF-14_Descarga de listas de estudiantes IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-14 1.2.

2.3.1.0 (12/7/2010) Mª Jesús García Funcional Actualización del módulo: El administrador se encargará de realizar las modificaciones necesarias en el módulo y de llevar a cabo la actualización en Moodle.1 RQF-17_Instalación del módulo IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-17 1.0 (12/7/2010) Mª Jesús García Funcional Instalación del módulo: El administrador será el encargado de instalar el módulo Gruposlab en la plataforma de enseñanza virtual Moodle.1.2. Alta PRIORIDAD COMENTARIOS Tabla 18: RQF-18_Actualización del módulo 6.1.1.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.2.3 RQF-19_Desinstalación del módulo IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQF-19 1.3. Muy Alta PRIORIDAD COMENTARIOS Tabla 17: RQF-17_Instalación del módulo 6.2 RQF-18_Actualización del módulo IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-18 1.3.3 Administrador 6.0 (12/7/2010) Mª Jesús García Funcional Desinstalación del módulo: El administrador de Moodle llevará a cabo la tarea de desinstalar el módulo Gruposlab del sistema.2. Muy Alta Tabla 19: RQF-19_Desinstalación del módulo 111 .

0 (12/7/2010) Mª Jesús García Funcional Reparto de grupos: el sistema deberá proceder de forma automática al reparto de grupos cuando se alcance la fecha final del periodo de matriculación.2.1 RQF-20_Reparto de grupos IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-20 1.2 RQF-21_Eliminación de archivos temporales IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN RQF-21 1.4 Sistema 6.2.2.0 (12/7/2010) Mª Jesús García Funcional Eliminación de ficheros temporales: el sistema deberá eliminar de forma periódica los ficheros temporales creados cuando un profesor solicita la descarga del listado de alumnos en formato hoja de cálculo. Alta PRIORIDAD COMENTARIOS Tabla 21: RQF-21_Eliminación de archivos temporales 112 .4.1.1. Muy Alta PRIORIDAD COMENTARIOS Tabla 20: RQF-20_Reparto de grupos 6.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.4.1.

0 (17/7/2010) Mª Jesús García Datos Se almacenarán los datos necesarios para la configuración de la instancia:  id  course  name  start_date  end_date  groups_number  intro  introformat  timecreated  timemodified  configured  distributed  full_groups Muy Alta PRIORIDAD COMENTARIOS Tabla 22: RQD-01_Datos de la instancia 6.2.2.2.2.1 RQD-01_Datos de la instancia IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN RQD-01 1.2.2 RQD-02_Datos de los grupos IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN RQD-02 1.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.2 Requisitos de datos Para los requisitos de datos usamos el enfoque de que puedan usarse como modelo de la base de datos.0 (17/7/2010) Mª Jesús García Datos Se almacenarán 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 Muy Alta PRIORIDAD COMENTARIOS Tabla 23: RQD-02_Datos de los grupos 113 . 6.

0 (17/7/2010) Mª Jesús García Interfaz Se mostrará un calendario semanal donde aparezcan los grupos disponibles. Tabla 26: RQI-02_Calendario de grupos 114 .2.3 RQD-03_Datos de los estudiantes IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN RQD-01 1.3 Requisitos de Interfaz 6.  Visualización de listados de estudiantes. Alta El nombre de los grupos será un enlace que lleve a una página con más información de cada grupo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.2.2.2.2 RQI-02_Calendario de grupos IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQI-02 1.  Reordenación de estudiantes Alta PRIORIDAD COMENTARIOS Tabla 25: RQI-01_Interfaces separadas 6.  Visualización de grupos de laboratorio  Elección/modificación de opciones de inscripción.3.1 RQI-01_Interfaces separadas IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN RQI-01 1.  id  id_student  id_instance  id_choice  option1  option2  option3 Muy Alta PRIORIDAD COMENTARIOS Tabla 24: RQD-03_Datos de los estudiantes 6.0 (17/7/2010) Mª Jesús García Interfaz Se crearan interfaces separadas para cada una de las siguientes funcionalidades del sistema:  Configuración/modificación de la instancia  Configuración/modificación de grupos de laboratorio.0 (17/7/2010) Mª Jesús García Datos Se almacenarán los datos relativos a las opciones seleccionadas por cada estudiante.3.2.

2.2 RQS-02_Configurar grupos IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQS-02 1.4.4. Alta Esta capacidad estará permitida para los siguientes roles:  'editingteacher'  'coursecreator'  'teacher'  'admin' Tabla 28: RQS-02_Configurar grupos 6.3 RQS-03_Inscribirse IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS Tabla 29: RQS-03_Inscribirse RQS-03 1.4. Se Controlará que cada tipo de usuario pueda acceder solo con los permisos que le correspondan de acuerdo a su rol.2.0 (17/7/2010) Mª Jesús García Seguridad Inscribirse. Se creará una capacidad que permita configurar los grupos de laboratorio. Alta Esta capacidad estará permitida para los siguientes roles:  'student' 115 .2. Alta PRIORIDAD COMENTARIOS Tabla 27: RQS-01_Control de acceso de usuarios 6.2. Se creará una capacidad que permita inscribirse a los grupos de laboratorio.4 Requisitos de Seguridad 6.0 (17/7/2010) Mª Jesús García Seguridad Control de acceso de usuarios.1 RQS-01_Control de acceso de usuarios IDENTIFICADOR VERSIÓN AUTORES TIPO DESCRIPCIÓN RQS-01 1.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.0 (17/7/2010) Mª Jesús García Seguridad Configurar grupos.

 Los bloques de código siempre deben estar encerrados por llaves  Las cadenas tienen que ser definidas utilizando comillas simples siempre que sea posible.2.  El sangrado del texto debe ser siempre de 4 espacios. y empezar por el nombre del módulo al que pertenecen.  Los nombres de las funciones tienen que ser palabras sencillas en minúsculas y en Inglés. La referencia completa se puede consultar en el apartado Guías de estilo para desarrolladores de este documento.  Las constantes tienen que definirse siempre en mayúsculas.0 (12/7/2010) Mª Jesús García Codificación El código fuente de la aplicación deberá respetar los estándares de Moodle. Alta Se comentan las principales reglas de estilo que se deben cumplir.  Los nombres de las variables tienen que ser siempre fáciles de leer. procurando que sean palabras en minúsculas con significado en inglés.  Los comentarios deben ser añadidos de forma que resulten prácticos. A partir de él detallaremos las entidades.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.5 Requisitos de codificación 6.5. para explicar el flujo del código y el propósito de las funciones y variables. relaciones y atributos que lo componen. Tabla 30: RQC-01_Estilo de código 6.3.1 RQC-01_Estilo de código IDENTIFICADOR VERSIÓN AUTOR TIPO DESCRIPCIÓN PRIORIDAD COMENTARIOS RQC-01 1.2. 116 .3 Análisis de la aplicación 6. y empezar con el nombre del módulo al que pertenecen.1 Modelo de datos Describiremos el modelo de datos del módulo mediante el siguiente diagrama de Entidad-Relación.

También se almacena la referencia de la instancia a la que pertenece cada grupo. o el lugar donde se impartirá.3.1 Entidades Las entidades que componen el modelo son las siguientes:  gruposlab: La entidad gruposlab almacena la información referente a cada instancia del módulo Gruposlab. Algunos de los datos que se guardan son requeridos por Moodle para el correcto funcionamiento del módulo. el número máximo de alumnos que se permitirá que se matriculen. entre la que se encuentra el profesor responsable del grupo. También se guarda la referencia del curso al que pertenece dicha instancia. mientras que otros son propios de la configuración particular de cada instancia. se insertará un resgistro en esta tabla.1. Cada vez que un profesor añada una actividad de Grupos de Laboratorio a uno de sus cursos.  gruposlab_groups: La tabla gruposlab_groups almacena la información de cada grupo de laboratorio que se configura en el sistema. 117 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 28: Diagrama Entidad/Relación 6.

1. Cada uno de estos grupos que aparecen en la tabla gruposlab_groups sólo puede pertenecer a una instancia concreta.  Relación course-gruposlab: Cada curso del sistema puede configurar las instancias del módulo Gruposlab que desee. mientras que cada estudiante que aparece en un registro de la tabla gruposlab_students solo puede haberse inscrito en una instancia concreta. 118 . pero cada alumno sólo puede estar inscrito en un grupo. Cada estudiante que aparece en un registro de la tabla gruposlab_students sólo puede corresponderse con un usuario de la tabla user del sistema.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  gruposlab_students: Esta entidad almacena las opciones que elige cada estudiante de Moodle que se inscribe en los grupos de laboratorio. por lo que se guarda una referencia a la tabla user del sistema.  Relación gruposlab-gruposlab_students: En una instancia del módulo se pueden inscribir varios o ningún alumno.   user: Esta es una tabla del sistema que guarda la información personal de cada usuario registrado en la plataforma Virtual. course: Esta tabla también pertenece al sistema.3. Cada alumno que aparece en esta tabla es a su vez un alumno de Moodle. así como la opción que finalmente se le asigna. También se guarda la referencia a la instancia en la que se ha matriculado el estudiante.  Relación user-gruposlab_students: Un usuario de Moodle puede estar matriculado en tantas instancias del módulo Gruposlab como desee (puede matricularse en los grupos de laboratorio de varias asignaturas).  Relación gruposlab-gruposlab_groups: Cada instancia del módulo gruposlab puede tener configurados varios grupos de laboratorio (como mínimo uno).  Relación gruposlab_groups-gruposlab_students: en cada grupo de laboratorio pueden estar inscritos varios alumnos.2 Relaciones En este apartado describiremos las diferentes relaciones que se muestran en el diagrama E/R. Cada uno de estos profesores registrados en la tabla gruposlab_groups sólo puede corresponderse con un usuario de la tabla user del sistema. 6. Cada una de estas instancias sólo pertenece a un curso concreto. y guarda la infomación relativa a cada curso que existe en la plataforma.  Relación user-gruposlab_groups: Un usuario de Moodle puede ser profesor en tantas instancias del módulo Gruposlab como desee.

Es un entero. id_teacher: Identificador del profesor que impartirá este grupo de laboratorio. 2miércoles. configured: Este campo indica si el profesor ha configurado ya o no los grupos de laboratorio. 119 . weekday: Día de la semana en que se impartirá el grupo de laboratorio. id_instance: Identificador de la instancia del módulo a la que pertenece un grupo de laboratorio. name: Nombre que se le da a la instancia.1. course: Identificador del curso en el que se encuentra la instancia.3. Es un entero.3 Atributos  Entidad gruposlab: o o o o o o o o o o o o o id: Identificador de la instancia y clave primaria de la entidad. timecrated: Fecha de creación de la instancia.  Entidad gruposlab_groups: o o o o o id: Identificador del grupo de laboratorio y clave primaria de la entidad. start_date: Fecha en la que comenzará el periodo de inscripción de los grupos de laboratorio. distributed: Indica si se ha producido ya el reparto automático de los alumnos en los grupos de laboratorio. 2-mensual). Es un entero. Es una cadena de caracteres. end_date: Fecha en la que terminará el periodo de inscripción de los grupos de laboratorio. Es un entero. Se trata de un entero de 10 dígitos. 1-martes. intro: Descripción de la actividad Grupos de laboratorio. introformat: Formato del campo intro. Es un entero. timemodified: Fecha de modificación de la instancia. Es un entero. o repetition: Indica la periodicidad con la que se impartirá el grupo de laboratorio. Es un entero. etc. Es un entero. Es un entero. Es un entero que puede tomar varios valores (0-semanal. group_name: Nombre del grupo de laboratorio. full_groups: Indica si se han tratado de inscibir en los grupos más alumnos de los que entran en el total de las plazas ofertadas por el profesor. Es un entero que puede tomar varios valores (0-lunes. groups_number: Número de grupos de laboratorio que tendrán disponibles los alumnos para elegir entre ellos. Es un entero. Es un entero. Es una cadena de caracteres. Es un campo de texto.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6. 1quincenal.). Es un entero.

Es un entero. Es un entero. Entidad user: La entidad user no pertenece al módulo gruposlab. Es un entero. max_students: Este campo contiene el número de plazas libres que quedan en este grupo de laboratorio. Es un entero. 1-semanas impares). Es una cadena de caracteres. Es un entero.2 Modelo de casos de uso A continuación se muestra el diagrama general de casos de uso del módulo: 120 .  Entidad course: La entidad course no pertenece al módulo gruposlab. o o o o  start_time: Este campo indica la hora a la que comienza la clase de este grupo de laboratorio. Entidad gruposlab_students: o o o id: Identificador del registro y clave principal de la entidad. end_time: Indica la hora a la que finaliza la clase de este grupo de laboratorio.3. option2: Identificador del grupo de laboratorio que ha elegido el alumno como segurnda opción. 6. id_choice: Identificador del grupo de laboratorio al que finalmente ha sido asignado el estudiante. La incluimos en el esquema porque se relaciona con la tabla gruposlab por medio de su campo id. Es un entero.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes o parity: En caso de que el laboratorio se imparta quincenalmente. sino a la base de datos de Moodle. o o o  option1: Identificador del grupo de laboratorio que ha elegido el alumno como primera opción. sino a la base de datos de Moodle. place: Este campo almacena el nombre del aula en la que se impartirán las clases de este grupo de laboratorio. id_student: Identificador que tiene en la base de datos de Moodle el estudiante que ha elegido estas opciones. La incluimos en el esquema porque se relaciona con las tablas gruposlab_students y gruposlab_groups por medio de su campo id. este campo indica si se celebra las semanas pares o impares del mes. option3: Identificador del grupo de laboratorio que ha elegido el alumno como tercera opción. Es un entero que puede tomar varios valores (0-semanas pares. Es un entero. después de producirse el reparto automático de grupos. Es un entero.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 29: Modelo de casos de uso general Como podemos ver en el diagrama.   Avisos: Los avisos consistirán en notificaciones vía correo electrónico de distintos eventos en el sistema. 121 . así como la visualización por pantalla de información relacionada con ellos. así como en la redistribución de alumnos entre grupos. así como la inserción y borrado del curso de la misma. Inscripción: La inscripción se refiere a la capacidad de elegir y editar las opciones preferidas de inscripción en un grupo de laboratorio. contamos con tres tipos de usuario que podrán realizar distintas acciones en la aplicación.  Gestión de alumnos: La gestión de alumnos consiste en la visualización y descarga de listas de usuario. Los actores que aparecen en este diagrama son los que definíamos en el apartado Identificación de usuarios. El sistema comprobará el rol de cada usuario para saber qué tareas puede o no realizar. Estas funcionalidades están reflejadas en los casos de uso que se pueden ver en la imagen. Gestión de grupos: La gestión de grupos incluye la configuración y edición de los grupos de laboratorio. así como la visualización por pantalla del grupo asignado. con las funcionalidades que allí se detallaban. que son los siguientes:   Gestión de instancias: Aquí se incluye la configuración y edición de una instancia.

3. Se puede desglosar los siguientes cuatro casos de uso:     Añadir instancia: Se puede añadir al curso instancias del módulo Gruposlab. Editar instancia: Una instancia configurada puede ser editada para modificar sus parámetros. 122 . también existen relaciones entre los actores del sistema y los diferentes grupos de acciones (casos de uso) que pueden llevar a cabo. las acciones incluidas en este caso de uso las puede realizar tanto el profesor del curso como el administrador del sistema. Borrar instancia: Se puede borrar del curso instancias del módulo Gruposlab. 6.1 Gestión de instancias A continuación se muestra el diagrama de casos de uso para la acción Gestión de instancias: Ilustración 30: Modelo de casos de uso: Gestión de instancias Como nos muestra el diagrama. Como se puede ver en el diagrama.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  Validación usuario: Antes de poder realizar cualquier caso de uso de los anteriores.2. Configurar instancia: La instancia puede ser configurada introduciendo los parámetros necesarios. Además de estas relaciones también existen relaciones entre el sistema de validación de usuarios y todos los demás casos de uso que hacen uso de este sistema para controlar el acceso de los actores a las acciones que pueden realizar. el sistema debe verificar las capacidades que le otorga su rol a cada usuario.

el profesor y el administrador pueden realizar las siguientes acciones:    Configurar grupos: Permite asignar a los grupos los parámetros deseados. Además. 6.3.  Editar instancia <incluye> Configurar instancia: Para poder modificar la configuración de una instancia. Ilustración 31: Modelo de casos de uso: Gestión de grupos En este caso. Ver grupos: Es posible visualizar por pantalla información sobre los grupos de laboratorio.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes También existen relaciones entre los actores (Profesor y Administrador) y todos los casos de uso (Acciones).2 Gestión de grupos A continuación podemos ver el diagrama de casos de uso de la acción Gestión de grupos.  Borrar instancia <incluye> Añadir instancia: La relación representa que para poder eliminar una instancia del módulo Gruposlab de un curso. 123 . Modificar grupos: Se puede modificar la configuración de los grupos. primero debe haberse añadido. primero debemos haberla añadido al curso. primero debe estar configurada.  Configurar instancia <incluye> Añadir instancia: Esta relación nos indica que para poder configurar una instancia.2. los casos de uso también se relacionan entre sí.

6.3.2. Añadir alumnos a un grupo: Permite seleccionar de una lista los alumnos que se han quedado sin grupo y añadirlos al grupo deseado. Además podemos ver que existe una relación de extensión entre Descargar lista de alumnos de un grupo y Ver alumnos de un grupo.3 Gestión de alumnos En el siguiente diagrama podemos ver los casos de uso de la acción Gestión de alumnos: Ilustración 32: Modelo de casos de uso: Gestión de alumnos En este caso. Descargar lista de alumnos de un grupo: Permite descargar en formato de hoja de cálculo la lista de alumnos de un grupo de laboratorio. Esto significa que el caso de uso Descargar lista de alumnos de un grupo extiende la funcionalidad ofrecida por Ver alumnos de un grupo. 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. Eliminar alumnos de un grupo: Se pueden eliminar alumnos de un grupo de laboratorio. 124 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes En cuanto a las relaciones que nos muestra este diagrama. podemos ver que no es posible modificar la configuración de un grupo si este no ha sido previamente configurado. por ejemplo para después reubicarlos en otro grupo. permitiendo descargar la información además de verla por pantalla.

Aviso de plazas llenas: Se recibirá un aviso por correo electrónico cuando el número de alumnos que se ha tratado de inscribir a la actividad supera el número total de plazas asignadas por el profesor a todos los grupos.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.4 Avisos A continuación se muestra el diagrama de casos de uso del sistema de avisos: Ilustración 33: Modelo de casos de uso: Avisos En este caso tenemos dos actores distintos en el diagrama: el Profesor y el Alumno.2. Ambos tendrán acceso al sistema de avisos. el alumno tendrá acceso a la siguiente acción:  Aviso de grupo asignado: El usuario recibirá un correo electrónico cuando se haya producido el reparto de grupos de laboratorio. El profesor tendrá asignados los siguientes casos de uso:   Aviso de reparto de grupos: El usuario recibirá un correo electrónico indicándole que ya se ha llevado a cabo el reparto de grupos de laboratorio.3. pero cada uno recibirá correos electrónicos referentes a eventos distintos. indicándole el grupo al que finalmente ha sido asignado. A su vez. 125 .

como podemos ver en el diagrama.3.3 Diagramas de flujo A continuación mostraremos el diagrama de flujo de ejecución del programa tanto para el usuario Profesor como para el Alumno.5 Inscripción A continuación podemos ver el diagrama de casos de uso del sistema de inscripción: Ilustración 34: Modelo de casos de uso: Inscripción El usuario puede realizar las siguientes acciones:    Inscribirse a los grupos: Permite que un usuario se inscriba.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6. Ver grupo asignado: Una vez que se ha producido el reparto de grupos.2. En cuanto a las relaciones entre casos de uso. Editar inscripción: El usuario puede cambiar sus opciones antes de que se cierre el periodo de matriculación. 126 .3. seleccionando por orden de preferencia los grupos deseados. el usuario puede acceder al sistema para ver en qué grupo ha sido inscrito. 6. editar una inscripción implica haberla realizado antes.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6. para mostrar por pantalla unas cosas u otras dependiendo del momento en el que estemos. Si el profesor pincha sobre uno de esos enlaces. 127 . si no es así muestra la interfaz para configurarlos. y si ya están configurados. se le mostrará la lista de alumnos de ese grupo en caso de que los grupos ya hayan sido repartidos. Además de permitir modificar la configuración de los grupos. Además le permitirá redistribuir los alumnos en los grupos y descargar el listado de alumnos como hoja de cálculo. A continuación comprueba en qué momento del periodo de matriculación nos encontramos.3. una vez que el usuario ha iniciado sesión como profesor.1 Diagrama de flujo del usuario Profesor Ilustración 35: Diagrama de flujo de usuario profesor Como se muestra en el diagrama. el sistema muestra un calendario semanal en el que aparecen enlaces a los grupos de laboratorio configurados. el sistema comprueba si los grupos están configurados.3. permite al usuario modificar dicha configuración.

el usuario podrá realizar distintas acciones dependiendo del momento del periodo de matriculación en el que se encuentre. Si el alumno ya ha elegido sus opciones.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6. 128 .3. el alumno se podrá apuntar a sus grupos preferidos.3. podrá acceder al sistema para modificarlas siempre que se encuentre dentro del periodo de matriculación. Si está dentro del periodo de inscripción y el profesor ha configurado correctamente los grupos. siempre que no se haya superado el límite de plazas.2 Diagrama de flujo del usuario Alumno Ilustración 36: Diagrama de flujo del usuario Alumno Después de iniciar sesión correctamente como alumno.

3.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 6.3 Diagrama de flujo del algoritmo de reparto de grupos Ilustración 37: Diagrama de flujo del algoritmo de reparto de grupos 129 .3.

trabajando ahora con la segunda opción solicitada por los alumnos no asignados y. De este modo. se repite el proceso con la tercera. Una vez que se ha completado el proceso. los estudiantes que no han sido inscritos en ningún grupo serán asignados aleatoriamente en alguno de los grupos que tengan plazas libres.4 Definición de interfaces de usuario Las principales interfaces que podemos encontrar en la aplicación son: Listados: Son unas tablas donde se muestran los diferentes datos de una consulta a la base de datos. En caso contrario. las interfaces con las que contará el sistema son las siguientes:  130 . si fuera necesario. lo inscribe en ese grupo. Así. El algoritmo empieza de nuevo. Suponemos que hay al menos dos grupos de laboratorio y que el número de plazas ofertadas entre todos los grupos de laboratorios es igual al número total de alumnos. el algoritmo manda un correo al profesor y termina. queda al menos un alumno sin asignar.  Formularios de datos: Pantallas con una serie de campos de texto para introducir datos.3. El algoritmo selecciona a todos los alumnos que tienen como primera opción la del grupo seleccionado y los ordena de forma aleatoria. le envía un correo para avisarle y lo marca como asignado.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes En el diagrama anterior se puede ver la secuencia que sigue el algoritmo para repartir los grupos de laboratorio. 6. Por último el sistema enviará un correo electrónico a los profesores informando de que se ha producido el reparto de grupos de laboratorio. Este proceso se repite hasta que no queden alumnos (cuya primera opción fuera el grupo actual) o el grupo esté completo. hasta completar todos los grupos y todas las primeras opciones de todos lo estudiante. A continuación el algoritmo toma el siguiente grupo y repite la misma secuencia de operaciones con los alumnos. El algoritmo elije el primer alumno de la lista y. Si todos los alumnos han sido asignados. Se selecciona un grupo (según el orden en el que aparecen en la base de datos). si el grupo aún no está lleno.

Como el módulo Gruposlab no utiliza calificaciones. Ambos campos son obligatorios. Mientras este periodo esté abierto los alumnos podrán apuntarse a los grupos de laboratorio. El campo ID number lo utiliza el sistema de calificaciones de Moodle. Aquí podremos seleccionar si queremos que el módulo aparezca visible o no para los alumnos. A continuación 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 módulo Gruposlab. El campo donde se indica el número de grupos es obligatorio. Si estamos tratando de editar la instancia. o Ajustes particulares del módulo: Aquí se debe indicar el número de grupos de laboratorio que se creará para los alumnos.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Listado Configurar/editar instancia Listado de instancias Configurar/editar grupos de laboratorio Listado de alumnos de un grupo Agregar/eliminar alumnos de un grupo Inscribirse/editar inscripción Tabla 31: Interfaces de usuario Formulario X X X X X X X En algunos casos se puede combinar un formulario con un listado. Se divide en tres bloques de elementos. o Ajustes comunes del módulo: Este bloque es común a todos los módulos de Moodle. como en la pantalla de agregar/ eliminar alumnos de un grupo. o Ajustes generales: en esta sección introduciremos el nombre que le daremos a la instancia y una descripción. debemos tener en cuenta que una vez que haya comenzado el periodo de matriculación los cambios que se hagan sobre la fecha de inicio no se aplicarán. este campo se puede dejar en blanco. así como las fechas de inicio y fin del periodo de inscripción. 131 .

132 . guardan los valores por defecto.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 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 no se modifican. El campo Elegir semanas sólo se habilitará si en el campo Repetición se ha elegido el valor Quincenal. Es obligatorio introducir información en los campos Nombre de grupo. e indica si el laboratorio se impartirá las semanas pares o impares del mes. Lugar y Número máximo de alumnos. Si pincha sobre uno de ellos le llevará a la página principal de la instancia. El resto de campos. Ilustración 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 configuración de la instancia.

Ilustración 41: Interfaz listado de alumnos de un grupo 133 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 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.

el alumno tendrá tres listas desplegables donde podrá elegir su primera. 134 . Si hay uno o dos grupos de laboratorio disponibles. mediante listas desplegables. los alumnos que no están inscritos en ningún otro grupo. uno con los miembros actualmente inscritos en un grupo y otro con los miembros potenciales. Si existen tres o más grupos de laboratorio. En caso de haber dos grupos la opción no elegida se considerará automáticamente la segunda opción. solo se le permitirá elegir su primera opción. Cabe destacar que aunque el alumno seleccione tres veces la misma opción. es decir.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  Agregar/eliminar alumnos de un grupo: Este formulario consta de dos listados de alumnos. Independientemente del número de grupos disponibles. segunda y tercera opción. Se pueden seleccionar uno o varios alumnos a la vez de estas listas. el alumno no podrá elegir más de tres opciones. y moverlos de una a otra mediante los botones Añadir y Quitar. Ilustración 42: Interfaz Agregar/Eliminar alumnos de un grupo  Inscribirse/editar inscripción: En este formulario el alumno obtendrá información referente a cada grupo disponible y. no aumentan sus posibilidades de ser admitido en ese grupo de laboratorio. podrá seleccionar sus opciones por orden de preferencia.

Ilustración 44: Diagrama de componentes 135 .5 Diagrama de componentes El diagrama de componentes muestra de forma directa y visual los directorios y ficheros que componen el módulo Gruposlab.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 43: Interfaz Inscribirse/Editar inscripción 6.3.

php: Muestra el listado de instancias del módulo. members.php: Cadenas de idioma del módulo en español de España. lib. para simplificar se incluirá en la misma tabla el resultado de dichas pruebas. db: Directorio que contiene todos los ficheros relacionados con la base de datos. help: Directorio que contiene los ficheros de ayuda del módulo en inglés.3. Habrá una subcarpeta por cada idioma soportado por el módulo.6 Especificación del plan de pruebas El objetivo del plan de pruebas es asegurar que la aplicación desarrollada cumple con los requisitos impuestos y funciona correctamente. index.gif: Icono gráfico del módulo. Formulario para configurar los grupos de lang: Directorio que contiene los ficheros de cadenas de idioma y de ayuda. options_form. icon.php: Formulario para configurar la instancia del módulo. A continuación generaremos una lista con una serie de pruebas que se han de pasar en el sistema.xml: Declaración de las tablas de la base de datos.php: laboratorio. o o o o o o o o o o o edit_form. install. groups_form.php: Contiene el número de versión actual del módulo.php: Cadenas de idioma del módulo en inglés.   gruposlab. view. help: Directorio que contiene los ficheros de ayuda del módulo en español de España.php: Formulario para editar la configuración de los grupos de laboratorio. upgrade.php: Página principal del módulo.    gruposlab. es_es_utf8: Carpeta que contiene los archivos de ayuda y las cadenas de idioma en español de España.php: Muestra la página de agregar/quitar alumnos de los grupos de laboratorio.php: Instrucciones de actualización de la base de datos.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes La funcionalidad de cada uno de estos ficheros se comenta a continuación:  gruposlab: Directorio que contiene todos los archivos y carpetas del módulo. versión.php: Fichero de permisos. 6.php: Librería de funciones del módulo. mod_form.  en_utf8: Carpeta que contiene los archivos de ayuda y las cadenas de idioma en inglés. 136 .    o access.php: Formulario para inscribirse a los grupos de laboratorio.

Eliminación de un curso RQF-08. cuando acceda al módulo un estudiante que ya se ha inscrito a los grupos.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Código de prueba P001 Requisito a probar RQF-01. También comprobar que la modificación de la inscripción se realiza correctamente. Inserción en un curso RQF-07. donde aparece toda la información sobre los grupos de laboratorio. Resultado Correcto P002 RQF-02. Comrpobar que el profesor puede eliminar correctamente el módulo Gruposlab de su curso. Inscripción Correcto P003 RQF-03. Comprobar que el profesor puede agregar correctamente el módulo Gruposlab en su curso. Visualización de la información Objetivo que se quiere conseguir Comprobar que el estudiante puede visualizar correctamente el calendario semanal donde aparecen los grupos de laboratorio. reparto Aviso de Correcto P005 RQF-05. Configuración de la instancia Correcto P007 Correcto P008 Correcto 137 . le aparezca el formulario de modificación de inscripción (siempre que se encuentre dentro del periodo de matriculación). Comprobar que cuando el alumno accede al módulo. y que puede inscribirse correctamente seleccionando las opciones necesarias. después de haberse producido el reparto de grupos de laboratorio. Modificación de la inscripción Correcto P004 RQF-04. Probar que el alumno puede ver correctamente el formulario de inscripción. puede visualizar la información sobre el grupo en el que ha sido inscrito. Comprobar que. Comprobar que el formulario muestra un aviso si se introducen datos incorrectos en los campos o si no se introducen datos obligatorios. Información de grupo asignado Correcto P006 RQF-06. Comprobar que el alumno recibe correctamente un correo después de realizarse el reparto de grupos de laboratorio. Agregar el módulo Gruposlab a un curso y comprobar que el profesor puede configurar la instancia correctamente.

Una vez que se ha producido el reparto de grupos. y que si se pincha sobre el nombre de alguno de dichos grupos. Después de producirse el reparto de estudiantes. siempre que el periodo de matriculación no haya finalizado. Visualización de listas de estudiantes Correcto P014 RQF-14. En una instancia con los grupos de laboratorio configurados. Comrpobar que el profesor puede configurar correctamente cada uno de sus grupos de laboratorio. Comrpobar que los campos muestran los avisos necesarios si no se introducen los datos esperados. Visualización de grupos Correcto P013 RQF-13. comprobar que se pueden visualizar los grupos de laboratorio en el calendario semanal. al pinchar sobre uno de los grupos en el calendario semanal. y que el sistema le envía automáticamente al formulario de configuración de los grupos cada vez que accede al módulo si los grupos están sin configurar. Comprobar que se puede descargar correctamente el listado de estudiantes de cada grupo en formato de hoja de cálculo. Modificación de la instancia Objetivo que se quiere conseguir Comprobar que es posible modificar correctamente la configuración de una instancia anteriormente configurada. se muestra una página con más información sobre el grupo. y que además se es posible modificar las opciones permitidas dependiendo del momento del periodo de matriculación en que nos encontremos. puede ver la lista de alumnos que han sido asignados a ese grupo. Descarga de listas de estudiantes Correcto (con problemas) P015 RQF-15. Redistribución estudiantes Correcto de 138 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Código de prueba P009 Requisito a probar RQF-09. y que puede eliminarlos y añadirlos correctamente a los grupos. comrpobar que el profesor. comprobar que el profesor puede acceder a la pantalla de redistribución de estudiantes. comprobar que estos se pueden editar correctamente. Modificación de configuración de grupos Correcto P012 RQF-12. En una instancia correctamente configurada. Resultado Correcto P010 RQF-10. Configuración particular de cada grupo Correcto P011 RQF-11.

Comrpobar que un administrador puede instalar correctamente el módulo en la plataforma Moodle. grupos Configurar Correcto P027 Correcto 139 . Eliminación de archivos temporales RQD-01. Comprobar la correcta visualización del calendario semanal donde se muestran los grupos de laboratorio. Comrpobar que un administrador puede desinstalar el módulo de la plataforma Moodle y que sus tablas asociadas se eliminan correctamente de la base de datos. reparto Aviso de Objetivo que se quiere conseguir Después del reparto de grupos de laboratorio. Comprobar la correcta visualización de todas las interfaces del sistema. Control de acceso de usuarios RQS-02. Datos de los estudiantes Correcto P024 P025 RQI-01. Resultado Correcto P017 RQF-17. grupos Reparto de Correcto P020 P021 RQF-20.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Código de prueba P016 Requisito a probar RQF-16. Calendario de grupos Correcto Correcto P026 RQS-01. Probar que los enlaces apunten a las páginas correctas. Datos de los grupos Correcto P023 RQD-03. Interfaces separadas RQI-02. Comrpobar que se eliminan correctamente del sistema los archivos temporales generados por el módulo. Comprobar que solo los usuarios que han iniciado sesión en el sistema tienen acceso al módulo. Instalación del módulo RQF-18. Desinstalación módulo Correcto P018 Correcto del P019 RQF-19. Comprobar que se almacena correctamente en la tabla gruposlab de la base de datos la información referente a cada instancia del módulo. Comrpobar que se almacena correctamente en la tabla gruposlab_students de la base de datos la información referente a las opciones seleccionadas por cada estudiante inscrito en los grupos de laboratorio. Comprobar que se almacena correctamente en la tabla gruposlab_groups de la base de datos la información referente a grupo de laboratorio configurado. Comprobar que el reparto de grupos se realiza de la forma correcta y en el momento indicado. Datos de la instancia Correcto Correcto P022 RQD-02. comprobar que todos los profesores del curso reciben correctamente un correo electrónico avisándoles de que se ha producido el reparto. Comprobar que solo los roles permitidos tienen la capacidad de configurar los grupos de laboratorio.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Código de prueba P028 Requisito a probar RQS-03. 140 . Tan solo una de las pruebas. no ha dado resultados completamente satisfactorios. Inscribirse Objetivo que se quiere conseguir Comprobar que sólo el usuario estudiante puede inscribirse a los grupos de laboratorio. Por lo tanto podemos afirmar que la aplicación cumple con todos los requisitos que se especificaban en el apartado de Análisis de requisitos. Revisar el código fuente para comprobar que cumple con los estándares de programación de Moodle.org. Resultado Correcto P029 RQC-01. a pesar de que finalmente abre el archivo y los muestra correctamente. pero en Microsoft Excel se muestra un aviso donde dice que los datos pueden haberse perdido. todas las pruebas realizadas con la última versión del módulo Gruposlab han sido positivas. La hoja de cálculo que se genera se visualiza correctamente el visor de hojas de cálculo de la suite ofimática OpenOffice. la P014. código Estilo del Correcto Tabla 32: Especificación del plan de pruebas Como se puede ver en los resultados que muestra la tabla anterior.

En ella hay que rellenar algunos campos necesarios para la correcta configuración de la actividad. Descripción: En este campo el profesor puede introducir una descripción de la actividad que se llevará a cabo en los grupos de laboratorio.. Estos campos son los siguientes:   Nombre: Se debe introducir el nombre que se le quiere dar a la actividad.1 Añadir el módulo GruposLab a un curso Para añadir el módulo Gruposlab a un curso. 141 . A continuación se debe pulsar sobre la lista desplegable Agregar actividad. Ilustración 45: Agregar el módulo GruposLab a un curso 7. o cualquier otra información que considere oportuna.  Número de grupos: Se debe indicar el número de grupos de laboratorio que se va a abrir. se mostrará una pantalla de configuración como la que se aparece en la imagen siguiente.1...2 Configuración general de la aplicación Al añadir la actividad Grupos de Laboratorio a nuestro curso. Posteriormente se podrá configurar cada uno de estos grupos de forma individual. por ejemplo “Grupos de prácticas de Álgebra”.1 Manual del usuario profesor 7. y seleccionar Grupos de Laboratorio. Esta descripción se mostrará a los alumnos cuando interactúen con el módulo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 7 Manuales de usuario 7.1. es necesario entrar en el curso y activar la edición pulsando el botón Activar Edición que aparece en la parte superior derecha de la pantalla.

se debe pulsar el botón Guardar cambios y regresar al curso. si pulsamos el botón Guardar cambios y mostrar. se debe pulsar el botón Guardar cambios y mostrar.1. que se explica en el apartado anterior. 7. Fin de matriculación: Se debe introducir la fecha tope para que los alumnos se matriculen.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes   Inicio de matriculación: Se debe introducir la fecha en la que los alumnos podrán comenzar a apuntarse a los grupos. Si. por el contrario. Ilustración 46: Configuración general de la aplicación Para guardar la configuración general y pasar a configurar los grupos individualmente. Esta será también la fecha en la que el módulo realizará de forma automática la distribución de los alumnos en los grupos. donde tendremos la posibilidad de configurar cada grupo de forma individual. El resto de campos son estándar para todos los módulos de Moodle y se pueden dejar con los valores por defecto. pero se quiere continuar con el resto de opciones más tarde.3 Configuración particular de cada grupo Después de realizar la configuración general del módulo. se desea guardar la configuración actual. aparecerá una pantalla como la que se muestra en la imagen inferior. Si hemos decidido terminar la 142 .

cada quince días o una vez al mes. la próxima vez que intentemos acceder a la actividad también aparecerá la pantalla inferior para configurar los grupos. Ilustración 47: Configuración 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.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes configuración anterior pulsando el botón Guardar cambios y regresar al curso. Profesor: Al pinchar en esta lista desplegable aparecerán todos los profesores que están dados de alta en el curso.    Día: En esta lista se debe seleccionar el día de la semana que se impartirá el laboratorio. 143 . el grupo no se creará. Se debe seleccionar cuál de los profesores será el encargado de impartir ese laboratorio. La hora de fin debe ser posterior a la hora de inicio. Hora de comienzo: Seleccionaremos la hora a la que comienza el laboratorio. por ejemplo: “Grupo A” o “Grupo Mañana”.  Repetición: En este campo podremos seleccionar si el laboratorio se imparte una vez a la semana. Si por error esto no se configura así. Hora de fin: Aquí pondremos la hora a la que finaliza.

Número máximo de alumnos: Aquí se debe escribir el número máximo de alumnos que se podrán apuntar a ese laboratorio. si pulsamos el botón Guardar cambios. el sistema nos mostrará un mensaje indicándonos que los cambios se han guardado correctamente: Ilustración 48: Mensaje grupos configurados correctamente A continuación el sistema nos redirigirá a la página principal de nuestro curso. En cualquier momento podremos pulsar el botón Actualizar Grupos de Laboratorio que aparece en la parte superior derecha de la imagen. algunos alumnos no podrán matricularse y será el profesor quien deba colocarlos manualmente en alguno de los grupos. El número máximo de alumnos en cada grupo se puede modificar en cualquier momento. 144 . Aquí se debe elegir si el laboratorio se imparte las semanas pares del mes o las semanas impares. Si lo hacemos. tanto las opciones generales como la configuración particular de cada grupo. Si la asignatura cuenta con más alumnos de los que suman las plazas asignadas en total a todos los grupos. por ejemplo: “Laboratorio L1” o “Seminario E21”. Cuando hemos terminado de establecer la configuración deseada para los grupos. aparecerá de nuevo la pantalla de configuración general y podremos modificar las opciones del módulo.   Lugar: En este campo se debe escribir el nombre del aula donde se impartirá el laboratorio. siempre queno se haya producido aún el reparto de grupos.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  Elegir semanas: Este campo solo será editable si hemos seleccionado la modalidad quincenal en el apartado anterior.

1. Cuando llega la fecha tope del periodo de matriculación. podrá ver una pantalla como la de la 145 . se produce el reparto de los alumnos en los grupos. El mensaje que aparece en el recuadro inferior depende del momento en el que nos encontremos con respecto a la matriculación:  Si aún no ha comenzado el periodo de matriculación. Ilustración 49: Calendario con los grupos de laboratorio El calendario donde se muestran los grupos disponibles se muestra siempre. el sistema lo indicará. se mostrará una página como la que aparece más abajo (Ilustración 49).  Después de que se haya cerrado el periodo de matriculación. si el profesor pincha sobre el calendario en uno de los enlaces de los grupos. no aparece ningún mensaje.  Durante el periodo de matriculación. si el profesor accede a sus Grupos de Laboratorio.4 Administrar los grupos de laboratorio Una vez que la configuración del módulo está completada. y el profesor puede pinchar sobre sus enlaces para obtener más información sobre cada grupo configurado. aparecerá un mensaje que indicar el número de alumnos que hasta el momento se ha apuntado a los grupos de laboratorio. y además informará de las fecha de inicio y finalización del periodo de matriculación.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 7. Después de que se haya producido el reparto.

4.1 Exportar listado de alumnos a una hoja de cálculo Pulsando el botón Exportar a Excel. el profesor puede obtener una lista con todos los alumnos de un laboratorio en formato Excel. desde la que podrá administrar los alumnos de dicho grupo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes imagen inferior (Ilustración 50). Ilustración 50: Administración de un grupo de laboratorio 7.1. El resultado sería similar al siguiente: 146 .

Para ello debe pulsar el botón Agregar/quitar alumnos.2 Añadir/eliminar alumnos a un grupo Una vez que se ha producido el reparto de alumnos el profesor.es Comentarios 7. tiene a un lado la lista de alumnos que están matriculados en el grupo.1. Es decir. En la pantalla que aparece.es alumno20@uah.es alumno19@uah.es alumno10@uah. Lunes 8:00 . los alumnos que están matriculados en el curso. 147 . o bien porque el profesor los haya eliminado de otro grupo de laboratorio. pero han sido asignados a ningún grupo de laboratorio. puede agregar alumnos a un grupo o eliminarlos de otro. que está bajo el listado de alumnos.es alumno17@uah.4. y al otro lado la lista de alumnos potenciales.9:00 Laboratorio EL1 5 ALUMNOS # 1 2 3 4 5 Apellidos Pruebas Pruebas Pruebas Pruebas Pruebas Nombre Alumno9 Alumno10 Alumno17 Alumno19 Alumno20 E-mail alumno9@uah. Para eliminar un alumno del grupo.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Grupos de prácticas Grupo A Profesor: Horario: Lugar: Nº Alumnos: Profesor1 Pruebas Semanal. tan solo se debe seleccionar el alumno deseado de la lista de miembros potenciales y pulsar el botón Añadir. Para agregar un alumno. se debe seleccionar el alumno deseado de la lista de miembros existentes y pulsar el botón Quitar. de manera manual. bien porque el número de plazas era inferior al número de alumnos.

el alumno deberá elegir otras dos opciones en orden de preferencia. el sistema le asignará otro de los grupos disponibles de forma aleatoria.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 51: Agregar/quitar alumnos de un grupo 7. En la página que aparece. 148 . Al final de la página. que serán valoradas adecuadamente en caso de que no pudiera ser asignado al grupo preferido. En caso de que existan tres o más grupos de laboratorio disponibles. Si el alumno selecciona varias veces el mismo grupo y no es posible matricularlo en él. 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.2 Manual del usuario alumno 7. el alumno debe acceder al curso y pinchar sobre el enlace del módulo Grupos de laboratorio. un listado de dichos grupos con información referente a cada uno de ellos. el alumno debe seleccionar el grupo que más se ajuste a sus necesidades y ponerlo como primera opción.1 Matricularse en un grupo de laboratorio Para matricularse en un grupo de laboratorio. hay un calendario donde se encuentran todos los grupos que ha configurado el profesor y debajo de él.2.

y un mensaje le indicará que sus opciones se han guardado correctamente en el sistema. 149 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 52: Elegir grupo de laboratorio Tras hacer su elección. el alumno puede guardar los cambios.

indicándole el grupo al que finalmente ha sido asignado. el alumno recibirá un correo electrónico. donde de nuevo podrá seleccionar sus opciones en el orden que desee. 7. el sistema se lo indicará mediante un mensaje. Has sido apuntado/a en el grupo: Grupo A” A partir de este momento. el alumno ya no podrá cambiarse de grupo.2 Comprobar su grupo de laboratorio Después de cerrarse el periodo de matriculación y de haberse realizado el reparto de alumnos entre los grupos disponibles. volverá a una página como la anterior.2. pero le dejará modificar su elección mientras el periodo de matrícula siga abierto.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Si el alumno vuelve a acceder a la actividad Grupos de laboratorio después de haber seleccionado sus grupos preferidos. tan solo obtendrá información sobre el grupo en el que está matriculado: 150 . Ilustración 53: Modificar grupos de laboratorio Si pulsa sobre el botón Cambiar grupos. Si el alumno accede al módulo de los grupos de laboratorio. El mensaje que el alumno recibirá será similar al siguiente: “Se han repartido los grupos de laboratorio de la asignatura Curso Pruebas GruposLab. Si desea hacerlo deberá ponerse en contacto con el profesor para que él haga el cambio manualmente.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 54: Comprobar grupo asignado 7.3 Manual de administrador 7. debemos descomprimir el archivo gruposlab.zip y colocar la carpeta que contiene en el directorio de los módulos de nuestro servidor Moodle.1 Instalar módulo GruposLab Para instalar el módulo Gruposlab.3. que suele ser la siguiente: /var/www/moodle/mod Ilustración 55: Colocar carpeta gruposlab en el directorio de módulos 151 . Este directorio normalmente se ubica en la ruta por defecto.

creándose en este momento todas las tablas que sean necesarias en la base de datos. podremos desplazarnos hasta el final de la página y pulsar el botón Continuar. 152 . y podremos hacer uso de él.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Una vez que colocada la carpeta gruposlab en su sitio. debemos acceder a la página principal de Moodle como administrador. aparecerá una pantalla con el resumen de todas las operaciones que se han llevado a cabo durante la instalación. Cuando haya finalizado la instalación. que aparece en la parte izquierda de la pantalla: Ilustración 56: Pulsar Notificaciones para instalar el módulo Al pulsar este enlace. y pulsar el enlace Notificaciones. A partir de este momento ya tenemos instalado el módulo Grupos de Laboratorio en Moodle. se realiza automáticamente la instalación del módulo. Si no ha sucedido ningún problema.

Ilustración 58: Desinstalar módulo GruposLab 153 . A continuación aparece en pantalla la lista con todos los módulos instalados en Moodle. debemos acceder como administrador a la página principal de Moodle. Seleccionaremos el módulo Grupos de Laboratorio y pulsaremos borrar.2 Desinstalar módulo GruposLab Para desinstalar el módulo GruposLab.3. y seleccionar en la parte izquierda de la pantalla Módulos->Actividades->Gestionar Actividades.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 57: Módulo instalado correctamente 7.

Si no ha habido ningún problema durante la eliminación. ya no aparecerá el módulo Gruposlab en la lista de módulos de la imagen anterior. pulsaremos Sí. Normalmente la ruta de esta carpeta es la siguiente: /var/www/moodle/mod/gruposlab. para completar la desinstalación. y habrá desaparecido también de todos los cursos que hubieran estado haciendo uso de él en el momento de la desinstalación.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes A continuación aparecerá en pantalla un aviso. 154 . Una vez que lo hayamos hecho. se debe eliminar dicho directorio. ubicado en la carpeta que contiene los módulos de Moodle. indicándo que se eliminará completamente todo lo que haya en la base de datos asociado al módulo. y se advierte que para completar la eliminación (y prevenir que el módulo se reinstale por sí mismo) se debería borrar del servidor el directorio gruposlab. Por lo tanto. el siguiente mensaje nos informará de que todos los datos asociados con el módulo Grupos de Laboratorio han sido eliminados de la base de datos. Si estamos seguros de que queremos borrarlo.

86 € A continuación se muestra el desglose de los distintos apartados: HARDWARE Concepto Equipo desarrollo Impresora Color Coste 700€ 400€ Duración 4 años 4 años Tiempo de uso 6 meses 1 mes Total 87. así como los costes por tiempo de trabajo.5 € 635 € 86. 2 GHz.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 8 Presupuesto A continuación se detallan los distintos apartados que constituyen el presupuesto del proyecto. A4): 30 ppm o Calidad de impresión en color (óptima): Hasta 1200 x 600 ppp o Memoria de serie: 256 Mb 155 .5 € Tabla 34: Costes de Hardware Los requisitos mínimos de hardware deseables. 8. son los siguientes:  Equipo de desarrollo: o Procesador Intel Pentium 4. y también de los consumibles.5€ 12 € TOTAL: 99. tanto para el equipo como para la impresora. 8.1 Presupuesto de ejecución material En este apartado se incluyen tanto los costes hardware como software.1. o 1 Gb Memoria RAM o 40 Gb disco duro o Conexión a internet  Impresora láser a color: o Velocidad de impresión en color (normal.36 € TOTAL: 820. así como de las licencias de los distintos programas software que se han utilizado.1 Costes de sistemas En este apartado se muestran los costes de los equipos hardware necesarios para el desarrollo del proyecto. COSTES DE SISTEMAS Concepto Hardware Software Consumibles Tabla 33: Costes de sistemas Coste 99.

38 € 0.6 € 60 € TOTAL: 86.500 páginas 7.38 € 7.1.1.000 páginas 7.2 Costes por tiempo de trabajo Coste por hora establecido por la asociación de Ingenieros e Ingenieros técnicos en informática.260 € 6.100 € 1.10 Licencia Microsoft Office 2010 Licencia VMware Workstation Licencia Apache Licencia MySQL Licencia PHP Licencia Paint.38 € 7.950 € TOTAL: 12.net Licencia Notepad++ Licencia NX Licencia Moodle Tabla 35: Costes de Software Coste 319 € 0€ 139 € 177 € 0€ 0€ 0€ 0€ 0€ 0€ 0€ TOTAL: 635 € RECURSOS CONSUMIBLES Concepto Precio Tóner Negro 190 € Tóner Amarillo 258 € Tóner Cian 258 € Tóner Magenta 258 € Papel 15 € Encuadernación 60 € Tabla 36: Costes de consumibles Duración 10.300 € 2.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes SOFTWARE Concepto Licencia Windows 7 Licencia Ubuntu 10.000 páginas 7.000 páginas 5.36 € 8.000 páginas Uso 200 páginas 200 páginas 200 páginas 200 páginas 200 páginas Total 3. además de los costes de realización de la documentación.3 Coste total de ejecución material El coste total de ejecución material es la suma del importe del coste de sistemas y de los costes por tiempo de trabajo. COSTE TOTAL DE TIEMPO TRABAJADO Concepto Horas INGENIERÍA 250 h Análisis 20 h Diseño 30 h Desarrollo 150 h Pruebas 50 h DOCUMENTACIÓN 130 h Tabla 37: Coste total de tiempo trabajado Coste/hora 42 € 42 € 42 € 42 € 15 € Total 840 € 1.62 € 7.450 € 8. 156 .

86 € Coste por tiempo de trabajo 12. Los gastos generales y el beneficio industrial son el resultado de aplicar un recargo del 22% sobre el Coste Total de Ejecución Material.3 Presupuesto de ejecución por contrata El presupuesto de ejecución por contrata es el resultado de sumar el Coste Total de Ejecución y los Gastos Generales. además de otros gastos adicionales.4 Honorarios facultativos Se estiman unas tarifas sobre el presupuesto de Ejecución Material como las siguientes: CONCEPTO Hasta 30. resultando: GASTOS GENERALES Y BENEFICIO INDUSTRIAL TOTAL: 2.59 € Tabla 39: Gastos generales y beneficio industrial 8.86 € Tabla 38: Coste total de ejecución material 8.59 € TOTAL: 16.000 € Desde 30. donde:    p → porcentaje P → Presupuesto de Ejecución Material C → Coeficiente reductor Obteniendo un valor para los honorarios de: 157 .919.000 € COEFICIENTE REDUCTOR C=1 C=0.919.270.270.45 8.86 € 2.450 € TOTAL: 13. COSTE DE EJECUCIÓN POR CONTRATA Concepto Coste total de ejecución Gastos generales Tabla 40: Coste de ejecución por contrata Coste 13.2 Gastos generales y beneficio industrial Normalmente se trata de los gastos necesarios para disponer de instalaciones en las que desempeñar el trabajo.190.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes COSTE TOTAL DE EJECUCIÓN MATERIAL Concepto Total Coste de sistemas 820.9 PORCENTAJE 7% 7% Tabla 41: Tarifas de honorarios facultativos Los derechos del visado se calcularán aplicando la siguiente fórmula: Derechos del visado = p x P x C.

5 Importe total del presupuesto El importe total del presupuesto se calcula sumando el presupuesto de ejecución por contrata y los honorarios.41 € 3. A dicho valor se le aplicará el 18% de IVA.203.85 € TOTAL: 20.081.45 € 928.96 € Tabla 42: Honorarios facultativos 8.192.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes HONORARIOS FACULTATIVOS TOTAL: 928.26 € 158 .121. TOTAL PRESUPUESTO Concepto Presupuesto de Ejecución por contrata Honorarios SUBTOTAL IVA (18%) Tabla 43: Presupuesto total Coste 16.96 € 17.

A partir de ahí será tarea del desarrollador profundizar lo que considere necesario para añadir todas las funcionalidades que requiera su aplicación. a nivel personal este trabajo me ha servido para consolidar mis conocimientos de programación de aplicaciones Web (en concreto en el lenguaje PHP). y una manual que explicará los pasos a seguir a la hora de desarrollar un nuevo módulo para la plataforma. y siendo aceptado tanto por alumnos como por docentes. aunque a día de hoy el módulo Gruposlab es completamente funcional. El código fuente de este módulo. El módulo para la gestión de grupos de laboratorio ofrece diversas funcionalidades tanto a los profesores (configurar grupos de laboratorio. se ha redactado el presente informe (memoria) que cuenta. gestionar alumnos. Finalmente. Además.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 9 Conclusiones y trabajos futuros Los resultados de este proyecto de fin de carrera han sido la sistematización de la documentación para desarrolladores y la creación de un módulo para la gestión de laboratorios docentes. seleccionar varios grupos a los que se quiere apuntar en orden de preferencia. se han examinado todas las fuentes disponibles en Internet y se ha realizado una recopilación de todos los elementos que el desarrollador novel debe tener en cuenta antes de comenzar su trabajo. sino que los distribuye aleatoriamente teniendo en cuenta tanto sus preferencias como las de los profesores. arrojando resultados positivos tras un periodo de depiuración. el módulo Gruposlab ha sido probado en un entorno educativo real. Además. Por otro lado. gracias a la colaboración de varios profesores del Departamento de Matemáticas. así como toda la documentación en formato digital se adjunta mediante un CD a la memoria final. etc). un listado detallado de los recursos y librerías de código disponibles para desarrolladores. el módulo 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. entre otros apartados. etc) como a los alumnos (visualizar información sobre cada grupo de laboratorio disponible. En cuanto a la documentación para desarrolladores. 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 . con una descripción detallada de la arquitectura de Moodle. así como para aprender a administrar una plataforma de enseñanza virtual. Además se ha realizado una sencilla guía en la que se explica paso por paso cómo realizar un módulo para Moodle que disponga de las funcionalidades básicas. Una vez alcanzados los objetivos que se plantearon en el anteproyecto.

como por ejemplo si se están configurando dos grupos que coinciden a la misma hora en el mismo aula. Por tanto sería interesante tratar de generalizar el módulo Gruposlab tanto como fuera posible para abarcar todos estos problemas. también hay que formar grupos para hacer trabajos. cabe destacar que con la entrada de las universidades españolas en el Espacio Europeo de Educación Superior (conocido como Plan Bolonia) no sólo se forman grupos (más o menos grandes) para trabajar en el laboratorio. también se debería comprobar que la hora a la que comienza un grupo de laboratorio sea anterior a la hroa en que termina. realizando los cambios oportunos (si fueran necesarios).  En la versión actual del módulo. Actualmente para ver los listados se debe seleccionar un grupo.  En el mismo formulario. pero no muestra ningún aviso. exponer bloques de contenidos en clase.  Sería conveniente que se desarrollaran las librerías necesarias para que el módulo tuviera soporte para las copias de seguridad y la restauración de los cursos de Moodle. Sería 160 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes debido al imitaciones temporales. debería existir la posibilidad de visualizar a la vez las listas de alumnos de todos los grupos en la misma pantalla. o si un profesor está asignado en dos grupos a la vez en el mismo horario. otras cosas que se podrían añadir o mejorar en versiones futuras del módulo actual son las siguientes:  Sería conveniente que se revisase el formulario de configuración de cada grupo de laboratorio. pero que sería bueno tener en cuenta para futuras versiones de la aplicación. etc. tal y como cubre este proyecto como necesidad directamente planteada por el Departamento de Matemáticas de la Universidad de Alcalá. En la versión actual el sistema no genera el grupo si se da esta circunstancia. y se muestra la lista de alumnos de ese grupo. resolver bloques de problemas. Además de lo anterior. Entre ellos.  Una vez que se ha producido el reparto de grupos de laboratorio. cuando se produce el reparto de los grupos de laboratorio el sistema envía un correo automáticamente a los profesores del curso y otro a cada alumno indicándole el grupo al que ha sido asignado. trabajos de campo. Para todas estas situaciones sería muy útil disponer de una herramienta para automatizar en la medida de lo posible la creación y gestión de grupos. de forma que la aplicación avisase si detecta que se están configurando opciones que podrían ser potencialmente incorrectas. pero no impedirle que continúa con ella una vez que se ha asegurado de que es correcta. En casos como estos el sistema debería avisar al profesor que está realizando la configuración. El sistema debería impedir que se guarde la configuración si se da esta circunstancia. Sin embargo.

realizar los cambios necesarios y por último dar su confirmación para que los correos fueran enviados. sería conveniente que se realizara un seguimiento de este proceso. el profesor pudiera revisar las listas de alumnos generadas por el sistema. de manera que se asegure la inclusión del módulo dentro del repositorio oficial de módulos no estándar de la plataforma. aunque el módulo ya ha sido enviado a la comunidad de Moodle para su revisión y posterior aprobación. 161 .Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes conveniente que antes enviar el correo a los alumnos. De esta forma toda institución que quiera hacer uso de las funcionalidades desarrolladas podrá descargarlo. modificarlo y usarlo libremente según sus propias necesidades.  Por último.

.

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes

10 Bibliografía
 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 Práctica. Cómo hacer el Aprendizaje Significativo en el Aula. España BARTOLOMÉ, A. (2004). Blended Learning, Conceptos Básicos. Píxel-Bit Revista de Medios y Educación, 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 Formación del Profesorado. Ponencia presentada al VI Congreso Internacional Virtual de Educación CIVE 2006, España.   BRODSKY, M. W. (2003). Four Blended Learning Blunders and How to Avoid Them. Learning Circuits, Noviembre 2003. COMEZAÑA, O. & GARCÍA, F. (2005). Plataformas para Educación Basada en Web: Herramientas, Procesos de Evaluación y Seguridad. Informe Técnico DPTOIAIT-2005-1. Salamanca: Departamento de Informática y Automática, Universidad de Salamanca.  DODGE, B. (2001). FOCUS: Five rules for writing a great webquest. Learning & Leading with Technology, 28(8). Recuperado en línea el 3 de junio de 2008, en http://webquest.sdsu.edu/documents/focus.pdf  DUART, J. & LUPIÁÑEZ, F. (2005). La perspectiva organizativa del e-learning. Revista de Universidad y Sociedad del Conocimiento Vol.2 - Nº 1 / Mayo de 2005. Recuperado en línea el 3 de junio de 2008, de www.uoc.edu/rusc    EDUTOOLS. (2010). Compare Management Systems . Recuperado en línea el 7 noviembre 2010, de http://www.edutools.info/course/compare/all.jsp. ESCORCIA G. (2001). La Importancia de la Tecnología en la Educación. GARCÍA PEÑALVO, F.J. (s/f) Estado actual de los sistemas e-learning. Recuperado en línea el 7 de noviembre de 2010, en

163

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes http://campus.usal.es/~teoriaeducacion/rev_numero_06_2/n6_02_art_garcia_pe nalvo.htm  GARCÍA PEÑALVO, F. J. y GARCÍA CARRASCO, J. (2001) Los espacios virtuales educativos en el ámbito de Internet: Un refuerzo a la formación tradicional, Teoría de la Educación. Educación y Culturaen la Sociedad de la Información. Recuperado en línea el 7 de noviembre de 2010, en http://www3.usal.es/~teoriaeducacion/rev_numero_03/n3_art_garciagarcia.htm   GÓMEZ, J. (2006). Moodle 1.5 Manual de Consulta. Propuesta Pedagógica. Valladolid: GNU Press. GONZÁLEZ DE FELIPE, A.T. (s/f). Guía de apoyo para el uso de Moodle 1.9.4. Usuario desarrollador. EUITIO, Universidad de Oviedo. Recuperado en línea el 9 de noviembre de 2010, en http://download.moodle.org/docs/es/1.9.4_usuario_desarrollador.pdf  GONZÁLEZ DE FELIPE, A.T. (s/f). Guía de apoyo para el uso de Moodle 1.9.4. Usuario profesor. EUITIO, Universidad de Oviedo. Recuperado en línea el 9 de noviembre de 2010, en http://download.moodle.org/docs/es/1.9.4_usuario_profesor.pdf  GONZÁLEZ MARIÑO J.C. (2006). B-Learning utilizando Software Libre, una alternativa viable en Educación Superior. Universidad Autónoma de Tamaulipas. Mexico. Recuperado en línea el 9 de noviembre de 2010, en http://revistas.ucm.es/edu/11302496/articulos/RCED0606120121A.PDF   HERNÁNDEZ, J.M. (2005). Software libre: técnicamente viable, económicamente sostenible y socialmente justo. Zero Factory S.L. Barcelona. IVORRA OLTRA, I. (2009). Tutorial:Creación de unmódulo actividad.Moodle (1.9.3). Recuperado en línea el 9 de noviembre de 2010, en http://gplsi.dlsi.ua.es/~slujan/materiales/creacion-modulo-moodle.pdf    JOIN (2005). Evaluación de las plataformas LMS. KAPLAN-LEISERSON, E. (s/f). Glosary. American Society of Training and Development. Citado por Clara López Guzmán. LARA FUILLERAT J.M. (2009). Moodle, Manual de referencia para el profesorado. Recuperado en línea el 9 de noviembre de 2010, en http://www.scribd.com/doc/16990042/Moodle-Manual-de-referencia-paraprofesores-version-19  LÓPEZ GUZMÁN, C. (2005) Los repositorios de objetos de aprendizaje como soporte para los entornos e-learning (Cap. 2). Recuperado en línea el 9 de noviembre de 2010, en http://www.biblioweb.dgsca.unam.mx/libros/repositorios/la_web.htm

164

Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes  MARCELO, C., PUENTE, D., BALLESTEROS, M. A. & PALAZÓN, A. (2002). e-learning, Teleformación, Diseño, Desarrollo y Evaluación de la Formación a través de Internet . Barcelona: Gestión 2000.  MENA, M. (2004). América Latina en la Búsqueda de Nuevos Modelos de Educación a Distancia. En M. Mena (compiladora), La Educación a Distancia en América Latina (pp 15-36). Buenos Aires: ICDE-UNESCO.    MOODLE (2010). Página oficial de Moodle. Recuperada en línea 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 código fuente de Moodle. Recuperado en línea 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 línea el 7 de noviembre de 2010, de http://www.e-learn.cz/soubory/lcms_and_lms.pdf.  RODRÍGUEZ MARTÍN, F.J. (2007). Tutorial para la creación de un Módulo en Moodle. Recuperado en línea 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 educación a distancia. En Mena, M. (compiladora) La Educación a Distancia en América 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 Educación CIVE 2006, España.  ROSAS, P. (2005). La Gestión de Ambientes Virtuales de Aprendizaje en los Posgrados de la U de G. en Tecnologías para Internacionalizar el Aprendizaje. (pp. 63-75). Guadalajara: Universidad de Guadalajara, Méjico.   ROSENBERG, M. J. (2001). e-learning Strategies for Delivering Knowledge in the Digital Age. Columbus, HO: McGraw-Hill. SANGRÁ MORER A. (2002) Educación a distancia, educación presencial y usos de la tecnología: una tríada para el progreso educativo. Recuperado en línea 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 línea el 7 de noviembre de 2010, en http://seamonkey.ed.asu.edu/~mcisaac/emc703/leah5.html 165

cl/nodoeducativo/wpcontent/uploads/2009/03/fvera_2. Japan.pdf 166 . (2003). London: Routdlege THORNE. (ED) (1999) The convergence of distance and conventional education. Recuperado en línea el 7 de noviembre de 2010. VASSILEVA J.Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes    TAIT. (1997) Dynamic Courseware Generation on the WWW.  VERA. Kobe.utemvirtual. en http://www. Workshop at AIED'97. F. A. K. MILLS. (2008) La modalidad Blended Learning en Educación Superior. London : VA Kogan. Proceedings of the Intelligent Educational Systems on the World Wide Web. R.. Blended Learning: How to Integrate Online & Traditional Learning .

.......................................................................................................... 57 Ilustración 15: Instalación de Moodle-Paso 5 .............................................. 105 Ilustración 28: Diagrama Entidad/Relación ...................... 59 Ilustración 19: Instalación de Moodle-Paso 9 ...................................................................... 57 Ilustración 16: Instalación de Moodle-Paso 6 ............................ 124 Ilustración 33: Modelo de casos de uso: Avisos .......................................... 34 Ilustración 5: Arquitecturas típicas de Moodle ... 27 Ilustración 3: Sistemas de Administración de Contenidos de Aprendizaje (LCMS) ......... 60 Ilustración 21: Instalación de Moodle-Paso 11 ................................ 61 Ilustración 24: Formulario generado con la clase moodleform_mod.............................. 93 Ilustración 25: Añadir un campo selector de fecha a un formulario ............................................. 53 Ilustración 10: Instalación de MySql ................ 121 Ilustración 30: Modelo de casos de uso: Gestión de instancias .......................................................................................................................................................................................................................................................................................................................... 55 Ilustración 12: Instalación de Moodle-Paso 2 ............................................................... 26 Ilustración 2: Plataformas de enseñanza virtual más comunes ............................................................................. 123 Ilustración 32: Modelo de casos de uso: Gestión de alumnos .......................................................... 95 Ilustración 27: Entorno tecnológico...................................................... 122 Ilustración 31: Modelo de casos de uso: Gestión de grupos .................................... 128 Ilustración 37: Diagrama de flujo del algoritmo de reparto de grupos ............................... 126 Ilustración 35: Diagrama de flujo de usuario profesor .......... 38 Ilustración 8: Estructura general de Moodle.................................................. 58 Ilustración 17: Instalación de Moodle-Paso 7 ................. 56 Ilustración 13: Instalación de Moodle-Paso 3 ......................................................................................................... 54 Ilustración 11: Instalación de Moodle-Paso 1 ................................ 61 Ilustración 23: Instalación de Moodle-Paso 13 ......................................... 117 Ilustración 29: Modelo de casos de uso general ........................................................................................................ 127 Ilustración 36: Diagrama de flujo del usuario Alumno.................................... 60 Ilustración 22: Instalación de Moodle-Paso 12 ................................................... 58 Ilustración 18: Instalación de Moodle-Paso 8 .......................................................................... 94 Ilustración 26: Editor XMLDB............................................................................................ 37 Ilustración 7: Directorios de Moodle ............................................................... 41 Ilustración 9: Apache instalado correctamente ................. 59 Ilustración 20: Instalación de Moodle-Paso 10 ....................................................... 125 Ilustración 34: Modelo de casos de uso: Inscripción .......... 56 Ilustración 14: Instalación de Moodle-Paso 4 ............ 129 167 ............... 36 Ilustración 6: Las tres áreas de Moodle ...................................................... 28 Ilustración 4: Entorno LAMP .............................................Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 11 Índice de ilustraciones Ilustración 1: Sistemas de Administración de Aprendizaje (LMS) .....................

.......................................................................................................... 135 Ilustración 44: Diagrama de componentes. 141 Ilustración 46: Configuración general de la aplicación ...................................................... 153 Ilustración 58: Desinstalar módulo GruposLab ............................................. 142 Ilustración 47: Configuración individual de los grupos ............. 153 168 ............................................ 135 Ilustración 45: Agregar el módulo GruposLab a un curso ........................................ 132 Ilustración 39: Interfaz listado de instancias.................................................................... 133 Ilustración 42: Interfaz Agregar/Eliminar alumnos de un grupo ......... 134 Ilustración 43: Interfaz Inscribirse/Editar inscripción ..................... 146 Ilustración 51: Agregar/quitar alumnos de un grupo ..................................................... 151 Ilustración 56: Pulsar Notificaciones para instalar el módulo. 132 Ilustración 40: Interfaz Configurar/Editar grupos de laboratorio ...............................................................................................Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Ilustración 38: interfaz Configurar/Editar instancias ......... 148 Ilustración 52: Elegir grupo de laboratorio ........................................................... 145 Ilustración 50: Administración de un grupo de laboratorio .............................. 143 Ilustración 48: Mensaje grupos configurados correctamente ........................................................................................ 150 Ilustración 54: Comprobar grupo asignado ... 133 Ilustración 41: Interfaz listado de alumnos de un grupo ................................................. 149 Ilustración 53: Modificar grupos de laboratorio ........................ 144 Ilustración 49: Calendario con los grupos de laboratorio . 151 Ilustración 55: Colocar carpeta gruposlab en el directorio de módulos ........................ 152 Ilustración 57: Módulo instalado correctamente ................

............................................................ 110 Tabla 14: RQF-14_Descarga de listas de estudiantes .................................... 109 Tabla 12: RQF-12_Visualización de grupos .... 112 Tabla 21: RQF-21_Eliminación de archivos temporales ....... 109 Tabla 11: RQF-11_Modificación particular de grupo .......................................... 108 Tabla 8: RQF-08_Configuración de la instancia .................. 106 Tabla 2: RQF-02_Inscripción .......................................... 114 Tabla 25: RQI-01_Interfaces separadas ...... 107 Tabla 3: RQF-03_Modificación de la inscripción....................................................................... 156 Tabla 38: Coste total de ejecución material ........................................................ 114 Tabla 27: RQS-01_Control de acceso de usuarios ............ 115 Tabla 28: RQS-02_Configurar grupos ..................................................................................................................................................................... 114 Tabla 26: RQI-02_Calendario de grupos ......................................................................................................................... 155 Tabla 34: Costes de Hardware .............................................................................................................................................................. 112 Tabla 22: RQD-01_Datos de la instancia.................................................................... 108 Tabla 7: RQF-07:_Eliminación de un curso .................................................... 156 Tabla 36: Costes de consumibles ................................................................... 115 Tabla 29: RQS-03_Inscribirse ......................................................................... 110 Tabla 17: RQF-17_Instalación del módulo .............................................................. 155 Tabla 35: Costes de Software ........................ 156 Tabla 37: Coste total de tiempo trabajado .............................. 113 Tabla 23: RQD-02_Datos de los grupos ........................................................... 107 Tabla 5: RQF-05_Información de grupo asignado ...................................... 109 Tabla 13: RQF-13_Visualización de listas de estudiantes ......................................... 108 Tabla 9: RQF-9_Modificación de la instancia ............. 113 Tabla 24: RQD-03_Datos de los estudiantes ........................................................................................................................................................................... 131 Tabla 32: Especificación del plan de pruebas ............................................................ 107 Tabla 4: RQF-04_Aviso de reparto .......... 115 Tabla 30: RQC-01_Estilo de código ........................................................................................ 140 Tabla 33: Costes de sistemas ...................................... 111 Tabla 20: RQF-20_Reparto de grupos ................................. 109 Tabla 10: RQF-10_Configuración particular de cada grupo ...................................................... 110 Tabla 15: RQF-15_Redistribución de estudiantes .................................................. 157 169 .............................................................................................................................................. 111 Tabla 19: RQF-19_Desinstalación del módulo ............................................. 110 Tabla 16: RQF-16_Aviso de reparto ........................................................................Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 12 Índice de tablas Tabla 1: RQF-01_Visualización de información .......................................................................................................................................... 116 Tabla 31: Interfaces de usuario ..................... 108 Tabla 6: RQF-06_Inserción en un curso ................ 111 Tabla 18: RQF-18_Actualización del módulo .........................................................................

...................................................................... 158 Tabla 43: Presupuesto total ...................................................... 158 170 ................................................................ 157 Tabla 41: Tarifas de honorarios facultativos ..... 157 Tabla 40: Coste de ejecución por contrata ...........................................................................Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Tabla 39: Gastos generales y beneficio industrial .......... 157 Tabla 42: Honorarios facultativos .....................................................

........................... 54 Código 6: Crear el directorio moodledata y darle permisos adecuados ................. 84 Código 23: Función get_context_instance ...... 86 Código 26: Función record_exists ........................................................... 76 Código 17: Ejemplo de fichero upgrade................................................................................................. 89 Código 34: Ejemplo añadir lista desplegable ....................................... 64 Código 9: Ejemplo de función bien definida ..... 54 Código 5: Descomprimir Moodle y colocarlo el directorio www ................. 65 Código 11: Ejemplos de definición de cadenas .............................................................. 89 Código 33: Función update_record............... 87 Código 27: Función record_exists_select................... 98 171 ....................................................... 53 Código 3: Instalación de PHP ........................................................................................................................................................................................................................................................................................................................... 64 Código 10: Ejemplo de bloque de código correcto siguiendo el estilo de Moodle ............ 83 Código 21: Función require_capability .................................................... 54 Código 4: Descarga de Moodle ...................................................... 77 Código 18: Ejemplo de fichero mod_form.. 73 Código 16: Ejemplo de fichero install.......................... 96 Código 36: Recuperación de cadenas del fichero de idioma ............ 84 Código 24: Función get_users ..............................................................................................................................................php ................php .... 88 Código 30: Función count_records_select ................. 87 Código 28: función record_exists_sql ......................php ............................................................................. 53 Código 2: Instalación de MySQL .............. 66 Código 13: Ejemplo del uso de espacios para hacer más claro el código ....................... 88 Código 31: Función count_records_sql .............................................................................. 81 Código 20: Ejemplo de fichero view.............................................. 85 Código 25: Función execute_sql .............................. 87 Código 29: Función count_records ................ 65 Código 12: Ejemplos de comentarios de línea y párrafo.............................php ....................................................................................... 55 Código 7: Ejemplos de nombres de variables correctos e incorrectos ......xml ........... 64 Código 8: Ejemplo de definición de una constante ................................ 80 Código 19: Ejemplo de fichero version.......................... 84 Código 22: Función has_capability ................................................... 96 Código 37: Ejemplo de definición de capacidades ..................................php...................................................................... 88 Código 32: Función insert_record .................................................. 66 Código 15: Ejemplo de fichero access................... 66 Código 14: Ejemplo de copia correcta de un objeto ......................................................................................Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes 13 Índice de código Código 1: Instalación de Apache2 ........................................................................... 93 Código 35: Ejemplo de cadenas en el fichero de idioma .............................................................................................................................................................................................................................................................................................................................................

............................. 99 Código 39: Ejemplo de código XML de backup ............................... 100 172 ......................Análisis del desarrollo de extensiones para Moodle: Desarrollo de un módulo para la gestión de laboratorios docentes Código 38: Ejemplo de cambios en la base de datos .................

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer: Get 4 months of Scribd and The New York Times for just $1.87 per week!

Master Your Semester with a Special Offer from Scribd & The New York Times