III. Propuesta de solución En este capítulo se presenta la solución propuesta, así como también la justificación del tipo de elección. La propuesta de solución se aproximará en tres escalones: Diagrama de contexto o de nivel 0: Diagrama jerárquico de la solución al más alto nivel posible. Diagrama de nivel 1: Diagrama en el que la propuesta de solución es aproximada como una solución siempre de alto nivel, pero en la cual se puedan ver sus componentes internos. Diagrama de nivel 2: Diagrama completo con todos los componentes de la solución propuesta. 3.1 Diagrama de contexto (Nivel 0) Desde la perspectiva del usuario final (administrador(es) del servidor), el proyecto consiste en diseñar un sistema de ingeniería para acercar el equipo servidor a sus administradores en cualquier lugar a cualquier hora del día utilizando mensajes de textos desde su teléfono móvil para administrar los servicios prestados por equipos servidores en una ubicación distante. Ordenes o comandos Página 38 de 82
El administrador podrá ejecutar comandos en el Servidor desde su celular y recibir la salida del comando. El administrador y el sistema WDS, podrá realizar las siguientes actividades: Realizar el monitoreo de algún servicio. Enviar comandos al equipo servidor. El procedimiento es bastante simple y consiste de los siguientes pasos: Administrador, envía un mensaje al servidor Servidor recibe el mensaje y ejecuta el comando asociado Servidor capta la salida del comando en el sistema operativo y se la devuelve al Administrador, vía mensaje de texto, lo cual simula un control remoto del servidor. El caso de uso puede verse en la siguiente figura. WDS «uses» Envia /Recibe SMS «uses» «uses» Admin Fisico Ejecutar comando Admin Virtual A continuación se muestra el correspondiente diagrama de secuencia Página 39 de 82
Admin Viirtual WDS Sistema Operativo Administrador Físico SMS Comando Salida del comando Envia Resultado 3.2 Diagrama de nivel 1 El mensaje es recibido en el servidor. Para esto será necesario tener otro celular, quien reciba el mensaje. Ordenes o comandos El celular que recibe el mensaje, estará conectado al Server, por USB, bluetooth, puerto infrarrojo u otros medios. El mensaje será trasladado a una base de mysql, a través de un demonio denominado smsd. Dicho demonio es parte del proyecto Gammu. Página 40 de 82
En la base de datos, el mensaje deberá ser transformado a comando. Esto será la tarea que realizará un demonio del presente proyecto WDS, llamado i2ic, el cual recibe su nombre precisamente de Inbox to Inbox Command Una vez el comando se ha identificado, un programa en java, que es parte del núcleo del presente proyecto WDS, hará la ejecución del comando a nivel del sistema operativo, capturando la salida del mismo y la enviará de regreso al celular que inició toda esta cadena de pasos. WDS Entrega de SMS Lee mensaje SMSD Mensaje SMSD I2ic Gammu MySQL JAVA Admin Fisco Comando a Ejecutar Sistema Operativo 3.3 Diagrama de nivel 2 En este diagrama se visualiza la solución completa, con todos los detalles. En primera instancia, se presente un esquema completo de la solución y seguidamente se realiza el diagrama de secuencia, a fin de visualizar la interacción de todos los componentes. Página 41 de 82
WDS Entrega de SMS Lee mensaje SMSD Gammu SMS Codificado Admin Fisco Inbox MYSQL Inbox Command Outbox Command Hibernate i2ic JAVA Sistema Operativo El proceso empieza enviando el mensaje desde un celular válido. Dicho mensaje es recibido en el celular que controla al servidor. El Mensaje es tomado por el demonio smsd el cual lo almacenara dentro de la estructura de base de datos. Luego otro demonio llamado i2ic revisa que el mensaje sea con el formato :1 y va a la base de datos a buscar el comando correspondiente. El comando encontrado está compuesto de dos elementos: archivo y ruta. Archivo es el nombre del archivo que puede contener uno o más comandos (Script) y ruta es la ubicación del dicho archivo en el sistema de archivos. El mensaje, debidamente identificado con su script asociado, es conocido ahora como InboxCommand. Una vez el InboxCommand recibe un comando, la aplicación Java, toma el objeto InboxCommand, por medio del motor de Página 42 de 82
persistencia llamado HIBERNATE, ejecuta el comando y finalmente convirtiéndolo en un objeto de salida (Outbox), el cual va hacia el cliente, en forma de SMS, por medio del celular conectado al servidor. La secuencia en la que el diagrama anterior realiza la interacción con todos los componentes, se puede apreciar a través del diagrama de secuencia de la siguiente figura Celular1 Celular2 Smsd Inbox Table I2ic Command Table JavaClient Os Outbox Table Enviar Sms Leer Sms Insert Sms Leer Sms Marcar Leído getid getscriptname Return Script Mensaje1 Exe Command getoutput Prepare Outbox Insert Outbox Leer Sms Escribir Sms Send Sms 3.4 Software a utilizar: 3.4.1 Gammu. Este proyecto de código abierto en lenguaje C ANSI, que permite la recepción y envío de mensajes SMS utilizando una base de datos mysql. Este es gratuito y es podría decirse que es el punto de partida del presente proyecto WDS. Originalmente se había seleccionado el proyecto GNOKI el cual permite el control del envío y recepción de mensajes, sin embargo la parte de la base de datos no la incluye. El presente proyecto WDS, tendrá que realizar todos los mecanismos para elevar el mensaje a la categoría de comando, interpretar el comando, ejecutarlo en el sistema Página 43 de 82
operativo y finalmente capturar la salida del comando y enviarla de nuevo como SMS al celular solicitante. 3.4.2 Hibernate. Es un motor de persistencia, es decir un servicio de alto rendimiento objeto/relacional. Es la más flexible y poderosa solución en el mercado de motores de persistencia. Hibernate se encarga del mapeo de clases a sus correspondientes tablas de base de datos. El propósito de usar Hibernate en este proyecto es reducir el tiempo de desarrollo y evitar el uso de SQL dentro del código, así como evitar conexiones con JDBC, de manera de programar ciento por ciento orientado a objetos. 3.4.3 Java. El programa de Java puede ejecutarse en cualquier máquina o plataforma. El lenguaje fue diseñado con las siguientes características en mente: Simple, familiar, robusto, seguro, portable, etc. 3.4.4 Perl. Este lenguaje combina en forma concisa las mejores características de lenguajes como C, sed, awk y sh. En general, es posible reducir extensos programas escritos en C a pocas líneas de código de un programa PERL, con la ventaja adicional de que corren sin cambio sobre casi cualquier plataforma existente, lo que convierte a PERL en el lenguaje ideal para desarrollo de prototipos y aplicaciones robustas 100% portables. Página 44 de 82