Upload
vunhan
View
219
Download
0
Embed Size (px)
Citation preview
APLICACIÓN MÓVIL PARA LA GESTIÓN DE USUARIOS, CONTROL DE
ARCHIVOS Y FLUJOS DE OPERACIONES A TRAVÉS DE UNA TERMINAL
PORTÁTIL EN AMBIENTES LINUX CON HERRAMIENTAS DE GESTIÓN DE
AUDITORÍA Y SEGURIDAD CRIPTOGRÁFICA
BRANDON ALEXIS CASTILLO PINZÓN
CRISTHIAN CAMILO CANGREJO SÁENZ
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
INGENIERÍA EN TELEMÁTICA
FACULTAD TECNOLÓGICA
BOGOTÁ D.C.
AÑO 2017
APLICACIÓN MÓVIL PARA LA GESTIÓN DE USUARIOS, CONTROL DE
ARCHIVOS Y FLUJOS DE OPERACIONES A TRAVÉS DE UNA TERMINAL
PORTÁTIL EN AMBIENTES LINUX CON HERRAMIENTAS DE GESTIÓN DE
AUDITORÍA Y SEGURIDAD CRIPTOGRÁFICA
Brandon Alexis Castillo Pinzón
Cod. 20152678006
Cristhian Camilo Cangrejo Sáenz
Cod. 20161678001
Trabajo de grado dirigido por:
Darín Mosquera
Trabajo de grado para obtener el título de:
Ingeniero en telemática
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
INGENIERÍA EN TELEMÁTICA
FACULTAD TECNOLÓGICA
BOGOTÁ D.C.
AÑO 2017
Nota de aceptación:
_______________________________ _______________________________ _______________________________ _______________________________ _______________________________ _______________________________ _______________________________
_______________________________
Firma del tutor
_______________________________
Firma del jurado
Bogotá, Noviembre de 2017
DEDICATORIA
Este trabajo de grado está dedicado a nuestras familias por su dedicación, empeño, esfuerzo y su apoyo incondicional. Es gracias a ellos a quienes debemos nuestra formación como profesionales a lo largo de nuestro ciclo académico.
AGRADECIMIENTO
A la Universidad Distrital Francisco José de Caldas por brindarnos la oportunidad de ser parte de ella.
A nuestro tutor el profesor Darín Mosquera, por su orientación y recomendaciones, las cuales, en su experiencia como docente, fueron de gran aporte e importancia para la consecución de este gran objetivo.
A todos los que de alguna u otra manera fueron el apoyo clave para cumplir este objetivo.
TABLA DE CONTENIDO
Contenido
RESUMEN ........................................................................................................................... 11
ABSTRACT .......................................................................................................................... 12
INTRODUCCIÓN ................................................................................................................. 13
1. TEMA......................................................................................................................... 14
2. PLANTEAMIENTO DEL PROBLEMA ...................................................................... 15
2.1. DESCRIPCIÓN .................................................................................................. 15
2.2. FORMULACIÓN DEL PROBLEMA ................................................................... 17
3. ALCANCES Y DELIMITACIONES............................................................................ 18
4. OBJETIVOS .............................................................................................................. 21
4.1. OBJETIVO GENERAL ....................................................................................... 21
4.2. OBJETIVOS ESPECIFICOS ............................................................................. 21
5. JUSTIFICACION ....................................................................................................... 22
6. MARCO DE REFERENCIA ...................................................................................... 24
6.1. MARCO TEORICO ............................................................................................ 24
6.2. MARCO METODOLOGICO .............................................................................. 35
6.3. MARCO CONCEPTUAL .................................................................................... 39
7. FACTIBILIDAD .......................................................................................................... 42
7.1. FACTIBILIDAD TECNICA ................................................................................. 42
7.2. FACTIBILIDAD OPERATIVA............................................................................. 44
7.3. FACTIBILIDAD ECONOMICA ........................................................................... 45
7.4. FACTIBILIDAD LEGAL ...................................................................................... 47
8. CRONOGRAMA DE ACTIVIDADES ........................................................................ 48
9. DESARROLLO .......................................................................................................... 49
9.1. ANALISIS DEL SISTEMA .................................................................................. 50
9.1.1. REQUERIMIENTOS DEL APLICATIVO........................................................ 50
9.1.2. IDENTIFICACION DE ACTORES ................................................................. 53
9.1.3. CASOS DE USO ............................................................................................ 53
9.1.4. DIAGRAMAS DE ACTIVIDAD ....................................................................... 56
9.1.5. MODELO DEL DOMINIO DEL SISTEMA ..................................................... 60
9.2. DISEÑO DEL SISTEMA ........................................................................................ 61
9.2.1. MODELO ENTIDAD-RELACION ................................................................... 61
9.2.2. MODELO LOGICO (DIAGRAMA DE CLASES) ............................................ 63
9.2.3. DIAGRAMA DE COMPONENTES ................................................................ 65
9.2.4. MODELO FÍSICO (DIAGRAMA DE DESPLIEGUE) ..................................... 66
9.2.5. DIAGRAMAS DE SECUENCIA ..................................................................... 67
9.3. IMPLEMENTACION DEL SISTEMA ..................................................................... 71
9.3.1. BASE DE DATOS .......................................................................................... 71
9.3.2. COMPONENTES DE LA IMPLEMENTACIÓN ............................................. 72
9.3.3. ESQUEMA GENERAL DE LA APLICACIÓN ................................................ 75
9.4. PRUEBAS DEL SISTEMA .................................................................................... 76
9.4.1. PRUEBAS UNITARIAS .................................................................................. 76
9.4.2. PRUEBAS DE INTEGRACIÓN ...................................................................... 79
9.4.3. PRUEBAS DE CONCURRENCIA ................................................................. 80
CONCLUSIONES ................................................................................................................ 87
RECOMENDACIONES ........................................................................................................ 88
REFERENCIAS .................................................................................................................... 88
LISTA DE TABLAS
Tabla 1: Etapas del proceso unificado. ............................................................................................. 37
Tabla 2: Requerimientos de sistema a nivel de usuario web ........................................................... 43
Tabla 3: Requerimientos de sistema a nivel móvil ........................................................................... 44
Tabla 4: Cuadro de gastos del proyecto ........................................................................................... 46
Tabla 5: Requerimientos funcionales. .............................................................................................. 51
Tabla 6: Requerimientos no funcionales. ......................................................................................... 52
Tabla 7: Lista preliminar de casos de uso y sus funciones. ............................................................... 54
Tabla 8: Convenciones, modelo entidad-relación ............................................................................ 61
Tabla 9: Convenciones, modelo lógico ............................................................................................. 63
Tabla 10: Cuadro de librerías utilizadas ........................................................................................... 75
Tabla 11: Estadísticas de pruebas de concurrencia finales............................................................... 86
LISTA DE IMAGENES
Imagen 1: Diagrama de la solución general ..................................................................................... 18
Imagen 2: Modelo Vista Controlador ............................................................................................... 31
Imagen 3: Arquitectura de la tecnología JavaEE .............................................................................. 32
Imagen 4: Capas del sistema operativo Android .............................................................................. 34
Imagen 5: Estructura de arquitectura de notificaciones push .......................................................... 35
Imagen 7: Proceso iterativo e incremental ...................................................................................... 38
Imagen 8: Cronograma de actividades ............................................................................................. 48
Imagen 9: Casos de uso generales del proyecto .............................................................................. 55
Imagen 10: Diagrama de actividad - cargar archivos ........................................................................ 56
Imagen 11: Diagrama de actividad - ejecutar comandos ................................................................. 57
Imagen 12: Diagrama de actividad - crear usuarios ......................................................................... 58
Imagen 13: Diagrama de actividad - generar reportes de auditoría ................................................. 59
Imagen 14: Modelo del dominio del sistema ................................................................................... 60
Imagen 15: Modelo entidad-relación ............................................................................................... 62
Imagen 16: Modelo lógico del sistema ............................................................................................. 64
Imagen 17: Diagrama de componentes ........................................................................................... 65
Imagen 18: Componentes interoperables ........................................................................................ 66
Imagen 19: Modelo físico ................................................................................................................. 67
Imagen 20: Diagrama de secuencia - cargar archivos ...................................................................... 68
Imagen 21: Diagrama de secuencia - ejecutar comandos ................................................................ 69
Imagen 22: Diagrama de secuencia - crear usuarios ........................................................................ 70
Imagen 23: Diagrama de secuencia - generar reportes de auditoría ............................................... 70
Imagen 24: Diagrama de secuencia - gestionar equipos .................................................................. 71
Imagen 25: Arquitectura JavaEE ....................................................................................................... 73
Imagen 26: REST API ........................................................................................................................ 74
Imagen 27: Contexto de acción de JWT ........................................................................................... 74
Imagen 28: Esquema general del sistema ........................................................................................ 76
Imagen 29: Ciclo de pruebas unitarias ............................................................................................. 77
Imagen 30: Ubicación de pruebas unitarias dentro del proyecto .................................................... 78
Imagen 31: Fase inicial de prueba unitaria ....................................................................................... 78
Imagen 32: Método de prueba unitaria ........................................................................................... 79
Imagen 33: Formato de prueba de integración en Postman ............................................................ 80
Imagen 34: Estructura de archivos de JMeter .................................................................................. 81
Imagen 35: Modelo de pruebas de concurrencia ............................................................................. 82
Imagen 36: Formato de prueba en JMeter ...................................................................................... 82
Imagen 37: Estadísticas de prueba de concurrencia I ...................................................................... 83
Imagen 38: Estadísticas de prueba de concurrencia II ..................................................................... 84
Imagen 39: Estadísticas de prueba de concurrencia III .................................................................... 85
LISTA DE ANEXOS
Anexo A: Manual de usuario.
Anexo B: Manual del programador.
Anexo C: Archivos de pruebas Postman.
11
RESUMEN
La administración de infraestructuras de hardware/software y la gestión de recursos informáticos en la actualidad, supone un reto en términos de seguridad, control y supervisión para las áreas de IT en las organizaciones y/o compañías que cuentan con un número considerable de servidores, equipos, proveedores, etc., los cuales hacen parte del funcionamiento de sus servicios o productos como también del dominio de sus negocios y mercado. Con el propósito de reducir la complejidad en la comunicación e interoperabilidad de diferentes componentes de una infraestructura tecnológica, se hace necesario proveer maneras más eficientes y seguras, que permitan el control de diferentes eventos inesperados que puedan ocurrir en ambientes funcionales para cualquier organización tecnológica. Más específicamente, en la gestión de servidores y equipos con sistemas basados en Unix existe una gran dificultad en el proceso de administración de recursos o la comunicación con componentes externos, todo esto requiere conocimientos técnicos y trabajo presencial permanente para su supervisión y control. Surge entonces la necesidad de crear una herramienta móvil que ayude a superar algunos de estos inconvenientes que están presentes alrededor de ámbitos como la comunicación, el control y la gestión de recursos en sistemas operativos Linux. Después de un análisis de las necesidades presentes en las organizaciones en términos de administración de equipos de TI, se decide crear un conjunto de herramientas funcionales a través de ambientes móviles con características como: La ejecución de operaciones en tiempo real, control de archivos, gestión de usuarios, entre otros. Para la construcción del presente trabajo de grado se utilizó el Proceso Unificado de Desarrollo Software UP (Unified Process) como metodología a seguir para el producto final, utilizando cada una de sus fases e implementación para el desarrollo del sistema, junto con el Lenguaje Unificado de Modelado (UML) para definir las funcionalidades del mismo. Para la implementación del sistema, se utilizó Java como lenguaje de desarrollo y Android Studio para el desarrollo móvil. Además, se estableció un mecanismo de sincronización a través de servicios web para la comunicación entre componentes funcionales del sistema mediante protocolo HTTP.
Finalmente, se dio paso a la instalación de la herramienta dentro entornos In Cloud (en la nube) para la realización de pruebas funcionales, de integración y performance, y se generó la documentación final con los resultados del proceso de implementación.
12
ABSTRACT
The management of hardware / software infrastructures and the management of computing resources at present represents a challenge in terms of security, control and supervision for IT areas in organizations and / or companies that have a considerable number of servers, equipment, suppliers, etc., which are part of the operation of its services or products as well as the domain of its business and market.
In order to reduce the complexity of communication and interoperability of different components of a technological infrastructure, it is necessary to provide more efficient and secure ways to control different unexpected events that may occur in functional environments for any technological organization. More specifically, in the management of servers and computers with Unix-based systems there is a great difficulty in the process of resource management or communication with external components, all this requires technical knowledge and permanent face-to-face work for its supervision and control.
The need arises to create a mobile tool that will help overcome some of these drawbacks that are present around areas such as communication, control and management of resources in Linux operating systems.
After an analysis of the present needs in the organizations in terms of administration of IT equipment, it was decided to create a set of functional tools through mobile environments with characteristics such as: Execution of operations in real time, control of files, and management of users, among others.
For the construction of the present work of degree was used the Unified Process of Software Development UP (Unified Process) like methodology to follow for the final product, using each one of its phases and implementation for the development of the system, along with the Unified Language of Modeling (UML) to define the functionalities of the same. For the implementation of the system, we used Java as development language and Android Studio for mobile development. In addition, a synchronization mechanism was established through web services for the communication between functional components of the system through HTTP protocol.
Finally, the tool was installed in In Cloud environments to perform functional, integration and performance tests, and the final documentation was generated with the results of the implementation process.
13
INTRODUCCIÓN
La gestión, administración y control de recursos informáticos como servidores y equipos Linux, actualmente requiere la búsqueda de nuevos conocimientos, habilidades y sobre todo herramientas que actúen como agentes de cambio para su utilización adecuada desde diferentes ubicaciones, accesos y plataformas. Las organizaciones que poseen este tipo de infraestructuras tecnológicas donde se encuentran sus sistemas y ambientes de producción, requieren de nuevas alternativas para suplir las demandas, mejorar los entornos y dar una respuesta proactiva ante cualquier cambio o inconveniente que pueda surgir en el ciclo normal de sus proceso sobre estos equipos.
Estas herramientas que ayudan en gestión de estos sistemas operativos, deben reducir la complejidad y mejorar la factibilidad en este proceso para que las empresas entreguen a sus distintos clientes el producto y/o deseado a partir de sus límites y tiempos de desarrollo, cumpliendo ciertos objetivos y estándares de calidad en sus etapas de operación y despliegue.
Por esta razón, es conveniente y fundamental el disponer de elementos o técnicas a través de servicios o aplicaciones que permitan gestionar y coordinar de manera centralizada las operaciones a realizar sobre estos ambientes en donde se encuentran aplicaciones de software, servidores de archivos, configuraciones de dominios, bases de datos, entre otros.
En definitiva, en este proyecto se expone entonces la realización de una aplicación móvil desarrollada como una alternativa para modernizar los procedimientos internos para la administración remota de los recursos y dispositivos dentro de una red bien sea pública o privada utilizando el sistema Linux como base operativa.
Es así, que el presente documento se detalla la investigación y el proceso de desarrollo predispuesto para el alcance del sistema final y sus diferentes características. A través del contenido, se podrá observar cómo fueron alcanzados cada uno de los objetivos propuestos con el uso de una metodología, herramientas de desarrollo y estándares de software. Por otra parte, se demuestra la importancia del dominio del problema y los conceptos afines que hicieron parte del análisis mismo de la aplicación, para finalmente realizar un conjunto de funcionalidades a la medida y uso específico en general dirigido a una comunidad específica.
14
1. TEMA
El contexto y entorno sobre el cual aplica la solución tecnológica de este proyecto está específicamente relacionado con el área de trabajo correspondiente a la gestión de recursos de sistemas operativos Linux por acceso remoto.
Por ende, se pretende que el producto final sea una herramienta complementaria y de gran valor en funciones relacionadas con la gerencia, auditoría y control de recursos de servidores o equipos con este tipo de ambientes que pueda ser ejecutada desde cualquier ubicación.
Estas funciones hacen referencia a un conjunto de características como: operaciones en tiempo real, gestión de archivos, control de grupos y usuarios, seguridad en la comunicación, conexión con equipos externos, etc.
15
2. PLANTEAMIENTO DEL PROBLEMA
2.1. DESCRIPCIÓN
Actualmente, muchos de los sistemas o recursos en producción en términos de ambientes informáticos se encuentran soportados sobre entornos UNIX; en especial en servidores soportados sobre el núcleo de Linux en diferentes versiones mayormente utilizadas como Debian, RedHat, Fedora, Centos o Ubuntu.
Estos ambientes requieren de un grado de complejidad y conocimiento técnico, así como personal especializado, para el control de procesos, operaciones, soporte y despliegue de recursos en tiempo real. Por otra parte, requieren del uso de herramientas y utilidades para la ejecución de procedimientos o acciones como terminales, ambientes gráficos, control de archivos, administradores de tareas, etc.
Es en este punto, dónde se requiere de nuevas herramientas productivas que permitan realizar operaciones de manera remota y desde cualquier dispositivo con el objeto de brindar una adecuada gestión de soporte y control de recursos ante las eventualidades que se presentan en los proyectos IT.1 En el presente existen herramientas para esos sistemas que están enfocadas a facilitar el acceso y/o uso de estos servicios o servidores, que son de libre acceso y representan una gran utilidad para la gestión de los mismos; de las cuáles se hablará más adelante el en estado del arte sobre esta temática.
Dadas las condiciones que anteceden a estos sistemas operativos en ambiente Linux, es de mencionar que estos pueden convivir bajo ambientes distribuidos y despliegues tipo cluster, con gran variedad de componentes de hardware y de software que se comunican entre sí y conforman un middleware en diferentes sistemas de información o infraestructuras empresariales. Dentro de estos encontramos, el uso acelerado y exponencial que se ha dado a los dispositivos móviles mediante aplicaciones de software que cada día se integran a sistemas ya existentes o comprenden un nuevo mercado en términos de funcionalidades de comunicación, interoperabilidad o interactividad. Para ilustrar esto, cabe mencionar la integración que se ha dado a través de smartphones y tablets por sus características de almacenamiento, movilidad, uso de redes de datos, conectividad, multiplicidad de funciones y conexión con sistemas externos.
El esquema actual bajo el que conviven muchas de las organizaciones sin capacidades económicas de gran valor o infraestructura de última tecnología obedece a principios de tareas manuales o procedimientos muy técnicos que se realizan por el personal especializado ante la complejidad de los diferentes
1 RODRIGUEZ, José Ramón; GARCÍA, Jordi; LAMARCA, Ignacio. Gestión de proyectos informáticos: métodos, herramientas, y casos. Editorial UOC. Barcelona. p 34.
16
servicios a nivel de hardware y software. Dentro de este marco técnico con relación a ambientes Unix, encontramos que:
Linux es un sistema multitarea y multiusuario, el cual permite la ejecución
simultánea de procesos y la existencia de diversos usuarios conectados en
tiempo real. Sin embargo, muchas de las operaciones y procedimientos
necesitan de aplicaciones o herramientas de terceros para el acceso,
operación y ejecución de funcionalidades a través de terminales y consolas
de comandos. En este caso, las organizaciones deben hacer búsqueda de
utilidades con estas características y proporcionar mecanismos complejos
para la ejecución de cada una de estas tareas.
“Hoy Linux, es famoso por ser un sistema operativo estable robusto y
eficiente. Se utiliza en más de un tercio de los servidores del mundo y dos
tercios de los servidores web”. Por esta razón, las organizaciones conviven
con la complejidad de la administración del sistema operativo y el
aprovechamiento de sus recursos a nivel de hardware, que no es realizado
de la mejor manera al depender el conocimiento técnico del mismo y lo que
conlleva a la búsqueda de factores externos como otras organizaciones con
las competencias respectivas.
Muchas de las operaciones que se realizan sobre estos ambientes, al ser
directamente sobre el sistema operativo, no dejan rastro en términos de
auditoría o control ante la eventualidad de cualquier inconveniente en
términos de pérdida de información o registro de operaciones.
Las telecomunicaciones móviles hoy presentan un reto para las
organizaciones y su adaptación a este nuevo mercado que ha tomado
fuerza en los últimos años. Bien es cierto que algunas de las empresas
carecen de la integración de estos servicios a nivel de aplicaciones y
todavía presentan tareas manuales en la administración de recursos que
pudieran ser automatizados a través de las capacidades de dispositivos
móviles por sus grandes características en términos de conexión,
comunicación y red.
Esta perspectiva en las organizaciones y áreas de IT, como se mencionó en los
apartados anteriores, representa algunas de las dificultades y problemáticas que
se presentan debido al grado de complejidad o dificultad en la administración de
recursos de hardware y/o software. Por esta razón, se pone de manifiesto la
necesidad de proveer nuevas herramientas o soluciones de tipo móvil, que
permitan gestionar y dar mayor calidad a los procesos de una manera remota,
efectiva y eficaz. Esto debido a las siguientes dificultades o contrariedades que
corresponden a situaciones como:
17
No existe una aplicación o solución móvil que permita a través de
conectividad de datos, el poder ejecutar funciones u operaciones sobre
ambientes o entornos Linux de una manera remota y desde cualquier lugar.
No existe una aplicación o solución móvil que permita controlar de forma
remota equipos con OS Linux y generar al mismo tiempo logs de auditoría
por cada acción realizada.
Las herramientas para controlar, gestionar y administrar información
requieren de otra máquina física como computador o portátil, para poder
realizar sus funciones propuestas.
La administración de servidores o recursos, requiere de personal
especializado para realizar operaciones específicas, las cuáles podrían ser
automatizadas teniendo presente el grado de complejidad.
Por último, lo que se propone con respecto a esta problemática es el proveer de
una herramienta funcional que reduzca la complejidad inherente a la
administración de estos sistemas operativos, haciendo posible muchas de las
tareas que requieren de atención presencial, puedan ser ejecutadas remotamente
y de manera centralizada. Esto a través de un servicio móvil que no necesite
tiempo o espacio en términos de equipos, sino que en vez de ello, pueda ser
consumido a través de una aplicación móvil que permita gestionar los recursos y la
información relevante para cualquier organización.
2.2. FORMULACIÓN DEL PROBLEMA
¿Es necesario o se justifica la implementación y construcción de una aplicación móvil como un prototipo de seguridad web que de soporte o sea una herramienta funcional para la administración, gestión, control y seguimiento de los recursos empresariales que se encuentran contenidos en sistemas operativos Linux?
18
3. ALCANCES Y DELIMITACIONES
De acuerdo con la problemática en mención y con los inconvenientes detectados,
se evidencia la necesidad de proveer una herramienta con cierto tipo de
funcionalidades, que permita en primer lugar, ejecutar acciones de control y
consulta de forma remota desde un dispositivo móvil hacia un equipo distante
haciendo uso de una conexión segura, que tenga además un conjunto de
componentes distribuidos, que permita de igual forma llevar un registro de
auditoría, esto con el objetivo de hacer seguimiento y control sobre información o
datos relevantes dentro de un sistema operativo Linux.
Este esquema de funcionalidades y características se contempla a través de tres
componentes fundamentales:
Aplicación móvil.
Sistema web de auditoría y procesamiento de acciones a través de un canal seguro de comunicación HTTP.
Una base de datos para registrar todos los procedimientos de manera relacional y organizada, así como los diferentes usuarios con los permisos de ejecución designados.
Imagen 1: Diagrama de la solución general
Las funciones y características del sistema en general están dadas para cuatro
elementos esenciales que son: consola de operaciones, gestión de archivos,
grupos y usuarios. Cualquier otra herramienta, programa y/o ejecutable que haga
parte del Sistema Operativo Linux se encuentra descartada de los objetivos de
este proyecto y será considerado para una futura extensión de este trabajo de
grado. El sistema contará con un login de acceso para usuarios de la aplicación
(no usuarios linux) que permitirá acceder a las funcionalidades móviles, y existirá
un usuario administrador por defecto. La versión de Unix soportada para esta
entrega es Ubuntu.
19
Por otra parte, como se detalla en la imagen superior, el sistema contará con una
base de datos que será de tipo PostgreSQL y podrá estar en la misma máquina o
en cualquier otro ambiente que acepte conexiones TCP. Para esto, se dispondrá
de un archivo SQL para la instalación de los elementos más importantes de
persistencia de datos.
La máquina a controlar, deberá disponer de los puertos 22 y 8080 disponibles para
la integración de los componentes y sus características.
El archivo de instalación y entregable para el componente de integración con el
sistema operativo es un archivo .WAR que será instalado en un servidor Tomcat
con versión superior a 7, por tanto, se asume que se dispone de este servidor de
aplicaciones y su respectiva instalación o customización.
Alcance para la aplicación móvil:
Todas las funcionalidades se implementarán únicamente en ambientes móviles
sobre sistemas operativos Android, permitiendo la ejecución de tareas y
procedimientos desde cualquier lugar, esto, siempre y cuando se cuente con una
conexión a Internet o con una conexión de datos permanente. En este caso se
contempla un alcance utilizando únicamente dispositivos con Sistema Operativo
(OS) Android superiores a la versión 4.0 en términos de garantizar un rendimiento
óptimo y una calidad adecuada en el manejo de la comunicación. De igual manera
y como condición esencial, también se requiere el uso de un plan de datos, o
conectividad WIFI para la integración remota del sistema en general con la
máquina Linux. Las características a nivel visual y tiempos de respuesta de la
aplicación dependerán exclusivamente de las capacidades del Smartphone y su
rendimiento con respecto a variables como la comunicación, procesamiento y
gestión de las operaciones. La aplicación no permitirá hacer operaciones de
rollback o sentencias para devolver los cambios realizados.
La aplicación tendrá sólo una orientación vertical, por lo que no existirá la opción
de autorotación y configuración de sus componentes para este tipo de
visualización.
En cuanto a las funcionalidades se definen los siguientes alcances:
Archivos: Esta característica gestionará solo los procesos de creación (a
través de carga del sistema android: selección), edición (propiedades del
archivo) y eliminación de archivos. Por otra parte también se podrán crear,
editar y eliminar directorios. Esta función no permitirá editar el contenido
interno de un archivo u otras características de configuración. Por otra
parte, se delimita que los accesos a archivos y directorios estarán
determinados por el usuario en sesión quien deberá contar con los
privilegios necesarios para realizar las operaciones mencionadas.
20
Consola: Esta funcionalidad permitirá al usuario ejecutar comandos del
sistema operativo en tiempo real y obtener la respuesta del entorno Unix de
manera inmediata. Se especifica qué operaciones relacionadas para la
edición de archivos también se encuentran descartadas (Ej: comando nano
o vi). El uso y disponibilidad de esta herramienta dependerá del
conocimiento técnico del usuario quién ingresará las instrucciones de
acuerdo a sus necesidades y usabilidad.
Grupos y usuarios: Se propone que esta utilidad sea para creación,
edición y eliminación de usuarios y/o grupos de acuerdo a las propiedades
y atributos que definen el sistema operativo para su gestión. Las
operaciones realizadas serán hechas bajo la responsabilidad del usuario en
cuestión.
Alcance para el componente web:
El componente web deberá ser instalado en sistemas operativos tipo Linux,
específicamente en la máquina o servidor al cual se quiera hacer seguimiento y
control. Preferiblemente versiones Ubuntu 16.10 o superiores. Además, deberá
contar con un mínimo de espacio de 300 MB y un puerto TCP disponible (8080)
abierto para la visualización de la auditoría, la transferencia de información y el
control de acciones. El servidor de aplicaciones deberá contar con los permisos
pertinentes de despliegue y ejecución sobre el sistema. Para este componente, no
se encuentran determinadas características como balanceo de cargas, despliegue
en cluster o servidores mirroring.
La integración con la base de datos será configurable a través de un archivo de
propiedades donde se establecerán los datos de conexión y configuración del
servidor.
Alcance para la base de datos:
La base de datos podrá ser instalada en el mismo sistema operativo y deberá
contar con un mínimo de espacio de 600 MB. El archivo de instalación podrá ser
ejecutado por un usuario PostgreSQL con los permisos y privilegios suficientes de
creación y actualización de elementos.
21
4. OBJETIVOS
4.1. OBJETIVO GENERAL
Analizar, diseñar e implementar una aplicación móvil para la gestión de usuarios, control de archivos y flujos de operaciones a través de una terminal portátil en ambientes Linux con herramientas de gestión de auditoría y seguridad criptográfica, que permita realizar una comunicación remota segura y ejecutar funcionalidades sobre servidores o equipos en tiempo real.
4.2. OBJETIVOS ESPECIFICOS
Desarrollar una solución móvil para administrar servidores y equipos con ambiente Linux, que posibilite administrar usuarios, ejecutar comandos, gestionar archivos y controlarlos a través de una conexión de datos.
Construir un mecanismo de comunicación entre los dispositivos móviles y los equipos físicos, a través de procedimientos request-response que ofrezca métodos de negocio para la realización de operaciones de manera segura sobre los diferentes sistemas operativos con autenticación de usuarios mediante Login y algoritmo SHA-256.
Realizar un componente portable e interoperable que permita visualizar y presentar a través de un navegador web, el registro de los eventos de auditoría como resultado de las tareas efectuadas desde la aplicación móvil.
Diseñar e implementar una base de datos que facilite la gestión de información y cambios pertinentes del registro de auditoría, permitiendo el suministro de valores de configuración y el almacenamiento para registro de operaciones efectuadas en los equipos asociados.
22
5. JUSTIFICACION
Actualmente para cualquier compañía que bride algún tipo de servicio y/o producto tecnológico, es de esperar que uno o más servidores estén detrás de los procesos y movimientos internos efectuados para el correcto funcionamiento de los servicios ofrecidos.
Dichos servidores deben contar con un mínimo de disponibilidad para garantizar la buena calidad de un buen servicio. No obstante, es frecuente observar que cada cierto tiempo sucedan contratiempos que ameriten el acceso a dichos servidores para solucionarlos, de igual forma, podrían presentarse actualizaciones importantes que deban ser instaladas de forma local. No obstante, cada situación en particular puede ocurrir en cualquier momento, en algunos casos y por condiciones adversas (como la distancia entre los servidores), no siempre será posible lograr un acceso presencial hacia los servidores.
Para estos casos la solución más conveniente entonces es acceder hacia dichos servidores por medio de acceso remoto, no obstante, el uso del acceso remoto, está limitado dependiendo no solo de la tecnología y arquitectura del sistema en cuestión, también del número de máquinas disponibles configuradas para acceder a los servidores.
Surge entonces la idea de poder eliminar esta limitante, administrando múltiples servidores remotamente sin la necesidad de hacer uso de una tercera máquina y en vez de esto, poder hacerlo directamente desde un dispositivo móvil como un celular.
Por otra parte, considerando que en la actualidad, no existen muchas aplicaciones de código abierto que puedan ser descargadas y utilizadas para estos fines y ante la necesidad de una nueva herramienta para gestión de recursos de forma remota que no genere gastos innecesarios para una compañía, se justifica entonces la necesidad de creación de un proyecto que contribuya con la solución a esta problemática.
De esta manera, es considerable y factible el desarrollo de una herramienta que opere a la medida de las necesidades cualquier tipo de empresa sin importar su tamaño ni cantidad de recursos a administrar.
Así, con el fin de poder dar solución al problema en mención y haciendo uso de las múltiples ventajas de las tecnologías móviles, en el presente proyecto se presenta entonces una herramienta como alternativa para administrar de forma eficiente los procesos y/o recursos de una determinada compañía, esto posible gracias al uso de un dispositivo móvil que haga las veces de control remoto dentro una red pública y la implementación de optimo sistema de seguridad que garantice que cualquier modificación y/o consulta realizada desde y hacia cada servidor, pueda ser cifrada y auditada en tiempo real.
23
La aplicación final, permitirá desde una interfaz agradable al usuario poder acceder de forma remota para controlar y auditar servicios entre diferentes servidores, sin importar su distancia.
Las fallas, dificultades y contrariedades que justifican el desarrollo de este proyecto se resumen en las siguientes situaciones:
No existe un aplicativo de fácil acceso que permita auditar y controlar los procesos internos de uno o más servidores con ambiente Linux.
Existe una gran problemática en el entendimiento de los sistemas con ambientes de código abierto como Linux debido a la complejidad de sus procesos y el desconocimiento de estos ambientes.
La mayor parte de servidores en el mundo cuentan con OS Linux, no obstante y a pesar de su importancia, el de desarrollo de aplicaciones móviles para este tipo de sistemas en muy limitado.
24
6. MARCO DE REFERENCIA
6.1. MARCO TEORICO
6.1.1. GESTION DE RECURSOS
Por lo que se refiere al constante avance de las tecnologías de las telecomunicaciones y herramientas que realizan tareas a partir de una serie de patrones, en las diferentes empresas, es esencial asegurar la generación apropiada, recolección, distribución, almacenamiento y la disposición de la información de un proyecto. Además es de vital importancia garantizar seguridad y cumplimiento en los objetivos planteados dentro de una organización a fin de que se conceda un proceso sistemático de identificar, analizar y responder a los riesgos de los proyectos. “Esto se debe a que la complejidad inherente a la gestión del desarrollo del software se multiplica extraordinariamente en presencia de varios proyectos simultáneos”2, haciendo que las personas a cargo deban “hacer uso de herramientas ágiles y productivas para contemplar el impacto potencial de la mejora de procesos en la controlabilidad y predecibilidad del sistema”3 en particular puesto en marcha.
Dichas compañías, más aun, aquellas que se distinguen por su actividad comercial en el campo del desarrollo y consultoría de sistemas o servicios informáticos (software) necesitan cambio continúo en la automatización de las tareas y los procesos ya sea por las distintas tecnologías de información a las que se pueda incurrir o por los diferentes mecanismos que proporcionen un mayor rendimiento en su proyección normativa e institucional. “Independientemente de su tamaño, una empresa es una organización gobernada por procesos”4, que bien pueden ser de cierta formalidad y cierto tamaño considerable. Así, “cualquier empleado que realiza un servicio es un actor de un proceso”5 y de su función empresarial junto con las de un equipo de trabajo se plasma en una visión general del proyecto.
Ahora bien, es imposible llegar ignorar el constante flujo de cambios tecnológicos en la industria de hoy, esto teniendo en cuenta lo globalizada que esta se encuentra. Nos encontramos ante una revolución tecnológica, producto del inexorable avance tecnológico del que hoy somos parte y en el cual la innovación, es la piedra angular del proceso; más si se trata de un área tan importante como lo es el ámbito productivo y competitivo empresarial, donde las telecomunicaciones, la internet, así como sus diferentes formas de interactuar o comunicarse, juegan
2 Fernandez, Javier. Técnicas avanzadas para la gestión de proyectos de Software. 3 Bis 4 Guerin, Brice Arnaud. Gestión de proyectos informáticos: desarrollo, análisis y control. Ediciones ENI. Julio, 2012. p 17 5 Ibíd., p 17
25
un rol muy importante para las diferentes organizaciones que tienen como objetivo desenvolverse en el mercado no solo tecnológico, también económico.
Dichas compañías, más aun, aquellas que se distinguen por su actividad comercial en el campo del desarrollo y consultoría de sistemas informáticos (software) o administración de equipos (hardware) necesitan cambio continúo en la automatización de las tareas y los procesos ya sea por las distintas tecnologías de información a las que se pueda incurrir o por los diferentes mecanismos que proporcionen un mayor rendimiento en su proyección normativa e institucional.
De igual manera el uso de herramientas y plataformas tecnológicas en las empresas que se desempeñan en el marcó metodológico para el desarrollo de software a alto nivel y a gran escala, supone un logro en la dirección y control de sus proyectos, permitiéndoles gestionar el flujo de procesos y su secuencia de pasos a seguir para la terminación efectiva de los mismos.
Hoy en día, dichas herramientas y utilidades que facilitan el trabajo de las empresas hacen referencia a sistemas o utilidades que permiten controlar el uso y manejo de los recursos y establecer patrones de seguimiento en el curso de su actividad, dando además pautas de desarrollo sobre los mismos.
Cuando se habla de empresas y organizaciones destinadas a prestar servicios e interactuar activamente con sus clientes, empresas donde se poseen ambientes en producción en tiempo real, tanto externos como internos; estas empresas necesitan de instrumentos que gestionen y controlen el flujo de información en sus recursos (servidores, bases de datos, directorios, tablas, etc.) y de la coordinación efectiva de los distintos elementos presentes en su entorno. Por esto, es necesaria la búsqueda de múltiples sistemas y plataformas que brinden acceso, seguimiento y depuración de ambientes remotos ante cualquier eventualidad, soporte, o consulta de información.
Así por ejemplo, la administración de servidores en empresas que hacen uso de sistemas operativos de tipo Unix, resulta un proceso que se hace muchas veces complejo, esto teniendo en cuenta: las innumerables sentencias de comandos por las cuales se basan este tipo de entornos para la ejecución de tareas, la carencia de una interfaz visual entendible para un usuario común y la robustez propia del sistema, pues por su arquitectura y características en términos de rendimiento, seguridad y escalabilidad es muy utilizado en ambientes empresariales de tipo macro.
Todo esto hace que el efectuar operaciones y funciones sobre entornos Unix no solamente pueda llegar a ser complejo, además muy seguramente se requeriría de uno o varios ingenieros experimentados en un determinado lenguaje para llevar a cabo tareas básicas del sistema.
Teniendo en cuenta este punto, es importante entender que la ayuda por parte del mercado tecnológico o en la Internet, es ciertamente escaza, pues no se cuenta con un acceso libre de herramientas instalables útiles, configurables y
26
comprensibles al usuario enfocadas únicamente a reducir la complejidad para estos sistemas. De las pocas que existen, comúnmente la mayoría se caracterizan por ser de tipo Stand Alone (instaladas localmente sobre equipos) y poseen especificaciones muy importantes en términos de comunicación, rendimiento y administración. Y son verdaderamente pocas las utilidades que bajo ambientes móviles permitan realizar las mismas operaciones sobre diferentes servidores o sistemas operativos (Ej: Operaciones como administración de archivos).
Es por esto, que en un mercado dónde las soluciones móviles están efectuando un sinfín de funcionalidades e integración de sistemas, es conveniente el migrar muchas de estas características a ambientes Android o IOs dónde se requieren nuevas innovaciones y utilidades que generen valor agregado para las organizaciones en cuestión. “Las comunicaciones móviles están promoviendo nuevas formas de comunicación: los mensajes cortos, la mensajería instantánea, el envío de documentos, etc.”6 Por eso en una sociedad como la nuestra, en la que el número de usuarios de telefonía móvil e internet aumenta por hora, este tipo de tecnologías (aplicaciones móviles) no podría pasar desapercibido sobre todo para empresas que se dedican al desarrollo continuo de software y de servicios a la medida.
Para dichas empresas, el campo de las aplicaciones móviles indudablemente en un medio practico para las muchas tareas que podrían llevarse a cabo no solo de forma presencial, también utilizando acceso remoto y en tiempo real (tareas que van desde el acceso a fuentes de información, visualización de archivos, modificación de datos, descargas de documentos, etc.) Esto es un gran atributo y un plus para cualquier empresa que este o no familiarizada al campo de la prestación de servicios informáticos, puesto que, además de generar un valor competitivo, también se presta para la búsqueda de nuevos nichos de mercado y clientes en sobrevaloración.
“Las empresas utilizan las tecnologías de la información y comunicaciones para reestructurar sus procedimientos de operación y mejorar su competitividad en el mercado global resultante”7, así por ejemplo, a través del uso de dispositivos móviles, una empresa de escala multinacional puede acelerar aún más sus procesos internos, pues, al existir una gran variedad de clientes, es imprescindible contar con una herramienta o utilidad de gestión e interconexión que sea estable pero también flexible en términos de movilidad. Los programas de software libre son por supuesto los ideales en estos casos, ya que además de ser potentes, cuentan también con una comunidad de desarrolladores bastante amplia en cualquier parte del mundo y por su característica de código libre (Free Sourse)
6 De Bernardo, Cesar.Priede, Tiziana. Marketing móvil, una nueva herramienta de comunicación. Editorial Netviblo S.L. p27 7 Oriol Sallent Roig, Luis Valenzuela, Ramon Agustí. Principios de comunicaciones móviles. Ediciones UPC. Universidad politecnica de catalunya, Barcelona.
27
pueden llegar a ser una ventaja en términos de costos para cualquier empresa”8. Sin embargo, es de saber que el mercado Free, no se encuentra lo suficientemente distribuido y por tanto se hace necesario el incentivar este tipo de avances que logran al mismo tiempo funcionalidades más personalizadas, hechas a la medida de cada usuario para que cumpla con requisitos más específicos.
6.1.2. ESTADO DEL ARTE
Haciendo foco específico en la administración de servidores de tipo Unix como lo son Ubuntu, Debian, RedHat, Centos que operan bajo la ejecución de comandos en diferentes terminales y en los cuales no es muy frecuente contar con una interfaz gráfica para la gestión de recursos dentro del sistema operativo, es posible determinar que actualmente existen herramientas de tipo Open Source (Codigo Abierto) y aplicaciones gratuitas orientadas a facilitar el acceso este tipo de servidores para la ejecución remota de tareas como: la gestión de archivos, la administración de procesos, el control de usuarios, la gestión de permisos, entre otros.
En la industria informática este tipo de utilidades representan un gran ahorro monetario debido a que se evitan un sin fin de gastos (viáticos, viajes, transporte, etc.). No obstante, la mayor cantidad de estas herramientas se encuentran disponibles en entornos compatibles con sistema operativo Windows. Por su parte para entornos con sistema operativo Linux no hay mucho que escoger. Si bien es cierto, existen algunas, pero si lo que se busca es un acceso remoto desde un dispositivo móvil Android, las opciones se reducen aún más. La limitante radica en que la mayoría de aplicaciones son difíciles de encontrar en la web, no poseen todas las funcionalidades para accesos remotos por consola o simplemente son de pago.
Bajo este propósito, es de gran importancia conocer el contexto y el estado en el que se encuentra hoy el desarrollo de los sistemas homólogos o similares que cumplan algunas de las expectativas que se proponen desarrollar a lo largo de este documento.
Aplicaciones gratuitas y Open Source como:
• Winscp: Es una utilidad de libre uso que soporta los protocolos SFTP, FTP que permite hacer copia y control entre el equipo remoto y local. En términos técnicos presenta las siguientes ventajas:
Fácil conexión entre Windows y versiones Linux que permite gestionar archivos entre los equipos relacionados a través de una conexión SSH.
8 10 herramientas de software libre para gestionar proyectos en http://bitelia.com/2012/11/herramientas-software-libre-gestionar-proyectos
28
Fácil instalación y uso a través del suministro de algunos valores de configuración relacionados con equipos Linux.
Permite abrir una terminal en Windows para la ejecución de comandos.
• Filezilla: Posee las capacidades de WinScp, con la diferencia de que permite configuración manual y monitoreo en la velocidad y procesamiento de archivos. Provee también las siguientes especificaciones:
Está disponible en 47 idiomas Funciona no sólo en Windows, también en Mac y otros sistemas Linux. Provee la creación de filtros y conexiones seguras sobre SSL, TLS.
• Putty: Ofrece una terminal de tipo SHH para Windows con posibilidad de conexión a servidores remotos a través de una serie de parámetros de configuración, la cual permite la ejecución de comandos sobre una terminal para la interacción con diferentes operaciones del sistema operativo. También posee una versión sobre WindowsPhone, la cual permite la interacción con el sistema a través de celulares Nokia, lo cual, no se asemeja a la solución propuesta.
Dentro de las soluciones móviles existentes en el ámbito de la comunicación móvil utilizando una red de datos para el acceso hacia otros dispositivos, se pueden encontrar:
• Mobile SSH/ ConnectBot: Son clientes SSH que permiten la interacción con servidores SSH (Secure Shell) que normalmente incluyen los servidores basados en UNIX. ConnectBot puede manejar varias sesiones simultáneas, crear conexiones asegurar en modo túnel y permite Copiar/Pegar desde otras aplicaciones. También incluye características como:
Ejecución de comandos en tiempo real. Permite la comunicación efectiva entre el dispositivo móvil y el equipo
con SSH. No requieren gran espacio y características de hardware tan sofisticadas
para la ejecución de sus servicios.
Algunas aplicaciones de pago como:
AndroMouse: Permite controlar de forma remota los sistemas Linux, Windows y OS X, ya sea a través de WiFi o Bluetooth. Para poder utilizarlo, primero tiene que instalar la aplicación de servidor en el equipo y permitir que la aplicación cliente en tu Android conectarse a él.
bVNC Secure VNC Viewer: Es una aplicación de pago, utilizada para controlar la pantalla de sistemas Linux. bVNC enfatiza la seguridad, se puede emular un touchpad o utilizar Android como un ratón con soporte
29
para gestos táctiles. Puede guardar sesiones, zoom y ampliar el escritorio de Linux en la pantalla de Android, y compartir el texto en el portapapeles entre Android y PC.
Ripple remoto: Es la versión para Android de TightVNC, una de las aplicaciones más populares de escritorio remoto. Se puede instalar en servidores Linux si se desea crear una conexión más segura, es posible hacerlo con la compra de la versión Pro.
Remote Launcher: Permite ejecutar aplicaciones en su sistema Linux desde un dispositivo Android. También permite programar tareas como apagar el ordenador a una hora designada. Sin embargo, si se desea controlar varios equipos con Launcher remoto, necesitará la versión Pro.
VLC remoto: Es una aplicación creada exclusivamente para el control del reproductor multimedia VLC. Con VLC remoto, puede cambiar el modo de pantalla completa, navegar, administrar subtítulos, controlar la reproducción de DVD, entre otras tareas. También es posible ajustar el ecualizador, y si se quieren examinar los archivos en sistemas Linux, es posible hacerlo con la versión de pago de la aplicación.
Una vez mostradas las utilidades de cada una de estas herramientas y los servicios que prestan, identificando sus más importantes rasgos y características, se plantean a continuación algunos de los aspectos por los que se justifica la creación y la motivación de desarrollar el presente proyecto:
La mayoría de las herramientas libres, no reúnen todas las características en conjunción e integración que permitan tener un control centralizado desde un dispositivo móvil Android.
Las herramientas que se encuentran actualmente en la web, no proveen de un componente de auditoría o control de operaciones en los sistemas operativos tipo Linux.
Algunas de las utilidades mencionadas necesitan de otro equipo PC para su ejecución.
Existen aplicaciones que no poseen interfaz gráfica, haciendo más compleja la labor para la gestión de recursos del sistema operativo tipo Linux.
30
6.1.3. TECNOLOGÍAS Y MODELOS DE DESARROLLO
De acuerdo con la problemática descrita anteriormente y con los inconvenientes que se asumen, se evidencia entonces la necesidad de crear una serie de módulos con cierto tipo de funcionalidad y herramientas específicas de acuerdo al contexto general para las conexiones remotas. Estos mismos serán soportados tanto en ambiente web como en ambiente móvil Android utilizando un desarrollo bajo una serie de plataformas, especificaciones técnicas y estándares para la creación e implementación de soluciones informáticas de bajo medio o alto nivel.
En este punto se detallan las tecnologías que serán utilizadas para el desarrollo del proyecto con algunas de sus características más generales, de igual forma se resume la descripción de todos los componentes de los cuales se hace uso para la entrega del producto final con las funcionalidades respectivas del sistema.
Modelo Vista-Controlador
Este patrón de arquitectura MVC, propone la construcción del sistema bajo una serie de capas o componentes separando las partes fundamentales del proceso de desarrollo (Modelo, Vista y Controlador), facilitando el mantenimiento, permitiendo la reutilización del código y la separación de conceptos. El objetivo de estas capas, es hacer una separación de conceptos pertenecientes a la tarea de desarrollo y mantenimiento de aplicaciones de software, además de establecer una interacción entre todos los componentes para el flujo productivo del sistema.
Estas capas son:
Modelo: Esta capa se encarga del manejo de la lógica o procesos de negocio destinados a resolver las necesidades del cliente mediante una serie de reglas o especificaciones técnicas de acuerdo a los requerimientos establecidos. Además de esto, en esta capa se encuentra la gestión de acceso sobre la información con la que opera el sistema, realizando un control en los datos de la aplicación de acuerdo a su origen respectivo (base de datos, archivos, directorios activos, etc).
Vista: Representa la interfaz de usuario y el formato gráfico de interacción con el usuario, es básicamente la capa encargada de la representación de los datos.
Controlador: Esta capa del proyecto está destinada al control de las solicitudes o eventos producidos por los usuarios para efectuar un proceso específico dentro del uso del sistema, para así mismo generar una respuesta respectiva como resultado de la operación.
31
El MVC, se resume en la siguiente imagen:
(Tomado de: http://www.monografias.com/trabajos89/poo-y-mvc-php/poo-y-mvc-php2.shtml)
De acuerdo a los propósitos y procesos de negocio de un proyecto en particular, “lo que cambia con mayor frecuencia es la lógica, por ello un diseño incorrecto en el cual se fusionen la interfaz de usuario con el mundo conllevaría a que fuera necesario modificar varios elementos del negocio en el caso de que se presentase una necesidad de transformación, conllevando a mayores gastos y riesgos”9. Así una adecuada definición del modelo y un buen desacople de la vista, se determinaría una pauta eficaz para una aplicación estructurada y reutilizable de propósitos empresariales.
Arquitectura JavaEE
Según el manual oficial de Oracle, JavaEE (Java Enterprise Edition) es hoy en día una tecnología popular de desarrollo debido a sus características como robustez, escalabilidad, flexibilidad, ambiente distribuido, portabilidad, integración y principalmente por su seguridad que simplifica el mantenimiento y soporte de los aplicativos.10 La plataforma de JavaEE está basada en el patrón arquitectónico
9 JARAMILLO, Sonia; CARDONA, Augusto; VILLA, Dumar Antonio. Programación avanzada en java. Ediciones Elizcom. Armenia, Quindío, Primera edición de diciembre de 2008. 10 JENDROCK, Eric; CERVERA-NAVARRO, Ricardo; EVANS Ian; HAASE, Kim; MARKITO, William. The Java EE 7 Tutorial, Release 7 for Java EE Platform. Java EE Application Model. Mayo, 2014
Imagen 2: Modelo Vista Controlador
32
MVC (Model, View, Controller), descrito anteriormente, donde se especializan los roles y se encuentra un conjunto de tecnologías que dan vida a las aplicaciones empresariales de gran tamaño o complejidad, inherentes a los procesos productivos y comerciales respectivos.
La siguiente imagen, representa la composición de la arquitectura JavaEE (Java Enterprise Edition) donde los colores azul oscuro representan las capas propias de plataforma y las de color azul marino son capas que podrían considerarse parte de la arquitectura; pero hacen referencia a recursos externos de la propia plataforma.
(Tomada de: arna17.brinkster.net/post/Desarrollo/Patrones_inicio.html)
La definición de cada una de las capas es descrita de la siguiente manera:
Capa Del Cliente (Presentación Cliente): Básicamente esta hace referencia a los navegadores web que existen en el mercado como los son Internet Explorer, Mozilla Firefox, Google Chrome, Opera entre otros. También hacen parte de esta capa a los Applets de JAVA y cualquier otro tipo de aplicaciones del lado del cliente (stand-alone, Moviles, etc.).
Capa De Presentacion (Presentación Web): Esta capa hace referencia a todas las tecnologías necesarias para recibir las peticiones de los clientes, controlar el flujo de la aplicación y generar las respuestas apropiadas para dichos clientes. Aquí aparecen tecnologías tales como Servlets, JSPs,
Imagen 3: Arquitectura de la tecnología JavaEE
33
IUComponents de Frameworks como JSF, Frameworks como Struts, entre otros.
Capa De Negocio: En esta capa se concentra toda la lógica del negocio de las aplicaciones desarrolladas bajo esta plataforma. Ejm: Tecnologías como Web Service, EJBs entre otros
Capa De Integración: Esta capa es la que proporciona el acceso a datos, recurso y otros sistemas heredados (Legacy). Aquí se encuentran los diferentes tipos de tecnologías como son: JPA, JDO, Hibernate, DAOs entre otras más.
Capa De Recursos: La capa de recursos no es propia de la arquitectura JEE, pero se incluye por la interacción constante con la plataforma. Aquí están los sistemas LDAPs, bases de datos (Oracle, SQLServer, PosgreSQL, entre otros) o cualquier otro tipo de fuente de datos.
Dentro de las tecnologías utilizadas que rodean el uso de estas capas se destacan las siguientes:
JPA (Java Persistence API): Con el objetivo de establecer un modelo de mapeo con la base de datos del sistema, esta tecnología modela y representa esquemas de la fuente de datos mediante un enlace objeto/relacional proporcionado un modelo de persistencia POJO y reduciendo la brecha entre un modelo orientado a objetos y una base de datos relacional. Esta tecnología hace parte de la capa de integración del sistema y es usada proporcionalmente para operaciones de creación, edición, control y eliminación de los registros.
EJB (Enterprise Java Bean): Estos componentes son pertenecientes a la capa de negocio, ofrecen servicios y herramientas para encapsular la lógica empresarial para un sistema empresarial. Además, proveen un modelo para el flujo transaccional y concurrencia presente en la solicitud de peticiones por parte de los controladores que interactúan con los usuarios. Es una instancia de clase remota a la que se accede por mecanismos RMI.
JAX-RS (REST): Es una técnica de arquitectura de software establecida para la consecución de un mecanismo establecido request-response (respuesta-solicitud) y que define un conjunto de estándares para la publicación o acceso a recursos en la web. Todo esto, a través de la invocación de servicios web.
JSF (Java Server Faces): Proveedor de herramientas visuales para el desarrollo de interfaces graficas como también para la distribución de elementos encargados de la entrada de datos o información. Es el componente utilizado para la visualización de datos e interacción con el usuario en el modelo vista controlador a través de su herramienta denominada Expression Language. Proporciona además, mecanismos para la comunicación con los controladores y clases Java y provee un framework de desarrollo para el manejo de sesiones, descarga de archivos, definición de librerías, internacionalización, entre otros.
34
PrimeFaces: Es una tecnología basada en el estándar de JSF con una gran variedad de componentes gráficos para la creación de páginas web, que hace más agradable y amigable la experiencia de navegación del usuario, cumpliendo con la filosofía y concepto de la WEB 2.0. A través de esta herramienta de desarrollo fueron creadas las páginas web de la aplicación, junto con la ayuda o soporte de tecnologías esenciales como HTML (HyperText MarkUp Language) y CSS (Cascading Style Sheets) para el mismo entorno de trabajo.
Android OS:
Es un sistema operativo ideal para los distintos dispositivos móviles además de adaptable a diferentes conjuntos de tecnologías en las que se comprenden las comunicaciones con SMS, Bluetooh, Wifi y un conjunto de protocolos de Internet determinados a ser de gran ayuda para la comodidad del usuario. “Android está construido sobre una serie de tecnologías abiertas.
La capa inferior está basada en el núcleo de Linux, encargado de gestionar los procesos y es aquí donde los drivers referentes al hardware tienen su uso común a bajo nivel. En un segundo nivel de la arquitectura de este SO, se encuentran una serie de librerías nativas escritas en C o C++. Después de esta capa, se encuentra el Android Runtime, donde reside la máquina virtual Dalvik, capaz de interpretar el código generado en el desarrollo. La siguiente capa se compone principalmente de las API de Google utilizadas para manipular todos los componentes del dispositivo.”11 En la capa superior se encontrarán las aplicaciones.
Dicha arquitectura se muestra en la siguiente imagen:
Imagen 4: Capas del sistema operativo Android
(Tomado de http://androideity.com/2011/07/04/arquitectura-de-android/)
11 MONTERO Miguel, Roberto. Android, desarrollo de aplicaciones. Sistema operativo Android. Bogotá: Ediciones de la U, 2013, p. 19
35
Tecnología Push
“Es una tecnología de internet que envía información a los usuarios antes de que ellos la hayan solicitado. Los usuarios establecen una preferencia específica del tipo de información deseada”12. Básicamente, esta información es transmitida a los usuarios de forma continua y se basa en un modelo de comunicación, dónde las peticiones o transacciones se inician en el servidor hacia diferentes dispositivos o componentes como resultado de algún cambio en la información u reglas establecidas. La estructura de la tecnología push, está formada por una serie de elementos que hacen posible el trato eficaz de los datos, como se muestra en la siguiente imagen.
Imagen 5: Estructura de arquitectura de notificaciones push
6.2. MARCO METODOLOGICO
Para poder desarrollar adecuadamente la arquitectura y estructura del sistema basado en la administración de servidores Linux, con un soporte a información y utilidades móviles, hay que introducir el uso de metodologías o procedimientos que sirvan como pauta para la ejecución del proyecto en marcha. Dichos estándares se presentan como modelos para establecer un marco de trabajo que permita estructurar, planificar y controlar el proceso de desarrollo del sistema a través de una serie de etapas y fases imprescindibles para el desarrollo respectivo.
Para este caso, se aplica un conjunto de técnicas y criterios de especificación que se encuentran soportados sobre el marco de desarrollo de software conocido
12 SAWAYA, Marcia Regina. Diccionario de informatica e internet. Sao Paulo: Nobel 1999 AMPUB Comercial LTDA, p 377.
36
como el proceso unificado UP (Unified Process), el cual, se caracteriza por estar dirigido mediante diagramas de casos de uso y estar centralizado en la arquitectura del sistema. Además de esto, UP es un proceso iterativo e incremental compuesto de una serie de etapas para un objetivo final, sin embargo, habrá que servirse de un modelo a seguir para la consecución de dichas etapas, en relación con esto, el modelo incremental de software, es una gran herramienta que propone el desarrollo de sistemas informáticos satisfaciendo un subconjunto de requisitos especificados. En la medida del desarrollo, en posteriores versiones, se hace un incremento del sistema con nuevas funcionalidades que satisfacen más requisitos o necesidades del cliente hasta la consecución del producto final.
En el desarrollo del sistema y/o aplicación, es de gran atención el estimar tareas, manejar actividades y proponer procesos prácticos, donde se asignen tiempos adecuados para cada uno de los entornos y límites de cada una de las etapas que propone este marco de trabajo. Estas etapas o fases son las siguientes:
Fase de Inicio en UP: En esta fase corresponde definir el negocio. Es la etapa donde se define la factibilidad del proyecto a realizar, se representa el modelo de negocio, visión y metas del proyecto, se identifican actores, conceptos de dominio y deseos de usuario. Adicionalmente se complementa con la definición de la arquitectura preliminar y estimaciones (imprecisas, preliminares) de plazos y costos. También se define la viabilidad del proyecto.
Fase de Elaboración en UP: En la fase se obtiene la visión refinada del proyecto a realizar, la implementación iterativa del núcleo central de la aplicación, la resolución de los riesgos más altos, la identificación de nuevos requisitos y nuevos alcances y estimaciones más ajustadas. En esta etapa, existe la posibilidad de detener el proyecto por complejidad técnica.
Fase de Construcción (Diseño) en UP: La fase de construcción es la implementación iterativa del resto de los requisitos de menor riesgo y elementos más sencillos. Es la evolución hasta convertirse en un producto listo, incluyendo todos los requisitos (100%), para entregarse al Cliente. Al final de esta fase el sistema contiene todos los casos de uso que el cliente y la dirección del proyecto han acordado. La mayoría de los casos de uso que no se desarrollaron en la fase anterior se desarrollaran en iteraciones, grupos de requisitos o casos de uso durante esta fase.
Fase de Transición en UP: Es el periodo donde el producto es completamente entregado al cliente para ser probado y desplegado (instalado).
37
Cada una de estas etapas define una serie de elementos a desarrollar, bien sean de análisis, de diseño, de implementación o de pruebas; todo esto esta descrito dentro del cronograma del proyecto. Cada uno de estos elementos, hace parte de una fase de desarrollo del sistema y se aplican para la consecución de cada uno de los módulos a implementar. Se destaca el uso de Lenguaje Unificado de Modelado (UML), para visualizar, especificar, construir y documentar el sistema mediante una serie de diagramas que denotan el proceso iterativo e incremental propuesto para el objetivo final.
De acuerdo a lo anterior, cada una de las disciplinas utilizadas en el proceso de desarrollo de software y su nivel de participación en cada una de las etapas definidas por la metodología UP, estarían determinadas por el siguiente gráfico:
Tabla 1: Etapas del proceso unificado.
Este proceso genérico en conjunción con el modelo de desarrollo, ofrecen un marco conceptual y específico para abordar cada una de las etapas del proyecto en curso, dando un enfoque ante la ejecución apropiada de: El inicio, la elaboración, la construcción y la transición del proyecto de investigación. Esto, de
ETAPA METODOLOGÍA ACTIVIDADES Análisis UP Definición de Requerimientos (RF Y RFN).
Alcance y Delimitaciones. Identificación de Actores. Lista de Casos de Uso. Diagramas de Casos de Uso. Documentación de Casos de Uso. Diagramas de Actividad. Modelo del Dominio.
Diseño UP Modelo Entidad Relación. Modelo Lógico (Diagrama de Clases). Modelo Físico (Diagrama de Despliegue). Diagramas de Secuencia. Diagrama de Componentes.
Implementación
UP Descripción Lógica de Base de datos. Descripción de componentes. Organización del Código. Desarrollo Ambiente Móvil (Implementación de clases y UI). Documentación Código Fuente. Esquema general de la aplicación.
Pruebas UP Prueba Unitaria. Prueba de Integración. Pruebas de Concurrencia.
Implantación
UP Formalización y entrega final del proyecto.
38
tal manera que la implementación o diseño de los diferentes componentes tengan un ciclo de desarrollo respectivo sucesivo. Además de esto, se acopla a la construcción de un sistema por módulos o partes con el fin de entregar un producto final como se hace necesario en el presente proyecto. Los módulos a realizar con las especificaciones descritas anteriormente se refieren a contextos como:
Auditoria.
Gestión de Archivos.
Ejecución de comandos.
Gestión de Usuarios.
Gestión de Procesos.
Para cada uno de estos, se realiza un proceso metodológico para la consecución de una parte del sistema durante cada fase iterativa y tiene cuenta aspectos importantes, como los que se detallan en la figura.
Imagen 6: Proceso iterativo e incremental
Con relación a estos módulos y un el progreso efectivo se estipula realizar los siguientes procesos dentro de cada iteración del desarrollo incremental:
Realizar una abstracción pertinente del dominio del problema que permita identificar los requerimientos y riesgos como también las funcionalidades con las que contará el módulo dando a conocer sus delimitaciones y alcance.
Definir la arquitectura base del sistema determinando sus funcionalidades en un contexto conceptual.
Construir el módulo con las herramientas descritas en el apartado de solución tecnológica, teniendo en cuenta el ambiente externo e interno de la aplicación.
39
Desarrollar un conjunto de pruebas unitarias y de integración, que detallen las características del módulo además de la interoperabilidad de los componentes garantizando la relevancia de su utilidad final.
Finalmente, con esta metodología se llevan a cabo todas las fases y procesos que se encuentran estipulados en el cronograma del proyecto realizando cada una de las etapas que establece el Proceso Unificado (UP) y el desarrollo incremental por módulos. Dentro de las diferentes fases de los módulos se denotan cada uno de estos aspectos y su desarrollo proactivo de acuerdo a la especificación descrita al uso de esta metodología expuesta.
6.3. MARCO CONCEPTUAL
Para poder dar solución a la problemática expuesta en el presente proyecto, se debe desarrollar una aplicación para celulares con sistema Android, donde se pueda llevar un seguimiento y control a cada uno de los servidores que se encuentren registrados, todo esto debe ser en tiempo real y de forma remota.
Por lo que se refiere al propósito y finalidad de implementar una herramienta móvil, radica principalmente en permitirle al usuario la posibilidad de ejecutar estas funcionalidades desde un ambiente externo, teniendo en cuenta las ventajas que esto implica y las necesidades del proyecto. Esto sumado a la característica adicional de poder avisar al usuario por medio de la emisión de notificaciones y advertencias a dispositivos móviles de acuerdo a los cambios o modificaciones que puedan presentarse para un determinado servidor. El objetivo de la herramienta móvil, es en definitiva el permitirle al usuario administrar de forma remota uno o más servidores, otorgándole a este la capacidad de modificar archivos, ejecutar comandos, visualizar procesos, auditar actividades realizadas y administrar usuarios, todo esto, a través de una conexión de internet.
A continuación presentamos algunos de los conceptos más importantes relacionados con el desarrollo del proyecto de grado.
Sistema de información: es un conjunto interrelacionado de elementos que proveen información para el apoyo de las funciones de operación, gerencia y toma de decisiones en una organización. Se caracteriza por ser un componente de software con cierto tipo de funcionalidades y cierto tipo de características de acuerdo a un dominio o propósito en específico.
Aplicación móvil: Es una herramienta que facilita la ejecución de una tarea desde un dispositivo celular y se presenta como una ayuda en términos de movilidad y simplicidad. Puede ser una utilidad destinada para diferentes usos, bien sea para juegos, aplicaciones empresariales, utilidades multimedia, herramientas de comunicación, etc.
40
Servidor de aplicaciones: Es una interfaz que define las especificaciones mínimas con las que un componente de software debería funcionar. Provee mecanismos de despliegue y de localización de recursos funcionales para la puesta en marcha de aplicaciones de software, de acuerdo a cierto tipo de parámetros y/o tecnologías.
Base de datos: En un sistema gestor de información de grandes o pequeñas colecciones con diferentes tipos de datos que pertenecen a un contexto determinado. Existen diferentes tipos de acuerdo al uso y variabilidad de datos a almacenar, además poseen una estructura y gestión de control de acuerdo al proveedor.
Framework de desarrollo: Es un estándar o conjunto de especificaciones técnicas que facilitan la resolución de problemas aplicando cierto tipo de reglas predefinidas por el mismo. Pueden existir diferentes clases de acuerdo a su usabilidad y factibilidad dentro del desarrollo de una aplicación específica. Ejemplos de esto, son: JPA (Java Persistence Api), Hibernate, PrimeFaces, JSF (Java Server Faces), etc.
Servicios web: Son componentes entregados por un proveedor, encargados de prestar una funcionalidad a través de servicios que pueden ser de mecanismo de invocación remoto. Existen dos tipos: SOAP y RestFul. El primero define un protocolo para el intercambio de mensajes entre aplicaciones o redes de computadores, el segundo se basa sobre la exposición de recursos y utilidades a través de mecanismos HTTP.
UML: Es un lenguaje que define un estándar a través de mecanismos conceptuales y documentación para establecer su importancia. Dentro de este, se encuentran definidas una serie de especificaciones para la creación de diagramas que representan la arquitectura de una aplicación como también su comportamiento y estado.
Android: Es un sistema operativo diseñado y construido para dispositivos móviles. Similares al mismo son: IOS y Windows Phone. Define también, una serie de librerías y una máquina virtual llamada Dalvik para la ejecución de aplicaciones móviles, de igual forma provee una serie de utilidades para la intercomunicación de hardware y software.
Java: Es un lenguaje de programación destinado a la creación de soluciones informáticas y aplicaciones de software que presentan un propósito general para un uso determinado. Se caracteriza por ser un lenguaje orientación de objetos y multiplataforma, con un entorno robusto e independiente.
Oracle: Es una empresa prestadora de servicios de hardware y software como bases de datos, servidores, clusters, herramientas de programación, estándares de codificación, especificaciones técnicas, etc.
Aplicación móvil: Es una aplicación diseñada y construida para ser ejecutada en un ambiente móvil en diferentes dispositivos o equipos. Generalmente es utilizada para servir como herramienta o utilidad para la
41
ejecución de procesos similares a los realizados en una computadora normal.
Modelo Vista-Controlador: Es un patrón de desarrollo de aplicaciones de software o informáticas que establece una serie de normas o reglas para la implementación en el diseño y construcción de un sistema en general.
Tiempo real: Se refiere al sistema o aplicación capaz de interactuar con un entorno externo a través de un proceso físico basado en la emisión de restricciones temporales y respuestas correctas, como también en la recepción de mensajes.
Notificaciones Push: Son notificaciones basadas en tecnología, dónde una petición se origina desde el servidor como resultado de un cambio o proceso de negocio hacia otro dispositivo.
Arquitectura Cliente-Servidor: Este tipo de arquitectura es un modelo de red en el cual existe un proveedor de servicios o recursos capaz de responder solicitudes de clientes. Dichas solicitudes son realizadas desde otros computadores o dispositivos (cliente) a través de un mensaje con una estructura definida y capaz de interpretar una respuesta del proveedor respectivo.
Navegador: Es la aplicación o sistema encargado de visualizar todo tipo de información web, en algunos casos con tipos de datos multimedia.
HTTP (Hypertext Transfer Procotol): Protocolo de comunicación encargado de la transferencia de páginas web o mensajes de hipertexto.
URL (Universal Resource Locator): Es la dirección designada para el acceso a un recurso en particular que puede ser de diferentes tipos como texto plano, multimedia, archivo, entre otros.
REST (Representational State Transfer): La transferencia de estado representacional es una técnica o procedimiento de programación para el acceso a recursos a través de peticiones HTTP.
Sincronización: Se refiere a la agrupación de eventos sobre un espacio determinado o a la ejecución de procesos simultáneos para la finalización de una tarea.
Listener: Es un componente encargado de estar activo y a la disposición de ciertos cambios que puedan ocurrir sobre una aplicación para ejecutar una acción determinada.
42
7. FACTIBILIDAD
Dentro del análisis, diseño y construcción del aplicativo en general, es importante tener en cuenta una serie de aspectos o condiciones que hacen viable el desarrollo del mismo. Así, la factibilidad del proyecto está definida por una serie de términos y condiciones específicas que incluyen todo el alcance y lineamientos por los cuales se hace posible el desarrollo completo de la aplicación.
El aparato productivo y comercial de la empresa además del uso de las diferentes herramientas a usar para su producción.
Teniendo en cuenta este contexto y la usabilidad del proyecto en general, es necesario analizar el impacto y su solución tecnológica dentro los alcances delimitados.
En todo caso, la factibilidad descrita posteriormente tiene como tarea observar y analizar “la disponibilidad de los recursos necesarios para llevar a cabo los objetivos o metas señalados”13 en el análisis y diseño del presente proyecto. Lo que se pretende entonces con la instalación y posterior ejecución de la propuesta, es brindar la posibilidad de hacer control remoto sobre diferentes servidores y hacia diferentes servicios, contando únicamente con un dispositivo móvil y una conexión de internet, generando mayor practicidad en el mantenimiento y administración de servidores con arquitectura Linux.
7.1. FACTIBILIDAD TECNICA
Con respecto a los procesos o herramientas que se hacen necesarias para el desarrollo del presente proyecto, en este apartado se detallan los requerimientos tecnológicos más importantes según su impacto en términos de costo, tiempo y calidad.
Esto teniendo en cuenta que como requerimiento principal se hace necesaria la búsqueda de una mayor simplicidad para la ejecución de tareas utilizando recursos de forma remota y en caso contrario, realizar una búsqueda de herramientas libres para no incurrir en gastos innecesarios.
Los siguientes son los requerimientos tecnológicos recomendados para el desarrollo e implementación del presente proyecto.
13 Factibilidad técnica, operativa y económica en http://www.slideshare.net/helodtk1/factibilidad-tecnica-operativa-y-economica-20908957
43
A nivel de sistema:
Servidor de aplicaciones: Que permita la implementación de tecnologías JavaEE, así como la ejecución aplicaciones bajo las especificaciones orientadas a versiones empresariales de Java.
Sistema gestor de base de datos: Que provea servicios de conexión, acceso, seguridad y transacción de procesos que conlleven al tratamiento de la información.
Servidor de hosting: Que posea IP pública y permita el acceso al sistema
de forma remota. En este servidor puede ser el mismo al que se quiere
acceder remotamente y puede actuar como servidor de aplicaciones, por lo
que debe tener como mínimo los siguientes requerimientos:
Sistema operativo basado en UNIX con JDK (Java Developemt Kit)
1.6 en adelante y variable JAVA_HOME establecida.
Memoria física (RAM): Mínimo 1GB.
Espacio en disco: Mínimo 250 MB. Recomendado 500 MB en
adelante.
Puerto de administración y despliegue libres. Generalmente son el 4848 y 8080 respectivamente.
Base de datos: Debe ser instalada en el mismo sistema operativo Linux y
deberá contar con un mínimo de espacio de 600 MB.
Y a nivel de software:
Sistema operativo Ubuntu Linux 16.04 o versiones superiores.
A nivel de usuario - Web:
Teniendo en cuenta que poseemos dos ambientes o entornos de ejecución del sistema, conviene clasificar los requerimientos técnicos a nivel de usuario por contexto. Así para un cliente (usuario) web, es decir un equipo de cómputo, se hacen necesarios los siguientes aspectos:
REQUERIMIENTOS DEL SISTEMA
MÍNIMOS
RECOMENDADOS
INTEL CPU Pentium Dual Core E2180 2.0GHz
Core 2 Quad Q6400 2.13GHz
AMD CPU Athlon 64 X2 Dual Core 3800+
Phenom 9100e Quad-Core
CONEXIÓN INTERNET 1 Mb 2 Mb
RAM 1 GB 2 GB
OS Ubuntu Linux 16.04 LTS, OS Android 4.4 KitKat
Ubuntu Linux 17.04, OS Android 7.0 Nougat
Direct X DX 9 DX 9
HDD 800 MB 1 GB
Navegador Web Mozilla Firefox Chrome Tabla 2: Requerimientos de sistema a nivel de usuario web
44
A nivel de usuario - dispositivo móvil:
De igual forma para un cliente móvil (usuario remoto), es decir, un dispositivo Smartphone o una Tablet, se hacen necesarios los siguientes aspectos:
REQUERIMIENTO
DESCRIPCIÓN
Dispositivo móvil Smartphone, tablet o similares.
Red Conexión Wireless
CONEXIÓN INTERNET 1 Mb
RAM 1 GB
OS Android 4.0 en adelante
Direct X DX 9
HDD/ SD Card 800 MB Tabla 3: Requerimientos de sistema a nivel móvil
7.2. FACTIBILIDAD OPERATIVA
De acuerdo con la problemática descrita anteriormente y con los requerimientos asumidos, se evidencia entonces la necesidad de crear un software compuesto de una serie de módulos con cierto tipo de funcionalidad y herramientas específicas que vayan a la par del contexto general que demandan los objetivos del presente proyecto.
Dicho módulos serán soportados tanto en ambiente web como en ambiente móvil (Android), permitiendo el acceso a los datos sin importar su localización y por ende cumpliendo con el objetivo inicial del proyecto plateado. No obstante, es importante resaltar que las funcionalidades para cada módulo dependerán de las necesidades y requerimientos asumidos, por esta razón, en el presente documento se expone también el alcance del proyecto teniendo en cuenta cada uno de sus componentes (web y móvil).
Considerando que la usabilidad y grado de ejecución depende de la capacidad del usuario o interacción de este con el aplicativo, el presente proyecto es factible operativamente, pues, el desarrollo final cuenta con los requisitos necesarios para ser instalado, ejecutado y utilizado sin ningún problema por parte del usuario o entidad que así lo requiera. De esta forma, en caso de haber un usuario que se encuentre interesado en el software, éste, podrá instalarlo y utilizarlo, siempre y cuando cumpla con las políticas de uso del software y cuente con un dispositivo celular y una conexión a internet.
Con relación a las funcionalidades y niveles de acceso permitidos, el aplicativo dispondrá de un usuario centralizado el cual le permitirá acceder de manera privilegiada a cualquiera de las funcionalidades en cada módulo.
45
Así, se expresa entonces la conformidad en términos de aceptación, ya que las funciones y herramientas que proveerá el software propuesto para el problema descrito, son las más aceptadas en términos de presupuesto y tiempo, esto con relación a las necesidades contempladas. Una vez desarrollado los usuarios de software libre, serán los mayores beneficiados en la utilización del software, ya que se propone un cambio en términos de resultado, comodidad y disponibilidad además de una conexión cifrada y segura, todo esto es un plus en términos de costo / beneficio.
Con relación a las necesidades para la ejecución remota de tareas y el acceso a datos a distancia, con el presente proyecto, propone ser un facilitador para el acceso a la información de forma remota por medio de un mecanismo de comunicación más seguro y efectivo.
Por otra parte, como en todo desarrollo de software, es de esperar la posibilidad de encontrar algunos riesgos inmersos dentro del flujo del proyecto, por tal motivo, también se hace necesario un análisis de las situaciones que podrían afectar de manera significativa el desarrollo de este:
Desconocimiento de la existencia de la herramienta.
Falta de recursos, en caso de no contar con una conexión a internet.
Desconfianza para la implementación en áreas de gran impacto.
Un enfoque erróneo para utilización del software.
Desconocimiento de los elementos de desarrollo.
Incompatibilidad con otros sistemas Unix.
Recursos insuficientes para ejecutar el aplicativo.
7.3. FACTIBILIDAD ECONOMICA
En cuando a la factibilidad económica (recursos económicos) sobre la cual se
sustenta el presente proyecto, son necesarias una serie de herramientas y
artefactos que permitirán el desarrollo del mismo sobre un rango de tiempo
establecido.
Dichos recursos pueden ser: Equipos de trabajo (portátiles y de escritorio),
dispositivos móviles (Smartphone y tablets), recursos de tipo papelería y
bibliográfico, así como algunos recursos de tipo humano.
En el siguiente cuadro se expone la factibilidad económica y se describen cada uno sus aspectos necesarios para el cumplimiento y finalidad del proyecto en cuestión, teniendo en cuenta su impacto en términos financieros.
46
TIPO DESCRIPCIÓN VALOR-HORA
CANTIDAD TOTAL
Tutor 1 Asesorías para la realización del proyecto, referente a la metodología, dirección y seguimiento.
$ 40.000 200 horas $ 8.000.000
Desarrolladores Dos programadores que realicen el análisis, diseño, implementación y prueba de la solución alcanzada.
$ 20.000 800 horas $ 16.000.000
Equipos PC portátiles Equipos portátiles con capacidades aceptables en procesamiento, espacio y memoria.
2 $3’500.000
Equipos Android de prueba
Dos dispositivos Smartphone y una Tablet.
3 $3’000.000
Telecomunicaciones Gastos asociados al servicio de Internet y plan de datos en dispositivos móviles.
1 $600.000
Bibliografía y papelería
Impresiones y referencias para el desarrollo del proyecto.
1 $100.000
Tiempo Total Estimado
1000 Horas
Coste Total del Proyecto
$ 31’200.000
Tabla 4: Cuadro de gastos del proyecto
*Los costos asociados a la papelería se relacionan con las hojas, folders y demás para la documentación del proyecto con relación al estudiante.
De lo anterior, es posible asegurar que las herramientas y software a utilizar para el desarrollo del proyecto no representan un impacto sustancial en términos de instalación ni usabilidad. Por esta razón, el inicio del proyecto en términos de desarrollo no conlleva una preparación exhaustiva de los recursos a usar.
47
7.4. FACTIBILIDAD LEGAL
Todas las licencias de software relacionadas con las herramientas utilizadas en el proyecto son de tipo Open Source, lo cual significa que cualquier aplicación realizada con ayuda de dichas herramientas, podrá ser usada, modificada, copiada y distribuida de forma gratuita.
No obstante, se establece que la propiedad intelectual y los derechos de autor les serán otorgados a los presentes creadores del proyecto, esto dentro del marco de derechos de autor aplicado al desarrollo de software libre y teniendo en cuenta que el producto final su uso apropiado y distribución, estará regido por los patrones de control de propiedad vigentes emitidos por la Universidad Distrital Francisco José de Caldas.
48
Imagen 7: Cronograma de actividades
8. CRONOGRAMA DE ACTIVIDADES
El siguiente cronograma presenta la planeación estimada para el presente proyecto, el cual tendrá una duración total de 8 meses.
49
9. DESARROLLO
Dentro del marco metodológico utilizado para la consecución del presente proyecto se ha escogido implementar el modelo de software UP o Proceso Unificado (Unified Process), el cual permite el desarrollo de software a grande y pequeña escala, haciendo uso de un proceso continuo de pruebas y retroalimentación, garantizando el cumplimiento de ciertos estándares de calidad. De igual forma propone un desarrollo iterativo por módulos que va de forma incremental hasta el progreso final del producto; los módulos de la aplicación poseen una serie de etapas expuestas por la metodología utilizada: Análisis, Diseño, Implementación y Pruebas. Por tanto, cada etapa es desarrollada teniendo presentes los componentes de la aplicación, describiendo sus características y el contexto propio de cada módulo en cuestión.
Bajo esta filosofía, para la implementación del sistema según el proceso de desarrollo de software, la construcción se hace bajo módulos, “lo cual quiere decir que el sistema de software en construcción está formado por componentes interconectados a través de interfaces bien definidas.”14
A continuación se describen las fases más generales para la metodología implementada.
Fase de análisis: Requerimientos (Funcionales y no funcionales), casos de uso, descripción de los casos de uso, diagramas de actividad, modelo del dominio.
Fase de diseño: Diccionario de datos, modelo-entidad relación, modelo lógico, modelo físico, diagramas de secuencia, diagramas de colaboración, diagramas de componentes.
Fase de implementación: Descripción de lógica de negocios módulo, código fuente.
Fase de pruebas: Pruebas unitarias, pruebas de integración, pruebas de rendimiento.
Para conocer el proceso de compilado e instalación del aplicativo ver ANEXO B: MANUAL DEL PROGRAMADOR. En este documento, también se podrán visualizar los requerimientos mínimos de plataforma y editores de código necesarios para observar la estructura del proyecto.
Para conocer las funcionalidades del aplicativo, ver el ANEXO A: MANUAL DEL USUARIO, donde se encontrarán las utilidades disponibles para los ambientes de ejecución del software (Componente web y aplicación Android).
14 JACOBSON, Ivan; BOOCH, Grady; RUMBAUGH, James. El proceso unificado de desarrollo de software. Addison Wesley. Madrid, 2000.
50
9.1. ANALISIS DEL SISTEMA
9.1.1. REQUERIMIENTOS DEL APLICATIVO
De acuerdo con la problemática planteada y las necesidades anteriormente expuestas, es necesario el desarrollo de un software o sistema de información que apoye el proceso de comunicación remota entre uno o más servidores con entorno Linux, esto sin olvidar la seguridad y estabilidad necesarias para una conexión confiable. En definitiva debe ser una herramienta capaz de cumplir con los objetivos inicialmente propuestos, que brinde una conexión remota segura y esté orientada para aquellas compañías que ofrezcan seguimiento y soporte continuo a equipos geográficamente separados.
Actualmente, existen empresas interesadas en aplicativos móviles que brinden servicios similares a los que se prestan, por ejemplo; para banco el poder ofrecerles a sus usuarios contar con una aplicación que les permita realizar sus pagos y transferencias desde el celular es algo totalmente útil y estaría a la vanguardia de las tecnologías actuales. De igual forma para una empresa que posea su infraestructura bajo un ambiente tipo Linux, el contar con nuevas soluciones informáticas móviles, como una aplicación que le permita acceder a los servidores y poder controlarlos de forma remota, le permitiría mejorar el rendimiento de sus procesos internos en términos de tiempo y costo.
De igual forma, en una compañía pequeña, pueden existir procesos a los cuáles se dan soporte por parte de un personal que debe acudir a las instalaciones de los equipos para realizar cualquier tipo de actualización, consulta o resolución de fallos dentro del sistema, que conveniente sería entonces, un software o sistema centralizado, que brinde conexión por vía remota dando acceso a toda la información de los diferentes servidores de forma segura, registrando la auditoría de todos los movimientos utilizando únicamente una conexión a internet.
El objetivo es entonces el poder brindar una herramienta como alternativa de acceso remoto haca máquinas geográficamente separadas (Servidores principalmente), que permita reducir los limitantes que se tienen en una red Linux convencional. Para dicha herramienta se propone igualmente, el desarrollo de una serie de módulos en los cuales se refleje la usabilidad del aplicativo y vayan de la mano con los requerimientos inicialmente solicitados; todo esto, acompañado con la una interfaz amigable que no sea complicada para el usuario final.
En definitiva, el presente proyecto tiene como meta, el poder brindar una alternativa de software que proporcione facilidades para la administración y control de servidores con arquitectura Linux. Se enumeran a continuación los requisitos funcionales que la aplicación debe cumplir en su versión móvil:
51
Tabla 5: Requerimientos funcionales.
LISTADO DE REQUERIMIENTOS FUNCIONALES
Id Descripción Requerimiento
RQ-1 Al iniciarse, debe aparecer una pantalla de “Login” donde el usuario pueda ingresar sus credenciales y el aplicativo mostrara las opciones disponibles.
RQ-2 Una vez logueado y dependiendo de los permisos del usuario, el aplicativo debe mostrar las siguientes funcionalidades: Si es administrador: Agregar usuarios, Gestionar Grupos, Gestionar conexiones. Si es usuario convencional: Deberá poder visualizar todas las conexiones que tenga configuradas hasta el momento y el botón “Agregar Conexión” que le permitirá adicionar más conexiones remotas.
RQ-3 Al presionar sobre cada conexión el aplicativo deberá desplegar un menú emergente en el cual se visualicen las siguientes opciones: “Editar”, “Eliminar”.
RQ-4 Al presionar sobre la conexión registrada, el aplicativo mostrará al usuario un menú donde podrá elegir entre las opciones: “Consola”, “Archivos”, “Grupos” y “Usuarios”. No obstante, el aplicativo podrá rechazar toda solicitud de conexión cuando el servidor sea inalcanzable o en caso de que no se disponga de conectividad a internet suficientemente estable y rápida (vía Wifi o 3G como mínimo).
RQ-5 Desde la opción “Grupos”, la aplicación deberá permitir visualizar el registro de todos los grupos dados en una conexión establecida.
RQ-6 Desde la opción “Usuarios”, la aplicación deberá permitir visualizar los usuarios que en el momento se encuentren relacionados con la máquina.
RQ-7 Desde la opción “Archivos”, la aplicación permitirá visualizar y editar cualquier archivo presente dentro de la maquina remota.
RQ-8 Desde la opción “Consola”, la aplicación deberá permitir comunicarse con el servidor por medio de ejecución de comandos por consola y ejecutar cualquier petición como si estuviese escribiendo directamente sobre la consola del equipo controlado.
52
Por otra parte, la aplicación también tiene una serie de requisitos no funcionales, los cuales son:
Tabla 6: Requerimientos no funcionales.
LISTADO DE REQUERIMIENTOS NO FUNCIONALES
Id Descripción Requerimiento
RQ-1 La aplicación deberá poder ser ejecutada desde cualquier dispositivo bien sea Smartphone o Tablet, siempre y cuando cuente con una versión de Android 4.0 o superior.
RQ-2 La aplicación deberá visualizarse en idioma Español.
RQ-3 El dispositivo debe contar con un procesador de más de 750Mhz.
RQ-4 El dispositivo deberá tener una memoria RAM de 512MB o superior.
RQ-5 El dispositivo deberá tener conexión estable a internet vía WIFI. Si es conectividad móvil vía satélite, deberá ser 3G o superior.
RQ-6 De manera general el aplicativo deberá garantizar funcionalidades como:
Se puedan controlar servidores sin importar la ubicación en la que se encuentren geográficamente localizados.
Almacenar auditoría de los últimos movimientos registrados sobre uno o más servidores remotos.
Visualizar procesos de un servidor determinado desde un dispositivo móvil.
Registrar auditoría de cualquiera de los equipos a los que se tenga control.
Visualizar y modificar archivos que se alojen dentro de una determinada máquina remota.
Proporcionar una alternativa facilitadora, para los usuarios que por alguna razón no puedan acceder presencialmente a una determinada máquina y deban realizar algún tipo de operación o modificación dentro de la infraestructura.
Administrar información y procesos para los diferentes servidores de una red determinada.
Como se estableció en el alcance del proyecto, el desarrollo del software estará dado por recursos y herramientas totalmente libres y de código abierto que apoyen y den construcción en el desarrollo de aplicaciones para dispositivos móviles
De igual forma, en la factibilidad técnica del proyecto, se describen todos aquellos elementos de software y hardware necesarios para la realización del mismo
53
destacando sus requisitos básicos, lo cual garantiza que todos los requerimientos técnicos y tecnológicos necesarios, no son un limitante para el desarrollo del proyecto. Por otra parte, en cuanto a los requerimientos humanos, para el desarrollo exitoso del proyecto se toma en consideración, todas aquellas personas que participan en el proceso de desarrollo.
9.1.2. IDENTIFICACION DE ACTORES
Es conviene definir los actores que hacen parte del aplicativo, esto para tener en cuenta las funciones y alcances dentro del mismo. Cada actor involucrado tendrá un papel dentro del entorno de la herramienta y de su interacción dependerá la usabilidad que determine.
Lo que se pretende en este punto del análisis, es dar viabilidad en la definición de usabilidad, que permita evidenciar de forma clara las funcionalidades de la herramienta para el usuario.
Según las funcionalidades de la herramienta, los siguientes se definen como los actores principales dentro del sistema:
Usuario Local: Será el encargado de establecer toda la configuración necesaria para el correcto funcionamiento del aplicativo. Con la aplicación instalada y las respectivas configuraciones para la conexión, el usuario será capaz de incidir en el control de uno o varios recursos remotos sin ningún inconveniente.
Usuario Web: Es quien podrá visualizar los reportes de auditoría desde el navegador, gracia al componente web de la herramienta.
Equipo remoto: Es el nodo al que una vez configurado se podrán realizar consultas y transmisión de información para el control del mismo.
De la anterior, es de entender que en la herramienta el mismo usuario Local puede también hacer las veces de usuario Web, esto teniendo en cuenta que las credenciales son las mismas en ambos casos.
9.1.3. CASOS DE USO
Después de haber analizado los requerimientos (funcionales y no funcionales) del sistema, se continúa con la fase de análisis mediante la reproducción de los casos de uso y su descripción, haciendo un estudio del contexto del problema mediante el modelo del dominio establecido. En este apartado, se detallan los casos de uso generales que corresponde al ámbito del sistema.
Cada caso de uso posee un flujo normal de eventos y unos escenarios específicos que describen el comportamiento inicial del sistema a través de unas condiciones y requerimientos de usuario o funcionalidad.
54
En este caso poseemos un usuario funcional que posee las operaciones relacionadas con la ejecución de comandos, gestión de archivos y control de usuarios, entre otros; que requieren la autenticación en el sistema para la realización de estas actividades.
Dentro de este listado se tienen:
Tabla 7: Lista preliminar de casos de uso y sus funciones.
ID CASO DE USO
NOMBRE DEL CASO DE USO
FUNCIONES
CU_01 Cargar archivos Esta funcionalidad permite cargar archivos que se encuentran dentro del dispositivo móvil al servidor o equipo Linux.
CU_02 Eliminar archivos Permite borrar archivos o directorios que se encuentren dentro del sistema operativo Linux
CU_03 Crear directorio Crea un directorio sobre la estructura de archivos del SO Linux
CU_04 Descargar archivos Descarga archivos que se encuentran en el SO Linux en el dispositivo móvil.
CU_05 Ejecutar comandos Esta funcionalidad se refiere a la posibilidad de ejecutar comandos en tiempo real sobre la máquina como si fuese una Shell.
CU_06 Crear usuarios Crea un usuario dentro del SO Linux.
CU_07 Editar usuarios Edita las propiedades de un usuario dentro del SO Linux.
CU_08 Eliminar usuarios: Elimina un usuario dentro del SO Linux.
CU_09 Crear grupos Crea un grupo dentro del SO Linux.
CU_10 Editar grupos Edita las propiedades de un grupo dentro del SO Linux.
CU_11 Eliminar grupos Elimina un grupo dentro del SO Linux.
CU_12 Visualizar auditoria Permite visualizar los registros de auditoría que se han generado a partir de las operaciones realizadas por los usuarios.
CU_13 Generar reporte de auditoría
Permite generar un reporte en Excel o PDF de los registros de auditoría.
CU_14 Gestionar equipo Tiene como objetivo la posibilidad de gestionar los equipos o máquinas con SO Linux.
56
9.1.4. DIAGRAMAS DE ACTIVIDAD
Los diagramas de actividad representan el flujo de casos de uso dispuestos anteriormente y conllevan las posibles excepciones o caminos que pueden suceder a lo largo de la ejecución de una funcionalidad en específico. A continuación se presentan los diagramas más importantes de esta fase de análisis y que muestran un flujo que es general a todos los demás casos de uso.
Caso de uso: Cargar archivos
Imagen 9: Diagrama de actividad - cargar archivos
En este diagrama, se demuestra el flujo necesario y las actividades para cargar un archivo al SO Linux. En primer lugar se necesita realizar una autenticación en la aplicación y seleccionar el archivo a cargar dentro del dispositivo móvil. Luego de esta actividad, el archivo es enviado a través de un mecanismo HTTP hacia el sistema operativo. Si el archivo fue cargado exitosamente, termina el flujo de esta
57
funcionalidad de negocio, de lo contrario el usuario podrá realizar más intentos de envío.
Caso de uso: Ejecutar comandos
Imagen 10: Diagrama de actividad - ejecutar comandos
En este diagrama se muestran los pasos necesarios que realiza un usuario de la aplicación para ejecutar comandos en el sistema en tiempo real. Aquí se muestran los caminos y salidas que se pueden tomar alrededor del contexto de esta actividad.
58
Caso de uso: Crear usuarios en el sistema
Imagen 11: Diagrama de actividad - crear usuarios
En este caso, se presentan las alternativas que posee un usuario de la aplicación para realizar la creación de usuarios pertenecientes al sistema operativo Linux. Debido a que este SO, cuenta con una estructura definida de usuarios y grupos para el acceso y control sobre los recursos del sistema, es importante realizar la validación de que no exista alguno con un nombre existente para su debida gestión dentro del entorno real de ejecución y operación de la máquina.
59
Caso de uso: Generar reportes de auditoría
Imagen 12: Diagrama de actividad - generar reportes de auditoría
En este flujo de negocio se describen los pasos para visualizar y descargar un reporte de auditoría sobre las operaciones y procedimientos ejecutados sobre el sistema operativo a través de la aplicación. Este reporte podrá descargarse en formato PDF a través del navegador desde el mismo cuadro de control de auditoría.
60
9.1.5. MODELO DEL DOMINIO DEL SISTEMA
El modelo del dominio de este proyecto, representa todos los elementos y componentes del desarrollo, detallando los conceptos importantes relacionados con la problemática derivada de la búsqueda una herramienta facilitadora en el acceso remoto a servidores Linux, esto enfocado a un mejor control de acceso dentro de una conexión segura.
Se muestra entonces el ámbito que respecta al dominio del problema identificando las posibles dependencias iniciales y/o relaciones existentes entre los conceptos inherentes a dicho dominio, dando un enfoque hacia el proceso de conexión remota entre dispositivos móviles y equipos de escritorio. Más específicamente, dichos conceptos corresponden a la intercomunicación entre dispositivos de forma remota mediante el envío de comunicación cifrada.
Imagen 13: Modelo del dominio del sistema
61
9.2. DISEÑO DEL SISTEMA
9.2.1. MODELO ENTIDAD-RELACION
De acuerdo al diccionario de datos descrito anteriormente y teniendo en cuenta sus características más importantes que definen el diseño del modelo de datos del sistema, se establece el modelo entidad-relación, el cual representa y plasma el dominio de las entidades con sus relaciones estables y respectivas. Poniendo en consideración, los procesos de negocio y los conceptos expuestos en la problemática que presenta la empresa Software Builders LTDA, este modelo trata de detallar una percepción real de los elementos que intervienen en la gestión de proyectos de software.
Como se ha establecido en el diccionario de datos, básicamente lo que se trata de definir es el modelo de datos que tendrá la aplicación para su puesta en producción. En el modelo presente en la figura a continuación, se describe la colección de objetos básicos (entidades) además de las relaciones expuestas a través de llaves foráneas y dependencias funcionales dentro del dominio de conceptos descrito.
Para este diagrama tenemos las siguientes convenciones, resumidas en la tabla 5.
Tabla 8: Convenciones, modelo entidad-relación
Símbolo Significado
Representa una tabla con todas sus columnas y campos que pueden contener cierto tipo de componentes como restricciones, llaves únicas, llaves foráneas, constraints o índices.
Detalla una relación que define la multiciplidad o carnidalidad entre dos tablas de uno a muchos
Detalla una relación que define la multiciplidad o carnidalidad entre dos tablas de uno a uno.
Detalla una relación que define la multiciplidad o carnidalidad entre dos tablas de muchos a muchos.
63
9.2.2. MODELO LOGICO (DIAGRAMA DE CLASES)
El modelo lógico para este proyecto, expresa el estado persistente y el comportamiento que tendrá en nuevo sistema a nivel del núcleo de desarrollo además del paradigma del diseño de orientación a objetos. Dentro de este, se representa una vista estática de los objetos y clases que cubren el contexto y dominio del problema, que en este caso hace referencia al proceso de administración, gestión y dirección de proyectos informáticos.
A este nivel de diseño, lo que se trata es de describir la estructura del sistema a través de una serie de componentes que detallan las propiedades de los objetos del dominio. Así mismo, se ponen en evidencia las operaciones que cuentan con una especificación de tipos de datos que en este caso hacen referencia al estándar del lenguaje de programación seleccionado para la elaboración del sistema y desarrollo. En este modelo lógico del sistema detallado en la siguiente imagen, se representan los elementos de la siguiente forma:
Clase: atributos, métodos y visibilidad.
Relaciones: Herencia, Composición, Agregación, Asociación y Uso.
Las convenciones para el diagrama de clases se presentan en la tabla 6.
Tabla 9: Convenciones, modelo lógico
Símbolo Significado
Representa una clase con los diferentes atributos y métodos que pueden contener una variedad de propiedades de acceso que son: public, private y protected. Además cada uno de estos elementos pertenecientes a una clase contiene un tipo por defecto.
Representa una asociación entre dos clases, que generalmente implica que una clase posee un variable de instancia de otra.
Representa una agregación, frecuentemente usada para describir elementos compuestos por otros.
Representa una generalización, la cual denota la herencia entre clases.
Representa una agregación compuesta.
Representa una realización entre clases, que no es más que la expresión de la trazabilidad e integridad en el modelo a través del llamado de métodos.
65
9.2.3. DIAGRAMA DE COMPONENTES
En este diagrama se presentan los componentes más importantes sobre los
cuales está basado el desarrollo del sistema a nivel de software en términos de
elementos funcionales que comprenden una parte específica del mismo.
Cada componente posee un conjunto de clases en general y una serie de
herramientas utilitarias que hacen posible la comunicación con los ambientes
externos como la base de datos y el sistema operativo.
Imagen 16: Diagrama de componentes
En nuestro sistema encontramos tres que son:
66
Business-core: es el componente encargado de la comunicación y el que
gestiona las operaciones contra la base de datos. Aquí se encuentran un
conjunto de clases diseñadas con el patrón de diseño DAO (Data Access
Object/ Objeto de acceso a datos) cuyo fin es proveer un punto central para
realizar operaciones en un repositorio de datos.
Business-machine: este componente tiene como fin realizar todo el manejo
y control de cara al sistema operativo. Tiene como función el establecer los
puntos de conexión y los elementos necesarios para interactuar con el
sistema operativo. Dentro de este componente se encuentran una serie de
artefactos que proveen las operaciones y se realizaron mediante el patrón
de diseño Facade y Strategy, con el objetivo de agrupar funcionalidades y
reducir la complejidad de un conjunto de interfaces.
WebAppService: dentro de este artefacto se encuentran los puntos de
acceso y exposición de servicios web para el consumo por parte de los
dispositivos móviles. Además de esto, se encuentra un contralor web para
gestionar el tema de auditoría.
El objetivo de nuestro proyecto fue realizar componentes altamente desacoplados
que fuesen posibles integrar con otros sistemas externos o aplicaciones de
cualquier índole escritas en Java. Por esta razón, se realizó una separación de
componentes donde cada uno tuviese un contexto diferente y pueda operar de
una manera interoperable de la siguiente forma:
Imagen 17: Componentes interoperables
9.2.4. MODELO FÍSICO (DIAGRAMA DE DESPLIEGUE)
El modelo físico representa la arquitectura del sistema en tiempo de despliegue caracterizando cada uno de los componentes que intervienen en la ejecución del
67
sistema además de sus métodos de comunicación. Para este caso, representamos los fundamentales en cuanto a hardware y software que intervienen en el proceso de despliegue como servidores, dispositivos y estaciones de trabajo.
Imagen 18: Modelo físico
Por una parte, tenemos los componentes necesarios para la ejecución del sistema, que están orientados a una estación de trabajo o un dispositivo móvil dependiendo el entorno de ejecución del sistema en cada caso. Por otra, observamos los servidores inherentes al proceso de despliegue: servidor de aplicaciones, servidor de base de datos y sistema operativo.
9.2.5. DIAGRAMAS DE SECUENCIA
Los diagramas de secuencia describen “el comportamiento del sistema y las
operaciones que se realizan representando los objetos y los mensajes que se
68
intercambian.”15 Para nuestro proyecto se presentan comportamientos similares a
nivel de objetos en la aplicación por lo que a continuación se presentan los
diagramas más importantes referentes a algunos casos de uso.
Caso de uso: Cargar archivos
Imagen 19: Diagrama de secuencia - cargar archivos
Dentro de este diagrama destacamos los siguientes aspectos:
Android Interface: Se refiere al objeto que interactúa con el usuario y es el
encargado de delegar las peticiones a los servicios o repositorios de datos
que se necesiten.
Servicio web REST: Es el objeto que recibe las peticiones por parte de los
dispositivos móviles y las procesa para dar una respuesta hacia los
mismos.
FileOperation: Es una interfaz encargada de redirigir las peticiones del
servicio hacia métodos de negocio que realicen las operaciones
relacionadas con el dominio
Archivo: Es el objeto de dominio que se usa para transportar los datos
relacionados con el contexto de la operación.
Básicamente, los elementos u objetos se repiten durante los siguientes diagramas,
por esta razón, no se realizarán más descripciones adherentes a los mismos.
Caso de uso: Ejecutar comandos
15 Diagrama de secuencia en https://ingsotfwarekarlacevallos.wordpress.com/2015/07/07/uml-diagrama-de-secuencia/
69
Imagen 20: Diagrama de secuencia - ejecutar comandos
En este caso encontramos los mismos elementos del diagrama anterior, sin
embargo, ahora el objeto de dominio es un comando.
70
Caso de uso: Crear usuario
Imagen 21: Diagrama de secuencia - crear usuarios
Caso de uso: Generar reporte de auditoría
Imagen 22: Diagrama de secuencia - generar reportes de auditoría
Caso de uso: Gestionar equipos
71
Imagen 23: Diagrama de secuencia - gestionar equipos
9.3. IMPLEMENTACION DEL SISTEMA
9.3.1. BASE DE DATOS
Para la gestión y administración de los datos se hizo uso de la capa de integración
de PostgreSQL para el soporte y gestión de la información del sistema. Esta
provee objetos y utilidades para la gestión de los datos además de mecanismos
de acceso a la información u otros elementos como seguridad, robustez,
interoperabilidad, servicios, control de usuarios, etc. Básicamente, este servidor de
base de datos, proporciona instancias y archivos físicos que garantizan la
escalabilidad además del soporte multiplataforma para la instalación, despliegue y
ejecución de bases de datos. La característica principal radica en el soporte y
gestión de transacciones a nivel estable, brindando un conjunto de tipos de datos
específicos según sea la necesidad y diversidad de información en el sistema. Con
estas características, “el usuario sólo gestiona el nivel lógico, lo que proporciona
una gran simplicidad a la gestión de los datos, incluso en el caso de usuarios con
pocos conocimientos informáticos.”16
Como la mayoría de los sistemas gestores de base datos más populares y
conocidos a nivel mundial, Oracle se fundamente en el uso de lenguaje de
consulta estructurado (SQL) para el acceso a la base de datos, consulta de
información y operaciones de sentencias establecidas. El objetivo de este lenguaje
16 GABULLAUD, Jerome. Oracle 11g. Recursos Informáticos. Ediciones ENI. Enero, 2010
72
declarativo, es permitir la ejecución y creación de consultas con el fin de visualizar
o retribuir información de interés soportada en una base de datos relacional, así
como también el efectuar operaciones a nivel de edición y registro.
Básicamente, este lenguaje de consulta está basado sobre una serie de grupos o
clasificación de comandos que son:
Lenguaje de definición de datos (DDL): encargado de la modificación de
la estructura de los objetos de la base de datos. Incluye operaciones para
crear, modificar, borrar o definir estos objetos.
Lenguaje de manipulación de datos (DML): se refiere al lenguaje que
permite la consulta y manipulación de los datos o registros pertenecientes a
un modelo relacional. En general, proporciona mecanismos para el acceso
a la información a través de una serie de parámetros y sintaxis establecida.
Lenguaje de control de datos (DCL): Es un modelo establecido para la
definición de acceso y nivel de privilegios hacia los objetos de la base de
datos e inclusive para el manejo de sesiones.
9.3.2. COMPONENTES DE LA IMPLEMENTACIÓN
En primer lugar, hay que decir que el modelo de aplicaciones JavaEE (Java
Enterprise Edition) está soportado como su nombre lo indica, sobre una máquina
virtual Java y el paradigma de la plataforma en general de este lenguaje de
programación. “Java EE está diseñado para soportar aplicaciones que
implementan servicios empresariales para clientes, empleados, proveedores,
partners y todos aquellos quienes contribuyen con una organización.”17 Estas
aplicaciones, están hechas de componentes autómatas o utilidades que se
identifican como unidades funcionales de software, los cuales proveen servicios y
técnicas de desarrollo.
El servidor de aplicaciones funciona como un contenedor de los componentes del sistema, los cuales están implementados sobre las diferentes capas de la aplicación. Dicho de otra manera, se trata de un dispositivo de software que gestiona la descripción de la lógica de negocios y el acceso a los recursos de la aplicación, lo que promueve la centralización y disminución de complejidad en el desarrollo de componentes.
TOMCAT, es el servidor de aplicaciones utilizado para el desarrollo de este sistema. Se trata de un servidor proveído por Apache para el desarrollo y despliegue de aplicaciones JavaEE y tecnologías web basadas en tecnología Java. Por otra parte provee herramientas como: contenedor web, consola de administración, componente de actualización, portabilidad, soporte.
17 The JavaEE 5 Tutorial / Erick Jendrock, Third Edition
73
Imagen 24: Arquitectura JavaEE
El desarrollo de nuestro sistema está basado en servicios web de tipo REST (Representational state transfer), que es una tecnología moderna para la integración de soluciones y desarrollo de sistemas informáticos web basados en operaciones HTTP. “Debido a que la tecnología REST utiliza HTTP, esto da la facilidad de que pueda ser utilizada prácticamente por cualquier lenguaje de programación y que sea fácil de testear, además es un requisito de un servicio REST que el cliente y el servidor sean independientes entre sí”18.
Para el desarrollo de nuestro sistema se han desarrollado una serie de conjuntos de servicios web para el consumo y operación desde otros sistemas externos o artefactos como lo son los dispositivos móviles. Esta serie de servicios tienen en común el traspaso de mensajes a través de lenguaje de metadatos JSON (JavaScript Object Notation); que es una estructura de datos que provee un lenguaje común para la interacción entre diferentes sistemas y componentes.
18Arquitectura REST en http://www.tsgroup.com.co/wps/portal/tsg/blog/detalle-blog/la-arquitectura-rest
74
Imagen 25: REST API
Puesto que los servicios web de tipo REST son recursos publicados en la web,
son por ende sensibles a técnicas de hacking o fraudes transaccionales en la
información y en el canal de comunicación si no se posee un mecanismo de
autenticación o autorización en el uso de los mismos. Para solventar este
problema, se hará uso de un framework de libre uso denominado JSON Web
Token (JWT). En general, lo que nos brinda esta tecnología, es la posibilidad de
que cada petición realizada por un usuario posea un token de autenticación que
sea validado por el servidor que recibe las transacciones a través de un algoritmo
de encriptación. Provee la posibilidad realizar una firma cifrada que permite
identificar los usuarios y descifrar los tokens en la autenticación desde nuestros
servicios de lógica de negocio.
Imagen 26: Contexto de acción de JWT
La herramienta que se usó para hacer el desarrollo del sistema fue Eclipse en su versión Luna. Esta herramienta es un IDE (Entorno de Desarrollo Integrado) para Java que posee grandes características para la implementación de sistemas en diferentes tecnologías y contextos.
Por otra parte, para un óptimo manejo de librerías del proyecto se realizó un control a través de MAVEN, que es una herramienta de software para la gestión y
75
construcción de proyectos Java. Esta permite tener un control de las librerías utilizadas y realiza la descarga automática de los artefactos necesarios a usar sin necesidad que el desarrollador se preocupe por estos elementos. “Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos. Viene con objetivos predefinidos para realizar ciertas tareas claramente definidas, como la compilación del código y su empaquetado”19. Las librerías usadas para el desarrollo del proyecto fueron:
Nombre Versión Descripción
javaee-api 7.0 Librería que contiene los componentes de infraestructura de java para aplicaciones web y otros
log4j 1.2.17 Librería para escribir logs de la aplicación personalizados
testng 6.8 Librería para elaborar pruebas de código
postgresql 9.2 Librería para realizar conexión y operaciones de BD
commons-io 2.4 Librería para manejar streams y operaciones I/O
jsch 0.1.54 Librería de comunicación y operaciones con sistemas Linux
ehcache 2.10.4 Librería para configurar cachés de la aplicación
gson 2.8.0 Librería para gestionar y manejar mensajes JSON
jersey 1.8 Librería para proveer y desplegar servicios web Tabla 10: Cuadro de librerías utilizadas
Finalmente, el desarrollo móvil fue realizado con Android y sus características de comunicación, gestión y manejo para dispositivos móviles. La aplicación móvil fue escrita con código nativo y componentes básicos para tener mayor control sobre la lógica de negocio. Básicamente es un cliente que consume los servicios web y posee toda la conectividad de red para la interacción con el usuario y la ejecución de funcionalidades más importantes
9.3.3. ESQUEMA GENERAL DE LA APLICACIÓN
Para la construcción del producto final se hizo uso de una serie de tecnologías y conjunto de componentes para la consecución final del sistema. Estos proporcionaron los mecanismos de creación de las funcionalidades más relevantes y de los módulos de la aplicación. En general, la aplicación está 19 Maven en https://es.wikipedia.org/wiki/Maven
76
Imagen 27: Esquema general del sistema
compuesta de un sistema de información web encargado de procesar y visualizar los datos, además de proveer herramientas a través de un mecanismo de autenticación al mismo. Este sistema web, será accedido a través de un navegador y alcanzable desde la red interna de la compañía. Por otra parte, la aplicación móvil será instalada sobre dispositivos Android y se requerirá del uso de internet para su servicio o disponibilidad. Prestará servicio desde cualquier lugar siempre y cuando exista dicha conexión como requerimiento.
Se utilizó una única base de datos para la gestión de información y control de contenido, que será alcanzable a través de cualquiera de los ambientes de ejecución del sistema para efectuar operaciones de administración de datos como edición o registro.
La comunicación entre los componentes de la aplicación (web y móvil) fue definida a través del uso de servicios web de tipo Rest, que permiten la interoperabilidad y confiablidad de los datos mediante el empleo de solicitudes HTTP hacia el servidor en despliegue. Aspectos más técnicos y en detalle acerca de la estructura y funcionalidad están definidos en el ANEXO A: Manual del programador.
La imagen a continuación, representa un concepto gráfico de la arquitectura inicial del sistema y de los elementos que intervienen en el flujo normal o productivo del mismo.
9.4. PRUEBAS DEL SISTEMA
9.4.1. PRUEBAS UNITARIAS
77
Para el diseño, desarrollo e implementación de las características del proyecto se
realizaron pruebas unitarias para evaluar las funcionalidades de cada método
esencial dentro del negocio. Estas pruebas “buscan aislar cada parte del programa
y mostrar que las partes individuales son correctas”20 dentro de la aplicación. Para
el desarrollo de los componentes del sistema se realizaron estas pruebas dentro
de cada uno de los contextos.
Se hizo uso de JUnit la cual es “una librería desarrollada para poder probar el
funcionamiento de las clases y métodos que componen nuestra aplicación, y
asegurarnos de que se comportan como deben ante distintas situaciones de
entrada.”21.
Estas pruebas poseen el siguiente ciclo:
Imagen 28: Ciclo de pruebas unitarias
Para nuestro proyecto aplican dos tipos de prueba que son:
De base de datos: pruebas que evalúan el registro y actualización correcta
de métodos de negocio sobre la base de datos
De componentes: pruebas que evalúan el comportamiento de un
componente dentro de un dominio específico de negocio.
Estas pruebas se realizan mediante código y se encuentran dentro de la carpeta
de pruebas del proyecto en los paquetes “src/main/resources” y fueron realizadas
sobre los componentes internos más importantes de la aplicación; que nos
ayudaron a contemplar el dominio del negocio y delimitar la aplicación a un
conjunto de funcionalidades específico.
20 Pruebas unitarias en http://www.microgestion.com.ar/index.php/mg-developers/articulos/74-unit-test-part1-mock 21 JUnit en http://www.jtech.ua.es/j2ee/publico/lja-2012-13/sesion04-apuntes.html
78
Imagen 29: Ubicación de pruebas unitarias dentro del proyecto
Se componen de dos elementos importantes que son:
BeforeMethod: Es el paso donde se inicializan los componentes y se
agregan los datos necesarios de prueba
Imagen 30: Fase inicial de prueba unitaria
Test: Es una prueba que evalúa la funcionalidad de un método de una
clase. Aquí encontramos los “assert” que son los que evalúan la respuesta
correcta de la prueba.
79
Imagen 31: Método de prueba unitaria
9.4.2. PRUEBAS DE INTEGRACIÓN
Las pruebas de integración se realizan para evaluar la interacción entre los
componentes fundamentales de la aplicación y evalúan una respuesta en tiempo
real del sistema y sus características. Para el caso de nuestro proyecto, se
hicieron pruebas de integración con la herramienta “Postman”, la cual es “una
extensión del navegador Google Chrome, que permite el envío de peticiones
HTTP REST sin necesidad de desarrollar un cliente.”22.
Estas pruebas realizan peticiones al servidor real con un body de la petición y
esperan una respuesta específica. Para este caso, la estructura del mensaje que
es transportada en un JSON (Java Script Object Notation). En los anexos de este
proyecto se encontrarán los archivos que contienen estas pruebas de integración.
Se encuentran los siguientes elementos:
Una URL que es la dirección del servicio web que recibirá la petición.
Un cuerpo del mensaje que es el JSON que se envía sobre HTTP.
Una respuesta y un código HTTP que nos indica el resultado de la
ejecución.
22 https://profesores.virtual.uniandes.edu.co/~isis2603/dokuwiki/doku.php?id=tutoriales:postman
80
Imagen 32: Formato de prueba de integración en Postman
9.4.3. PRUEBAS DE CONCURRENCIA
Para realizar las pruebas de concurrencia, estrés y performance se usó el software
llamado JMeter “que puede ser utilizado como una herramienta de prueba de
carga para analizar y medir el desempeño de una variedad de servicios, con
énfasis en aplicaciones web.”23
Esta herramienta está desarrollada en JAVA y básicamente puede ser usada
como un entorno de pruebas para “conexiones de bases de datos con JDBC, FTP,
LDAP, Servicios web, JMS, HTTP y conexiones TCP genéricas. JMeter puede
también ser configurado como un monitor, aunque es comúnmente considerado
una solución ad-hoc respecto de soluciones avanzadas de monitoreo.”24
Configuración
Esta herramienta se descarga en el siguiente enlace:
http://jmeter.apache.org/download_jmeter.cgi
23 Jmeter en https://es.wikipedia.org/wiki/JMeter 24 Bis
81
Para usar en Windows, se debe extraer el .zip descargado y ejecutar el .bat que
se encuentra en el directorio:
Imagen 33: Estructura de archivos de JMeter
Para la ejecución de estas pruebas se hizo uso del servicio web para ejecutar
comandos sobre una máquina instalada in cloud en un servidor en San Francisco,
EEUU. Esta máquina posee las siguientes características:
Sistema Operativo Ubuntu 16.04.3 x64
1 GB de RAM
30 GB de disco duro
2 TB de transferencia de archivos
Procesador Intel(R) Xeon(R) CPU E5-2650L v3 @ 1.80GHz
Las pruebas se realizaron sobre una conexión desde Bogotá con 11MB de
velocidad de transferencia. El esquema es el siguiente:
82
Imagen 34: Modelo de pruebas de concurrencia
Básicamente, la prueba se compone de un HTTP Request (Petición) con la siguiente
estructura:
Imagen 35: Formato de prueba en JMeter
En esta prueba se encuentra el mensaje JSON de solicitud, y la URL donde se va
ejecutar el servicio.
Ejecución
Para una prueba de concurrencia con 10 usuarios ejecutando continuamente el
mismo servicio durante 30 segundos y encontramos las siguientes estadísticas:
83
Imagen 36: Estadísticas de prueba de concurrencia I
Esto nos indica los siguientes resultados:
El número de usuarios que ejecutaron el servicio durante 30 segundos
fueron 162
El promedio de respuesta del servicio para esta cantidad de usuarios fue
1753 ms (1,753 seg)
La cantidad de peticiones que se pudieron ejecutar fueron de 5,3 por
segundo. De la misma manera, la latencia fue 108.85 KB por segundo
No existieron errores en ninguna petición del servicio
La petición que más se tardó en responder fue de 4298 ms (4,2 seg)
Luego, aumentando la carga para la ejecución, se realizan pruebas con 50
usuarios concurrentes para evaluar el comportamiento y performance del sistema.
Se encontraron los siguientes resultados:
84
Imagen 37: Estadísticas de prueba de concurrencia II
Esto nos indica las siguientes variaciones:
El número de usuarios que ejecutaron el servicio durante 30 segundos
fueron 517
El promedio de respuesta del servicio para esta cantidad de usuarios fue
2826 ms (2,2826 seg)
La cantidad de peticiones que se pudieron ejecutar fueron de 15 por
segundo. De la misma manera, la latencia fue 140.38KB por segundo
No existieron errores en ninguna petición del servicio
La petición que más se tardó en responder fue de 16608 ms (16,6 seg)
Finalmente, se realiza una prueba con 100 usuarios concurrentes ejecutando
peticiones continuamente al servicio. Esto nos indica los siguientes indicadores:
85
Imagen 38: Estadísticas de prueba de concurrencia III
Esto nos indica las siguientes variaciones:
El número de usuarios que ejecutaron el servicio durante 30 segundos
fueron 503
El promedio de respuesta del servicio para esta cantidad de usuarios fue
6840 ms (6,840 seg)
La cantidad de peticiones que se pudieron ejecutar fueron de 9,8 por
segundo. De la misma manera, la latencia fue 91,96 por segundo
No existieron errores en ninguna petición del servicio
La petición que más se tardó en responder fue de 41112 ms (41,11 seg)
Análisis de resultados
Encontramos como resultado de las pruebas de concurrencia la siguiente tabla:
#Usuarios #Peticiones Tiempo Tiempo Tiempo Cantidad de
86
realizadas promedio de respuesta (segundos)
mínimo de respuesta (segundos)
máximo de respuesta (segundos)
peticiones por segundo
10 162 1,6 1,4 4,3 20
50 517 2,3 1,18 16,6 15
100 503 6,8 1,18 41,1 9,8 Tabla 11: Estadísticas de pruebas de concurrencia finales
Como es de esperar, observamos que en cuanto se aumenta la capacidad de
usuarios concurrentes el tiempo de respuesta de la aplicación y la cantidad de
peticiones por segundo van siendo inferior alrededor de un espacio de tiempo. Un
buen desempeño de tiempo de respuesta para un servicio web se evalúa
alrededor de 8 segundos máximo, por lo que encontramos que para la máquina
con las características realizadas soportaría 100 usuarios concurrentes a la vez
para su correcto funcionamiento y ejecución.
Por otra parte, podemos concluir que para un equipo con mayores características
de hardware estos valores serán proporcionales al aumento de las
especificaciones como memoria RAM y CPU.
0
1
2
3
4
5
6
7
8
10 50 100
Numero de usuarios X tiempo de respuesta
Numero de usuarios X tiempo de respuesta
87
CONCLUSIONES
El resultado final del proyecto, hoy nos indica que el uso de equipos y dispositivos remotos en el entorno empresarial y en el mundo de la gestión de proyectos informáticos, supone la necesidad de búsqueda y utilización de herramientas funcionales que de forma colaborativa presten servicios de comunicación instantánea o soporte a un ambiente de información actualizado y compartido.
El despliegue del sistema en la empresa, suministrará a corto plazo una utilidad para el control interno de sus proyectos actuales y a futuro. Por otra parte, ayudará a la organización en su objetivo comercial y productivo al otorgar mecanismos para la mejora en la precisión de las estimaciones de tiempo, costo y recursos (humanos, tecnológicos).
La integración de aplicaciones web con herramientas móviles extiende el nivel de calidad de una solución informática y actualmente provee un desafío para el desarrollo de nuevos sistemas de información empresariales, geográficos y de automatización.
Se comprueba, que la utilización del marco de desarrollo de software UP (Proceso unificado) puede proveer un mecanismo factible para la consecución de proyectos al proporcionar una guía detallada que minimiza los riesgos del mismo y se centra en la arquitectura de un sistema, otorgando mecanismos metodológicos para el análisis, diseño, implementación y prueba de una aplicación. Así mismo, asegura la calidad del desarrollo al anticiparse al cambio de requerimientos y promover la interacción continúa con el usuario al entregar una parte del producto durante sus fases.
El uso de tecnologías de desarrollo como JAX-RS (servicios web basados en recursos) y EJB, puede facilitar la elaboración de componentes esenciales para establecer un modelo de comunicación entre aplicaciones y controlar problemas de concurrencia de transacciones o solicitudes por parte de los usuarios. Además de esto, indica que estas herramientas de construcción de sistemas, pueden proveer características como sincronización, seguridad, consumo de servicios, manipulación de datos, tiempos de respuesta, entre otros.
El sistema desarrollado es susceptible a mejoras en el futuro de acuerdo al contexto empresarial interno y el clima laboral de la compañía. El uso de tecnologías web flexibles y la documentación generada, proporcionan un mecanismo para la implementación de cambios simples y asequibles a corto plazo.
88
RECOMENDACIONES
Actualmente se requiere de nuevas herramientas y creación de
componentes interoperables que puedan funcionar en diversos ambientes o
lenguajes dentro de las organizaciones. Es de gran importancia reducir la
complejidad que se tiene en la gestión y manejo de equipos o servidores,
por esta razón es de aconsejable el propiciar la fomentación hacia nuevas
investigaciones de este tipo de sistemas, que promuevan la búsqueda de
conocimiento a través de la experiencia humana o laboral; contribuyendo a
que la Universidad Distrital como ente educativo, crezca en el dominio
empresarial y sea reconocida dentro del país por su calidad en el campo
tecnológico.
Se considera importante y se propone como resultado final de este
proyecto, la investigación sobre nuevas tecnologías y herramientas de
desarrollo de software. El uso de nuevos componentes y utilidades
actuales, como la creación de aplicaciones móviles, demuestran que existe
una tendencia al empleo frecuente de dispositivos portátiles en el ámbito
productivo de las organizaciones y compañías.
El desarrollo de este proyecto de grado es una pequeña parte, de nuevas
implementaciones funcionales que se pueden realizar para el manejo y
control de sistemas Linux. Es conveniente remitir este proyecto como punto
de partida hacia nuevas herramientas para la gestión de ambientes de
virtualización y otros artefactos que se tienen en el ámbito organizacional.
REFERENCIAS
89
María Paula Espinosa Velez, Carlos Gabriel Córdova Erreis, Gestión de proyectos informáticos: Guía didáctica. Editorial UOC. Octubre, 2014
JENDROCK, Eric; CERVERA-NAVARRO, Ricardo; EVANS Ian; HAASE, Kim; MARKITO, William. The Java EE 7 Tutorial, Release 7 for Java EE Platform. Mayo 2014.
MONTERO Miguel, Roberto. Android, desarrollo de aplicaciones. Sistema operativo Android. 2015 Bogotá: Ediciones de la U.
Jacobson, I.; Booch, G. y Rumbaugh, J.; “El Proceso Unificado de Desarrollo de software”.2012. Addison-Wesley
TENIENTE, Ernest; COSTAL, Dolors; SANCHO, M. Ribera. Especificación de Sistemas de software en UML. Edición 2016.
ALONSO, Fernando; MARTINEZ, Loic; SEGOVIA, Javier. Introducción a la ingeniería de software: modelo de desarrollo de programas. Publicaciones. Delta Publicaciones Universitarias. Primera edición 2014.
Anaisa Hernández González. Aplicación del Proceso Unificado de Desarrollo a proyectos de software. Addison Wesley. Madrid, Mayo 2014.
Jesús David Quintero, Eliana Fernanda Tacan y Fernando Augusto España. Diseño e Implementación de un Sistema de Control y Monitoreo Remoto para la Iluminación de una Vivienda a través de un Teléfono Móvil con Sistema OperativoAndroid y Board ARM mini2440. Mayo 2015. Revista Ingeniería y Región.
Oracle. The Java EE 7 Tutorial. Septiembre, 2013.
Lawrence Putnam, Ware Myers. Five Core Metrics, Julio, 2013
Medellín Cabrera, Enrique. Construir la innovación: gestión de tecnología en la empresa. México. Siglo veintiuno editores. 2013
Bermejo, José Manuel. López, Máxima. La innovación continua en el éxito empresarial. Marzo, 2014
Rohaut, Sebastien. Linux: Dominar la administración del sistema. Editions ENI. Mayo 2015
Dordoigne, José. Las redes: Administre una red en Windows o en Linux. Editions ENI. Enero 2015
Gulabani, Sunil. Developing RestFul Web Services with Jersey 2.0. Packt Publishing. Noviembre, 2013
Dickey, Jeff. Write Modern Web Apps with the Mean Stack. PeachPit Press. 2015
Fox, Richards. Linux with Operating System Concepts. Taylor & Francis Group. 2015
90
Sanchez, Baldomero. Cuaderno Practico de Linux. Segunda Edición. 2015
Rios, Sergio. JSF 2+ Hibernate 4+ Spring 4. 2015
Toro, Francisco. Administración de proyectos de informática. ECOE Ediciones. Bogotá, 2013
Robledo, David. Desarrollo de Aplicaciones para Android II. 2014
Noriega, Raúl. El procesdo de desarrollo de software. IT Campus Academy. 2015
91
INFOGRAFÍA:
Formulación y gestión de proyectos en: http://www.virtual.unal.edu.co/cursos/agronomia/2007841/lecciones/01_03.html
Administración de proyectos informáticos en https://sites.google.com/site/admdeproyectinginf
10 herramientas de software libre para gestionar proyectos en http://bitelia.com/2012/11/herramientas-software-libre-gestionar-proyectos
Factibilidad técnica, operativa y económica en http://www.slideshare.net/helodtk1/factibilidad-tecnica-operativa-y-economica-20908957
Programación en Android: http://www.sgoliver.net/blog/
10 herramientas de software libre para gestionar proyectos en http://bitelia.com/2012/11/herramientas-software-libre-gestionar-proyectos
92
ANEXOS
LISTA DE ANEXOS
Anexo A. MANUAL DEL USUARIO
Anexo B. MANUAL DEL PROGRAMADOR
Anexo C. ARCHIVOS DE PRUEBAS POSTMAN
94
APLICACIÓN MÓVIL PARA LA GESTIÓN DE USUARIOS, CONTROL DE
ARCHIVOS Y FLUJOS DE OPERACIONES A TRAVÉS DE UNA TERMINAL
PORTÁTIL EN AMBIENTES LINUX CON HERRAMIENTAS DE GESTIÓN DE
AUDITORÍA Y SEGURIDAD CRIPTOGRÁFICA
BRANDON ALEXIS CASTILLO PINZÓN
CRISTHIAN CAMILO CANGREJO SÁENZ
MANUAL DEL USUARIO
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
INGENIERÍA EN TELEMÁTICA
FACULTAD TECNOLÓGICA
BOGOTÁ D.C.
AÑO 2017
95
TABLA DE CONTENIDO
INTRODUCCION ................................................................................................................................ 97
1. OBJETIVOS ................................................................................................................................ 98
1.1. OBJETIVO GENERAL .......................................................................................................... 98
1.2. OBJETIVOS ESPECIFICOS ................................................................................................... 98
2. REQUERIMIENTOS .................................................................................................................. 100
2.1. REQUERIMIENTOS DE LA APLICACIÓN MOVIL ................................................................ 100
3. FUNCIONALIDADES ................................................................................................................ 101
3.1. FUNCIONALIDADES DE LA APLICACIÓN MÓVIL .............................................................. 101
3.1.1. Pantalla Login (inicio de sesión).............................................................................. 101
3.1.2. Menú de Consola .................................................................................................... 103
3.1.3. Menú Grupos.......................................................................................................... 104
3.1.4. Menú Usuarios ....................................................................................................... 105
4. CONCLUSIONES ...................................................................................................................... 106
96
TABLA DE ILUSTRACIONES
Ilustración 1: Pantalla de inicio de sesión de la aplicación móvil ................................................... 102
Ilustración 2: Pantalla de inicio de la aplicación Android. .............................................................. 102
Ilustración 3: Interfaz de Consola. .................................................................................................. 103
Ilustración 4: Visualización de archivos. ......................................................................................... 104
Ilustración 5: Grupos SO Linux. ...................................................................................................... 105
Ilustración 6: Visualización Maquina Remotas. .............................................................................. 105
97
INTRODUCCION
“RemoteLinux” fue el nombre designado para el aplicativo final desarrollado, esto a juicio de sus creadores.
RemoteLinux es una aplicación compuesta de dos componentes (aplicación web y aplicación móvil) que provee herramientas para el seguimiento y control remoto de servidores con ambientes Linux. Incorpora una serie de funcionalidades que tienen por objeto brindar una alternativa intuitiva y fácil de usar para la ejecución de operaciones de forma remota y sin pérdida de información.
A través de un conjunto de grupos de SO Linux y una definición de privilegios, el sistema provee un nivel de acceso a las funcionalidades de la aplicación a cada uno de los equipos vinculados a un usuario en particular. Dentro de RemoteLinux, los usuarios podrán visualizar cualquier tipo de cambio o actualización realizada a un archivo especifico por medio del componente de auditoria.
El presente manual pretende dar a lector una guía fácil para hacer un uso correcto de la aplicación y para describir el acceso a las herramientas o servicios que provee RemoteLinux como Aplicación de software. Con una serie de requerimientos, y siguiendo cada uno de los pasos de este documento, el lector podrá ejecutar satisfactoriamente las funcionalidades de la aplicación en general.
Este documento está diseñado para ser comprendido por usuarios sin experiencia previa en los sistemas y que deseen conocer el ámbito del sistema.
98
1. OBJETIVOS
1.1. OBJETIVO GENERAL
Proporcionar a los potenciales usuarios de la aplicación una guía rápida con la
información necesaria para hacer uso del aplicativo “RemoteLinux”, señalando
cada uno de los aspectos más importantes como menús y funcionalidades.
1.2. OBJETIVOS ESPECIFICOS
Presentar los distintos medios de acceso por los cuales la aplicación podrá ser
ejecutada.
Guiar al usuario a través de las funcionalidades de los diferentes módulos del
sistema, mostrando con ilustraciones el proceso efectivo de ejecución de las
mismas.
Especificar que funciones se encuentran presentes en la aplicación móvil de
acuerdo a los requerimientos del sistema.
100
2. REQUERIMIENTOS
2.1. REQUERIMIENTOS DE LA APLICACIÓN MOVIL
Para hacer uso de la aplicación móvil RemoteLinux, se deberá contar con los siguientes aspectos:
Una conexión a internet alcanzable desde el dispositivo Android a través de Wireless o red de datos.
Sistema operativo Android con versión 4.0 o superiores y con los servicios de Google Play configurados (Generalmente ya vienen instalados por defecto).
Nota: Si desea consultar como obtener o instalar la aplicación móvil, por favor dirigirse al anexo “manual del programador”
101
3. FUNCIONALIDADES
Las funcionalidades de los módulos de la aplicación varían de acuerdo a los menús dentro del aplicativo. La mayoría de las funcionalidades en la aplicación móvil no se encuentran presentes en la aplicación Web esto teniendo en cuenta los requerimientos inicialmente planteados en los cuales de solicita únicamente la visualización de auditoria.
Teniendo en cuenta que el usuario final es el único actor en el sistema, a continuación se detallan, las funcionalidades generales de la aplicación por cada menú implementado.
3.1. FUNCIONALIDADES DE LA APLICACIÓN MÓVIL
3.1.1. Pantalla Login (inicio de sesión)
La pantalla de inicio de sesión está compuesta por un conjunto de elementos que hacen posible el ingreso del sistema a través de una serie de credenciales de acceso. Esta es la visualización inicial:
102
Una vez ingresado unas credenciales válidas para el sistema, la aplicación mostrara la siguiente pantalla:
Ilustración 1: Pantalla de inicio de sesión de la aplicación móvil
Ilustración 2: Pantalla de inicio de la aplicación Android.
103
3.1.2. Menú de Consola
Desde este menú es posible tipear y ejecutar cualquier tipo de comando para trabajar en la Shell de Linux, como si se estuviese directamente en el servidor accedido. Para desplegarla tendremos que hacer click sobre el símbolo o logo de la Ventana Negra.
Ilustración 3: Interfaz de Consola.
104
Menú de Archivos: Desde este menú es posible visualizar cualquier tipo de archivo ubicado dentro de la maquina a la cual se tiene control. Desde aquí mismo, también es posible actualizar, modificar y eliminar dichos archivos, esto sin importar el tipo de extensión que posean. Para desplegar este funcionalidad tendremos que hacer click sobre el símbolo o logo de los Cajones para archivos.
3.1.3. Menú Grupos
Desde este menú es posible visualizar y crear grupos para SO Linux, desde los cuales se relacionaran las diferentes maquinas o servidores a los que se requiera control por acceso remoto.
Ilustración 4: Visualización de archivos.
105
3.1.4. Menú Usuarios
Desde este menú es posible visualizar, agregar, editar y eliminar usuarios al sistema. Para desplegar esta funcionalidad es necesario que hacer click sobre el símbolo de usuario.
Ilustración 5: Grupos SO Linux.
Ilustración 6: Visualización Maquina Remotas.
106
4. CONCLUSIONES
El aplicativo “RemoteLinux” está compuesto en gran medida por una serie de componentes internos que ayudados de una interfaz sencilla, brindan al usuario la posibilidad de acceder a cada una de las funcionalidades de manera intuitiva.
A través de una serie de funcionalidades, cada usuario podrá hacer uso y control remoto de cualquier maquina o servidor vinculado al sistema, de la misma forma como si se estuviera accediendo de manera presencial en el sistema.
En resumen, es posible afirmar que desde las entradas de información, el usuario fina podrá gozar de una experiencia agradable haciendo uso del desarrollo final.
108
APLICACIÓN MÓVIL PARA LA GESTIÓN DE USUARIOS, CONTROL DE
ARCHIVOS Y FLUJOS DE OPERACIONES A TRAVÉS DE UNA TERMINAL
PORTÁTIL EN AMBIENTES LINUX CON HERRAMIENTAS DE GESTIÓN DE
AUDITORÍA Y SEGURIDAD CRIPTOGRÁFICA
BRANDON ALEXIS CASTILLO PINZÓN
CRISTHIAN CAMILO CANGREJO SÁENZ
MANUAL DEL PROGRAMADOR
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
INGENIERÍA EN TELEMÁTICA
FACULTAD TECNOLÓGICA
BOGOTÁ D.C.
AÑO 2017
109
CONTENIDO
INTRODUCCIÓN .............................................................................................................................. 111
1. OBJETIVOS ......................................................................................................................... 112
1.1. OBJETIVO GENERAL ............................................................................................... 112
1.2. OBJETIVOS ESPECIFICOS ..................................................................................... 112
2. REQUERIMIENTOS MINIMOS DE SISTEMA ................................................................ 113
3. PREPARACION DEL ENTORNO .................................................................................... 114
3.1. INSTALACION DEL JDK (JAVA DEVELOPMENT KIT) ...................................... 114
3.2. CONFIGURACIÓN DE LA BASE DE DATOS ....................................................... 118
3.3. INSTALACION DE SERVIDOR TOMCAT .............................................................. 121
4. DESPLIEGUE DE LA APLICACIÓN ............................................................................... 126
5. ESTRUCTURA DE LOS DIRECTORIOS ........................................................................ 128
6. CODIGO FUENTE .............................................................................................................. 130
7. CONCLUSIONES................................................................................................................ 131
110
TABLA DE FIGURAS
Imagen 1: Conexión a máquina vía SSH .......................................................................................... 114
Imagen 2: Configuración del repositorio java ................................................................................. 115
Imagen 3: Actualización del sistema a nivel de repositorios y librerías ........................................... 116
Imagen 4: Instalación de JDK versión 8 (Parte I) ............................................................................. 116
Imagen 5: Instalación de JDK versión 8 (Parte II) ............................................................................ 117
Imagen 6: Agregando variable de entorno JAVA_HOME ................................................................ 117
Imagen 7: Cargando de nuevo las variables de entorno ................................................................. 118
Imagen 8: Programa PgAdmin......................................................................................................... 119
Imagen 9: Configuración del servidor de base de datos.................................................................. 119
Imagen 10: Creando una nueva base de datos ............................................................................... 120
Imagen 11: Ejecutando script de instalación ................................................................................... 120
Imagen 12: Creando grupo tomcat para el servidor ....................................................................... 121
Imagen 13: Creando usuario tomcat ............................................................................................... 122
Imagen 14. Creando directorio para la instalación ......................................................................... 123
Imagen 15: Transfiriendo el archivo instalador del servidor ........................................................... 124
Imagen 16: Descomprimiendo el archivo instalador ....................................................................... 124
Imagen 17: Actualizando permisos a los directorios ....................................................................... 125
Imagen 18: Dando permisos a archivos sh del servidor .................................................................. 125
Imagen 19: Iniciando servidor por primera vez ............................................................................... 126
Imagen 20: Pasando archivo de instalación de aplicación .............................................................. 127
Imagen 21: Estructura de directorios de la aplicación web ............................................................. 129
111
INTRODUCCIÓN
El propósito del presente manual es dar a conocer al lector la descripción del
despliegue e instalación del desarrollo del sistema final que fue realizado como
proyecto de grado, así como también las herramientas necesarias para su uso,
modificación y control de los diferentes componentes.
En primera instancia, se detallan los requerimientos mínimos de plataforma y
editores de código necesarios para observar la estructura del sistema. Acto
seguido, se describen los paquetes de la aplicación y el proceso de despliegue del
sistema en un ambiente real.
Este documento es un manual de instalación básica del sistema, por lo que
aspectos relacionados con apertura de puertos, gestión de permisos, instalación y
otros se encuentran fuera del alcance de este documento.
112
1. OBJETIVOS
1.1. OBJETIVO GENERAL
Describir el proceso de instalación y despliegue del sistema final como también la
estructura de los componentes, detallando cada una de las plataformas y
herramientas necesarias para la implementación adecuada de la funcionalidad de
la aplicación.
1.2. OBJETIVOS ESPECIFICOS
Especificar los requerimientos mínimos de hardware y software para el correcto
funcionamiento del sistema.
Explicar el proceso de preparación de entorno, necesario para el ambiente de
trabajo de la aplicación.
Demostrar bajo una serie de pasos, los procedimientos y técnicas
indispensables para el despliegue de los componentes del sistema.
Señalar y puntualizar sobre la estructura (paquetes) sobre los cuales se
encuentran las diferentes utilidades y funciones relacionadas con el código
fuente.
113
2. REQUERIMIENTOS MINIMOS DE SISTEMA
El despliegue y ejecución del sistema requieren el uso de un procesador bien sea
de 32 bits o 64 bits de última generación y como mínimo 500 MB de espacio de
disco duro para la instalación de las herramientas necesarias. La cantidad de
memoria RAM debe ser igual o superior a 2 GB como requerimiento del servidor
de aplicaciones y de las utilidades de desarrollo. El equipo o servidor donde vaya
a ser instalado el sistema deberá tener abierta y aceptar conexiones a través de
los puertos 22 (SSH) y 8080 (TCP/HTTP)
El sistema puede ser desplegado en cada uno de los diferentes sistemas
operativos que soporten el servidor Tomcat. Para este documento, sólo ser hará
en una plataforma Linux Ubuntu Server debido a que en este tipo de ambientes es
donde comúnmente se despliegan las aplicaciones en entornos empresariales.
Por otra parte, para hacer uso del sistema se requiere una base de datos
PostgreSQL instalada y configurada que tenga acceso desde la instancia donde
se vaya a encontrar el sistema.
Los equipos móviles donde vaya ser instalada la aplicación requieren Android
mayor a la versión 4.0, permisos de escritura, conexión a Internet y espacio para
la ejecución de la misma.
114
3. PREPARACION DEL ENTORNO
3.1. INSTALACION DEL JDK (JAVA DEVELOPMENT KIT)
Conectarse a la máquina vía ssh. Para esto se puede utilizar Putty o cualquier
programa que permita realizar conexiones por este medio.
Imagen 39: Conexión a máquina vía SSH
Para realizar esta conexión se deben tener los datos de la máquina y permita
conexiones a través de este puerto.
115
Se ejecutan el siguiente listado de comandos:
sudo add-apt-repository ppa:webupd8team/java
Imagen 40: Configuración del repositorio java
sudo apt-get update
116
Imagen 41: Actualización del sistema a nivel de repositorios y librerías
sudo apt-get install oracle-java8-installer (aceptar todos los pasos)
Imagen 42: Instalación de JDK versión 8 (Parte I)
117
sudo apt-get install oracle-java8-set-default
Imagen 43: Instalación de JDK versión 8 (Parte II)
Configurar la variable de entorno JAVA_HOME
Para esto ejecutar el comando sudo nano /etc/enviroment y agregar la línea
JAVA_HOME="/usr/lib/jvm/java-8-oracle”
Imagen 44: Agregando variable de entorno JAVA_HOME
118
Y volver a cargar las variables de entorno de nuevo con:
o source /etc/environment
Imagen 45: Cargando de nuevo las variables de entorno
3.2. CONFIGURACIÓN DE LA BASE DE DATOS
Para la instalación del sistema gestor de base de datos PostgreSQL, se debe
realizar la instalación sobre la misma máquina o sobre otro servidor (normalmente
deberían estar separados) en el sistema operativo que se desee tener. En el
siguiente link se encuentra una guía detallada para varios SO con su respectiva
configuración:
https://wiki.postgresql.org/wiki/Detailed_installation_guides
Una vez se tenga instalado el servidor de base de datos se debe ejecutar el script
de instalación de la aplicación bien sea por terminal de comandos o alguna
herramienta utilitaria. Para este caso, lo realizaremos por el software PgAdmin.
119
Para esto abrimos el programa:
Imagen 46: Programa PgAdmin
Luego de esto, configuramos la conexión con el servidor de base de datos
Imagen 47: Configuración del servidor de base de datos
120
Después de este paso, se procede a crear una base de datos
Imagen 48: Creando una nueva base de datos
Luego se procede a ejecutar el script. Para esto, podemos abrir el archivo de
instalación adjunto y copiar su contenido, o abrirlo directamente desde el
programa:
Imagen 49: Ejecutando script de instalación
121
Imagen 50: Creando grupo tomcat para el servidor
3.3. INSTALACION DE SERVIDOR TOMCAT
En este punto se muestra la instalación y configuración del servidor tomcat para
realizar posteriormente el despliegue de la aplicación. En este caso se utiliza una
versión 8, sin embargo estos pasos pueden aplicar para la instalación de otras
versiones con algunas modificaciones en cada caso.
En primer lugar, lo que se hace es crear un grupo llamado tomcat con el comando:
sudo groupadd tomcat
122
Añadir un usuario llamado tomcat al grupo anterior con el comando:
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Imagen 51: Creando usuario tomcat
Crear un directorio en la carpeta deseada para la instalación de tomcat. En
nuestro caso, en la siguiente ruta:
sudo mkdir /opt/tomcat
123
Imagen 52. Creando directorio para la instalación
Descargar el archivo de instalación de tomcat de internet o usar el adjunto. Para
esto se puede pasar el archivo a través de una conexión FTP con WinSCP o
filezilla como se muestra a continuación:
124
Imagen 53: Transfiriendo el archivo instalador del servidor
Descomprimir el archivo con
sudo tar xzvf apache-tomcat-8.0.46.tar.gz -C /opt/tomcat --strip-
components=1
Imagen 54: Descomprimiendo el archivo instalador
Finalmente se actualizan los permisos con los comandos:
o cd /opt/tomcat
o sudo chgrp -R tomcat /opt/tomcat
125
Imagen 55: Actualizando permisos a los directorios
Dar permisos a los archivos .sh con
sudo sh chmod 777 *.sh
Imagen 56: Dando permisos a archivos sh del servidor
126
Iniciar el servidor ubicándose en la carpeta bin con sudo sh startup.sh
Imagen 57: Iniciando servidor por primera vez
4. DESPLIEGUE DE LA APLICACIÓN
Para realizar el despliegue se debe pasar el archivo .war adjunto a la al directorio
de tomcat webapps
127
Imagen 58: Pasando archivo de instalación de aplicación
Con esto se desplegará la aplicación por el puerto configurado para tomcat. Luego
de esto, se debe instalar el archivo .apk de la aplicación móvil. Este archivo puede
ser pasado vía USB al dispositivo móvil y ser instalado desde allí
128
5. ESTRUCTURA DE LOS DIRECTORIOS
El sistema en general se compone de dos subsistemas que son: aplicación web y
aplicación móvil.
129
Tenemos la siguiente estructura:
Imagen 59: Estructura de directorios de la aplicación web
Encontramos elementos importanes como son:
dao: en este paquete se encuentran las interfaces utilitarias relacionadas
con operaciones de bases de datos
dao.impl: aquí se encuentran las implementaciones de las interfaces
anteriores
entities: posee el modelo lógico a nivel de entidades
exception: se encuetran las clases que mapen los erroes a excepciones
dentro de tiempo de ejecución
service: aquí se encuentra un facade que agrupa las interfaces para reducir
la complejidad
file: acá se encuentran las clases relacionadas a la funcionalidad de
archivos
shell: se ecuentran las clases relacionadas con la funcionalidad de
ejecución de comandos
user: se encuentran las clases y utilidades que se relacionan con la gestión
de grupos y usuarios
resource: acá se encuentran los servicios REST.
130
6. CODIGO FUENTE
El código fuente de la aplicación se encuentra como “Anexo: Código fuente”. En
este documento pudimos observar algunos de los directorios y organización del
mismo.
Bajo este anexo se encuentra el script de la base de datos, los proyectos
pertenecientes a la aplicación y otros instaladores mencionados en este
documento.
131
7. CONCLUSIONES
La estructuración de un sistema puede variar por la estructura de sus elementos
de software (componentes) y por la utilización de recursos dependientes al
contexto de cualquier entorno de ejecución. De la complejidad del sistema, se
determinará el número de herramientas a utilizar y el tamaño de la aplicación.
En este documento se observó el despliegue e instalación para el aplicativo final
del proyecto en cuestión. Es importante señalar que tanto el sistema de
información web como la aplicación móvil son componentes independientes que
se ejecutan en contextos diferentes, no obstante ambos se comunican e
interconectar bajo un mismo dominio, en este caso únicamente para plataformas
tipo Linux. Con esta última afirmación, se deja abierta la pauta para nuevos
desarrollos e integración de aplicaciones que se puedan ejecutar sobre distintas
plataformas o entornos, sólo con el hecho de poseer un mecanismo factible de
comunicación.