UNIVERSIDAD DE PAMPLONA FACULTAD DE INGENIERIAS Y ARQUITECTURA DEPARTAMENTO DE INGENIERIA ELECTRONICA, ELECTRICA, TELECOMUNICACIONES Y SISTEMAS TRABAJO DE GRADO PRESENTADO PARA OPTAR POR EL TITULO DE INGENIERO DE SISTEMAS TITULO: DISEÑO E IMPLEMENTACION DE UN SISTEMA COLABORATIVO DE MENSAJERIA ELECTRONICA PARA LA UNIVERSIDAD DE PAMPLONA AUTOR: JUAN CARLOS ROMAN PEREZ DIRECTORA: Msc. LUZ MARINA SANTOS JAIMES PAMPLONA, COLOMBIA MARZO, 2006 DISEÑO E IMPLEMENTACION DE UN SISTEMA COLABORATIVO DE MENSAJERIA ELECTRONICA PARA LA UNIVERSIDAD DE PAMPLONA ABSTRACT This document shows the development of a collaborative system for electronic messaging (CSEM). The CSEM is an application client/server, where the client program makes a request of connection to the server of the system. The program server receives the request and sends the response to the client. After of the connection the client can access to the services: messaging, send of announcements and transference of files. The server can process many requests of services (many clients) to same time. A collaborative system is a system based in computers that support to a group of people involved in a common task (goal) and that it provides an interface to an environment shared. The CSEM proposed hear permits to the users a set of organizational strategies, the which joint with the technological tools that the organization provides, search to maximize the results and to minimize the loss of time and of information (productivity and performance), communication between the group. It facilitating the process of informal RESUMEN En este documento se muestra el desarrollo de un sistema colaborativo para mensajería electrónica (SCME). El SCME es una aplicación cliente/servidor, donde el programa cliente realiza una solicitud de conexión al servidor del sistema, el programa servidor recibe la solicitud y envía respuesta de conexión al cliente. Luego de la conexión el cliente puede acceder a los servicios de mensajería, envío de anuncios y transferencia de archivos. El servidor puede procesar múltiples peticiones de servicios (múltiples clientes) al mismo tiempo. Un sistema colaborativo es un sistema basado en computadoras que soportan a un grupo de personas involucradas en una tarea común (u objetivo) y que proveen una interfaz a un ambiente compartido. El SCME aquí propuesto permite a los usuarios un conjunto de estrategias organizacionales, las cuales en conjunto con las herramientas tecnológicas que provea la organización, buscan maximizar los resultados y minimizar la pérdida de tiempo y de información (productividad y funcionalidad), facilitando los procesos de comunicación informal entre el grupo. LISTA DE FIGURAS Figura 1 Servicios que ofrecen las herramientas para el Trabajo Colaborativo ....4 Figura 2 Interacción entre herramientas para le trabajo en grupo ........................11 Figura 3 Interfaz grafica del BSCW.......................................................................13 Figura 4 Secuencia de una aplicación bajo el lenguaje Java................................22 Figura 5 Interacción de java con la Red................................................................24 Figura 6 Elementos de la Plataforma Java ...........................................................25 Figura 7 Direccionamiento de Memoria ................................................................26 Figura 8 Petición automática de Servicios ............................................................27 Figura 9 Componentes necesarios para la Plataforma Java ................................28 Figura 10 Representación de la conexión cliente servidor....................................32 Figura 11 Interacción de los procesos en cada nivel ............................................36 Figura 12 Segmentación de aplicaciones. ............................................................39 Figura 13 Ciclo de vida de un applets...................................................................44 Figura 14 Conexión punto a punto, en una arquitectura Cliente / Servidor...........48 Figura 15 Conexión multipunto, en una arquitectura Cliente / Servidor ................49 Figura 16 Actividad de la las Paginas JSP ...........................................................52 Figura 17 Diagrama de casos de uso ...................................................................58 Figura 18 Diagrama de secuencia para el envío de archivos ...............................65 Figura 19 Diagrama de secuencia para la recepción de archivos.........................66 Figura 20 diagrama de secuencia para el envío de un anuncio............................67 Figura 21 diagrama de secuencia donde se ilustra la recepción de un anuncio...68 Figura 22 Diagrama de secuencia para enviar un mensaje. (Chat) ......................69 Figura 23 Diagrama de secuencia para recibir un mensaje..................................70 Figura 24 Inicio del SCME ....................................................................................72 Figura 25 Árbol de comunidades y usuarios. ........................................................73 Figura 26 Envío de Archivo...................................................................................74 Figura 27 Envío de Anuncio..................................................................................75 Figura 28 Interfaz para enviar el anuncio..............................................................75 Figura 29 Ventana de recepción del anuncio........................................................76 Figura 30 Envío de mensajes ...............................................................................77 Figura 31 Muestra cuando un usuario contesta un mensaje ................................78 Figura 32 Conversación Mantenida por dos usuarios...........................................78 INDICE Tema Pág. INTRODUCCIÓN 1 TRABAJO COOPERATIVO .............................................................................1 1.1 DEFINICIÓN..................................................................................................1 1.2 VENTAJAS DE LAS HERRAMIENTAS PARA EL TRABAJO EN GRUPO. ......................6 1.3 RAZONES PARA MOVER UNA ORGANIZACIÓN A GROUPWARE. ............................8 1.4 TIPOS DE GROUPWARE .................................................................................9 1.5 PRINCIPALES SCME................................................................................9 1.5.1 CSCL: ComputerSupported Collaborative Learning...............................9 1.5.2 El BSCW ..............................................................................................12 1.5.3 NetMeeting...........................................................................................14 1.5.4 Plataforma Virtual WebCT. ..................................................................16 1.5.5 LOTUS NOTES....................................................................................17 1.5.6 NUEVO SOFTWARE PARA EL OPENOFFICE GROUPWARE. .........18 1.5.7 OTROS SCME. ....................................................................................19 2 TECNOLOGÍA Y PLATAFORMA PARA EL DESARROLLO DEL SCME ....21 2.1 PLATAFORMA JAVA.....................................................................................21 2.1.1 Definición. ............................................................................................21 2.1.2 Características .....................................................................................22 2.2 MÁQUINA VIRTUAL .....................................................................................29 2.2.1 Definición. ............................................................................................29 2.2.2 Características .....................................................................................29 2.3 ARQUITECTURA CLIENTE / SERVIDOR...........................................................30 2.3.1 Antecedentes. ......................................................................................30 2.3.2 Definición. ............................................................................................30 2.3.3 Características .....................................................................................33 2.3.4 Componentes esenciales de una infraestructura Cliente/Servidor.......33 2.3.4.1 Plataforma Operativa. ...................................................................33 2.3.4.2 Entorno de desarrollo de aplicaciones. .........................................34 2.3.4.3 Gestión de Sistemas.....................................................................34 2.3.4.4 Características funcionales. ..........................................................34 2.3.5 Características lógicas. ........................................................................37 2.3.6 Características. ....................................................................................37 2.3.7 Segmentación de Aplicaciones. ...........................................................39 2.4 APPLETS ...................................................................................................39 2.4.1 Definición. ............................................................................................39 2.4.2 Características .....................................................................................40 2.4.3 Consideraciones sobre la seguridad en los applets. ............................41 2.4.4 Ciclo de vida de un applet:...................................................................43 2.5 SOCKET ....................................................................................................44 2.5.1 Definición. ............................................................................................44 2.5.2 Pasos de la comunicación vía Sockets. ...............................................46 2.5.3 Modelo de Comunicaciones de los Sockets con Java (Simple) ...........48 2.5.4 Modelo de Comunicaciones de los Sockets con Java (Concurrente) ..49 2.5.5 Tipos de Sockets..................................................................................50 2.6 JAVA SERVER PAGES .................................................................................51 2.6.1 Definición. ............................................................................................51 2.7 TOMCAT ....................................................................................................53 2.7.1 Definición. ............................................................................................53 2.7.2 Antecedentes. ......................................................................................54 2.7.3 Servlets. ...............................................................................................54 3 SISTEMA COLABORATIVO DE MENSAJERIA ELECTRONICA PARA EL DESARROLLO DE PROYECTOS SOFTWARE ...................................................56 4 3.1 DEFINICIÓN:...............................................................................................56 3.2 ESPECIFICACIONES DEL SISTEMA: ................................................................56 3.3 DIAGRAMA DE CASOS DE USO .....................................................................58 3.4 ESCENARIOS DE ESPECIFICACIÓN DE LOS CASOS DE USO ...............................59 3.5 MODELADO DE INTERACCIÓN ENTRE OBJETOS. (DIAGRAMAS DE SECUENCIA)...64 SCME (SISTEMA COLABORATIVO DE MENSAJERIA ELECTRÓNICA) ...71 4.1 DESCRIPCIÓN ............................................................................................71 ANALISIS DE LEGALIDAD.............................................................................87 CONCLUSIONES ...........................................................................................88 RECOMENDACIONES...................................................................................89 INTRODUCCIÓN El desarrollo de aplicaciones software bajo el lenguaje JAVA es una labor que viene desempeñando Plataforma Siglo XXI en la Universidad de Pamplona por parte de los profesionales a cargo. En Colombia existen al menos 850 Empresas desarrolladoras de Software tributando ante la DIAN y es un mercado que va en constante crecimiento, [MINI] se piensa que son muchas las empresas que faltan por surgir e incluso por registrarse ante las entidades de industria y comercio del país. El conjunto de patrones determinantes en el desarrollo de proyectos de software es una tarea compleja, debido a que estos son muy variantes según las necesidades del cliente y del medio, por lo que constantemente los profesionales requieren del acceso a información clasificada o resultante de investigaciones y desarrollos realizados sobre el tema que se este trabajando. Los sistemas colaborativos ejercen un papel esencial en el continuo surgimiento de nuevas empresas desarrolladoras de software, que a su vez son inducidas por los permanentes avances tecnológicos, las cuales buscarán mantenerse en un nivel competitivo realicen dentro del mercado; y para esto se hace necesario que se desarrollos mucho mas rápido y se garantice su calidad. Aquí es donde se resalta la importancia de los sistemas colaborativos, ya que son ellos los que ayudan a que dichas empresas, mantengan su nivel competitivo, consiguen esto basándose en sus características primordiales, como son las de transferencia de archivos, envió de anuncios y conversación entre usuarios, entre otras. Dentro de este marco de desarrollo, se presenta un sistema colaborativo de mensajería electrónica, con la que se pretenderá una mayor rapidez y eficacia en el desarrollo de proyectos software en la Universidad de Pamplona. En este trabajo se presentan los fundamentos teóricos sobre sistemas colaborativos que son la esencia de este proyecto, se muestran conceptos relacionados con la transmisión de datos a través de la red, la cual soporta la parte el funcionamiento de la aplicación. Se hace un breve resumen sobre aspectos generales de los sistemas colaborativos, y por último se presenta el diseño y desarrollo del SCME. 1 1 1.1 TRABAJO COOPERATIVO Definición El trabajo cooperativo es un área interdisciplinaria muy amplia, la cual se encuentra soportada por una poderosa tecnología como es Groupware. Se define Groupware como: "Procesos intencionales de un grupo para alcanzar objetivos específicos más herramientas de software diseñadas para dar soporte y facilitar el trabajo" [REVI]. Pues se trata de una estrategia que pretende coordinar actividades de: comunicación, colaboración, coordinación y negociación con el fin de aumentar la productividad en una organización. Analizando el trabajo cooperativo desde esta óptica, se presenta como el conjunto de estrategias organizacionales, que junto con las herramientas tecnológicas, pretenden implantar en una organización el trabajo en grupo. Trabajo que es tendiente a maximizar los resultados y minimizar la pérdida de tiempo y de información. 2 Una aplicación de Groupware puede requerir además, un ambiente organizacional específico para que funcione como se espera, esto es, una serie de procedimientos definidos en relación a las herramientas. El término interactivo es usado para indicar que las limitaciones de tiempo son manejadas por el sistema. Muchas aplicaciones de Groupware aparentan soportar interacción en tiempo real; Los sistemas que excluyen la referencia al tiempo real no son aplicaciones de Groupware. Compartir indica que dos o más participantes interactúan con otro de tal manera que cada persona ejerce influencia y es influenciada por otras personas. No existe un límite al número de participantes 1 . Por lo que algunas definiciones de Groupware incluyen la noción de meta común. Otras concepciones de Groupware implican los elementos comunicación, colaboración y coordinación, donde estos términos están asociados de forma similar a los elementos de comunicación tales como el correo electrónico.. La colaboración es la utilización de este tipo de elementos junto con la opción de ,Un objetivo de algunas aplicaciones Groupware es incrementar el número de personas que pueden interactuar 1 3 compartir información y coordinación de las actividades para que todo se lleve a cabo. Normalmente, Internet ha sido considerada como una gran base de datos de cobertura global más que como un lugar en donde poder llevar a cabo un trabajo concreto. En este contexto, herramientas clásicas como el correo electrónico y las listas de distribución no son capaces de ofrecer un mayor soporte para la realización de trabajos en grupo a través de la Red. En este punto es donde se están desarrollando las aplicaciones groupware para Internet, que ofrecen a los usuarios el pilar básico desde el cual promover el trabajo colaborativo a través de la Web. Es indudable que los frutos del trabajo en colaboración son mayores que los conseguidos a partir del que se elabora individualmente, y esta cuestión es especialmente importante cuando se trata de realizar tareas dentro de una empresa u organización. Gracias al software para el trabajo en grupo es factible la mejora del rendimiento en general de todo el proceso productivo y su mayor aportación es hacer posible que diferentes personas puedan trabajar de forma compartida con una misma información y cooperar estrechamente en el desarrollo de proyectos. 4 Este tipo de herramientas se está difundiendo sobre todo en las Intranets corporativas. Dentro de este contexto, las funciones básicas que se consiguen llevar a cabo con su utilización son las siguientes: (Figura 1.) 9 Ayuda a que dos personas, o más, trabajen juntas. 9 Permite compartir conocimientos y experiencias. 9 Automatiza sus actividades. 9 Ayuda a crear una memoria de la organización. 9 Desarrollos sin importar la geografía y tiempo. Figura 1 Servicios que ofrecen las herramientas para el Trabajo Colaborativo 5 Cada día es más frecuente que profesionales pertenecientes a diferentes universidades, instituciones o empresas lleven a cabo investigaciones aparte de las funciones normales que realizan en sus lugares habituales de trabajo. Aunque la Red aporta una serie de instrumentos para esta colaboración, se hacía necesaria una herramienta capaz de crear en la Web un espacio compartido en donde desarrollar proyectos comunes de forma totalmente fiable y segura. Hasta el momento, el sistema más utilizado para manipular documentos, de forma más o menos paralela, ha sido el correo electrónico y, sobre todo, las listas de distribución. El envío de archivos a partir de ello, es constante y constituyen básicamente la oferta de Internet para el trabajo en grupo. Hay que tener en cuenta, sin embargo, que no se hace en un área específica, sino que simplemente hay un movimiento de información de un lugar a otro de la Red. Esta situación plantea el problema de que las diferentes versiones que se crean progresivamente de un mismo archivo no están controladas en un único espacio ni accesibles en cualquier momento a todos los posibles participantes. Otra utilidad, como lo es el Chat, no ha contado hasta ahora con la aceptación por parte de la comunidad científica y profesional. La razón, según algunos investigadores es que ha estado desde su creación más enfocado al entretenimiento que al trabajo técnico propiamente dicho. 6 No obstante, no puede negarse que es el método más eficaz que Internet pone al alcance de sus usuarios para la comunicación a tiempo real sin que esto conlleve un gasto tecnológico alto. De cualquier forma, tampoco debe de despreciarse su uso simplemente por las implicaciones negativas que conlleva y es necesario saber encontrar aplicaciones dentro de un contexto científico que aproveche sus posibilidades reales de interacción. Con la proliferación de las comunidades virtuales de usuarios de carácter profesional, la necesidad de dar soporte a ese trabajo interinstitucional es cada vez más importante. La característica principal de cualquier organización que promueva la investigación debe ser la de ofrecer las herramientas adecuadas para que se lleve a cabo la labor que aspira, día a día, a ser cada vez más competitiva y, sobre todo, que fomente la participación de un mayor número de personas. 1.2 Ventajas de las herramientas para el trabajo en grupo. Básicamente aporta las siguientes ventajas en lo referente al desarrollo de tareas en grupo a través de la Red: 9 Creación de zonas para el trabajo colaborativo entre varios miembros y desde donde compartir documentos para llevar a cabo proyectos comunes. 2 Que pueden, o no, estar lejanos geográficamente o pertenecer a diferentes organizaciones 2 7 9 Entrada restringida a esas áreas mediante un acceso controlado 3 , y en los casos que sea necesario, limitar sus posibilidades de manipulación de la información. 9 Puede convertirse en la puerta de acceso a reuniones o citas entre los miembros a través de la Red (Chat, videoconferencia). pues ofrece los medios básicos para realizar sus convocatorias (Envió de anuncios pertinentes). 9 Presenta ciertas aplicaciones que pueden ser entendidas dentro de un contexto de workflow o flujo de información como lo es el hecho de que integra herramientas de comunicación de eventos entre sus miembros. Las ventajas sobre el correo electrónico son evidentes ya que, principalmente, con este medio lo único que se produce es una transferencia de documentos de una máquina a otra. De cualquier forma, un sistema no tiene porque excluir al otro, es más, ambos se complementan a la hora de ofrecer apoyo a este tipo de trabajo, ya que el correo electrónico es utilizado para optimizar recursos transfiriendo documentos extensos entre los miembros. 3 Permitido solamente a miembros previamente registrados 8 1.3 Razones para mover una organización a groupware. 9 Mejor control de costos. 9 Incremento de la productividad. 9 Mejor servicio al cliente. 9 Pocas reuniones. 9 Automatización de procesos de rutina. 9 Extensión de la organización: se incluye tanto al cliente como al proveedor. 9 Integración de grupos geográficamente dispersos. 9 Incremento de la productividad a través de más rápidos tiempos de mercadeo. 9 Mejor coordinación globalmente. 9 Proveer mejores servicios que diferencien a la organización. 9 1.4 Tipos de Groupware Mismo Tiempo Mismo Lugar Tiempos diferentes Cara a cara Interacción asíncrona Clases, salas de Herramientas de coordinación reunión Lugares diferentes Distribución síncrona 1.5 Distribución asíncrona Editores compartidos, Correo electrónico, tablones de ventanas anuncios PRINCIPALES SCME 1.5.1 CSCL: ComputerSupported Collaborative Learning. El aprendizaje en ambientes colaborativos, busca propiciar espacios en los cuales se dé el desarrollo de habilidades individuales y grupales a partir de la discusión entre los estudiantes al momento de explorar nuevos conceptos, siendo cada quien responsable de su propio aprendizaje. Se busca que estos ambientes sean ricos en posibilidades y más que organizadores de la información propicien el crecimiento del grupo. 10 El sistema educativo, se encuentra inmerso en un proceso de cambios, enmarcados en el conjunto de transformaciones sociales propiciadas por la innovación tecnológica y, sobre todo, por el desarrollo de las tecnologías de la información y de la comunicación, por los cambios en las relaciones sociales. Una nueva concepción de las relaciones tecnología-sociedad que determinan las relaciones tecnología - educación. En la actualidad, los cambios en el contexto, exigen cambios en los modelos educativos, cambios en los usuarios de la formación y cambios en los escenarios donde ocurre el aprendizaje. Tan es así, que la unidad básica de espacio educativo: el aula o la clase y la unidad básica de tiempo se ven afectadas por la aparición de las nuevas tecnologías de la información en el ámbito educativo. La enseñanza nacida de la industrialización se ha caracterizado hasta ahora y en relación al ambiente instructivo, por seguir una ley de tres unidades: unidad de tiempo, unidad de lugar y unidad de acción, todos en el mismo lugar, al mismo tiempo, realizando las mismas actividades de aprendizaje. Este ambiente característico, comienza a desdibujarse al cambiar las coordenadas espacio-temporales que propician las telecomunicaciones, contribuyendo a facilitar el acceso a los recursos de aprendizaje a una mayor diversidad de personas y en diversas circunstancias. 11 Las redes de comunicación introducen una configuración tecnológica que potencia un aprendizaje más flexible y, al mismo tiempo, la existencia de nuevos escenarios del aprendizaje. [REVI] En este sentido, existen multitud de herramientas de Internet que ofrecen diversas utilidades 4 que facilitan este trabajo colaborativo. Para empezar a hablar de algunas de ellas es necesario conocer la interacción y beneficios que ofrece este tipo de trabajo, ver figura 2. Figura 2 Interacción entre herramientas para le trabajo en grupo 4 Espacios compartidos, toma de decisiones, asignación de tareas, votaciones, gestión de grupos. 12 1.5.2 El BSCW El BSCW es una herramienta, basada en la Web, que facilita la cooperación a través de “espacios compartidos”, donde los usuarios pueden almacenar y acceder a documentos aportados por otros miembros del grupo, a que participen en actividades y experiencias realizadas por los otros miembros. El BSCW gestiona diferentes espacios compartidos para diferentes grupos y los usuarios deben disponer de un nombre de usuario y palabra clave para acceder a ellos, una persona puede pertenecer a diferentes espacios de trabajo utilizando la misma clave. Los espacios compartidos pueden contener diferentes tipos de información como documentos, dibujos, enlaces a URL, discusiones electrónicas, agenda de direcciones, etc. Los diferentes contenidos se visualizan como “objetos” y se organizan en directorios o carpetas como muestra la figura 3. [BSCW]. 13 Figura 3 Interfaz grafica del BSCW Características básicas del BSCW 9 Posibilita el uso de un espacio para compartir documentos independientemente del tipo de plataforma. 9 Fácil acceso a la información y los documentos a través de carpetas 9 El BSCW se instala en un servidor, por lo cual no es necesario instalar ningún tipo de software por parte de los usuarios, se accede a través de cualquier navegador de WWW. 9 Las principales acciones que se pueden realizar son: añadir nuevos miembros al espacio colaborativo, publicar nuevos documentos, crear nuevas carpetas, añadir URL, publicar nuevos artículos para las discusiones o convocar a los miembros del grupo a reuniones. 14 9 Visualización de las acciones realizadas por todos los miembros del grupo (creación, lectura, modificación de objetos, discusiones...) 9 Publicación de documentos sin necesidad de utilizar ninguna aplicación de FTP, se realiza a través del navegador de WWW. 9 Permite crear privilegios de acceso para distintos usuarios. 9 Posibilidad de utilizar un servidor público. 1.5.3 NetMeeting. Microsoft NetMeeting es un programa que permite: Ver y oír a otras personas, incluso si no puede transmitir vídeo, podrá recibirlo, compartir programas y documentos. Podrá trabajar fácilmente con otros participantes en la conferencia. Sólo es necesario que un equipo tenga instalado el programa; todos los participantes podrán trabajar simultáneamente en el documento, [NETM] enviar y recibir archivos para trabajar en ellos, utilizar una pizarra compartida y dibujar en ella para explicar conceptos, utilizar un esbozo o mostrar gráficos. También se puede copiar áreas del escritorio o de las ventanas y pegarlas en la Pizarra. Enviar y recibir mensajes en modo texto 5 sólo es posible mantener una conexión de audio o vídeo entre dos personas, este tipo de conversación es muy útil en una conferencia de un grupo, ya que todos pueden participar, además, es posible codificar las llamadas de conversación, lo que garantiza la privacidad de las conferencias. 15 La videoconferencia sólo es posible mantenerla entre dos personas aunque en la conexión existan más. Por ello, ni el audio ni el vídeo son los más utilizados en labores de cooperación entre un grupo de usuarios. Mensajes escritos: Se denomina Conversación con NetMeeting a que todos los participantes en una conferencia (conexión) pueden comunicarse entre sí mediante mensajes escritos (Chat). Este tipo de comunicación y la facilidad en el envío de mensajes de texto es imprescindible en una conferencia de un grupo ya que todos pueden participar simultáneamente. Transferencia de ficheros. Mientras los interlocutores de una conferencia dialogan, existe la posibilidad de transferir ficheros entre ellos. (FTP). FTP significa File Transfer Protocol, protocolo de transferencia de ficheros. Es un servicio de Internet que permite transferencia de archivos. Se utiliza en modo cliente-servidor, conectados a un ordenador remoto 6 el programa (cliente) permite solicitar la transferencia de archivos en cualquiera de las dos direcciones. El servidor de archivos debe admitir las transferencias de tipo FTP, por lo que deberá ser un ordenador especialmente preparado para esta tarea. 5 6 El programa llama a esta característica conversación. Que actúa como servidor y que es un gran ordenador permanentemente conectado a Internet 16 Compartir aplicaciones externas a NetMeeting. Ello permite a los participantes ver y trabajar en ficheros simultáneamente. Así es que por ejemplo, se pueda trabajar un documento de texto con un determinado procesador en el que se necesiten trabajar varias personas. [REVI] 1.5.4 Plataforma Virtual WebCT. Es un entorno educativo que puede ser utilizado para desarrollar trabajo cooperativo. Su utilización está muy extendida entre entidades educativas 7 y se dice de él, que es un entorno diseñado por profesores para profesores. [WEBC] La característica principal de este programa, es la gestión de espacios independientes que suelen denominarse como asignaturas o cursos en el entorno educativo. Estos espacios se mantienen en una misma computadora que requiere un administrador del sistema informático. Cada espacio o curso queda a disposición de los integrantes del grupo que se dividen en dos clases: usuarios generales o estudiantes y administrador del área o profesor. Se accede a estos espacios utilizando un navegador de páginas Web, a través de Internet. 17 1.5.5 LOTUS NOTES. Aplicación de groupware que permite a grupos de personas tener acceso, rastrear, actualizar, organizar y compartir información; además de que les permite participar en discusiones de grupo, distribuir informes y administrar proyectos. Lotus Notes es un entorno abierto para el uso compartido de conocimientos y para la creación de aplicaciones vitales en el mundo empresarial. Su núcleo está constituido por una exclusiva tecnología de gestión de documentos y de objetos, que se ocupa de almacenar la información de manera segura en bases de datos compartidas situadas en servidores de red, y que facilita a toda una organización el acceso rápido a la información. [LOTU] Utilizado ya como motor de aplicaciones de todo tipo, desde las tareas habituales de coordinación de grupos de trabajo, pasando por las publicaciones electrónicas, administración de sistemas de fax, gestión de llamadas telefónicas y del correo electrónico y tratamiento de documentos, hasta la gestión de proyectos: prácticamente toda la gestión de información dentro de la empresa puede ser abordada por Notes. Lotus Notes favorece la colaboración para que el trabajo en equipo dé sus frutos, acercando a las personas entre sí, de formas hasta ahora impensables: a través 7 Más de 560 en EEUU, más de 91 en Canadá, más de 41 en Australia y más de 136 en Europa 18 de una red, mediante los principales tipos de ordenadores, entre organizaciones distintas y por todo el mundo. Lotus Notes mejora el rendimiento al reducir el tiempo necesario para realizar procesos fundamentales en las empresas, desde el desarrollo de productos hasta los departamentos de atención al cliente. Lotus Notes salió a la venta en 1998; su configuración original solo ofrecía el correo electrónico y los documentos en grupo como funciones estándar. La clave del éxito de Notes fue haber sido el primer producto de groupware y haber contado con el respaldo de Lotus y de IBM. Lotus Puede operar en estaciones de trabajo compatibles con IBM, que corre en OS2 o Windows, Macintosh y estaciones de trabajo que utiliza Unix, y puede ser utilizado en redes Lan y Wan. 1.5.6 NUEVO SOFTWARE PARA EL OPENOFFICE GROUPWARE. El proyecto OpenGroupware.org ("OGo") anuncia su creación y la liberación para el desarrollo de software servidor groupware de OGo. El software ofrece los componentes de servidor necesarios para la colaboración total con la suite OpenOffice.org así como otros clientes de groupware que corren en Linux y Solaris. El proyecto OGo es un proyecto de software libre totalmente 19 independiente, pero que operará internamente con OpenOffice.org y otros clientes similares, a través de estándares abiertos. El software OGo está basado inicialmente en la contribución de código de SkyriX 4.1 Groupware Server, un producto maduro que ha estado en el mercado durante 7 años, y uno de los más antiguos productos groupware para el sistema operativo Linux. [OFFI] 1.5.7 OTROS SCME. Otra alternativa a la hora de ofrecer todo este tipo de servicios es MBone. Con las herramientas disponibles actualmente para emplear con MBone (que además son de libre distribución y gratuitas) se permite tanto la transferencia de audio, vídeo, compartir pizarra electrónica, edición compartida de texto, textoconferencias, etc. IBM Sametime, es un software en tiempo real para la colaboración de proyectos software, con el conocimiento en línea que permite localizar a los compañeros de trabajo que están conectados y enviarles mensajes, transferir ficheros e iniciar reuniones instantáneas que incluyen audio y vídeo, pantalla compartida, pizarra y otras herramientas de colaboración. [SAME] El Sun Java Enterprise System en un concepto radicalmente nuevo en el campo del software de infraestructura empresarial. Simplifica el proceso de adquisición, 20 instalación y despliegue del software, y lo hace más predecible y económico. Es un sistema de software abierto líder en la industria de servicios de red empresariales, posee un enfoque sistemático para desarrollar, probar y distribuir una solución compacta, e introduce un modelo de negocio que proporciona una solución completa de: software, mantenimiento, soporte, consultoría y servicios de información. [JES]. 21 2 2.1 TECNOLOGÍA Y PLATAFORMA PARA EL DESARROLLO DEL SCME Plataforma Java 2.1.1 Definición. Java es una plataforma, desarrollada al comienzo de los años 90 con el objetivo concreto de permitir ejecutar programas sin tener relativamente en cuenta el hardware final, sin volver a reescribir todo el código del programa. Consiste en tres grandes bloques. ¾ El lenguaje Java ¾ Una máquina virtual ¾ Un programa de aplicación de interfaz o API. Java, el lenguaje orientado a objetos diseñado para ser multiplataforma y poder ser empleado el mismo programa en diversos sistemas operativos. Esta característica, junto con la posibilidad de emplearlo para crear applets, e insertarlos en páginas HTML, o mediante servlets y páginas JSP generar código H 22 TML dinámico. Todo ello con la capacidad de acceder a bases de datos. Para lograr ejecutar los programas sobre una unidad (virtual), se compilan a código binario como bytecode para cualquier máquina virtual de Java, como se ve en la (Figura 4). Figura 4 Secuencia de una aplicación bajo el lenguaje Java Gracias al API de java se podra ampliar el lenguaje para que sea capaz de, por ejemplo, comunicarse con equipos mediante red, acceder a bases de datos, crear páginas HTML dinámicas, y crear aplicaciones visuales. 2.1.2 Características 9 Simple: El conjunto de palabras reservadas es muy reducido, así como las reglas de sintaxis, lo que hace de Java un lenguaje fácil de aprender. 23 9 Orientado a Objetos. Java presenta todas las características necesarias para la programación orientada a objetos, como la herencia, polimorfismo, encapsulamiento. etc. 9 Distribuido. Debido a las características de conectividad del lenguaje, existe la capacidad de programar distintas aplicaciones para que se ejecuten en distintas máquinas, en las cuales se distribuye el trabajo, minimizando tiempos. 9 Seguro. El sistema de Java tiene ciertas políticas que evitan se puedan codificar virus con este lenguaje. Existen muchas restricciones, especialmente para los applets, que limitan lo que se puede y no puede hacer con los recursos críticos de una computadora. 9 Arquitectura Neutral. Para establecer Java como parte integral de la red, el compilador Java compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. Cualquier máquina que tenga el sistema de ejecución (run-time) puede ejecutar ese código objeto, sin importar en modo alguno la máquina en que ha sido generado, véase figura 5, [CIEN] 24 Figura 5 Interacción de java con la Red El código fuente Java se "compila" a un código de bytes de alto nivel independiente de la máquina. Este código (bytecodes) está diseñado para ejecutarse en una máquina hipotética que es implementada por un sistema runtime, que sí es dependiente de la máquina. Los elementos que forman parte de la arquitectura de Java sobre una plataforma genérica, se muestran en la figura 6. [CIEN] 25 Figura 6 Elementos de la Plataforma Java 9 Alto rendimiento. La velocidad de ejecución de los programas hechos en java es mejor a la de los lenguajes interpretados convencionales. El código generado por un programa java es muy compacto lo que ahorra recursos. 9 Portable. Como el código compilado de Java (bytecode) es interpretado, un programa compilado de Java puede ser utilizado por cualquier computadora que tenga implementado el interprete de Java, (Figura 4). 9 Robusto. El sistema de Java maneja la memoria de la computadora por usted. No tiene que preocuparse por apuntadores, memoria que no se esté utilizando, Java realiza todo esto sin necesidad de que uno se lo indique. 9 Interpretado Debido a que java no está diseñado para ejecutarse en una arquitectura determinada, es necesario interpretar los programas hechos en java para 26 que se puedan ejecutar en una plataforma específica. Actualmente ya existen compiladores en tiempo real (JIT - JUST IN TIME) lo que acelera la ejecución de Java. 9 Multithread. Es un lenguaje que soporta múltiples hilos y por lo tanto se pueden ejecutar varios procedimientos en paralelo. 9 Dinámico Java no requiere que se compile todas las clases de un programa para que este funcione. Si realiza una modificación a una clase Java se encarga de realizar un Dynamic Bynding o un Dynamic Loading para encontrar las clases. Gracias a las características de los objetos, java está cambiando constantemente de forma, aumentando sus capacidades. Desde otro punto de vista java permite el direccionamiento de memoria en forma dinámica, figura 7. [CIEN] Figura 7 Direccionamiento de Memoria 27 Java también simplifica el uso de protocolos nuevos o actualizados. Si su sistema ejecuta una aplicación Java sobre la red y encuentra una pieza de la aplicación que no sabe manejar, Java es capaz de traer automáticamente cualquiera de esas piezas que el sistema necesita para funcionar, figura 8. [CIEN] Figura 8 Petición automática de Servicios Java, para evitar que los módulos de bytecodes o los objetos o nuevas clases, haya que estar trayéndolos de la red cada vez que se necesiten, implementa las opciones de persistencia, para que no se eliminen cuando se limpie la caché de la máquina. [CIEN] 9 Es un lenguaje compilado: Genera archivos de clases compiladas, pero estas clases compiladas, son en realidad interpretadas por la máquina virtual de java. Siendo la máquina 28 virtual de java la que mantiene el control sobre las clases que se estén ejecutando. 9 Es un lenguaje multiplataforma: El mismo código java que funciona en un sistema operativo, funcionará en cualquier otro sistema operativo que tenga instalada la máquina virtual java. Para poder trabajar con java es necesario emplear un software que permita desarrollar en java. Existen varias alternativas comerciales en el mercado: JBuilder, Visual Age, Visual Café,... y un conjunto de herramientas Shareware, e incluso freeware, que permiten trabajar con java, pero todas estas herramientas en realidad se basan en el uso de una herramienta proporcionada por Sun, el creador de java, que es el Java Development Kit (JDK), véase, Figura 9. Figura 9 Componentes necesarios para la Plataforma Java 29 2.2 Máquina Virtual 2.2.1 Definición. La máquina virtual de Java (Java Virtual Machine, JVM) es un programa nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode), el cual es generado por el compilador del lenguaje Java. El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. 2.2.2 Características 9 La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de manera que desde SUN se han creado diferentes máquinas virtuales java para diferentes arquitecturas y así un programa .class escrito en un Windows puede ser interpretado en un entorno Linux. Tan solo es necesario disponer de dicha máquina virtual para dichos entornos. 9 La máquina virtual de Java puede estar implementada en software, hardware, una herramienta de desarrollo o un Web browser; lee y ejecuta 30 código precompilado bytecode que es independiente del concepto multiplataforma. 9 La JVM provee definiciones para un conjunto de instrucciones, un conjunto de registros, un formato para archivos de clases, la pila, un heap con recolector de basura y un área de memoria. Cualquier implementación de la JVM que sea aprobada por SUN debe ser capaz de ejecutar cualquier clase que cumpla con la especificación. 2.3 Arquitectura Cliente / Servidor 2.3.1 Antecedentes. El modelo Cliente/Servidor se considera clave para abordar las necesidades de empresas que se encuentren en un proceso distribuido. Este cambio fundamental ha surgido como consecuencia de importantes factores (negocio, tecnología, proveedores), y se apoya en la existencia de una gran variedad de aplicaciones estándar y herramientas de desarrollo, fáciles de usar que soportan un entorno informático distribuido y colaborativo. 2.3.2 Definición. Con la proliferación de ordenadores personales de bajo coste en el mercado, los recursos de sistemas de información existentes en cualquier organización se 31 pueden distribuir entre ordenadores de diferentes tipos: ordenadores personales de gama baja, media y alta, estaciones de trabajo, mini-ordenadores o incluso grandes ordenadores. El concepto de cliente/servidor proporciona una forma eficiente de utilizar todos los recursos de máquina de tal forma que la seguridad y fiabilidad de los ordenadores se traspasa a la red de área local. A esto hay que añadir la ventaja de la potencia y simplicidad de los ordenadores personales [SECR]. La arquitectura cliente/servidor es un modelo para el desarrollo de sistemas de información, en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y servidor, al proceso que responde a las solicitudes. Es el modelo de interacción más común entre aplicaciones en una red. No forma parte de los conceptos de la Internet como los protocolos IP, TCP o UDP, sin embargo todos los servicios estándares de alto nivel propuestos en Internet funcionan según este modelo. Los principales componentes del esquema cliente/servidor son entonces los Clientes, los Servidores y la infraestructura de comunicaciones, figura 10. En este modelo, las aplicaciones se dividen de forma que el servidor contiene la parte que debe ser compartida por varios usuarios, y en el cliente permanece sólo lo particular de cada usuario. 32 Los Clientes interactúan con el usuario, usualmente en forma gráfica. Frecuentemente se comunican con procesos auxiliares que se encargan de establecer conexión con el servidor, enviar el pedido, recibir la respuesta, manejar las fallas y realizar actividades de sincronización y de seguridad. Figura 10 Representación de la conexión cliente servidor Para que los clientes y los servidores puedan comunicarse se requiere una infraestructura de comunicaciones, la cual proporciona los mecanismos básicos de direccionamiento y transporte. La mayoría de los sistemas Cliente/Servidor actuales, se basan en redes locales y por lo tanto utilizan protocolos no orientados a conexión, lo cual implica que las aplicaciones deben hacer las verificaciones. La red debe tener características adecuadas [INST_01] de desempeño, confiabilidad, transparencia y administración. 33 2.3.3 Características 9 El servidor presenta a todos sus clientes una interfaz única y bien definida. 9 El cliente no necesita conocer la lógica del servidor, sólo su interfaz externa. 9 El cliente no depende de la ubicación física del servidor, ni del tipo de equipo físico en el que se encuentra, ni de su sistema operativo. 9 Los cambios en el servidor implican pocos o ningún cambio en el cliente. 2.3.4 Componentes esenciales de una infraestructura Cliente/Servidor 2.3.4.1 Plataforma Operativa. La plataforma deberá soportar todos los modelos de distribución Cliente/Servidor, todos los servicios de comunicación, y deberá utilizar, preferentemente, componentes estándar de la industria para los servicios de distribución. Los desarrollos propios deben coexistir con las aplicaciones estándar y su integración deberá ser imperceptible para el usuario. Igualmente, podrán acomodarse programas escritos utilizando diferentes tecnologías y herramientas. [INST_02] 34 2.3.4.2 Entorno de desarrollo de aplicaciones. Debe elegirse después de la plataforma operativa. Aunque es conveniente evitar la proliferación de herramientas de desarrollo, se garantizará que el enlace entre éstas y el middleware no sea excesivamente rígido. Será posible utilizar diferentes herramientas para desarrollar partes de una aplicación. Un entorno de aplicación incremental, debe posibilitar la coexistencia de procesos cliente y servidor desarrollados con distintos lenguajes de programación y/o herramientas, así como utilizar distintas tecnologías (por ejemplo, lenguaje procedural, lenguaje orientado a objetos, multimedia), y que hayan sido usadas en distintos momentos del tiempo. [INST_02] 2.3.4.3 Gestión de Sistemas. Estas funciones aumentan considerablemente el costo de una solución, pero no se pueden evitar. Siempre deben adaptarse a las necesidades de la organización, y al decidir la plataforma operativa y el entorno de desarrollo. [INST_02] 2.3.4.4 Características funcionales. Esta arquitectura se puede clasificar en cinco niveles, según las funciones que asumen el cliente y el servidor, tal y como se puede ver en la figura 11: [INST_03] 35 En el primer nivel El cliente asume parte de las funciones de presentación de la aplicación, ya que siguen existiendo programas en el servidor, dedicados a esta tarea. Dicha distribución se realiza mediante el uso de productos para el "maquillaje" de las pantallas del mainframe. Esta técnica no exige el cambio en las aplicaciones orientadas a terminales, pero dificulta su mantenimiento. Además, el servidor ejecuta todos los procesos y almacena la totalidad de los datos. En este caso se dice que hay una presentación distribuida o embellecimiento. [INST_03] En el segundo nivel. La aplicación está soportada directamente por el servidor, excepto la presentación que es totalmente remota y reside en el cliente. Los terminales del cliente soportan la captura de datos, incluyendo una validación parcial de los mismos y una presentación de las consultas. En este caso se dice que hay una presentación remota. [INST_03] En el tercer nivel. La lógica de los procesos se divide entre los distintos componentes del cliente y del servidor. El diseñador de la aplicación debe definir los servicios y las interfaces del sistema de información, de forma que los papeles de cliente y servidor sean intercambiables, excepto en el control de los datos, que es responsabilidad exclusiva del servidor. En este tipo de situaciones se dice que hay un proceso distribuido o cooperativo. [INST_03] 36 Figura 11 Interacción de los procesos en cada nivel En el cuarto nivel. El cliente realiza tanto las funciones de presentación como los procesos. Por su parte, el servidor gestiona los datos pertinentes que pueden permanecer a una base de datos centralizada o procesos que se estén en tiempo de ejecución. En esta situación se dice que hay una gestión de datos remota. [INST_03] En el quinto nivel. El reparto de tareas es como en el anterior y además las interfaces entre ambos, están dentro de las funciones del gestor de datos y, por lo tanto, no tienen impacto en el desarrollo de las aplicaciones. [INST_03]. 37 2.3.5 Características lógicas. Cabe señalar que en la arquitectura cliente/servidor se evitan las duplicidades (copias y comparaciones de datos), teniendo siempre una imagen única y correcta de los mismos, disponible en línea para su uso inmediato. Todo esto tiene como fin que el usuario de un sistema de información soportado por una arquitectura cliente/servidor, trabaje desde su estación de trabajo con distintos datos y aplicaciones, sin importarle dónde están o dónde se ejecuta cada uno de ellos. [INST_04] 2.3.6 Características. Se ilustrara que con el uso de este esquema se reducen los costos de producción de software y se disminuyen los tiempos requeridos. Esto es así, pues para la construcción de una nueva aplicación pueden usarse los servidores que hay disponibles, reduciéndose el desarrollo a la elaboración de los procesos del cliente, según los requerimientos deseados. El esquema cliente/servidor, facilita el suministro de información a los usuarios. Esto es así porque, por un lado, proporciona una mayor consistencia a la información de la empresa al contar con un control centralizado de los elementos compartidos, y por otro, porque facilita la construcción de interfaces gráficas interactivas, las cuales pueden hacer que los "datos" se conviertan en 38 "información". El esquema cliente/servidor permite llevar más fácilmente la información a donde se necesita, ya que contribuye a aumentar su precisión, pues se puede obtener de su fuente (el servidor) y no de una copia en papel o en medio magnético. La habilidad de integrar sistemas heterogéneos es inherente al modelo cliente/servidor, pues los clientes y los servidores pueden existir en múltiples plataformas y hacer acceso a datos de cualquier sitio de la red. Además, un cliente puede integrar datos de diferentes sitios para presentarlos, a su manera, al usuario final. Al favorecer la construcción de interfaces gráficas interactivas y el acceso transparente a diferentes nodos de la red, se facilita el uso de las aplicaciones por parte de los usuarios, lo cual aumenta su productividad. El esquema cliente/servidor también favorece la adaptación a cambios en la tecnología pues facilita la migración de las aplicaciones a otras plataformas y, al aislar claramente las diferentes funciones de una aplicación, hace más fácil incorporar nuevas tecnologías en ésta. [INST_06] 39 2.3.7 Segmentación de Aplicaciones. La figura 12 muestra el proceso que se lleva a cabo en una aplicación cliente/servidor. [INSTT] Figura 12 Segmentación de aplicaciones. 2.4 Applets 2.4.1 Definición. Java creó un nuevo concepto al brindar a los programadores la opción de crear tipos distintos de ejecutables como es el de applet, ya que es un pequeño programa que se ejecuta dentro de un browser compatible con Java. De la misma 40 forma que una imagen se incluye en una página html, jsp, etc. [J2EE]. A las páginas que contienen applets se las denomina páginas Java-Powered y los applets pueden ser visualizados gracias a la herramienta appletviewer, incluido en el JDK de Java. [JAVA]. Todos los applets se encuentran restringidos al entorno Java (de la JVM) y se les prohíbe interactuar con el sistema operativo del cliente, para lo cual el equipo Java de Sun Microsystems creo una barrera (cortafuegos), entre el S.O y los applets. [J2EE]. Los applets están programados en Java y precompilados, es por ello que la manera de trabajar de éstos varía un poco con respecto a los lenguajes de script como Javascript. Los applets requieren unos conocimientos básicos o medios del lenguaje Java. [JAVA]. 2.4.2 Características 9 Se cargan mediante un navegador, no siendo lanzados por el intérprete Java. 9 Son cargados a través de la red por medio de páginas HTML y no residen en el disco duro de la máquina que los ejecuta. 41 9 Poseen un ciclo de vida diferente; mientras que una aplicación se lanza una vez, una applet se arranca (inicia) cada vez que el usuario recarga la página en la que se encuentra la applet. 9 Tienen menos derechos que una aplicación clásica, por razones de seguridad. De modo predeterminado en el puesto que los ejecuta no pueden ni leer ni escribir ficheros, ni lanzar programas, ni cargar DLLs. Sólo pueden comunicarse con el servidor Web en que se encuentra la página Web que las contiene. [JAVA] 2.4.3 Consideraciones sobre la seguridad en los applets. Los applets tienen una serie de restricciones de programación que los hacen seguros. Estas restricciones de seguridad son especialmente importantes, ya que evitarán que se cargue por error un applet que destruya datos de la máquina, que obtenga información restringida, o que produzca otros daños inesperados. Los applets no dejan de ser "ejecutables" que funcionan dentro de una aplicación, como puede ser un visualizador de páginas Web (browser). Este ejecutable puede obtenerse de una red, lo que significa que hay código posiblemente no fiable que se ejecuta dentro de la aplicación. 42 Java tiene muchas salvaguardas de seguridad que minimizan el riesgo de la ejecución de applets, pero estas salvaguardas también limitan a los programadores de applets en su capacidad de programación. El modelo de seguridad para los applets en Java trata un applet como código no fiable ejecutándose dentro de un entorno fiable. Por ejemplo, cuando un usuario instala una copia de un navegador Web en una máquina se está fiando que su código será funcional en el entorno. Normalmente los usuarios tienen cuidado de qué instalan cuando proviene de una red. Una applet, por el contrario, se carga desde la red sin ninguna comprobación de su fiabilidad. Estas salvaguardas son implementadas para verificar que los códigos de byte de las clases de los applets, no rompen las reglas básicas del lenguaje ni las restricciones de acceso en tiempo de ejecución. Sólo cuando estas restricciones son satisfechas se le permite al applet ejecutar su código. Cuando se ejecuta, se le marca para señalar que se encuentra dentro del intérprete. Esta marca permite a las clases de tiempo de ejecución determinar cuándo a una fracción del código se le permite invocar a cierto método. Por ejemplo, un applet está restringido en los hosts en los que se puede abrir una conexión de red o en un conjunto de URLs a las que puede acceder. En conjunto estas restricciones constituyen una política de seguridad. Java cuenta con políticas de encriptación y autentificación para permitir a las applets una mayor capacidad. [JAVA] 43 La actual política de seguridad afecta a los recursos que un applet puede usar, cuyos principales puntos son: 9 Los accesos que pueden realizar los applets a los ficheros son restringidos. En particular escribir en ficheros y/o leerles no será una capacidad estándar que se pueda realizar en los navegadores que soporten applets de Java. 9 Las conexiones de red serán restringidas a conectar sólo con el host del que proviene el applet. 9 Un applet no es capaz de usar ningún método que pueda resultar en una ejecución arbitraria, código no revisado o ambos. Esto incluye métodos que ejecuten programas arbitrarios (métodos nativos) así como la carga de bibliotecas dinámicas. [FRAN] 2.4.4 Ciclo de vida de un applet: Se anticipa en cualquier caso que en el futuro los modelos de seguridad permitirán a los applets autentificadas superar estas restricciones. Un applet no tiene un ciclo de vida tan "sencillo" como el de una aplicación, que simplemente se ejecuta hasta que finaliza su método main(), por lo que se 44 muestra una ilustración de cómo es su ciclo de vida para una mejor especificación, figura 13. [FRAN] Figura 13 Ciclo de vida de un applets 2.5 Socket 2.5.1 Definición. Los sockets son mecanismos de comunicación entre procesos que permiten que un proceso hable (emita o reciba información) con otro proceso incluso estando en distintas máquinas. Un socket es al sistema de comunicación entre ordenadores lo que un buzón o un teléfono es al sistema de comunicación entre personas. Un punto de comunicación entre dos agentes (procesos o personas respectivamente) por el cual se puede emitir o recibir información. La forma de 45 referenciar un socket por los procesos implicados es mediante un descriptor del mismo tipo que el utilizado para referenciar ficheros. Se podrá realizar redirecciones de los archivos de E/S estándar a los sockets y así combinar entre ellos aplicaciones de la red. Todo nuevo proceso creado heredará, por tanto, los descriptores de sockets de su padre. Una aplicación servidor normalmente escucha a un puerto específico esperando una petición de conexión de un cliente. Cuando llega una petición de conexión, el cliente y el servidor establecen una conexión dedicada sobre la que poder comunicarse. Durante el proceso de conexión, el cliente es asignado a un número de puerto, y ata un socket a ella. El cliente habla al servidor escribiendo sobre el socket y obtiene información del servidor cuando lee de él. Similarmente, el servidor obtiene un nuevo número de puerto local, 8 y asigna un socket a este puerto local y se comunica con él mediante la lectura y escritura. 8 Se necesita un nuevo puerto para poder continuar escuchando la petición de conexión del puerto original. 46 El cliente y el servidor deben establecer el protocolo es decir, debe ponerse de acuerdo en el lenguaje para transferir la información de vuelta a través del socket, ya sea por medio de una conexión por TCP Simple o Concurrente. Entonces se establece que un socket es el punto final de un enlace de comunicación de dos vías entre dos programas que se ejecutan a través de la red. La comunicación entre procesos a través de sockets se basa en la filosofía CLIENTE-SERVIDOR y un proceso en esta comunicación actuará de proceso servidor cuando crea un socket cuyo nombre conocerá el proceso cliente, que podrá "hablar" con el proceso servidor a través de la conexión con dicho socket. El otro proceso actuará como cliente creando un socket sin nombre cuyo descriptor usará para leer o escribir El enlace entre los dos sockets permite una comunicación full duplex, característica propia de los sockets y que los diferencia de los pipes, o canales de comunicación unidireccional entre procesos de una misma máquina. 2.5.2 Pasos de la comunicación vía Sockets. 9 El proceso servidor crea un socket con nombre y espera la conexión. 9 El proceso cliente crea un socket sin nombre. 47 9 El proceso cliente realiza una petición de conexión al socket servidor. 9 El cliente realiza la conexión a través de su socket mientras el proceso servidor mantiene el socket servidor original con nombre. Es muy común en este tipo de comunicación lanzar un proceso hijo, una vez realizada la conexión, que se ocupe del intercambio de información con el proceso cliente mientras el proceso padre servidor sigue aceptando conexiones. 48 2.5.3 Modelo de Comunicaciones de los Sockets con Java (Simple) En este caso se ilustra en la figura 14, como es la conexión de un cliente con el servidor mediante la utilización de Sockets. Figura 14 Conexión punto a punto, en una arquitectura Cliente / Servidor 49 2.5.4 Modelo de Comunicaciones de los Sockets con Java (Concurrente) Se muestra como es la conexión de varios clientes con el servidor mediante la utilización de Sockets, figura 15. Figura 15 Conexión multipunto, en una arquitectura Cliente / Servidor 50 2.5.5 Tipos de Sockets. En toda comunicación a través de Internet, bajo el protocolo TCP, existen clases que proporcionan métodos para la entrada/salida a través de streams que hacen la lectura y escritura a través de sockets muy sencilla, ver Tabla 1. Tabla 1. Descripción de los tipos de Sockests TIPO ServerSocket DESCRIPCIÓN Es un objeto utilizado en las aplicaciones servidor para escuchar las peticiones que realicen los clientes conectados a ese servidor. Este objeto no realiza el servicio, sino que crea un objeto Socket en función del cliente para realizar toda la comunicación a través de él. DatagramSocket La clase de sockets datagram es utilizada para implementar datagramas, ya que la comunicación es muy rápida por estos sockets debido a que no hay que perder tiempo estableciendo la conexión entre cliente y servidor. DatagramPacket Clase que representa un paquete datagram, conteniendo información del paquete, longitud del paquete, direcciones Internet y números de puerto. MulticastSocket Clase utilizada para crear una versión multicast de la clase socket datagram, de tal manera que múltiples clientes/servidores pueden transmitir a un grupo multicast (un grupo de direcciones IP compartiendo el mismo número de puerto). NetworkServer Una clase creada para implementar métodos y variables utilizadas en la creación de un servidor TCP/IP. NetworkClient Una clase creada para implementar métodos y variables 51 utilizadas en la creación de un cliente TCP/IP. SocketImpl Es un interfaz que nos permite crear nuestro propio modelo de comunicación, por lo que se deberá implementar los métodos cuando se use. Si se va a desarrollar una aplicación con requerimientos especiales de comunicaciones, como puede ser la implementación de un cortafuegos (TCP es un protocolo no seguro), o acceder a equipos especiales (como un lector de código de barras o un GPS diferencial), se necesitara una clase Socket propia. 2.6 Java Server Pages 2.6.1 Definición. La tecnología JSP, o Java Server Pages, es una tecnología Java que permite a los programadores generar dinámicamente HTML, XML o algún otro tipo de página Web, ver figura 16. Esta tecnología permite al código Java y a algunas acciones predefinidas ser embebidas en el contenido estático. En las JSPs, se escribe el texto que va a ser devuelto en la salida (normalmente código HTML) incluyendo código java dentro de él para poder modificar o generar contenido dinámicamente. El código java se incluye dentro de las marcas de etiqueta <% y %>. 52 Figura 16 Actividad de la las Paginas JSP La principal ventaja de JSP frente a otros lenguajes es que permite integrarse con clases Java (.class) lo que permite separar en niveles las aplicaciones Web, almacenando en clases java las partes que consumen más recursos así como las que requieren más seguridad, y dejando la parte encargada de formatear el documento html en el archivo JSP. Además Java se caracteriza por ser un lenguaje que puede ejecutarse en cualquier sistema, lo que sumado a JSP le da mucha versatilidad. [WIKI_03] Un JSP se compila a un programa en Java la primera vez que se invoca, y del programa en Java se crea una clase que se empieza a ejecutar en el servidor como un servlet. La principal diferencia entre los servlets y los JSPs es el enfoque 53 de la programación: un JSP es una página Web con etiquetas especiales y código Java incrustado, mientras que un servlet es un programa que recibe peticiones genera a partir de ellas una página Web., figura 16. [GENE] 2.7 Tomcat 2.7.1 Definición. Tomcat (Jakarta Tomcat o Apache Tomcat) funciona como un contenedor de servlets desarrollado bajo el proyecto Jakarta en la Apache Software Foundation. Tomcat implementa las especificaciones de los servlets y de Java Server Pages (JSP) de Sun Microsystems. Se le considera un servidor de aplicaciones. Tomcat no funciona con cualquier servidor Web con soporte para servlets y JSPs. Tomcat incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets del Tomcat a menudo se presenta en combinación con el servidor Web Apache. Tomcat puede, así mismo, funcionar como servidor Web por sí mismo. Opera de tal manera en entornos de desarrollo poco exigentes en términos de velocidad y de manejo de transacciones. Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual. [WIKI_01] 54 2.7.2 Antecedentes. Tomcat empezó siendo una implementación de la especificación de los servlets comenzada por James Duncan Davidson, que trabajaba como arquitecto de software en Sun y que posteriormente ayudó a hacer los proyectos open source y en su donación a Apache Software Foundation. Duncan Davidson inicialmente esperaba que el proyecto se convirtiese en open source y dado que la mayoría de los proyectos open source tienen libros de O'Reilly asociados con un animal en la portada, decidió ponerle al proyecto nombre de animal. Eligió Tomcat (gato), pretendiendo representar la capacidad de cuidarse por sí mismo, de ser independiente. [WIKI_01] 2.7.3 Servlets. Los servlets son objetos que corren dentro del contexto de un servidor Web (ej: Tomcat) y extienden su funcionalidad. La palabra servlet se deriva de applet, que se refería a pequeños programas escritos en Java que se ejecutan en el contexto de un navegador Web. Por contraposición, un servlet es un programa que se ejecuta en un servidor Web. El uso más común de los servlets es generar páginas Web de forma dinámica a partir de los parámetros de la petición que envíe el navegador Web. Un servlet es un objeto que se ejecuta en un servidor o contenedor J2EE, fue especialmente 55 diseñado para ofrecer contenido dinámico desde un servidor Web, generalmente es HTML. Otras opciones que permiten generar contenido dinámico son con los lenguajes ASP, PHP, JSP y Python. Los servlets forman parte de J2EE (Java 2 Enterprise Edition), que es una ampliación de J2SE (Java 2 Standard Edition). Un servlet es un objeto Java que implementa la interfaz javax.servlet.Servlet o hereda alguna de las clases más convenientes para un protocolo específico (ej: javax.servlet.HttpServlet). Entre el servidor de aplicaciones (o contenedor Web) y el servlet existe un contrato que determina cómo han de interactuar. La especificación de éste se encuentra en los JSR (Java Specification Requests) de la JCP (Java Community Process). [WIKI_02] 56 3 SISTEMA COLABORATIVO DE MENSAJERIA ELECTRONICA PARA EL DESARROLLO DE PROYECTOS SOFTWARE 3.1 Definición: En el presente proyecto se muestra el desarrollo una herramienta tipo groupware, que cuenta con algunos de los servicios esenciales para soportar el proceso de desarrollo de software, como es la transferencia de archivos, envío de anuncios y conversación entre usuarios a través de la red. Esta herramienta podrá ser implementada dentro de cualquier empresa u organización dedicada al desarrollo de proyectos software. Como una de las necesidades principales de los grupos de desarrollo es la comunicación entre los usuarios, se propone la utilización de una herramienta de este tipo, que se encargue de soportar las conversaciones mantenidas entre ellos junto con el envío de anuncios y de archivos. Con esto se pretende agilizar y mantener la calidad de los productos para que la empresa desarrolladora de software pueda mantenerse dentro de un mercado competitivo. 3.2 Especificaciones del sistema: Debido a que tanto el cliente 9 como los usuarios 10 son expertos en sus dominios y tienen una idea general de lo que puede hacer el sistema, a menudo tienen muy 9 Empresa desarrolladora de productos software. Trabajadores de la empresa. 10 57 poca experiencia en el desarrollo de software, por lo que los escenarios y los casos de uso proporcionan herramientas para llenar este hueco. Un caso de uso es una abstracción que describe una clase de escenarios, y se enfocan en el sistema desde un punto de vista externo, ya que describe una función proporcionada por el sistema que produce un resultado visible para un actor. Tanto los escenarios como los casos de uso se escriben en lenguaje natural, una forma que es comprensible para el usuario. [INGE] Como resultado de los requerimientos, los cuales son características que deben tener el sistema o restricciones que debe satisfacer para que sea aceptado por el cliente, [INGE], se obtiene un diagrama de casos de uso. Figura 17. Para el desarrollo de estos casos de uso se utiliza UML (Lenguaje de Modelado unificado. [INGE]), como un lenguaje que proporciona un espectro de notaciones para la representación de diferentes aspectos del sistema, el cual ha sido aceptado como notación estándar de la industria. [INGE] 58 3.3 Diagrama de Casos de Uso Figura 17 Diagrama de casos de uso En este diagrama de casos de uso se ven reflejados los requerimientos funcionales de sistema, y los actores implicados para su ejecución. A continuación se realizara una especificación de cada caso de uso, mediante escenarios que ilustren su descripción; tomando como guía base [INGE]. 59 3.4 Escenarios de especificación de los casos de uso Un escenario es “una descripción narrativa de lo que la gente hace y experimenta cuando trata de utilizar sistemas y aplicaciones de computadora. [INGE]”. Un escenario es una descripción concreta, enfocada e informal de una sola característica del sistema desde el punto de vista de un solo actor. [INGE]. 60 9 Primer escenario del sistema Nombre del caso de Uso: Enviar Archivo Actor Participante: Iniciado por un usuario (usuario_ emisor) se comunica con el servidor_ enLinea Condición inicial 1: El usuario_ emisor selecciona la opción de enviar el archivo al destino específico (usuario_ receptor). Flujo de eventos 2: El cliente_ enLinea responde presentando una ventana para cargar el archivo y enviarlo. 3: El servidor_ enLinea es notificado para que complete la orden. 4: El servidor_ enLinea encapsula la información y la envía al destino que ha sido seleccionado. 5: El usuario_ emisor recibe una ventana donde se le indica el porcentaje de transferencia del archivo. Condición de salida: La ventana de transferencia le indica al usuario_ emisor que se ha completado el 100% de la transferencia. Requerimientos especiales: De acuerdo a la red, varia la velocidad transferencia. 61 9 Segundo escenario del sistema Nombre del caso de Uso: Enviar Anuncio Actor Participante: Iniciado por un usuario (usuario_ emisor) se comunica con el servidor_ enLinea Condición inicial. 1: El usuario_ emisor selecciona al usuario_ receptor, o la comunidad a la que desea enviar el anuncio. Flujo de eventos 2: El cliente_ enLinea responde presentando una ventana para que se digite el anuncio y enviarlo. 3: El servidor_ enLinea encapsula la información y la envía al destino que ha sido seleccionado. 5: El usuario_ emisor recibe una ventana donde se le indica el porcentaje de transferencia del archivo. Condición de salida: En el ordenador del ó los usuario(s) _ receptor(es) se visualiza la ventana de anuncio con la opción de cerrarla. Requerimientos especiales: Si el usuario_ emisor selecciono como usuario_ receptor a una comunidad, recibirán el anuncio solo aquellos usuarios que se encuentren conectados al SCME 62 9 Tercer escenario del sistema Nombre del caso de Uso: Enviar Mensaje Actor Participante: Iniciado por un usuario (usuario_ emisor) se comunica con el servidor_ enLinea Condición inicial. 1: El usuario_ emisor selecciona al usuario_ receptor, y selecciona la opción de enviar mensaje (Chat). Flujo de eventos 2: El cliente_ enLinea se comunica con el servidor_ enLinea y establecen la comunicación con el usuario_ receptor. 3: El servidor_ enLinea encapsula la información y la envía al destino que ha sido seleccionado. 5: Tanto el usuario_ emisor como el usuario_ receptor mantienen la comunicación temporalmente. Condición de salida: Uno de los comunicación. dos usuarios decide cancelar la 63 9 Cuarto escenario del sistema Nombre del caso de Uso: Recibir Mensaje Actor Participante: Iniciado por un usuario (usuario_ emisor) se comunica con el servidor_ enLinea Condición inicial. 1: Que un usuario_ emisor lo haya seleccionado como usuario_ receptor de un mensaje (Chat). Flujo de eventos 2: Se mantiene una comunicación entre los dos usuarios, ya que temporalmente intercambian sus roles. Condición de salida: Uno de los dos usuarios decide cancelar la comunicación. 9 Quinto escenario del sistema Nombre del caso de Uso: Recibir Anuncio Actor Participante: Iniciado por un usuario_ receptor Condición inicial. 1: Que un usuario_ emisor lo haya seleccionado como usuario_ receptor de un anuncio. Flujo de eventos 2: El usuario_ receptor visualiza el anuncio en una ventana. Condición de salida: La ventana del anuncio es cerrada 64 9 Sexto escenario del sistema Nombre del caso de Uso: Recibir Archivo Actor Participante: Iniciado por un usuario_ receptor se comunica con el servidor_ enLinea Condición inicial. 1: Que un usuario_ emisor lo haya seleccionado como usuario_ receptor de un archivo. Flujo de eventos 2: El usuario_ receptor acepta la recepción del archivo, selecciona una ruta para guardarlo en su ordenador y lo descarga. Condición de salida: 3.5 Se indica el final de la descarga. Modelado de interacción entre objetos. (Diagramas de secuencia) En los diagramas de secuencia se unen los casos de uso con los objetos del sistema; es decir se muestra como es la distribución y comportamiento de un caso de uso (o escenario) entre sus objetos participantes. 65 9 Enviar Archivo Figura 18 Diagrama de secuencia para el envío de archivos El usuario_ emisor solicita al cliente_enLienea la orden de enviar un archivo, este se encarga de validar la orden teniendo en cuenta que el usuario se encuentre conectado e inicia una ventana para que cargue el archivo, de esta forma el usuario lo envía luego de cargarlo. El servidor_enLinea recibe la petición e inmediatamente interactúa con el usuario_ receptor para verificar si se puede empezar la transferencia; una vez hecho esto le confirma al usuario_ emisor que en el usuario_ receptor ha empezado la descarga. Figura 18. 66 9 Recibir Archivo Figura 19 Diagrama de secuencia para la recepción de archivos Primero que todo, esta etapa se cumple si ya se ha iniciado la orden desde un usuario_ emisor de enviarle un archivo. El usuario_ receptor interactúa con el servidor_ enlinea, aceptando la transferencia y el cliente_enLinea le carga una la ventana para que efectúe la descarga hacia una unidad de almacenamiento masivo. Figura 19. 67 9 Enviar Anuncio Figura 20 diagrama de secuencia para el envío de un anuncio. Esta secuencia sucede cuando el usuario_ emisor solicita la orden de enviar el anuncio ya sea hacia un usuario, ciertos usuarios o una comunidad en general, el cliente_enLinea valida entonces que a los usuarios que se les desea enviar el anuncio se encuentren conectados, y una vez hecho esto, presenta una interfaz en la cual el usuario_ emisor podrá digitar el anuncio y enviarlo. El anuncio es recibido primero que todo por el servidor, quien se encarga de encapsular la información y realizar la trasferencia hacia el destino específico. Figura 21 68 9 Recibir Anuncio Figura 21 diagrama de secuencia donde se ilustra la recepción de un anuncio En esta etapa el cliente_enLinea del usuario_ receptor creara una ventana emergente donde se visualizara el anuncio de un usuario_ emisor, y esta solo presentara la opción de cerrarla. Figura 21. 69 9 Enviar Mensaje Figura 22 Diagrama de secuencia para enviar un mensaje. (Chat) Aquí, cuado el usuario_ emisor solicite la orden de enviar el mensaje, el cliente_enLinea una vez valide que el usuario se encuentra conectado ilustrara una interfaz en la que se podrá digitar el mensaje. El servidor_ enLinea recibe la orden y establece la comunicación permanente entre los dos usuarios, encapsulando la información que se envíe. Figura 22. 70 9 Recibir Mensaje Figura 23 Diagrama de secuencia para recibir un mensaje. El cliente _ enLinea del usuario_ receptor recibe la orden y crea una interfaz igual a la del usuario_ emisor donde se muestra el mensaje del usuario_ emisor. Al crearse esta interfaz se establece la comunicación y los usuarios se encontraran intercambiando los roles de usuario, indefinidamente hasta que uno de ellos escoja terminar la conversación y preestablecida. Figura 23. por lo tanto cierre la comunicación ya 71 4 4.1 SCME (Sistema Colaborativo de Mensajeria Electrónica) Descripción Es una herramienta basada en tecnología Groupware la cual busca facilitar y agilizar el desarrollo de proyectos y aplicaciones software de una empresa u organización en la que se emplee. Para esto cuenta con ciertas características propias de una aplicación basada en tecnología Groupware, como son, la conversación entre uno o más usuarios, envío y recepción de anuncios, y transferencia de archivos. Esta herramienta esta implementada bajo la arquitectura Cliente- Servidor y utiliza como tecnología de desarrollo al lenguaje de programación JAVA. En este lenguaje se pueden desarrollar múltiples aplicaciones, pero en este caso nos referiremos a los Applets. . El SCME consta de un desarrollo de tres módulos que se, diferencian claramente como cliente_enLinea, servidor_enLinea y fachada_enLinea. En cada uno de estos módulos se almacena las clases o implementación necesaria para el correcto funcionamiento de la herramienta. 72 Luego para la ejecución y puesta en marcha se crea un archivo .jar con los archivos .class resultado de la compilación de cada una de las clases implementadas, proceso denominado deployment, y de esta forma se coloca entonces el .jar en un contenedor de Servlets (Tomcat) junto con un entorno JSP en el que estará cargado el applet. Figura 24. Se ilustran entonces las interfaces y ventanas que se modelaron en los diagramas de secuencia. Figuras 24 –32. Figura 24 Inicio del SCME 73 El SCME, depende de un sistema externo para el manejo de sesiones, desde donde un administrador del sistema será el encargado de asignarle al usuario las comunidades y los demás usuarios con los que interactuara dentro de la aplicación. Si el administrador de una comunidad ve la necesidad de que algunos de los usuarios interactúen con usuarios de otras comunidades, este deberá notificar al administrador del sistema externo para que este le asigne los nuevos usuarios o una comunidad en general según sea la necesitad. Luego de haberse cargado el applets, se visualizaran entonces las comunidades a las que el usuario pertenece y los respectivos usuarios conectados, a dichas comunidades. Ver Figura 25. Figura 25 Árbol de comunidades y usuarios. 74 Se muestra entonces en la figura 26, el proceso que deberá seguir el usuario_ emisor para llevar a cabo el envió de un archivo, proceso en el cual el usuario_ emisor hace click con el botón secundario sobre el usuario que escogió como usuario_ receptor. Figura 26 Envío de Archivo Luego se muestra una ventana donde se carga el archivo y posteriormente se envía. De la misma forma que al enviar un archivo, el usuario_ emisor selecciona al usuario_ receptor como se ilustra en la figura 27, para realizar el envió del anuncio. 75 Figura 27 Envío de Anuncio Se muestra entonces una interfaz en la cual el usuario_ emisor digita el mensaje pertinente al anuncio, figura 28. Figura 28 Interfaz para enviar el anuncio 76 El usuario_ receptor recibe el anuncio en una ventana como la que se muestra en la figura 29, en la cual al usuario solo se le permite cerrarla. Figura 29 Ventana de recepción del anuncio Para enviar un mensaje (Chat), el usuario_ emisor selecciona esta utilidad y en una ventana como la que se muestra en la figura 30, interactúa con el usuario_ receptor hasta que uno de los dos decida terminar la comunicación. 77 Figura 30 Envío de mensajes Una vez que el usuario_ receptor recibe el mensaje y le esta dando respuesta, el aplicativo le avisa al usuario_ emisor en la ventana de conversación que el usuario_ receptor le está escribiendo, ver figura 31. Luego ambos usuarios visualizarán la misma ventana, en la cual se ilustra la conversación actual que mantienen hasta que uno de los dos decida terminar la conversación. Figura 32. 78 Figura 31 Muestra cuando un usuario contesta un mensaje Figura 32 Conversación Mantenida por dos usuarios 79 4.2 Módulos que Componen el Sistema En estos módulos se encuentran los códigos fuentes, .class, .y .jar necesarios para la aplicación. Ver Tabla 2. Tabla 2, Especificación de las clases del SCME CARPETA NOMBRE DE LA CLASE DESCRIPCIÓN Especificación del Modulo cliente_enLinea CommunicationTCPIPServerFlow.j Se encarga de la comunicación TCP/IP para el Server en ava general. AnuncioInterface.java Para escribir el mensaje del anuncio a enviar y permite visualizar los destinatarios escogidos para el mismo. vtaguardarArchivo.java Permite visualización de la interfaz grafica para guardar el archivo de esta siendo enviado por otro usuario. Synchronizer.java client Clase encargada de permitir la sincronización entre la escritura y la lectura de datos en la clase LlamaChatServer al correspondiente cliente/usuario atendiendo en el momento al cual se encuentra 80 ServerConnection.java Clase que efectúa las operaciones de Lectura y Escritura del Cliente, se encarga de la creación del Socket TCP/IP para la comunicación con el cliente y de los flujos de salida (ObjectOutputStream) para la escritura de datos (Objetos) y el flujo de entrada (ObjectInputStream) para la lectura de datos (Objetos). SelectorArchivos.java Muestra La GUI para seleccionar la ubicación del archivo que se va a enviar permite elegir la ubicación del archivo y añadir la descripción del archivo que se va a enviar. CARPETA NOMBRE DE LA CLASE DESCRIPCIÓN Especificación del Modulo cliente_enLinea ProxySettingDialog.java Interfaz que muestra el cuadro de dialogo que permite el ingreso de la configuración de las propiedades del servidor Proxy usado. PrivateMsg.java Clase que maneja todo lo relacionado con las conversaciones privadas e identificación de las conversaciones establecidas por los usuarios. LlamaChat.java client Clase principal que se extiende de JApplet y se encarga de crear la interfaz gráfica (GUI) que despliega la aplicación del cliente con la cual el cliente interactúa y realiza todas sus acciones. 81 DynamicTree.java Clase que nos permite añadir, encontrar, añadir, eliminar e ignorar nodos del árbol (JTree) de forma dinámica. CommunicationTCPIPServerFlow.j Se encarga de la comunicación TCP/IP para el Server en ava general. CommandHistory.java Clase para manejar la historia de los mensajes/comandos desde el usuario esta en la forma de una de una pila (LIFO) de longitud fija que borra los ítems de el final de la pila cuando la longitud máxima es alcanzada extiende la clase lista encadenada; todos los ítems en la lista son cadenas (Strings) ChatPane.java Esta clase representa el panel o lienzo sobre el cual se visualiza el texto de cada una de las conversaciones que tienen lugar. MessageQueue.java Esta clase define dos métodos para colocar los ítems SocketData dentro del vector, y el método run es requerido para ser Runnable (esta es una clase multihilada) y agarra cualesquier ítems externos al Vector. El usa una combinación Common de los métodos wait() y notify() para mantener el método run desde una consulta sobre una cola vacía SocketConnection.java La interfaz para la conexión y comunicación entre las clases. 82 CARPETA NOMBRE DE LA CLASE DESCRIPCIÓN Especificación del Modulo cliente_enLinea SocketData.java Interfaz para representar los datos que van a ser transferidos sobre un socket cualesquiera, datos que necesitan ser enviados sobre un socket deben implementar esta interfaz y la interfaz Serializable así ellos pueden ser serializados y enviados sobre el socket. SD_Whisper.java Clase que encapsula el envío de un mensaje silencioso al usuario especificado. SD_UserDel.java Clase que encapsula solicitud de desconexión de un usuario del sistema sd SD_UserAdd.java Clase que encapsula el envío/adicción de un nuevo usuario que solicita conexión al sistema. SD_ServerCap.java Clase que encapsula el envió de las configuraciones del servidor. SD_Rename.java Clase que encapsula el cambio del nombre (renombramiento) del cliente/usuario. SD_Private.java Clase que encapsula el envío de un mensaje privado de conversación al usuario especificado. SD_Log.java Clase que encapsula el envío de objeto para controlar el estado del registro de las conversaciones. 83 SD_Kick.java Objeto/Clase que encapsula el envío de un objeto/dato usado para sacar al cliente/usuario especificado del canal. SD_Escribiendo.java Objeto/Clase que encapsula el envío de una confirmación de escritura (diciéndole que este cliente usuario le esta escribiendo actualmente) al cliente/usuario con el que este usuario esta conversando. SD_Error.java Clase que encapsula el envío de una notificación de un error que ha ocurrido. CARPETA NOMBRE DE LA CLASE DESCRIPCIÓN Especificación del Modulo cliente_enLinea SD_DataFile.java Clase que encapsula el envío de un mensaje tipo archivo de una conversación al destinatario especificado. SD_Chat.java Clase que encapsula el envío de un mensaje de una conversación al destinatario especificado. SD_Channel.java sd Clase que encapsula una solicitud de cambio de canal que esta siendo enviado por el usuario. SD_Archivo.java Clase que encapsula los datos del archivo que esta siendo enviado. SD_Anuncio.java Clase que encapsula el mensaje del envío de un Anuncio y los usuarios o grupos de destino 84 imdb.cer Certificado que proporciona Plataforma Siglo XXI, para desarrollos de tipo software. Especificación del Modulo servidor_enLinea common llamachatconf.xml Este archivo del modulo servidor_enLinea muestra un anuncio de que ocurrió una conexión exitosa al Chat Synchronizer.java Esta clase de igual forma también se encuentra en la parte del cliente en la carpeta client, pues tendrá que mantenerse la sincronización exacta entre los usuarios. Server LlamaChatServer.java Esta es la clase encargada de esperar Conexiones de los Clientes cada vez que un nuevo cliente se conecta, también se encarga de asignar el Socket TCP/IP que identificara de forma única la conexión de ese cliente a un Thread que se encargará de gestionar todas las peticiones realizadas por el cliente al cual se asignado para gestionar su conexión y comunicación. CARPETA NOMBRE DE LA CLASE DESCRIPCIÓN Especificación del Modulo servidor_enLinea ConfigParser.java Manejador por defecto para el archivo de configuración en XML 85 ClientConnection.java Server Clase que implementa la interfaz Runnable para gestionar todo lo relacionado con la conexión de cliente/usuario especificado el cual es identificado mediante su Socket TCP/IP. Cuando un usuario se conecta al servidor se crea un Instancia de está clase que se encarga de gestionar la conexión de cada usuario, así un hilo ClientConnection debe ser creado para cada nuevo cliente/usuario conectado. ChannelManager.java Esta clase maneja los canales para el servidor. Permite 3 tipos de canales. Ver Tabla 3 Especificación del Modulo fachada_enLinea Aquí se encuentran las clases con las conexiones a la Base de Datos, y de ejecución de los servlets. Se nombran entonces las carpetas y las clases que contienen. Bdatos 9 GrupoUsuarioDAO.java 9 UsuarioDAO.java fachada 9 FachadaModuloEnLinea.java 9 IfachadaModuloEnLinea.java 9 IDAO.java Servlet 9 servletFachadaModuloEnLinea.java valueobject 9 GrupoUsuarioVO.java 9 UsuarioVO.java 86 Tabla 3, canales para el servidor. CANAL Primer Canal DESCRIPCION El primero de los cuales, el canal por defecto (es solo uno) y es el canal por defecto al que los usuarios son enviados cuando se conectan. Segundo canal El segundo, canal del sistema es una colección de los canales que son permanentes y creados sobre la inicialización del programa desde el archivo de configuración. Tercer Canal En el tercero, los canales de usuario, son creados por los usuarios y pueden solo existir si son especificados en el sistema de configuración de archivos. Cuando un canal de usuario está vacío el es borrado. 87 ANALISIS DE LEGALIDAD El desarrollo y codificación necesaria de este proyecto se realizo bajo el software: JCreator LE 3.0, el cual es una versión gratuita. Para el diseño de las páginas JSPs, que actuan como contenedoras del applets donde se encuentra ejecutando la aplicación se diseñaron en la herramienta MACROMEDIA DREAMWEAVER ya que se cuenta con licencia para el desarrollo en la universidad de Pamplona. 88 CONCLUSIONES 9 En este trabajo se presentó el desarrollo de un SCME, que servirá de apoyo en la solución y desarrollo de proyectos software. Este pretende proporcionarle al usuario un mejor ambiente de trabajo colaborativo, y una excelente eficiencia en la comunicación. 9 El SCME constituye una herramienta poderosa y valiosa tanto para la comunidad especialista en el área de las nuevas tecnologías de desarrollo, como para la comunidad académica que se encuentra en formación. 9 Debido a que el desarrollo de esta herramienta esta hecho en java, adquiere una serie de características como es la de multiplataforma, lo que le permite al applet ejecutarse bajo cualquier sistema operativo. 9 La importancia de la implementación de esta herramienta dentro de la Universidad de Pamplona y no alguna otra de las ya referenciadas en el capitulo 1, se obtiene debido a que se encuentra desarrollada en base a los requerimientos específicos de esta entidad. 89 RECOMENDACIONES 9 Este sistema carece de un modulo de reuniones electrónicas 11 , por lo que se recomienda como trabajo futuro que se continúe trabajando en su desarrollo para obtener una herramienta mucho más útil para el trabajo en grupo. 9 Construir un modulo que le permita al usuario enriquecer la lista de usuarios pertenecientes a cierta comunidad, si así lo requiere 12 . 9 Con el fin de conservar una de las características principales de JAVA, como lo es la multiplataforma, el SCME se empaquetó en un archivo JAR, por lo tanto hay que tener instalada la JVM (java virtual machine) para su perfecta ejecución. 11 12 Pizarra electrónica, pantalla compartida Sin tener que recurrir a un sistema externo 90 REFERENCIAS Referencias Bibliografiítas: [INGE] Ingeniería de Software Orientado a Objetos, BRUEGGE, BERND y DUTOIT, ALLEN H. Pearson Education, México, 2002. [J2EE] Manual de Referencia, McGraw – Hill/Interamericana de España, S.A.U; Jim Keogh. [REVI] Revista Iberoamericana de educación (ISS: 1681 - 5653) Un acercamiento al trabajo colaborativo, consultado en enero del 2006. Referencias Web: [BSCW] Home Page, BSCW Groupware, Sitio oficial de la herramienta, http://bscw.fit.fraunhofer.de/, Consultado en enero del 2006. [CIEN] Proyecto personal, Rodrigo V A Barber, Ciencias Místicas, Argentina http://www.cienciasmisticas.com.ar/informatica/programacion/java/index.php, Consultado en enero del 2006. 91 [FRAN] Francisco José García Peñalvo, Área de Ciencias de la Computación e Inteligencia Artificial, Dpto. de Informática y Automática, Universidad de Salamanca, España, http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/Index.htm . Consultado en enero del 2006. [GENE] GeNeura, vinculado al grupo CASIP del Departamento de. Electrónica de la Universidad de Granada, España, http://geneura.ugr.es/~jmerelo/JSP/, Consultado en enero del 2006. [INST_01] Instituto Nacional de Estadística Informática, Perú, http://www.inei.gob.pe/web/metodologias/attach/lib616/CAP0302.HTM , consultado en enero del 2006. [INST_02] Instituto Nacional de Estadística Informática, Perú, http://www.inei.gob.pe/web/metodologias/attach/lib616/CAP0303.HTM , consultado en enero del 2006. [INST_03] Instituto Nacional de Estadística Informática, Perú, http://www.inei.gob.pe/web/metodologias/attach/lib616/CAP0304.HTM , consultado en enero del 2006. 92 [INST_04] Instituto Nacional de Estadística Informática, Perú, http://www.inei.gob.pe/web/metodologias/attach/lib616/CAP0306.HTM , consultado en enero del 2006. [INST_05] Instituto Nacional de Estadística Informática, Perú, http://www.inei.gob.pe/web/metodologias/attach/lib616/CAP0310.HTM , consultado en enero del 2006. [INST_06] Instituto Nacional de Estadística Informática, Perú, http://www.inei.gob.pe/web/metodologias/attach/lib616/CAP0312.HTM , consultado en enero del 2006 [INSTT] Instituto Tecnológico de la Paz, México, http://www.itlp.edu.mx/publica/tutoriales/sistsdist1/u1parte6.htm , consultado en enero del 2006. [JES] Sun Java Enterprise System, http://www.sun.com/software/javaenterprisesystem/, Consultado en febrero del 2006. [JAVA] Sun Developer Network, febrero del 2006. http://java.sun.com/applets/ , Consultado en 93 [LOTU] Home Page, LOTUS NOTES. www-142.ibm.com/software/sw-otus/products/product4.nsf/wdocs/noteshomepage, Consultado en febrero del 2006. [MAIL] MailxMail es una iniciativa de "Open E-learning", Barcelona, España, http://www.mailxmail.com/curso/informatica/java/capitulo1.htm, Consultado en enero del 2006. [MINI] Ministerio de Comercio, Industria y Turismo, Diagnostico de de las TI, Republica de Colombia, www.mincomercio.gov.co Consultado en enero del 2006. [NETM] Home Page, Netmeeting. http://www.microsoft.com/windows/netmeeting/, Consultado en febrero del 2006. [OFFI] Home Page, OpenOffice Groupware. http://groupware.openoffice.org/, Consultado en febrero del 2006. [SAME] IBM Lotus Sametime, http://www-142.ibm.com/software/sw- lotus/products/product3.nsf/wdocs/homepage, Consultado en febrero del 2006. [SECR] Secretaría del Consejo Superior de Administración Electrónica, España, http://www.csi.map.es/csi/silice/Global71.html, Consultado en enero del 2006. 94 [WEBC] Home Page, WebCT, http://www.webct.com/, Consultado en enero del 2006. [WIKI_01] Wikipedia, La Enciclopedia Libre, Web, http://es.wikipedia.org/wiki/Tomcat, consultado en enero del 2006. [WIKI_02] Wikipedia, La Enciclopedia Libre, Web, http://es.wikipedia.org/wiki/Servlet , consultado en enero del 2006. [WIKI_03] Wikipedia, La Enciclopedia Libre, Web, http://es.wikipedia.org/wiki/JavaServer_Pages , consultado en enero del 2006.