53
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.

Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

 

 

 

Page 2: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 3: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 4: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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). 

Page 5: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 6: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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.  

Page 7: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 8: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

• 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 

Page 9: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

• 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 

Page 10: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

  Usuario 

 

Figura. 4 Caso de Uso – Usuario Registrado 

Moderador 

 Figura. 3. Caso de Uso ‐ Administrador 

Page 11: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 12: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 13: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 14: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 15: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 16: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 17: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

 

Page 18: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 19: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 20: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 21: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 22: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 23: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 24: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 25: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 26: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

á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.   

 

Page 27: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

 

 

 

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).  

Page 28: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 29: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 30: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 31: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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.  

Page 32: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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 

Page 33: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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.  

Page 34: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 35: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

• 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"]))

Page 36: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

{ //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

Page 37: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

$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'];

Page 38: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

$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)

Page 39: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

$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. . . . . . . . . . . }

Page 40: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

} 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. 

Page 41: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 42: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

 

Page 43: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

Figura. 18 Menús de navegación I.  

 

Page 44: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

 

Figura. 19 Menús de navegación II.  

Page 45: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 46: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 47: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 48: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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.  

Page 49: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 50: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

 

Page 51: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

 

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. 

Page 52: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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. 

Page 53: Diseño y Desarrollo Libro Virtual para Clientes Web Enrique

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/.