Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Diseño y desarrollo de un libro virtual para el apoyo a la enseñanza del curso Clientes Web Enriquecidos.
Juan Carlos Pardo Amador
Sergio Eduardo Sinuco León.
Tesis preparada en requerimiento para el grado de Ingeniero de Sistemas y Computación.
Director:
Camilo Hernando Jiménez Fuentes.
Universidad de los Andes
Departamento de Ingeniería de Sistemas y Computación.
Bogotá D.C.
Noviembre 2009.
0. RESUMEN. Durante la cátedra del curso Clientes WEB Enriquecidos se han identificado tres problemáticas que dificultan el aprendizaje y adquisición de habilidades en los estudiantes para la programación de
aplicaciones WEB: existe gran cantidad de contenidos, conceptos y temas relacionados con la WEB, continuamente surgen nuevas tecnologías y cambios constantes en las existentes y no existe un acceso estructurado a recursos y/o personas con experiencia y conocimiento. El presente
proyecto de grado pretende resolver estas problemáticas a través del diseño y desarrollo de un libro publicado en internet que estructure los contenidos del curso y la creación de una
comunidad virtual de aprendizaje alrededor de este libro que garantice su crecimiento y actualización.
1. INTRODUCCIÓN Consciente que las tecnologías web son esenciales en los currículos de ciencia de computación (1), la Universidad de los Andes ha incluido desde hace 3 años en su programa de Ingeniería de Sistemas y Computación el curso presencial Clientes WEB Enriquecidos con el objetivo de generar
en los estudiantes las habilidades necesarias para el desarrollo de aplicaciones WEB (2). Sin embargo durante este proceso se han encontrado problemáticas como el desarrollo individual de
recursos (lecturas, prácticas de laboratorios y exámenes) por parte de los profesores sin ninguna clase de socialización y retroalimentación (3); gran cantidad de contenidos, conceptos y temas; el
surgimiento de nuevas tecnologías y cambios constantes en las existentes (1) y la falta de acceso estructurado a recursos y/o personas con experiencia y conocimiento (4). Para solucionar dichas
problemáticas, en este proyecto de grado se propone estructurar los contenidos del curso en un libro publicado en internet definiendo capítulos, secciones e índices por página y temas. Alrededor de él crear una comunidad virtual de aprendizaje donde las personas (estudiantes y
profesores) con conocimiento acerca de tecnologías web puedan contribuir y colaborar, con su conocimiento y experiencia, al crecimiento y actualización de los contenidos del curso
manteniéndolos siempre útiles y actualizados.
El resultado de este proyecto de grado es un sitio WEB que a través de un Sistema Administrador
de Contenidos (CMS por sus siglas en inglés) permite a un administrador publicar fácilmente contenidos del libro virtual y a los usuarios registrados comentar, calificar, referenciar y compartir
recursos relacionados con dichos contenidos.
La estructura del artículo es la siguiente: la primera sección expone los objetivos del proyecto, sus antecedentes e importancia. En la siguiente sección se presenta las especificaciones y restricciones
del proyecto. Después, se detalla el proceso de diseño describiendo las fuentes de información y alternativas de diseño. Luego, se describe minuciosamente la solución implementada presentando
los resultados de los métodos y pruebas de su validación. Por último se discuten algunas conclusiones y trabajo futuro.
2. DESCRIPCIÓN GENERAL 2.1 Objetivos .
El objetivo general del proyecto es el desarrollo de una plataforma que permita la administración del conocimiento de una comunidad conformada por los profesores y estudiantes del curso
Cliente Web Enriquecidos alrededor de un libro que será publicado en internet y reunirá los contenidos y conceptos básicos del curso. Para esto se debe contar con herramientas software
que faciliten la captura, organización, almacenamiento y evaluación de los conocimientos y recursos aportados por cada uno de los miembros de la comunidad.
Como objetivos específicos se quiere fomentar la participación activa e intercambio de conocimiento entre todos los miembros de la comunidad para el incremento continúo de los recursos y conocimiento administrados. Por último se espera consolidar la plataforma como una
fuente reconocida de recursos y conocimiento en tecnologías web.
2.2 Antecedentes.
E‐learning 2.0
En E‐learning 2.0 el conocimiento es socialmente construido y se basa en la colaboración, para esto se recurre al software social generado a partir de la WEB 2.0: Weblogs, Wikis, Podcasts y
mundo virtuales.
• Weblogs: creados por Jorn Barger en 1997, se trata de sitios web con entradas de información y contenidos ordenadas cronológicamente, mostrando en primer lugar la
entrada más reciente (5).
• Wikis: es una plataforma que permite a cada usuario crear, editar y revisar artículos. El objetivo era desarrollar un sistema fácil de gestión de conocimiento que permitiera una
colaboración en línea efectiva y eficiente. La gran diferencia entre un Weblog y una wiki es que el blog es personal. Las wiki se usan para trabajos colaborativos (5).
• Podcasts: es un archivo multimedia que es distribuido mediante internet usando sistemas de sindicación y puede ser reproducido en cualquier dispositivo móvil o computador personal (5).
La mayoría de la bibliografía relacionada con E‐Learning 2.0 estudia el uso de wikis como
herramienta pedagógica. Por ejemplo en (6) los investigadores utilizaron wikis para apoyar dos cursos de Master of IT at Macquarie University. En un curso se colocaban tareas semanales donde
cada estudiante contribuía a resolver el problema en la wiki. El otro curso, se dividió en grupos y se asignó un proyecto diferente para cada uno que debía desarrollarse a lo largo del semestre. Los
avances del proyecto debían consignarse en la wiki. Al final del semestre, se diseñaron preguntas que respondieron los estudiantes. Teniendo en cuenta estas respuestas se concluyeron 12
recomendaciones al momento de implementar wikis. Las principales recomendaciones son: se debe dar un porcentaje en la nota final del curso a la participación en la wiki para motivar la participación de los estudiantes y las wikis son apropiadas si se requiere que los estudiantes hagan
contribuciones asíncronas que sean rastreables, con productos específicos y concretos y que requieran negociación.
Por otro lado, en (7) se estudia el uso de wikis para la administración del conocimiento dentro de una compañía. Entre los beneficios identificados se encuentra el soporte para múltiples procesos
relacionados con el conocimiento así mismo facilitan la comunicación y administración de la información personal, hace el knowledge work de cada empleado más visible y abren más
oportunidades de colaboración entre las personas vinculándolas a procesos de edición colaborativa. Por último, se destaca la importancia de que cultura organizacional debe ser de mente abierta e haya un intercambio de ideas no jerárquico.
Otros trabajos de E‐learning 2.0 presentan el diseño de plataformas para la administración de conocimiento. Este es el caso de EDUWIKI (8) un sistema groupware (software de colaboración)
que convierte el know‐how de los miembros de una comunidad educativa en recursos explícitos de conocimiento para los profesores a través de ambientes de trabajo colaborativo soportados
por wikis.
Por último en la University of Southern Queensland y en la escuela de leyes de la Universidad de Harvard se han desarrollado cursos en la plataforma de mundos virtuales Second Life (9). Esto ha
extendido el campo de acción de las universidad ya que se los contenidos quedan abiertos al público y se incluye el aprendizaje informal dentro de los procesos tradicionales de aprendizaje.
2.3 Marco Conceptual .
CUPI2 y Clientes WEB Enriquecidos.
Cupi2 es un proyecto creado en la Universidad de los Andes en el año 2005 y formula tres bases
para facilitar la tarea de enseñar a programar: 1) un enfoque de aprendizaje activo basado en problemas, 2) un balance entre ejes temáticos relacionados con programación y 3) la construcción
de un modelo pedagógico estructurado y estándar para apoyar a los instructores.
El aprendizaje activo se logra a través de ejemplos que integran varios ejes temáticos y permiten a
los estudiantes generar habilidades para resolver problemas reales y buenas prácticas de desarrollo para el contexto profesional (3).
En cuanto a los ejes temáticos, CUPI2 plantea: modelado y resolución de problemas; algorítmica; lenguajes y tecnologías; arquitectura; técnicas y metodologías de programación; proceso y herramientas de terceros (10). Estos 7 ejes deben generar habilidades en los estudiantes más que
experticia en una tecnología específica (10).
Por último, el modelo pedagógico que se plantea se basa en el aprendizaje incremental de
habilidades. Para esto se plantean diferentes niveles con objetivos específicos que se deben cumplir apoyados en una serie de recursos como ejemplos y problemas, generando nuevas
habilidades y refuerzo en las ya adquiridas por los estudiantes (3).
Clientes WEB Enriquecidos es un curso de la Universidad de los Andes que utiliza la metodología de CUPI2 para la generación de habilidades de alto nivel que permitan al estudiante modelar,
especificar y solucionar problemas en cualquier lenguaje de programación (2). Para esto define cinco ejes temáticos independientes de la tecnología: Arquitectura, Usabilidad, Testing,
Herramientas, frameworks, librerías y tecnología y por ultimo Lenguajes y programación. Finalmente, para permitir un aprendizaje incremental, estos ejes temáticos se distribuyen en tres
niveles: Web 1.0, Web 2.0 e Internet como plataforma, cada uno apoyados con ejemplos, ejercicios y presentaciones.
3. DISEÑO Y ESPECIFICACIONES 3.1 Definic ión del problema.
Durante el proceso de aprendizaje y adquisición de habilidades para el desarrollo de aplicaciones WEB se encuentra diferentes problemáticas como la gran cantidad de contenidos, conceptos,
temas, tecnologías y lenguajes de programación. En cuanto a estos dos últimos podemos mencionar a Java, Java Servlet/JSP, PHP, ASP.NET, HTML, CSS, JavaScript y sus derivados como AJAX y JQuery, ActionScript, Python, entre otros. Esta problemática, es agravada por el
surgimiento de nuevas tecnologías y cambios constantes en las existentes. Por ejemplo en los últimos años han surgido API’s para los servicios de Google, Facebook, Twitter, eBay y Amazon. Así
mismo desde su nacimiento en 1995, PHP ha tenido 6 versiones principales (cada una con varias versiones secundarias) y se han tenido 4 especificaciones de RSS desde el año 2000. Una última
problemática está relacionada con la falta de una forma estructurada de acceder a recursos y/o personas con experiencia y conocimiento. Por ejemplo una búsqueda de “PHP tutorial” en Google
arroja más de 35 millones de resultados.
3.2 Especificaciones .
Comunidad Virtual
Una comunidad virtual puede definirse en términos de (11):
• las personas quienes infectan socialmente para satisfacer sus necesidades o desempeñar roles especiales como liderar o moderar.
• Un propósito común que dé una razón para que la comunidad exista.
• Políticas, en la forma de reglas, protocolos y leyes que guíen la interacción entre las personas.
• Sistema computacional que apoyan y soportan la interacción social generando un sentimiento de fraternidad entre los miembros de la comunidad.
La comunidad ofrece espacios diferentes a los convencionales para que los usuarios interactúen de manera permanente y activa, lo cual beneficia su participación al curso debido a que éstos pueden aportar y realizar comentarios; es decir tener una herramienta móvil que enriquece la
información a diferencia de imprimir un libro, en razón a que este no tendrá aportes ni
comentarios de los usuarios. Esta forma innovadora permite conocer distintos puntos de vista de los usuarios y no un espacio con hojas pétreas como lo son los libros normalmente.
La gran ventaja es que brinda espacios de trabajo sin fronteras que puede facilitar posibilidades de trabajo sin que llegare a importar las barreras distánciales entre diferentes países que puedan a
llegar a presentarse. Por tanto en todo lugar y todo momento estará disponible la plataforma de clientes web para usarse. Por otra parte en el curso serán de fácil acceso todos los menús y
pestañas que estarán dispuestas para que los usuarios tengan una gran variedad de herramientas para que su desenvolvimiento en el curso sea óptimo. Es por esto, que tendrá a su alcance y visibilidad todo tipo de instrumentos para desarrollar sus necesidades en el sitio web.
A continuación presentamos el propósito, políticas, gobernabilidad, usabilidad, usuarios y WalkThrough de la comunidad diseñada.
Propósito:
El libro virtual del curso Clientes Web Enriquecidos, es una comunidad web que brinda un espacio
para personas que tengan conocimiento en tecnologías web. En este espacio, las personas podrán interactuar, compartir su conocimiento adjuntando propias experiencias de temas afines e incluso compartir su trabajo con la comunidad, todo esto con el fin de vincular a las personas versadas en
el contenido, hacer prosperar la comunidad, el conocimiento y recursos que giran en torno a esta. Al mismo tiempo, este espacio servirá como una guía para los usuarios del curso y el
enriquecimiento del mismo.
EL tipo de conocimiento que será desarrollado por la comunidad será para la enseñanza y
desarrollo de una plataforma de aprendizaje que complemente e integre los métodos tradicionales de almacenamiento de información y conocimiento. Con esto, se permitirá a su vez
aumentar este conocimiento tecnológico con la ayuda de los integrantes de la comunidad, no sólo en teoría sino en la práctica también, a través de la participación de los usuarios y nuevos recursos que permitan mejorar las formas de enseñar y aprender tecnologías web en la web.
Esta comunidad se proveerá de herramientas técnicas apropiadas, que a través de discusiones entre usuarios abastecerán de manera constante y progresiva el espacio virtual.
Políticas:
Para ser parte de la comunidad, el usuario deberá iniciar un proceso de registro, en el cual se
clasificará a los usuarios; entre ellos, se encontrarán al administrador, moderador y usuario registrados y no registrados. De esta forma el usuario podrá participar activamente en la
comunidad y de igual forma, usuarios no registrados podrán hacer uso únicamente de los contenidos y recursos de la misma pero sin poder participar en ella; es decir de una manera externa. El estilo de comunicación principal entre los participantes será el sistema de mensajería
con comentarios. Será prohíbo y restringido todo tipo de comportamiento antisocial y no íntegro expresado como lenguaje obsceno, racismo e intolerancia religiosa.
En la comunidad se pretende que todos los usuarios tengan una participación activa, la cual asentirá el crecimiento de esta; para esto se deben garantizar unas normas de gobernabilidad que
aseguren el cumplimiento de este propósito, porque de lo contrario los usuarios no continuarán usando los servicios convirtiéndose en inhábiles para el sistema.
Dentro del ordenamiento de usuarios suministrada por el sistema, el rol del moderador será la cúspide para este fin, debido a que este guiará la interacción entre los usuarios y así mismo
brindará todas las herramientas para que el sitio esté en insuperables condiciones para los usuarios, libre de posibles agresiones contra estos. Por tanto el moderador será el responsable de brindar a la comunidad un ambiente cómodo y libre de cualquier tipo de agresión o violación de la
susceptibilidad de los usuarios.
El sistema cuenta con políticas de privacidad propias, en las que los usuarios tendrán la posibilidad
de escoger si quieren o no, compartir sus contenidos de manera que los demás usuarios puedan comentarlos y calificarlos. En cambio, los demás contenidos, es decir los referidos al libro virtual,
serán totalmente abiertos a los usuarios y sin ninguna restricción en dónde también encontramos la posibilidad de comentar y calificar.
Gobernabilidad:
Para unirse a la comunidad se tendrán prerrequisitos como pertenecer al curso Clientes Web Enriquecidos y aceptar las políticas del sitio.
Usabilidad:
Las necesidades de los usuarios hacen indispensable que en la comunidad las formas de
comunicación entre usuarios y de interacción con los contenidos sean fáciles y directas. Como es de vital importancia mantener una estructura fija en cuanto a los contenidos de la comunidad, los
aportes que brinden los usuarios serán adjuntados en la misma temática a la cual pertenece. Es decir, serán catalogados dentro de su temática a la cual pertenecen para formar una completa base de datos e incluirlos cada uno en la materia respectiva. Esos aportes enriquecerán las
tecnologías y temáticas referidas en el sitio, por y para los usuarios.
Para conocer que servicios presta la comunidad habrá una página de FAQ’s, sobre los servicios
prestados por el sitio, y se indagará para saber cómo hacer más placentera la experiencia de la comunidad para con los usuarios.
Usuarios:
Para la comunidad del curso Clientes Web Enriquecidos, se identificaron 4 tipos de usuarios:
• Administrador: Es el súper usuario del sistema. Está encargado de la administración y mantenimiento del sitio, al igual que la Base de Datos que soporta la comunidad. Como otras de sus funciones, el administrador es el encargado de agregar y eliminar usuarios, además de determinar los privilegios de los demás usuarios del sistema.
• Usuario registrado: tiene asignado un identificador, un nombre de usuario y una clave para el acceso a la comunidad, la cual le permite participar. El usuario puede navegar por el sitio, crear, ver y participar en foros, buscar contenidos, comentar, resaltar y marcar en
el libro. También puede agregar contenidos (herramientas, lenguajes, tecnología, patrones y material) en su espacio, además de resaltar, comentar, calificar estos contenidos y los de
otros usuarios (si los contenidos son públicos).
• Moderador: tiene los mismos privilegios que el usuario, pero controla los contenidos. Se encargara especialmente de editar, aprobar o eliminar el contenido de los foros y la
sección de comentarios del libro. Asegura para los usuarios un espacio cómodo y libre de contenido ofensivo.
• General: Este tipo de usuario, es cualquier persona que no se encuentre registrada en la comunidad; es decir un visitante. Por esto sólo tendrá permitido navegar el sitio, buscar
contenidos y ver foros.
WalkThrough
Dentro de la comunidad hay varias zonas en las que el usuario puede explorar,
Usuarios no registrados:
• Zona Navegación: Es la zona en la que los usuarios pueden encontrar los contenidos del libro virtual mediante indicies por temas, capítulos y paginas. Además se encuentran los foros, en dónde los usuarios pueden ver el contenido de los mismos.
• Zona de herramientas: Es la zona en la que los usuarios pueden explorar, resaltar, comentar y referenciar los contenidos de la comunidad (libro virtual). Sin embargo este tipo de usuarios solo tienen habilitados la exploración del libro.
• Zona de información corporativa y del sitio: En esta zona se provee información acerca
de políticas de uso del sitio, y de enlaces a los servicios del sitio para los usuarios.
Figura. 1 Walkthrough – Usuario No Registrado
Usuarios Registrados
• Zona Navegación: Es la zona en la que los usuarios pueden encontrar los contenidos del libro virtual organizados mediante indicies por temas, capítulos y paginas. Además se encuentran los foros, en dónde los usuarios pueden ver comentar y crear nuevos
hilos sobre temas que giran alrededor del foco de la comunidad.
• Zona de entrada: Se encuentra en la página principal, y es un formulario de nombre de usuario y clave para el ingreso de usuarios registrados.
• Zona de herramientas: Es la zona en la que los usuarios pueden explorar, resaltar, comentar, referenciar y navegar los contenidos de libro.
• Zona de Mis Contenidos: Es la zona en la que los usuarios pueden agregar recursos relevantes que se pueden clasificar como públicos o privados, para que otros usuarios
puedan comentarlos y calificarlos.
• Zona de información corporativa y del sitio: En esta zona se provee información acerca de políticas de uso del sitio, y de enlaces a los servicios del sitio para los usuarios.
Figura. 2 Walkthrough – Usuario Registrado
3.2.1 Casos de Uso
Administrador
Usuario
Figura. 4 Caso de Uso – Usuario Registrado
Moderador
Figura. 3. Caso de Uso ‐ Administrador
Figura. 5 Caso de Uso ‐ Usuario Moderador
General
Figura. 6 Caso de Uso ‐ Usuario no registrado
3.2.3 Especificación Casos de Uso:
Identificador: R1 Indispensable Prioridad: Alta
Nombre Agregar un Usuario
Resumen Agrega un usuario a la comunidad web
Categoría: Visible/No Visible Actores Involucrados: Administrador
Curso Básico de Eventos
1. El Administrador accede al sistema.
2. El Administrador accede al menú de administración de usuarios.
3. Ingresa al menú agregar nuevo usuario.
4. Ingresa los datos del nuevo usuario.
5. Usuario agregado.
Pre‐condición Usuario no existe en Base de Datos
Post‐condición Usuario agregado
Criterios de Aceptación Datos de usuario válidos
Entradas
nomUsuario
Nombre
Apellido
tipoUsuario
Contraseña
Resultados
El usuario se guarda en la base de datos
Si ya existe un usuario con el nombre de usuario especificado, se genera una excepción
Identificador: R2 Deseable Prioridad: Baja
Nombre Modificar un Usuario
Resumen Modifica la información de un usuario
Categoría: Visible/No Visible Actores Involucrados: Administrador
Curso Básico de Eventos
1. El Administrador ingresa al sistema.
2. Accede a menú de administración de usuarios.
3. Ingresa al menú modificar usuario.
4. Ingresa datos a modificar.
5. Acepta los cambios al usuario.
6. Usuario modificado.
Pre‐condición Usuario existe.
Post‐condición Usuario modificado.
Criterios de Aceptación Datos modificados satisfactoriamente.
Entradas
nomUsuario
Nombre
Apellido
tipoUsuario
Contraseña
Resultados
La información del usuario se actualiza en la base de datos
Si no existe un usuario con el id especificado, se genera una excepción
Identificador: R3 Indispensable Prioridad: Alta
Nombre Eliminar un Usuario
Resumen Elimina un usuario del sistema
Categoría: Visible/No Visible Actores Involucrados: Administrador
Curso Básico de Eventos
1. El Administrador ingresa al sistema.
2. Accede a menú de administración de usuarios.
3. Ingresa al menú eliminar usuario.
4. Ingresa usuario a eliminar.
5. Acepta usuario a eliminar.
6. Usuario eliminado.
Pre‐condición Usuario existe.
Post‐condición Usuario eliminado.
Criterios de Aceptación Usuario eliminado satisfactoriamente.
Entradas
nomUsuario
Resultados
La información del usuario se borra de la base de datos
Si no existe un usuario con el id especificado, se genera una excepción
Identificador: R4 Indispensable Prioridad: Alta
Nombre Iniciar sesión en el sistema
Resumen Accede a los servicios de la comunidad
Categoría: Visible/No Visible Actores Involucrados: Administrador, Usuario y Moderador
Curso Básico de Eventos
1. Ingresar datos de inicio en el sistema.
2. Ingresar al sistema.
3. Se accede a los servicios adicionales.
Pre‐condición El usuario existe y la contraseña es correcta.
Post‐condición Se ingresó exitosamente al sistema.
Criterios de Aceptación
Entradas
nomUsuario
Contraseña
Resultados
El usuario accede al sistema.
Identificador: R5 Indispensable Prioridad: Medio
Nombre Agregar Comentario Libro
Resumen Agrega un comentario al libro
Categoría: Visible/No Visible Actores Involucrados: Administrador, Usuario y Moderador
Curso Básico de Eventos
1. Ingresar a sección de comentarios.
2. Escribir comentario.
3. Aceptar comentario.
4. Comentario agregado.
Pre‐condición El usuario está conectado al sistema.
Post‐condición Comentario agregado.
Criterios de aceptación El contenido del comentario es apropiado.
Entradas
Usuario : Usuario que escribe el comentario
Comentario
Capítulo
Sección
Resultados
Se guarda el comentario respectivo.
Identificador: R6 Indispensable Prioridad: Medio
Nombre Borrar Comentario Libro
Resumen Elimina un comentario del libro
Categoría: Visible/No Visible Actores Involucrados: Administrador.
Curso Básico de Eventos
1. Ingresar a sección de comentarios.
2. Elige el comentario a eliminar.
3. Eliminar comentario.
4. Comentario eliminado.
Pre‐condición El usuario está conectado al sistema.
Post‐condición Comentario eliminado.
Criterios de aceptación El comentario es eliminado.
Entradas
Usuario : Usuario que escribe el comentario
Comentario
Capítulo
Sección
Resultados
Se elimina el comentario seleccionado.
Identificador: R9 Deseable Prioridad: Medio
Nombre Agregar marcador al libro.
Resumen Agregar un marcador al libro.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Seleccionar opción de agregar marcador.
2. Crea marcador de la página actual.
3. Se visualiza un nuevo marcador.
4. Marcador creado.
Pre‐condición El usuario debe haber ingresado al sistema.
Post‐condición Marcador creado exitosamente.
Criterio de Aceptación Se crea un marcador de la página actual.
Entradas
Usuario
Página
Resultados
Se guarda el marcador.
Identificador: R10 Deseable Prioridad: Medio
Nombre Eliminar marcador.
Resumen Eliminar un marcador del libro.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos 1. Seleccionar opción de borrar marcador.
2. Seleccionar marcador a borrar.
3. Marcador eliminado.
Pre‐condición El usuario debe haber ingresado al sistema.
Post‐condición Marcador eliminado exitosamente.
Criterio de Aceptación Se elimina el marcador seleccionado.
Entradas
Usuario
Página
Resultados
Se elimina el marcador.
Identificador: R11 Deseable Prioridad: Medio
Nombre Crear Foro.
Resumen Crear un nuevo foro en la comunidad.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Ingresar al menú de foros.
2. Seleccionar opción de crear foro.
3. Ingresar datos de creación del foro.
4. Foro creado.
Pre‐condición El usuario debe haber ingresado al sistema.
Post‐condición Foro creado exitosamente.
Criterio de Aceptación Se crea el foro con los datos suministrados.
Entradas
Usuario
Tema
Fecha
Resultados
Se crea un nuevo foro.
Identificador: R12 Deseable Prioridad: Medio
Nombre Eliminar Foro.
Resumen Eliminar un foro de la comunidad.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador.
Curso Básico de Eventos 1. Ingresar al menú de foros.
2. Seleccionar opción de eliminar foro.
3. Seleccionar foro a eliminar.
4. Foro eliminado.
Pre‐condición El usuario debe haber ingresado al sistema y el foro debe existir.
Post‐condición Foro eliminado exitosamente.
Criterio de Aceptación Se elimina el foro seleccionado.
Entradas
Usuario
Tema
Resultados
Se elimina el foro.
Identificador: R13 Deseable Prioridad: Medio
Nombre Participar en el foro.
Resumen Participar en un foro de la comunidad.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Ingresar al menú de foros.
2. Seleccionar ver foros.
3. Seleccionar foro para participar.
4. Seleccionar opción participar.
5. Escribir participación.
6. Aceptar participación.
7. Participación realizada.
Pre‐condición El usuario debe haber ingresado al sistema, el foro debe existir.
Post‐condición Participación agregada exitosamente.
Criterio de Aceptación Contenido de la participación es válido.
Entradas
Usuario
Tema/Foro
Participación
Resultados
Participación agregada.
Identificador: R14 Deseable Prioridad: Medio
Nombre Eliminar Participación del foro.
Resumen Eliminar Participación del foro de la comunidad.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Ingresar al menú de foros.
2. Seleccionar ver foros.
3. Seleccionar foro para participar.
4. Seleccionar opción participar.
5. Escribir participación.
6. Aceptar participación.
7. Participación realizada.
Pre‐condición El usuario debe haber ingresado al sistema, el foro debe existir.
Post‐condición Participación agregada exitosamente.
Criterio de Aceptación Contenido de la participación es válido.
Entradas
Usuario
Tema/Foro
Participación
Resultados
Participación agregada.
Identificador: R15 Deseable Prioridad: Medio
Nombre Agregar contenido.
Resumen Agregar nuevo contenido en la sección mis contenidos. (Temas, Herramientas, Lenguajes, Tecnología, Patrones, Material)
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Ingresar al menú de mis contenidos.
2. Seleccionar agregar contenido.
3. Ingresar datos del contenido.
4. Cargar contenido.
5. Agregar contenido.
6. Contenido agregado.
Pre‐condición El usuario debe haber ingresado al sistema.
Post‐condición Contenido agregado exitosamente.
Criterio de Aceptación Contenido a agregar es válido.
Entradas
Usuario
Sección
Tipo (Privado ‐ Público)
Contenido
Resultados
Contenido agregado.
Identificador: R16 Deseable Prioridad: Medio
Nombre Eliminar contenido.
Resumen Eliminar contenido de la sección mis contenidos. (Temas, Herramientas, Lenguajes, Tecnología, Patrones, Material)
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Ingresar al menú de mis contenidos.
2. Seleccionar agregar contenido.
3. Ingresar datos del contenido.
4. Cargar contenido.
5. Agregar contenido.
6. Contenido agregado.
Pre‐condición El usuario debe haber ingresado al sistema, el contenido debe existir.
Post‐condición Contenido eliminado exitosamente.
Criterio de Aceptación Contenido eliminado.
Entradas
Usuario
Sección
Tipo (Privado ‐ Público)
Contenido
Resultados
Contenido eliminado.
Identificador: R17 Deseable Prioridad: Medio
Nombre Calificar sección.
Resumen Agrega una calificación a un contenido de la sección Mis contenidos.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Ingresar al libro.
2. Seleccionar calificar.
3. Agregar calificación.
4. Guardar calificación.
Pre‐condición El usuario debe haber ingresado al sistema, la sección debe existir y debe ser público.
Post‐condición Sección calificado exitosamente.
Criterio de Aceptación Sección con calificación válida.
Entradas
Usuario
Sección
Calificación
Resultados
Sección calificada.
Identificador: R18 Deseable Prioridad: Medio
Nombre Calificar contenido.
Resumen Agrega una calificación a un contenido de la sección Mis contenidos.
Categoría: Visible/No Visible Actores Involucrados: Administrador, Moderador y Usuario.
Curso Básico de Eventos
1. Ingresar al menú de mis contenidos.
2. Seleccionar ver contenidos.
3. Ingresar datos del contenido.
4. Seleccionar calificar contenido.
5. Agregar calificación.
6. Guardar calificación.
Pre‐condición El usuario debe haber ingresado al sistema, el contenido debe existir y debe ser público.
Post‐condición Contenido calificado exitosamente.
Criterio de Aceptación Contenido con calificación válida.
Entradas
Usuario
Sección
Tipo (Privado – Público)
Contenido
Calificación
Resultados
Contenido calificado.
3.2.4 Especificaciones no funcionales.
Identificador: RNF‐01 Nombre: Extensibilidad
Descripción: el diseño del sitio WEB debe permitir agregar nuevas funcionalidades fácilmente sin
incurrir en grandes cambios en el código fuente.
Criterios de Aceptación: para agregar una nueva funcionalidad al sitio WEB se debe invertir menos de 10 horas hombre y se debe modificar menos de 50 líneas del código fuente existente.
Identificador: RNF‐02 Nombre: Escalabilidad
Descripción: se espera que el número de usuarios de la comunidad virtual crezca continuamente, crecimiento que debe soportar el sitio WEB.
Criterios de Aceptación: el sitio WEB debe soportar inicialmente por lo menos 50 usuarios
conectados concurrentemente por día y escalar hacia 1000 usuarios por día.
Identificador: RNF‐03 Nombre: Disponibilidad
Descripción: el sitio WEB debe permanecer disponible para los miembros de la comunidad durante el mayor tiempo posible.
Criterios de Aceptación: el sitio WEB debe tener una disponibilidad de 6/24 durante el año universitario.
Identificador: RNF‐04 Nombre: Mantenibilidad
Descripción: realizar fácilmente mantenimiento y copias de respaldo de las bases de datos.
Criterios de Aceptación: el sitio WEB debe presenta una interfaz de administración que otorgue la
posibilidad de realizar mantenimiento a la base de datos.
Identificador: RNF‐05 Nombre: Rendimiento
Descripción: el sitio web debe desplegarse en el navegador del usuario en el menor tiempo
posible.
Criterios de Aceptación: el sitio WEB se despliega en el navegador del usuario en menos de 3 segundos para una conexión de 1 Mbps de descarga.
3.2.5 Restr icciones .
En cuanto a restricciones la más importante es el costo de la aplicación, ya que debe ser cero pesos. Por lo tanto se deben utilizar herramientas de código libre y que no requieran ningún tipo
de licencia paga.
3.2.6 Diagramas de Interfaz.
3.2.6.1 Diseño General.
Para tener un mejor entendimiento de la comunidad se ha dividido el sitio WEB en cuatro partes:
Header, Menús (usuario y navegación), Herramientas, Contenido y Footer.
Figura. 7 Diseño Comunidad
Header
Esta zona se refiere al encabezado que contiene el logo y el nombre de la comunidad. Al hacer
click sobre estos elementos, el sitio debe redireccionar a la página principal. Adicional a lo anterior, contiene el formulario de ingreso al Sitio (login).
Menú de Navegación
En esta zona, se encuentra el acceso a las secciones principales del Sitio, como son el Índice del libro, sus Temas, Tecnologías y Lenguajes, Recursos y Foros.
Índice: En él se encuentran enlaces a secciones del libro como introducción y capítulos a los que se quieran llegar.
Temas: Se encuentran enlaces a secciones del libro ordenada por especialidad o Temas.
Tecnologías y Lenguajes: Se encuentran enlaces a secciones del libro ordenadas por variedad de
Tecnologías y Lenguajes.
Recursos: Se encuentran enlaces a los recursos del libro y curso como son: Patrones, Ejemplos, Laboratorios, Proyectos y Herramientas.
Foros: Se encuentra el acceso al foro de participación y discusión de la comunidad.
Menú de Usuario
En este menú que es de carácter personal, se encuentra el espacio de trabajo de un usuario registrado, en donde se encuentran los marcadores y los contenidos.
Marcadores: En esta zona se puede encontrar los marcadores creados por el usuario, los cuáles puede eliminar cuando desee, logrando una forma de acceder a su contenido favorito de una forma más práctica y rápida.
Mis Contenidos: En esta zona es dónde el usuario puede subir contenidos y clasificarlos según la estructura ya definida anteriormente, para así poder manejar una única estructura a través del
sitio y permitir al usuario manejar sus contenidos de una manera sencilla.
Herramientas
En esta zona podemos encontrar los elementos o herramientas con los que el usuario puede contar en la comunidad en relación con el libro. Para esta zona se propusieron las siguientes
funcionalidades:
Navegación: Esta funcionalidad está relacionada con la navegación sobre el contenido del libro, conteniendo dos tipos de navegación:
Página Siguiente: dirige al usuario hacia la siguiente página del libro.
Página Anterior: dirige al usuario hacia la anterior página del libro.
Marcador: Permite al usuario crear un marcador o un enlace al contenido de la página actual, en su espacio personal de marcadores.
Comentarios: Permite al usuario comentar el contenido de la página actual.
Calificar: Permite al usuario calificar el contenido de la página actual.
Contenido
En esta sección se encuentra el contenido actual de la sección en donde el usuario se encuentra,
pueden ser los contenidos del libro, el foro o los contenidos del menú de navegación o de usuario.
Footer
Muestra la información acerca de la página, el Mapa del Sitio, y sus Políticas. Contiene también enlaces a la información básica de la comunidad.
3.2.6.2 Patrones de Usabilidad
Enlace al Home
Este patrón usado extensamente en la Web, busca colocar un enlace al home del sitio en la parte
superior izquierda del sitio, de modo que los usuarios puedan volver a esta zona cuando lo deseen.
Resaltado de la Barra de Navegación
Este patrón ofrece al usuario, la información de dónde se encuentra en el sitio, y los elementos
con los que puede interactuar.
Es un patrón de usabilidad en donde se retroalimenta al usuario mediante elementos gráficos
resaltados, en dónde se encuentra dentro del sitio, ya sea en la barra de navegación del sitio o en una zona que lleve el registro o la traza del recorrido del usuario en el sitio.
Colores de Links
Brinda comunicación al usuario gracias a facilidades ofrecidas por los navegadores; Estos
cambiaran de acuerdo a zonas dentro de un sitio que ya han sido visitadas por medio de diferentes colores de links que se distinguen entre visitados y no visitados.
Es un patrón de usabilidad en donde se informa al usuario mediante la exclusión de colores en los
enlaces, si ya se ha visitado la zona a la que lleva el link, o si por el contrario es una zona que un usuario puede no haber visitado; es decir, comunica e informa al usuario las zonas o links no
visitadas por el usuario, colaborando así a que no se conforme una monotonía indeseada en los links .
Breadcrumbs
Comunica al usuario de su recorrido dentro en el sitio, informando de dónde ha estado y dónde se
encuentra actualmente; es decir le da una exacta ubicación dentro del sitio visitado.
Es un patrón de usabilidad en donde se retroalimenta al usuario mediante elementos gráficos resaltados, en dónde se encuentra dentro del sitio, ya sea en la barra de navegación del sitio o en
una zona que lleve el registro o la traza del recorrido del usuario en el sitio.
Consistencia del Sitio
Se comunica una estructura, a la que el usuario se adapta y espera que el sitio mantenga esta
estructura visual a lo largo de su experiencia.
Dentro de los patrones de usabilidad en este patrón se refleja la coherencia del sitio, no sólo de
cada una de sus páginas sino del portal en general, haciendo que el cliente se acostumbre a ver el sitio de cierta manera, con una estructura física similar en todas las zonas, en las que el usuario
luego no espera sorpresas, es decir se mantiene una estructura general aunque los contenidos sean diferentes.
Jerarquía de la Información
En un sitio web, siempre ha de haber una estructura que explique a los usuarios cómo la información se distribuye en un espacio; por ejemplo en un artículo de noticias, los títulos en una
página deberían sobresalir sobre el contenido que viene posterior a estos, en cambio el contenido siguiente debería tener una estructura que no sobresalga tanto, pero que si comunique al usuario
que en aquel contenido se encuentra el detalle de la información en parte comunicada por el título. Por tanto es menester, dar jerarquía a la información, dar relevancia a zonas de la página para guiar a los usuarios a través de la información que allí está contenida.
Para el manejo de la información no se tiene un patrón especifico que distribuya la información sino que esta jerarquía se establece de una manera laxa y o arbitraria; es decir, no tiene un
parámetro no ajustable.
Soporte a la Accesibilidad
Para distribuir la información en casos insostenibles es necesaria la Creación de formas alternativas de comunicarlas en asuntos en los que recursos del sitio no se encuentren disponibles,
y que junto a estas formas alternativas, se enriquecen los contenidos con información extra.
Es un patrón de usabilidad en el que se comunica al usuario por medios alternativos ciertos tipos de información, por ejemplo cuando las imágenes de un sitio no están disponibles hay que proveer
de formas para atacar estas situaciones, una de ellas es mediante facilidades de HTML que ayudan a describir imágenes mediante texto cuando estas no se encuentran disponibles.
4. DESARROLLO DEL DISEÑO. 4.1 Recoleccion de información.
Las fuentes de información usadas durante el proyecto fueron principalmente las bases de datos electrónicas de ACM (12) , IEEE (13), ScienceDirect (14) y IOP Science (15). Dichas bases de datos
fueron elegidas debido a la alta credibilidad y actualización que tienen sus publicaciones. Adicionalmente los conocimientos del profesor Camilo Jiménez fueron esenciales para el diseño e
implementación del proyecto. Finalmente las habilidades adquiridas a lo largo de la carrera en
áreas como arquitectura de software, base de datos y clientes web enriquecidos fueron fundamentales para el éxito del proyecto.
4.2 Alternativas de diseño.
En esta sección se presentarán las alternativas de diseño consideradas para el libro virtual que estructura los contenidos del curso y la herramienta software que administra el conocimiento de
la comunidad construida alrededor del libro.
4.2.1 Alternativas de diseño para el libro vir tual .
Teniendo en cuenta los requerimientos funcionales, la estructura considerada para el libro virtual es:
• Prólogo. • Introducción • Capítulo.
• Sección. • Glosario. • Índice.
• Por temas. • Por capítulos. • Por páginas. • Por recursos.
Esta organización sigue la estructura estándar de cualquier libro impreso definiendo un prólogo, una introducción, diferentes capítulos con secciones donde se desarrollan los temas del libro y un glosario de términos. Finalmente, se definen índices por temas, capítulos, páginas y recursos para facilitar la navegación a través del libro. Para poder incluir comentarios y recursos al libro es necesario definir si estos se asociarán a todo un capitulo o a una sección. La Figura. 8 muestra la primera alternativa donde se incluyen comentarios y recursos en cada sección del libro. La Figura. 9 muestra una segunda alternativa donde los recursos se asocian a cada capítulo pero los comentarios se incluyen en las secciones.
4.2.2 Alternativas de diseño para la herramienta software.
Para el diseño de la herramienta software que administra el conocimiento de la comunidad de aprendizaje, se consideraron dos alternativas. La primera de ellas fue el diseño completo sin ayuda
de ningún sistema definiendo el diagrama de clases y el modelo de base de datos que garantizaran la integridad de la información y el cumplimiento de todos los requerimientos. La segunda
alternativa consistió en la utilización de un Sistema Administrador de Contenidos WEB(WCMS por
Libro Virtual
Capítulo
Sección
Recursos
Comentarios Ejemplos Archivos Links
Libro Virtual
Capítulo
Sección
Recursos
Comentarios
Ejemplos Archivos Links
Figura. 8. Alternativa 1 para incluir comentarios y recursos en el libro virtual (desechada).
Figura. 9. Alternativa 2 para incluir comentarios y recursos en el libro virtual (escogida).
sus siglas en ingles) para la publicación de los contenidos del libro y la administración de usuarios, sus permisos y roles y el cumplimiento de todos los requerimientos.
4.2.2.1 Alternativa 1.
La Figura. 10 muestra el modelo conceptual para la herramienta. Aquí se presenta que el libro virtual posee usuarios y capitulo por medio de una agregación y composición respectivamente. Es
decir si se destruye el libro virtual, se eliminarían los capítulos más no los usuarios. Por otro lado cada capítulo contiene una o más secciones. En cuanto a los usuarios estos poseen comentarios y
marcadores para una sección y contenidos asociados a un capitulo.
Figura. 10. Alternativa 1 para el diseño de la herramienta. Modelo conceptual.
La Figura. 11 muestra el modelo de base de datos para la herramienta. En este caso las
asociaciones mostradas en el modelo conceptual se han transformado en tablas, por ejemplo la asociación usuario‐marcador se encuentra en la tabla usuario_marcador que tiene dos llaves foráneas apuntando a las llaves primarias de las tablas usuario y marcador. En esta base de datos,
no se persisten los capítulos y secciones del libro, ya que esto dificultaría la creación y edición de los contenidos del libro. En este diseño, las páginas del libro se encuentran en archivos externos y
no en la base de datos.
Figura. 11. Alternativa 1 para el diseño de la herramienta. Modelo base de datos.
4.2.2.2 Alternativa 2.
La segunda alternativa consiste en utilizar un Sistema Manejador de Contenidos WEB (WCMS por
sus siglas ingles). Este tipo de sistemas permiten publicar y editar cualquier tipo de contenido de un sitio WEB, bien sea un simple texto, una foto, un documento o un video, sin requerir mayores
conocimientos técnicos. En el mercado actual existen dos tipos de WCMS: los de código abierto y los licenciados. En este proyecto solo se consideraron los WCMS de código abierto y libre
distribución, y los escritos en PHP ya que este es un lenguaje de programación bastante popular con gran comunidad que brinda soporte, de fácil instalación debido a diversos paquetes gratuitos disponibles en la red y no requiere de complicados servidores de aplicación como los que se
utilizan para Java o ASP.Net.
Los WCMS estudiados fueron Joomla, Drupal y Modx debido a su alta popularidad en internet y
los premios recibidos durante el 2009 (16). La Tabla I compara las principales características de estos WCMS (17).
Características Drupal 6.10 Joomla! 1.5.10 MODx 1.0.2 Base de datos MYSQL MYSQL MYSQL
Captcha Solo si se agrega plugin. Solo si se agrega plugin. Si. Aprobación de contenido. Si. Si. Solo si se agrega plugin. Verificación de email. Si. Si. Si.
Privilegios específicos para usuarios Si. No. Si. Área privada para administradores. No. No. Si.
Administradores de sesiones. Si. Si. Si. SSL Si. Si. Si.
Comunidad de desarrollo. Si. Si. Si. Foro público. Si. Si. Si.
URL amigables. Si. Si. Si. Editor WYSIMYG Solo si se agrega plugin. Si. Si.
Exportación de contenido estático. No. No. Si. Reuso de contenido No. Si. Si.
Chat. Solo si se agrega plugin. Solo si se agrega plugin. Solo si se agrega plugin. Reportes de la base de datos. No. Solo si se agrega plugin. Si.
Motor de búsqueda Si. Si. Si. Mapa del sitio. Si. Si. Si.
Tabla I Características de Drupal, Joomla y MODx.
4.3 Diseño.
Entre las alternativas discutidas para el diseño del libro virtual se eligió la alternativa 2 (ver Figura.
9), previendo el hecho de que no se tengan recursos específicos pero si comentarios asociados a una sección que permitan mejorarla. Por otro lado, teniendo en cuenta que los WCMS ya tienen implementados muchos de los requerimientos tales como la administración de usuarios, sesiones
y contenidos y posee extensiones que permiten administrar los comentarios y participaciones de los usuarios con respecto a los contenidos, se utilizara un WCMS para la implementación de la
aplicación. El WCMS escogido fue MODx 1.0.2 porque ofrece mayores funcionales que Joomla! y Drupal y el desarrollo de extensiones, plugins y módulos es más fácil con respecto a sus
competidores.
Teniendo las alternativas de diseño escogidas, los requerimientos funcionales, no funcionales y de
interfaz y los casos de uso, la Figura. 12 muestra el diagrama de entidad relación diseñado.
Figura. 12. Diagrama Entidad‐Relación
4.4 Etapas del Proyecto.
Para el desarrollo de la comunidad, es de vital importancia la participación activa de los usuarios, la implementación de tecnologías y el manejo del conocimiento. Para esto se decidió agrupar el
diseño en dos enfoques o etapas principalmente: Componentes y Tecnología.
Componentes
La Comunidad
Este componente encierra todo el proyecto, en este encontramos espacios de trabajo, en dónde el
usuario puede interactuar y relacionarse con los demás integrantes, además de compartir un interés común. Estos espacios de trabajo brindan al usuario la oportunidad de publicar su trabajo, expresar sus ideas e interactuar con la comunidad.
La comunidad provee de un espacio de trabajo al usuario, en dónde este encuentra lo necesario para desenvolverse en la misma, apoyándose en unas herramientas, como lo son: foros,
comentarios, marcadores, contenidos, calificaciones, etc.
Más concretamente, en la comunidad se encuentra como espacios de trabajo: el libro, los foros y
el workspace del usuario.
En el libro se encuentra una barra de herramientas, la cual permite al usuario navegar su contenido, realizar comentarios o sugerencias acerca del mismo, y crear marcadores para que el
usuario encuentre más rápido los temas de su interés.
Los foros, se encuentran como una herramienta que toda comunidad debe tener, en este espacio
se encuentran temas de discusión como un medio de intercambio de ideas, consultas y discusión entre los usuarios, sobre temas de tecnologías web.
El workspace del usuario, se encuentra como un espacio único para el usuario (registrado), en dónde este puede almacenar sus proyectos, recursos y material relacionado a la comunidad, y en
el que también podrá compartir para el beneficio de sus integrantes.
Todo esto con el fin de que el usuario se sienta cómodo y encuentre todo lo necesario (menús de navegación, espacios de trabajo y de usuario) para poder desarrollar sus habilidades y poder
aportar, agregar o enriquecer los contenidos y recursos de la comunidad.
El Libro
El segundo componente que se encuentra, es el componente del curso o libro, el cual está conformado por todo el material actual del curso, sus recursos, ejemplos, laboratorios, etc.…
En este componente se encuentra justificado, todo el trabajo a desarrollar en el transcurso del curso Clientes Web Enriquecidos, el cual estará alineado con los ejes temáticos del curso y la
estructura de contenidos ya antes descritos.
La finalidad de este componente es reunir un contenido atractivo sobre tecnologías web para lograr una activa participación en el curso por parte de los estudiantes, además de brindar la
oportunidad a los estudiantes de que sus trabajos, aportes y comentarios, puedan enriquecer los contenidos del libro y temas del curso.
El Usuario
El último componente, se centra en el usuario, en como éste puede interactuar con la comunidad,
aportar sus ideas, conocimiento y a la vez dejar su huella en esta. En este, se quiere lograr que el usuario se sienta cómodo en la comunidad, que sienta que tiene un espacio para él, dónde puede guardar sus ideas, proyectos, recomendaciones, e incluso agregarlas y compartirlas en el libro.
En este componente se encuentra todo aquello que el usuario puede realizar en la comunidad, como son los foros, los comentarios, su propio espacio en dónde puede manejar su material y
recursos, y un paquete de herramientas para fomentar y facilitar la participación activa del usuario como son los bookmarks (marcadores), calificaciones y comentarios de temas.
Pese a lo anterior, y esencialmente acoplando los dos anteriores componentes, se llega al propósito del curso que es la universalidad y la interacción entre el curso o libro y el usuario que
son las principales herramientas para formar y unificar la comunidad.
Tecnología
Para el enfoque de Tecnología encontramos 3 elementos importantes: Lenguajes, Librerías y Frameworks, y CMS.
Lenguajes
Actualmente existen diferentes lenguajes de programación para el desarrollo web, los cuales han
ido surgiendo debido a las tendencias y necesidades de las diversas plataformas, tecnologías y usuarios.
Por esto se encuentra una gran cantidad de posibilidades para el desarrollo del ambiente de la
comunidad (HTML, JSP, PHP, ASP…). En realidad todos estos lenguajes son válidos, pues tienen la oportunidad de interactuar entre ellos de diversas formas, lo que nos ayuda a elegir cualquiera de
estos.
Pero por motivos de desarrollo, para lograr realizar una fácil integración de tecnologías alineadas
con estos enfoques, se decidió escoger como lenguaje principal de desarrollo web PHP.
Librerías y Frameworks
En este enfoque, encontramos una gran cantidad de posibilidades para enriquecer el contenido de una comunidad (Mootools, JQuery, Prototype, Scriptaculous…) al igual que su funcionalidad
agregando patrones de usabilidad más frescos y fáciles de usar e implementar.
Para esta comunidad y analizando las necesidades de la misma se decidió optar por JQuery, la cual
es una librería o framework escrito en Javascript, que permite simplificar la manera de interactuar con los documentos HTML, manejar eventos, desarrollar animaciones y agregar interacción con la
tecnología AJAX.
CMS(Content Management System)
Un sistema de gestión de contenidos es un programa que permite crear una estructura de soporte
para la creación y administración de contenidos, principalmente en páginas web.
Consiste en una interfaz que controla una o varias bases de datos donde se aloja el contenido del
sitio. El sistema permite manejar de manera independiente el contenido y el diseño. Así, es posible manejar el contenido de una manera fácil, cambiar el diseño sin tener que modificar el formato,
además de su fácil publicación.
El Administrador de Contenidos (CMS), para el cual también se encuentra una gran cantidad de opciones (Drupal, Joomla), no sólo brinda posibilidades de administrar los sitios web sino que
también trae consigo sus falencias entre las cuales están el manejo y administración del mismo, puesto que no todos los CMS son amigables y fáciles de usar.
En este caso se decide usar ModX, puesto que ofrece una interfaz sencilla y amigable la cual permite agregar a la comunidad servicios especiales (plugins) al igual que lograr mantener el
diseño de la comunidad, el cual se acoplo fácilmente a este sistema y no hubo ningún problema.
5. IMPLEMENTACIÓN La Figura. 13 muestra la base de datos diseñada para cumplir los requerimientos funcionales teniendo en cuenta la base de datos del CMS escogido. En MODx existen dos tipos usuarios: los
administradores del sitio y los usuarios del sitio WEB. El primer tipo se almacena en la tabla modx_manager_users. Mientras que el segundo tipo se almacena en la tabla modx_web_users.
Cada usuario, tiene asignado un grupo de usuario mediante la tabla modx_member_groups para los usuarios administradores y modx_web_groups para los usuarios del sitio WEB. Los grupos de
usuario determinan los permisos que tiene un usuario sobre el sitio web. Por otro lado, todos los contenidos publicados se almacenan en la tabla modx_site_content. Al igual que los usuarios, los
contenidos se agrupan en grupos de documentos a través de la tabla modx_document_groups. Tanto los grupos de usuarios administradores como los de los usuarios del sitio WEB pueden tener acceso y permisos especiales sobre estos grupos de documentos; estas relaciones se especifican
en las tablas modx_membergroup_access y modx_webgroup_acess respectivamente.
Teniendo en cuenta lo anterior, las tablas marcador, resaltado y contenido, tienen el campo idUsuario como llave foránea a la tabla modx_web_users para poder asociar cada marcador, el
texto resaltado y recurso compartidos a un usuario del sitio WEB. Adicionalmente, la tabla resaltado tiene un llave foránea adicional (link) a la tabla modx_site_content. Por otro lado, la
tabla modx_jot_content relaciona un comentario almacenado en el campo content con un usuario y un contenido a través de llaves foráneas a las tablas modx_web_users (createdBy) y
modx_site_content (uparent). Por último, las tablas modx_atrating_califacionesseccion y modx_atrating_cafilicacionescontenido contienen las calificaciones promedio hechas por los usuarios a secciones y recursos del libro.
Figura. 13 Base de datos del sitio WEB diseñado en MODx.
5.1 Conceptos bás icos de MODx.
Para implementar cualquier funcionalidad MODx incluye conceptos como template, chunk,
snippet, plugin, módulo y dispone un API para el desarrollador (18). A continuación se explican cada uno de estos conceptos.
• Template: es el layout HTML con que se muestran los documentos del sitio WEB.
• Chunk: es código HTML que puede ser reutilizado en diferentes documentos. Se acostumbra a definir los formularios como chunks.
• Snippet: son unidades de código PHP ejecutables que pueden ser llamadas por un documento o un template. Pueden retornar texto o código HTML y procesar chunks y retornar su valor.
• Plugin: es un bloque de código PHP que no es llamado por la ejecución de un documento o template como los snippets, sino por el disparo de ciertos eventos internos del CMS, como el render de un documento.
• Módulo: es código PHP que solo puede ejecutarse desde la interfaz de administración. Se utilizan para agregar funcionalidades a la interfaz de administración y crear tablas en la base de datos que snippets y plugins necesiten usar.
• Api: MODx ofrece un API para que los programadores eviten rescribir funciones comunes como la conexión a una base de datos y la ejecución de un snippet.
5.2 Requerimientos implementados con extens iones para MODx programadas por terceros.
MODx tiene extensiones (19) que pueden ser instaladas fácilmente. La Tabla II resume los
requerimientos implementados utilizando estas extensiones.
Requerimiento Extensión Chunks definidos Agrega un usuario a la comunidad web. WebLoginPE • formRegistroCWE: formulario para el registro de usuarios
en la comunidad. Iniciar sesión en el sistema. WebLoginPE • formLoginCWE: formulario para el inicio de sesión en la
comunidad. • msgLoginExitoCWE: mensaje que se muestra cuando el
usuario ha iniciado sesión exitosamente. Agregar comentario en una sección del libro. Jot • formComentarioCWE: formulario para publicar un
comentario. Ver comentarios de una sección del libro. Jot • formVerComentariosCWE: despliega los comentarios de
una sección del libro. Borrar comentario libro en una sección del libr o. Jot • formVerComentariosCWE: despliega las opciones de
moderación para los comentarios de una sección del libro. Calificar sección del libro. AnythingRating
Calificar contenido. AnythingRating Tabla II Requerimientos implementados con extensiones para MODx.
5.3 Requerimientos implementados con extens iones definidas especialmente para el s itio.
Para cumplir el requerimiento de agregar y eliminar marcadores al libro se definieron dos snippets: marcarCWE y MisMarcadores. El primer snippet, cuyo código se muestra a continuación,
se encarga de desplegar un formulario para que el usuario pueda especificar el nombre del marcador. Una vez enviado el formulario, el nombre del marcador se envía por POST, se recupera el identificador del usuario que ha iniciado y se inserta esta información en la tabla marcador.
<?php //Conectarse a la base de datos $conexion = mysql_connect('localhost', 'xxx', 'xxx'); mysql_select_db('modx', $conexion) or die (mysql_error()); //Recuperar el id del usuario conectado $idUser = $modx->getLoginUserID(); if($idUser) //si el usuario ha iniciado sesion { if(isset($_POST["marca"]))
{ //recuperar el nombre del marcador $marcador = $_POST["marca"]; //recupera el id del documento que se marco $link = $_GET["pagina"]; //Verifica que no exista un marcador con el mismo nombre $sql = "SELECT * FROM marcador WHERE idUsuario = $idUser AND nomMarcador = '$marcador'"; $rst = mysql_query($sql, $conexion); if(mysql_num_rows($rst) == 0) { //Insertar en la tabla de MARCADORES $sql = "INSERT INTO marcador (idUsuario, nomMarcador, link) VALUES ($idUser,'$marcador', '$link');"; if(mysql_query($sql, $conexion)) $respuesta = "Registro Exitoso, hacer click en cerrar."; else $respuesta = "Ha ocurrido un error ".mysql_error(); } else { $respuesta = "Ya existe un marcador con el mismo nombre"; $respuesta .= "<div class='popupComment_content' id='comentar'>"; $respuesta .= "<form action='[~[*id*]~]' id='commentArea' method='post' class='popupCommnent'>"; $respuesta .= "<input type='hidden' name='link' value='$link'/>"; $respuesta .= "<table>"; $respuesta .= " <tr>"; $respuesta .= " <td>"; $respuesta .= " <label>Nombre Bookmark :</label>"; $respuesta .= " </td>"; $respuesta .= " <td>"; $respuesta .= " <input type='text' name='marca' value='$marcador' class='field'/>"; $respuesta .= " </td>"; $respuesta .= " <td>"; $respuesta .= " <input type='submit' value='Aceptar' class='bt_comentar'/>"; $respuesta .= " </td>"; $respuesta .= " </tr>"; $respuesta .= " </table>"; $respuesta .= "</form>"; $respuesta .= "</div>"; } } else { $link = $_GET["link"]; $respuesta = "<div class='popupComment_content' id='comentar'>"; $respuesta .= "<form action='[~[*id*]~]' id='commentArea' method='post' class='popupCommnent'>";
$respuesta .= "<input type='hidden' name='link' value='$link'/>"; $respuesta .= "<table>"; $respuesta .= " <tr>"; $respuesta .= " <td>"; $respuesta .= " <label>Nombre Bookmark:</label>"; $respuesta .= " </td>"; $respuesta .= " <td>"; $respuesta .= " <input type='text' name='marca' class='field'/>"; $respuesta .= " </td>"; $respuesta .= " <td>"; $respuesta .= " <input type=’submit’ value=’Aceptar’ class=’bt_comentar’/>”; $respuesta .= “ </td>”; $respuesta .= “ </tr>”; $respuesta .= “ </table>”; $respuesta .= “</form>”; $respuesta .= “</div>”; } } else //si el usuario no ha iniciado 36onexi $respuesta = “<p>Debes iniciar 36onexi para poder marcar paginas del libro</p>”; //Cerrar la 36onexión mysql_close($conexion); return $respuesta; ¿>
Lista de código 1. Código para el snippet marcarCWE.
El código para el snippet MisMarcadores se muestra a continuación. En primer lugar se conecta a la base datos, recupera el identificador del usuario que ha iniciado sesión y obtiene todos los registros de la tabla marcadores asociados al usuario. Los marcadores del usuario se despliegan en
una lista junto con un formulario para eliminarlo. Si este formulario se envía, se recupera el identificador el marcador que se envía por POST y se ejecuta el comando para eliminar el
marcador.
<?php //recupera el id del usuario que ha iniciado sesion
$respuesta = "Debes iniciar sesion para ver tus marcadores."; $idUser = $modx->getLoginUserID(); if($idUser)//si el usuario incio sesion { //conectarse a la base de datos $conexion = mysql_connect('localhost', 'root', 'admin'); mysql_select_db('modx', $conexion) or die ("Could not connect: " . mysql_error()); $respuesta = ""; //recuperar el id del marcador a eliminar $idMarcador = $_POST['idMarcador']; if($idMarcador) { //comando para eliminar marcador $comando = "DELETE FROM marcador WHERE idMarcador = $idMarcador"; if(mysql_query($comando)) $respuesta .= "Marcador eliminado!"; else $respuesta .= "Ocurrio un error".mysql_error(); } //seleccionar los marcadores del usuario $comando = "SELECT * FROM marcador WHERE idUsuario = $idUser"; $result = mysql_query($comando); //imprimir los marcadores del usuario if(mysql_num_rows($result) > 0) { $respuesta .= "<ul id='navi' style='list-style-type:none;'> "; while ($d = mysql_fetch_array($result,MYSQL_ASSOC)) { $idMarcador = $d['idMarcador']; $nomMarcador = $d['nomMarcador']; $link = $d['link']; //imprimir el formulario para eliminar marcadores $respuesta .= "<li>"; $respuesta .= "<form action='[~[*id*]~]' method='post'>"; $respuesta .= "<table border='0'>"; $respuesta .= "<tr>"; $respuesta .= "<td>"; $respuesta .= "<input type='hidden' name='idMarcador' id='idMarcador' value='$idMarcador'>"; $respuesta .= "<a href='[~".$link."~]'>".$nomMarcador."</a>"; $respuesta .= "</td>"; $respuesta .= "<td>"; $respuesta .= "<input type='image' name='eliminar marcador'>"; $respuesta .= "</td>"; $respuesta .= "</tr>"; $respuesta .= "</table>"; $respuesta .= "</form>"; $respuesta .="</li>"; } $respuesta .= "</ul>"; } else $respuesta .= "<p>No has agregado ningun marcador.</p>"; //cerrar la conexion mysql_close($conexion); } return $respuesta; ?>
Lista de código 2. Código para el snippet MisMarcadores.
Para cumplir con el requerimiento de compartir recursos en la comunidad, se definió el snippet SubirContenidoCWE. En este caso se presenta un formulario al usuario que le permite especificar
el archivo a compartir, el titulo, una descripción y el capitulo al que se quiere agregar el recursos. Una vez enviado este formulario se recupera esta información por POST y se almacena en la tabla
contenido.
<?php if($modx->getLoginUserID()) { if($_FILES['userfile']['size'] > 0) { $fileName = $_FILES['userfile']['name']; $tmpName = $_FILES['userfile']['tmp_name']; $fileSize = $_FILES['userfile']['size']; $fileType = $_FILES['userfile']['type']; $titulo = $_POST['titulo']; $categoria = $_POST['categoria']; $descripcion = $_POST['descripcion']; $estado = $_POST['estado'];
$fp = fopen($tmpName, 'r'); $content = fread($fp, filesize($tmpName)); $content = addslashes($content); fclose($fp); if(!get_magic_quotes_gpc()) $fileName = addslashes($fileName); $idUser = $modx->getLoginUserID(); $conexion = mysql_connect('localhost', 'root', 'admin'); mysql_select_db('modx', $conexion) or die ("Could not connect: " . mysql_error()); $comando = "SELECT * FROM contenido WHERE idUsuario = $idUser AND titulo = '$titulo'"; $result = mysql_query($comando); if(mysql_num_rows($result) == 0) { $comando = "INSERT INTO contenido (idUsuario,titulo,categoria,nomContenido,tamanoContenido,tipoContenido,descripcion,estado)"; $comando .= "VALUES ($idUser, '$titulo', '$categoria', '$fileName', $fileSize, '$fileType', '$descripcion', $estado);"; $result = mysql_query($comando); if (!$result) $mensaje = "<p>Error al subir archivo! ". mysql_error()."</p>"; else $mensaje = "<p>El archivo fue cargado con exito!</p>"; } else $mensaje = "<p>Titulo repetido!</p>"; mysql_close($conexion); } else $mensaje = "<p>Utiliza este formulario para subir archivos</p>"; //Imprimir formulario para cargar contenido.
. . . . .
. . . .
. .
. } else $mensaje = "<p>Debes iniciar sesion para poder publicar contenido</p>"; return $mensaje; ?>
Lista de código 3. Código para el snippet SubirContenidoCWE.
El snippet MisContenidos despliega los recursos compartidos por el usuario que ha iniciado sesión. Así mismo habilita la posibilidad de editar el titulo, la descripción del contenido, el capitulo al cual
se asocia, el estado del recurso (público o privado) o eliminar completamente el recurso.
<?php $idUser = $modx->getLoginUserID(); $servicio = $_REQUEST['servicio']; if($idUser) { $conexion = mysql_connect('localhost', 'root', 'admin'); mysql_select_db('modx', $conexion) or die ("Could not connect: " . mysql_error()); switch ($servicio) { case 'Eliminar' : $idContenido = $_POST['idContenido']; $query = "DELETE FROM contenido WHERE idContenido = $idContenido"; $result = mysql_query($query); if($result) $rspServicio = "<p>El contenido ha sido eliminado!<p>"; else $rspServicio = "<p>Error: ".mysql_error()."</p>"; break; case 'Guardar Cambios' : $idContenido = $_POST["idContenido"]; $descripcion = $_POST["descripcion$idContenido"]; $titulo = $_POST["titulo$idContenido"]; $categoria = $_POST["categoria$idContenido"]; $estado = $_POST["estado$idContenido"]; $comando = "SELECT * FROM contenido WHERE idUsuario = $idUser AND titulo = '$titulo' AND idContenido != $idContenido"; $result = mysql_query($comando); if(mysql_num_rows($result) == 0) { $query = "UPDATE contenido SET descripcion = '$descripcion', titulo = '$titulo', categoria = '$categoria', estado = '$estado' WHERE idContenido = $idContenido LIMIT 1;"; $result = mysql_query($query); if($result)
$rspServicio = "<p>El contenido ha sido actualizado!<p>"; else $rspServicio = "<p>Error: ".mysql_error()."</p>"; } else $rspServicio = "<p>Error: Ya existe un contenido con el mismo titulo!<p>";; break; default: $rspServicio = "<p>Servicio desconocido </p>"; } $categoria = (isset($categoria))? $categoria : 0; $comando = "SELECT * FROM contenido WHERE idUsuario = $idUser AND categoria = $categoria"; $result = mysql_query($comando); if(mysql_num_rows($result) > 0) { $parametros['define']='1'; $parametros['atrGrp']='calificacionescontenido'; $parametros['language']='spanish-utf8'; $parametros['multiVote']='1'; $principal = $modx->runSnippet('AnythingRating', $parametros); $respuesta = $principal; while ($fila = mysql_fetch_array($result,MYSQL_ASSOC)) { $idContenido = $fila['idContenido'];
$tamanoContenido = $fila['tamanoContenido']; $titulo = $fila['titulo']; $categoria = $fila['categoria']; $descripcion = $fila['descripcion']; $estado = $fila['estado']; //Imprimir formularios para cad contenido agregado por el usuario. . . . . . . . . . .
} } else $respuesta="<p>No has subido ningun archivo para esta categoria.</p>"; } else $respuesta="<p>Debes iniciar sesion para ver los archivos que has subido.</p>"; return $respuesta; ?>
Lista de código 4. Código para el snippet MisContenidos.
Por último, el snippet RecursosCWE recupera todos los recursos públicos para poder ser
descargados por cualquier usuario registrado o no en la comunidad.
<?php $ruta = $modx->config['base_path']."assets/snippets/comunidadCWE/services"; $conexion = mysql_connect('localhost', 'root', 'admin'); mysql_select_db('modx', $conexion) or die ("Could not connect: " . mysql_error()); $categoria = (isset($categoria))? $categoria : 0; $comando = "SELECT * FROM contenido WHERE categoria = $categoria AND estado = 1"; $result = mysql_query($comando); if(mysql_num_rows($result) > 0) { $parametros['define']='1'; $parametros['atrGrp']='calificacionescontenido'; $parametros['language']='spanish-utf8'; $parametros['multiVote']='1'; $principal = $modx->runSnippet('AnythingRating', $parametros); $respuesta = $principal; while ($fila = mysql_fetch_array($result,MYSQL_ASSOC)) { $idContenido = $fila['idContenido']; $tamanoContenido = $fila['tamanoContenido']; $titulo = $fila['titulo']; $categoria = $fila['categoria']; $descripcion = $fila['descripcion']; //Imprimir formularios para cad contenido agregado por el usuario. . . . . . . . . . . }
} else $respuesta="<p>No se ha subido ningun recurso para esta categoria.</p>"; return $respuesta; ?>
Lista de código 5. Código para el snippet marcarCWE.
5.4 Implementación del requerimiento del Foro.
Para cumplir con los requerimientos del foro se aprovechó la extensión desarrollada para MODx
que permite integrar este CMS con el foro Simple Machines Forum (SMF por sus siglas en ingles). SMF es un proyecto de código abierto bastante popular desarrollado completamente en PHP y
utiliza MYSQL para la base de datos. De acuerdo con SMF, los foros creados tendrán la estructura mostrada en la figura X. Esto permite que los miembros de la comunidad de aprendizaje puedan crear diferentes foros distribuidos en varias categorías. Así mismo cada foro posee múltiples hilos
de diferentes temas. En cada hilo los usuarios pueden publicar comentarios y participaciones.
Figura x. Estructura foros.
La integración de MODx con SMF consiste básicamente en sincronizar las bases de datos de ambas aplicaciones manteniendo las tablas de usuarios y grupo de usuario con la información. La Figura.
15 muestra las tablas involucradas en este proceso. Los usuarios en modx_web_user deben tener el mismo nombre de usuario y contraseña en smf_members para poder iniciar sesión simultáneamente en el sitio web como en el foro. Así mismo el usuario debe pertenecer al mismo
grupo tanto en modx_web_groups como en smf_member_groups. La sincronización se debe hacer al momento de registrar un nuevo usuario, al iniciar y cerrar una sesión y cambiar la contraseña de
un usuario.
Categoría
Foro
Tema
Publicación
Figura. 14 Estructura foros.
Figura. 15. Sincronización base de datos MODx y SMF.
6. RESULTADOS Pantalla principal
En esta pantalla, se puede detallar la comunidad en su integridad, observamos la zona de login o inicio de sesión, las barras de navegación y la barra de herramientas, la zona de contenido, el
header y el footer.
Figura. 16 Página de inicio
Login
En estas pantallas existen dos estados de la zona de login, primero se encuentra en estado de inicio de sesión, en dónde se encuentran los campos de nombre de usuario y contraseña como
requisitos para el inicio de sesión. Adicionalmente se puede apreciar un botón para el registro en caso de no tener una cuenta.
Luego cuando una sesión ha sido iniciada, se tiene el segundo estado de la zona de login, el cual enseña quien se está conectado, cuantas veces ha ingresado al sistema y la fecha.
Figura. 17 Formulario para el inicio de sesión.
Menús de Navegación
Por otro lado, hallamos los menús de navegación, en dónde interactuamos con las opciones
Índice, Temas, Tecnologías, Recursos y Foros. En estas imágenes se muestran las opciones de cada una de estas.
Figura. 18 Menús de navegación I.
Figura. 19 Menús de navegación II.
Figura. 20 Menús de navegación III.
Menús de Usuario
En esta zona, encontramos los menús de usuario Mis Marcadores y Mis Contenidos explicados anteriormente. Dentro del menú mis marcadores se pueden visualizar los marcadores, hechos por
el usuario, los cuales pueden llegar a ser eliminados por él mismo.
Figura. 21 Menú Mis Marcadores.
En el menú de Mis Contenidos, se puede ver una opción de “ver MisContenidos”; al hacer click en esta, nos despliega las categorías en que se pueden agrupar los contenidos, que al escoger alguna,
muestra en la zona de contenidos los contenidos relacionados.
Figura. 22 Menú Mis Contenidos.
Formulario de Registro
Este formulario contiene la información básica que necesita el usuario para inscribirse en la
comunidad; es decir, la información personal y de identificación del usuario que exige la comunidad para pertenecer a esta.
Figura. 23 Formulario de registro.
Formulario de Subida de Archivos
En este caso, se tiene un formulario para subir los contenidos, en dónde aparte de subir el contenido, el usuario puede añadir información extra para poder categorizar el contenido de
acuerdo a temas o especialidades según el tipo.
Figura. 24 Formulario para subir archivos.
Formulario para visualizar Archivos
En este formulario se presenta la información del archivo compartido y un link para descargarlo. Adicionalmente se presentan dos botones para editar dicha información o para eliminar el archivo.
Figura. 25 Formulario para visualizar archivos.
Pop‐Up para crear marcador
En este caso, es una pantalla Pop‐Up, en dónde se da la opción de ponerle un nombre al
marcador, basándose en el detalle brindado por el usuario para recordarlo con una referencia característica o especial.
Figura. 26 Formulario para marcar el l ibro.
Pop‐up para realizar un comentario
También se encuentra otra pantalla Pop‐Up, en la cual se puede realizar un comentario del contenido de la pagina actual, en esta se tienen los campos Asunto y comentario.
Figura. 27 Formulario para comentar.
Comentario.
Los comentarios se incluyen al final de cada sección. Para cada uno se especifica el usuario quien público, el asunto y contenido del comentario. Así mismo se muestran tres link para eliminar, editar y dejar de publicar el comentario como opciones para el moderador.
Figura. 28 Comentarios.
Categorías y Foros.
Esta es la página de inicio que se muestra al usuario al visitar el foro de la comunidad. Se
presentan las diferentes categorías y los foros que se han creado en cada una de ellas.
Figura. 29 Categorías y foros.
Temas.
En la siguiente pagina, se presentan al usuario los temas relacionados a un foro.
Figura. 30 Temas.
Participaciones.
En cada tema, el usuario puede ver las participaciones y también puede publicar su propio comentario. También se habilitan diferentes opciones para moderar el foro.
Figura. 31 Participaciones.
7. CONCLUSIONES. 7.1 Discusión.
En este artículo se ha presentado la estructuración y diseño de una plataforma de apoyo para un curso de Desarrollo de Aplicaciones Web para el currículo de Ingeniería de Sistemas de la
Universidad de los Andes, resolviendo dificultades inherentes a las de un curso de Programación. Esta plataforma se diseñó teniendo en cuenta el modelo Cupi2, enfocándose en motivar la
participación activa de los estudiantes y en generar los conocimientos y habilidades necesarias para poder construir aplicaciones web que no dependan de una tecnología específica y den
soporte al rol actual que cumplen los usuarios en la web y a su forma de interacción.
Para poder integrar el modelo de Cupi2 en esta plataforma, se definió una estructura de contenidos (teoría, ejemplos, y problemas) independiente de la tecnología, que da soporte a los
diferentes ejercicios, actividades, escenarios de trabajo y problemas con los que se realiza la enseñanza y se desarrolla el proceso de aprendizaje de los ejes temáticos definidos para el curso.
A su vez, esta plataforma pretende aumentar la participación de los estudiantes, además de incrementar el conocimiento del curso a través de espacios de trabajo, sugerencias o comentarios,
y foros de discusión
7.2 Trabajo futuro.
En el sitio WEB se puede agregar cualquier extensión, plugin y modulo disponible para MODx. Por
ejemplo se puede agregar la extensión EasyPoll que permite crear encuestas y publicarlas en sitio WEB para que estas sean respondidas por los usuarios. También se pueden implementar
extensiones utilizando el API de MODx para agregar diferentes herramientas al sitio web como por ejemplo una herramienta de resaltado que permita a un usuario resaltar de cualquier color un texto del libro virtual. El texto resaltado se debe persistir para que se muestre siempre que el
usuario inicie sesión en la comunidad y visite el libro virtual.
Una tarea importante que se debe desarrollar en el futuro es como a partir de los comentarios y
las calificaciones de los usuarios, el contenido del libro se va a modificar, actualizar y modificar. En este punto es importante definir el versionamiento del libro, ya que a medida que los contenidos
se modifiquen y crezca los usuarios deben poder acceder a las diferentes versiones del libro.
Bibliografía 1. Design and Evolution of An Undergraduate Course on Web Application Development. Kwok‐Bun, Wei Ding.
2. Enseñanza de Aplicacions Web Enriquecidas Bajo un Engoque Pedagógico de Aprendizaje Activo. C. Jimenez, M. Rodriguez, J. Lozano, J. Gonzalez.
3. CUPI2‐An Active Learning and Problem Based Learning Approach to Teaching Programming. J. Villalobos, M. Vela. Bogota‐Colombia : s.n. 8th ALE International Workshop.
4. C. Morales, M. Rodriguez. Comunidad Clientes Web Enriquecidos. 2009.
5. E‐Learning 2.0 = e‐Learning 1.0 + Web 2.0? Ebner, M. 2007.
6. Wiki Pedagogy ‐ A Tale of Two Wikis. M. Bower, K. Woo, M. Roberts, P. Watters.
7. Applying Wikis to Managing Knowledge – A Socio Technical Approach. M. Kosonen, A. Kianto. 1,
2009, Knowledge and Process Management, Vol. 16, pp. 23‐29.
8. Eduwiki: an Effective Teachers’ Knowledge Management Pla form. Y. Zhou, C. Gong.
9. Minds on Fire: Open Education, the Long Tail, and Learning 2.0. J. S. Brown, R. P. Adler. 1, Enero/Febrero 2008, EDUCAUSE Review, Vol. 43, pp. 16‐32.
10. Teaching/Learning a First Object‐Oriented Programming Course outside the CS Curriculum. J. Villalobos, R. Casallas. 2006.
11. [book auth.] Jenny Preece. Online Communities. Designing Usability, Supporting Sociability.
2006.
12. ACM. [Online] [Cited: Enero 12, 2010.] http://www.acm.org/.
13. IEEE Xplorer Digital Library. http://ieeexplore.ieee.org/. [Online]
14. Science Direct. http://www.sciencedirect.com/. [Online]
15. IOP Science. http://iopscience.iop.org/. [Online]
16. Award. Open Source CMS Award. [Online] Enero 7, 2009. http://www.packtpub.com/award.
17. CMS Matrix. [Online] Enero 7, 2009. http://www.cmsmatrix.org/.
18. Antano Solar, John. MODx Web Development. 2009.
19. Extras. MODx. [Online] [Cited: Enero 7, 2009.] http://modxcms.com/extras/.
20. Rheingold, Howard. The Virtual Community. [Online] [Cited: Enero 12, 2010.] http://www.rheingold.com/vc/book/.