DISEÑO Y DESARROLLO DE UN CONJUNTO DE COMPONENTES ENFOCADOS AL E-LEARNING MIGUEL ANGEL AVILA CUEVAS DANIEL HERNANDO REYES PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENERIA CARRERA DE INGENERIA DE SISTEMAS BOGOTA D.C. SEPTIEMBRE DE 2005 DISEÑO Y DESARROLLO DE UN CONJUNTO DE COMPONENTES ENFOCADOS AL E-LEARNING MIGUEL ÁNGEL ÁVILA CUEVAS DANIEL HERNANDO REYES Proyecto de grado para optar al titulo de Ingeniero de Sistemas Director MIGUEL EDUARDO TORRES MORENO, MSc Ingeniero de Sistemas PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENERIA CARRERA DE INGENERIA DE SISTEMAS BOGOTA D.C. SEPTIEMBRE DE 2005 NOTA DE ACEPTACION ________________________________________ ________________________________________ ________________________________________ ________________________________________ _______________________________________ Director del Proyecto _____________________________________ Jurado ____________________________________ Jurado PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENERÍA CARRERA DE INGENERÍA DE SISTEMAS RETOR MAGNIFICO: R.P. GERERDO REMOLINA VARGAS S.J. DECANO ACADEMICO ING. FRANCISCO JAVIER REBOLLEDO MUÑOZ DECANO DEL MEDIO UNIVERSITARIO R.P. ANTONIO JOSE SARMIENTO. DIRECTOR DE CARRERA: ING. HILDA CRISTINA CHAPARRO LOPEZ DIRECTOR DE DEPARTAMENTO ING. GERMAN ALBERTO CHAVARRO FLORES DIRECTOR DE PROYECTO: ING MIGUEL EDUARDO TORRES MORENO ARTICULO 23 DE LA RESOLUCION NO. 01 DE JUNIO DE 1946 “La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en los proyectos de grado. Solo velará porque no se publique nada contrario al dogma y la moral católica porque no contengan ataques o polémicas puramente personales. Antes bien, que se vean en ellos el anhelo de buscar la verdad y la justicia” ¿Por qué esta magnífica tecnología científica, que ahorra trabajo y nos hace la vida más fácil, nos aporta tan poca felicidad? La repuesta es está, simplemente: porque aún no hemos aprendido a usarla con tino. Albert Einstein AGRADECIMIENTOS Los autores agradecemos cordialmente a: Ing Miguel Eduardo Torres Moreno, Director del proyecto, por su apoyo, orientación y aportes. Ing. César Julio Bustacara Medina, por su colaboración en el levantamiento de requerimientos y en la ejecución de pruebas del proyecto. Ing. José Hernando Hurtado Rojas, por su asesoría y colaboración con el tema de elearning y la plataforma de educación virtual BlackBoard. Ing. Rafael González, Maribel Ariza, Juan Carlos Molina, Dawid Junco, Rodrigo Fonseca, todos miembros del grupo de investigación PICS del departamento de Ingeniería de Sistemas de la Pontificia Universidad Javeriana, por su ayuda y apoyo en el desarrollo de la investigación. Ing. Juan Guillermo Rojas, por su asesoría en el proceso de desarrollo de los prototipos. Ing. Víctor Andrés González Céspedes por su asesoría y colaboración en el diseño de los modelos entidad-relación para cada componente. Ángela Vera por su colaboración en el diseño de interfaces gráficas, asignación de colores y distribución de los objetos gráficos en el prototipo funcional. Ing. Oscar Alirio Reyes Castro por su asesoría y colaboración en el desarrollo del proyecto y realización de las pruebas. Dedicamos este trabajo a Dios, nuestra familia y la comunidad universitaria. ÍNDICE DE TABLAS Tabla 1………………………………………………………………………………….28 Tabla2………………………………………………………………………………......38 Tabla 3……………………………………………………………………………...…..38 Tabla 4……………………………………………………………………………...…..39 TABLA DE CONTENIDO INTRODUCCION _______________________________________________________ 10 1 MARCO TEORICO __________________________________________________ 12 1.1 E-LEARNING________________________________________________________ 12 1.1.1 HISTORIA ________________________________________________________________12 1.1.2 DEFINICIÓN:._____________________________________________________________14 1.1.3 BENEFICIOS::_____________________________________________________________14 1.1.4 CLASIFICACIÓN: _________________________________________________________15 1.1.4.1 VERTIENTE TECNOLÓGICA: __________________________________________15 1.1.4.2 VERTIENTE DE INFORMÁTICA EDUCATIVA: ___________________________16 1.2 1.2.1 1.2.2 1.2.3 1.2.4 COMPONENTES DE SOFTWARE _____________________________________ 16 DEFINICIÓN: _____________________________________________________________16 CARACTERISTICAS: ______________________________________________________19 ASPECTOS DE ESCALAMIENTO Y GRANULARIDAD: _________________________20 METODOLOGÍA DE DESARROLLO DE COMPONENTES: _______________________24 2 INVESTIGACIÓN DE LOS REQUERIMIENTOS FUNCIONALES EN LA EDUCACION VIRTUAL COLOMBIANA____________________________________ 29 2.1 AVANCES DEL E-LEARNING EN LAS PYMES __________________________ 29 2.2 AVANCES DEL E-LEARNING EN LOS CENTROS DE EDUCACIÓN _______ 32 2.3 CARACTERISTICAS DE UNA BUENA HERRAMIENTA DE SOFTWARE __ 32 2.3.1 2.3.2 EJEMPLO DE UNA HERRAMIENTA DE E-LEARNING (MODO ADMINISTRADOR) _33 EJEMPLO DE UNA HERRAMIENTA DE E-LEARNING (MODO ESTUDIANTE) _____35 2.4 REQUERIMIENTOS FUNCIONALES DE UNA PLATAFORMA DE ELEARNING ________________________________________________________________ 36 3 ANALISIS DE BLACKBOARD Y WEBCT _______________________________ 37 3.1 BLACKBOARD ______________________________________________________ 37 3.1.1 HISTORIA DE BLACKBOARD:. _____________________________________________37 3.1.2 VENTAJAS DE BLACKBOARD: _____________________________________________37 3.1.3 HACIENDO UN RECORRIDO POR BLACKBOARD _____________________________38 3.1.3.1 INTERFAZ DE ESTUDIANTE ___________________________________________38 3.2 WEBCT _____________________________________________________________ 41 3.2.1 CARACTERISTICAS DE WEBCT ____________________________________________42 3.2.2 UN RECORRIDO POR WEBCT ______________________________________________43 3.2.2.1 PRESENTACION DE BIENVENIDA______________________________________43 3.2.2.2 ENTRANDO A WEBCT ________________________________________________44 4 DESARROLLO DE LOS COMPONENTES DE E-LEARNING ______________ 47 4.1 4.1.1 DESARROLLO DEL PRIMER COMPONENTE __________________________ 47 IDENTIFICACIÓN DE REQUERIMIENTOS:____________________________________48 4.1.2 ESPECIFICACION:_________________________________________________________48 4.1.2.1 ARQUITECTURA DEL COMPONENTE:. _________________________________49 4.1.2.2 CONTRATO DE USO __________________________________________________50 4.1.2.3 CONTRATO DE SERVICIOS____________________________________________51 4.1.3 APROVISIONAMIENTO ____________________________________________________51 4.1.4 ENSAMBLADO ___________________________________________________________51 4.1.5 PRUEBAS ________________________________________________________________51 4.1.6 DESPLIEGUE _____________________________________________________________51 4.2 DESARROLLO DEL SEGUNDO COMPONENTE ________________________ 51 4.2.1 IDENTIFICACION DE REQUERIMIENTOS ____________________________________51 4.2.2 ESPECIFICACION _________________________________________________________52 4.2.2.1 ARQUITECTURA DEL COMPONENTE___________________________________53 4.2.2.2 CONTRATO DE USO __________________________________________________53 4.2.2.3 CONTRATO DE SERVICIOS____________________________________________53 4.2.3 APROVISIONAMIENTO ____________________________________________________53 4.2.4 ENSAMBLADO:. __________________________________________________________54 4.2.5 PRUEBAS:________________________________________________________________54 5 DESARROLLO DEL PROTOTIPO FUNCIONAL _________________________ 55 5.1 DESARROLLO DEL PROTOTIPO FUNCIONAL _________________________ 56 Descripción de la arquitectura. ________________________________________________ 56 Cliente. ____________________________________________________________________ 57 Servidor Web. ______________________________________________________________ 58 Aplicación Web. _____________________________________________________________ 58 Almacenamiento. ____________________________________________________________ 58 6 CONCLUSIONES ___________________________________________________ 59 7 CONTINUIDAD DEL TRABAJO DE GRADO ____________________________ 60 GLOSARIO ____________________________________________________________ 62 9 ÍNDICE DE ILUSTRACIONES Ilustración 1 Aplicación basada en componentes ................................................................ 18 Ilustración 2 Ciclo de Desarrollo de un Componente .......................................................... 25 Ilustración 3 Representación de un componente de software ............................................. 28 Ilustración 4 Interfaz de un componente.............................................................................. 28 Ilustración 5 Diagrama de componentes y Nodos................................................................ 28 Ilustración 6 Aplicación E-learning modo Administrador .................................................. 33 Ilustración 7 Aplicación de E-learning modo estudiante ..................................................... 35 Ilustración 8 Interfaz de presentación de Blackboard .......................................................... 38 Ilustración 9 Interfaz del validación de usuarios de Blackboard para estudiantes............... 39 Ilustración 10 Menú de presentación de Blackboard para estudiantes ............................... 40 Ilustración 11 Plataforma de WebCT................................................................................... 42 Ilustración 12 Interfaz de validación de usuarios en WebCT .............................................. 43 Ilustración 13 Menú de presentación de WebCT para estudiantes ..................................... 44 Ilustración 14 Arquitectura del Componente de Administración ........................................ 50 Ilustración 15 Arquitectura Componente de Evaluación ..................................................... 53 Ilustración 16 Arquitectura de LearnCity ............................................................................ 56 Ilustración 17 Arquitectura Física de LearnCity ................................................................. 57 10 INTRODUCCION Hoy en día se vive en una época de grandes avances que llevan cada vez más hacia el mundo digital, el cual agiliza los procesos más frecuentes de la vida. Es el caso de la economía, la cual se ha llevado al mundo digital, trayendo consigo el conocido e-business o e-commerce, transacciones de negocios a través de la red, ahorrando tiempo y, a veces, también dinero. Y ¿por qué no pensar en educación en el mundo digital? Haciendo uso de las grandes velocidades que se adquieren con el uso de las redes actuales, es posible tener la información que se desea con sólo un click. La tecnología actual puede, y debe, ser usada para el beneficio de la humanidad, permitiéndole el acceso al mundo digital al instante de hacer un click. Otro tema importante es el software desarrollado para e-learning, y en general, el software; herramientas bastante importantes para el mundo digital, que permite demasiadas operaciones en muy poco tiempo, operaciones deseadas para un resultado específico. El software desde sus inicios ha sido pensado como un todo que es desarrollado y vendido a los clientes, de tal manera que si se le hace una modificación, se tiene que modificar todo el conjunto que conforma el software. Pero, ¿por qué no ver el software como un conjunto de elementos que al conectarse entre sí nos proporcionan un gran sistema? De esto se encarga la ingeniería de software basada en componentes. Se desarrollan varios componentes, los cuales al ser unidos forman un gran sistema capaz de grandes operaciones, y en caso de ser modificado, sólo se ve afectado el componente que debe serlo, siendo los otros inmunes a dichos cambios. Ahora, ¿por qué no unir estos dos interesantes temas en uno solo? Una gran plataforma de e-learning basada en componentes, los cuales tendrán unos componentes base que podrán ser de libre distribución, código abierto y libre uso por parte de instituciones tanto privadas como del estado que estén interesadas en llevar a cabo procesos de enseñanza o entrenamiento a su personal, y en general, a las personas que forman parte de dicha organización. 11 CAPITULO 1 1 MARCO TEORICO 1.1 E-LEARNING 1.1.1 HISTORIA: El e-learning se refiere al uso de las tecnologías de Internet para proveer un amplio despliegue de soluciones que mejore el conocimiento y el desempeño, el cual tiene tres (3) criterios fundamentales: • El E-Learning está vinculado en redes, las cuales lo hacen capaz de actualizaciones instantáneas, almacenamiento y recuperación, distribución e intercambio de instrucción e información. Es enviado a un usuario final vía computador, usando tecnología estándar de Internet. Se enfoca en la más amplia visión del aprendizaje – soluciones de aprendizaje que van más allá de los paradigmas tradicionales del entrenamiento. • • Desde el principio ha tenido grandes cambios y una gran evolución apoyada por los avances tecnológicos que han ido ocurriendo desde su inicio, y que aún no dejan de suceder. El presente marco teórico mostrará al lector la historia y evolución del tema en mención (e-learning) de la siguiente manera: Primero se mostrará la historia a nivel mundial y, posteriormente, la evolución a nivel específico de Colombia. A nivel mundial: 1990 – 1999: En esta etapa se tenía lo que se llamaba Computer Based Training (CBT), el cual consistía en CD-ROM que se usaban en el computador del usuario final, en estaciones de entrenamiento Standalone, y otras veces a través de redes LAN Cliente/Servidor. Se empezaron a crear herramientas multimedia para la enseñanza, como es el caso de Macromedia con su herramienta Authorware. Se tenían problemas de presupuesto, ya que era demasiado costoso adquirir una herramienta de este tipo; algunos problemas de tiempos de desarrollo de las herramientas que conllevaba una muy difícil y costosa modificación. • • 1994 – 1999: La noción de pre-empacar sistemas CBT y venderlos a una gran masa era un mejor modelo. Compañías como CBT Systems (ahora SmartForce) comenzaron a liderar un mercado que creció, y llegó a exceder, hasta los cien millones de dólares en utilidades aproximadamente. 1997 – 1999: En esta época los clientes se dieron cuenta que poseían altos costos de inversiones en productos de aprendizaje, así como un alto número de CD-ROM, sobre los cuales no se tenía conocimiento si iban a ser utilizados o iban a tener algún 12 • • • impacto en la capacitación del personal de la empresa. Se comenzaron a crear sistemas que permitían la administración de entrenamientos basados en CD-ROM, e inclusive de entrenamiento basado en Web, y lo podía hacer entre diferentes locaciones, también permitían reportar los resultados de todo, y estratificarlos por zona, por departamento, etc. Estos sistemas son conocidos como Learning Management Systems (LMS). 1999: Mientras las compañías empezaban a completar las instalaciones de sus intranets, y el ancho de banda de 56K, e inclusive mayor, comenzó a tener auge, empezó a tener sentido la idea de migrar del entrenamiento basado en CD-ROM al entrenamiento basado en Web. Esto ayudaría a justificar el costo de la Intranet, es decir, la implementación del e-learning (comenzó a ser utilizada esta palabra en este año) comenzó a ser más fácil que los CD-ROM, y la enseñanza podía ser tomada en cualquier lugar y en cualquier momento. Aunque se tenían inconvenientes como el ancho de banda, que aún no era lo suficientemente bueno como para permitir el enriquecimiento de los medios para la enseñanza. Mitad de 1999 – 2000: En ese momento el desarrollo de cursos Web con administración centralizada se convirtió en lo que es ahora, pero no existía algún lugar en donde se pudiera ver el contenido personalizable, manipulable y de alta calidad. Muchos proveedores de e-learning empezaron a ofrecer “centros de compra” de contenido Web administrado centralmente y accesible a través de toda la empresa. Principios del 2000 – ahora: Se ofrecen paquetes de contenidos que proveen el suficiente enfoque y la calidad que hacen que el contenido parezca listo para encajar perfectamente en los planes de entrenamiento de la organización del cliente. En Colombia: • • • • • • 1982: Se crea la Universidad Abierta y a Distancia (UNAD). 1992: Se comienzan procesos educativos más elaborados, y algunas universidades dictan maestrías realizando teleconferencias con México. 1996: Empieza la revolución de la educación virtual en Colombia, y nace el concepto de la educación virtual en el país. 1999: Se comienza el desarrollo de software para educación virtual, y hay unos primeros avances en tecnología de redes, lo cual abre un nuevo panorama a la educación virtual. 2002: Nace el portal de educación virtual Colombia Aprende. 2003: Comienza el uso del software de e-learning por parte de las PYMES colombianas, además se crean empresas de desarrollo de software para e-learning y se realizan estudios sobre la aceptación del e-learning en las empresas. El crecimiento en esta modalidad de educación se ha visto marcado en las Universidades por la Educación Continua, especializaciones, y programas de pregrado. 13 Después del 2002 algunas empresas colombianas han empezado a implantar programas de e-Learning con el fin de capacitar clientes, empleados y proveedores de una manera mucho más rápida y efectiva, disminuyendo costos y aumentando la productividad. 1.1.2 DEFINICIÓN: Se puede definir el e-Learning como todo proceso de entrega de educación al usuario, por medios electrónicos. El e-learning involucra el uso de un computador o de dispositivos electrónicos (por ejemplo: dispositivo móvil) para, de alguna manera, proveer entrenamiento, educación o material de aprendizaje. La entrega de actividades de entrenamiento formales e informales, procesos, comunidades y eventos vía el uso de todos los medios electrónicos, tales como Internet, Intranet, Extranet, CD-ROM, video cassettes, DVD, televisión, teléfonos celulares, organizadores personales, etc. 1.1.3 • • • • • • • BENEFICIOS: La implantación de un sistema de e-learning provee de grandes beneficios para una institución que lo realice. A continuación se muestran dichos beneficios: El e-learning baja los costos con relación a la enseñanza presencial. Además disminuye los gastos de viaje, reduce el tiempo que toma el entrenar a las personas, y elimina o aminora la necesidad de una infraestructura tipo salón de clases/instructor. El e-learning mejora la respuesta de los negocios. Una plataforma de e-learning puede alcanzar un número elevado de personas en forma simultánea. Esto puede ser crucial cuando las prácticas y las capacidades comerciales tienen que cambiar rápidamente . Los mensajes son coherentes o a la medida, dependiendo de las necesidades. Cada uno recibe el mismo contenido, presentado en la misma forma. Cuando sea necesario los programas pueden diseñarse a la medida para diferentes necesidades. El contenido es más oportuno y confiable. Una de las ventajas que permite el estar en la Web es que el e-learning puede estar actualizado instantáneamente, haciendo la información más útil por más tiempo. Aprender es 24/7. Las personas pueden tener acceso a la educación las veinticuatro (24) horas del día, los siete (7) días de la semana. Universalidad. El e-learning está habilitado para la Web y toma ventaja de dichos protocolos, permitiéndole a las personas tener virtualmente el mismo material de virtualmente el mismo modo. Crea comunidad. La Web permite a la gente construir comunidades de práctica duraderas, donde ellos pueden unirse para intercambiar información y puntos de vista mucho después de que el programa de entrenamiento termine. 14 • Escalabilidad. Los programas de e-learning pueden mover desde 10 participantes hasta 100.000 de ellos, con poco esfuerzo o incremento de los costos (mientras la infraestructura sea la adecuada).1 1.1.4 CLASIFICACIÓN: Debido al gran crecimiento del e-learning desde su inicio, se ha clasificado el e-learning en dos vertientes, las cuales se describen a continuación: 1.1.4.1 VERTIENTE TECNOLÓGICA: Esta vertiente de la educación virtual, como su nombre lo indica, se enfoca más hacia la tecnología, y se han definido cinco (5) niveles de evolución para esta vertiente: • Nivel 1 La virtualidad cambió el tradicional sistema de entrega postal de material académico, por el envió de material electrónico a través de redes de comunicaciones, basando su funcionamiento en arquitecturas simples que contenían una base con el material de los cursos, un servidor instruccional (IS) y una red de comunicaciones para el envió de la información, la comunicación con los estudiantes se manejaba de manera asincrónica2 por medio del e-mail. • Nivel 2 Se empiezan a incorporar componentes de audio, video y comunicación de una sola vía. A esta altura tanto el servidor como las bases de datos soportan este tipo de información. • Nivel 3 Se adicionan componentes dinámicos de interacción; para ello se deben agregar equipos de digitalización de sonidos y video, software de navegación, programas de Chat, boletines, conferencias virtuales en vivo, comunicación sincrónica y asincrónica en dos vías y redes de comunicación con bastante ancho de banda. • Nivel 4 No sólo se basan en técnicas más modernas de entrega de materiales, sino en materiales mucho mejor preparados, transformándolos en lo que se denominara Objetos de aprendizaje y componentes interactivos que se adaptan a las necesidades del estudiante, 1 Tomado de: http://ccc.inaoep.mx/~josemcr/TECNOLOGIA%20ORIENTADA%20A%20OBJETOS/Proyecto-pem.pdf (mayo 04/05) 2 Asíncrono: Modo de transmisión arbitraria o aleatoria, en la que los canales de envío y de recepción son diferentes, actuando uno de ellos con mayor velocidad que el otro. 15 y por lo tanto pueden ser reconstruidos y reutilizados en diferentes plataformas; se incorporan evaluaciones autoformativas denominados tutores electrónicos. • Nivel 5 Este es el nivel más alto y desarrollado. Se tienen aplicaciones y componentes con especializaciones muy complejas y funcionales, enfocadas a casos concretos que solucionan problemas particulares. 1.1.4.2 VERTIENTE DE INFORMÁTICA EDUCATIVA: Esta vertiente estratégica se enfoca hacia la informática educativa. Se adelantan programas de adopción, adecuación o desarrollo de software como mecanismos de apoyo para el mejoramiento de la calidad tanto de las metodologías y prácticas docentes de los diferentes servicios educativos, así como de la organización y administración de las propias instituciones educativas. Si bien el término aparece como algo simple, a estas aplicaciones se les ha denominado comúnmente como informática educativa. Los avances en esta vertiente son igualmente diferenciales y abarcan campos que van desde el desarrollo de software educativo y plataformas virtuales, desarrollo de micro-mundos virtuales, hasta inteligencia artificial, tanto para educación presencial como a distancia. 1.2 COMPONENTES DE SOFTWARE 1.2.1 DEFINICIÓN: El desarrollo de software basado en componentes es algo nuevo en el campo de la ingeniería de software. La idea de este es tratar de emular el hardware realizado por los ingenieros electrónicos, el cual es un conjunto de compuertas y componentes electrónicos, los cuales se unen entre sí para dar un resultado general.3 A continuación se muestran algunas definiciones de componentes de software: • • 3 “Un componente es una parte no trivial, casi independiente y reemplazable de un sistema que realiza una función en el contexto de una arquitectura bien definida. Un componente conforma y provee la realización física de un conjunto de interfaces. Un componente de software es un paquete dinámico de uno o más programas manejados como una unidad y acceso a través de interfaces documentadas que pueden ser descubiertos en el momento de la ejecución. Tomado de: http://ccc.inaoep.mx/~josemcr/TECNOLOGIA%20ORIENTADA%20A%20OBJETOS/Proyecto-pem.pdf, 04 de mayo de 2005 16 • Un componente es un elemento de software que se conforma a un modelo de componentes, y puede ser desarrollado independientemente y compuesto sin modificación, de acuerdo a un Standard de composición.”4 El modelo de componentes define la interacción específica y los estándares de composición. Una implementación de un modelo de componentes es el conjunto dedicado de elementos de software ejecutables requeridos para soportar la ejecución de componentes conforme al modelo. La idea de que el software debe ser construido por componentes previamente fabricados, fue publicada por primera vez en 1968 en Garmish, Alemania. Más adelante Microsoft dio su aporte a la evolución de los componentes, con la implementación de OLE (Object Linking and Embedding) y COM (Component Object Model). Actualmente existen muchos modelos de software de componentes exitosos, tales como: 5 • • • • • Programación orientada a componentes o VBX, OCX/ActiveX/COM de Microsoft o Enterprise Java Beans de Sun Microsystems o XPCOM de Mozilla Tecnologías de documentos compuestos o Bonobo (una parte de GNOME) o OLE o OpenDoc Tecnologías de objetos de negocios o Newi Componentes de software de computación distribuida o CORBA de The Open Group o DCOM y versiones recientes de COM (y COM+) de Microsoft o SOM de IBM o Frameworks de WebServices de diferentes proveedores J2EE de Sun Microsystems .NET de Microsoft o UNO (Universal Networks Objects) de OpenOffice.org Lenguajes de descripción de interfaces o SOAP IDL de W3C o Parte de COM y CORBA 4 Tomado de: Styperski, Clemens. “Component software = Beyond object oriented programming” Addison-Wesley Edition. 2002 589p 5 Tomado de: http://ulaweb.adm.ula.ve/DSIA/presentaciones/2a%20Charla%20DSIA%20Componentes.ppt, 04 de mayo de 2005 17 Para poder integrar los componentes se debe definir un lenguaje de descripción de interfaces (IDL – por sus siglas en inglés) para que los componentes puedan existir de manera anónima para otros componentes en el computador. Un concepto importante es que un componente debe tener interfaces claramente definidas. Un estándar de interfaces declara los servicios que puede ofrecer dicho componente. Un componente soporta una interfaz dada si el componente contiene la implementación de todas las operaciones definidas por dicha interfaz. Ilustración 1 Aplicación basada en componentes (http://ccc.inaoep.mx/~josemcr/TECNOLOGIA%20ORIENTADA%20A%20OBJETOS/Proyecto-pem.pdf, 28 de junio de 2005) Un estándar de interacción especifica el tipo de dependencias explícitas del contexto que puede tener el componente. Para habilitar la reutilización y la interconexión de los componentes, los productores y consumidores de componentes a menudo acuerdan un conjunto de interfaces antes del diseño de los componentes. Estos acuerdos mutuos pueden llevar a la estandarización de las interfaces. “Las tecnologías más prominentes de componentes (Enterprise JavaBeans, ActiveX, y Corba) imponen restricciones a los mismos. Por ejemplo, la habilidad de la infraestructura de un componente para explorar las interfaces de los componentes requiere que uno de ellos implemente algún servicio u obedezca alguna convención, así como están definidas por la infraestructura de componentes que los soporta."6 Esto puede ser tan simple como un 6 Styperski, Clemens. “Component software = Beyond object oriented programming” Addison-Wesley Edition. 2002 589p 18 conjunto de estándares de nombres para las operaciones, una ubicación estándar para poner información acerca de los componentes usando la infraestructura para hacerlo de manera efectiva y eficiente a través de servicios para: • • • • • Encontrar qué componentes están conectados actualmente a la infraestructura. Hacer referencia a algunos componentes a través de un esquema de nombres. Garantía de entrega una sola vez de mensajes entre componentes. Administrar transacciones que consisten de múltiples interacciones entre componentes. Permitir comunicación segura entre componentes. El desarrollo basado en componentes ha alcanzado algunas implicaciones para la construcción, obtención, conexión, y evolución de sistemas, enmarcando algunas preocupaciones. Tales preocupaciones se pueden resumir en dos, las cuales son: • • 1.2.2 • • • • 7 Los componentes son usados como una filosofía de diseño, independiente de cualquier preocupación de reutilización de componentes existentes. Los componentes son vistos como bloques de construcción independientes usados para diseñar e implementar un sistema basado en componentes.7 CARACTERISTICAS: La programación orientada a componentes se podría considerar de alguna forma la evolución de la programación orientada a objetos, de allí que muchos de los principios sean compartidos. Algunos de esos principios son el encapsulamiento, polimorfismo, su identidad, y la integración de datos y funciones, pero siempre hay que tener en cuenta que la robustez de un componente de software es un factor de bastante cuidado, ya que dicho componente podría funcionar en diferentes entornos. Un componente de software bien definido debería ser:8 Identificable: Debe tener una identificación clara que facilite su clasificación. Autocontenido: No debe necesitar de otro componente para prestar sus servicios, de ser así, es conveniente redefinir el componente. Rastreable: Se le puede hacer seguimiento durante el ciclo de desarrollo. Reemplazable: Se puede cambiar fácilmente por otro que preste los mismos servicios, sin necesitad de redefinir todo el sistema. Tomado de: http://fad.uta.cl/dfad/docum/cedm/1-cl-Luis%20Hern%E1ndez%20Sc%E4fer-Gim%20Ivy.pdf , 04 de mayo de 2005 8 Tomado de: http://ulaweb.adm.ula.ve/DSIA/presentaciones/2a%20Charla%20DSIA%20Componentes.ppt , 04 de mayo de 2005 19 • • • • • • Acceso definido: Sólo pueden acceder a sus servicios por medio de sus interfaces, y se deben ocultar los detalles de diseño. Servicios inmutables: Los servicios ofrecidos no deben variar, y los cambios realizados al interior del componente no deberían alterar los servicios. Documentación: La documentación debe ser lo suficientemente clara para identificar el componente, la adaptación a un nuevo ambiente, integración con otros componentes y la evaluación. Mantenido: Significa que debe existir alguien que le brinde soporte al componente en caso de falla, y actualizaciones. Múltiples interfaces: Puede tener diferentes interfaces de acuerdo a los servicios que ofrece el componente, así como las reglas que requiere para su uso. Empaquetamiento robusto: Debe garantizar su funcionamiento en un ambiente que interactúa con otros componentes. Adicionalmente de estos requerimientos esenciales, existen otros requerimientos ideales para un componente: • • • • Es independiente del lenguaje o de las herramientas usadas para su desarrollo Es independiente de la plataforma de ejecución Puede ser reutilizado dinámicamente Está certificado. Estos últimos cuatro requerimientos son muy difíciles de satisfacer a los usuarios consumidores de componentes, debido a que en la actualidad las diferentes tecnologías que soportan el desarrollo de componentes de software solucionan parte de estos requerimientos sacrificando otros. 1.2.3 ASPECTOS DE ESCALAMIENTO Y GRANULARIDAD: La división del diseño en componentes es un proceso que tiene un alto impacto en el éxito de los componentes resultantes. El mejor tamaño de un componente depende de muchos aspectos diferentes. A continuación se pueden observar dichos aspectos, los cuales permiten medir la granularidad de un componente: • Unidades de abstracción Tal vez la abstracción es la herramienta más poderosa disponible para un ingeniero de software. La principal ventaja de la abstracción es la experiencia de diseño que se encierra en ella, lista para ser reutilizada. 20 Un framework puede ocultar completamente su implementación, y sólo proveer una interfaz abstracta. Dicho framework, llamado framework de caja negra, actúa como una unidad de abstracción. • Unidades de contabilidad En sistemas grandes, como lo son los típicos para soluciones empresariales, el costo actual varía por partes individuales de un sistema, y su uso puede ser monitoreado. Si esto pasa entonces se vuelve importante una partición del sistema en unidades de contabilidad. • Unidades de análisis Cualquier sistema de al menos un tamaño medio necesita ser particionado jerárquicamente en unidades pequeñas, y el acoplamiento entre dichas unidades debe ser tan débil como sea posible. Particionar el sistema en unidades limitadas de análisis es necesario en la práctica cuando un sistema se vuelve muy grande para que un análisis global sea factible. Es aconsejable el buscar las unidades más pequeñas de análisis posibles. En algunos casos, clases individuales e inclusive métodos pueden formar las unidades de análisis. Un componente es la unidad más grande posible de análisis. • Unidades de compilación La compilación es un aspecto fundamental. Para permitir optimizaciones más globales, las unidades de compilación deben ser tan grandes como sea factible prácticamente. Los componentes son el límite superior; los módulos pueden ser un mejor compromiso que las clases. • Unidades de entrega Esto se refiere a unidades de entrega cuando se piensa en la distribución en el mercado. Hoy las aplicaciones, y algunas veces los componentes, son las unidades típicas de entrega. Los objetos individuales raramente justifican el esfuerzo administrativo y el costo de entrega. Sorprendentemente, la necesidad de tener claro y establecer contratos de interfaces, para proveer entradas de catálogo, para el mercado y el mantenimiento de los componentes agregan costos significativos a algo inherentemente tan barato de replicar como un componente de software. • Unidades de despliegue El despliegue es el proceso de alistar una unidad de operación en un ambiente en particular. En casos simples, el despliegue es un paso trivial y además frecuentemente confundido o identificado con la instalación. 21 Las unidades de despliegue pueden ser clases individuales con su descriptor de despliegue, pero usualmente son colecciones más grandes de clases, recursos y descriptores. • Unidades de disputa Si un sistema que se compone de muchos componentes falla, los proveedores de los componentes comenzarán a culparse unos a otros por el problema. Para minimizar este efecto indeseable, es vital que los errores se mantengan contenidos en componentes individuales. Es decir, los errores pueden ser fácilmente atribuidos a un componente en particular, y ellos (los componentes) no deben poner en peligro a todo el sistema. El manejo adecuado de excepciones no controladas (fallas reales de un componente llamado) requiere atenciones arquitectónicas. En el caso general, el componente que llama no podrá solucionar dicha situación. En cambio de eso, un alcance de encapsulamiento debe ser usado para contener las consecuencias de una falla. Pueden ser usadas políticas de manejo y control de errores, tales como reintentar o fallar y reportar al usuario, para actuar de manera apropiada al momento de surgir un error. • Unidades de extensión Un componente puede no proveer nueva funcionalidad, pero, a cambio, puede extender la funcionalidad existente o implementar interfaces existentes. Una unidad de análisis no debe ser abierta en muchas unidades de extensión. En cambio, una extensión puede ser integrada a un sistema objetivo con un contexto incompleto, en otras palabras, con un contexto diferente del mismo al momento del análisis. • Unidades de contenido de fallas Los sistemas distribuidos deben tener en cuenta clases de fallas que no están bajo el control de algún componente de software en particular. Un subsistema de contenido de fallas debe ser por sí mismo tolerante a fallas, es decir, debe tolerar y solucionar de manera efectiva las fallas que él debe contener. Las unidades de contenido de fallas son muy importantes a nivel de toda la arquitectura del sistema. Si un componente falla en el cumplimiento de su contrato, entonces ese hecho no puede ser reportado en el marco del contrato. Una manera de manejar este tipo de situaciones es arrojar una excepción, o contactar un mecanismo de control de errores por fuera de los límites. 22 • Unidades de instanciamiento La unidad de instanciamiento estándar es un objeto. Un componente puede empaquetar muchas clases. Esto no es una unidad útil de instanciamiento puesto que las clases contenidas necesitan ser instanciadas individual e independientemente. Forzar un componente a tener sólo una clase no es útil. • Unidades de instalación La instalación es una actividad, específica de la plataforma, que hace que una unidad instalada esté disponible para uso sobre una configuración específica de hardware soportada por la plataforma. La unidad típica de instalación es un árbol de archivos, posiblemente reunidos y comprimidos en un archivo. • Unidades de carga Como las clases de un componente típicamente interactúan de manera cerrada, cargar una clase podría causar inmediatamente la carga de otras clases. Usualmente es más eficiente cargar todo el componente como una unidad. Cuando se carga un nuevo componente, este debe ser revisado primero. La carga debe estar condicionada, si el nuevo componente usa otros componentes que no están disponibles en ese ambiente o que sean de una versión no compatible (diferente de la solicitada). Para máxima compatibilidad, la revisión de versiones debe ocurrir por clase o interfaz e inclusive por método, mejor que por componente. Cuando se está cargando componentes de diferentes orígenes, pueden ocurrir colisiones de nombres (si ya existe algo que esté siendo usado y tiene el mismo nombre del componente que se quiere usar ahora). Debe existir un mecanismo para prevenir dichas colisiones. La manera más segura es definir un esquema de nombres jerárquico, donde el nivel más alto está registrado con una autoridad global de nombres. La carga de nuevos objetos no debe invalidar otros objetos actualmente cargados. • Unidades de localidad Esto cubre aspectos de computación distribuida. Los sistemas distribuidos modernos están arreglados en una jerarquía de redes: desde redes de área conectando procesadores, redes de área local (LAN), y varias redes intermediarias posibles (redes de área amplia – WANs), directo a Internet. Los costos de comunicación se incrementan con el nivel de red usado. 23 Es útil diseñar interfaces de unidades de localidad, es decir, las interfaces deben atender solicitudes entre máquinas, de una manera que minimice el número de solicitudes individuales. • Unidades de mantenimiento Los productos de software raramente son perfectos al salir. Usualmente es necesario distribuir actualizaciones para corregir errores, las cuales son más eficientes, o añadir nuevas características. Si una actualización cambia los trabajos internos del componente, los componentes cliente que dependen de él pueden fallar. • Unidades de administración del sistema Ciertas partes de un sistema pueden requerir administración explícita que va más allá del mantenimiento. Para administrar un sistema, es útil particionarlo en unidades de administración, cada una de las cuales puede ser individualmente monitoreada para disponibilidad, carga, etc. 1.2.4 METODOLOGÍA DE DESARROLLO DE COMPONENTES: Los procesos de desarrollo de componentes son muy similares a los procesos empleados en el desarrollo de sistemas orientados a objetos. Los componentes, a diferencia de otros sistemas, necesitan cuidado especial en la definición y especificación de las interfaces. El Rational Unified Process (RUP) es una metodología que se ha adaptado a este tipo de desarrollos, llevando el ciclo de desarrollo en seis (6) etapas, con entregables al final de cada etapa, y demarcando el flujo que hay entre una etapa y otra. En la ilustración 2 se muestra un esquema a alto nivel de este proceso. Los bloques representan conjuntos de actividades que dan lugar a resultados tangibles, las flechas gruesas representan su secuencia y las flechas finas representan el flujo de elementos generados que transfieren información entre ellas.9 9 Tomado de: http://ulaweb.adm.ula.ve/DSIA/presentaciones/2a%20Charla%20DSIA%20Componentes.ppt mayo 04/05 24 Ilustración 2 Ciclo de Desarrollo de un Componente (http://ccc.inaoep.mx/~josemcr/TECNOLOGIA%20ORIENTADA%20A%20OBJETOS/Proyecto-pem.pdf, 28 de junio de 2005) Comparando el diagrama de metodología de los sistemas orientados a objetos con los sistemas orientados a componentes, encontramos similitudes en el ciclo de desarrollo en las etapas primarias y finales del proyecto, mientras que en las etapas intermedias cada una tiene su especialización. Las actividades que intervienen en el proceso de desarrollo son las siguientes: • • • • • Requerimientos: Consiste en la obtención clara y especifica de las necesidades que se quieren satisfacer con el componente, produciendo artefactos tangibles como un documento de casos de uso, y un modelo conceptual. Especificación: Esta etapa consiste en identificar posibles componentes en el sistema, dónde podrían existir las interfaces, luego se busca la manera de definir la forma de interacción entre componentes, y por ultimo se genera la especificación de componentes donde se especifica cada componente utilizado en el sistema. Aprovisionamiento: Esta etapa consiste en la implementación de los componentes, teniendo en cuenta el documento de especificación resultante en la etapa pasada. Ensamblado: Esta etapa consiste en la integración de los componentes desarrollados en la etapa anterior. Pruebas: Se comprueba el completo y correcto funcionamiento de la aplicación y los componentes, y se generan las aplicaciones probadas. 25 • Despliegue: Consiste en la instalación de la aplicación probada, en el entorno de trabajo. Otras tareas en la metodología de desarrollo de componentes son: • Especificación y diseño de componentes Como se mencionó anteriormente, la etapa de especificación de componentes esta subdividida en tres subetapas en donde se identifica el componente, se definen los mecanismos de interacción, y posteriormente se especifica y esa especificación se ve reflejada en un documento; paralelo a esto y hay que tener en cuenta los contratos existentes en un componente: Contrato de uso: Es el contrato que se establece entre la especificación del componente y la aplicación cliente que la utiliza. Este contrato es consumido por el cliente al usar los servicios que presta el componente por medio de sus interfaces. Contrato de instalación: Es el contrato que se establece entre la implementación, y el entorno en el que puede operar. Si el componente necesita de otros componentes en este contrato se debe especificar qué componentes adicionales se requieren. • Especificación de una interfaz Una interfaz especifica la manera en la que un componente es reutilizable, y cómo se puede integrar con otros componentes. Por lo general, lo que se hace con un componente es que la interfaz reciba un conjunto de datos necesarios para realizar una operación, y retorna un resultado como respuesta a esa petición hecha por el cliente, de esta manera es concluido el servicio ofrecido, y la conexión de los componentes para la prestación del servicio se resume a la forma en la que es invocado el componente y los parámetros necesarios para que dicho servicio se pueda prestar. La naturaleza de una interfaz es variable, y está sujeta al lenguaje en el que sea desarrollada, por ejemplo en la Programación Orientada a Objetos (POO) las interfaces son visibles y publican métodos que otras clases implementan, mientras que en los lenguajes procedimentales se puede interpretar una interfaz como una variable global, o una función. Algunas interfaces conocidas son: • Interfaces de datos: Estas interfaces se encargan de recibir algunos datos de entrada, ejecutan un proceso, y posteriormente arrojan un resultado, este tipo de interfaz tiene el formato de las bases de datos relacionales, y el ASCII. 26 • Interfaces gráficas: Es la capa de presentación que existe entre el usuario y el sistema, dicha interfaz ofrece los servicios a los cuales el usuario tiene acceso, y oculta los detalles de implementación detrás de ella. • Interfaces de programación: El mecanismo empleado es el API (Application Programming Interface). Aquí se establece la relación de dos aplicaciones que funcionen en plataformas iguales o diferentes. Un ejemplo de esto son las librerías usadas en java en donde cada paquete contiene una interfaz y un conjunto de clases que la implementan. Luego de analizar las diferentes interfaces, vamos a mencionar los ítems que debe de tener la especificación de una interfaz. • Un identificador al que se le pueda hacer referencia. • El modelo de información, esto son los atributos, tipos de asociaciones, definidos unos en función de otras hasta formar un sistema cerrado. • La descripción de las operaciones a las cuales el usuario tiene acceso a los servicios prestados. Aquí podemos incluir el indicador, precondiciones, poscondiciones, parámetros, etc. • Conjunto de invariantes y restricciones. La Tabla 1 muestra una comparación entre lo que especifica un componente y la interfaz de un componente. Tabla 1 Especificación de interfaz y componente 27 Modelamiento de componentes con Unified Modeling Language (UML) UML representa un componente por medio del siguiente gráfico: Ilustración 3 Representación de un componente de software (http://www.sparxsystems.cl/WhitePapers/El_Modelo_de_Componentes.pdf, junio 28 de 2005) Un diagrama de componentes muestra la relación entablada entre los diferentes componentes de un sistema, estableciendo diferencias, dependencias y canales de comunicación. En UML una interfaz se representa con el siguiente gráfico. Ilustración 4 Interfaz de un componente (http://www.sparxsystems.cl/WhitePapers/El_Modelo_de_Componentes.pdf, (junio 28 de 2005) A continuación se muestra un diagrama de componentes en UML: Ilustración 5 Diagrama de componentes y Nodos (http://www.sparxsystems.cl/WhitePapers/El_Modelo_de_Componentes.pdf, junio 28 de 2005) 28 CAPITULO 2 2 INVESTIGACIÓN DE LOS REQUERIMIENTOS FUNCIONALES EN LA EDUCACION VIRTUAL COLOMBIANA Los procesos de aprendizaje son innatos en el ser humano, el hombre desde siempre anda en busca de su verdad, parte de ella es heredada de su familia, otra parte de la sociedad, y la mayor parte de esta es responsabilidad del propio individuo. Es así como cada uno como ser individual, se enfoca hacia diferentes horizontes, pero siempre con el mismo objetivo: saber ¿Quién es?, ¿de donde viene? y ¿hacia dónde va? Estas búsquedas a lo largo de toda la historia de la humanidad han generado demasiado conocimiento, y dominio del entorno en donde vivimos, cosas que a pesar de ser muy importantes se hacen insuficientes con el fortuito cambiar de los tiempos, porque en el mundo en donde hoy se vive nacen nuevas ciencias, tecnologías, paradigmas, etc. que parten de lo ya existente y se especializan en áreas concretas y específicas. Parte de los grandes avances de la humanidad es la tecnología, con ella se acortaron grandes distancias entre países por medio de las telecomunicaciones. Se automatizaron procesos en las industrias para suplir las necesidades de las grandes sociedades consumistas, y se desarrollaron máquinas que simplifican el trabajo y hacen más grata la vida del hombre. Sin embargo, no todos tienen las facilidades de acceso a esas tecnologías y muchas veces gozar de ellas se convierte en un privilegio costoso que solo pocos pueden pagar. Colombia, como país tercermundista, es una nación que tiene falencias en el campo de la tecnología, y en el acceso a la educación, problemática que se refleja en las industrias, colegios y universidades; ya sea por la imposibilidad de acceder a ella, o por la falta de conocimiento tecnológico de quienes tienen acceso a esta. Esta investigación está enfocada en los centros de educación, tales como universidades, colegios y escuelas; por otro lado, en el campo empresarial se buscó un enfoque en las PYMES (pequeña y mediana empresa). 2.1 AVANCES DEL E-LEARNING EN LAS PYMES Los procesos de e-learning en las organizaciones son indispensables para la capacitación de personal de una manera rápida y a bajo costo. En latino América muchas empresas han implantado programas de e-learning en sus empresas y en ocasiones muchas de estas empresas invierten millones en el software y dejan poco presupuesto para el proceso fundamental que es el contenido que se desea montar en estas páginas. 29 El problema radica en que este tipo de herramientas son demasiado costosas, y la inversión que realiza una empresa se agranda cuando se da cuenta de que no es necesario tener el software, sino que también es indispensable tener una buena infraestructura de hardware que soporte la herramienta de e-learning, para que el desempeño de esta sea óptimo y pueda lograr el fin para el cual fue adquirida. Es claro que existen otros problemas, que son de tipo cultural y no dependen de la tecnología que se implemente. Estas necesidades son el cambio de paradigma que existe entre el concepto actual de educación presencial, y el concepto que se viene presentando desde hace cinco años del e-learning, por lo cual, aunque mucha gente parezca estar interesada en este tipo de educación, pocos se animan y no creen en la calidad que esta puede ofrecer. “Una encuesta realizada conjuntamente por el portal de formación virtual www.ElPrincipe.com y la Universidad Nacional de Tres de Febrero UNTREF- durante diciembre de 2001 y enero de 2002, reveló que el 71% de los consultados tiene mucho interés en capacitarse por Internet, mientras que el 26% mostró un relativo interés y el 3% manifestó que consultaba esta modalidad sin ninguna intención específica.”10. Para esta muestra se tomó una población de 1253 interesados en tomar cursos de educación a distancia, profesores y estudiantes universitarios. Las estadísticas muestran que la mayoría de la gente presenta interés por este tipo de educación, ya que ésta le ofrece ventajas de tiempo y espacio que una formación presencial no facilita. Sin embargo, para no dejar que se pierda este interés y para lograr mantener la credibilidad, una institución dedicada a la educación, a diferencia de una empresa que quiera capacitar a sus empleados en una actividad, debe estar certificada por una entidad de prestigio, y ofrecer igual o mayores dificultades en materia académica que un centro de educación presencial. Grandes empresas multinacionales han implantado dentro de sus organizaciones programas de e-learning para sus clientes y sus empleados con el fin de agilizar los procesos de aprendizaje y de hacerlos de una manera más cómoda. Ejemplos de estas empresas son: Oracle: http://education.oracle.com/latinamerica/elearning/ (28 de junio de 2005) Cisco: http://www.cisco.com/global/co/ee/el/index.shtml (28 de junio de 2005) En esta última referencia (Cisco) ellos como empresa dan su definición de E-learning y nombran las múltiples ventajas que tiene para ellos apoyarse en este tipo de tecnologías. Estas ventajas no son apáticas a la situación de las empresas colombianas, ya que por grandes o pequeñas que estas sean, todas tienen procesos generales y vitales para el buen 10 Tomado de: http://www.emagister.com/f_artic.cfm?next_page=form&id_artic=858, 28 de junio de 2005 30 desarrollo de la empresa en donde estas ayudas tecnológicas pueden servir; varios ejemplos de estos son: • • Capacitar nuevos empleados y proveedores en una compañía Capacitar personal de una compañía en un tema especifico Empresas que tengan una rotación constante de empleados o que se tengan que estar actualizando de manera muy rápida en algún tema en especial, son candidatas a aplicar esta tecnología, puesto que esto les ayudará a ahorrarse muchos costos de capacitación y a usar de una manera más eficiente los recursos de la empresa y de Internet. Analizando este contexto, dentro de una PYME encontramos que su problemática trasciende mas allá de la que podría tener una gran empresa que invierte mucho tiempo y capital en proyectos de este tipo, ya que los recursos económicos y de tiempo en su gran mayoría son mucho mas limitados que en una gran empresa, a ello podemos sumarle la falta de visión de alguna de estas en cuanto a las ventajas que este tipo de tecnología podría ofrecer a la organización. Con base en un estudio de campo realizado por el grupo PICS11 a las PYMES del sector de las IPS (Empresas Proveedoras de Servicios de Internet) de Bogotá, se envcontro que 90% de las empresas encuestadas conocen las ventajas del e-learning y valoran la utilidad que estas pueden tener dentro de su organización mientras que el 10% restante no lo vio necesario, argumentando que la rotación de personal y el nivel de conocimiento necesario para su negocio, era bastante trivial como para invertir grandes cantidades de dinero en este tipo de tecnología. Tomando como base las empresas que mostraron su interés en herramientas de este tipo, se preguntó si ellos estarían interesados en adquirir componentes de software prefabricados de manera gratuita, para poder fabricar sus propias herramientas de e-learning, y el 100% respondió que si, y que estaban dispuestos a contratar por lo menos un ingeniero de sistemas para la realización del proyecto. Esta afinidad se debe a que en algún momento estas empresas ha participado en procesos de desarrollo de software, y conocen los riesgos y los costos que estos implican, y al tener elementos de software prefabricados que se pueden integrar fácilmente y de libre distribución, reducen los costos del proyecto, haciéndolas más accesibles a este tipo de tecnología. 11 PICS: proyecto de investigación de componentes de software 31 2.2 AVANCES DEL E-LEARNING EN LOS CENTROS DE EDUCACIÓN La necesidad de una herramienta de E-learning en establecimientos de este tipo es más notoria y tangible, a causa de que todos los miembros de estas instituciones tienen como misión transmitir conocimiento a sus alumnos, y entre más herramientas se tengan, para garantizar que este proceso sea realizado de una manera más efectiva, mejor será la calidad de la educación recibida. Actualmente en el mercado existen muchas herramientas de E-learning, unas de libre distribución y otras licenciadas; aquellas que tienen licencia ofrecen servicios completos de manera modular, dándole al cliente la posibilidad de escoger los servicios básicos de la herramienta, más otros accesorios de software que prestan servicios especializados. El problema de estas herramientas es que su licenciamiento es muy costoso y no todos los establecimientos educativos están en capacidad económica de adquirirlas. Por otra parte, las herramientas de libre distribución ofrecen servicios muy limitados, o versiones Beta de sus aplicaciones, dándolos como muestras promocionales de software de un producto completo. En Colombia son pocas las universidades que tienen herramientas de E-learning licenciadas, sin embargo su gran mayoría se apoyan de herramientas de libre distribución o de software desarrollado internamente, pero en general la necesidad existe y está identificada, y tanto universidades, institutos técnicos, y grupos de asesores, están haciendo uso de este canal para expandir su mercado. A nivel mundial existen muchas universidades que ofrecen gran cantidad de programas académicos a distancia en diferentes idiomas Los MBAs son los más populares, así como nuevos Masters que surgen atados a los nuevos medios de comunicación digital. De igual forma las universidades de Colombia podrían ofrecer los mismos servicios y los colegios privados y del gobierno podrían instaurar programas de este estilo para lograr que más niños en Colombia hagan efectivo el derecho a la educación.12 2.3 CARACTERISTICAS DE UNA BUENA HERRAMIENTA DE SOFTWARE Según empresas dedicadas al desarrollo de software, un aula virtual debe brindar las siguientes ventajas: • Espacios para la comunicación como un Chat, una agenda, un espacio para publicar anuncios y generar foros de discusión. • También debe proveer la capacidad para incluir todo el material de un curso, enlaces a páginas de interés (bibliotecas) y un espacio para tareas y ejercicios. • Los alumnos deben tener la oportunidad de reunirse en grupos de trabajo y presentar exámenes 12 Tomado de: http://www.maestrosdelweb.com/editorial/e-learn/ 28 de junio de 2005 32 • Las aulas son privadas, es decir solo se puede acceder quien esté inscrito en el curso13 Partiendo de estos requerimientos, se debe tener en cuenta que un aula virtual tiene tres actores primaros y dependiendo del contexto en donde se implemente podrían surgir nuevos actores que interactúen con el sistema; estos actores son los siguientes: • Administrador de la herramienta. • Profesores. • Estudiante. Cada uno de estos actores tiene necesidades y responsabilidades que hacen que la interacción con la herramienta sea diferente para cada uno de ellos. Mientras el administrador tiene las responsabilidades del control de usuarios, materias y grupos, los profesores están más interesados en la creación de exámenes y materiales de trabajo que publicará a cada uno de los cursos que tiene asignado, para que sus alumnos puedan adquirir este conocimiento y realizar las actividades propuestas dentro de cada grupo. Un ejemplo encontrado en Internet de una herramienta de e-learning muestra perfectamente cómo se abarcan estas necesidades, y cómo se suplen para cada uno de los diferentes roles. 2.3.1 EJEMPLO DE UNA HERRAMIENTA DE E-LEARNING (MODO ADMINISTRADOR) Ilustración 6 Aplicación E-learning modo Administrador (http://www.emultimedios.com/siveduc3/demo/ mayo 04/05) 13 Tomado de http://www.colegiovirtual.org/empresa_page.html 33 Esta herramienta contiene los siguientes ítems: Demo para docentes. • programa del curso o descripción del curso o objetivos generales y específicos o contenidos o recursos físicos y humanos o métodos de evaluación • agenda o día de inicio del curso o días programados o un calendario para programar actividades • trabajos o archivos privados o archivos publicados o menú para crear un trabajo • Chat: medio de comunicación que permita la comunicación en tiempo real con los usuarios del sistema. • Usuarios : lista de alumnos inscritos en el curso • Ejercicios: publicación de tareas • Anuncios: espacio para publicar información de interés para el grupo • Material de trabajo: espacio para publicar información de interés para un grupo • Foros: sitios de discusión sobre los temas del grupo. • Enlaces: links a otras paginas de Internet que pueden ser relevantes para complementar la información de cualquier tema de clase • Grupos: espacios creados para agrupar estudiantes que desean ver la misma materia. 34 2.3.2 EJEMPLO DE UNA HERRAMIENTA DE E-LEARNING (MODO ESTUDIANTE) Ilustración 7 Aplicación de E-learning modo estudiante(http://www.emultimedios.com/siveduc3/etica/ mayo 04/05) Básicamente contiene los mismos privilegios pero sin el componente administrativo que maneja el rol de profesor. Costos de la herramienta14. o Setup(instalación) $ 15 una vez o Aula virtual individual $49 valor mensual o Precio adicional por usuario $ 1 Basándonos en toda la información recolectada en este documento, nosotros definimos nuestros propios requerimientos funcionales para nuestros componentes de e-learning. • • Al ser demasiado costosa los servicios de estas herramientas, decidimos que los componentes de software a desarrollar se hará bajo el contexto de libre distribución, de tal forma que cualquier entidad que los requiera los pueda tomar y adaptar a su propio contexto. Es claro que tanto las PYMES como los centros educativos tienen necesidades similares cada una de ellos sacará provecho de estos componentes con fines diferentes. Ventaja para las PYMES. capacitación de empleados capacitación de clientes 14 Los precios ilustrados están en dólares 35 capacitación de proveedores Ventajas Para los centros Educativos Soporte para capacitar estudiantes Creación de centro educativos virtuales Tomando como base los requerimientos identificados, y en el tiempo planeado para la investigación, se diseñará nuestra plataforma, y se implementará los componentes de administración y calificación de exámenes, de forma que sea útil para las PYMES, y los centros de educación que la soliciten. 2.4 REQUERIMIENTOS FUNCIONALES DE UNA PLATAFORMA DE ELEARNING A continuación se muestra la lista de requerimientos identificados para el desarrollo de nuestros componentes de software, Para obtener una información detallada de estos requerimientos, por favor dirigirse al Anexo A (SRS)15 Comunicación Chat agenda anuncios foros Material del curso enlaces bibliotecas tareas ejemplos documentos contenido publicado Evaluaciones presentación de exámenes calificación de exámenes formar grupos de trabajo Seguridad privacidad manejo de roles consistencia en información Administracion creación de roles creación de grupos creación de materias administración de permisos procesos CRUD Tabla 2 Requerimientos para una plataforma de E-learning 15 Software Requirement Specification (Especificación de los requerimientos de Software) 36 CAPITULO 3 3 ANALISIS DE BLACKBOARD Y WEBCT El objetivo de esta sección es hacer un análisis comparativo entre estas dos plataformas de E-learning, para de manera poder explorar e identificar los diferentes componentes de comunicación, administración, evaluación, seguridad, etc. que componen estas plataformas, y la manera como interactúan con el usuario. 3.1 BLACKBOARD 3.1.1 • • • • • 3.1.2 • • HISTORIA DE BLACKBOARD: En 1997 dos consultores de educación: Matthew Pittinsky y Michael Chasen, crearon Blackboard LLC, y fueron contratados para conducir la formación de los estándares IMS para tecnologías de educación en línea. Por el mismo tiempo un grupo de estudiantes de la universidad de Cornell desarrollaron un producto de software que seria escalable para un uso institucional más amplio, reconociendo la gran demanda de este producto y el fácil uso de la plataforma. Estos dos grupos decidieron unirse para conformar de esta forma a Blackboard Inc. Cinco años mas tarde, Blackboard y sus clientes eran pioneros en la industria del Elearning alrededor del mundo, Blackboard satisfacía las necesidades de escuelas primarias, secundarias, educación superior y entidades gubernamentales. Blackboard es aplicable a distintas instituciones incluyendo: Escuelas primarias y secundarias. Escuelas de condados y universidades virtuales. Sistemas de comunicación universitarios. Gobiernos, escuelas y agencias militares. Empresas y corporaciones. VENTAJAS DE BLACKBOARD: Las ventajas que se enumeraran a continuación, son la recopilación de información de usuarios, ventajas de diseño de la herramienta versus otras plataformas de e-learning. Es un ambiente reconocido por su fácil aprendizaje, flexibilidad pedagógica, y una gama muy amplia de servicios que enriquecen el aprendizaje en línea. Está diseñado con una arquitectura BuildingBlock que le permite integrarse de una manera fácil con otros sistemas administrativos como: o SCT. o SITS. 37 • • o Capita. o Datatel. o HIS. o SAP. o PeopleSoft. Los costos de enseñanza y soporte tecnológico se reducen a una administración centralizada. Plataforma robusta y escalable o Arquitectura ínter operable, escalable y modular. o Bases de datos relacional a nivel de administración de cursos. o Cumplimiento con los estándares IMS, JISC, AICC y SCORM. 3.1.3 HACIENDO UN RECORRIDO POR BLACKBOARD El siguiente entorno de Blackboard esta configurado para el ámbito de la Pontificia Universidad Javeriana. 3.1.3.1 INTERFAZ DE ESTUDIANTE Ilustración 8 Interfaz de presentación de Blackboard (http://uvirtual.javeriana.edu.co/bin/index.pl junio 26/05) Esta es la interfaz de presentación, en donde se da la bienvenida al usuario y se le invita a iniciar sesión en el botón que se encuentra justo debajo del escudo de la Pontificia Universidad Javeriana. 38 Una vez el usuario hace click en este botón, el sistema despliega la siguiente pantalla. Ilustración 9 Interfaz del validación de usuarios de Blackboard para estudiantes (http://uvirtual.javeriana.edu.co/bin/login.pl?show_header=no&new_loc=/bin/frame.pl%3Flocale%3Deses%26sel_loc%3D0%26item%3Dmy_inst%261120229912%26&auth_type=SYSTEM&course_id= juni 26/05) Esta es la pantalla de validación de usuarios en donde el estudiante ingresa su nombre de usuario y contraseña y automáticamente el sistema identifica el rol que dicho usuario tiene dentro del sistema. 39 Una vez registrados con el usuario de monitor se tiene la siguiente interfaz: Ilustración 10 Menú de presentación de Blackboard para estudiantes (http://uvirtual.javeriana.edu.co/bin/frame.pl?locale=es-es&sel_loc=0&item=my_inst&1120229912& junio 26/05) Al lado izquierdo de la aplicación se encuentra el conjunto de herramientas que tiene la aplicación disponible para el alumno. Dichas herramientas son: • • Anuncios: esta modalidad le permite al alumno ver los diferentes anuncios que se han publicado a lo largo del curso; esta herramienta cumple la función de la cartelera de un curso. La vista que se tiene en estos anuncios están clasificadas de la siguiente manera: o Ver hoy o Ver últimos 7 días o Ver últimos 30 días o Ver todos Calendarios: el calendario cumple la función de la agenda del curso, en esta modalidad se pueden programar eventos y consultar los eventos programados, tiene dos módulos grandes en donde se puede hacer una consulta rápida seleccionando una fecha en especial y el segundo en donde se puede consultar los eventos del curso por las siguientes categorías: o Ver día 40 • • • • • • o Ver semana o Ver mes o Ver año Tareas: esta herramienta le permite al alumno entregar tareas, etiquetándolas con un nombre, y fecha de entrega. Para el caso del profesor, se le puede dar una fecha de vencimiento, prioridad, y descripción de la actividad. Mis calificaciones: le permite al alumno consultar las notas obtenidas durante el curso Enviar correo electrónico: esta opción le permite enviar correo electrónico a los integrantes de la comunidad virtual de e-learning. El alumno selecciona el curso al que esta inscrito y de ahí puede enviar un correo electrónico a los siguientes destinatarios: o Todos los usuarios o Todos los grupos o Todos los profesores asistentes o Todos los profesores o Seleccionar usuarios o Seleccionar grupo Directorio de usuarios: esta opción contiene un buscador de personas dentro del sistema en donde la búsqueda puede hacerse por: o Apellido o Correo electrónico Libreta de direcciones: contiene el mismo menú del directorio de usuarios, con los mismos patrones de búsqueda. Información personal: esta opción le permite al usuario: o Editar información personal o Cambiar contraseña o Establecer unidad de CD: esta opción le permite al usuario publicar su unidad de CD, para acceso remoto. o Establecer opciones de privacidad: esta opción le permite al usuario establecer que información personal quiere publicar. Viendo este tipo de interfaces, se puede apreciar que la navegabilidad es sencilla y fácil de ejecutar, el alumno a igual que el profesor tiene todas las herramientas necesarias para enriquecer el proceso de aprendizaje virtual con la ayuda de esta plataforma. 3.2 WEBCT La plataforma WebCT corresponde al acrónimo de Web Course Tools y es una herramienta de software diseñada para facilitar la docencia a través de Internet, permitiendo la colocación de materiales docentes en un servidor. Estos materiales, en la medida que el 41 profesor así lo decida, estarán accesibles a los alumnos, que pueden así realizar tareas interactivas con los mismos. La plataforma de WebCT permite la comunicación entre los distintos protagonistas del servicio de E-learning como lo son el administrador, los profesores, diseñadores de las asignaturas y los alumnos, junto con toda la cantidad de servicios como la colación de materiales complementarios, y el desarrollo completo de una asignatura en línea. Originalmente WebCT fue publicada en 1997 por el profesor Murray Goldberg, de la British Columbia University. Y en 1999 fue adquirida como producto comercial por la Universal Learning Technology, que en 16la actualidad ofrece la versión 3.6 del producto, bajo la presidencia de profesor Goldberg. 3.2.1 CARACTERISTICAS DE WEBCT Ilustración 11 Plataforma de WebCT (http://fad.uta.cl/dfad/docum/cedm/1-cl-Luis%20Hern%E1ndez%20Sc%E4ferGim%20Ivy.pdf junio 26/05) El anterior gráfico (Ilustración 11) muestra la arquitectura definida de WebCT, en la cual se puede observar importantes componentes como el de cursos interactivos, la administración de roles, la administración de contenido dinámico de aprendizaje, así como un API para la conexión de software desarrollado por terceros. 16 Tomado de: http://eo.ccu.uniovi.es/llamaquique/virtual/recursos/profesor/webCTp/leccion1/quees.htm 42 3.2.2 UN RECORRIDO POR WEBCT 3.2.2.1 PRESENTACION DE BIENVENIDA Ilustración 12 Interfaz de validación de usuarios en WebCT (http://www.uv.es/ticape/disco/webct/pdf/Manual_Usuario_WebCT.pdf junio 26/05) Estas es La interfaz de presentación de WebCT, en donde los usuarios ingresan su nombre de usuario y contraseña para poder acceder a los servicios disponibles en línea del sistema, dado el caso que se olvide la contraseña, la plataforma tiene sus mecanismos para solucionar este tipo de inconvenientes. 43 3.2.2.2 ENTRANDO A WEBCT Ilustración 13 Menú de presentación de WebCT para estudiantes (Adaptado de: http://www.uv.es/ticape/disco/webct/pdf/Manual_Usuario_WebCT.pdf junio 26/05) Aquí se tiene el menú principal de la plataforma, desde el punto de vista estudiante, en donde con solo marcar el link seleccionado se podrá acceder directamente a la actividad deseada y empezar a trabajar en ella. Dentro de las principales funciones de WebCT se encuentra: • Calendario Global: este componente le permite al alumno ver en un solo calendario las actividades programadas y fechas especiales de uno o todos los cursos en los cuales esta inscrito. • Cambio de lenguaje: permite configurar el idioma a la lengua del estudiante. • Marcadores: permiten resaltar actividades y dentro de la plataforma existen dos tipos de marcadores: o Administrador: el estudiante solo los puede ocultar o mostrar. o Estudiante: permite todos los procesos CRUD. • Mapa del curso: índice con los enlaces a todos los componentes del curso en línea. • Ayuda: enlace las paginas de soporte de WebCT. Herramientas de contenido. • • • Programa: herramienta para incorporar y presentar el programa del curso Módulo de contenido del curso: este modulo contiene todas las lecciones y pruebas del curso Glosario: contiene la definición de los términos del curso 44 • • • • Recopilador de Contenido: permite la presentación personalizada de los temas del curso, en donde se tiene la opción de Imprimir, grabar en un archivo o editar los contenidos del curso. CDROM: permite compartir la unidad de CD de la computadora para el manejo de archivos multimedia. Motor de búsqueda: permite la búsqueda de temas, o contenidos dentro de los ítems de un curso. Banco de imágenes: permite la creación de catálogos y diseño de imágenes que se mostrarán en el curso Herramientas de comunicación • • • • • Correo: permite la comunicación entre los diferentes Actores del WebCT Foros de debate Calendario Chat Pizarra: herramienta que permite la creación de dibujos en línea para dar soporte a discusiones y explicaciones. Herramientas de Evaluación • • • Trabajos: herramienta en donde están contenidos todos los trabajos propuestos por un profesor. Exámenes y cuestionarios: herramienta que permite la creación de exámenes con diferentes tipos de respuesta: o Selección múltiple o Respuesta corta. o Falso/verdadero o Calculo o Respuesta larga Auto evaluación: permite al alumno diseñar sus propias pruebas para estudiar la habilidad sobre un tema. Herramientas dirigidas a los estudiantes. • • Progreso: permite ver las partes del curso que han sido visitadas por el estudiante, y el total de páginas visitadas en el modulo de contenido. Se divide en: o Perfil del estudiante. o Distribución de vistas. o Número de páginas de contenido visitadas. Mis calificaciones: permite que el alumno consulte las notas obtenidas en la materia; aquí se pueden ver componentes ajenos a WebCT que el profesor incluya. 45 • • Presentación y trabajos en grupo: permite la creación y publicación de proyectos presentados por más de un estudiante, los estudiantes inscritos en el curso pueden ver las presentaciones en línea. Página del estudiante: permite al estudiante crear una pagina personalizada, donde puede incluir información de interés para el curso. Haciendo un análisis de estos dos grandes productos de E-learning reconocidos a nivel mundial, se puede notar que los servicios ofrecidos son similares en cuanto a funcionalidad, y facilidad de uso pero, conexo a esto, existen factores que no son perceptibles a simple vista para el usuario, pero que son de vital importancia para la organización que tienen cualquiera de estas herramientas, a razon de que son los factores que realmente contribuirán con el objetivo final que es el de enriquecer el proceso de aprendizaje en línea. Una, y quizás la principal ventaja que tienen estas herramientas es la capacidad de operación ínter plataforma, puesto que tanto Blackboard como WebCT son capaces de generar marcos de comunicación basados en tecnología XML para la exportación de datos, y de esta forma poder establecer esquemas de comunicación con otras plataformas de educación virtual. Sin embargo, existen problemas con respecto a la compatibilidad e interpretación de los datos, debido a que por ser estos dos tecnología nuevas, no tiene definido estándares para la construcción de cursos y manejo de contenidos que hagan que la migración de un curso de una plataforma como WebCT sea totalmente transparente a una plataforma como la de Blackboard. La desventaja que presta esta falla, es que compartir información de calidad y elaborada se vuelve algo complicado, y resulta más fácil y económico volver a construir un curso en una plataforma diferente si es el caso, que tratar de hacer la migración desde la plataforma donde se encuentra montado originalmente. Para solucionar este problemas, múltiples empresas e instituciones se ha dedicado a desarrollar en los últimos tres años estándares de E-learning que intentan solucionar este y otros problemas a los que se enfrentan esta tecnología. Otra ventaja que tienen estas herramientas es la gran facilidad que tiene para la integración con aplicaciones, esquemas y diseños HTML desarrollados por terceros, permitiendo de esta forma enriquecer el contenido y la presentación de un curso vía Web. 46 CAPITULO 4 4 DESARROLLO DE LOS COMPONENTES DE E-LEARNING Una vez identificada la tecnología sobre la cual se desarrollaran los componentes, se procedió a identificar con claridad el alcance de cada componente, y los servicios que estos ofrecerían a las aplicaciones que los consumiera; por tratarse de componentes de ELearning se decidió que cada componente debería diferenciarse de cualquier otro tipo de componente en su aspecto funcional y en su alcance en términos de granularidad, así que se partió con la base de que estos componentes ofrecerían servicios completos dentro del contexto y la naturaleza de cada uno de ellos, con el fin que dentro del mundo del software del E-learning, estos componentes sean lo más desacoplados posibles, pero que al mismo tiempo su funcionalidad sea integral. El entorno de desarrollo que se usará será el visual Studio.Net 2003, junto con la versión 1.1 del framework de .net, y el lenguaje de programación seleccionado es C#. Este leguaje se escogió teniendo en cuenta las propiedades que ofrecen ventajas en el desarrollo como es la similitud es la sintaxis con Java y el entorno que brinda el .Net Framework para el desarrollo de aplicaciones Web basadas en este lenguaje. Analizando los recursos limitados con los que contamos como lo es el tiempo, decidimos desarrollar dos componentes de software. El primer componente es un módulo administrativo que prestará los servicios manejo de usuarios, materias, y grupos por cada materia, anexo a esto cada grupo podrá guardar la información de los materiales que son de interés para el grupo, y el segundo componente se encargará de controlar todo lo respectivo a evaluaciones, reportes estadísticos e indicadores de interés para el estudiante y el profesor. 4.1 DESARROLLO DEL PRIMER COMPONENTE El primer componente a desarrollar será el componente administrativo. Como se mencionó anteriormente este es el encargado del manejo de usuarios, materias y grupos dentro de una plataforma de E-Learning. A su vez este componente es el contenedor de toda la información suficiente para prestar los servicios necesarios que requiere una aplicación u otros componentes que en determinado momento necesiten acoplarse con el. 47 4.1.1 IDENTIFICACIÓN DE REQUERIMIENTOS: La especificación formal de requerimientos, se realizo basándose en el estándar de la IEEE, y la plantilla del SRS del RUP, estos documentos, se pueden ver en el anexo A (Especificación De Los Requerimientos De Software). 4.1.2 ESPECIFICACION: En esta etapa del desarrollo se buscó identificar qué posibles componentes se podían generar, y los servicios que publicarían en su interfaz. Para el caso de este componente administrativo se decidió partirlo en dos capas: Capa de acceso a datos: esta capa se encarga de hacer el manejo de toda la parte de datos independiente de la fuente de datos. Capa de Lógica de negocio: esta capa se encarga de modelar la lógica del administrador, y se encarga de implementar los servicios en la interfaz. • • Para definir la funcionalidad del componente se partió del diagrama de SRS y del diagrama de casos de uso, y se decidió agrupar requerimientos tomando como criterio las necesidades de cada usuario del sistema. Acordes a su rol dentro de este. Una vez se identificó esas necesidades se procedió a esquematizarlas en dos grupos diferentes para ir definiendo la funcionalidad de cada componente. La lista de Requerimientos asignados acorde a los tipos de usuario fue la siguiente: Administrador: • Crear usuario • Consultar usuario • Modificar Usuario • Eliminar Usuario • Crear Materia • Crear Grupo • Asignar Profesor • Asignar Alumno • Consultar Materia • Consultar Grupo • Modificar grupo • Eliminar Grupo • Modificar Materia • Eliminar Materia • Cambiar Contraseña. Profesor • Cambiar contraseña. • Consultar los grupos a su cargo. 48 • • Consultar la lista de estudiantes de cada grupo. Ver la información de los alumnos a cargo de el en los diferentes grupos. Alumno • Consulta Materia • Consultar Documentos • Descargar Documentos • Cambiar contraseña. • Consultar los cursos en los que se encuentra inscrito. • Ver la lista de compañeros de grupo. • Consultar la información del profesor del grupo. Una vez definidos los requerimientos que implementara el componente, se decidió que este componente seria el núcleo de nuestra plataforma de E-learning, ya que el es el experto en el manejo de la información, y esta en la capacidad de suministrarla a cualquier componente que se conecte por medio de su interfaz. 4.1.2.1 ARQUITECTURA DEL COMPONENTE: El componente de administración se desarrollo en una arquitectura de dos capas, dicha arquitectura surge de la necesidad de comunicar los componentes en ambientes distribuidos, la arquitectura mas conocida en dichos ambientes es la arquitectura de dos capas, o también llamada Cliente/Servidor, en donde el cliente (usuario de la aplicación) contiene toda la interfaz grafica para la interacción con el sistema, y el servidor de aplicaciones es el encargado de prestar los servicios que solicita el cliente. Como la aplicación final consta de tres capas, a continuación presentaremos algunas ventajas y desventajas de esta solución. Ventajas de una arquitectura de tres capas.17 • • Las llamadas de la interfaz de usuario al servidor de aplicaciones son más flexibles que en una arquitectura de dos capas, a causa de que solo se necesita transferir parámetros. La interfaz del cliente no es requerida para entender o comunicarse con el receptor de los datos, por lo tanto es más fácil hacer una modificación sin tener que cambiar la interfaz del cliente. 17 Tomado de: http://www.janium.com/phpws/index.php?module=documents&JAS_Document_op=downloadFile&JAS_File_id= 1 49 • • • La capa intermedia puede migrar de una manera más fácil a otras plataformas de datos, y su código puede ser reutilizable en otras aplicaciones si se realizó en forma modular. La separación de tres capas hace mucho más fácil la actualización de cada una de ellas, sin que se afecten entre sí. Las estaciones de trabajo son mucho más livianas, y permite que la lógica se concentre solo en el servidor. Desventajas de una arquitectura de tres capas. • • Los ambientes de tres capas incrementan el tráfico en la red, y es necesario que sean más robustos y tolerantes a fallas. Los navegadores no son todos iguales, y en muchos casos las empresas tienen que decidir por un proveedor específico. El esquema de la arquitectura del componente es: Ilustración 14 Arquitectura del Componente de Administración Esta arquitectura modela la capa de reglas del negocio y datos, y posteriormente la aplicación Web proveerá la interfaz para que interactúe con los clientes del sistema. 4.1.2.2 CONTRATO DE USO Para la correcta funcionalidad de este componente, es necesario que sea consumido por aplicaciones desarrolladas sobre el framework de .NET, ya que todo lo que conforma el componente de Administración, fue realizado en C#. 50 4.1.2.3 CONTRATO DE SERVICIOS Aquí están especificados los servicios de la interfaz, y lo necesario para consumir el servicio. Anexo a la documentación de la interfaz del componente, la lista de servicios se encuentra detallada específicamente en el anexo C de este documento, donde se ubica el SDD del componente de administración. 4.1.3 APROVISIONAMIENTO El código de estos componentes está implementado en C#, y se encuentra anexo a este documento en un CD-ROM junto con toda la especificación del componente en el directorio fuentes. 4.1.4 ENSAMBLADO La etapa de ensamblado se realizaron en el capitulo seis de esta investigación con el desarrollo del prototipo funcional. 4.1.5 PRUEBAS Las pruebas se realizaron con el formato estándar de la IEEE anexo al documento, con el fin de encontrar errores en la funcionalidad del componente. 4.1.6 DESPLIEGUE Para efectos de esta investigación, la aplicación no será implementada dentro de un ambiente real, sin embargo, serán cargados algunos grupos y se hará una demostración de su funcionamiento dentro del entorno de la Pontificia Universidad Javeriana. 4.2 DESARROLLO DEL SEGUNDO COMPONENTE El segundo componente que se desarrolló fue el de evaluación, este componente es el encargado de mantener un repositorio de preguntas, y con base a este construir exámenes, permitir que los estudiantes puedan presentar las evaluaciones, calificarlos, y generar reportes. 4.2.1 IDENTIFICACION DE REQUERIMIENTOS Para la identificación de los requerimientos en este componente, se tomó como base el estudio realizado a las plataformas BlackBoard y WebCT, teniendo en cuenta los resultados que se obtuvieron, se estudiaron las necesidades que suplen dichas plataformas en el campo de evaluación. Además, se realizaron estudios de herramientas de evaluación de libre distribución, la mayoría de ellas desarrolladas por universidades de Canadá, las cuales ayudaron a especificar más requerimientos que debían ser contemplados en este componente. Claro está que además de lo anterior, los requerimientos aumentaron según la especificación de requerimientos general realizada a principio de esta investigación, 51 teniendo en cuenta los aspectos que debe tener una herramienta para suplir las necesidades a nivel nacional en Colombia. De acuerdo a lo mencionado anteriormente, los requerimientos que resultaron del análisis fueron los siguientes: Profesores • Crear preguntas. • Consultar preguntas • Eliminar preguntas • Modificar preguntas • Creación de temas • Eliminación de temas • Actualización de temas • Consulta de temas • Creación de exámenes • Eliminación de exámenes • Modificación de exámenes • Inscripción de usuarios a un examen • Eliminar un usuario de un examen Estudiantes • Consultar los exámenes en los que se encuentra inscrito • Presentación de examen • Consulta de notas La especificación formal de requerimientos, se realizo basándonos en el estándar de la IEEE, y la plantilla del SRS del RUP, estos documentos, se pueden ver en el anexo A. 4.2.2 ESPECIFICACION El componente fue desarrollado mediante una arquitectura lógica de tres (3) las cuales son: • • • Base de datos: Se realizó un diseño de la base de datos, teniendo en cuenta los requerimientos a suplir por parte del componente. Acceso a datos: Esta capa se encarga de acceder a los datos almacenados en la base de datos, ofreciendo servicios al componente que le permiten obtener información, así como actualizarla, eliminarla o crear nueva información. Lógica de negocio: Esta capa es la que se encarga de realizar las operaciones que conciernen a lo que realiza el componente de evaluación. Solicita servicios al componente de acceso a datos, para de esta manera poder cumplir sus tareas del negocio. 52 4.2.2.1 ARQUITECTURA DEL COMPONENTE La arquitectura que fue tomada como base para el desarrollo de este componente es igual a la especificada en el componente de administración, por tal razón no se entrara en el detalle de esta nuevamente. Sin embargo el lector puede consultar el detalle de esta arquitectura en el anexo D que contiene la especificación del componente de evaluación. Ilustración 15 Arquitectura Componente de Evaluación 4.2.2.2 CONTRATO DE USO Para la correcta funcionalidad de este componente, es necesario que sea consumido por aplicaciones desarrolladas sobre el framework de .NET, ya que los componentes anteriormente mencionados que conforman el componente de evaluación, fueron realizados en C#. 4.2.2.3 CONTRATO DE SERVICIOS Aquí se especifican los servicios de la interfaz y lo necesario para que consumir el servicio. El lector puede consultar el detalle de esta arquitectura en el Anexo D que contiene la especificación del componente de evaluación. 4.2.3 APROVISIONAMIENTO Este componente fue desarrollado en su totalidad por medio de C#, debido a su similitud con Java, lenguaje con el cual se tiene familiaridad debido a los proyectos desarrollados a través de la carrera. La base de datos fue realizada en SQL Server, en donde se realizaron procedimientos almacenados que implementan parte de la lógica de negocio, para de esta forma separar aún 53 más la aplicación, dejando una mantenibilidad bastante grande y fácil del código, puesto que si en algún momento se cambia algún proceso del negocio, sólo se ve afectado el procedimiento, sin necesidad de cambiar el código del componente. En el componente se tiene una interfaz que provee servicios a las aplicaciones que los consuman, servicios que vienen documentados como se puede apreciar en los anexos C y D, además de esto, se implementaron WebServices que ofrecen los servicios del componente. Aunque estos últimos no son consumidos por la aplicación, se demuestra con esto la potencialidad de la herramienta en cuanto a conectividad y consumo de sus servicios. El código de este componente está implementado en C#, y se encuentra anexo a este documento en un CD-ROM junto con toda la especificación del componente. 4.2.4 ENSAMBLADO: La etapa de ensamblado se realizará en el capítulo 6 de esta investigación junto con el componente administrativo con el desarrollo del prototipo funcional. 4.2.5 PRUEBAS: Las pruebas fueron realizadas el día sábado 28 de mayo del año en curso en las instalaciones de la facultad de ingeniería de la Pontificia Universidad Javeriana, y contó con la participación de varios estudiantes de la misma, cuya lista se puede ver en el documento de pruebas (anexo G) Las pruebas específicas del componente consistieron en realizar procesos CRUD sobre él, procesos que, en su gran mayoría, están disponibles para el rol Profesor, en razón de que este es el encargado de crear preguntas, respuestas, y exámenes, los cuales van a ser presentados posteriormente por los estudiantes. En las pruebas se crearon exámenes por medio del rol profesor, y los participantes de las pruebas fueron los encargados de conectarse a la aplicación y presentar los exámenes creados. La especificación de estas pruebas, así como de los resultados, se encuentran en el documento de pruebas, anexo a este documento. El lector puede consultar el detalle del plan de pruebas en el anexo G. 54 CAPITULO 5 5 DESARROLLO DEL PROTOTIPO FUNCIONAL El desarrollo de este prototipo funcional, tuvo como objetivo completar las fases de ensamblado y pruebas de los componentes desarrollados, demostrando así la correcta funcionalidad de los mismos, y el potencial que estos tienen. El entorno de desarrollo usado para este prototipo fue el que provee Visual Studio .NET 2003, además del framework de .NET en su versión 1.1. La elección de esta plataforma de desarrollo obedece al estudio realizado durante la investigación entre las plataformas de J2EE y .NET, resultados que se pueden apreciar en el documento anexo H (selección de herramienta de desarrollo). Teniendo en cuenta los servicios ofrecidos por los componentes, así como los roles que debe soportar el sistema, se realizaron dos aplicaciones separadas, una para el componente administrativo y otra para el componente de evaluación, las cuales fueron desarrolladas en paralelo por los investigadores, teniendo en cuenta el límite de tiempo con que se contaba. Estas dos aplicaciones resultantes, después de pruebas internas para probar su correcta funcionalidad, fueron unidas en una gran aplicación que conforma el prototipo funcional de “LearnCity”, nombre con el cual fue bautizada la plataforma de e-learning desarrollada. Esta unión de las dos aplicaciones en una sola, obedece a mantenibilidad de la sesión del usuario, puesto que la única razón de tenerlas divididas era el desarrollo en paralelo, y las pruebas internas realizadas por cada investigador. De esta manera se unieron ambas aplicaciones, cuyo resultado se describe a continuación: • • • Se tiene una pantalla de Ingreso de Usuarios, en la cual cada usuario puede ingresar su Login y Password para el ingreso al sistema. Posteriormente se llega a una pantalla en la que se puede seleccionar el rol con el cual se desea ingresar al sistema. Esto teniendo en cuenta que en la plataforma de elearning “LearnCity”, un usuario puede tener asignados varios roles en la misma aplicación, permitiéndole de esta manera ser profesor y/o estudiante y/o administrador de la plataforma. A partir de la selección del rol, la aplicación se divide en las pantallas que le ofrecen los servicios disponibles para dicho rol seleccionado, permitiendo un control y seguimiento de las tareas realizadas por el usuario en la plataforma. Además de la investigación, la implementación de resultados de la investigación, y demás factores que influyeron en el desarrollo del prototipo, se contó con la colaboración de una artista plástica de la Universidad Nacional de Colombia, la cual colaboró bastante en la 55 asignación de colores y la distribución de los objetos en las interfaces gráficas, para de esta manera hacer unas interfaces más agradables a la vista del usuario. Es importante recalcar que esta colaboración, aunque fue de gran ayuda y aporte, no fue completa, debido al poco tiempo con que se contó para esto. 5.1 DESARROLLO DEL PROTOTIPO FUNCIONAL El prototipo funcional, se construirá haciendo uso de los componentes, así que esta consumirá el componente de evaluación y administración respectivamente. Ilustración 16 Arquitectura de LearnCity La arquitectura de esta aplicación se componen de: Descripción de la arquitectura. • LearnCity: Se refiere a lo que es en sí la aplicación, ella consume los componentes a través de su interfaz y los estructura para darle sentido dentro de un contexto académico. A nivel de código, hace referencia a lo que conforma toda la aplicación Web. • Componente Administración: Este componente es el contenedor de toda la información y la lógica del negocio, el es el encargado de contener y controlar a todos los usuarios grupos, materias, Documentos etc., y relacionarlos entre si de una forma consistente para que sean consumidos a través de su interfaz. • Componente Evaluación: este componente es el contenedor de un gran repositorio de preguntas, que puede ser usado en cualquier momento para la creación de exámenes que se podrán ejecutar desde la aplicación de LearnCity 56 Si el lector esta interesado en conocer en detalle las especificaciones de cada uno de los componentes de software de la aplicación, podrá encontrar información en el SDD de cada componente en el anexo C y D. El valor agregado que se da con esta aplicación es que se demuestra que los componentes son funcionales y operan correctamente en un ambiente Web, la aplicación consumió los servicios de cada componente, y los integró por medio de su interfaz grafica, dándole al usuario final la idea de una sola herramienta consistente y funcional, sin embargo observando a nivel arquitectónico es posible darse cuenta que existen dos componentes grandes que hacen el papel de pilares de la plataforma. Otra de las características de este prototipo es la apariencia, puesto que ésta se puede reconfigurar de una manera muy fácil, modificando el archivo CSS (estilo de presentación), la pagina ASPX, y la carpeta de imágenes. Todo esto para que la herramienta quede personalizada con los colores y el logotipo de la institución que la adquiera, y siempre con la seguridad de que no se dañara el código de las reglas del negocio que soporta el prototipo. Una vez instalada la aplicación dentro de un ambiente de producción, su arquitectura física tendrá las siguientes características: Ilustración 17 Arquitectura Física de LearnCity (Adaptado de: http://www.microsoft.com/spanish/msdn/arquitectura/das/distapp.asp mayo 04/05) Cliente. Es el usuario final de la Aplicación, y por medio de un Browser (Internet Explorer 5.5, Netscape 7, Mozila), podrá acceder a la aplicación de LearnCity. El estilo de las fuentes y su apariencia, se ve correctamente cuando se accede a la aplicación desde el Web Browser Internet Explorer v 5.5 o superior, sin embargo en otros 57 navegadores como Mozila de Linux la apariencia y el estilo varia, al no asimilar los estilos de los controles de la aplicación. Servidor Web. Es el encargado de procesar todos los requerimientos del usuario, aquí también esta contenida y administrada toda la interfaz del usuario. Aplicación Web. La aplicación de servidor procesa toda la lógica de negocio que esta dividida en dos componentes. • • Administración: LearnCity provee al administrador un manejo fácil de la aplicación. Aquí se proveen los servicios para la administración de materias, grupos, usuarios y perfiles. Evaluación: LearnCity provee los servicios para la ejecución y administración de exámenes en línea basándose en un robusto y consistente repositorio de preguntas que puede ser alimentado por los usuarios con el perfil de “profesor” en el sistema. Almacenamiento. La capa de datos de LearnCity es controlada por cada componente que se integre a ella, sin embargo, los componentes actuales con los que funciona esta versión preliminar usan el motor de bases de datos de SQLServer. Plan de Pruebas. Al realizar y ejecutar el plan de pruebas del prototipo se verifico que el funcionamiento de los componentes era el esperado, y se identificaron algunas fallas que posteriormente fueron corregidas, comprobando así, que los dos componentes están operando correctamente, y son una excelente opción para que las instituciones que estén interesadas en el e-learning usen este prototipo funcional, o la librería de componentes desarrollada para la creación de sus propias plataformas. Con esta etapa se culmina el ensamblado de cada componente y su correcto funcionamiento dentro del ambiente de pruebas. Cabe aclarar que cualquier componente anexado a esta plataforma solo necesita referenciar el conjunto de librerías del nuevo componente al proyecto y posteriormente desde la aplicación consumir los servicios. Si los nuevos componentes necesitan información de algunos de los ya ensamblados, la mejor forma para realizar dicha tarea es tratar de convertir los parámetros de respuesta de un componente, en los parámetros de entrada del otro, con eso se conserva el encapsulamiento, y no se crean dependencias funcionales entre ellos. 58 6 CONCLUSIONES • Los componentes de software para e-learning implementados en esta investigación, contribuyen de una manera efectiva a implementar aplicaciones de e-learning a un menor costo, brindando la posibilidad de que más centros de educación y PYMES puedan acceder a esta tecnología de una manera más cómoda y de esta forma promover y difundir el conocimiento. • A través del trabajo realizado en esta investigación, y especialmente en el levantamiento de requerimientos, se pudo observar que las organizaciones que invierten dinero en tecnologías de e-learning, terminan invirtiendo más tiempo y dinero a la herramienta de software, que al contenido propio del curso, dejando muchas veces el contenido de los cursos con materiales de poca calidad que empobrecen el proceso de aprendizaje en línea. • Las ventajas ofrecidas por el e-learning y las tecnologías de telecomunicaciones han brindado a los centros de educación superior nuevas oportunidades de negocio, al poder ofrecer programas de entrenamiento académico de nivel superior como maestrías, especializaciones, etc., de forma no presencial. • Las plataformas de e-learning tienen mucho campo de aplicación en sector empresarial, así como en el sector educativo, brindándoles a todos ellos ventajas en sus procesos de educación. • Los componentes de software son una gran ventaja en el desarrollo de software, permitiendo no sólo integrarlos para formar un gran sistema, sino ser usados de manera independiente, ofreciendo de esta manera una solución mucho más portable. • Los avances tecnológicos abren muchas puertas para el desarrollo de nuevos sistemas, y/o una mejora, o nuevas formas, en la comunicación de otros. El elearning está avanzando en todos los aspectos, invadiendo campos como el de los dispositivos móviles, tales como PDA, celulares y demás dispositivos portables. 59 7 CONTINUIDAD DEL TRABAJO DE GRADO • Los componentes desarrollados tienen su propia capa de acceso a datos modelada para entablar conexión con bases de datos relacionales, sin embargo existe la posibilidad de conectarse con fuentes de datos diferentes como XML, bases de datos no relacionales, etc. y en base a la especificación y documentación de los componentes, se puede agregar a la capa de datos de los componentes dicho esquema de conexión, para ampliar la portabilidad y funcionalidad de los mismos. • Una plataforma de E-learning puede ofrecer múltiples servicios a sus usuarios, y cada servicio, o conjunto de servicios pueden ser potencialmente nuevos componentes, se desarrollaron solo dos de estos, pero quedaron identificados componentes que en base a los servicios ofrecidos por los ya desarrollados, pueden enriquecer la comunicación entre los usuarios de la plataforma como lo son: o Chat o Agenda o Anuncios o Foros o Bibliotecas • Las nuevas tecnologías nos brindan más ventajas para el acceso a la información. Se podría implementar un acceso a la plataforma desde dispositivos móviles, tales como celulares, PDA y demás, entrando así a una nueva rama de la educación virtual que está emergiendo, llamada m-learning. • Se puede realizar una investigación más a fondo en los temas de Human-Computer Interaction (HCI) y Software Engineering Ergonomics, la cual puede realizarse, de manera opcional, en un grupo multidisciplinario integrado por diseñadores e ingenieros y estudiantes, para de esta manera realizar interfaces más amigables para el usuario, e incentivar el acceso a la plataforma. • Se podría realizar una investigación más enfocada hacia el contenido de la educación virtual, permitiendo que la plataforma aumente en cuanto al contenido de su información, entregando información de mayor calidad al usuario. • La multimedia es un campo de gran acción en el mundo del e-learning, ya que su propiedad de interacción con el usuario puede proveer grandes ventajas en modelos de educación y contenidos de la misma. Se podría realizar un componente que permitiera contenidos multimedia en la plataforma, para de esta manera hacerla más llamativa al usuario final. 60 • Teniendo en cuenta que la plataforma puede ser usada por instituciones, grandes y/o pequeñas, ya sean colegios, universidades o PYMES, se debe tener en cuenta que estas instituciones pueden tener otros sistemas que permitan el manejo y manipulación de la información para intereses propios. Se podría realizar un componente que permitiera la integración de la plataforma de e-learning, con los sistemas internos de la empresa, para de esta manera hacer una solución más atractiva para las instituciones que la puedan adquirir. 61 GLOSARIO A • • • Acoplamiento: Se refiere al grado en el cual cada módulo de un programa depende de otro módulo. Ancho De Banda: Término usado para describir la cantidad de datos que pueden ser transmitidos a través de una conexión de red. La capacidad de transmisión de un medio dado, en términos de cantidad de datos que el medio puede transmitir en determinada cantidad de tiempo. Entre más grande sea el ancho de banda, más rápida será la rata (frecuencia) de transmisión de datos. ASCII: (American Standard Code for Information Interchange) Es un estándar para la representación digital de letras, números, y códigos de control, entendido por la mayoría computadores. B • BIT: Es la unidad más pequeña de información con la que un computador puede trabajar. Cada bit es o uno (1) ó cero (0). Un conjunto de ocho (8) bits conforman un (1) byte. C • • • • Colombia Aprende: Portal de educación virtual lanzado por Ministerio De Educación De Colombia. (http://www.colombiaaprende.edu.co) Contenido Personalizable: Contenido que puede ser cambiado por el usuario a su gusto. Compilación: Proceso de transformar un programa, realizado por un desarrollador, de lenguaje común a lenguaje entendible para la máquina. Computación Distribuida: Consiste en una colección de computadores anónimos unidos por una red, y equipados con software distribuido. El software distribuido permite a los computadores coordinar sus actividades y compartir recursos del sistema (hardware, software y datos)18. D • 18 Digitalizar: Representar información en términos de bits, los cuales pueden ser entendidos por el computador. George Coulouris. “Distributed Systems: Concepts and design”. 62 E • • • Ejecutable: Programa que se puede correr en una máquina (computador). Entorno: Escenario en el cual se puede ejecutar un software. Esto involucra tanto la parte de hardware, así como la plataforma sobre la cual se ejecuta (Sistema Operativo), y otros factores de los actores que interactúan en él. Extranet: Un tipo de sitio de Internet, el cual está cerrado a la comunidad mediante protección por medio de contraseñas y/o firewalls. Típicamente son sitios ofrecidos por negocios para sus proveedores y clientes claves. F • • Framework: Un esqueleto que provee los componentes esenciales de una aplicación. Los frameworks son buenos para proveer un punto de inicio para la creación de aplicaciones, así como para definir la funcionalidad mínima de una aplicación. Firewall: Sistema de seguridad, usualmente para computadores conectados a una red, el cual controla el acceso hacia y desde la red. G • Granularidad: La extensión en la que un sistema contiene componentes separados. Entre más componentes tenga un sistema, o entre más granularidad, es más flexible. I • • • 19 Ingeniería De Software: La construcción de software de calidad con un presupuesto limitado, con un límite de tiempo dado en un contexto de cambio constante.19 Instancia: Un escenario específico de una clase. (Por ejemplo: Una clase puede ser Animal, y una instancia de la clase animal puede ser Perro). Internet: Es una gran red que conecta muchas pequeñas redes de computadores, y permite a todos los computadores el intercambio de información entre ellos. Para cumplir esto, todos los computadores en Internet deben usar un conjunto de reglas comunes para comunicación. Dichas reglas son llamadas protocolos, y el Internet usa un conjunto de protocolos llamados TCP/IP (Transmisión Control Protocol/Internet Protocol). Muchas personas asocian el WWW (World Wide Web) con el Internet. De hecho, Internet es como la autopista, y el WWW es como un camión que usa dicha autopista para ir de un lugar a otro. Bruegge y Dutoit. “Object-Oriented Software Engineering”. 63 • Intranet: Una red privada interna basada en TCP/IP, usualmente para la información interna de una organización. L • • LAN: (Local Area Network) Una transmisión privada que interconecta computadores dentro de una edificación, o entre edificaciones, con el propósito de intercambiar información. Lenguaje: Vocabulario y un conjunto de reglas gramaticales para ordenar al computador a realizar tareas específicas. M • • Macromedia: Empresa fundada en 1984 dedicada a desarrollo de software especializado para multimedia. Multimedia: El uso de video, audio, texto e interacción con el usuario que puede proveer un software. O • Objeto: Una instancia de una clase. P • • • Polimorfismo: Es la habilidad de los objetos de diferentes clases que están relacionados mediante la herencia para responder en forma diferente al mismo mensaje. El mismo mensaje que se envía a muchos tipos de objetos diferentes toma “muchas formas”, y de ahí viene el término polimorfismo. Programación: elaborar programas (serie ordenada de operaciones) para la resolución de problemas mediante ordenadores PYMES: Pequeñas y medianas empresas. R • Red De Comunicaciones: Un grupo de computadores que se encuentran conectados, y disponibles para compartir información; una red puede ser “punto a punto”, o puede ser configurada como una arquitectura Cliente – Servidor. En una arquitectura Cliente – Servidor se tiene una máquina específica (computador) en la cual las aplicaciones, o una base de datos residen. Las máquinas de los clientes tienen acceso al servidor para obtener información, o para ejecutar una aplicación. 64 • Robustez: La capacidad que tiene una aplicación de funcionar y responder correctamente ante situaciones y ambientes no ideales. S • • • • Servidor: Es un programa que recibe una solicitud, realiza el servicio requerido y devuelve los resultados en forma de una respuesta a otra aplicación denominada cliente que fue la que solicitó el servicio. Sistema Distribuido: Conjunto de computadores independientes que parece ante los usuarios una única y sola plataforma o computadora. Software: Una serie de instrucciones que le dicen al computador qué tiene que hacer. Standalone: Aplicaciones (software) que no necesita de una conexión a red, o de alguna comunicación con otros programas. T • Transacción: El término transacción describe una secuencia de operaciones con uno o más recursos (por ejemplo una base de datos) que transforman su estado actual en un nuevo estado de consistencia basándose en los principios de atomicidad, consistencia y durabilidad. U • • UML: (Unified Modeling Language) Estándar para modelar (diseñar) el software. UNAD: Universidad Nacional Abierta y a Distancia. V • Virtual: Ambiente generado por el computador. 65 BIBLIOGRAFIA Pedro Javier Espeso Martínez. Diseño Componentes Software Tiempo Real [Documento en formato pdf], 1 ed. publicada en el 2002, Visitado [04 may. 05] disponible en: http://ccc.inaoep.mx/~josemcr/TECNOLOGIA%20ORIENTADA%20A%20OBJE TOS/Proyecto-pem.pdf Blackboard Learning System MT. [Documento html], 1 ed. Visitado [02 jul, 05] Disponible en: http://uvirtual.javeriana.edu.co/bin/index.pl eMultimedios.com “Creadores de sueños en Internet”. [Documento html], 1 ed. Visitado [02 jul, 2005] Disponible en: http://www.emultimedios.com Colombia Aprende. [Documento html], 1 ed. Visitado [02 jul, 2005] Disponible en: http://www.colombiaaprende.edu.co Jonás A. Montilva C. Desarrollo de software basado en componentes [Presentación PowerPoint], 1 ed, publicada en el 2004, Visitado [04 may. 05] Disponible en: http://ulaweb.adm.ula.ve/DSIA/presentaciones/2a%20Charla%20DSIA%20Compon entes.ppt Geoffrey Sparks, Sparx Systems, Australia. El modelo de componentes [Documento en formato pdf], 1ed. Visitado [04 may. 05] Disponible en: http://www.sparxsystems.cl/WhitePapers/El_Modelo_de_Componentes.pdf Cisco System. Cisco E-Learning [Documento html] 1 ed. publicado [13 abril 2004], Visitado [04 may. 05] disponible en: http://www.cisco.com/global/co/ee/el/index.shtml Nicolás Hellers. El Boom del e-Learning [Documento html] 1 ed. Publicado [22 abril 2002], Visitado [04 may. 05] disponible en: http://www.emagister.com/f_artic.cfm?next_page=form&id_artic=858 Christian Van Der Henst S. E-Learning [Documento en formato PDF], 1 ed. Publicado [16 octubre de 2002], Visitado [04 may. 05] disponible en: http://www.maestrosdelweb.com/editorial/pdf/e-learn.pdf ColegioVirtual.Org. Todo lo que su empresa necesita en E-Learning [Documento en formato html], 1 ed. Publicado [2003], Visitado [04 may. 05] disponible en: 66 http://www.colegiovirtual.org/empresa_page.html WebCT. ¿Que es el WebCT? [Documento en formato html], 1 ed. Publicado [febrero de 2002], Visitado [04 may. 05] disponible en: http://eo.ccu.uniovi.es/llamaquique/virtual/recursos/profesor/webCTp/leccion1/quee s.htm Luis Eduardo Hernández Schäfer. Estado actual y futuro de las plataformas de ELearning [Documento en formato html]. 1 ed. Visitado [04 may. 05] disponible en: http://fad.uta.cl/dfad/docum/cedm/1-cl-Luis%20Hern%E1ndez%20Sc%E4ferGim%20Ivy.pdf Sergio Cubero. Manual de WebCT para el estudiante [Documento en formato pdf], versión 3.8. Visitado [04 may. 05] disponible en: http://www.uv.es/ticape/disco/webct/pdf/Manual_Usuario_WebCT.pdf Jorge Serrano Pérez. .Net Framework, uno para todos, y todos para uno [Documento en formato html].1 ed. Visitado [04 may. 05] disponible en: http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art65.asp Microsoft. Desarrollador 5 estrellas Capitulo 1 el framework de .Net versión 1.1 [Documento en formato html] 1 ed. Visitado [04 may. 05] disponible en: http://www.microsoft.com/spanish/msdn/comunidad/dce/default.asp Microsoft. Programa de entrenamiento Académico “Programming with the Microsoft.Net framework” workbook1 2349B Janium Technology: Ideas transformadas en tecnología. [Documento html], 1 ed. Visitado [05 nov, 2004] Disponible en: http://www.janium.com/phpws/index.php?module=documents&JAS_Document_op =downloadFile&JAS_File_id=1 Sun Micro System. Java 2 Platform, Enterprise Edition (J2EE) Overview [Documento en formato html] 1 ed. Visitado [04 May 4, 2005] disponible en: http://java.sun.com/j2ee/overview.html Sun Micro System. Platform Services [Documento en formato html] 1 ed. Visitado [04 May 4, 2005] Disponible en : http://java.sun.com/j2ee/setstandard.html Sun Micro System. Enterprise Application Model [Documento en formato html] 1 ed. Visitado [04 May 4, 2005] disponible en http://java.sun.com/j2ee/appmodel.html 67 Oracle University – eLearning. [Documento html] 1ed. Visitado [02 oct, 2004] Disponible en: http://education.oracle.com/latinamerica/elearning/ Heineman, George. Councill, William. “Component Based Software Engineering” Addison Wesley 2001. 818p. Sun Educational Services. “Developing applications for the J2EE platform” July 2003 cap 1-2 Styperski, Clemens. “Component software = Beyond object oriented programming” Addison-Wesley Edition. 2002 589p Tom Archer, Andrew Whitechapel “Inside C#”, Microsoft second Edition, 2 ed. Microsoft Press. 68