APLICACIÓN MÓVIL PARA LA GESTIÓN DE USUARIOS,...

133
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

Transcript of APLICACIÓN MÓVIL PARA LA GESTIÓN DE USUARIOS,...

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.

55

Imagen 8: Casos de uso generales del proyecto

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.

62

Imagen 14: Modelo entidad-relación

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.

64

Imagen 15: Modelo lógico del sistema

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

93

ANEXO A MANUAL DEL USUARIO

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.

99

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.

107

ANEXO B MANUAL DEL PROGRAMADOR

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.

132

ANEXO C ARCHIVOS DE PRUEBAS POSTMAN

133

Los siguientes archivos también podra encontrarlos en la carpeta “ANEXO C_ Archivos postman” del proyecto.

Project University - Console.postman_collection.json

Project university - File.postman_collection.json

Project University - Users and Groups.postman_collection.json