Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES
ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA
“FRAMEWORK DE TRABAJO PARA PROYECTOS DE
TITULACIÓN APLICANDO METODOLOGÍA SCRUM EN LA
INGENIERÍA DE SOFTWARE”. ENFOCADO A LA
ARQUITECTURA DE CAPA DE NEGOCIO DESARROLLANDO SERVICIOS WEB DESTINADOS A PROCESAR
REQUERIMIENTOS DE DISPOSITIVOS
MÓVILES Y PROPORCIONANDO
UNA APLICACIÓN DE
MONITOREO DE
BITÁCORAS
PROYECTO DE TITULACIÓN
Previa a la obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
AUTOR: HÉCTOR ANDRÉS ORTEGA GONZÁLEZ
TUTOR: LSI. OSCAR APOLINARIO.
GUAYAQUIL – ECUADOR
2015
REPOSITORIO NACIONAL EN CIENCIAS Y TECNOLOGÍA
FICHA DE REGISTRO DE TESIS
TÍTULO ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE TRABAJO PARA PROYECTOS DE TITULACIÓN APLICANDO METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE”. ENFOCADO A LA ARQUITECTURA DE CAPA DE NEGOCIO DESARROLLANDO SERVICIOS WEB DESTINADOS A PROCESAR REQUERIMIENTOS DE DISPOSITIVOS MÓVILES Y
PROPORCIONANDO UNA APLICACIÓN DE MONITOREO DE BITÁCORAS
REVISORES:
INSTITUCIÓN: Universidad De
Guayaquil
FACULTAD: Ciencias Matemáticas y
Físicas
CARRERA: Ingeniería En Sistemas Computacionales
FECHA DE PUBLICACIÓN:
Noviembre del 2015
N° DE PÁGS.: 125
ÁREA TEMÁTICA: Metodologías, calidad y gestión de proyectos de software
PALABRAS CLAVES: SCRUM, Servicio Web, Dispositivos Móviles, Monitoreo,
Bitácoras
RESUMEN:
El objetivo de este trabajo de titulación es desarrollar servicios web y desplegar un componente de monitoreo de sus bitácoras, para verificar si estos servicios permiten la comunicación entre capa visual y capa de datos convirtiéndose en la capa media que está
definida en la arquitectura del proyecto ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE TRABAJO PARA PROYECTOS DE TITULACIÓN APLICANDO METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE”. Las actividades del proyecto se organizan utilizando la metodología Ágil denominada SCRUM. Los servicios son desarrollados utilizando lenguaje java estándar y empresarial que provee soporte para arquitectura REST y formato JSON, para el componente de monitoreo se emplea programas de código abierto conocidos como la pila ELK (ElasticSearch, Kibana, Logstash).
N° DE REGISTRO(en base de datos): N° DE CLASIFICACIÓN:
Nº
DIRECCIÓN URL (tesis en la web):
ADJUNTO PDF x SI NO
CONTACTO CON AUTOR:
HÉCTOR ANDRÉS ORTEGA GONZÁLEZ
Teléfono:
0991234091
E-mail:
CONTACTO DE LA INSTITUCIÓN Nombre: Lsi. Oscar Apolinario
Teléfono: 042307729
I
APROBACIÓN DEL TUTOR
En mi calidad de Tutor del trabajo de titulación, ESTUDIO DE FACTIBILIDAD
PARA LA PROPUESTA “FRAMEWORK DE TRABAJO PARA PROYECTOS DE
TITULACIÓN APLICANDO METODOLOGÍA SCRUM EN LA INGENIERÍA DE
SOFTWARE”. ENFOCADO A LA ARQUITECTURA DE CAPA DE NEGOCIO
DESARROLLANDO SERVICIOS WEB DESTINADOS A PROCESAR
REQUERIMIENTOS DE DISPOSITIVOS MÓVILES Y PROPORCIONANDO UNA
APLICACIÓN DE MONITOREO DE BITÁCORAS elaborado por el Sr. HÉCTOR
ANDRÉS ORTEGA GONZÁLEZ, Alumno no titulado de la Carrera de Ingeniería
en Sistemas Computacionales, Facultad de Ciencias Matemáticas y Físicas de la
Universidad de Guayaquil, previo a la obtención del Título de Ingeniero en
Sistemas, me permito declarar que luego de haber orientado, estudiado y
revisado, la Apruebo en todas sus partes.
Atentamente
_______________________________
Lsi. Oscar Apolinario
II
DEDICATORIA
Dedico este trabajo a mi padre Héctor Ortega
Heredero, a quien considero mi mentor y
amigo, quien siempre me ha apoyado y
aconsejado en cada una de las etapas de mi
vida. A mi madre Judy González Rosero ya
que gracias a su forma de educarme siempre
he logrado superarme y actuar de manera
independiente. A mi abuelita Luz María
Heredero por confiar en mí y recordarme con
la frase querer es poder y con su experiencia
que se puede salir adelante, y solucionar
cualquier problema al que una persona se
enfrente.
III
AGRADECIMIENTO
Agradezco a cada uno de los profesores
de la Universidad ya que debido a sus
enseñanzas y anécdotas laborales he
logrado desempeñarme de una manera
correcta en el campo laboral. A mi tutor
Lsi. Oscar Apolinario por brindarme la
oportunidad de formar parte del equipo
de desarrollo del proyecto de titulación.
IV
TRIBUNAL PROYECTO DE TITULACIÓN
Ing. Eduardo Santos Baquerizo, M.Sc. DECANO DE LA FACULTAD CIENCIAS MATEMATICAS Y
FISICAS
Ing. Inelda Martillo Alcívar, Mgs DIRECTORA
CISC
Lsi. Oscar Omar Apolinario Arzube
DIRECTOR DEL PROYECTO DE TITULACIÓN
Ab. Berardo Rodriguez G. VOCAL PRINCIPAL
Ing. Nidia Medrano N.
VOCAL SUPLENTE
Ab. Juan Chávez A. SECRETARIO
V
DECLARACIÓN EXPRESA
“La responsabilidad del contenido de este Proyecto de Titulación, me corresponden exclusivamente; y el patrimonio intelectual de la misma a la UNIVERSIDAD DE GUAYAQUIL”
____________________________________
HÉCTOR ANDRÉS ORTEGA GONZÁLEZ
VI
.
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES
ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA
“FRAMEWORK DE TRABAJO PARA PROYECTOS DE
TITULACIÓN APLICANDO METODOLOGÍA SCRUM EN LA
INGENIERÍA DE SOFTWARE”. ENFOCADO A LA
ARQUITECTURA DE CAPA DE NEGOCIO DESARROLLANDO SERVICIOS WEB DESTINADOS A PROCESAR
REQUERIMIENTOS DE DISPOSITIVOS
MÓVILES Y PROPORCIONANDO
UNA APLICACIÓN DE
MONITOREO DE
BITÁCORAS
Proyecto de Titulación que se presenta como requisito para optar por el título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autor: Héctor Andrés Ortega González
C.I. 0927210310
Tutor: Lsi. Oscar Apolinario
Guayaquil, Noviembre del 2015
VII
CERTIFICADO DE ACEPTACIÓN DEL TUTOR
En mi calidad de Tutor del proyecto de titulación, nombrado por el Consejo Directivo de la Facultad de Ciencias Matemáticas y Físicas de la Universidad de Guayaquil.
CERTIFICO:
Que he analizado el Proyecto de Titulación presentado por el/la
estudiante HÉCTOR ANDRÉS ORTEGA GONZÁLEZ, como requisito previo para optar por el título de Ingeniero en Sistemas Computacionales cuyo tema es: ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE TRABAJO PARA PROYECTOS DE TITULACIÓN APLICANDO METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE”. ENFOCADO A LA ARQUITECTURA DE CAPA DE NEGOCIO DESARROLLANDO SERVICIOS WEB DESTINADOS A PROCESAR REQUERIMIENTOS DE DISPOSITIVOS MÓVILES Y PROPORCIONANDO UNA APLICACIÓN DE MONITOREO DE BITÁCORAS
Considero aprobado el trabajo en su totalidad.
Presentado por:
Héctor Andrés Ortega González C.I. 0927210310
Tutor: Lsi. Oscar Apolinario
Guayaquil, Noviembre del 2015
VIII
UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES
Autorización para Publicación de Proyecto de Titulación en Formato Digital 1. Identificación del Proyecto de Titulación
Nombre Alumno: Héctor Andrés Ortega González
Dirección: La 44 y la M
Teléfono: 0991234091 E-mail: [email protected]
Facultad: Ciencias Matemáticas y Físicas
Carrera: Ingeniería en Sistemas Computacionales
Proyecto de titulación al que opta: Ingeniero en Sistemas Computacionales
Profesor tutor: Lsi. Oscar Apolinario
Título del Proyecto de titulación: ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE
TRABAJO PARA PROYECTOS DE TITULACIÓN APLICANDO METODOLOGÍA
SCRUM EN LA INGENIERÍA DE SOFTWARE”. ENFOCADO A LA
ARQUITECTURA DE CAPA DE NEGOCIO DESARROLLANDO SERVICIOS
WEB DESTINADOS A PROCESAR REQUERIMIENTOS DE DISPOSITIVOS
MÓVILES Y PROPORCIONANDO UNA APLICACIÓN DE MONITOREO DE
BITÁCORAS
Tema del Proyecto de Titulación: SCRUM, Servicio Web, Dispositivos
Móviles, Monitoreo, Bitácoras
2. Autorización de Publicación de Versión Electrónica del Proyecto de Titulación A través de este medio autorizo a la Biblioteca de la Universidad de Guayaquil y a la Facultad de Ciencias Matemáticas y Físicas a publicar la versión electrónica de este Proyecto de titulación. Publicación electrónica:
Inmediata Después de 1 año
Firma Alumno: 3. Forma de envío: El texto del proyecto de titulación debe ser enviado en formato Word, como archivo .Doc. O .RTF y .Puf para PC. Las imágenes que la acompañen pueden ser: .gif, .jpg o .TIFF.
DVDROM CDROM x
IX
ÍNDICE GENERAL
APROBACIÓN DEL TUTOR ................................................................................. I
DEDICATORIA ..................................................................................................... II
AGRADECIMIENTO............................................................................................ III
TRIBUNAL PROYECTO DE TITULACIÓN ...................................................... IV
DECLARACIÓN EXPRESA ................................................................................. V
CERTIFICADO DE ACEPTACIÓN DEL TUTOR.............................................VII
ÍNDICE GENERAL...............................................................................................IX
ABREVIATURAS ............................................................................................... XII
ÍNDICE DE CUADROS ..................................................................................... XIII
ÍNDICE DE GRÁFICOS .................................................................................... XIV
RESUMEN.......................................................................................................... XVI
ABSTRACT ....................................................................................................... XVII
INTRODUCCIÓN ...................................................................................................1
CAPÍTULO I............................................................................................................3
EL PROBLEMA ..................................................................................................3
PLANTEAMIENTO DEL PROBLEMA ........................................................3
Ubicación del Problema en un Contexto ..........................................................3
Situación Conflicto Nudos Críticos .................................................................4
Causas y Consecuencias del Problema.............................................................4
Delimitación del Problema ...............................................................................6
Formulación del Problema ...............................................................................6
Evaluación del Problema..................................................................................7
OBJETIVOS ....................................................................................................8
OBJETIVO GENERAL ...................................................................................8
OBJETIVOS ESPECÍFICOS ...........................................................................8
ALCANCES DEL PROBLEMA .....................................................................9
JUSTIFICACIÓN E IMPORTANCIA .........................................................13
METODOLOGÍA DEL PROYECTO ...........................................................14
CAPÍTULO II ........................................................................................................15
MARCO TEÓRICO ...........................................................................................15
ANTECEDENTES DEL ESTUDIO ..............................................................15
X
FUNDAMENTACIÓN TEÓRICA ................................................................15
FUNDAMENTACIÓN LEGAL ....................................................................32
PREGUNTA CIENTÍFICA A CONTESTARSE ..........................................39
DEFINICIONES CONCEPTUALES ............................................................39
CAPÍTULO III .......................................................................................................43
PROPUESTA TECNOLÓGICA .......................................................................43
Análisis de Factibilidad ......................................................................................43
Factibilidad Operacional ................................................................................43
Factibilidad Técnica .......................................................................................44
Factibilidad Legal...........................................................................................44
Factibilidad Económica ..................................................................................44
Etapas de la metodología del proyecto...............................................................44
CRITERIOS DE VALIDACIÓN DE LA PROPUESTA ..................................53
Juicio de Expertos ..........................................................................................53
Informe de Pruebas del SEC con REST y JSON ...........................................54
Informe de Pruebas del SEP con REST y JSON............................................60
Encuestas ........................................................................................................69
CAPÍTULO IV .......................................................................................................76
Criterios de aceptación del producto o servicio .................................................76
Ambiente de Ejecución de las pruebas...........................................................78
Criterios de rendimiento del SEC ..................................................................78
Criterios de calidad de código del SEC.........................................................80
Criterios de rendimiento del SEP ...................................................................81
Criterios de calidad de código del SEP .........................................................82
Conclusiones y Recomendaciones .....................................................................83
Conclusiones ..................................................................................................83
Recomendaciones ...........................................................................................84
Bibliografía ............................................................................................................86
ANEXOS................................................................................................................87
Captura de pantalla del Cronograma del proyecto .............................................87
Encuesta Realizada.............................................................................................88
Sección del manual de usuario del SEC .............................................................90
Pasos para realizar el consumo del SEC con REST/JSON ............................90
Sección del manual de usuario del SEP .............................................................94
XI
Pasos para realizar el consumo del SEP con REST/JSON.............................94
Sección del manual de usuario del Componente de Monitoreo .........................98
Logstash .........................................................................................................98
Elasticsearch .................................................................................................106
Kibana ..........................................................................................................109
XII
ABREVIATURAS
ELK ElasticSearch, Logstash, Kibana SEC Servicio de Ejecución de Consultas SEP Servicio de Ejecución del Procedimientos HTTP HyperText Transfer Protocol HTTPS HyperText Transfer Protocol Secure SSL Secure Socket Layer JSON Java Script Object Notation W3C World Wide Web Consortium REST Representational State Transfer
JPA Java Persistence Api JDBC Java Database Connectivity URL Uniform Resource Locator API Application Programming Interface TIOBE The Importance Of Being Earnest
XIII
ÍNDICE DE CUADROS
Cuadro 1 Causas y Consecuencias del problema .....................................................4
Cuadro 2 Delimitación del Problema .......................................................................6
Cuadro 3 Elementos principales de una solucitud HTTP ......................................18
Cuadro 4 Elementos principales de una respuesta HTTP ......................................19
Cuadro 5 Definición de sprint y entregables ..........................................................45
Cuadro 6 Datos de prueba del SEC ........................................................................54
Cuadro 7 Casos de prueba del SEC........................................................................58
Cuadro 8 Datos de pruebas del SEP .......................................................................60
Cuadro 9 Casos de prueba del SEP ........................................................................66
Cuadro 10 Nivel de cumplimiento de sprints .........................................................76
Cuadro 11 Firmas de aceptación de los sprints ......................................................77
Cuadro 12 Versiones de programas para realizar pruebas a los servicios .............78
Cuadro 13 Características de la máquina virtual....................................................78
Cuadro 14 Criterios de rendimiento del SEC .........................................................79
Cuadro 15 Evindecias del SEC generadas por sonarqube......................................80
Cuadro 16 Criterios de rendimientos SEP .............................................................81
Cuadro 17 Evindecias del SEP generadas por sonarqube ......................................82
XIV
ÍNDICE DE GRÁFICOS
Gráfico 1 Arquitectura General del proyecto .........................................................10
Gráfico 2 Arquitectura capa de negocio.................................................................11
Gráfico 3 Arquitectura de Componentes de la solución ........................................12
Gráfico 4 Funcionamiento de los Servicios Web ...................................................15
Gráfico 5 Indice de Popularidad TIOBE ................................................................16
Gráfico 6 Aplicaciones Multicapas con Java Enterprise Edition ...........................17
Gráfico 7 Interacción de una solicitud y respuesta HTTP .....................................18
Gráfico 8 Ejemplo del formato JSON ....................................................................20
Gráfico 9 Ejemplos de mensajes en un archivo log ...............................................20
Gráfico 10 Interacción entre logstash, elasticsearch y kibana ...............................21
Gráfico 11 Patrón Modelo Vista Controlador con tecnología java ........................22
Gráfico 12 Arquitectura Básica de Jboss AS .........................................................23
Gráfico 13 Tendencias de Busqueda de servidores de aplicaciones ......................24
Gráfico 14 Ejemplo de un servidor MySQL ..........................................................25
Gráfico 15 Tecnologías de Java soportadas por Netbeans .....................................26
Gráfico 16 Resumen del desarrollo ágil .................................................................27
Gráfico 17 Roles del equipo SCRUM ....................................................................28
Gráfico 18 Ejemplo de un tablero en trello ............................................................29
Gráfico 19 Diagrama de modelo servicio REST en soapui ...................................30
Gráfico 20 Ejes de calidad del código que analiza sonar .......................................31
Gráfico 21 Elementos de un test en Jmeter ............................................................31
Gráfico 22 Ejemplo de mapeo en elasticsearch .....................................................41
Gráfico 23 Tipos de datos principales en elasticsearch..........................................41
Gráfico 24 Comparación de conceptos de elasticsearch con bases de datos
tradicionales ...........................................................................................................42
Gráfico 25 Grupo de arquitectura y su respectivo tablero en trello .......................48
Gráfico 26 Miembros del grupo de arquitectura en trello ......................................49
Gráfico 27 Actividades del sprint 1 en el tablero trello .........................................49
Gráfico 28 Actividades del sprint 2 en trello .........................................................50
Gráfico 29 Actividades del sprint 3 en trello .........................................................50
Gráfico 30 Actividades del sprint 4 en trello .........................................................51
Gráfico 31 Actividades del sprint 5 en trello .........................................................51
Gráfico 32 Actividades del sprint 6 en trello .........................................................52
Gráfico 33 Resultados de la pregunta 1 .................................................................69
Gráfico 34 Resultados de la pregunta 2 .................................................................70
Gráfico 35 Resultados de la pregunta 3 .................................................................71
Gráfico 36 Resultados de la pregunta 4 .................................................................72
Gráfico 37 Resultados de la pregunta 5 .................................................................73
Gráfico 38 Resultados de la pregunta 6 .................................................................74
Gráfico 39 Resultados de la pregunta 7 .................................................................75
Gráfico 40 Resultados del rendimiento del SEC en jmeter ....................................79
XV
Gráfico 41 Evidencias en el SEC generadas luego del análisis del sonarqube .....80
Gráfico 42 Resultados del rendimiento de SEP en jmeter ....................................82
Gráfico 43 Evidencias en el SEP generadas luego del análisis del sonarqube .....83
XVI
UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS
CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES
ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE TRABAJO PARA PROYECTOS DE TITULACIÓN APLICANDO METODOLOGÍA
SCRUM EN LA INGENIERÍA DE SOFTWARE”. ENFOCADO A LA ARQUITECTURA DE CAPA DE NEGOCIO DESARROLLANDO SERVICIOS
WEB DESTINADOS A PROCESAR REQUERIMIENTOS DE DISPOSITIVOS
MÓVILES Y PROPORCIONANDO UNA APLICACIÓN DE MONITOREO
DE BITÁCORAS
Autor: Héctor Andrés Ortega González Tutor: Lsi. Oscar Apolinario
RESUMEN
El objetivo de este trabajo de titulación es desarrollar servicios web y desplegar
un componente de monitoreo de sus bitácoras, para verificar si estos servicios
permiten la comunicación entre capa visual y capa de datos convirtiéndose en la
capa media que está definida en la arquitectura del proyecto ESTUDIO DE
FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE TRABAJO PARA
PROYECTOS DE TITULACIÓN APLICANDO METODOLOGÍA SCRUM EN LA
INGENIERÍA DE SOFTWARE”. Las actividades del proyecto se organizan
utilizando la metodología Ágil denominada SCRUM. Los servicios son
desarrollados utilizando lenguaje java estándar y empresarial que provee soporte
para arquitectura REST y formato JSON, para el componente de monitoreo se
emplea programas de código abierto conocidos como la pila ELK (ElasticSearch,
Kibana, Logstash).
XVII
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS
CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES
STUDY FEASIBILITY FOR PROPOSAL "FRAMEWORK OF WORK FOR
TITLING PROJECTS APPLYING THE METHODOLOGY SCRUM IN
THE SOFTWARE ENGINEER”. FOCUSED ON BUSINESS
LAYER ARCHITECTURE DEVELOPING WEB SERVICES
INTENDED FOR PROCESSING MOBILE DEVICE
REQUERIMENTS AND PROVIDING A
MONITORING APPLICATION
OF LOGS
Autor: Héctor Andrés Ortega González Tutor: Lsi. Oscar Apolinario
ABSTRACT
The objective of this titling work is to develop web services and deploy a monitoring
component of their logs, to verify if these services allow communication between
visual layer and data layer becoming in the middle layer that is defined in the
project architecture STUDY FEASIBILITY FOR PROPOSAL "FRAMEWORK OF
WORK FOR GRADUATION PROJECTS APPLYING THE METHODOLOGY
SCRUM IN THE SOFTWARE ENGINEER”. Project activities are organized using
the Agile methodology called Scrum. Services are developed using Java standard
and Enterprise edition that provides support for REST architecture and JSON
format, to deploy the monitoring component are used open source programs
known as the ELK stack (Elasticsearch, Kibana, Logstash).
1
INTRODUCCIÓN
Actualmente el desarrollo tecnológico le permite a las instituciones automatizar
sus procesos mediante el uso de programas informáticos los cuales son
publicados en internet y pueden ser accedidos desde cualquier parte del mundo.
“La mayoría de las aplicaciones web son construidas en una arquitectura de tres
capas que consiste en tres importantes capas: datos, lógica y presentación. En
una aplicación web la estructura usualmente se divide en una base de datos, un
servidor y un cliente mientras que desarrollos modernos también pueden ser
divididos en una base de datos, lógica en el servidor, lógica en el cliente, y la
interfaz de usuario del cliente.
Un paradigma popular de implementación de este modelo es el patrón de
arquitectura MVC. En el paradigma MVC la lógica, los datos y la visualización son
separadas en tres tipos de objetos cada uno manejando sus propias tareas. La
Vista maneja la parte visual haciéndose cargo de la interacción del usuario. El
controlador responde al sistema y los eventos del usuario, comandando el modelo
y la vista para que cambien de manera apropiada. El modelo maneja la
manipulación de los datos, respondiendo a la petición de información o cambiando
su estado de acuerdo a las instrucciones del controlador.” (Haviv, 2014)
Sin duda alguna el desarrollo sistemas informáticos con la arquitectura de tres
capas se ha convertido en un patrón que genera buenos resultados, es por esto
que un sistema no posea una capa media que le permita una comunicación entre
la capa visual y la capa de datos, intercambiar información con otros sistemas, y
un componente que permita monitorear dicha capa puede acarrear varios
problemas como:
Implementar malas prácticas en los sitios web y realizar una comunicación
directa entre la capa visual y la capa de datos.
Que en una migración de tecnología del sitio que posea la empresa no se
puedan reutilizar componentes existentes y se tengan que crear desde
cero en otras palabras reinventar la rueda.
2
Que cuando una institución realice colaboraciones o fusiones con otras
instituciones y se intente llevar a cabo una integración entre sistemas los
tiempos de desarrollo aumenten.
Sin el componente de monitoreo no se tiene una visión clara del estado y
comportamiento de los servicios, no se conoce cuántas ocasiones la
aplicación ha tenido éxitos o errores a través del tiempo.
Debido a no poseer un repositorio centralizado para realizar el monitoreo
se puede perder información guardada en las bitácoras de archivos o
tablas debido a su rotación y depuración periódica.
Este trabajo se encuentra cuatro capítulos que se detallan a continuación:
En el primer capítulo se describe la problemática del proyecto ESTUDIO
DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE TRABAJO
PARA PROYECTOS DE TITULACIÓN APLICACANDO METODOLOGÍA
SCRUM EN LA INGENIERÍA DE SOFTWARE” de no tener una capa
media, sus casusas y consecuencias, se especifican los objetivos general
y específicos para el desarrollo de servicios web y despliegue de un
componente de monitoreo que forman parte de la capa media del
proyecto.
En el segundo capítulo se definen las herramientas y los conceptos de las
diferentes tecnologías que se utiliza para el desarrollo de los servicios y
del despliegue del componente de monitoreo.
En el tercer capítulo se realiza la propuesta tecnológica, el análisis de
factibilidad, se definen las etapas de la metodología y los criterios de
validación de la propuesta.
En el cuarto capítulo se detallan los criterios de aceptación del producto,
las conclusiones y las recomendaciones sobre este proyecto.
3
CAPÍTULO I
EL PROBLEMA
PLANTEAMIENTO DEL PROBLEMA
Ubicación del Problema en un Contexto
En la actualidad el avance tecnológico ha permitido automatizar los procesos de
una institución o empresa mediante el uso de aplicaciones web, una de las
características principales de estas aplicaciones es que están diseñadas sobre un
modelo de tres capas. El modelo de arquitectura de tres capas está compuesto
por las siguientes partes: Presentación, Lógica de Negocio y Datos.
La capa de presentación es la encargada de presentar la información al usuario
de una manera amigable.
La capa de negocio es aquella en la que se encuentran los componentes que
permiten recibir las peticiones de un cliente y enviar la respuesta tras ser
procesadas en una capa de datos.
La capa de datos tiene los procedimientos y tablas en donde se almacena la
información del sistema.
Con respecto a la gestión de actividades una de las metodologías que está
aplicando hoy en día para el desarrollo de software es SCRUM la cual nos ayuda
a priorizar las tareas que se deben realizar, con el objetivo de entregar un producto
que aporte valor al cliente en el menor tiempo posible.
Es evidente que el hecho de dividir una aplicación en tres capas y usar la
metodología denominada SCRUM para organizar las tareas del desarrollo de
dicha aplicación es una buena práctica, es por esto que es indispensable que en
el proyecto ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA
“FRAMEWORK DE TRABAJO PARA PROYECTOS DE TITULACIÓN
APLICACANDO METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE”
en su arquitectura conste de una capa media, y de un componente que la
monitoree, con el objetivo de que esta capa media permita comunicar la capa
visual con la capa de datos.
4
Situación Conflicto Nudos Críticos El problema surge por la necesidad de tener una capa media que permita una fácil
integración y reutilización de servicios y un componente que permita monitorear
esta capa, en el proyecto ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA
“FRAMEWORK DE TRABAJO PARA PROYECTOS DE TITULACIÓN
APLICACANDO METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE”.
Causas y Consecuencias del Problema Entre las causas que pueden llevar a no tener una capa intermedia de
comunicación y un componente que la monitoree podemos encontrar las
siguientes:
Cuadro 1 Causas y Consecuencias del problema
Causas Consecuencias Inexperiencia por parte del arquitecto
del programa debido al
desconocimiento de las nuevas
tecnologías de servicios web y sus
beneficios.
Dificultades y aumentos en los tiempos
de integración con otros sistemas
internos o de otras instituciones.
Poseer un sistema legado con
tecnología antigua como capa media
para intercambio de información
Tener problemas de rendimiento y un
alto acoplamiento entre las capas de
los sistemas de la institución.
No poder intercambiar información con
sistemas que se encuentren
desarrollados en lenguajes distintos.
Falta de capacitaciones sobre buenas
prácticas y tendencias tecnológicas al
área de sistemas o a la persona que
Desarrollar sistemas que no sean ni fáciles de mantener ni reutilizables.
5
lidera el desarrollo o migración de un
sistema en una institución.
Que el arquitecto de la solución o el
área de sistemas de una institución
considere que para conocer el estado
de sus servicios sea suficiente con
revisar las bitácoras a través del uso
de comandos.
No conocer el estado de los servicios.
Perder tiempo reuniendo información
de los distintos servidores donde estén
desplegados los servicios.
No detectar a cuando un servicio está
fallando.
No conocer cuál de los servicios está
siendo más consumido.
No conocer cuáles son las horas
donde lo servicios atienden mayor
cantidad de peticiones.
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
6
Delimitación del Problema
Cuadro 2 Delimitación del Problema
Campo Servicios Web y Bases de Datos
Áreas Metodologías, calidad y gestión de proyectos de
software
Aspecto Capa de Arquitectura de Negocio y Monitoreo
Tema ESTUDIO DE FACTIBILIDAD PARA LA
PROPUESTA “FRAMEWORK DE TRABAJO
PARA PROYECTOS DE TITULACIÓN
APLICANDO METODOLOGÍA SCRUM EN LA
INGENIERÍA DE SOFTWARE”. ENFOCADO A LA
ARQUITECTURA DE CAPA DE NEGOCIO
DESARROLLANDO SERVICIOS WEB
DESTINADOS A PROCESAR
REQUERIMIENTOS DE DISPOSITIVOS
MÓVILES Y PROPORCIONANDO UNA
APLICACIÓN DE MONITOREO DE BITÁCORAS
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Formulación del Problema
¿Se cubrirá la necesidad de tener una capa media que permita intercambiar
información entre la capa visual y la capa de datos en el proyecto ESTUDIO DE
FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE TRABAJO PARA
PROYECTOS DE TITULACIÓN APLICACANDO METODOLOGÍA SCRUM EN LA
INGENIERÍA DE SOFTWARE” a través del desarrollo de servicios web con REST,
JSON y el despliegue de un componente de monitoreo sobre dichos servicios?
7
Evaluación del Problema
Los aspectos generales de evaluación del problema son:
Delimitado: Porque el tiempo de duración del proyecto son 6 sprint con un total
de 11 semanas, en las cuales se desarrolla y configura los servicios.
Claro: Ya que la capa de media forma parte de la arquitectura del proyecto, y el
componente de monitoreo de los servicios le permitirá tener una visión de lo que
está ocurriendo y poder detectar inconvenientes que se presenten en los servicios.
Evidente: Debido a que la carencia de una capa de servicios web con su
respectivo monitoreo afecta a la arquitectura, provoca que se degrade el
rendimiento del sistema y que sea difícil de mantener.
Concreto: Al culminar este trabajo se entrega dos servicios y el despliegue del
programa de monitoreo, los servicios sirven como canal de comunicación entre la
capa visual y de datos.
Relevante: Porque el inconveniente de tener una capa intermedia se presenta la
mayoría de proyectos que ofrecen capa visual y de datos a un usuario, y los
servicios que se desarrollan permiten tener una capa media que es reutilizable
para los nuevos proyectos de sistemas a los que se enfrente una institución.
Factible: Debido al tiempo definido, las herramientas de código abierto que se
utilizan, el conocimiento y la experiencia que posee el cada uno los integrantes del
equipo de trabajo asignado en el lenguaje de programación es posible realizar el
análisis, diseño, desarrollo y pruebas de los servicios.
8
OBJETIVOS
OBJETIVO GENERAL
Desarrollar servicios web utilizando REST, JSON en lenguaje Java estándar y
empresarial, que permitan la interoperabilidad con sistemas heterogéneos, que se
conviertan en el mecanismo de comunicación para que la capa visual pueda
interactuar con la capa de datos, y desplegar un programa para monitorear los
servicios.
OBJETIVOS ESPECÍFICOS
Aplicar Metodología SCRUM y cumplir con el rol de SCRUM master dentro
del equipo de desarrollo.
Desarrollar y probar dos servicios web con tecnología REST y JSON
usando lenguaje java estándar y empresarial para ejecutar consultas y
procedimientos almacenados.
Realizar la recolección, búsqueda y visualización de datos de las bitácoras.
Instalar y configurar las herramientas de código abierto conocidas como la
pila ELK para mostrar gráficos estadísticos.
Monitorear a través de un tablero de indicadores de estado los servicios
web que pertenecen a la capa de arquitectura lógica de negocio.
9
ALCANCES DEL PROBLEMA
Este proyecto de tesis tiene como objetivo desarrollar dos servicios web con
tecnología REST y JSON utilizando el lenguaje java estándar y empresarial, el
primer servicio web se encarga de ejecutar consultas, y el segundo servicio se
encarga de ejecutar procedimientos almacenados para que la capa visual y la
capa de datos puedan establecer una comunicación. Los servicios utilizan
configuraciones de un modelo entidad relación elaborado por otros integrantes
del equipo de desarrollo y se conectan con una base de datos sql server versión
de desarrollador.
También se configura un componente que permitirá realizar el monitoreo del
estado del servicios a través de la lectura de sus bitácoras, este monitoreo se
llevara a cabo con el uso de programas de código abierto conocidos como la pila
ELK (ElasticSearch, Logstash y Kibana), gracias a estos programas se puede
recolectar, almacenar y graficar la información que se guarda en las bitácoras de
los servicios web.
Se muestra gráficos de barras, líneas y de pastel de la siguiente información:
La cantidad de peticiones que procesa un servidor de aplicaciones donde
se instalan los servicios web.
La cantidad de veces que los servicios web responden error o éxito.
El tiempo de respuesta máximo y mínimo de los servicios
En el gráfico 1 se detalla la arquitectura general proyecto:
10
Gráfico 1 Arquitectura General del proyecto
Elaborado por: Lsi. Oscar Apolinario
Fuente: Datos del proyecto
11
En el gráfico 2 se especifica la arquitectura capa de negocio que se
necesita:
Gráfico 2 Arquitectura capa de negocio
Elaborado por: Lsi. Oscar Apolinario
Fuente: Datos del proyecto
12
En el gráfico 3 se detalla la arquitectura general de los servicios y del componente
de monitoreo:
Gráfico 3 Arquitectura de Componentes de la solución
Capa Visual Servicios Web Capa Datos
Logstash(Recolector)
ElasticSearch(Motor de
Búsqueda y Almacenamiento)
Kibana(Tablero)
Bitacoras(Fuentes de Datos)
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Fuentes de Datos.- Son las bitácoras de archivos o tablas generadas por los
servicios web y su servidor de aplicaciones de donde se obtiene la información.
Recolector.- Se encarga de seleccionar la información de la fuente de datos,
transformarla y enviársela al motor de Búsqueda y Almacenamiento, el programa
logstash cumple con esta función.
Motor de Búsqueda y Almacenamiento.- Se encarga de almacenar la
información y permitir consultarla de manera rápida. Este motor se puede instalar
en un servidor en la intranet de la empresa o se puede tener en la nube,
elasticsearch posee estas características.
13
Tablero.- Es una interface web que permite visualizar a través de gráficos de
barras, de líneas y pastel la información del motor de búsqueda y almacenamiento,
con Kibana se elabora los tableros y gráficos.
JUSTIFICACIÓN E IMPORTANCIA Es muy importante realizar este trabajo debido a que esta capa de servicios web
dinámicos y su componente de monitoreo permite tener un programa que sea
reutilizable para futuros desarrollos, para facilitar la exposición de servicios en
sistemas legados que posea una institución, disminuyendo los tiempos de
desarrollo y gastos en los nuevos proyectos del área de tecnología. Entre los
beneficiarios de los servicios web podemos mencionar:
El área de desarrollo de una institución, los desarrolladores pueden exponer la
lógica de negocio elaborada a nivel de la capa de datos de una manera sencilla y
rápida. Se cuenta con una capa de servicios que puede ser consumida por
dispositivos móviles con sistemas operativos como iOS o android, o por nuevas
tecnologías para clientes web basadas en JavaScript por ejemplo AngularJs
En lo que se refiere a los beneficios que nos provee el componente de monitoreo
se detallan los siguientes:
El área de producción de una institución o la persona encargada de la revisión de
los sistemas productivos, tiene un ambiente centralizado en donde puede
inspeccionar las bitácoras del servicio para analizar inconvenientes. Posee una
herramienta para visualizar estado y el comportamiento de los servicios, que
permite conocer en qué momento cada uno de los servicios tiene menor carga de
transacciones para poder asignar la fecha y hora de un nuevo pase a producción
para la liberación de una nueva funcionalidad o para realizar el mantenimiento de
un servidor.
14
METODOLOGÍA DEL PROYECTO
1. Metodología de Desarrollo
Utilizaremos una metodología ágil de desarrollo denominada SCRUM debido
a su enfoque basado en trabajo en equipo cuyo objetivo es entregar valor al
negocio. Con esta metodología se aplica los conceptos y roles como SCRUM
master, SCRUM team, product owner, product backlog, sprint, daily meeting.
2. Supuestos y restricciones
Entre los supuestos y restricciones dentro del desarrollo del proyecto podemos
mencionar:
El equipo de trabajo debe tener un área de desarrollo donde se lleva a cabo
las reuniones diarias que indica la metodología SCRUM y donde se conecta
las laptops para poder elaborar los servicios respectivos.
Se espera tener un servidor de desarrollo en donde se instala los servicios que
formaran parte de la capa media del proyecto, y en donde se despliega el
componente de monitoreo.
El equipo de desarrollo debe constar de al menos 5 personas con experiencia
en desarrollo Java
3. Plan de Calidad
Para asegurar y evidenciar la calidad de los servicios que se desarrollan se
utiliza sonarqube que evalúa la calidad código a través de la verificación del
cumplimiento de reglas de codificación, y el análisis de errores potenciales,
arquitectura y diseño, código duplicado.
Se realiza pruebas de rendimiento utilizando las herramientas jmeter y soapui
en un ambiente de desarrollo controlado, para evidenciar de esta manera los
tiempos mínimo, máximo y promedio de respuesta de los servicios conocidos
como SEC Y SEP.
El componente de monitoreo nos permite verificar el estado de los servicios en
el ambiente de desarrollo.
15
CAPÍTULO II
MARCO TEÓRICO
ANTECEDENTES DEL ESTUDIO
“Una de las ventajas de la utilización de servicios web por parte de las
aplicaciones es la posibilidad de satisfacer pedidos de múltiples sistemas
(quizás desarrollados en distintos lenguajes y ejecutándose bajo diferentes
plataformas) a partir de una misma fuente de datos. Esta clase de
vinculación se da incluso como parte del proceso de desarrollo de muchas
aplicaciones, añadiendo a ellas una capa extra (interfaz), que actúe a
manera de servicio web” (Minera, 2011).
Debido a las características que poseen los servicios web son la tecnología ideal
para la comunicación entre una capa visual y una capa de datos.
FUNDAMENTACIÓN TEÓRICA
Servicios Web: “Es una tecnología que utiliza un conjunto de protocolos y
estándares que sirven para intercambiar datos entre aplicaciones” (Eslava, 2013).
En el gráfico 4 se muestra la interacción de varios servicios web.
Gráfico 4 Funcionamiento de los Servicios Web
Elaborado por: World Wide Web Consortium
Fuente: http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb
16
Java: “El lenguaje de programación java es un lenguaje de alto nivel que puede
ser caracterizado por las siguientes palabras de moda: Simple, Orientado a
Objetos, Distribuido, Multi-hilado, Dinámico, Portable, De alto rendimiento,
Robusto, Seguro” (Oracle, s.f.). Debido a todas las características mencionadas
java es el lenguaje más popular entre los desarrolladores y así lo demuestra el
índice de TIOBE y del cual detallamos el siguiente gráfico
Gráfico 5 Indice de Popularidad TIOBE
Elaborado por: TIOBE
Fuente: www.tiobe.com
Java Enterprise Edition: Esta plataforma nos permite desarrollar servicios web
que sean escalables como lo menciona Arum Gupta.
Java EE provee una plataforma basada en estándares para desarrollar
aplicaciones web y empresariales. Estas aplicaciones son típicamente
diseñadas como aplicaciones multicapas, con una capa de front end que
consiste de frameworks web, una capa media que provee seguridad y
transacciones y una capa de back end que provee conectividad hacia las
bases de datos o los sistemas legados. (Arum, 2015).
17
Gráfico 6 Aplicaciones Multicapas con Java Enterprise Edition
Elaborado por: Oracle
Fuente: http://docs.oracle.com/javaee/6/tutorial/doc/
HTTP: (HyperText Transfer Protocol) Protocolo de Transferencia de Hipertexto
Es un protocolo para la transferencia de información sobre intranets y Red
Informática Mundial (World Wide Web). El concepto de HTTP está basado
sobre una combinación de Request-Response, con el cliente (Navegador
Web) solicitando al servidor HTTP respuestas a sus solicitudes. El servidor
procesa y generar las peticiones y cierra las conexiones. (Singh, 2011)
Este protocolo nos sirve para comunicar la capa visual con la capa de servicios.
En el gráfico 7 se describe brevemente el protocolo HTTP y la interacción entre
cliente y servidor
18
Gráfico 7 Interacción de una solicitud y respuesta HTTP
Elaborado por: Kathy Sierra
Fuente: Head First Servlets and JSP
En el cuadro 3 y en el cuadro 4 se describe los elementos claves de una solicitud
y respuesta HTTP.
Cuadro 3 Elementos principales de una solucitud HTTP
Método HTTP Permite especificar la acción que se
realizara, puede ser GET, POST, PUT
o DELETE
URL Es el identificador del recurso al que
intentamos acceder
Parámetros del
formulario
Son como los argumentos del método
Cuerpo Cuando se usa el método POST, la
información viaja en el cuerpo de la
solicitud
Elaborado por: Héctor Ortega
Fuente: Head First Servlets and JSP
19
Cuadro 4 Elementos principales de una respuesta HTTP
Código de
estado
Indica si la petición se procesó de
manera exitosa o no
Tipo de
contenido
Es tipo de información que se está
retornando como una página, un texto
o una imagen.
Cuerpo La respuesta que se retorna al cliente
puede ser una página, una imagen
entre otras
Elaborado por: Héctor Ortega
Fuente: Head First Servlets and JSP
REST: Significa Transferencias de estado Representacional (Representational
State Transfer) es un estilo de arquitectura para diseñar aplicaciones de red
distribuidas.
JSON: (JavaScript Object Notation) Notación de Objetos de JavaScript
Es un formato para el intercambio de datos ligero, es fácil de leer y escribir
para los humanos. Es fácil de generar y convertir para las maquinas. JSON
es un formato de texto completamente independiente del lenguaje pero usa
convenciones que son familiares para programadores de lenguajes de la
familia de C. (JSON, s.f.)
Debido a que este formato es ligero es la elección de preferencia para el
intercambio de datos entre un servicio web y que aplicaciones creadas para
dispositivos móviles con sistemas operativos como iOS y android lo utilicen para
el intercambio de datos. El grafico 8 es un ejemplo de un formato JSON
20
Gráfico 8 Ejemplo del formato JSON
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Logstash: “Provee un framework integrado para recolección, centralización,
conversión, almacenamiento y búsqueda de logs” (Turnbull, 2013). Este programa
nos permite recolectar las bitácoras de los servicios web.
Log: “Es un tipo de archivo o de tabla donde los registros son ordenados por
tiempo. Los logs guardan que sucedió y cuando” (Kreps, 2015). En el gráfico 9
podemos ver un ejemplo de un log generado por un servidor de aplicaciones
Gráfico 9 Ejemplos de mensajes en un archivo log
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto archivo de log de acceso generado por jboss
Elasticsearch: Es un motor de búsqueda de código abierto construido sobre
Apache Lucene. Lucene es posiblemente la biblioteca de motor de búsqueda más
avanzada y de alto rendimiento.
Elasticsearch es mucho más que solo Lucene y puede ser descrito como
se detalla a continuación:
21
Un almacén de documentos en tiempo real distribuido donde cada campo
es indexado y se lo puede buscar.
Un motor de búsqueda distribuido con análisis en tiempo real es capaz de
escalar a cientos de servidores y petabytes de datos estructurados y no
estructurados. (Tong, 2015).
En Elasticsearch se almacena las bitácoras que generan los servicios, también se
puede consultar de manera rápida la información de estas bitácoras.
Kibana: “Es una interfaz gráfica de usuario utilizada para visualizar y buscar
bitácoras de datos” (Khedher, 2015). Kibana a través de su interfaz envía las
consultas hacia elasticsearch y luego genera los gráficos estadísticos basados en
la información que retorna.
Gráfico 10 Interacción entre logstash, elasticsearch y kibana
Elaborado por: Yuvraj Gupta
Fuente: Kibana Essentials
JAX-RS: Java API for Representational State Transfer
JAX-RS define un conjunto de APIs de java para construir servicios web
conforme al estilo REST. Esta especificación define como exponer POJOs
como recursos web, usando HTTP protocolo de red. Aplicaciones usando
estas APIs pueden ser desplegadas sobre un servidor de aplicaciones de
una manera portable.” (Masoud Kalali, 2013).
Las características que tiene este api nos ayuda en el desarrollo los servicios web
utilizando rest y agilita los tiempos de desarrollo debido a su facilidad de
configuración.
22
JPA: Java Persistence Api define un conjunto de clases para el manejo de la
persistencia y el mapeo entre tabla de una base de datos y un POJO también
conocido como mapeo objeto/relacional.
POJO: Plain Old Java Object es un objeto de java con variables y métodos de
acceso a las mismas.
EJB: Enterprise Java Beans son utilizados en el desarrollo de aplicaciones basado
en componentes por lo general tienen la lógica de negocios que se ejecuta sobre
los datos.
MVC: Modelo-Vista-Controlador es un patrón de diseño de arquitectura para el
desarrollo de aplicaciones que permite separar el procesamiento y la presentación
de los datos de una aplicación
Modelo: Representa los datos de la aplicación y su lógica de negocio.
Vista: Es la representación visual del modelo
Controlador: Conecta la vista al modelo y administra el flujo de la aplicación
Gráfico 11 Patrón Modelo Vista Controlador con tecnología java
Elaborado por: netbeans
Fuente: https://netbeans.org/kb/docs/javaee/ecommerce/entity-session.html
JBOSS.- “Es un servidor de aplicaciones de código abierto basado en java
Enterprise Edition. Debido a que está basado en java es un servidor
multiplataforma: es decir se puede utilizar en cualquier sistema operativo que
23
soporte java” (mastertheboss, s.f.). El servidor jboss está certificado para soportar
el lenguaje java empresarial y gracias a que es un servidor de código abierto
no se gasta dinero en la adquisición de licencias
En el gráfico 12 se detalla de manera general los elementos que forman parte del
jboss
Gráfico 12 Arquitectura Básica de Jboss AS
Elaborado por: Francesco Marchioni
Fuente: JBOSS AS 7 Configuration, Deployment and Administration
Uno de los motivos por los que se escogió este servidor de aplicaciones por tener
mucha popularidad en las búsquedas de google, para esto nos ayudamos de la
herramienta google trends y a continuación especificamos un ejemplo.
24
Gráfico 13 Tendencias de Busqueda de servidores de aplicaciones
Elaborado por: Héctor Ortega
Fuente:
https://www.google.com/trends/explore#q=jboss%2C%20glassfish%2C%20tome
e%2C%20wildfly&cmpt=q&tz=Etc%2FGMT%2B5
Servidor de Aplicaciones: Es un servidor que permite construir, desplegar y
administrar nuevas aplicaciones.
Base de datos: Es un contenedor que almacena tablas y otras estructuras SQL.
“Una columna es un dato guardado en una tabla. Una fila es un conjunto de
columnas” (Beighley, 2007). Los servicios web se comunicaran con una base de
datos llamada SQL SERVER versión de desarrollador
SQL: Es un lenguaje para manipular los datos en tablas relacionales
25
Programa almacenado: “Es una serie de instrucciones asociadas que tiene un
nombre y se encuentran guardadas y ejecutadas dentro de un servidor de base
de datos” (Guy Harrison, 2006). Los programas almacenados nos permiten
agrupar validaciones que se necesiten realizar para insertar datos en una tabla.
Procedimientos almacenados: Es un programa almacenado que acepta
múltiples parámetros de entrada y de salida.
Funciones almacenadas: Es un programa almacenado que acepta parámetros
de entrada, salida y retorna un valor.
SQL Server: Es un programa compuesto por un motor de base de datos, servicios
y herramientas de inteligencia de negocios. Otros servidores de bases de datos
conocidos son: MySQL, Oracle, Postgresql.
Gráfico 14 Ejemplo de un servidor MySQL
Elaborado por: Lynn Beighley
Fuente: Head First PHP MySQL
IDE: (Integrated Development Environment) Ambiente de Desarrollo Integrado, Es
un conjunto de herramientas de programación para escribir aplicaciones (editor de
código fuente, compilador, depurador)
26
NETBEANS: “Es un IDE 100% gratuito y de código abierto que ayuda a crear
diferentes tipos de aplicaciones de software. Este IDE provee soporte para todo
los tipos aplicaciones java, ayudando a desarrollar proyectos que usen tecnologías
como java EE” (Wielenga, 2015). Gracias a que cubre la tecnología java es uno
de los IDE más adecuados para desarrollar servicios web. El siguiente gráfico se
detalla las tecnologías de java que soporta el IDE
Gráfico 15 Tecnologías de Java soportadas por Netbeans
Elaborado por: Netbeans
Fuente: www.netbeans.com
SCRUM: Es una metodología que nos ayuda a organizar y priorizar las tareas del
proyecto para aportarle valor al cliente y como indica Rubin
“Es un enfoque ágil para el desarrollo de servicios y productos
innovadores. Con un enfoque ágil, se puede empezar un backlog –una lista
priorizada de características y otras capacidades necesarias para
desarrollar un producto exitoso. Guiado por el backlog del producto, tú
siempre trabajas primero en los ítems más importantes o de más alta
prioridad. Cuando te quedas sin recursos (como el tiempo), cualquier
27
trabajo que no se complete será de una menor prioridad que del trabajo
que se complete.” (Rubin, 2013).
Gráfico 16 Resumen del desarrollo ágil
Elaborado por: Kenneth Rubin
Fuente: Essential Scrum
Product Owner: Él es la única autoridad responsable de decidir qué
características y funcionalidades construir y el orden en que deben ser
construidas.
Scrum Master: Él es el responsable de guiar el equipo en la creación y
seguimiento de su propio proceso basado en SCRUM. Es el responsable de
proteger al equipo de interferencias externas y toma el rol de líder en la eliminación
de los obstáculos que inhiben la productividad del equipo.
Equipo de Desarrollo: Son los responsables de diseñar, construir y probar el
producto deseado. El equipo se auto-organiza y determina la mejora manera de
cumplir con el objetivo planteado por el dueño del producto.
28
Gráfico 17 Roles del equipo SCRUM
Elaborado por: Kenneth Rubin
Fuente: Essential Scrum
Backlog del producto: El dueño del producto (product owner) con ayuda del
equipo y de los clientes es el responsable es determinar y manejar la secuencia
de trabajo a través de una lista priorizada conocida como backlog del producto.
Sprint.- En SCRUM el trabajo se realiza en ciclos de hasta un mes a los cuales
se los denomina sprint.
Scrum Diario.- Cada día durante el sprint se debe realizar una reunión diaria
durante quince minutos, en esta reunión todas las personas del equipo
permanecen de pie. Por lo general se realizan las siguientes preguntas:
¿Qué hice ayer?
¿Qué voy a hacer hoy?
29
¿Cuáles son los obstáculos o impedimentos que no me permiten avanzar
con mi actividad?
Trello: Te permite manejar tus tareas y colaborar con diferentes usuarios en
tiempo real usando tableros, listas y tarjetas. Se puede invitar tantos miembros
como se desea al tablero y se puede revisar las actividades recientes de los
miembros.
Gráfico 18 Ejemplo de un tablero en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
Soapui: Es una herramienta que puede ser utilizada para pruebas funcionales y
no funcionales. No está limitado a servicios web, sin embargo es la herramienta
de-facto utilizada para las pruebas de servicios web. En las pruebas de servicios
web soapui es capaz de desarrollar el rol de cliente y servicio. Esto le permite crear
pruebas funcionales y no funcionales de una manera rápida y eficiente por usar
un solo ambiente. (kankanamge, 2012). Soapui nos permite interactúar con los
servicios web y de esta manera probar la ejecución de una consulta o de un
procedimiento almacenado
.
30
Gráfico 19 Diagrama de modelo servicio REST en soapui
Elaborado por: Charitha Kankanamge
Fuente: Web Service Testing with soapUI
Sonarqube: “Es un tablero basado en web de código abierto que permite la
evaluación continua de calidad. Tiene licencia GNU y soporte multiplataforma Esta
desarrollado en java y tiene las siguientes características. Entre los lenguajes y
plataforma de código soportadas están Android, Python, PHP, Java, VB.net”
(Acharya, 2014). Sonarqube nos permite analizar los servicios web para verificar
que tengan calidad y sean fáciles de mantener.
31
Gráfico 20 Ejes de calidad del código que analiza sonar
Elaborado por: Sonarqube
Fuente: http://www.sonarqube.org/
Jmeter: “Es una aplicación de escritorio, diseñada para probar y medir el
rendimiento y el comportamiento funcional de aplicaciones cliente/servidor como
las aplicaciones web o aplicaciones FTP. Es una de las herramientas de pruebas
que es de código abierto más utilizadas, libremente distribuidas que la red puede
ofrecer.” (Halili, 2008). Esta herramienta es ideal para realizar pruebas de
rendimiento sobre los servicios y validar el comportamiento de los mismos cuando
son altamente demandados.
En el gráfico 21 se puede observar los elementos de un plan de pruebas en jmeter.
Gráfico 21 Elementos de un test en Jmeter
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
32
FUNDAMENTACIÓN LEGAL
CONSTITUCIÓN DE LA REPÚBLICA DEL ECUADOR
Sección octava
Ciencia, tecnología, innovación y saberes ancestrales
Art. 385.- El sistema nacional de ciencia, tecnología, Innovación y saberes
ancestrales, en el marco del respeto al ambiente, la naturaleza, la vida, las culturas
y la soberanía, tendrá como finalidad:
a) Generar, adaptar y difundir conocimientos científicos y tecnológicos.
b) Desarrollar tecnologías e innovaciones que impulsen la producción
nacional, eleven la eficiencia y productividad, mejoren la calidad de vida y
contribuyan a la realización del buen vivir.
Art. 386.- El sistema comprenderá programas, políticas, recursos, acciones, e
incorporará a instituciones del Estado, universidades y escuelas politécnicas,
institutos de investigación públicos y privados, empresas públicas y privadas,
organismos no gubernamentales y personas naturales o jurídicas, en tanto
realizan actividades de investigación, desarrollo tecnológico, innovación…
El Estado, a través del organismo competente, coordinará el sistema, establecerá
los objetivos y políticas, de conformidad con el Plan Nacional de Desarrollo, con
la participación de los actores que lo conforman.
33
Art. 387.- Será responsabilidad del Estado:
a) Facilitar e impulsar la incorporación a la sociedad del conocimiento para
alcanzar los objetivos del régimen de desarrollo.
b) Promover la generación y producción de conocimiento, fomentar la
investigación científica y tecnológica.
c) Asegurar la difusión y el acceso a los conocimientos científicos y
tecnológicos, el usufructo de sus descubrimientos y hallazgos en el marco
de lo establecido en la Constitución y la Ley.
d) Garantizar la libertad de creación e investigación en el marco del respeto
a la ética, la naturaleza, el ambiente.
e) Reconocer la condición de investigador de acuerdo con la Ley.
Art. 388.- El Estado destinará los recursos necesarios para la investigación
científica, el desarrollo tecnológico, la innovación, la formación científica y la
difusión del conocimiento. Un porcentaje de estos recursos se destinará a financiar
proyectos mediante fondos concursables. Las organizaciones que reciban fondos
públicos estarán sujetas a la rendición de cuentas y al control estatal respectivo.
La fundamentación legal para los estudios según la nueva ley de educación
superior se refleja en los artículos:
Art. 8.- Serán Fines de la Educación Superior.- La educación superior tendrá los
siguientes fines:
34
a) Aportar al desarrollo del pensamiento universal, al despliegue de la
producción científica y a la promoción de las transferencias e innovaciones
tecnológicas;
b) Fortalecer en las y los estudiantes un espíritu reflexivo orientado al logro
de la autonomía personal, en un marco de libertad de pensamiento y de
pluralismo ideológico;
c) Contribuir al conocimiento…
d) Formar académicos y profesionales responsables, con conciencia ética y
solidaria, capaces de contribuir al desarrollo de las instituciones de la
República, a la vigencia del orden democrático, y a estimular la
participación social;
e) Aportar con el cumplimiento de los objetivos del régimen de desarrollo
previsto en la Constitución y en el Plan Nacional de Desarrollo;
f) Fomentar y ejecutar programas de investigación de carácter científico,
tecnológico y pedagógico que coadyuven al mejoramiento y protección del
ambiente y promuevan el desarrollo sustentable nacional;
g) Constituir espacios para el fortalecimiento del Estado Constitucional,
soberano, independiente, unitario, intercultural, plurinacional y laico;
h) Contribuir en el desarrollo local y nacional de manera permanente, a través
del trabajo comunitario o extensión universitaria.
35
Art. 71.- Principio de igualdad de oportunidades.- El principio de igualdad de
oportunidades consiste en garantizar a todos los actores del Sistema de
Educación Superior las mismas posibilidades en el acceso, permanencia,
movilidad y egreso del sistema, sin discriminación de género, credo, orientación
sexual, etnia, cultura, preferencia política, condición socioeconómica o
discapacidad.
Las instituciones que conforman el Sistema de Educación Superior propenderán
por los medios a su alcance que, se cumpla en favor de los migrantes el principio
de igualdad de oportunidades. Se promoverá dentro de las instituciones del
Sistema de Educación Superior el acceso para personas con discapacidad bajo
las condiciones de calidad, pertinencia y regulaciones contempladas en la
presente Ley y su Reglamento. El Consejo de Educación Superior, velará por el
cumplimiento de esta disposición.
Art. 80.- Gratuidad de la educación superior pública hasta el tercer nivel.- Se
garantiza la gratuidad de la educación superior pública hasta el tercer nivel. La
gratuidad observará el criterio de responsabilidad académica de los y las
estudiantes, de acuerdo con los siguientes criterios:
a) La gratuidad será para los y las estudiantes regulares que se matriculen
en por lo menos el sesenta por ciento de todas las materias o créditos que
permite su malla curricular en cada período, ciclo o nivel;
36
b) La gratuidad será también para los y las estudiantes que se inscriban en
el nivel preuniversitario, pre politécnico o su equivalente, bajo los
parámetros del Sistema de Nivelación y Admisión.
c) La responsabilidad académica se cumplirá por los y las estudiantes
regulares que aprueben las materias o créditos del período, ciclo o nivel,
en el tiempo y en las condiciones ordinarias establecidas. No se cubrirán
las segundas ni terceras matrículas, tampoco las consideradas especiales
o extraordinarias.
d) El Estado, por concepto de gratuidad, financiará una sola carrera o
programa académico de tercer nivel por estudiante. Se exceptúan los
casos de las y los estudiantes que cambien de carrera o programa, cuyas
materias puedan ser revalidadas.
e) La gratuidad cubrirá exclusivamente los rubros relacionados con la primera
matrícula y la escolaridad; es decir, los vinculados al conjunto de materias
o créditos que un estudiante regular debe aprobar para acceder al título
terminal de la respectiva carrera o programa académico; así como los
derechos y otros rubros requeridos para la elaboración, calificación, y
aprobación de tesis de grado.
f) Se prohíbe el cobro de rubros por utilización de laboratorios, bibliotecas,
acceso a servicios informáticos e idiomas, utilización de bienes y otros,
correspondientes a la escolaridad de los y las estudiantes universitarios y
politécnicos.
37
g) Para garantizar un adecuado y permanente financiamiento del Sistema de
Educación Superior y la gratuidad, la Secretaría Nacional de Educación
Superior, Ciencia, Tecnología e Innovación desarrollará un estudio de
costos por carrera/programa académico por estudiante, el cual será
actualizado periódicamente.
h) Se pierde de manera definitiva la gratuidad, si un estudiante regular
reprueba, en términos acumulativos, el treinta por ciento de las materias o
créditos de su malla curricular cursada.
i) La gratuidad cubrirá todos los cursos académicos obligatorios para la
obtención del grado.
Art. 117.- Tipología de instituciones de Educación Superior.- Las instituciones de
Educación Superior de carácter universitario o politécnico se clasificarán de
acuerdo con el ámbito de las actividades académicas que realicen. Para
establecer esta clasificación se tomará en cuenta la distinción entre instituciones
de docencia con investigación, instituciones orientadas a la docencia e
instituciones dedicadas a la educación superior continua.
En función de la tipología se establecerán qué tipos de carreras o programas
podrán ofertar cada una de estas instituciones, sin perjuicio de que únicamente
las universidades de docencia con investigación podrán ofertar grados
académicos de PHD o su equivalente.
38
Esta tipología será tomada en cuenta en los procesos de evaluación, acreditación
y categorización.
Art. 118.- Niveles de formación de la educación superior.- Los niveles de
formación que imparten las instituciones del Sistema de Educación Superior son:
a) Nivel técnico o tecnológico superior, orientado al desarrollo de las
habilidades y destrezas que permitan al estudiante potenciar el saber
hacer. Corresponden a éste los títulos profesionales de técnico o tecnólogo
superior, que otorguen los institutos superiores técnicos, tecnológicos,
pedagógicos, de artes y los conservatorios superiores. Las instituciones
de educación superior no podrán ofertar títulos intermedios que sean de
carácter acumulativo.
b) Tercer nivel, de grado, orientado a la formación básica en una disciplina o
a la capacitación para el ejercicio de una profesión. Corresponden a este
nivel los grados académicos de licenciado y los títulos profesionales
universitarios o politécnicos, y sus equivalentes. Sólo podrán expedir
títulos de tercer nivel las universidades y escuelas politécnicas. Al menos
un 70% de los títulos otorgados por las escuelas politécnicas deberán
corresponder a títulos profesionales en ciencias básicas y aplicadas.
c) Cuarto nivel, de postgrado, está orientado al entrenamiento profesional
avanzado o a la especialización científica y de investigación.
Corresponden al cuarto nivel el título profesional de especialista; y los
grados académicos de maestría, PhD o su equivalente. Para acceder a la
39
formación de cuarto nivel, se requiere tener título profesional de tercer nivel
otorgado por una universidad o escuela politécnica, conforme a lo
establecido en esta Ley.
Las universidades y escuelas politécnicas podrán otorgar títulos de nivel
técnico o tecnológico superior cuando realicen alianzas con los institutos
de educación superior o creen para el efecto el respectivo instituto de
educación superior, inclusive en el caso establecido en la Disposición
Transitoria Vigésima Segunda de la presente Ley.
PREGUNTA CIENTÍFICA A CONTESTARSE
¿Se podrá cubrir la necesidad de tener una capa intermedia en el proyecto
ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE
TRABAJO PARA PROYECTOS DE TITULACIÓN APLICACANDO
METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE” con el desarrollo,
durante seis sprints, de servicios web dinámicos con tecnología REST/JSON que
ejecuten consultas y procedimientos y el despliegue de su respectivo componente
de monitoreo?
DEFINICIONES CONCEPTUALES
SEC: Servicio de Ejecución de Consultas, este servicio es el que se encargara de
ejecutar consultas configuradas en tablas.
SEP: Servicio de Ejecución de procedimientos este servicio es el que se encarga
de ejecutar los procedimientos configurados en tablas.
40
Componente de Monitoreo: Es un sistema que nos permitirá ver el estado y
comportamiento de los servicios a través del uso de programas conocidos como
la pila ELK (Elasticsearch, Logstash, Kibana).
Monitorear: Se refiere a controlar algo, “A partir del sustantivo monitor (monitor
‘dispositivo o pantalla de control’), se han creado en español los verbos monitorizar
y monitorear, con el sentido de ‘vigilar o seguir [algo] mediante un monitor.” (Real
Academica de la Lengua, s.f.)
A continuación se detallan conceptos básicos de Elasticsearch, que nos ayudaran
a entender como esta estructurado este motor:
Campo: “La unidad de trabajo más pequeña almacenada en elasticsearch. Cada
documento tiene par de clave valor los cuales son referenciados como campos.
Los valores de un campo pueden ser enteros, cadenas, arreglos dependiendo de
su tipo de dato.” (Gupta, 2015). Es similar al concepto de campo en un base de
datos relacional.
Documento: “Es una colección de campos, es considerado como una fila en una
base de datos relacional, los documentos son Java Script Object Notation (JSON)”
(Gupta, 2015). Elasticsearch al guardar documentos JSON trabaja de manera muy
rápida
Tipo: Es similar a una tabla en una base de datos relacional. Contiene una lista
de campos que es definido para cada documento. Los tipos son usados con un
api de mapeos, en la cual se especifica el tipo de los campos. (Gupta, 2015). Esto
nos permite definir los tipos de datos que se almacenan en nuestro documento.
41
Gráfico 22 Ejemplo de mapeo en elasticsearch
Elaborado por: Yuvraj Gupta
Fuente: Kibana Essential
Gráfico 23 Tipos de datos principales en elasticsearch
Elaborado por: Yuvraj Gupta
Fuente: Kibana Essential
42
Índice: Es una colección de documentos. Un índice tiene un mapeo, este mapeo
es utilizado para definir múltiples tipos. Un índice está definido por un nombre, el
cual siempre es utilizado para realizar operaciones de búsqueda, actualización y
borrado. La cantidad máxima de índices que puede guardar en un índice es
2147483519 que equivale al valor máximo del entero.
Comparación de conceptos en elasticsearch y base de datos noSQL y tradicional:
Gráfico 24 Comparación de conceptos de elasticsearch con bases de datos tradicionales
Elaborado por: Yuvraj Gupta
Fuente: Kibana Essential
JPA: (Java Persistence Api) Es un conjunto de clases que permite realizar el
mapeo de tablas a objetos.
JDBC: (Java Database Connectivity) Es un conjunto de clases que permite la
conexión hacia a una base de datos como Oracle, Microsoft SQL server, mySQL
API: (Application Programming Interface) es un conjunto de subrutinas que un
módulo de software hace públicas para otros módulos en un sistema.
SISTEMA: Es un conjunto de elementos interconectados que están organizados
para alcanzar un objetivo.
43
CAPÍTULO III
PROPUESTA TECNOLÓGICA
Al final del proyecto se entrega dos servicios web con tecnología REST y JSON
usando lenguaje java estándar y empresarial, un servicio denominado SEC
(Servicio de Ejecución de Consultas) ejecuta consultas y otro denominado SEP
(Servicio de Ejecución de Procedimientos) se encarga de ejecutar procedimientos
de manera dinámica a través de configuraciones en tablas en una base de datos
SQL Server versión de desarrollador, estas tablas y el respectivo modelo entidad
relación serán proporcionadas por otros integrantes del equipo que participaran
dentro del proyecto. Se despliega un componente de monitoreo usando la pila ELK
(ElasticSearch, Logstash y Kibana) el cual se encarga de la recolección,
almacenamiento, búsqueda y generación de gráficos de barra, pastel y líneas, de
las bitácoras de los servicios. Para la organización de las actividades se utiliza la
metodología ágil llamada SCRUM, estas actividades son almacenadas y
asignadas a los miembros del equipo en la aplicación web trello.
Análisis de Factibilidad
Entre los distintos requerimientos para asegurar el éxito del proyecto podremos
mencionar los siguientes:
Factibilidad Operacional Los usuarios de los servicios web son los integrantes de los equipos de la capa
visual y de la capa de datos que se encargan de consumir y configurar los
servicios, asegurando de esta manera el funcionamiento del mismo y si realmente
les permite realizar la comunicación respectiva entre sus capas.
44
Factibilidad Técnica Para poder realizar el desarrollo de los servicios y despliegue de los componentes
de monitoreo se necesita que el equipo de infraestructura del proyecto provea
servidores de desarrollo en donde se realiza la instalación de los mismos.
Factibilidad Legal En el proyecto se utiliza herramientas de código abierto lo cual nos permite crear
un nuevo software sin infringir las leyes.
Entre los programas que se usan podemos mencionar las licencias sobre las
cuales son distribuidos:
Elasticsearch con Apache License, Version 2.0
Kibana con Apache License, Version 2.0
Netbeans con GNU Lesser General Public License version 2.1 (LGPL)
Java Standard y Enterprise con Oracle Binary Code License (BCL)
Factibilidad Económica
Para el desarrollo de los servicios y despliegue de su componente de monitoreo
se utiliza herramientas y lenguajes de código abierto que son gratis, gracias a esto
no se realiza gastos en software.
Etapas de la metodología del proyecto
Para el desarrollo del proyecto se utilizó la metodología ágil denominada
SCRUM, y se definieron 6 sprints que se detallan en el cuadro 5:
45
Cuadro 5 Definición de sprint y entregables
N° Semanas Actividades
1 3 Análisis, Diseño y Desarrollo del SEP y SEC versión JDBC
2 3
Análisis, Diseño y Desarrollo SEP y SEC versión JPA. Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los integrantes de la capa visual.
3 2
Agregar validaciones de servicios, encriptación, instalación y pruebas de monitoreo con logstash y elastisearch y kibana. Soporte de configuraciones a los integrantes de la capa de datos y consumos
de servicios a los integrantes de la capa visual.
4 1
Mejoras con sonar, generación de gráficos de pastel y barra. Soporte de configuraciones a los integrantes de la
capa de datos y consumos de servicios a los integrantes de la capa visual.
5 1
Elaboración de documentación, manual de usuario y actualización de manual de diseño.
Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los integrantes de la capa visual.
6 1
Documento de Diseño y Desarrollo de la capa
rest/json del SEP y SEC. Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los integrantes de la capa visual.
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
46
En base a los seis sprints definidos a continuación detallaremos las actividades
realizadas en cada uno de los sprints:
Sprint 1
Configuración y pruebas de conexión con logstash.
Pruebas sobre el servidor de desarrollo.
Análisis del modelo entidad relación del servicio web de ejecución de
consultas y de procedimientos.
Definir herramientas de trabajo, versiones de java, de servidores de
aplicaciones, versión de IDE
Instalación y configuración de ambiente de desarrollo para desarrollo de
web service.
Creación de lógica de ejecución de procedimientos almacenados
Creación de lógica de ejecución de consultas dinámica.
Análisis de la arquitectura de la aplicación para el servicio web de consultas
y de ejecución de procedimientos almacenados.
Sprint 2
Configuración y pruebas de conexión con logstash.
Leer bitácoras con logstash y guardarlas en elasticsearch en ambiente
Windows.
Definir formato de bitácoras de archivo.
Instalación de centos 6.5 a nivel local.
Instalación de logstash, elasticsearch y kibana sobre centos.
Instalación de logstash en el servidor de base de datos de desarrollo.
Sprint 3
Investigación de blowfish en java.
Configuración en servidor 192.168.100.11 de logstash para que lea las
tablas del histórico de la base de datos.
Pruebas con kibana y elasticsearch.
47
Instalación de kibana y elasticsearch en windows 7 en el servidor de
desarrollo 192.168.100.17.
Pruebas con logstash sobre centos para leer un archivo log servidor de
desarrollo 192.168.100.11.
Sprint 4
Subir a subversión sprint 1 del SEP y SEC.
Corrección del pase a producción del SEC, se quitaron los grants
innecesarios.
Generación de gráficos sobre el índice de access log
Pase a producción del SEP sprint 1 con apoyo de la persona que versiona.
Investigación de named queries para evitar error lazy load
Pase a producción del SEC con apoyo de la persona que versiona sprint
1.
Corrección de índice de access log en elasticsearch.
Sprint 5
Generación del gráfico de barras de top de IP de clientes que realizan
peticiones sobre las aplicaciones.
Cambiar query para realizar left join sobre las tablas del sec.
Corrección del pase del SEC.
Cambiar fecha con la ingresan los registros de al desde logstash hasta el
índice elasticsearch.
Mejoras con sonar de la nueva versión del SEP que usa SOAP.
Mejoras en la lógica y cierre de conexiones.
Puesta en producción y pruebas de la nueva versión SEP que usa SOAP.
Pruebas de la nueva versión SEC que usa SOAP.
Corrección de SEC, actualización de la capa JPA.
Sprint 6
Análisis de la versión SEC y SEP con rest y json.
48
Investigación de uso de api rest de jboss.
Mejoras del SEC y SEP a través del uso de sonar.
Diseño de SEC con REST y JSON.
Diseño del SEP con REST y JSON.
Desarrollo del SEC y SEP con tecnología rest y json.
Actualización de documentos de métodos del SEC y del SEP.
Para llevar el control de las actividades se utilizó la herramienta trello, en donde
se creó un tablero y se asignó cada una de las actividades a realizar dentro del
proyecto y en los siguientes gráficos se muestran las tareas:
Gráfico 25 Grupo de arquitectura y su respectivo tablero en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
En el gráfico 26 se detalla los miembros del equipo, con los usuarios creados en la aplicación web trello.
49
Gráfico 26 Miembros del grupo de arquitectura en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
En los siguientes gráficos se muestran las actividades creadas y asignadas en
cada uno de los sprints:
Gráfico 27 Actividades del sprint 1 en el tablero trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
50
Gráfico 28 Actividades del sprint 2 en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
Gráfico 29 Actividades del sprint 3 en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
51
Gráfico 30 Actividades del sprint 4 en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
Gráfico 31 Actividades del sprint 5 en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
52
Gráfico 32 Actividades del sprint 6 en trello
Elaborado por: Héctor Ortega
Fuente: www.trello.com
Entregables del proyecto
Los entregables del proyecto son 2 servicios web desarrollados en lenguaje de
programación java y que utilicen rest y json:
SEC (Servicio de Ejecución de Consultas)
SEP (Servicio de Ejecución de Procedimientos)
Un componente de monitoreo para los servicios utilizando la pila ELK.
Manual de usuario del SEC y SEP sección REST/JSON.
Manual de diseño del SEC y SEP sección REST/JSON.
Informe de Pruebas del SEC Y SEP sección REST/JSON.
53
CRITERIOS DE VALIDACIÓN DE LA PROPUESTA
Juicio de Expertos Como política de aceptación del proyecto se deben cumplir la entrega de los seis
Sprint los cuales son validados por la PMP Srta. Iliana Vera.
El scrum master de la capa visual Sr. Juan Carlos Tamayo verifica si la información
retornada por el SEC y SEP en su versión REST-JSON es correcta.
El scrum master de la capa de datos Srta. Cinthya Rivadeneira se encarga de
validar si el SEC y SEP representa de manera fiel la información de las consultas
y de los procedimientos almacenados configurados y que se necesitan exponer
como servicios para la capa visual.
La Srta. Anabell Tingo con el rol de tester verifica la funcionalidad de los servicios.
Para poder validar la funcionalidad de capa de servicios con REST y JSON y su
componente de monitoreo se realiza un plan de pruebas que está estructurado de
la siguiente manera:
Objetos a probar.- Indica las clases, archivos, y el componente al cual se le
aplican las pruebas.
Datos de prueba.- Detalla los datos con los que se puede probar cada uno de los
casos de prueba.
Casos de prueba.- Describe cada uno de los escenarios a ejecutar sobre el objeto
que se realizan las pruebas.
54
Informe de Pruebas del SEC con REST y JSON
Objetos a probar:
ConsultasJpa.war
Datos de prueba:
Cuadro 6 Datos de prueba del SEC
N° Json de Request Json de response
1 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "6", "usuario": "PRUEBA", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "0", "mensajeRespuesta": "EXITO", "estado": "F", "respuestaConsulta": {"elementos": {"mielemento": [ { "id_persona": "1", "nombre": "Héctor", "apellido": "ortega", "fecha_nacimiento": "1990-01-27 00:00:00",
"fecha_nacimiento2": "1990-01-27 00:00:00.0", "sueldo": "20.24", "sueldo2": "12.56" } ]}}, "idHistorial": "530" }}
2 { "datosServicio": { "dataSource": "jdbc/saug1", "idServicio": "6", "usuario": "PRUEBA", "clave": "Abc123",
"parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:No se encontro el jndijdbc/saug1", "estado": "E",
"respuestaConsulta": "", "idHistorial": "531" }}
55
{ "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "7", "usuario": "PRUEBA", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" }
}
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Servicio no existente o Inactivo", "estado": "E", "respuestaConsulta": "", "idHistorial": "536" }}
4 {
"datosServicio": { "dataSource": "jdbc/saug", "idServicio": "8", "usuario": "PRUEBA", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } }
{"respuestaServicio": {
"codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Servicio no existente o Inactivo", "estado": "E", "respuestaConsulta": "", "idHistorial": "550" }}
5 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "789654",
"usuario": "PRUEBA", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Servicio no existente o
Inactivo", "estado": "E", "respuestaConsulta": "", "idHistorial": "551" }}
6 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "6", "usuario": "PRUEBAg", "clave": "Abc123",
"parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Error al validar las credenciales o Servicio no disponible", "estado": "E",
"respuestaConsulta": "", "idHistorial": "533" }}
7 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "6", "usuario": "PRUEBA",
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Error al validar las credenciales o Servicio no disponible",
56
"clave": "INcorecta", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
"estado": "E", "respuestaConsulta": "", "idHistorial": "561" }}
8 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "9",
"usuario": "PRUEBAINACTIVO", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Error al validar las
credenciales o Servicio no disponible", "estado": "E", "respuestaConsulta": "", "idHistorial": "567" }}
9 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "9", "usuario":
"PRUEBAFECHA", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Error al validar las credenciales o Servicio no disponible",
"estado": "E", "respuestaConsulta": "", "idHistorial": "598" }}
10 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "10", "usuario": "USERROLINACTIVO",
"clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en Servicio Web:Error al validar las credenciales o Servicio no disponible", "estado": "E",
"respuestaConsulta": "", "idHistorial": "641" }}
11 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "11",
{"respuestaServicio": { "codigoRespuesta": "99",
57
"usuario": "USERROLRANGO", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
"mensajeRespuesta": "Error en Servicio Web:Error al validar las credenciales o Servicio no disponible", "estado": "E", "respuestaConsulta": "", "idHistorial": "644" }}
12 { "datosServicio": {
"dataSource": "jdbc/saug", "idServicio": "12", "usuario": "abc", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "99",
"mensajeRespuesta": "Error en Servicio Web:The SELECT permission was denied on the object 'nombres_complestos', database 'saug', schema 'dbo'.", "estado": "E", "respuestaConsulta": "", "idHistorial": "650" }}
13 { "datosServicio": { "dataSource": "jdbc/saug", "idServicio": "13",
"usuario": "", "clave": "", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
{"respuestaServicio": { "codigoRespuesta": "0", "mensajeRespuesta": "EXITO", "estado": "F",
"respuestaConsulta": {"pruebas": {"prueb": [ { "id_persona": "1", "nombre": "Héctor", "apellido": "ortega", "fecha_nacimiento": "1990-01-27 00:00:00", "fecha_nacimiento2": "1990-01-27 00:00:00.0", "sueldo": "20.24", "sueldo2": "12.56"
} ]}}, "idHistorial": "654"}}
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
58
Casos de pruebas:
Cuadro 7 Casos de prueba del SEC
N° Caso de
Prueba Descripción
Del Caso Resultado
Esperado Observac
ión 1 Ejecución de
Una consulta
Se configura un
servicio y su respectiva consulta en las tablas sec_servicios, sec_consultas, y se la asocia a un usuario
Se retornan los
resultados de la consulta configurada.
Funciona
de manera correcta
2 Datasource No existente
En el json de request en el par jndi se envía un datasource que no está configurado en el servidor de aplicaciones jboss
Se retorna el mensaje: Error en Servicio Web:No se encontró el jndi YYYY
Funciona de manera correcta
3 Servicio con fechas fuera de rango
Se configura un nuevo servicio y en los campos fecha_desde y fecha_hasta se establece rangos que
no sean mayores a la fecha actual o menores a la fecha actual respectivamente.
Se retorna el mensaje: Error en Servicio Web:Servicio no existente o
Inactivo
Funciona de manera correcta
4 Servicio Inactivo
Se configura un nuevo servicio y en el campo estado se pone el valor de I
Se retorna el mensaje: Error en Servicio Web:Servicio no existente o Inactivo
Funciona de manera correcta
5 Servicio No existente
En el json de request se envía un identificador de servicio que no se encuentra configurado en la tabla sec_servicio
Se retorna el mensaje: Error en Servicio Web:Servicio no existente o Inactivo
Funciona de manera correcta
6 Usuario Incorrecto
En el json de request en el para usuario, se
envía un usuario que no está configurado.
Se retorna el mensaje Error en
Servicio Web:Error al validar las credenciales o Servicio no disponible
Funciona de manera
correcta
7 Clave Incorrecta
En el json de request en el para usuario, se
Se retorna el mensaje Error en Servicio
Funciona de manera correcta
59
envía un usuario que no está configurado.
Web:Error al validar las credenciales o Servicio no disponible
8 Usuario Inactivo
En el json del request se especifica un usuario que tiene estado inactivo en la tabla sec_usuarios
Se retorna el mensaje Error en Servicio Web:Error al validar las credenciales o
Servicio no disponible
Funciona de manera correcta
9 Usuario con fechas fuera de rango
En el json del request se especifica un usuario que tenga los campos fecha_desde y fecha_hasta con un rango en el que no se encuentre la fecha actual
Se retorna el mensaje Error en Servicio Web:Error al validar las credenciales o Servicio no disponible
Funciona de manera correcta
10 Rol asociado inactivo
Se crea un nuevo servicio, con un nuevo usuario, pero el rol asociado tiene estado de inactivo en la tabla sec_servicios_roles
Se retorna el mensaje Error en Servicio Web:Error al validar las credenciales o
Servicio no disponible
Funciona de manera correcta
11 Rol asociado con fechas fuera de rango
Se crea un nuevo servicio con un nuevo usuario, pero el rol asociado tiene definidos rangos en los campos fecha_desde y fecha_hasta en la tabla sec_servicios_roles donde se encuentra la fecha actual.
Se retorna el mensaje Error en Servicio Web:Error al validar las credenciales o Servicio no disponible
Funciona de manera correcta
12 Servicio sin permisos
Se configura una nueva consulta y un nuevo servicio pero las tablas sobre la que se realiza
la consulta no es vista por el usuario del servicio web por falta de grant
Se retorna el mensaje The SELECT permission was
denied on the object YYYYYYYYY
Funciona de manera correcta
13 Servicio sin autenticación
Se configura un nuevo servicio y consulta, en el campo autenticación
Se ejecuta consulta
Funciona de manera correcta
60
de la tabla sec_servicios se establece con valor N
configurada con normalidad
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Informe de Pruebas del SEP con REST y JSON
Objetos a probar:
ObjetosJPA.war
Datos de prueba: Cuadro 8 Datos de pruebas del SEP
N° Json de Request Json de response
1 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "17", "usuario": "MiUserPrueba", "clave": "Abc123", "parametrosObjeto": { "parametros": {
"nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" } } } } }
{"respuestaServicio": { "codigoRespuesta": "0", "mensajeRespuesta": "EXITO", "estado": "F", "resultadoObjeto": { "codigo_salida": "0", "mensaje_salida": "Exito", "px_xml_salida": {"raiz": {"elemnto": "valor del elemento"}}
}, "idHistorico": "249456" }}
2 { "datosServicio": { "dataSource":
"jdbc/saugProcghjv", "idServicio": "17", "usuario": "MiUserPrueba", "clave": "Abc123",
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en
ServicioWeb: ec.edu.ug.recursos.UserException: Error al momento de acceder por JDNIjdbc/saugProcghjv",
61
"parametrosObjeto": { "parametros": { "nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" }
} } } } }
"estado": "E", "resultadoObjeto": "", "idHistorico": "249460" }}
3 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "23", "usuario": "", "clave": "", "parametrosObjeto": { "parametros": {
"nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" } } } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: Servicio no existente o Inactivo", "estado": "E", "resultadoObjeto": "", "idHistorico": "249485"
}}
4 { "datosServicio": {
"dataSource": "jdbc/saugProc", "idServicio": "24", "usuario": "", "clave": "", "parametrosObjeto": { "parametros": { "nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": {
{"respuestaServicio": { "codigoRespuesta": "99",
"mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: Servicio no existente o Inactivo", "estado": "E", "resultadoObjeto": "", "idHistorico": "249486" }}
62
"raiz": { "elemnto": "valor del elemento" } } } } } }
5 { "datosServicio": { "dataSource": "jdbc/saugProc",
"idServicio": "2445897", "usuario": "", "clave": "", "parametrosObjeto": { "parametros": { "nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" }
} } } } } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb:
ec.edu.ug.recursos.UserException: Servicio no existente o Inactivo", "estado": "E", "resultadoObjeto": "", "idHistorico": "249487" }}
6 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "17", "usuario": "UsuarioNoExiste",
"clave": "Abc123", "parametrosObjeto": { "parametros": { "nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: Error al validar las credenciales o Servicio no disponible",
"estado": "E", "resultadoObjeto": "", "idHistorico": "249491" }}
63
} }
7 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "17", "usuario": "MiUserPrueba", "clave": "Abc12hg3", "parametrosObjeto": { "parametros": {
"nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" } } } } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: Error al validar las credenciales o Servicio no disponible", "estado": "E", "resultadoObjeto": "",
"idHistorico": "249492" }}
8 { "datosServicio": {
"dataSource": "jdbc/saugProc", "idServicio": "25", "usuario": "UsuarioInactivo", "clave": "Abc123", "parametrosObjeto": { "parametros": { "nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": {
"raiz": { "elemnto": "valor del elemento" } } } } } }
{"respuestaServicio": { "codigoRespuesta": "99",
"mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: Error al validar las credenciales o Servicio no disponible", "estado": "E", "resultadoObjeto": "", "idHistorico": "249504" }}
9 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "25",
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException:
64
"usuario": "UsuarioFechaFueraRango", "clave": "Abc123", "parametrosObjeto": { "parametros": { "nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio",
"pc_xml": { "raiz": { "elemnto": "valor del elemento" } } } } } }
Error al validar las credenciales o Servicio no disponible", "estado": "E", "resultadoObjeto": "", "idHistorico": "249512" }}
10 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "25", "usuario":
"UsuarioRolAsociadoInactivo", "clave": "Abc123", "parametrosObjeto": { "parametros": { "nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" } }
} } } }
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: Error al validar las credenciales o
Servicio no disponible", "estado": "E", "resultadoObjeto": "", "idHistorico": "249515" }}
11 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "25", "usuario": "UsuarioRolAsociadoFuiraDeRango", "clave": "Abc123", "parametrosObjeto": { "parametros": {
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: Error al validar las credenciales o Servicio no disponible", "estado": "E", "resultadoObjeto": "", "idHistorico": "249518" }}
65
"nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" } } }
} } }
12 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "26", "usuario": "UsuarioRolAsociadoFuiraDeRango", "clave": "Abc123", "parametrosObjeto": { "parametros": {
"nombre_servicio": "primer servicio", "descripcion_servicio": "este es el primer servicio", "pc_xml": { "raiz": { "elemnto": "valor del elemento" } } } } }}
{"respuestaServicio": { "codigoRespuesta": "99", "mensajeRespuesta": "Error en ServicioWeb: ec.edu.ug.recursos.UserException: El parámetro nombre_servicio no estaba definido para el procedimiento almacenado dummy_prb_xml_nuevo.", "estado": "E", "resultadoObjeto": "",
"idHistorico": "249523" }}
13 { "datosServicio": { "dataSource": "jdbc/saugProc", "idServicio": "22", "usuario": "",
"clave": "", "parametrosObjeto": { "parametros": { "nombre_servicio": "abc", "descripcion_servicio": "23:12:12" } } }}
{"respuestaServicio": { "codigoRespuesta": "0", "mensajeRespuesta": "EXITO", "estado": "F", "resultadoObjeto": {"timepo_salida": "23:12:12"},
"idHistorico": "249526" }}
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
66
Casos de prueba:
Cuadro 9 Casos de prueba del SEP
N° Caso de Prueba
Descripción Del Caso
Resultado Esperado
Observación
1 Ejecución de Procedimiento almacenado
Se configura un servicio y su respectivo procedimiento en las tablas sep_servicios,
sep_objetos_bd, y se lo asocia a un usuario valido.
Se retornan los resultados del procedimiento configurado
Funciona de manera correcta
2 Datasource No existente
En el json de request en el par jndi se envía un datasource que no está configurado en el servidor de aplicaciones jboss
Se retorna el mensaje: Error al momento de acceder por JDNI YYYYY
Funciona de manera correcta
3 Servicio con fechas fuera de rango
Se configura un nuevo servicio y en los campos fecha_desde y fecha_hasta de la tabla sep_servicios se establece rangos que no sean mayores a la
fecha actual o menores a la fecha actual respectivamente.
Se retorna el mensaje: Error en Servicio Web:Servicio no existente o Inactivo
Funciona de manera correcta
4 Servicio Inactivo
Se configura un nuevo servicio y en el campo estado se pone el valor de I
Se retorna el mensaje: Error en Servicio Web:Servicio no existente o Inactivo
Funciona de manera correcta
5 Servicio No existente
En el json de request se envía un identificador de servicio que no se encuentra configurado en la tabla sep_servicios
Se retorna el mensaje: Error en Servicio Web:Servicio no existente o Inactivo
Funciona de manera correcta
6 Usuario Incorrecto
En el json de request en el par usuario, se envía un usuario que
no está configurado.
Se retorna el mensaje Error en Servicio
Web:Error al validar las credenciales o
Funciona de manera correcta
67
Servicio no disponible
7 Clave Incorrecta
En el json de request en el par usuario, se envía un usuario que no está configurado.
Se retorna el mensaje Error en Servicio Web:Error al validar las credenciales o Servicio no disponible
Funciona de manera correcta
8 Usuario Inactivo
En el json del request se especifica un usuario que tiene
estado inactivo en la tabla sep_usuarios.
Se retorna el mensaje Error en Servicio
Web:Error al validar las credenciales o Servicio no disponible
Funciona de manera correcta
9 Usuario con fechas fuera de rango
En el json del request se especifica un usuario que tenga los campos fecha_desde y fecha_hasta, en la tabla sep_usuarios, con un rango en el que no se encuentre la fecha actual.
Se retorna el mensaje Error en Servicio Web:Error al validar las credenciales o Servicio no disponible.
Funciona de manera correcta
10 Rol asociado inactivo
Se crea un nuevo servicio, con un nuevo
usuario, pero el rol asociado tiene estado de inactivo en la tabla sep_servicios_roles
Se retorna el mensaje Error en
Servicio Web:Error al validar las credenciales o Servicio no disponible
Funciona de manera
correcta
11 Rol asociado con fechas fuera de rango
Se crea un nuevo servicio con un nuevo usuario, pero el rol asociado tiene definidos rangos en los campos fecha_desde y fecha_hasta en la tabla sep_servicios_roles
donde se encuentra la fecha actual.
Se retorna el mensaje Error en Servicio Web:Error al validar las credenciales o Servicio no disponible
Funciona de manera correcta
12 Servicio sin permisos
Se configura un nuevo procedimiento y un nuevo servicio pero el procedimiento que se debe ejecutar no es
Se retorna el mensaje El parámetro YYYYYYYY no estaba definido
Funciona de manera correcta
68
visto por el usuario del servicio web por falta de grant
para el procedimiento almacenado ZZZZZ
13 Servicio sin autenticación
Se configura un nuevo servicio y procedimiento, en el campo autenticación de la tabla sep_servicios se establece con valor N
Se ejecuta el procedimiento configurado con normalidad
Funciona de manera correcta
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
69
Encuestas
A continuación se detalla el resultado de las encuestas realizadas:
Pregunta Número 1:
¿Cuántos dispositivos móviles posee (smartphones, tablets)?
Gráfico 33 Resultados de la pregunta 1
Elaborado por: Héctor Ortega
Fuente: Encuestas del proyecto en www.es.surveymonkey.com
Análisis:
El 82,14% de los encuestados tiene al menos un dispositivo móvil mientras que el
18,86% restante posee dos o más, esto nos da una muestra de la tendencia del
uso del mismo y debido a ello cuando se desarrolle un sistema existe una alta
probabilidad de que se elabore una versión del mismo para dispositivos móviles.
70
Pregunta Número 2:
¿Qué tipo de sistema operativo posee su dispositivo móvil?
Gráfico 34 Resultados de la pregunta 2
Elaborado por: Héctor Ortega
Fuente: Encuestas del proyecto en www.es.surveymonkey.com
Análisis:
El 92,86% de las personas posee dispositivos móviles con sistema operativo
android, esto nos demuestra que android sería la plataforma con mayor prioridad
al momento de elaborar un desarrollo de un sistema para dispositivos móviles
71
Pregunta Número 3:
¿Considera usted que es importante que una aplicación tenga una capa que le
permita comunicarse con los dispositivos móviles?
Gráfico 35 Resultados de la pregunta 3
Elaborado por: Héctor Ortega
Fuente: Encuestas del proyecto en www.es.surveymonkey.com
Análisis:
Podemos notar que el debido al auge de los dispositivos móviles el 100% de los
encuestados considera importante que aplicación tenga una capa de
comunicación con estos dispositivos.
72
Pregunta Número 4:
¿Cómo calificaría el funcionamiento de la capa media de servicios desplegada en
el ambiente de producción?
Gráfico 36 Resultados de la pregunta 4
Elaborado por: Héctor Ortega
Fuente: Encuestas del proyecto en www.es.surveymonkey.com
Análisis:
El 53,57 % de los encuestados piensa que el funcionamiento de los servicios en
el ambiente de producción fue bueno, mientras que el 39,29% considera que fue
excelente, esto demuestra que la capa de servicios en el ambiente de producción
funciono de manera correcta.
73
Pregunta Número 5:
¿Cómo calificaría el funcionamiento de la capa media de servicios desplegada
en el ambiente de desarrollo?
Gráfico 37 Resultados de la pregunta 5
Elaborado por: Héctor Ortega
Fuente: Encuestas del proyecto en www.es.surveymonkey.com
Análisis:
El 53,57% de los encuestados considera que el funcionamiento de los servicios
en el ambiente de desarrollo fue bueno, mientras que 39,29%, considera que fue
excelente esto demuestra que la capa de servicios en el ambiente de desarrollo
funciono de manera correcta.
74
Pregunta Número 6:
¿Cree usted que se debe tener un sistema de monitoreo que permita conocer el
comportamiento y el estado de la capa de servicios para verificar si existen
problemas?
Gráfico 38 Resultados de la pregunta 6
Elaborado por: Héctor Ortega
Fuente: Encuestas del proyecto en www.es.surveymonkey.com
Análisis:
El 92,86% de las personas encuestadas considera que se debe tener un
componente de monitoreo para verificar problemas, esto evidencia claramente lo
importante que es la herramienta al momento de examinar la capa de servicios.
75
Pregunta Número 7:
¿Considera usted que tener un tablero (dashboard) con gráficos de barra o pastel
sobre los errores y éxitos de transacciones puede ayudar a un área de producción
en la administración de la capa media de servicios?
Gráfico 39 Resultados de la pregunta 7
Elaborado por: Héctor Ortega
Fuente: Encuestas del proyecto en www.es.surveymonkey.com
Análisis:
El 71,43% de las personas encuestadas están totalmente de acuerdo en que un
tablero puede ayudar en la administración de la capa de servicios mientras que
el 3,7% está en desacuerdo, esto nos demuestra que este tipo de herramienta va
a tener poca resistencia al cambio y puede ser bien explotada al momento de
administrar la capa de servicios.
76
CAPÍTULO IV
Criterios de aceptación del producto o servicio
Como política de aceptación del proyecto se deben cumplir los seis sprint
Cuadro 10 Nivel de cumplimiento de sprints
Sprint Actividades NIVEL DE
CUMPLIMENTO
Análisis, Diseño y Desarrollo del SEP y SEC versión JDBC
100% 1
Análisis, Diseño y Desarrollo SEP y SEC versión JPA Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los integrantes de la capa visual
100% 2
Agregar validaciones de servicios, encriptación Instalación y pruebas de monitoreo con logstash y elastisearch y kibana Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los integrantes
de la capa visual
100% 3
Mejoras con sonar, Generación de gráficos de pastel y barra. Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los
integrantes de la capa visual
100% 4
Elaboración documentación, manual de usuario
y actualización de manual de diseño. Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los integrantes de la capa visual
100% 5
6
Documento de Diseño y Desarrollo de la capa REST/JSON del SEP y SEC. Soporte de configuraciones a los integrantes de la capa de datos y consumos de servicios a los integrantes de la capa visual
100%
Elaboración: Héctor Ortega
Fuente: Datos del proyecto
77
Se certifica que una vez terminada la etapa de verificación y pruebas finales del
proyecto ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK
DE TRABAJO PARA PROYECTOS DE TITULACIÓN APLICANDO
METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE”. ENFOCADO A
LA ARQUITECTURA DE CAPA DE NEGOCIO DESARROLLANDO SERVICIOS
WEB DESTINADOS A PROCESAR REQUERIMIENTOS DE DISPOSITIVOS
MÓVILES Y PROPORCIONANDO UNA APLICACIÓN DE MONITOREO DE
BITÁCORAS, los elementos verificados no contienen errores
Cuadro 11 Firmas de aceptación de los sprints
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Responsables
Firma
Scrum Master Capa Visual
Sr. Juan Carlos Tamayo
Scrum Master Capa de Datos
Cinthya Rivadeneira
Project Mananger
Srta. Iliana Vera
Tester
Srta Anabell Tingo
78
Ambiente de Ejecución de las pruebas
Cuadro 12 Versiones de programas para realizar pruebas a los servicios
Java S. E. Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) Client VM (build 24.79-b02, mixed mode, sharing)
Java E. E. Versión 6
Servidor de Aplicaciones: jboss-as-7.1.1.Final
Pruebas Funcionales SoapUI-5.2.0
Pruebas de Rendimiento SoapUI-5.2.0, apache-jmeter-2.13
Calidad de Código Java sonarqube-5.1.2 y sonar-runner-dist-2.4
IDE NetBeans 8.0.2
Programa de Virtualización
Versión 5.0.10 r104061
Base de datos Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Developer Edition
Elaboración: Héctor Ortega
Fuente: Datos del proyecto
Cuadro 13 Características de la máquina virtual
Memoria RAM 3072
Memoria de Video 16 MB
Disco Duro 20 GB
Elaboración: Héctor Ortega
Fuente: Datos del proyecto
Criterios de rendimiento del SEC Detalle de la configuración con la que se ejecutan las pruebas
Herramienta: LoadTestSoapUi Hilos: 10 Test Delay: 1000 ms Estrategia: Simple Límite: 60 segundos Ramdom: 0.5 Herramienta: Jmeter Hilos: 100 Periodo de subida en segundos: 1
79
Cuadro 14 Criterios de rendimiento del SEC
Escenario Criterio Rango
Ejecución de una
consulta
Tiempo mínimo de
respuesta
53 ms
Tiempo máximo de
respuesta
500 ms
Tiempo promedio de
respuesta
300 ms
Número Total de
Ejecuciones
756
Transacciones por
segundo
12.89
Número de Errores 0
Porcentaje de request
fallidos
0
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Gráfico 40 Resultados del rendimiento del SEC en jmeter
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
80
Criterios de calidad de código del SEC
Herramienta: sonarqube
Uso de reglas de programación en java
Criterio: Obtener menos de 15 evidencias luego de análisis realizado por
sonarqube.
Cuadro 15 Evindecias del SEC generadas por sonarqube
Proyecto a analizar Tipos de Evidencias Cantidad
SEC blocker 0
critical 1
major 6
minor 0
info 0
Total de evidencias 7
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Gráfico 41 Evidencias en el SEC generadas luego del análisis del sonarqube
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
81
Criterios de rendimiento del SEP
Detalle de la configuración con la que se ejecutan las pruebas Hilos: 10 Test Delay: 1000 ms Estrategia: Simple Límite: 60 segundos Ramdom: 0.5 Herramienta: LoadTestSoapUi
Herramienta: Jmeter Hilos: 100 Periodo de subida en segundos: 1
Cuadro 16 Criterios de rendimientos SEP
Escenario Criterio Rango
Ejecución de un
procedimiento
Tiempo mínimo de
respuesta
20 ms
Tiempo máximo de
respuesta
700 ms
Tiempo promedio de
respuesta
400 ms
Número Total de
Ejecuciones
742
Transacciones por
segundo
12.34
Número de Errores 0
Porcentaje de request
fallidos
0
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
82
Gráfico 42 Resultados del rendimiento de SEP en jmeter
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Criterios de calidad de código del SEP Herramienta: sonarqube
Obtener menos de 15 evidencias luego de análisis realizado por sonarqube.
Cuadro 17 Evindecias del SEP generadas por sonarqube
Proyecto a analizar Tipos de Evidencias Cantidad
SEP Blocker 0
Critical 0
Major 8
Minor 0
Info 2
Total de evidencias 10
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
83
Gráfico 43 Evidencias en el SEP generadas luego del análisis del sonarqube
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Conclusiones y Recomendaciones
Conclusiones El desarrollo de los servicios web SEC y SEP con tecnologías REST y JSON es
de gran aporte ya que nos provee una capa media que permite la integración con
aplicaciones desarrolladas para dispositivos móviles.
La aplicación de monitoreo con ELK es una herramienta clave cuando se realiza
una revisión de inconvenientes o anomalías que se presentan en los servicios SEP
y SEC. Es de gran ayuda para centralizar la información de las bitácoras cuando
se tiene en más de un servidor desplegado los servicios.
La aplicación de monitoreo a través de los gráficos de pastel, barra y de línea
permite conocer la cantidad de transacciones de éxito y error de los servicios y de
esta manera saber el estado en que se encuentran.
Usar la metodología SCRUM permite al equipo enfocarse en las actividades más
importantes para entregar la capa de servicios en el tiempo esperado y que los
integrantes de la capa visual y de datos puedan utilizarla e integrar sus respectivos
desarrollos.
84
Recomendaciones Si se necesita proteger los datos que se envíen a los servicios web se recomienda
utilizar protocolo https y comprar un certificado ssl para poder instarlo en el
servidor de aplicaciones donde se desplieguen los servicio conocidos como SEC
y SEP.
Para que la configuración y modificación de los servicios del SEC y SEP sea más
amigable para el usuario se debería crear dos aplicaciones web con páginas que
permitan crear, actualizar, consultas y eliminar los registros de las tablas. Estas
aplicaciones deberían tener pruebas automatizadas un programa que nos puede
ayudar a cumplir con este objetivo es Selenium.
Para mejoras en el rendimiento de los servicios se pueden explotar las tecnologías
que nos ofrece java empresarial conocidas como el servicio de mensajería de Java
para la inserción de históricos de forma asincrónica.
Desarrollar un despachador para que permita procesamiento asincrónico de las
transacciones.
Cuando se realicen los despliegues de los servicios en un nuevo ambiente ya sea
en desarrollo o producción en el servidor de aplicaciones verificar que se
encuentre habilitada la generación del log de acceso ya que este log posee
información importante que nos puede ayudar en la revisión de inconvenientes.
Para realizar las futuras actualizaciones de versiones del SEC y SEP se deberían
implementar un balanceador de carga, esto con el objetivo de poder realizar un
pase productivo sin generar afectaciones en las transacciones duran la ejecución
del pase, programa que nos puede ayudar es nginx.
Seguir utilizando la metodología scrum en las siguientes fases del proyecto para
poder dividir y priorizar las tareas.
85
Para mejorar el rendimiento de las consultas de configuraciones utilizar cache en
los servicios, para que puedan tener en memoria la información y no siempre
tengan que ir a la base de datos. Uno de los puntos a considerar cuando se utiliza
cache es la memoria del servidor ya que toda la información de configuraciones
se almacenaría en la memoria RAM. Utilizar tecnologías JMX, Singleton Bean,
para el manejo de carga de propiedades y administrar la actualización de las
propiedades bajo demanda.
Los servicios SEC Y SEP permiten ahorrar tiempos de desarrollo por tal motivo es
recomendable utilizarlos en instituciones o empresas que deseen proveer una
capa de servicios para un sistema legado o nuevo.
86
Bibliografía
Acharya, S. (2014). 2015. Birmingham: Packt Publishing Ltd.
Arum, G. (2015). Java EE 6 Pocket Guide. Sebastopol: O'Reilly Media.
Beighley, L. (2007). Head First SQL. Sebastopol: O’Reilly Media.
Bryan Bashan, K. S. (2008). Head First Servlets and JSP. Sebastopol: O' Reilly.
Eslava. (2013). El nuevo PHP. Conceptos avanzados. España: Bubok Publishing
S. L.
Gupta, Y. (2015). Kibana Essentials. Birmingham: Packt Publishing Ltd.
Guy Harrison, S. F. (2006). MySQL Stored Procedure Programming. Sebastopol:
O'Reilly Media.
Halili, E. (2008). Apache Jmeter. Birmingham: Packt Publishing Ltd.
Haviv, A. (2014). MEAN Web Development. Birmingham: Packt Publishing Ltd.
JSON. (s.f.). Recuperado el 09 de Noviembre de 2015, de http://www.json.org/
kankanamge, C. (2012). Web Service Testing with soapUI. Birmingham: Pack
Publishing Ltd.
Khedher, O. (2015). Mastering Open Stack. Birmingham: Packt Publishing Ltd.
Kreps, J. (2015). I love logs. Sebastopol: O'Reilly.
Marchioni, F. (2011). Jboss As 7 Configuration Deployment and Administration.
Birmingham: Packt Publishing.
Masoud Kalali, B. M. (2013). Developing RESTful Services with JAX-RS 2.0,
WebSockets and JSON . Birmingham: Packt Publishing.
mastertheboss. (s.f.). Recuperado el 11 de Noviembre de 2015, de
http://www.mastertheboss.com/jboss-server/jboss-configuration/what-is-
jboss
Minera, F. (2011). PHP Avanzado. USERS, 400.
Morrison, L. B. (2009). Head First PHP & MySQL. Sebastopol: O’Reilly Media.
Netbeans. (s.f.). Recuperado el 11 de Noviembre de 2015, de
https://netbeans.org/downloads/
Oracle. (s.f.). Oracle Java Documentation. Recuperado el 09 de Noviembre de
2015, de
https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html
Paro, A. (2015). ElasticSearch Cookbook Second Edition. Birmingham: Packt
Publishing Ltd.
Real Academica de la Lengua. (s.f.). Recuperado el 15 de Noviembre de 2015, de
http://lema.rae.es/dpd/srv/search?id=79HjiY8E1D68S0oGfe
Rubin, K. (2013). Essential Scrum. Michigan: Pearson Education.
Singh, P. K. (2011). Introduction to Computer Networks. New Delhi: V. K. (India
Enterprise).
Tong, C. G. (2015). ElasticSearch: The Definitive Guide. Sebastopol: O’Reilly
Media, Inc.
Turnbull, J. (2013). The logstash book.
w3c. (s.f.). Recuperado el 15 de noviembre de 2015, de
http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb
Wielenga, G. (2015). Beginning Netbeans IDE: For Java Developers. New York:
Apress Media.
87
ANEXOS
Captura de pantalla del Cronograma del proyecto
88
Encuesta Realizada
Encuesta sobre la capa media de servicios java y componente de monitoreo
1. ¿Cuántos dispositivos móviles posee (smartphones, tablets)?
Ninguno
Uno
Dos o más
2. ¿Qué tipo de sistema operativo posee su dispositivo móvil?
Android
Windows Phone
iOS
Otros
3. ¿Considera usted que es importante que una aplicación tenga una capa que le permita comunicarse con los dispositivos móviles?
Si
No
4. ¿Cómo calificaría el funcionamiento de la capa media de servicios desplegada en el ambiente de desarrollo?
Excelente
Bueno
Regular
Malo
Muy malo
5. ¿Cómo calificaría el funcionamiento de la capa media de servicios desplegada en el ambiente de producción?
Excelente
Bueno
Regular
89
Malo
Muy malo
6. ¿Cree usted que se debe tener un sistema monitoreo permitirá conocer comportamiento y el estado de la capa de servicios para verificar si existen problemas?
Si
No
7. ¿Considera usted que tener un tablero (dashboard) con gráficos de barra o pastel sobre los errores y éxitos de transacciones puede ayudar a un área de producción en la administración de la capa media de servicios?
Totalmente de acuerdo
De acuerdo
En desacuerdo
Totalmente en desacuerdo
90
Sección del manual de usuario del SEC
Pasos para realizar el consumo del SEC con REST/JSON
Abrir la aplicación soapui
Escoger la opción Rest
Gráfico 1 Especificar REST para el SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Aparecerá la venta New Rest Project, en la caja de texto URI colocar la ruta del
servicio web
http://192.168.100.11:9080/consultasJPA/rest/servicioConsultas
Gráfico 2 URL del SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
91
Luego se nos mostrara la ventana de request, aquí seleccionamos en la opción
Method: POST, en la opción Media Type especificamos: application/json.
Gráfico 3 Especificar post y json para el SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
En el área de texto especificamos el json que del servicio que deseamos enviar:
{ "datosServicio": { "dataSource": "jdbc/saug",
"idServicio": "6", "usuario": "PRUEBA", "clave": "Abc123", "parametrosConsulta": { "parametros": { "nombre": "Héctor" } } } }
El json consta de los siguientes elementos:
dataSource.- Es el jndi que identifica a la base de datos donde se ejecutara
la consulta
idServicio.- Es el identificador del servicio que deseamos ejecutar
usuario.- Es el usuario del servicio.
clave.- Es la clave del usuario del servicio
92
parametrosConsultas.- Dentro de este elemento se especificara el un arreglo
de parámetros de entrada para el servicio que se desea ejecutar.
Una vez especificado el json de request, procederemos a presionar el botón
play, y el resultado la ejecución del servicio podremos observarlo en el área de
texto del response.
{"respuestaServicio": {
"codigoRespuesta": "0", "mensajeRespuesta": "EXITO", "estado": "F", "respuestaConsulta": {"elementos": {"mielemento": [ { "id_persona": "1", "nombre": "Héctor", "apellido": "ortega", "fecha_nacimiento": "1990-01-27 00:00:00", "fecha_nacimiento2": "1990-01-27 00:00:00.0", "sueldo": "20.24",
"sueldo2": "12.56" }, { "id_persona": "2", "nombre": "Héctor ", "apellido": "gonzalez", "fecha_nacimiento": "2012-01-27 00:00:00", "fecha_nacimiento2": "", "sueldo": "5000.24", "sueldo2": "12.30" } ]}},
"idHistorial": "528" }}
La respuesta JSON tendrá los siguientes elementos:
codigoRespuesta.- Es el código que indica si la respuesta fue exitosa o
no.
mensajeRespuesta: Es el mensaje que indica ÉXITO si es que no se
presentó ningún inconveniente y caso contrario el detalle del error que se
ha generado.
93
Estado: Devolverá el valor F si es que no se generó algún inconveniente
caso contrario tendrá valor A.
respuestaConsulta: Contiene los registro que retorno la consulta
ejecutada.
idHistorial: Retorna el id que representa a la transacción en la tabla
histórica.
Gráfico 4 Request y Response del SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
94
Sección del manual de usuario del SEP
Pasos para realizar el consumo del SEP con REST/JSON
Abrir la aplicación soapui
Escoger la opción Rest
Gráfico 5 Opción REST de soapui
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Aparecerá la venta New Rest Project, en la caja de texto URI colocar la ruta del
servicio web
http://192.168.100.11:9080/consultasJPA/rest/servicioConsultas
Gráfico 6 URL para nuevo proyecto REST
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
95
Luego se nos mostrará la ventana de request, aquí seleccionamos en la opción
Method: POST, en la opción Media Type especificamos: application/json.
Gráfico 7 Especificación DE POST y JSON del SEP
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
En el área de texto especificamos el JSON que del servicio que deseamos enviar:
{ "datosServicio": {
"dataSource": "jdbc/saugProc",
"idServicio": "17",
"usuario": "MiUserPrueba",
"clave": "Abc123",
"parametrosObjeto": {
"parametros": {
"nombre_servicio": "prueba ",
"descripcion_servicio": "prueba ",
"pc_xml": {
"raiz": { "elemento": "valor" } } } } }}
El JSON consta de los siguientes elementos:
dataSource.- Es el jndi que identifica a la base de datos donde se ejecutara la
el procedimiento almacenado
idServicio.- Es el identificador del servicio que deseamos ejecutar
96
usuario.- Es el usuario del servicio.
clave.- Es la clave del usuario del servicio
parametrosObjeto.- Dentro de este elemento se especificara el un arreglo de
parámetros de entrada para el servicio que se desea ejecutar.
Una vez especificado el JSON de request, procederemos a presionar el botón
play, y el resultado la ejecución del servicio podremos observarlo en el área de
texto del response.
{"respuestaServicio": {
"codigoRespuesta": "0",
"mensajeRespuesta": "EXITO",
"estado": "F",
"resultadoObjeto": {
"codigo_salida": "0",
"mensaje_salida": "Exito",
"px_xml_salida": {"raiz": {"elemento": "valor"}}
},
"idHistorico": "278784"
}}
La respuesta JSON tendrá los siguientes elementos:
codigoRespuesta.- Es el código que indica si la respuesta fue exitosa o no.
mensajeRespuesta: Es el mensaje que indica ÉXITO si es que no se
presentó ningún inconveniente y caso contrario el detalle del error que se
ha generado.
Estado: Devolverá el valor F si es que no se generó algún inconveniente
caso contrario tendrá valor A.
resultadoObjeto: Contiene los parámetros de salida del procedimiento
almacenado que se ejecutó.
idHistorial: Retorna el id que representa a la transacción en la tabla
histórica.
97
Gráfico 8 Request y Response del SEP
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
98
Sección del manual de usuario del Componente de
Monitoreo
Logstash
Instalación de logstash en servidor centos 6.5
1. Subir el archivo logstash-1.5.4-1.noarch.rpm a través de ftp en un directorio
en el servidor con centos por ejemplo /home/documentos/logstash
2. Conectarse a través del putty y ubicarse en el directorio donde se
encuentra el archivo logstash-1.5.4-1.noarch.rpm
3. Ejecutar el comando
4. sudo rpm -ivh logstash-forwarder-0.3.1-1.x86_64.rpm
Gráfico 9 Configuración del putty para acceder al servidor
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
99
5. Se creara la ruta: /etc/logstash. En donde debemos especificar la
configuración para lectura de archivo que deseamos que logstash ejecute
un ejemplo de nombre archivo es: conf.d
6. Iniciar el servicio de logstash a través del comando:
sudo service logstash start
7. Para verificar que logstash esté funcionando ejecutar el comando
sudo service logstash status
Gráfico 10 Verificación de estado de logstash
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
100
Instalación de logstash en Windows
1. Descomprimir el archivo logstash-1.5.4.zip en una ruta por ejemplo
C:\logstash\logstash-1.5.4
2. Para ejecutar logstash abrir una consola de línea de comandos cmd
3. Ir a la ruta donde se descomprimió los archivos por ejemplo:
C:\logstash\logstash-1.5.4\bin
4. Ejecutar el comando logstash.bat y enviar como parámetro el archivo de
configuración y especificación de la tablas que deseamos leer
logstash agent --config C:\libreria\conexionBaseProcedimiento.conf
Gráfico 11 Ejecución de logstash en Windows
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Archivos de configuración para logstash
Logstash necesita archivos de configuración para funcionar, los cuales debemos
crearlos en una ruta para mantener una organización como detallaremos a
continuación
1. Definir una ruta donde se guardaran los archivos
2. Crear el archivo de configuración para logstash por ejemplo
configuraciónProcedimiento.conf
3. Crear el archivo con la consulta que se ejecutará en la base por ejemplo
consultaProcedimiento.sql
101
4. Copiar el archivo jar con el driver de conexión de la base de datos por
ejemplo sqljbc4
Gráfico 12 Archivos e configuración para logstash
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
102
Configuración Logstash para leer datos.
Para el ejecutar logstash debemos crear un archivo de configuración en donde
especificaremos tres opciones
Input.- Es de donde obtendremos la información ya sea de una tabla o de
un archivo
Filter.- Permite aplicar transformaciones a los datos que se obtienen del
input
Output.- Define donde se guardaran los datos que se sacaron del input
Configuración para cargar datos desde una tabla en
logstash
Para obtener datos de una tabla el input debemos especificar la opción jdbc y los
siguientes parámetros
jdbc_connection_string.- Se debe especificar la url de conexión hacia la
base de datos que deseamos conectarnos
jdbc_user.- Usuario de base de datos
jdbc_password.- Clave del usuario
jdbc_driver_library.- Especificar la ruta donde se encuentra el jar que tiene
el driver de conexión jdbc para la base de datos que nos deseamos
conectar
jdbc_driver_class.- Detallar la Clase que es el driver de conexión
statement_filepath.- indicar la ruta donde del archivo que tiene la consulta
que se ejecutará en la base de datos
Schedule.- Indicar cada cuanto tiempo se debe ejecutar la consulta
En el filter especificamos la opción date y los siguientes parámetros:
Match.- permite especificar el campo fecha y sus formato en año mes día,
hora minuto y segundo
103
En el output detallamos la opción elasticsearch con los siguientes parámetros:
Protocol.- Especificar el protocolo http
Index.- Indicar el índice de elasticsearch donde se guardara la información
document_type.- Especificar el tipo de documento donde se guarda la
información
document_id.- Especificar el campo del registro que servirá como id dentro
del documento
host.- permite detallar la ip donde se encuentra instalado elasticsearch
Adicionalmente como parte del output podemos definir la opción stdout que nos
mostrara la información que se está procesando y nos permitirá hacer
depuraciones.
Ejemplo de configuración para leer una tabla con logstash
input { jdbc { jdbc_connection_string => "jdbc:sqlserver://192.168.100.10:1433;DatabaseName=saug"
jdbc_user => "consultasLogstash" jdbc_password =>"20stash15" jdbc_driver_library => "C:/libreria/sqljdbc4.jar" jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" statement_filepath => "C:/libreria/consulta2.sql" schedule => "* * * * *" }} filter{ date{ match => [ "fecha_ingreso_historial" , "yyyy-MM-dd HH:mm:ss Z" ]
}} output { stdout { codec => rubydebug } elasticsearch { protocol => http index => "consultas" document_type => "historial" document_id => "%{id_historial}" host => "192.168.100.17" }}
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
104
Configuración para cargar datos desde un archivo en logstash
Para obtener datos de una tabla el input debemos especificar la opción file y los
siguientes parámetros
path.- Se debe especificar la ruta del archivo que se dese leer
start_position.- detallar si se dese leer el archivo desde el principio
En el filter especificamos la grok con los siguientes parámetros:
patterns_dir.- ruta del archivo que tiene patrones
match.- Nombre del patrón que permitirá identificar las líneas del archivo
Otra opción de filter que debemos especificar es date con los siguientes
parametros:
Match .- Permite especificar el campo del archivo que tiene la fecha con la
que deseamos registrar la información
Locale.- permite especificar el idioma con el que se leerá la fecha.
En el output detallamos la opción elasticsearch con los siguientes parámetros:
Protocol.- Especificar el protocolo http
Index.- Indicar el índice de elasticsearch donde se guardara la información
document_type.- Especificar el tipo de documento donde se guarda la
informacion
document_id.- Especificar el campo del registro que servirá como id dentro
del documento
host.- permite detallar la ip donde se encuentra instalado elasticsearch
Adicionalmente como parte del output podemos definir la opción stdout que nos
mostrara la información que se está procesando y nos permitirá hacer
depuraciones.
105
Ejemplo de configuración para leer un archivo
input{ file{ path => "/opt/jboss-as-7.1.1.Final/standalone/log/access_log." start_position => "beginning" } } filter { grok { patterns_dir => "/opt/jboss-as-7.1.1.Final/Documentos/patrones" match => [ "message", "%{NEWAPACHELOG}"] } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
locale => "en" }} output{ stdout {codec=>rubydebug} elasticsearch { protocol => "http" host => "192.168.100.17:9200" index => "logapache" document_type => "access" }}
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
106
Elasticsearch
Instalación de elasticsearch en Windows como servicio
1. Descomprimir el archivo elasticsearch-1.6.0.zip en un directorio
denominado:
C:\elasticsearch\elasticsearch-1.6.0
2. Una vez descomprimido ejecutaremos el archivo
3. C:\elasticsearch\elasticsearch-1.6.0>service install
4. Una vez terminada la ejecución podremos ver a elasticsearch entre los
servicios del sistema
Gráfico 13 Servicio elasticserach
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
107
Pasos para configura un nuevo índice en elasticsearch
Para administrar de elasticsearch desde el navegador Firefox instalaremos el
plugin denominado rest client
Gráfico 14 Plugin Rest Client en firefox
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Una vez instalado el plugin rest client es
1. Especificar el nombre del índice que deseamos crear
2. Escoger el método POST
3. Detallar el mapeo del índice que vamos a crear
108
Gráfico 15 Especificación de Índices y mapeos elasticesearch
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
109
Kibana
Instalación de kibana como servicio en windows
Para instalar Kibana como servicio utilizaremos el programa denominado NSSM
(The Non Sucking Service Manager).
Descomprimir el archivo kibana-4.1.2-windows.zip en la c:\kibana\kibana-4.1.2-
windows\
El archivo ejecutable nssm.exe lo debemos copiar en la carpeta bin de Kibana
C:\kibana\kibana-4.1.2-windows\bin
Luego desde línea de comandos ejecutamos el archivo nssm.exe
Gráfico 16 Instalación de kibana como servicio
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Nos aparecerá una pantalla en donde debemos especificar los campos
Path: Especificar l ruta donde se encuentra el ejecutable de kibana por ejemplo
c:\kibana\kibana-4.1.2-windows\bin\kibana.bat
Startup directory: especificar la ruta raíz donde se encuentra instalado kibana
c:\kibana\kibana-4.1.2-windows\bin\
110
Gráfico 17 Editor de servicio
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
En la pestaña de dependencias debemos especificar el servicio que se debe ejecutar antes de iniciar Kibana, aquí escribiremos el nombre del servicio de elasticsearch
Gráfico 18 Dependencias de servicio
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
En la pestaña I/O, especificáremos lo nombres de los archivos de bitácora para la
entrada, salida y error del servicio
111
Gráfico 19 bitácoras de entrada, salida y error del servicio Kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
El último paso que debemos realizar es es presionar el botón edit service y se
creará nuestro servicio
Pasos para configurar un nuevo índice en Kibana
Abrir un navegador y escribir la url en la barra de direcciones:
http://192.168.100.17:5601
1. En la pantalla principal escoger la opción setting
2. Luego especificar el índice que deseamos agregar
3. Por último presionar el botón créate
112
Gráfico 20 Creación de nuevo Índice en kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Para verificar si el índice se creó de manera correcta debemos buscarlo en el
menú de índices de la opción settings
Gráfico 21 Índices creados en Kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
113
Pasos para Descubrir un índice
Acceder a la siguiente url través de un navegador
http://192.168.100.17:5601
Se abrirá la pantalla principal del programa kibana, en esta pantalla presionamos
la opción discover y luego escogemos el índice que deseamos revisar. En este
caso el índice logapache
Gráfico 22 Descubrir índices en kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Luego de escoger el índice logapache aparecerá un gráfico de barras que nos
mostrara la cantidad de peticiones que se han realizado hacia el servidor jboss y
que se encuentran registradas en la bitácora denominada access_log
114
Gráfico 23 Grafico y opciones para descubrir índice en kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
115
Pasos Para Crear una nueva visualización
Acceder a la siguiente URL través de un navegador
http://192.168.100.17:5601
En la pantalla presionar la opción visualizar y luego seleccionar el tipo de
visualización
Gráfico 24 Generar nueva visualización en kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
116
Escoger el índice del cual se desea generar la visualización en la opción
Gráfico 25 Selección de índice del cual se va a generar la visualización
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
En la opción de buckets presionar la el icono Split slices
Gráfico 26 Opciones split slices de una visualización
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
117
Una vez presionado la opción Split Slices debemos especificar:
1. El tiempo que desde el cual se va a tomar información para generar el
gráfico
2. Escoger el tipo de agregación que se va a utilizar
3. Especificar el campo sobre el cual se desea generar el gráfico
Gráfico 27 Visualización con opción de tiempo agregación y campo
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
118
Pasos para crear un nuevo dashboard
Acceder a la siguiente url a través de un navegador
http://192.168.100.17:5601
Luego de dar click en la opción Dashboard realizar lo siguiente:
1. Escoger la opción agregar la visualización
2. Seleccionar la visualización que deseamos agregar al nuevo tablero
3. Una vez seleccionada la visualización, aparece en el espacio de trabajo
del tablero
Gráfico 28 Creación de un Nuevo Dashboard
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
119
Pasos para guardar un DashBoard
Una vez creado el tablero si deseamos guardarlos debemos realizar los siguientes
pasos
1. Presionar el botón guardar
2. Especificar el nombre del nuevo tablero
3. Dar click en guardar
Gráfico 29 Guardar un dashboard
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
120
Pasos para ver un DashBoard
Ingresar a un navegador y escribir la siguiente ruta en la barra de direcciones:
http://192.168.100.17:5601
Dar click en la opción Dashboard
Gráfico 30 Opción de dashboard en kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
121
Dar click en la opción cargar dashboard guardados y escoger el tablero
que deseamos ver
Gráfico 31 Opción para abrir un dashboard
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Una vez selecciona nos aparecerá nuestro tablero con las visualizaciones que es
se encuentren configuradas
Gráfico 32 Dashboard abierto con sus distintas visualizaciones
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
122
Entre las visualizaciones configuradas tenemos:
Gráficos de barras para obtener el top de direcciones ip clientes del
servicio.
Gráfico de línea sobre el tiempo mínimo de respuesta de peticiones
realizadas contra el servidor de aplicaciones jboss.
Gráfico de pastel sobre el recurso (URL) más solicitada del servidor de
aplicaciones jboss
Gráfico 33 Gráfico de barras de top de direcciones ip de clientes
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
123
Gráfico 34 Gráfico de barras del tiempo mínimo de respuesta
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Gráfico 35 Gráfico de recursos más solicitudes en el servidor de aplicaciones
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
124
Si deseamos cambiar el rango de tiempo de dashboard, debemos presionar la
opción que tiene el icono de reloj en la parte superior derecha de la pantalla
de kibana.
Luego de presionar la opción de tiempo, podremos seleccionar un rango de tiempo
rápido, relativo o absoluto
Rápido.- Son tiempos predefinidos
Relativo.- Permite especificar un rango con una fecha desde hasta el
tiempo actual
Absoluto.- Permite especificar un rango con fecha desde y una fecha hasta
Gráfico 36 Tiempo rápido de kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Gráfico 37 Tiempo relativo de kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
125
Gráfico 38 Tiempo Absoluto de kibana
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES
ESTUDIO DE FACTIBILIDAD PARA LA PROPUESTA “FRAMEWORK DE
TRABAJO PARA PROYECTOS DE TITULACIÓN APLICANDO
METODOLOGÍA SCRUM EN LA INGENIERÍA DE SOFTWARE”.
ENFOCADO A LA ARQUITECTURA DE CAPA DE NEGOCIO
DESARROLLANDO SERVICIOS WEB DESTINADOS A PROCESAR
REQUERIMIENTOS DE DISPOSITIVOS
MÓVILES Y PROPORCIONANDO
UNA APLICACIÓN DE
MONITOREO DE
BITÁCORAS
Manual de Usuario y Técnico
Previa a la obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
AUTOR: HÉCTOR ANDRÉS ORTEGA GONZÁLEZ
TUTOR: LSI. OSCAR APOLINARIO.
GUAYAQUIL – ECUADOR
2015
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
2
MANUAL DE USUARIO DEL
SEC
Facultad de Matemáticas y Físicas
Carrera Ingeniería en Sistemas Computacionales
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
3
TABLA DE CONTENIDO
Objetivo ................................................................................................................... 6
Explicación de las Tablas .................................................................................. 6
Definición de la tabla sec_grupos_servicios .............................................. 6
Definición de la tabla sec_historial_consultas ........................................... 7
Definición de la tabla sec_consultas ........................................................... 8
Definición de la tabla sec_servicios............................................................. 9
Definición de la tabla sec_roles .................................................................. 10
Definición de la tabla sec_servicios_roles ................................................ 10
Definición de la tabla sec_servicios_usuarios ......................................... 11
Definición de la tabla sec_usuarios ........................................................... 11
Definición de la tabla sec_usuarios_roles ................................................ 12
Configuración de un nuevo Servicio ............................................................. 12
Configuración de Servicio de Consultas ................................................... 12
Configuración de Servicio Automático ...................................................... 12
Requisitos necesarios para activar el Servicio......................................... 14
Configuración de un nuevo usuario con encriptación. ............................... 15
Configuración password Encriptado con 3DES ....................................... 15
Configuración password Encriptado con BLOWFISH ............................. 16
Verificación que el Servicio se encuentre configurado y activo. ............... 16
Prueba del nuevo servicio haciendo uso del soapui ............................... 16
Revisión de Bitácora por éxito y por error en tablas y en log de archivo . 17
Pasos para realizar el consumo del SEC con REST/JSON ..................... 18
Errores comunes .............................................................................................. 23
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
4
INDICE DE GRAFICOS
GRÁFICO 1 Tabla sec_grupos_servicios ............................................................ 6
GRÁFICO 2 Tabla sec_historial_consultas ......................................................... 7
GRÁFICO 3 Tabla sec_consultas ......................................................................... 8
GRÁFICO 4 Tabla sec_servicios .......................................................................... 9
GRÁFICO 5 Tabla sec_roles ............................................................................... 10
GRÁFICO 6 Tabla sec_servicios_roles ............................................................. 10
GRÁFICO 7 Tabla sec_servicios_usuarios ....................................................... 11
GRÁFICO 8 Tabla sec_usuarios ......................................................................... 11
GRÁFICO 9 Tabla sec_usuarios_roles .............................................................. 12
GRÁFICO 10 Ejecución de un servicio de consulta ........................................ 17
GRÁFICO 11 Especificar REST para el SEC ..................................................... 18
GRÁFICO 12 URL del SEC .................................................................................. 19
GRÁFICO 13 Especificar post y json para el SEC .......................................... 19
GRÁFICO 14 Request y Response del SEC ...................................................... 22
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
5
INDICE DE CUADRO
CUADRO 1 Parámetros del SEC......................................................................... 13
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
6
Objetivo
Presentar una guía sencilla para el usuario explicando el funcionamiento del
servicio web del SEC (Servicio Ejecuta Consultas) y las configuraciones
necesarias para el correcto funcionamiento.
Explicación de las Tablas
A continuación se detallan las tablas usadas en el SEC con sus respectivas
definiciones:
Definición de la tabla sec_grupos_servicios
Esta tabla agrupa los servicios para tener una administración de las
configuraciones de consultas que se encuentren activos.
GRÁFICO 1 Tabla sec_grupos_servicios
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
7
Definición de la tabla sec_historial_consultas
Esta tabla graba un registro de las ejecuciones realizadas al SEC, aquí se
grabara la información de los parámetros recibidos y los parámetros
devueltos así como si la ejecución fue exitosa o no.
GRÁFICO 2 Tabla sec_historial_consultas
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
8
Definición de la tabla sec_consultas
En esta tabla se encuentra las consultas configuradas con sus parámetros,
la cantidad de parámetros que se configuran.
GRÁFICO 3 Tabla sec_consultas
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
9
Definición de la tabla sec_servicios
En esta tabla tendremos las configuraciones de cada uno de los servicios
de consultas.
GRÁFICO 4 Tabla sec_servicios
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
10
Definición de la tabla sec_roles
En esta tabla tendremos las configuraciones de los roles.
GRÁFICO 5 Tabla sec_roles
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Definición de la tabla sec_servicios_roles
En esta tabla tendremos las configuraciones de los roles, asignados a un
servicio.
GRÁFICO 6 Tabla sec_servicios_roles
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
11
Definición de la tabla sec_servicios_usuarios
En esta tabla tendremos las configuraciones de los usuarios, asignados a
un servicio.
GRÁFICO 7 Tabla sec_servicios_usuarios
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Definición de la tabla sec_usuarios
En esta tabla tendremos las configuraciones de los usuarios.
GRÁFICO 8 Tabla sec_usuarios
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
12
Definición de la tabla sec_usuarios_roles
En esta tabla tendremos las configuraciones de los usuarios
asigandos a un rol.
GRÁFICO 9 Tabla sec_usuarios_roles
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Configuración de un nuevo Servicio
Se configuraran los servicios de consultas de forma automática.
Configuración de Servicio de Consultas
Para realizar la configuración manualmente debemos seguir el siguiente
orden de inserción en las tablas:
procedimiento.crea_servicio_consulta
Configuración de Servicio Automático
Para configurar un nuevo servicio de manera automática es necesario
ejecutar el siguiente procedimiento almacenado: crea_servicio_consulta
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
13
A continuación se explica los parámetros de entrada para la ejecución del
procedimiento:
CUADRO 1 Parámetros del SEC
Parámetros de Entrada del SEC
crea_servicio_consulta
Nombre Descripción
@nombre_servicio Ingresar el nombre con el cual identificaremos al
servicio.
@descripcion_servicio Ingresar una descripción del Servicio a
configurar.
@nombre_consulta Se deberá ingresar el nombre de la consulta que
se requiera configurar.
@descripcion_consulta Descripción de la consulta almacenada.
@consulta Query de la consulta con sus respectivos
parámetros
@cantidad_parametros Cantidad de parámetros a configurar de 0 a n
parámetros con símbolo ?
@id_grupo Id del grupo al que se va a pertenecer el servicio.
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
14
Se adjunta ejemplo de ejecución del procedimiento almacenado.
USE [saugTemporal]
GO DECLARE @return_value int, @id_servicio int, @id_consulta int,
@codigo_salida int, @mensaje_salida varchar(200) EXEC @return_value = [dbo].[crea_servicio_consulta] @nombre_servicio = N'Notas',
@descripcion_servicio = N'Notas del Estudiante', @nombre_consulta = N'Notas', @descripcion_consulta = N'devuelve Notas', @consulta = N'select nombre from estudiante where id = ?', @cantidad_parametros = 1,
@id_grupo = 2, @id_servicio = @id_servicio OUTPUT, @id_consulta = @id_consulta OUTPUT, @codigo_salida = @codigo_salida OUTPUT, @mensaje_salida = @mensaje_salida OUTPUT
SELECT @id_servicio as N'@id_servicio', @id_consulta as N'@id_consulta', @codigo_salida as N'@codigo_salida', @mensaje_salida as N'@mensaje_salida'
SELECT 'Return Value' = @return_value GO
Requisitos necesarios para activar el Servicio
Al terminar el registro del servicio se deberá dar el grant del la consulta que
se configuro.
A continuación se detalla la sentencia a ejecutar:
grant execute on nombre_tabla to nombre_de_usuario;
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
15
Configuración de un nuevo usuario con encriptación.
Existen dos métodos para la encriptación del password de los usuarios, se
detalla cada uno de ellos, aunque el que se usa es el 3DES.
Configuración password Encriptado con 3DES
Para Encriptar el password del usuario con el método 3DES se debe
ejecutar mediante consola la librería saug_1_0.jar.
La línea de ejecución en el CMD es la siguiente:
java -jar saug_1_0.jar "D" "ClaveEnClaro" "91BA835FD6CD6A1C"
"D59B3CA154FC1BCE" "D59B3CA154FC1BCE"
A continuación se detalla cada parámetro para la ejecución de la librería
por consola:
Primer Parámetro.- Indica el tipo de encriptación, deberá ir el valor
“D” que indica que es 3DES
Segundo Parámetro.- Deberá ir la clave que se requiere encriptar.
Tercer Parámetro.- Llave 1 de encriptación en hexadecimal, la
longitud es de 16 caracteres.
Cuarto Parámetro.- Llave 2 de encriptación en hexadecimal, la
longitud es de 16 caracteres.
Quinto Parámetro.- Llave 3 de encriptación en hexadecimal, la
longitud es de 16 caracteres.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
16
Configuración password Encriptado con BLOWFISH Para Encriptar el password del usuario con el método blowfish se debe
ejecutar mediante consola la librería saug_1_0.jar.
La línea de ejecución en el CMD es la siguiente:
java -jar saug_1_0.jar "B" "claveEnClaro" "1jherp9jnfrjqp"
"1fgt7uj8"
A continuación se detalla cada parámetro para la ejecución de la librería
por consola:
Primer Parámetro.- Indica el tipo de encriptación, deberá ir el valor
“B” que indica que es blowfish.
Segundo Parámetro.- Deberá ir la clave que se requiere encriptar.
Tercer Parámetro.- Llave 1 de encriptación, la longitud máxima es
de 14 caracteres.
Cuarto Parámetro.- Llave 2 de encriptación, la longitud es de 8
caracteres.
Verificación que el Servicio se encuentre configurado y
activo.
Prueba del nuevo servicio haciendo uso del soapui
Cuando el servicio este configurado en las tablas del SEC, se deberá
realizar la prueba con la herramienta SOAPUI, a continuación se anexa un
ejemplo de la ejecución del servicio:
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
17
GRÁFICO 10 Ejecución de un servicio de consulta
Elaborado por: José Luis Sosa Barzola
Fuente: Datos del proyecto
Revisión de Bitácora por éxito y por error en tablas y en
log de archivo
Para la revisión de las bitácoras en las tablas del SEC se debe distinguir por los
siguientes querys:
Revisión por éxito
select * from saug.consultas.sec_historial_consultas where codigo_respuesta = 0
Revisión por error
select * from saug.consultas.sec_historial_consultas where codigo_respuesta != 0
Para la revisión de las bitácoras en el archivo log del SEC, se deberá tomar en
cuenta los siguientes parámetros:
Ruta del Archivo: /aplicaciones/secjpa/logs
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
18
Nombre del Archivo: secjpa.log
Sección del manual de usuario del SEC
Pasos para realizar el consumo del SEC con REST/JSON
Abrir la aplicación soapui y Escoger la opción Rest
GRÁFICO 11 Especificar REST para el SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Aparecerá la venta New Rest Project, en la caja de texto URI colocar la ruta del
servicio web
http://192.168.100.11:9080/consultasJPA/rest/servicioConsultas
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
19
GRÁFICO 12 URL del SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Luego se nos mostrara la ventana de request, aquí seleccionamos en la opción
Method: POST, en la opcion Media Type especificamos: application/json.
GRÁFICO 13 Especificar post y json para el SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
20
En el área de texto especificamos el json que del servicio que deseamos enviar:
{
"datosServicio": {
"dataSource": "jdbc/saug",
"idServicio": "6",
"usuario": "PRUEBA",
"clave": "Abc123",
"parametrosConsulta": {
"parametros": { "nombre": "Héctor" }
}
}}
El json consta de los siguientes elementos:
dataSource.- Es el jndi que identifica a la base de datos donde se
ejecutara la consulta
idServicio.- Es el identificador del servicio que deseamos ejecutar
usuario.- Es el usuario del servicio.
clave.- Es la clave del usuario del servicio
parametrosConsultas.- Dentro de este elemento se especificara el un
arreglo de parámetros de entrada para el servicio que se desea
ejecutar.
Una vez especificado el json de request, procederemos a presionar el
botón play, y el resultado la ejecución del servicio podremos observarlo en
el área detexto del response.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
21
{"respuestaServicio": {
"codigoRespuesta": "0",
"mensajeRespuesta": "EXITO",
"estado": "F",
"respuestaConsulta": {"elementos": {"mielemento": [
{
"id_persona": "1",
"nombre": "Héctor",
"apellido": "ortega",
"fecha_nacimiento": "1990-01-27 00:00:00",
"fecha_nacimiento2": "1990-01-27 00:00:00.0",
"sueldo": "20.24",
"sueldo2": "12.56"
},
{
"id_persona": "2",
"nombre": "Héctor ",
"apellido": "gonzalez",
"fecha_nacimiento": "2012-01-27 00:00:00",
"fecha_nacimiento2": "",
"sueldo": "5000.24",
"sueldo2": "12.30"
}
]}},
"idHistorial": "528"
}}
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
22
La respuesta JSON tendrá los siguientes elementos:
codigoRespuesta.- Es el código que indica si la respuesta fue exitosa o
no.
mensajeRespuesta: Es el mensaje que indica ÉXITO si es que no se
presentó ningún inconveniente y caso contrario el detalle del error que se
ha generado.
Estado: Devolverá el valor F si es que no se generó algún inconveniente
caso contrario tendrá valor A.
respuestaConsulta: Contiene los registro que retorno la consulta
ejecutada.
idHistorial: Retorna el id que representa a la transacción en la tabla
histórica.
GRÁFICO 14 Request y Response del SEC
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
23
Errores comunes
A continuación se presentan los errores comunes al trabajar con los servicios del
SEC.
No se dieron los permisos al usuario.
No se encuentra configurado correctamente el dataSource.
Están enviando la cantidad de parámetros incorrectos.
Se configuro mal los parámetros no incluyendo el ?
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
24
MANUAL TÉCNICO DEL SEC
Facultad de Matemáticas y Físicas
Carrera Ingeniería en Sistemas Computacionales
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
25
Tabla de Contenido
Tabla de Contenido .............................................................................................. 25
INDICE DE GRÁFICOS ......................................................................................... 26
INDICE DE CUADROS .......................................................................................... 27
Objetivo del SEC .................................................................................................. 28
Descripción del Componente ............................................................................. 28
Especificaciones Técnicas .............................................................................. 28
Diagrama de Flujo ............................................................................................ 29
Descripciones de Estructuras ............................................................................ 34
Modelo Entidad Relación................................................................................. 34
Descripción de tablas ...................................................................................... 35
Descripción detallada de los campos ............................................................ 36
Procedimientos Almacenados ........................................................................ 41
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
26
ÍNDICE DE GRÁFICOS
GRÁFICO 1 Diagrama general de componentes .............................................. 28
GRÁFICO 2 Diagrama de flujo del SEC ............................................................. 29
GRÁFICO 3 Diagrama de Clases ........................................................................ 30
GRÁFICO 4 Diagrama detallado de red ............................................................. 31
GRÁFICO 5 Diagrama actividades ......................................................................... 32
GRÁFICO 6 Diagrama de secuencias ................................................................ 33
GRÁFICO 7 Diagrama de estructuras ................................................................ 34
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
27
ÍNDICE DE CUADROS
CUADRO 1 Descripción de las tablas ................................................................ 35
CUADRO 2 Descripción de la tabla sec_grupos_servicios ............................ 36
CUADRO 3 Descripción de la tabla sec_historial_consultas ......................... 37
CUADRO 4 Descripción de la tabla sec_consultas ........................................ 37
CUADRO 5 Descripción de la tabla sec_servicios........................................... 38
CUADRO 6 Descripción de la tabla sec_roles ................................................. 38
CUADRO 7 Descripción de la tabla sec_servicios_roles ................................ 39
CUADRO 8 Descripción de la tabla sec_servicios_usuarios ......................... 39
CUADRO 9 Descripción de la tabla sec_usuarios_roles ................................ 40
CUADRO 10 Descripción de la tabla sec_usuarios ......................................... 40
CUADRO 11 Descripción del procedimiento crea_servicio_consulta .......... 41
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
28
Objetivo del SEC
El componente tiene como finalidad brindar un servicio que permita ejecutar
consultas a una base de datos. Estas consultas deben ser configuradas
previamente antes de poder ser utilizados.
Descripción del Componente
Especificaciones Técnicas
A continuación se detallan los requerimientos necesarios que requiere el
componente del Servicio de Ejecución de Consultas:
Java 7
Jboss AS 7.1
NetBeans 8.0.1
Diagrama general de componentes
GRÁFICO 1 Diagrama general de componentes
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
29
Diagrama de Flujo
GRÁFICO 2 Diagrama de flujo del SEC
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
30
UML Diagrama de Clases (Entidades JPA)
GRÁFICO 3 Diagrama de Clases
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
31
UML: Diagrama Detallado de Red
GRÁFICO 4 Diagrama detallado de red
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
32
UML Diagrama de Actividades
GRÁFICO 5 Diagrama actividades
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
33
UML Diagrama de Secuencias
GRÁFICO 6 Diagrama de secuencias
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
34
Descripciones de Estructuras
Modelo Entidad Relación
GRÁFICO 7 Diagrama de estructuras
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
35
Descripción de tablas
CUADRO 1 Descripción de las tablas
TABLA DESCRIPCIÓN
SEC_GRUPOS_SERVICIOS Permite definir el catálogo de grupos de
servicios.
SEC_HISTORIAL_CONSULTAS Bitácora de transacciones procesadas por
el Web Service
SEC_SERVICIOS Servicios que ejecutara el web service
SEC_SERVICIOS_USUARIOS Servicios por usuario
SEC_CONSULTAS Configuración de la consulta
SEC_USUARIOS Usuarios del servicio
SEC_SERVICIOS_ROLES Servicios por roles
SEC_USUARIOS_ROLES Usuario por Roles
SEC_ROLES Usuario por Roles
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
36
Descripción detallada de los campos
CUADRO 2 Descripción de la tabla sec_grupos_servicios
SEC_GRUPOS_SERVICIOS
CAMPO TIPO
PK ID_GRUPO INT
DESCRIPCIÓN VARCHAR
NOMBRE VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
37
CUADRO 3 Descripción de la tabla sec_historial_consultas
SEC_HISTORIAL_CONSULTAS
CAMPO TIPO
PK ID_HISTORIAL INT
ID_SERVICIO INT
ID_CONSULTA INT
FECHA_INGRESO_HISTORIAL DATETIME2
FECHA_INICIO_CONSULTA DATETIME2
FECHA_FIN_CONSULTA DATETIME2
FECHA_INICIO DATETIME2
FECHA_FIN DATETIME2
PARAMETROS_RECIBIDOS VARCHAR
RESPUESTA_RETORNADA VARCHAR
ESTADO VARCHAR
CODIGO_RESPUESTA INT
MENSAJE_RESPUESTA VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
CUADRO 4 Descripción de la tabla sec_consultas
SEC_CONSULTAS
CAMPO TIPO
PK ID_CONSULTA INT
NOMBRE VARCHAR
SENTENCIA VARCHAR
CANTIDAD_PARAMETROS VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
38
CUADRO 5 Descripción de la tabla sec_servicios
SEC_SERVICIOS
CAMPO TIPO
PK ID_SERVICIO INT
FK ID_GRUPO INT
NOMBRE VARCHAR
DESCRIPCION VARCHAR
FECHA_DESDE DATETIME2
FECHA_HASTA DATETIME2
ESTADO VARCHAR
AUTENTICACION VARCHAR
FORMATO_SALIDA VARCHAR
SEPARADOR_PARAMETRO VARCHAR
SEPARADOR_VALOR VARCHAR
SEPARADOR_REGISTRO VARCHAR
ETIQUETA_RAIZ VARCHAR
ETIQUETA_REGSTRO VARCHAR
FK ID_CONSULTA INT
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
CUADRO 6 Descripción de la tabla sec_roles
SEC_ROLES
CAMPO TIPO
PK ID_ROL INT
NOMBRE VARCHAR
DESCRIPCION VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
39
CUADRO 7 Descripción de la tabla sec_servicios_roles
SEC_SERVICIOS_ROLES
CAMPO TIPO
FK ID_ROL INT
FK ID_SERVICIO INT
FECHA_DESDE DATETIME2
FECHA_HASTA DATETIME2
ESTADO VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
CUADRO 8 Descripción de la tabla sec_servicios_usuarios
SEC_SERVICIOS_USUARIOS
CAMPO TIPO
FK ID_SERVICIO INT
FK ID_USUARIO INT
FECHA_DESDE DATETIME2
FECHA_HASTA DATETIME2
ESTADO VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
40
CUADRO 9 Descripción de la tabla sec_usuarios_roles
SEC_USUARIOS_ROLES
CAMPO TIPO
FK ID_ROL INT
FK ID_USUARIO INT
FECHA_DESDE DATETIME2
FECHA_HASTA DATETIME2
ESTADO VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
CUADRO 10 Descripción de la tabla sec_usuarios
SEC_USUARIOS
CAMPO TIPO
PK ID_USUARIO INT
NOMBRE VARCHAR
CLAVE VARCHAR
DESCRIPCION VARCHAR
FECHA_DESDE DATETIME2
FECHA_HASTA DATETIME2
ESTADO VARCHAR
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
41
Procedimientos Almacenados
CUADRO 11 Descripción del procedimiento crea_servicio_consulta
CREA_SERVICIO_CONSULTA
PARAMETROS TIPOS DESCRIPCION
NOMBRE_SERVICIO VARCHAR(50) Nombre del nuevo servicio.
DESCRIPCION_SERVICIO VARCHAR(2000) Breve descripción del
servicio.
NOMBRE_CONSULTA VARCHAR(50) Nombre de la consulta.
DESCRIPCION_CONSULTA VARCHAR(2000) Breve descripción de la
consulta.
CONSULTA VARCHAR(8000) Consulta sql
CANTIDAD_PARAMETROS INT Numero de parámetros
que recibe la consulta
ID_GRUPO INT Grupo al que pertenece el
servicio
ID_SERVICIO INT OUT Código del servicio
generado.
ID_CONSULTA INT OUT Código de la consulta
generado.
CODIGO_SALIDA INT OUT Código de ejecución de la
consulta.
MENSAJE_SALIDA VARCHAR(200)
OUT
Mensaje de ejecución de la
consulta.
Elaborado por: Ricardo Coello Quezada
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
42
MANUAL DE USUARIO DEL
SEP
Facultad de Matemáticas y Físicas
Carrera Ingeniería en Sistemas Computacionales
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
43
Tabla de contenido
Objetivo ................................................................................................................. 47
Explicación de las Tablas ................................................................................... 47
Definición de la tabla sep_grupos_servicios ............................................ 47
Definición de la tabla sep_historial_objetos ............................................. 48
Definición de la tabla sep_objetos_bd ....................................................... 49
Definición de la tabla sep_parametros_objetos_bd ................................. 49
Definición de la tabla sep_roles.................................................................. 50
Definición de la tabla sep_servicio_roles .................................................. 50
Definición de la tabla sep_servicio_usuarios ........................................... 51
Definición de la tabla sep_servicios .......................................................... 51
Definición de la tabla sep_tipos_datos ...................................................... 52
Definición de la tabla sep_usuarios ........................................................... 52
Configuración de Un nuevo Servicio................................................................. 53
Configuración de Servicio Manual ............................................................. 53
Configuración de Servicio Automático ...................................................... 54
Requisitos necesarios para activar el Servicio......................................... 56
Configuración de Un nuevo usuario con encriptación. .................................. 57
Configuración password Encriptado con 3DES ....................................... 57
Configuración password Encriptado con BLOWFISH ............................. 58
Verificación que el Servicio se encuentre configurado y activo.................... 59
Prueba del nuevo servicio haciendo uso del soapui ............................... 59
Revisión de Bitácora por éxito y por error en tablas y en log de archivo
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
44
........................................................................................................................ 59
Sección del manual de usuario del SEP ........................................................... 60
Pasos para realizar el consumo del SEP con REST/JSON ...................... 60
Sección del manual de usuario del Componente de Monitoreo .................... 65
Logstash ........................................................................................................ 65
Elasticsearch ................................................................................................. 73
Kibana ............................................................................................................ 76
Errores comunes.................................................................................................. 93
Frequently Asked Questions .............................................................................. 93
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
45
Índice de Gráficos
Gráfico 1 ................................................................................................................ 47
Gráfico 2 ................................................................................................................ 48
Gráfico 3 ................................................................................................................ 49
Gráfico 4 ................................................................................................................ 49
Gráfico 5 ................................................................................................................ 50
Gráfico 6 ................................................................................................................ 50
Gráfico 7 ................................................................................................................ 51
Gráfico 8 ................................................................................................................ 51
Gráfico 9 ................................................................................................................ 52
Gráfico 10 .............................................................................................................. 52
Gráfico 11 .............................................................................................................. 59
Gráfico 12 .............................................................................................................. 60
Gráfico 13 .............................................................................................................. 61
Gráfico 14 .............................................................................................................. 61
Gráfico 15 .............................................................................................................. 64
Gráfico 16 .............................................................................................................. 65
Gráfico 17 .............................................................................................................. 66
Gráfico 18 .............................................................................................................. 67
Gráfico 19 .............................................................................................................. 68
Gráfico 20 .............................................................................................................. 74
Gráfico 21 .............................................................................................................. 75
Gráfico 22 .............................................................................................................. 76
Gráfico 23 .............................................................................................................. 77
Gráfico 24 .............................................................................................................. 77
Gráfico 25 .............................................................................................................. 78
Gráfico 26 .............................................................................................................. 78
Gráfico 27 .............................................................................................................. 79
Gráfico 28 .............................................................................................................. 80
Gráfico 29 .............................................................................................................. 81
Gráfico 30 .............................................................................................................. 82
Gráfico 31 .............................................................................................................. 83
Gráfico 32 .............................................................................................................. 84
Gráfico 33 .............................................................................................................. 84
Gráfico 34 .............................................................................................................. 85
Gráfico 35 .............................................................................................................. 86
Gráfico 36 .............................................................................................................. 87
Gráfico 37 .............................................................................................................. 88
Gráfico 38 .............................................................................................................. 89
Gráfico 39 .............................................................................................................. 89
Gráfico 40 .............................................................................................................. 90
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
46
Gráfico 41 .............................................................................................................. 91
Gráfico 42 .............................................................................................................. 91
Gráfico 43 .............................................................................................................. 92
Gráfico 44 .............................................................................................................. 92
Gráfico 45 .............................................................................................................. 93
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
47
Objetivo
Presentar una guía sencilla para el usuario explicando el funcionamiento del
servicio web del SEP (Servicio Ejecuta Procedimientos) y las configuraciones
necesarias para el correcto funcionamiento.
Explicación de las Tablas
A continuación se detallan las tablas usadas en el SEP con sus respectivas
definiciones:
Definición de la tabla sep_grupos_servicios
Esta tabla agrupa los servicios para tener una administración de las
configuraciones de procedimientos que se encuentren activos.
Gráfico 1
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
48
Definición de la tabla sep_historial_objetos
Esta tabla graba un registro de las ejecuciones realizadas al SEP, aquí se
grabara la información de los parámetros recibidos y los parámetros
devueltos así como si la ejecución fue exitosa o no.
Gráfico 2
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
49
Definición de la tabla sep_objetos_bd
En esta tabla se encuentra el nombre de los procedimientos que va a
ejecutar el servicio web.
Gráfico 3
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Definición de la tabla sep_parametros_objetos_bd
En esta tabla tendremos las configuraciones de cada uno de los
parámetros de los procedimientos.
Gráfico 4
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
50
Definición de la tabla sep_roles
En esta tabla se graban los roles que tendrá el SEP.
Gráfico 5
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Definición de la tabla sep_servicio_roles
En esta tabla contiene los permisos que tendrá cada rol para la ejecución
del servicio.
Gráfico 6
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
51
Definición de la tabla sep_servicio_usuarios
En esta tabla contiene los permisos que tendrá directamente cada usuario
para la ejecución del servicio.
Gráfico 7
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Definición de la tabla sep_servicios
En esta tabla contiene los servicios que se encuentran configurados para
la ejecución del procedimiento de la base de datos.
Gráfico 8
Elaborado por: Adolfo Sotomayor Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
52
Definición de la tabla sep_tipos_datos
En esta tabla se encuentran las configuraciones de los tipos de datos de
cada uno de los parámetros de los procedimientos configurados.
Gráfico 9
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Definición de la tabla sep_usuarios
En esta tabla se encuentran los usuarios configurados para la ejecución
del servicio del SEP.
Gráfico 10
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
53
Configuración de Un nuevo Servicio
Existen dos formar de configurar los servicios en el SEP, de manera
manual y de manera automática, a continuación detallamos cada una de
ellas:
Configuración de Servicio Manual
Para realizar la configuración manualmente debemos seguir el siguiente
orden de inserción en las tablas:
procedimiento.sep_objetos_bd
procedimiento.sep_servicios
procedimiento.sep_parametros_objetos_bd
A continuación se adjunta un ejemplo de la inserción de datos en las tablas
del SEP (Servicio Ejecuta Procedimientos)
/* sep_objetos_bd */ INSERT [procedimiento].[sep_objetos_bd] ([id_objeto_bd], [nombre_objeto], [descripcion], [cantidad_parametros]) VALUES (10, N'sp_Consulta_Asistencias_Estudiantes', N'Consulta la asistencia de los estudiantes', N'12') /* sep_servicios */ INSERT [procedimiento].[sep_servicios] ([id_servicio], [nombre], [descripcion], [fecha_desde], [fecha_hasta], [estado], [autenticacion], [id_objeto_bd], [id_grupo_servicio]) VALUES (9, N'Consultar Asistencias de Estudiantes', N'Permite al profesor consultar la Asistencia de los Estudiantes', CAST(N'2015-09-15' AS Date), NULL, N'1', N'S', 10, 2) /* sep_parametros_objetos_bd */ INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (50, N'pv_fechaInicio', N'Descripcion @pv_fechaInicio', N'E', 1, 2, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (51, N'pv_fechaFin', N'Descripcion @pv_fechaFin', N'E', 2, 2, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (52, N'pi_idProfesor', N'Descripcion @pi_idProfesor', N'E', 3, 1, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion],
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
54
[entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (53, N'pi_idMateria', N'Descripcion @pi_idMateria', N'E', 4, 1, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (54, N'pi_idParalelo', N'Descripcion @pi_idParalelo', N'E', 5, 1, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (55, N'pi_anio', N'Descripcion @pi_anio', N'E', 6, 1, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (56, N'pi_ciclo', N'Descripcion @pi_ciclo', N'E', 7, 1, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (57, N'px_Salida', N'Descripcion @px_Salida', N'S', 8, 5, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (58, N'PI_ESTADO', N'Descripcion @PI_ESTADO', N'S', 9, 1, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (59, N'PV_MENSAJE', N'Descripcion @PV_MENSAJE', N'S', 10, 2, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (60, N'PV_CODTRANS', N'Descripcion @PV_CODTRANS', N'S', 11, 2, 10) INSERT [procedimiento].[sep_parametros_objetos_bd] ([id_parametro_objeto_bd], [nombre_parametro], [descripcion], [entrada_salida], [orden], [id_tipo_dato], [id_objeto_bd]) VALUES (61, N'PV_MENSAJE_TECNICO', N'Descripcion @PV_MENSAJE_TECNICO', N'S', 12, 2, 10)
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Configuración de Servicio Automático
Para configurar un nuevo servicio de manera automática es necesario
ejecutar el siguiente procedimiento almacenado:
crea_servicio_procedimiento_aut
A continuación se explica los parámetros de entrada para la ejecución del
procedimiento:
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
55
Parámetros de Entrada del Procedimiento
crea_servicio_procedimiento_aut
Nombre Descripción
@nombre_servicio Ingresar el nombre con el cual identificaremos
al servicio.
@descripcion_servicio Ingresar una descripción del Servicio a
configurar.
@nombre_objeto Se deberá ingresar el nombre del
procedimiento que se requiera configurar.
@descripcion_objeto Descripción del procedimiento almacenado.
..@id_grupo Id del grupo al que se va a pertenecer el
servicio.
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Parámetros de Salida del Procedimiento
crea_servicio_procedimiento_aut
Nombre Descripción
@id_servicio Id del Servicio con que se registró el servicio en la
tabla sep_servicios.
@id_objeto Id del objeto con que se registró el nombre del
procedimiento en la tabla sep_objetos_bd.
@codigo_salida Código de ejecución del procedimiento de
servicios.
@mensaje_salida Mensaje de ejecución del procedimiento.
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
56
Se adjunta ejemplo de ejecución del procedimiento almacenado.
USE [saug] GO DECLARE @return_value int, @id_servicio int, @id_objeto int, @codigo_salida int, @mensaje_salida varchar(max) EXEC @return_value = [dbo].[crea_servicio_procedimiento_aut] @nombre_servicio = N'Graba Horario Manual Profesor', @descripcion_servicio = N'Graba el horario Manuel profesor', @nombre_objeto = N'sp_Graba_Horario_Manual_Profesor', @descripcion_objeto = N'Permite Grabar el horario del profesor.', @id_grupo = 4, @id_servicio = @id_servicio OUTPUT, @id_objeto = @id_objeto OUTPUT, @codigo_salida = @codigo_salida OUTPUT, @mensaje_salida = @mensaje_salida OUTPUT SELECT @id_servicio as N'@id_servicio', @id_objeto as N'@id_objeto', @codigo_salida as N'@codigo_salida', @mensaje_salida as N'@mensaje_salida' SELECT 'Return Value' = @return_value GO
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Requisitos necesarios para activar el Servicio
Al terminar el registro del servicio se deberá dar el grant del procedimiento
que se configuro.
A continuación se detalla la sentencia a ejecutar:
grant execute on nombre_del_procedimiento to nombre_de_usuario;
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
57
Configuración de Un nuevo usuario con encriptación.
Existen dos métodos para la encriptación del password de los usuarios, se
detalla cada uno de ellos, aunque el que se usa es el 3DES.
Configuración password Encriptado con 3DES
Para Encriptar el password del usuario con el método 3DES se debe
ejecutar mediante consola la librería saug_1_0.jar.
La línea de ejecución en el CMD es la siguiente:
java -jar saug_1_0.jar "D" "ClaveEnClaro"
"91BA835FD6CD6A1C" "D59B3CA154FC1BCE"
"D59B3CA154FC1BCE"
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
A continuación se detalla cada parámetro para la ejecución de la librería
por consola:
Primer Parámetro.- Indica el tipo de encriptación, deberá ir el valor
“D” que indica que es 3DES
Segundo Parámetro.- Deberá ir la clave que se requiere encriptar.
Tercer Parámetro.- Llave 1 de encriptación en hexadecimal, la
longitud es de 16 caracteres.
Cuarto Parámetro.- Llave 2 de encriptación en hexadecimal, la
longitud es de 16 caracteres.
Quinto Parámetro.- Llave 3 de encriptación en hexadecimal, la
longitud es de 16 caracteres.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
58
Configuración password Encriptado con BLOWFISH
Para Encriptar el password del usuario con el método blowfish se debe
ejecutar mediante consola la librería saug_1_0.jar.
La línea de ejecución en el CMD es la siguiente:
java -jar saug_1_0.jar "B" "claveEnClaro" "1jherp9jnfrjqp" "1fgt7uj8"
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
A continuación se detalla cada parámetro para la ejecución de la librería
por consola:
Primer Parámetro.- Indica el tipo de encriptación, deberá ir el valor
“B” que indica que es blowfish.
Segundo Parámetro.- Deberá ir la clave que se requiere encriptar.
Tercer Parámetro.- Llave 1 de encriptación, la longitud máxima es
de 14 caracteres.
Cuarto Parámetro.- Llave 2 de encriptación, la longitud es de 8
caracteres.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
59
Verificación que el Servicio se encuentre configurado y
activo.
Prueba del nuevo servicio haciendo uso del soapui
Cuando el servicio este configurado en las tablas del SEP, se deberá
realizar la prueba con la herramienta SOAPUI, a continuación se anexa un
ejemplo de la ejecución del servicio:
Gráfico 11
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Revisión de Bitácora por éxito y por error en tablas y en log
de archivo
Para la revisión de las bitácoras en las tablas del SEP se debe distinguir por los
siguientes qwerys:
Revisión por éxito
select * from saug.procedimiento.sep_historial_objetos where codigo_salida = 0
Revisión por error
select * from saug.procedimiento.sep_historial_objetos where codigo_salida != 0
Elaborado por: Adolfo Sotomayor
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
60
Para la revisión de las bitácoras en el archivo log del SEP, se deberá tomar en
cuenta los siguientes parámetros:
Ruta del Archivo: /opt/jboss-as-7.1.1.Final/standalone/log/SEP
Nombre del Archivo: sepJPA.log
Sección del manual de usuario del SEP
Pasos para realizar el consumo del SEP con REST/JSON
Abrir la aplicación soapui
Escoger la opción Rest
Gráfico 12
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Aparecerá la venta New Rest Project, en la caja de texto URI colocar la ruta del
servicio web
http://192.168.100.11:9080/consultasJPA/rest/servicioConsultas
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
61
Gráfico 13
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Luego se nos mostrará la ventana de request, aquí seleccionamos en la opción
Method: POST, en la opción Media Type especificamos: application/json.
Gráfico 14
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
62
En el área de texto especificamos el JSON que del servicio que deseamos enviar:
{ "datosServicio": {
"dataSource": "jdbc/saugProc",
"idServicio": "17",
"usuario": "MiUserPrueba",
"clave": "Abc123",
"parametrosObjeto": {
"parametros": {
"nombre_servicio": "prueba ",
"descripcion_servicio": "prueba ",
"pc_xml": {
"raiz": { "elemento": "valor" } } } } }}
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
El JSON consta de los siguientes elementos:
dataSource.- Es el jndi que identifica a la base de datos donde se ejecutara la
el procedimiento almacenado
idServicio.- Es el identificador del servicio que deseamos ejecutar
usuario.- Es el usuario del servicio.
clave.- Es la clave del usuario del servicio
parametrosObjeto.- Dentro de este elemento se especificara el un arreglo de
parámetros de entrada para el servicio que se desea ejecutar.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
63
Una vez especificado el JSON de request, procederemos a presionar el botón
play, y el resultado la ejecución del servicio podremos observarlo en el área de
texto del response.
{"respuestaServicio": {
"codigoRespuesta": "0",
"mensajeRespuesta": "EXITO",
"estado": "F",
"resultadoObjeto": {
"codigo_salida": "0",
"mensaje_salida": "Exito",
"px_xml_salida": {"raiz": {"elemento": "valor"}}
},
"idHistorico": "278784"
}}
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
La respuesta JSON tendrá los siguientes elementos:
codigoRespuesta.- Es el código que indica si la respuesta fue exitosa o no.
mensajeRespuesta: Es el mensaje que indica ÉXITO si es que no se
presentó ningún inconveniente y caso contrario el detalle del error que se
ha generado.
Estado: Devolverá el valor F si es que no se generó algún inconveniente
caso contrario tendrá valor A.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
64
resultadoObjeto: Contiene los parámetros de salida del procedimiento
almacenado que se ejecutó.
idHistorial: Retorna el id que representa a la transacción en la tabla
histórica.
Gráfico 15
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
65
Sección del manual de usuario del Componente de
Monitoreo
Logstash
Instalación de logstash en servidor centos 6.5
1. Subir el archivo logstash-1.5.4-1.noarch.rpm a través de ftp en un directorio
en el servidor con centos por ejemplo /home/documentos/logstash
2. Conectarse a través del putty y ubicarse en el directorio donde se encutra
el archivo logstash-1.5.4-1.noarch.rpm
3. Ejecutar el comando
4. sudo rpm -ivh logstash-forwarder-0.3.1-1.x86_64.rpm
Gráfico 16
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
66
5. Se creara la ruta: /etc/logstash. En donde debemos especificar la
configuración para lectura de archivo que deseamos que logstash ejecute
un ejemplo de nombre archivo es: conf.d
6. Iniciar el servicio de logstash a través del comando:
sudo service logstash start
7. Para verficiar que logstash este funcionando ejecutar el comando
sudo service logstash status
Gráfico 17
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
67
Instalación de logstash en Windows
1. Descomprimir el archivo logstash-1.5.4.zip en una ruta por ejemplo
C:\logstash\logstash-1.5.4
2. Para ejecutar logstash abrir una consola de línea de comandos cmd
3. Ir a la ruta donde se descomprimio los archivos por ejemplo:
C:\logstash\logstash-1.5.4\bin
4. Ejecutar el comando logstash.bat y enviar como parámetro el archivo de
configuración y especificación de la tablas que deseamos leer
logstash agent --config C:\libreria\conexionBaseProcedimiento.conf
Gráfico 18
Ejecución de logstash en Windows
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Archivos de configuración para logstash
Logstash necesita archivos de configuración para funcionar, los cuales debemos
crearlos en una ruta para mantener una organización como detallaremos a
continuación
1. Definir una ruta donde se guradaran los archivos
2. Crear el archivo de configuración para logstash por ejemplo
configuraciónProcedimiento.conf
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
68
3. Crear el archivo con la consulta que se ejecutará en la base por ejemplo
consultaProcedimiento.sql
4. Copiar el archivo jar con el driver de conexión de la base de datos por
ejemplo sqljbc4
Gráfico 19
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
69
Configuración Logstash para leer datos.
Para el ejecutar logstash debemos crear un archivo de configuración en donde
especificaremos tres opciones
Input.- Es de donde obtendremos la información ya sea de una tabla o de
un archivo
Filter.- Permite aplicar transformaciones a los datos que se obtienen del
input
Output.- Define donde se guardaran los datos que se sacaron del input
Configuración para cargar datos desde una tabla en logstash
Para obtener datos de una tabla el input debemos especificar la opción jdbc y los
siguientes parámetros
jdbc_connection_string.- Se debe especificar la url de conexión hacia la
base de datos que deseamos conectarnos
jdbc_user.- Usuario de base de datos
jdbc_password.- Clave del usuario
jdbc_driver_library.- Especificar la ruta donde se encuentra el jar que tiene
el driver de conexión jdbc para la base de datos que nos deseamos
conectar
jdbc_driver_class.- Detallar la Clase que es el driver de conexión
statement_filepath.- indicar la ruta donde del archivo que tiene la consulta
que se ejcutara en la base de datos
Schedule.- Indicar cada cuanto tiempo se debe ejecutar la consulta
En el filter especificamos la opción date y los siguientes parámetros:
Match.- permite especificar el campo fecha y sus formato en año mes dia,
hora minuto y segundo
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
70
En el output detallamos la opción elasticsearch con los siguientes parámetros:
Protocol.- Especificar el protocolo http
Index.- Indicar el índice de elasticsearch donde se guardara la información
document_type.- Especificar el tipo de documento donde se guarda la
informacion
document_id.- Especificar el campo del registro que servirá como id dentro
del documento
host.- permite detallar la ip donde se encuentra instalado elasticsearch
Adicionalmente como parte del output podemos definir la opción stdout que nos
mostrara la información que se está procesando y nos permitirá hacer
depuraciones.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
71
input { jdbc { jdbc_connection_string => "jdbc:sqlserver://192.168.100.10:1433;DatabaseName=saug" jdbc_user => "consultasLogstash" jdbc_password =>"20stash15" jdbc_driver_library => "C:/libreria/sqljdbc4.jar" jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" statement_filepath => "C:/libreria/consulta2.sql" schedule => "* * * * *" } }
filter{ date{ match => [ "fecha_ingreso_historial" , "yyyy-MM-dd HH:mm:ss Z" ] } } output { stdout { codec => rubydebug } elasticsearch { protocol => http index => "consultas"
document_type => "historial" document_id => "%{id_historial}" host => "192.168.100.17" } }
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
72
Configuración para cargar datos desde un archivo en logstash
Para obtener datos de una tabla el input debemos especificar la opción file y los
siguientes parámetros
path.- Se debe especificar la ruta del archivo que se dese leer
start_position.- detallar si se dese leer el archivo desde el principio
En el filter especificamos la grok con los siguientes parámetros:
patterns_dir.- ruta del archivo que tiene patrones
match.- Nombre del patrón que permitirá identificar las líneas del
archivo
Otra opción de filter que debemos especificar es date con los siguientes
parametros:
Match .- Permite especificar el campo del archivo que tiene la fecha
con la que deseamos registrar la información
Locale.- permite especificar el idioma con el que se leerá la fecha.
En el output detallamos la opción elasticsearch con los siguientes parámetros:
Protocol.- Especificar el protocolo http
Index.- Indicar el índice de elasticsearch donde se guardara la información
document_type.- Especificar el tipo de documento donde se guarda la
informacion
document_id.- Especificar el campo del registro que servirá como id dentro
del documento
host.- permite detallar la ip donde se encuentra instalado elasticsearch
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
73
Adicionalmente como parte del output podemos definir la opción stdout que nos
mostrara la información que se está procesando y nos permitirá hacer
depuraciones.
input{ file{
path => "/opt/jboss-as-7.1.1.Final/standalone/log/access_log." start_position => "beginning" } } filter { grok { patterns_dir => "/opt/jboss-as-7.1.1.Final/Documentos/patrones" match => [ "message", "%{NEWAPACHELOG}"] } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] locale => "en" }}
output{ stdout {codec=>rubydebug} elasticsearch { protocol => "http" host => "192.168.100.17:9200" index => "logapache" document_type => "access" }}
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Elasticsearch
Instalación de elasticsearch en Windows como servicio
1. Descomprimir el archivo elasticsearch-1.6.0.zip en un directorio
denominado:
C:\elasticsearch\elasticsearch-1.6.0
2. Una vez descomprimido ejecutaremos el archivo
3. C:\elasticsearch\elasticsearch-1.6.0>service install
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
74
4. Una vez terminada la ejeucion podremos ver a elasticsearch entre los
servicios del sistema
Gráfico 20
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Pasos para configura un nuevo índice en elasticsearch
Para administrar de elasticsearch desde el navegador Firefox instalaremos el
plugin denominado rest client
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
75
Gráfico 21
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Una vez instalado el plugin rest client es
1. Especificar el nombre del índice que deseamos crear
2. Escoger el método POST
3. Detallar el mapeo del índice que vamos a crear
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
76
Gráfico 22
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Kibana
Instalación de kibana como servicio en windows
Para instalar Kibana como servicio utilizaremos el programa denominado NSSM
(The Non Sucking Service Manager).
Descomprimir el archivo kibana-4.1.2-windows.zip en la c:\kibana\kibana-4.1.2-
windows\
El archivo ejecutable nssm.exe lo debemos copiar en la carpeta bin de Kibana
C:\kibana\kibana-4.1.2-windows\bin
Luego desde línea de comandos ejecutamos el archivo nssm.exe
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
77
Gráfico 23
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Nos aparecerá una pantalla en donde debemos especificar los campos
Path: Especificar l ruta donde se encuentra el ejecutable de kibana por ejemplo
c:\kibana\kibana-4.1.2-windows\bin\kibana.bat
Startup directory: especificar la ruta raíz donde se encuetra instalado kibana
c:\kibana\kibana-4.1.2-windows\bin\
Gráfico 24
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
78
En la pestaña de dependencias debemos especificar el servicio que se debe
ejecutar antes de iniciar Kibana, aquí escribiremos el nombre del servicio de
elasticsearch
Gráfico 25
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
En la pestaña I/O, especificaemos lo nombres de los archivos de bitácora para la
entrada, salida y error del servicio
Gráfico 26
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
79
El último paso que debemos realizar es es presionar el botón edit service y se
creará nuestro servicio
Pasos para configurar un nuevo índice en Kibana
Abrir un navegador y escribir la url en la barra de direcciones:
http://192.168.100.17:5601
1. En la pantalla principal escoger la opción setting
2. Luego especificar el índice que deseamos agregar
3. Por último presionar el botón créate
Gráfico 27
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
80
Para verificar si el índice se creó de manera correcta debemos buscarlo en el
menú de índices de la opción settings
Gráfico 28
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Pasos para Descubrir un índice
Acceder a la siguiente url través de un navegador
http://192.168.100.17:5601
Se abrirá la pantalla principal del programa kibana, en esta pantalla presionamos
la opción discover y luego escogemos el índice que deseamos revisar. En este
caso el índice logapache
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
81
Gráfico 29
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Luego de escoger el índice logapache aparecerá un gráfico de barras que nos
mostrara la cantidad de peticiones que se han realizado hacia el servidor jboss y
que se encuentran registradas en la bitácora denominada access_log
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
82
Gráfico 30
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
83
Pasos Para Crear una nueva visualización
Acceder a la siguiente URL través de un navegador
http://192.168.100.17:5601
En la pantalla presionar la opción visualizar y luego seleccionar el tipo de
visualización
Gráfico 31
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
84
Escoger el índice del cual se desea generar la visualización en la opción
Gráfico 32
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
En la opción de buckets presionar la el icono Split slices
Gráfico 33
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
85
Una vez presionado la opción Split Slices debemos especificar:
1. El tiempo que desde el cual se va a tomar información para generar el
gráfico
2. Escoger el tipo de agregación que se va a utilizar
3. Especificar el campo sobre el cual se desea generar el gráfico
Gráfico 34
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
86
Pasos para crear un nuevo dashboard
Acceder a la siguiente url a través de un navegador
http://192.168.100.17:5601
Luego de dar click en la opción Dashboard realizar lo siguiente:
1. Escoger la opción agregar la visualización
2. Seleccionar la visualización que deseamos agregar al nuevo tablero
3. Una vez seleccionada la visualización, aparece en el espacio de trabajo
del tablero
Gráfico 35
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
87
Pasos para guardar un DashBoard
Una vez creado el tablero si deseamos guardarlos debemos realizar los siguientes
pasos
1. Presionar el botón guardar
2. Especificar el nombre del nuevo tablero
3. Dar click en guardar
Gráfico 36
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
88
Pasos para ver un DashBoard
Ingresar a un navegador y escribir la siguiente ruta en la barra de direcciones:
http://192.168.100.17:5601
Dar click en la opción Dashboard
Gráfico 37
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Dar click en la opción cargar dashboard guardados y eescoger el tablero
que deseamos ver
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
89
Gráfico 38
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Una vez selecciona nos aparecera nuestro tablero con las visualizaciones que es
se encuentren configuradas
Gráfico 39
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
90
Entre las visualizaciones configuradas tenemos:
Gráficos de barras para obtener el top de direcciones ip clientes del
servicio.
Gráfico de línea sobre el tiempo mínimo de respuesta de peticiones
realizadas contra el servidor de aplicaciones jboss.
Gráfico de pastel sobre el recurso (URL) más solicitada del servidor de
aplicaciones jboss
Gráfico 40
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
91
Gráfico 41
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Gráfico 42
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
92
Si deseamos cambiar el rango de tiempo de dashboard, debemos presionar la
opción que tiene el icono de reloj en la parte superior derecha de la pantalla
de kibana.
Luego de presionar la opción de tiempo, podremos seleccionar un rango de tiempo
rápido, relativo o absoluto
Rápido.- Son tiempos predefinidos
Relativo.- Permite especificar un rango con una fecha desde hasta el
tiempo actual
Absoluto.- Permite especificar un rango con fecha desde y una fecha hasta
Gráfico 43
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Gráfico 44
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
93
Gráfico 45
Elaborado por: Héctor Ortega
Fuente: Datos del proyecto
Errores comunes
A continuación se presentan los errores comunes al trabajar con los servicios del
SEP.
No se dieron los permisos al usuario.
Se modificaron (agregaron o eliminarlos) los parámetros del servicio pero
no se actualizo la cantidad de parámetros en la tabla sep_objetos_bd.
No se encuentra configurado correctamente el dataSource.
Están enviando los parámetros incorrectos
.
Frequently Asked Questions
A continuación se detallan las preguntas que se presentan frecuentemente en la
comunicación con el SEP (Servicio Ejecuta Procedimientos).
¿Si se actualiza un procedimiento es necesario volver a configurar la
parametrización en el SEP?
Sí, es necesario volver a actualizar en la tabla de parámetros, los últimos
que se agregaron en el procedimiento. No olvidar también que en la tabla
objetos se debe actualizar el número de parámetros.
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
94
MANUAL TÉCNICO DEL SEP
Facultad de Matemáticas y Físicas
Carrera Ingeniería en Sistemas Computacionales
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
95
Tabla de Contenido
Tabla de Contenido .............................................................................................. 95
Índice de Gráficos ................................................................................................ 96
Índice de Cuadros ................................................................................................ 97
Objetivo del SEP .................................................................................................. 98
Descripción del Componente ............................................................................. 98
Especificaciones Técnicas .............................................................................. 98
Diagrama de componentes ............................................................................. 98
Diagrama de Flujo ............................................................................................ 99
Descripciones de Estructuras .......................................................................... 100
Modelo Entidad Relación............................................................................... 100
Descripción de tablas .................................................................................... 101
Descripción detallada de los campos .......................................................... 101
Procedimientos Almacenados ...................................................................... 107
Diagrama de Clases ....................................................................................... 108
Diagrama de Secuencia ................................................................................. 109
Diagrama Detallado de Red ........................................................................... 110
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
96
Índice de Gráficos
Gráfico 1 ................................................................................................................. 98
Gráfico 2 ................................................................................................................. 99
Gráfico 3 ............................................................................................................... 100
Gráfico 4 ............................................................................................................... 108
Gráfico 5 ............................................................................................................... 109
Gráfico 6 ............................................................................................................... 110
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
97
Índice de Cuadros
Cuadro 1 ............................................................................................................... 101
Cuadro 2 ............................................................................................................... 101
Cuadro 3 ............................................................................................................... 102
Cuadro 4 ............................................................................................................... 102
Cuadro 5 ............................................................................................................... 103
Cuadro 6 ............................................................................................................... 103
Cuadro 7 ............................................................................................................... 104
Cuadro 8 ............................................................................................................... 104
Cuadro 9 ............................................................................................................... 104
Cuadro 10............................................................................................................. 105
Cuadro 11............................................................................................................. 105
Cuadro 12............................................................................................................. 106
Cuadro 13............................................................................................................. 107
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
98
Objetivo del SEP
El componente tiene como finalidad brindar un servicio que permita
ejecutar los procesos de una base de datos. Estos procesos deben ser
configurados previamente antes de poder ser utilizados.
Descripción del Componente
Especificaciones Técnicas
A continuación se detallan los requerimientos necesarios que requiere el
componente de Servicios de Ejecución de Procedimientos:
Java 7
Jboss AS 7.1
NetBeans 7.3
Diagrama de componentes Gráfico 1
Modelo SEP
Elaborado por: Xavier Mora
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
99
Diagrama de Flujo
Gráfico 2
INICIO
Request
Request
correcta
Obtener
Configuración de
BD
Configuración
Correcta
Generar script para
ejecutar proceso
Ejecuta Proceso
Proceso
Ejecutado
correctamente
Genera Response
con la respuesta
del proceso
Inserta ejecución
de Proceso
Inserta ejecución
en bitácora
Generar Response
de Error
FIN
NO
NO
NO
Obtener
Validaciones de
Usuarios
Usuario
correcto
NO
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
100
Descripciones de Estructuras Modelo Entidad Relación Gráfico 3
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
101
Descripción de tablas
Cuadro 1
TABLA DESCRIPCIÓN
SEP_GRUPOS_SERVICIOS Define el catálogo de grupos de servicios.
SEP_HISTORIAL_OBJETOS Bitácora de transacciones procesadas por el Web Service
SEP_OBJETOS_BD Nombre de objetos que ejecutará el servicio
SEP_PARAMETROS_OBJETOS_BD Parámetros de objetos configurados
SEP_ROLES Roles del servicio
SEP_SERVICIO_USUARIOS Servicios por usuario
SEP_SERVICIOS Servicios que ejecutará el web service
SEP_TIPOS_DATOS Tipos de Datos de los parámetros
SEP_USUARIO_ROLES Usuario por Roles
SEP_USUARIOS Usuarios del servicio
SEP_SERVICIO_ROLES Servicio por Roles
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Descripción detallada de los campos
Cuadro 2
SEP_GRUPOS_SERVICIOS
CAMPO TIPO
PK ID_GRUPO_SERVICIO INT
DESCRIPCIÓN VARCHAR
NOMBRE VARCHAR
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
102
Cuadro 3
SEP_HISTORIAL_OBJETOS
CAMPO TIPO
ID_HISTORIAL INT
ID_SERVICIO INT
ID_OBJETO INT
FECHA_INGRESO_HISTORIAL DATETIME2
FECHA_INICIO_OBJETO DATETIME2
FECHA_FIN_OBJETO DATETIME2
FECHA_INICIO DATETIME2
CODIGO_SALIDA_OBJETO INT
MENSAJE_SALIDA_OBJETO VARCHAR
CODIGO_SALIDA INT
MENSAJE_SALIDA VARCHAR
ESTADO VARCHAR
PARAMETROS_RECIBIDOS VARCHAR
RESPUESTA_RETORNADA VARCHAR
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Cuadro 4
SEP_OBJETOS_BD
CAMPO TIPO
PK ID_OBJETO_BD INT
NOMBRE_OBJETO VARCHAR
DESCRIPCION VARCHAR
CANTIDAD_PARAMETROS VARCHAR
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
103
Cuadro 5
SEP_PARAMETROS_OBJETOS_BD
CAMPO TIPO
PK ID_PARAMETRO_OBJETO_BD INT
NOMBRE_PARAMETRO VARCHAR
DESCRIPCION VARCHAR
ENTRADA_SALIDA VARCHAR
ORDEN INT
FK ID_TIPO_DATO INT
FK ID_OBJETO_BD INT
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Cuadro 6
SEP_SERVICIOS
CAMPO TIPO
PK ID_SERVICIO INT
NOMBRE VARCHAR2
DESCRIPCION VARCHAR2
FECHA_DESDE DATE
FECHA_HASTA DATE
ESTADO VARCHAR2
AUTENTIFICACION VARCHAR2
FK ID_OBJETO_BD INT
FK ID_GRUPO_SERVICIO INT
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
104
Cuadro 7
SEP_ROLES
CAMPO TIPO
PK ID_ROLES INT
NOMBRE VARCHAR
DESCRIPCION VARCHAR
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Cuadro 8
SEP_SERVICIOS_USUARIOS
CAMPO TIPO
PK/FK ID_USUARIO INT
PK/FK ID_SERVICIO INT
FECHA_DESDE DATETIME
FECHA_HASTA DATETIME
ESTADO VARCHAR2
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Cuadro 9
SEP_TIPOS_DATOS
CAMPO TIPO
PK ID_TIPO_DATO INT
NOMBRE VARCHAR2
LONGITUD INT
FORMATO VARCHAR2
TIPO VARCHAR2
ESCALA INT
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
105
Cuadro 10
SEP_USUARIOS_ROLES
CAMPO TIPO
PK/FK ID_ROLES INT
PK/FK ID_USUARIO INT
FECHA_DESDE DATETIME
FECHA_HASTA DATETIME
ESTADO VARCHAR2
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Cuadro 11
SEP_USUARIOS
CAMPO TIPO
PK ID_USUARIO INT
FK NOMBRE VARCHAR
CLAVE VARCHAR
DESCRIPCION VARCHAR
FECHA_DESDE DATETIME
FECHA_HASTA DATETIME
ESTADO VARCHAR
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
106
Cuadro 12
SEP_SERVICIO_ROLES
CAMPO TIPO
FK/PK ID_SERVICIO INT
FK/PK ID_ROLES INT
FECHA_DESDE VARCHAR
FECHA_HASTA VARCHAR
ESTADO DATETIME
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
107
Procedimientos Almacenados
Cuadro 13
CREA_SERVICIO_PROCEDIMIENTO_AUT
PARAMETROS TIPOS DESCRIPCION
NOMBRE_SERVICI
O
VARCHAR(50) Nombre del nuevo servicio.
DESCRIPCION_SE
RVICIO
VARCHAR(20
00)
Breve descripción del
servicio.
NOMBRE_OBJET
O
VARCHAR(50
0)
Nombre del procedimiento
almacenado
DESCRIPCION_OBJETO
VARCHAR(2000)
Breve descripción del procedimiento.
ID_GRUPO INT Grupo al que pertenece el servicio
ID_SERVICIO INT OUT Código del servicio generado.
ID_OBJETO INT OUT Código del objeto generado.
CODIGO_SALIDA INT OUT Código de ejecución del procedimiento.
MENSAJE_SALIDA VARCHAR(MAX) OUT
Mensaje de ejecución del procedimiento.
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
108
Diagrama de Clases Gráfico 4
Elaborado por: Xavier Mora
Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
109
Diagrama de Secuencia
Gráfico 5
Elaborado por: Xavier Mora Fuente: Datos del proyecto
Universidad de Guayaquil
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
110
Diagrama Detallado de Red
Gráfico 6
Elaborado por: Xavier Mora Fuente: Datos del proyecto