Post on 23-Jun-2018
SISTEMA TELEMATICO PARA LA ESTIMACION DE ESFUERZO DE
PROYECTOS DE SOFTWARE
ALEXANDER ESCAMILLA VILLARRAGA
NELLY YURANI MARTÍNEZ ZAMUDIO
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD TECNOLÓGICA
INGENIERIA TELEMÁTICA
BOGOTÁ
2017
SISTEMA TELEMATICO PARA LA ESTIMACION DE ESFUERZO DE
PROYECTOS DE SOFTWARE
ALEXANDER ESCAMILLA VILLARRAGA
Código: 20152678122
NELLY YURANI MARTÍNEZ ZAMUDIO
Código: 20152678028
Trabajo de grado para optar el título de
INGENIERO EN TELEMÁTICA
Tutor:
Ing. NORBERTO NOVOA TORRES
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD TECNOLÓGICA
INGENIERIA TELEMÁTICA
BOGOTÁ
2017
Nota de aceptación
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
Firma del Jurado
___________________________________
Firma del Tutor
TABLA DE CONTENIDO
INTRODUCCIÓN 8
RESUMEN 9
ABSTRACT 10
1. FASE DE PLANEACIÓN 11
1.1. Titulo 11
1.2. Tema 11
1.3. Planteamiento del problema 11
1.3.1. Descripción 11
1.3.2. Pregunta de investigación 12
1.4. Objetivos 12
1.4.1. Objetivo general 12
1.4.2. Objetivo especifico 12
1.5. Alcances 13
1.6. Delimitaciones 13
1.6.1. Técnica 13
1.6.2. Espacial 13
1.6.3. Temporal 13
1.7. Recursos 14
1.7.1. Humanos 14
1.7.2. Físicos 14
1.7.3. Tecnológicos (software) 14
1.7.4. Financieros 15
1.8. Marco de referencia 15
1.8.1. Marco teórico 17
1.8.2. Marco metodológico 36
1.9. Cronograma de actividades 40
1.10. Propuesta metodológica 41
2. Análisis, diagnóstico y levantamiento de requerimientos 43
2.1. Descripción 43
2.1.1. Portafolio de servicios 43
2.2. Análisis 43
2.3. Diagnostico 44
3. Requisitos, elementos y restricciones el sistema 46
3.1. Requisitos 46
3.2. Características operacionales 48
3.3. Elementos del sistema 48
3.4. Restricciones del sistema 49
4. Diseño módulos del sistema telemático 50
4.1. Modelo de procesos 50
4.1.1. Administración de usuarios 50
4.1.2. Crear estimación 52
4.1.3. Consultar estimación 53
4.2. Desarrollo de módulos 54
4.2.1. Módulos aplicación 54
4.2.2. Microservicio 56
4.2.3. PostgreSQL 56
4.2.4. Node.js 56
4.2.5. Arquitectura 57
4.2.5.1. Análisis de protocolos de comunicaciones 57
4.2.5.2. Conclusiones de protocolos 60
4.2.5.3. Diseño general del sistema telemático 60
5. Pruebas 62
5.1. Login 62
5.2. Crear nueva estimación 64
5.3. Evidencias pruebas 68
5.4. Conclusiones pruebas 70
6. Propuesta de nuevo proceso de estimación 71
7. Evaluación de la solución 73
8. CONCLUSIONES 74
9. Referencias Bibliográficas 75
ANEXOS 76
LISTA DE TABLAS
Tabla 1: Recursos financieros........................................................................... 15
Tabla 2: Clasificación de los actores ................................................................. 32
Tabla 3: Clasificación de los casos de uso ....................................................... 32
Tabla 4: Cálculo de factores técnicos ............................................................... 34
Tabla 5: Peso factores de entorno o ambientales ............................................. 35
Tabla 6: Requisitos iniciales para el sistema telemático ................................... 47
Tabla 7: Set pruebas funcionalidad de login ..................................................... 62
Tabla 8: Set pruebas crear nueva estimación ................................................... 64
Tabla 9: Evidencias Pruebas Login ................................................................... 68
Tabla 10: Evidencias Pruebas Crear Estimación .............................................. 69
LISTA DE ILUSTRACIONES
Ilustración 1: Sistema Telemático ..................................................................... 19
Ilustración 2: Ejemplo aplicación con arquitectura monolítica ........................... 21
Ilustración 3: Ejemplo aplicación arquitectura de microservicios ...................... 22
Ilustración 4: Imagen alegórica del sistema operativo ...................................... 25
Ilustración 5: Pasos básicos en el método de estimación Puntos Caso de Uso 31
Ilustración 6: Cronograma ................................................................................. 40
Ilustración 7: Diagrama Flujo Creación Usuarios .............................................. 51
Ilustración 8: Diagrama Flujo Creación Nueva Estimación ............................... 52
Ilustración 9: Diagrama Flujo Consultar Estimación .......................................... 53
Ilustración 10: Diagrama de clases sistema telemático .................................... 54
Ilustración 11: Diagrama de componentes del sistema telemático ................... 55
Ilustración 12: Capas Modelo TCP/IP ............................................................... 59
Ilustración 13: Diseño general sistema telemático ............................................ 61
Ilustración 14: Flujo proceso general sistema telemático .................................. 61
Ilustración 15: Diagrama Flujo Propuesta Nuevo Proceso Estimación ............. 71
8
INTRODUCCIÓN
Todas las organizaciones basan su funcionamiento en el desarrollo de
actividades, que se nutren de procesos que permiten alcanzar un objetivo
específico. Dicha gestión de procesos debe ser optima y apoyada de tecnología,
buscando así alcanzar los mejores resultados, que beneficien a la compañía en
su participación competitiva y comercial, en cada uno de los escenarios que se
presentan en el día a día.
Para las empresas dedicadas al desarrollo de software, es también necesario
ayudar a optimizar todos los procesos de cada uno de los grupos de interés que
la componen, y que benefician la organización tanto interna como externamente.
Dentro de la primera etapa (planificación), una de las principales actividades, es
la estimación del producto a desarrollar, tarea que puede ser compleja puesto
que al principio se conoce muy poco acerca de la solución que necesita
determinado cliente y elaborar una propuesta se convierte en algo intuitivo (juicio
de experto) y riesgoso, a eso debe sumarse que a causa de las presiones de la
competencia y demanda del mercado, es necesario dar una propuesta rápida que
incluya tiempos y costos del proyecto.
Para mitigar el impacto de las malas estimaciones, las empresas han usado el
concepto de Punto de Función para realizar esta actividad, puesto que éste
representa una medida independiente de la tecnología de software (por ejemplo,
de los frameworks o librerías particulares a utilizar) que se utilice en el desarrollo
del software. El Punto de Función (PF) es una unidad de medida base para un
requerimiento de usuario, caracterizada a través de un conjunto de tipos de
componentes, como por ejemplo entradas y salidas de datos, archivos, consultas,
etc.
Para abordar la anterior situación, el presente trabajo tiene como propósito
desarrollar un sistema telemático para la estimación de esfuerzo de proyectos de
software, el cual se integre y comunique con microservicios por medio de una API
rest, para ayudar en el proceso de estimación de la empresa BITS Américas
S.A.S.
9
RESUMEN
Actualmente la empresa BITS Américas S.A.S, realiza el proceso de estimación
de proyectos de software mediante el juicio de experto, el cual de acuerdo a su
criterio y experiencia diligencia un formato Excel, en el que establece los casos
de uso y la complejidad que va a tener cada uno, y de esta forma lograr dar al
cliente el tiempo y esfuerzo que tendrá el desarrollo de la necesidad.
Dicha actividad no cuenta con un sistema que facilite el cálculo ágil de la
estimación de tiempo y esfuerzo requeridos para el desarrollo de un proyecto de
software, y que a este soportado por una metodología reconocida y fiable que
reduzca el margen de error en las estimaciones de la empresa como lo es el
método de Puntos de Casos de Uso. Es por ello que surge la necesidad de un
sistema telemático basado en arquitectura de micro servicios, que permita un
acceso rápido y eficiente al histórico de todas las estimaciones de la empresa, y
también la creación de nuevas estimaciones, en donde se pueda obtener el
tiempo y el esfuerzo que se necesita para un nuevo proyecto.
El sistema y el documento se basan en lo definido por las fases de la metodología
de mejoramiento continua PHVA, con ella pudo establecerse claramente el
alcance y limitaciones, como también el orden en el que debía trabajarse el
proyecto. Siguiendo lo planteado por la metodología implementada, se realiza un
análisis, diagnóstico de la necesidad de la empresa para el tema de las
estimaciones de nuevos proyectos de software, identificados se evalúan las
características y restricciones que tendrá el sistema telemático y lo que se va a
desarrollar para poder optimizar el proceso de la empresa.
Como posible solución, para mejorar el proceso interno de TI, se crea un prototipo
que permite realizar el cálculo de estimación de esfuerzo y tiempo soportado bajo
lo que define el método de Puntos por casos de uso, cuando ya esté terminado
el sistema, se realizarán pruebas de aceptación para validar la funcionalidad de
todos los módulos y que permitan identificar si la solución satisface las
necesidades del usuario final.
Por último, se dan a conocer las conclusiones del proyecto.
10
ABSTRACT
Currently the company BITS Americas SAS, carry out the process of estimating
software projects by the evaluation expert, who according to his criteria and
experience diligently an Excel format, which establishes the use cases and the
complexity that will have each one, and in this way achieve the client the time and
effort that have the development of the need.
This activity does not have a system that facilitates the calculation of the
estimation of time and effort necessary for the development of a software project,
and that is supported by a recognized and reliable methodology that reduces the
margin of error in the estimates of the company such as the Use Point Points
method. That is why the need arises for a telematic system based on a micro
services architecture, which allows a fast and efficient access to the history of all
the company's estimates, as well as the creation of new estimates, where you can
get the time and effort that is needed for a new project.
The system and the document are based on the phases of the continuous
improvement methodology. PHVA, with the same meaning as the scope and limit,
also did. Following the proposed methodology, an analysis, the diagnosis of the
need of the company for the state of the new software projects, is carried out, the
characteristics and restrictions that the telematic system will be assessed and
what will be developed to be able to optimize the process of the company.
As a possible solution, to improve the internal IT process, a prototype is created
that allows calculation of the time and effort estimation supported under which the
method of Points of use can be defined, when the system is finished , acceptance
tests will be performed to validate the functionality of all the modules and that
allow to identify if the solution satisfies the needs of the end user.
Finally, the best conclusions of the project are given.
11
1. FASE DE PLANEACIÓN
1.1. Titulo
Sistema telemático para la estimación de esfuerzo de proyectos de software.
1.2. Tema
Uso de un prototipo de sistema telemático que sirva como apoyo al proceso de
estimación de desarrollo de software para la empresa BITS Américas S.A.S.
1.3. Planteamiento del problema
1.3.1. Descripción
Bits Américas S.A.S, es una empresa que se dedica al desarrollo de software
tanto a nivel nacional como internacional, llevando en el mercado de TI ya más
de 9 años. Actualmente para planificar un proyecto de software, la compañía
realiza las tareas de estimación de tiempos de forma tradicional, es decir,
basados en el juicio o Criterio de Experto, en donde el medidor usa su perspectiva
y experiencia para realizar dicha actividad.
Después de la experiencia propia y de la observación de los procesos de
planificación que usa la empresa para los proyectos de software, se identificó que
la estimación de tiempos resulta ser una labor compleja y generalmente poco
realista, que conduce a pronosticar valoraciones imprecisas, debido a factores
como: no disponer de información detallada del proyecto precisando un tamaño
equivocado, basarse en información histórica de proyectos anteriores (todos los
proyectos no son iguales), determinar una complejidad sin tener en cuenta los
recursos que se van a utilizar, incertidumbre estructural, no contar con un experto
de negocio o un individuo que conozca las plataformas o solución que el cliente
necesita de acuerdo a la función de su negocio, y no tener un método ágil para
la estimación.
A continuación, se listan algunas consecuencias o impactos negativos que tiene
una incorrecta definición de estimación de un proyecto:
● Inconformidad en los clientes pues estos requieren respuestas inmediatas.
12
● Desfase de los tiempos y costos del proyecto.
● Problemas gerenciales y de administración del proyecto.
● Incumplimiento en fechas de entrega, atrasando el cronograma del
proyecto.
● Impactos negativos en el ciclo de vida de desarrollo del software.
● Baja calidad en el producto final entregado.
● Reputación de la empresa
1.3.2. Pregunta de investigación
¿Cómo mejorar el proceso de estimación de esfuerzo de los proyectos de
software en Bits Américas S.A.S?
1.4. Objetivos
1.4.1. Objetivo general
Crear un sistema telemático que busque estimar el esfuerzo de proyectos de
software aplicando la metodología puntos por casos de uso y arquitectura de
micro servicios que se comuniquen a través de una API basada en el protocolo
HTTP para Bits Américas S.A.S.
1.4.2. Objetivo especifico
● Planear un nuevo proceso para la actividad de estimación que permita
establecer el esfuerzo de un proyecto de software dentro de la compañía
Bits Americas S.A.S.
● Implementar un nuevo proceso que se apoye en un sistema telemático
realizando la integración y comunicación con microservicios por medio de
una API.
● Analizar los resultados obtenidos para verificar que soportan y están
alineados al alcance definido para el nuevo proceso de estimación.
● Evaluar los resultados obtenidos del nuevo proceso de estimación de
esfuerzo para la compañía Bits Américas con el fin de identificar las
posibles mejoras que pueden aplicarse.
13
1.5. Alcances
El prototipo de software será responsive, además de ser desarrollado con
tecnologías y herramientas libres (open source), por ello no representará en un
gasto económico grande. Por otro lado, la parte lógica estará apuntando
directamente a lo que define la métrica de estimación de software de puntos
función.
Este prototipo contará con las siguientes características:
● Servicio de login.
● Registro de nuevos usuarios.
● Registro de nuevas estimaciones.
● Consulta de histórico de estimaciones y detalle de cada una.
1.6. Delimitaciones
1.6.1. Técnica
● Este proyecto está enfocado hacia el desarrollo de un prototipo de sistema
telemático responsive como herramienta de apoyo para líderes de
proyecto y otros interesados de la empresa Bits Américas S.A.S para
realizar el proceso de estimación de software.
● Las tecnologías usadas para el desarrollo de este prototipo son:
PostgreSQL, JavaScript, frameworks AngularJs y LoopBack.
1.6.2. Espacial
El prototipo que se pretende desarrollar con este proyecto está dirigido a
proporcionar una posible solución para la empresa Bits Américas S.A.S.
1.6.3. Temporal
La duración de los procesos correspondientes al desarrollo integral del proyecto
está contemplada dentro del cronograma (ver página 39) de trabajo que está
previsto para este por 13 semanas.
14
1.7. Recursos
1.7.1. Humanos
● 2 ingenieros telemáticos. ● 1 tutor.
1.7.2. Físicos
• PC Intel Cpre i5-5200U CPU 2.20 GHz
RAM 12.0 GB
Disco Duro: 600 GB
• Sony Xperia T2
1.7.3. Tecnológicos (software)
● Microsoft Word 2015 ● Microsoft Project 2015
● Node.Js ● Angular 2.0
● Loopback ● Ubuntu 16.04.03 LTS
15
1.7.4. Financieros
Tabla 1: Recursos financieros
Actividad de costo
Descripción Cantidad Valor unitario en pesos
Valor total en pesos
Papelería Fotocopias 50 $150 $7.500
Resma de papel 2 $13.000 $26.000
Impresiones 450 $150 $67.500
Medios magnéticos de almacenamiento
3 $1.000 $3.000
Tiempo del tutor
Medida en horas
40 $35.000 $1’400.000
Tiempo del estudiante
Medida en meses
3 $500.000 $1’500.000
Transporte Días 30 $4.000 $120.000
Otros Acceso a internet y luz por mes
$225.000
Eventualidades $600.000
VALOR A PAGAR $3’949.000 Fuente: Propia
1.8. Marco de referencia
En el sector del mercado de desarrollo de software, la creciente competitividad
en el mercado hace que las empresas no sean ajenas al hecho de requerir
sistematizar procesos y actividades, esto con el fin de ser más productivos y
eficaces, y a su vez eliminar costos y tiempo en cuanto a las tareas que se ejercen
diariamente en su cadena de producción. Es por ello que implementar una
herramienta de apoyo de estimación (que es una de las bases más importantes
para poder planificar correctamente el proyecto) que sirva a todos los miembros
del equipo de trabajo que se involucra en el desarrollo del proyecto, reduzca la
subjetividad e índices de errores y otorgue un criterio de acierto alto en el proceso
respectivo es de utilidad.
En la actualidad existen varios métodos de estimación de software, como lo son:
por puntos función: IFPUG, NESMA, Mk-II, COSMIC, FiSMA y Karner (puntos por
casos de uso); basados en el conocimiento empírico de los expertos (líderes de
proyectos y/o gerentes); por analogía, que se basa en experiencias
16
documentadas; COCOMO -(Constructive Cost Model) II- y SLIM (Software
LIfecycle Management)1. Algunos de los criterios para la estimación son:
1. Clasificar cada interacción entre actor y caso de uso según su complejidad
y asignar un peso en función de ésta. La complejidad de los actores puede
corresponderse con una de las tres categorías posibles:
a. Simple, representa a otro sistema con una API definida. Se le asigna
un peso de valor 1.
b. Medio, representa a otro sistema que interactúa a través de un
protocolo de comunicaciones. Por ejemplo, TCP/IP o a través de un
interfaz por línea de comandos. Se le asigna un peso de valor 2.
c. Complejo, la interacción se realiza a través de una interfaz gráfica. Se
le asigna un peso de valor 3.
2. Calcular la complejidad de cada caso de uso según el número de
transacciones (incluyendo caminos alternativos) o pasos del mismo.
3. Calcular los Puntos Casos de Uso No Ajustados (UUCP) del sistema. Se
obtienen sumando los Puntos Casos de Uso de todos y cada uno de los
actores y casos de uso que se han identificado y catalogado en función de
su complejidad.
4. Cálculo de los Factores Técnicos (TCF). A cada uno de los Factores
Técnicos de la tabla siguiente se le asigna un valor de influencia en el
proyecto entre 0 (no tiene influencia) a 5 (esencial), 3 se considera de
influencia media.
5. Cálculo de los Factores de Entorno. A cada uno de los Factores de Entorno
de la tabla siguiente se le asigna un valor de influencia en el proyecto entre
0 (no tiene influencia) a 5 (esencial), 3 se considera de influencia media.
6. Obtención de los Puntos Casos de Uso Ajustados. Una vez calculados los
dos factores calculamos el valor ajustado de Puntos Casos de Uso.
Lo anterior da una visión general de las pautas a tener en cuenta dentro del
sistema de estimación y explícitamente sobre algunos criterios utilizados para
realización de esta tarea. Ahora bien, como se ha expresado anteriormente hacer
un sistema de estimación que ayude y satisfaga las necesidades prioritarias de
BITS Americas S.A.S, cuyas operaciones para este proceso actualmente son
manejados de forma tradicional, es decir, por medio del juicio u opinión de un
experto, presenta inconsistencias, pérdida de tiempo y costos que se ven
reflejados en la puesta en marcha de cada proyecto y que podría ser mejorado
con la implementación de una herramienta que realice un cálculo con base a
ciertos criterios.
17
Por otro lado, al centrarse en la investigación de antecedentes que hablen sobre
métodos y herramientas de estimación de software a nivel nacional, no se
encuentran sistemas telemáticos que apoyen o sean una base para la solución
propuesta, por lo cual es tal vez el primer acercamiento al problema planteado
identificando los elementos y características que pueden usarse para resolverse
y que se espera sirvan como base para la realización de nuevas investigaciones
para otros autores.
Ya por último, a la hora de implementar cualquier metodología o referencia guía
dentro de la realización del proyecto, es necesario poder comparar
requerimientos y necesidades similares; además de tener en cuenta los posibles
escenarios que se puedan presentar a lo largo de la implementación, uno de los
factores importantes es tener en cuenta las fórmulas o criterios que hacen parte
del cálculo de la estimación, incluyendo un trabajo con calidad y con ayuda de
tecnologías al alcance y sistematización de información que puede disminuir
tiempos dedicados a la actividad y principalmente costos dentro del proceso.
1.8.1. Marco teórico
Telemática
Etimológicamente el término telemática o teleinformática proviene del vocablo
griego “tele” que significa “lejos o distancia” y del vocablo de origen latín “matica”
que significa información (fuente http://conceptodefinicion.de/telematica/). Y hace
referencia a la conjunción de telecomunicaciones e informática se refiere a la
disciplina que trata la comunicación entre equipos de computación distantes. El
nombre Telemática se genera de la palabra telecomunicaciones, y la palabra
Informática.
La Telemática cubre un campo científico y tecnológico de una considerable
amplitud, englobando el estudio, diseño, gestión y aplicación de las redes y
servicios de comunicaciones, para el transporte, almacenamiento y procesado de
cualquier tipo de información (datos, voz, vídeo, etc.), incluyendo el análisis y
diseño de tecnologías y sistemas de conmutación. Es por esto que los sistemas
telemáticos en su mayoría forman parte de sistemas informáticos, es decir, son
subsistemas de los sistemas informáticos o sistemas de información. La
telemática también incluye servicios como el e-learning, comercio electrónico, TV
digital, etc.
La Telemática abarca entre otros conceptos los siguientes planos funcionales:
18
● El plano de usuario, donde se distribuye y procesa la información de los
servicios y aplicaciones finales;
● El plano de señalización y control, donde se distribuye y procesa la
información de control del propio sistema, y su interacción con los
usuarios;
● El plano de gestión, donde se distribuye y procesa la información de
operación y gestión del sistema y los servicios, y su interacción con los
operadores de la red.
Cada uno de los planos se estructura en subsistemas denominados entidades de
protocolo, que a su vez se ubican por su funcionalidad en varios niveles.
¿Qué es la telemática?
La Telemática es una disciplina científica y tecnológica que surge de la evolución
y fusión de la telecomunicación y de la informática. El término Telemática se
acuñó en Francia (télématique)
Ahora bien, el concepto, como se indica en este informe, también puede ligarse
a un origen estadounidense: compunication, o como se utiliza más habitualmente
Computer and Communications. No obstante, no es casualidad la diferencia entre
los términos: responden a contextos diferentes, en efecto, hay matices claves a
distinguir.
La Telemática cubre un campo científico y tecnológico de una considerable
amplitud, englobando el estudio, diseño, gestión y aplicación de las redes y
servicios de comunicaciones, para el transporte, almacenamiento y procesado de
cualquier tipo de información (datos, voz, vídeo, etc.), incluyendo el análisis y
diseño de tecnologías y sistemas de conmutación. Se la define como "la ciencia
que estudia el conjunto de técnicas que es necesario usar para poder transmitir
datos dentro de un sistema informático o entre puntos de él situados en lugares
remotos o usando redes de telecomunicaciones”1.
_______________________
1 Salazar, Fernando (2013), Dudas informáticas ¿Qué es la telemática? ¿Para qué sirve?, recuperado el 14 de octubre
del 2017, en http://dudasinformaticass.blogspot.com.co/
19
Sistema telemático
Un sistema telemático se encarga de interconectar ordenadores, terminales,
switch, router…..usando algún medio adecuado como el cable del teléfono,
coaxial, fibra, etc.
Cada vez que conectamos dos equipos informáticos separados por una distancia
y realizamos una transmisión de datos, estaremos hablando de un sistema
telemático.
No solo se compone de un ordenador y un cable o WiFi sino que, detrás de todo
eso, hay una información codificada que hay que convertir y los dispositivos que
realizan esas funciones, también están dentro de la definición2. Consta de los
siguientes elementos: Información, emisor, receptor y un canal; desde otro punto
de vista distinguimos elementos de software y hardware.
Ilustración 1: Sistema Telemático
Fuente: https://juleninforma.wordpress.com/2011/10/19/%C2%BFque-es-un-sistema-telematico/
_______________________
2 Rodriguez, Julen (2011), Que es un sistema telemático, recuperado el 14 de octubre del 2017, en
https://juleninforma.wordpress.com/2011/10/19/%C2%BFque-es-un-sistema-telematico/
20
Microservicios
Una “arquitectura de microservicios” es un enfoque para desarrollar una
aplicación software como una serie de pequeños servicios, cada uno
ejecutándose de forma autónoma y comunicándose entre sí, por ejemplo, a
través de peticiones HTTP a sus API3.
Normalmente hay un número mínimo de servicios que gestionan cosas comunes
para los demás (como el acceso a base de datos), pero cada microservicio es
pequeño y corresponde a un área de negocio de la aplicación.
Además, cada uno es independiente y su código debe poder ser desplegado sin
afectar a los demás. Incluso cada uno de ellos puede escribirse en un lenguaje
de programación diferente, ya que solo exponen la API (una interfaz común, a la
que le da igual el lenguaje de programación en la que el microservicio esté
programado por debajo) al resto de microservicios.
No hay reglas sobre qué tamaño tiene que tener cada microservicio, ni sobre
cómo dividir la aplicación en microservicios, pero algunos autores como Jon
Eaves caracterizan un microservicio como algo que a nivel de código podría ser
reescrito en dos semanas.
_______________________
3 García Oterino, Ana M. Del Carmen (2015), ¿Qué son los microservicios?, recuperado el 14 de octubre del 2017, en
http://www.javiergarzas.com/2015/06/microservicios.html
21
Comparativa Enfoque Monolítico vs Enfoque Microservicios
● Visión Monolítica
Ilustración 2: Ejemplo aplicación con arquitectura monolítica
Fuente: http://www.javiergarzas.com/2015/06/microservicios.html
En una arquitectura monolítica, la aplicación se desarrolla como una única unidad
que no necesitará de ningún componente externo para funcionar, todos los “ciclos
de cambio” están vinculados unos a otros, por lo que la más mínima modificación
en una remota sección de la app conllevaría a la creación y despliegue de una
versión completamente nueva. Se puede por ejemplo acceder a la página web
de una tienda, realizar compras, etc., gracias a un servidor, una máquina que
está ejecutando el código de la aplicación, en forma de archivo war, que
eventualmente se conecta a una base de datos para recuperar información.
Cuando un usuario compre un producto vía web, mostremos los productos
disponibles, etc., la aplicación responderá de una forma u otra, según la hayamos
programado, pero el código de las distintas lógicas de negocio (inventario, pagos,
envíos) aunque puede estar separado en distintos módulos del código, finalmente
se empaqueta en un único archivo ejecutable. Por eso la llamo arquitectura
monolítica.
22
Si hago un cambio en el módulo de pagos, tendré que subir a producción de
nuevo todo el código, incluido los módulos de inventario y envíos, a pesar de no
haberlos cambiado.
Además, para escalar la aplicación (por ejemplo, dar servicio a muchos usuarios)
tendré que ir ejecutando copias de mi aplicación bajo balanceadores de carga,
que vayan redireccionando a los usuarios hacia un sitio u otro, en función de si
el sistema está muy saturado. En este caso, tendré que replicar toda la aplicación,
aunque solo sea el módulo de pagos el que concentre la sobrecarga.
Pero, por otra parte, si mi aplicación no es muy compleja, la subida será sencilla y fácil de gestionar, ya que en este caso hablamos de un único archivo ejecutable.
Visión Microservicios
Ilustración 3: Ejemplo aplicación arquitectura de microservicios
Fuente: http://www.javiergarzas.com/2015/06/microservicios.html
En vez de tener un único ejecutable, cada componente es un ejecutable por sí
mismo, y los servicios se comunican entre sí a través de llamadas.
23
En este caso también tenemos un microservicio que implementa la interfaz web
con la que interactúan los usuarios y cierta lógica por debajo para llamar al
microservicio de pagos, inventario y envíos cuando sea necesario.
Como beneficios con respecto al anterior enfoque tenemos que:
● Cada microservicio se puede desplegar de forma independiente: un
cambio en el módulo de inventario no afectará a los demás, solo
tendremos que subir ese módulo.
● Es fácil de entender, ya que la lógica de negocio está bien separada.
● Facilita la gestión de equipos multifuncionales y autónomos. Por sí mismo,
cada microservicio es multifuncional: tiene una parte de base de datos, de
backend, etc., además de ser independiente de los demás. Podemos
formar equipos multifuncionales que se encarguen de varios
microservicios, escalando el proceso de desarrollo de forma más sencilla
(recuerda el post de la ley de Conway, tu arquitectura es reflejo de la
organización de tu equipo y al revés, y puede llegar a facilitar o dificultar
la gestión técnica).
● Es más fácil de escalar a nivel de software, ya que en lugar de replicar
toda la aplicación y gestionarlo con balanceadores, replicaremos los
microservicios que tengan más carga.
Ventajas de uso
A continuación, se listan algunas de los pros que tiene el uso de arquitectura de
microservicios4:
● Otorga a los desarrolladores libertad de desarrollar y desplegar servicios
de forma independiente.
● Un microservicio se puede desarrollar con un equipo de trabajo mínimo.
● Se pueden usar diferentes lenguajes de programación en diferentes
módulos.
● Fácil integración y despliegue automático (por ejemplo, con Jenkins).
● Fácil de entender y modificar, por lo que la integración de nuevos
miembros al equipo de desarrollo será muy rápida.
● Los desarrolladores podrán hacer uso de las tecnologías más actuales.
● El uso de contenedores hará el desarrollo y despliegue de la app mucho
más rápido.
_______________________
4 A, Esaú (2016), ¿Qué son los microservicios?, recuperado el 14 de octubre del 2017, en
https://openwebinars.net/blog/microservicios-que-son/
24
● Funcionalidad modular, con lo que la modificación de un módulo no
afectará al funcionamiento del resto.
● Fácil de escalar e integrar con aplicaciones de terceros.
JavaScript
Es un lenguaje de programación que se utiliza principalmente para crear páginas
web dinámicas.
Una página web dinámica es aquella que incorpora efectos como texto que
aparece y desaparece, animaciones, acciones que se activan al pulsar botones
y ventanas con mensajes de aviso al usuario.
Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo
que no es necesario compilar los programas para ejecutarlos. En otras palabras,
los programas escritos con JavaScript se pueden probar directamente en
cualquier navegador sin necesidad de procesos intermedios.
Se utiliza principalmente en su forma del lado del cliente (client-side),
implementado como parte de un navegador web permitiendo mejoras en la
interfaz de usuario y páginas web dinámicas4 aunque existe una forma de
JavaScript del lado del servidor(Server-side JavaScript o SSJS). Su uso en
aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones
de escritorio (mayoritariamente widgets) es también significativo5.
Loopback
Es un framework open-source (licencia MIT) para Node.js que permite crear
aplicaciones de forma sencilla6:
● Creación de APIS REST con un wizard CLI.
● Creación de modelos.
● API Explorer.
_______________________
5 Wikipedia, (2017), JavaScript, recuperado el 14 de octubre del 2017, recuperado en
https://es.wikipedia.org/wiki/JavaScript
6 García, Luis Miguel (2016), Mi primera aplicación con StrongLoop LoopBack, recuperado en
https://unpocodejava.com/2016/04/05/mi-primera-aplicacion-con-strongloop-loopback/
25
● Configuración de la autenticación y autorización.
● Conexión con diversos Data Stores: MySQL, Oracle, MongoDB,
Postgresql, entre otras.
● SDK para Android, Java, iOS y Javascript.
● Addons, por ejemplo para soportar notificaciones Push, login social,…
● StrongLoop Arc que es una UI para construir, desplegar, gestionar y
monitorizar aplicaciones LoopBack.
GNU/Linux
Es un sistema operativo: un conjunto de programas que le permiten interactuar
con su ordenador y ejecutar otros programas.
Un sistema operativo consiste en varios programas fundamentales que necesita
el ordenador para poder comunicar y recibir instrucciones de los usuarios; tales
como leer y escribir datos en el disco duro, cintas, e impresoras; controlar el uso
de la memoria; y ejecutar otros programas. La parte más importante de un
sistema operativo es el núcleo. En un sistema GNU/Linux, Linux es el núcleo. El
resto del sistema consiste en otros programas, muchos de los cuales fueron
escritos por o para el proyecto GNU. Dado que el núcleo de Linux en sí mismo
no forma un sistema operativo funcional, preferimos utilizar el término
“GNU/Linux” para referirnos a los sistemas que la mayor parte de las personas
llaman de manera informal “Linux”7.
Ilustración 4: Imagen alegórica del sistema operativo
Fuente: https://es.wikipedia.org/wiki/GNU/Linux
26
Linux está modelado como un sistema operativo tipo Unix. Desde sus comienzos,
Linux se diseñó para que fuera un sistema multi tarea y multi usuario. Estos
hechos son suficientes para diferenciar a Linux de otros sistemas operativos más
conocidos. Sin embargo, Linux es más diferente de lo que pueda imaginar. Nadie
es dueño de Linux, a diferencia de otros sistemas operativos. Gran parte de su
desarrollo lo realizan voluntarios de forma altruista.
En 1984 comenzó el desarrollo de lo que más tarde sería GNU/Linux cuando la
Free Software Foundation (Fundación de software libre, N. del t.) comenzó a
desarrollar un sistema operativo libre de tipo Unix, llamado GNU.
El proyecto GNU ha desarrollado un conjunto de herramientas de software libre
para ser utilizados por Unix™ y sistemas operativos tipo Unix como Linux. Estas
herramientas permiten a los usuarios desarrollar tareas que van desde las
mundanas (como copiar o eliminar ficheros del sistema) a las arcanas (como
escribir y compilar programas o hacer edición sofisticada en una gran variedad
de formatos de documento).
Aunque hay muchos grupos e individuos que han contribuido a Linux, la Free
Software Foundation ha sido quien más ha contribuido. No sólo creó la mayor
parte de las herramientas que se utilizan en Linux sino también la filosofía y
comunidad que hizo que Linux fuera posible.
El núcleo Linux apareció por primera vez en 1991, cuando un estudiante de
informática finlandés llamado Linus Torvalds anunció en el grupo de noticias de
USENET comp.os.minix, una primera versión de un núcleo de reemplazo para
Minix. Para más referencias consulte la página de historia de Linux en Linux
Internacional.
Linus Torvalds sigue coordinando el trabajo de varios cientos de desarrolladores
con la ayuda de cierto número de responsables de subsistemas. Existe una
página oficial del núcleo Linux. Se puede encontrar un excelente resumen
semanal de las discusiones en la lista de correo linux-kernel en Kernel Traffic.
Puede encontrar más información sobre la lista de correo linux-kernel en el
documento PUF de la lista de correo «linux-kernel».
Los usuarios de Linux tienen una gran libertad al elegir sus programas. Por
ejemplo, un usuario de Linux puede elegir entre docenas de distintos intérpretes
de línea de órdenes y entre distintos entornos de escritorio. Tantas opciones
confunden a veces a los usuarios de otros sistemas operativos que no están
_______________________
7 Debian Org (2017), ¿Qué es GNU/Linyx?, recuperado el 14 de octubre del 2017, en ht https://www.debian.org/releases/stable/arm64/ch01s02.html.es
27
acostumbrados a poder modificar el intérprete de línea de órdenes o el entorno
de escritorio.
Es menos probable que un sistema Linux se colapse, además tiene mejor
capacidad para ejecutar múltiples programas al mismo tiempo y es más seguro
que muchos otros sistemas operativos. Debido a estas ventajas, Linux es el
sistema operativo que ha experimentado mayor crecimiento en el mercado de los
servidores. Últimamente, Linux está empezando a ser popular entre los usuarios
domésticos y en empresas.
AngularJS
Es un framework de JavaScript de código abierto, mantenido por Google, que se
utiliza para crear y mantener aplicaciones web de una sola página. Su objetivo
es aumentar las aplicaciones basadas en navegador con capacidad de Modelo
Vista Controlador (MVC), en un esfuerzo para hacer que el desarrollo y
las pruebas sean más fáciles.
La biblioteca lee el HTML que contiene atributos de las etiquetas personalizadas
adicionales, entonces obedece a las directivas de los atributos personalizados, y
une las piezas de entrada o salida de la página a un modelo representado por las
variables estándar de JavaScript. Los valores de las variables de JavaScript se
pueden configurar manualmente, o recuperados de los recursos JSONestáticos
o dinámicos.
AngularJS está construido en torno a la creencia de que la programación
declarativa es la que debe utilizarse para generar interfaces de usuario y
enlazar componentes de software, mientras que la programación imperativa es
excelente para expresar la lógica de negocio.1 Este framework adapta y amplía
el HTML tradicional para servir mejor contenido dinámico a través de un data
binding bidireccional que permite la sincronización automática de modelos y
vistas. Como resultado, AngularJS pone menos énfasis en la manipulación
del DOM y mejora la testeabilidad y el rendimiento8.
Objetivos de diseño:
● Disociar la manipulación del DOM de la lógica de la aplicación. Esto mejora
la capacidad de prueba del código.
● Considerar a las pruebas de la aplicación como iguales en importancia a la
escritura de la aplicación. La dificultad de las pruebas se ve reducida
drásticamente por la forma en que el código está estructurado.
28
● Disociar el lado del cliente de una aplicación del lado del servidor. Esto
permite que el trabajo de desarrollo avance en paralelo, y permite la
reutilización de ambos lados.
● Guiar a los desarrolladores a través de todo el proceso del desarrollo de una
aplicación: desde el diseño de la interfaz de usuario, a través de la escritura
de la lógica del negocio, hasta las pruebas.
Angular sigue el patrón MVVM (Model View View-Model) de ingeniería de
software y alienta la articulación flexible entre la presentación, datos y
componentes lógicos. Con el uso de la inyección de dependencias, Angular lleva
servicios tradicionales del lado del servidor, tales como controladores
dependientes de la vista, a las aplicaciones web del lado del cliente. En
consecuencia, gran parte de la carga en el backend se reduce, lo que conlleva a
aplicaciones web mucho más ligeras8.
Postgresql
PostgreSQL es una de las opciones más interesantes en bases de datos
relacionales open-source. Michael Stonebraker inició el proyecto bajo el nombre
Post Ingres a mediados de los 80’s con la idea de solucionar problemas
existentes en las bases de datos en esa época. MySQL fue por mucho tiempo el
motor más popular; pero hoy es propiedad de Oracle y esto limita su evolución.
Es gratuito y libre, además de que hoy nos ofrece una gran cantidad de opciones
avanzadas. De hecho, es considerado el motor de base de datos más avanzado
en la actualidad. (Y Platzi tiene un Curso de PostgreSQL)
Una característica interesante de PostgreSQL es el control de concurrencias
multiversión; o MVCC por sus siglas en inglés. Este método agrega una imagen
del estado de la base de datos a cada transacción. Esto nos permite hacer
transacciones eventualmente consistentes, ofreciéndonos grandes ventajas en el
rendimiento.
En Postgres no se requiere usar bloqueos de lectura al realizar una transacción
lo que nos brinda una mayor escalabilidad. También PostgreSQL tiene Hot-
Standby. Este permite que los clientes hagan búsquedas (sólo de lectura) en los
servidores mientras están en modo de recuperación o espera. Así podemos
hacer tareas de mantenimiento o recuperación sin bloquear completamente el
sistema.
_______________________
8 Wikipedia (2017), Angular Js, recuperado el 14 de octubre del 2017, en https://es.wikipedia.org/wiki/AngularJS
29
Algunas de sus principales características son, entre otras9:
● Alta concurrencia
Mediante un sistema denominado MVCC (Acceso concurrente multi versión, por
sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en
una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada
usuario obtiene una visión consuntiva.
● Amplia variedad de tipos nativos
PostgreSQL provee nativamente soporte para:
Números de precisión arbitraria.
Texto de largo ilimitado.
Figuras geométricas (con una variedad de funciones asociadas).
Direcciones IP (IPv4 e IPv6).
Bloques de direcciones estilo CIDR.
● Direcciones MAC.
● Arrays.
Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que
pueden ser por completo indexables gracias a la infraestructura GiST de
PostgreSQL. Algunos ejemplos son los tipos de datos GIS creados por el
proyecto PostGIS.
Node.js
Es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la
capa del servidor (pero no limitándose a ello) basado en el lenguaje de
programación ECMAScript, asíncrono, con I/O de datos en una arquitectura
orientada a eventos y basado en el motor V8 de Google. Fue creado con el
enfoque de ser útil en la creación de programas de red altamente escalables,
como por ejemplo, servidores web. Fue creado por Ryan Dahl en 2009 y su
evolución está apadrinada por la empresa Joyent, que además tiene contratado
a Dahl en plantilla.
Dentro de sus características encontramos:
• Concurrencia: Node.js funciona con un modelo de evaluación de un único
_______________________
9 Wikipedia (2017), Angular Js, recuperado el 14 de octubre del 2017, en https://platzi.com/blog/que-es-postgresql/
30
hilo de ejecución, usando entradas y salidas asíncronas las cuales pueden
ejecutarse concurrentemente en un número de hasta cientos de miles sin
incurrir en costos asociados al cambio de contexto. Este diseño de
compartir un único hilo de ejecución entre todas las solicitudes atiende a
necesidades de aplicaciones altamente concurrentes, en el que toda
operación que realice entradas y salidas debe tener una función callback.
● V8: es el entorno de ejecución para JavaScript creado para Google
Chrome. Es software libre desde 2008, está escrito en C++ y compila el
código fuente JavaScript en código de máquina en lugar de interpretarlo
en tiempo real.
Node.js contiene libuv para manejar eventos asíncronos. Libuv es una
capa de abstracción de funcionalidades de redes y sistemas de archivo en
sistemas Windows y sistemas basados en POSIX como Linux, Mac OS X
y Unix. El cuerpo de operaciones de base de Node.js está escrito en
JavaScript con métodos de soporte escritos en C++.
● Módulos: Node.js incorpora varios "módulos básicos" compilados en el
propio binario, como por ejemplo el módulo de red, que proporciona una
capa para programación de red asíncrona y otros módulos fundamentales,
como por ejemplo Path, FileSystem, Buffer, Timers y el de propósito más
general Stream. Es posible utilizar módulos desarrollados por terceros, ya
sea como archivos ".node" pre compilados, o como archivos en javascript
plano. Los módulos Javascript se implementan siguiendo la
especificación CommonJS para módulos,8 utilizando una variable de
exportación para dar a estos scripts acceso a funciones y variables
implementadas por los módulos.9
Los módulos de terceros pueden extender node.js o añadir un nivel de
abstracción, implementando varias utilidades middleware para utilizar en
aplicaciones web, como por ejemplo los frameworks connect y express.
Pese a que los módulos pueden instalarse como archivos simples,
normalmente se instalan utilizando el Node Package Manager (npm) que
nos facilitará la compilación, instalación y actualización de módulos así
como la gestión de las dependencias.
● Desarrollo homogéneo entre cliente y servidor: puede ser combinado
con una base de datos documental (por ejemplo, MongoDB o CouchDB)
y JSON lo que permite desarrollar en un entorno de desarrollo JavaScript
31
unificado. Con la adaptación de los patrones para desarrollo del lado del
servidor tales como MVC y sus variantes MVP, MVVM, etc. Node.js facilita
la reutilización de código del mismo modelo de interfaz entre el lado del
cliente y el lado del servidor.
Puntos de caso de uso
El método de Punto de Caso de Uso (UCP – Use Case Point), está basado en
los tradicionales Puntos Función. Es un método originado de la tesis de master
de Gustav Karner (Karner, 1993), desarrollada mientras trabajaba en Objectory
AB, bajo supervisión de Ivar Jacobson (creador de los casos de uso)10.
Ilustración 5: Pasos básicos en el método de estimación Puntos Caso de Uso
Fuente: http://233gradosdeti.com/articulos/metodo-de-estimacion-de-puntos-de-caso-de-uso/
Cálculo de los Puntos Caso de Uso sin ajustar (UUCP – UNADJUSTED USE
CASE POINTS)
• Clasificar cada interacción entre actor y caso de uso según su
complejidad y asignarle un peso: Para clasificar la complejidad de los
actores se debe determinar la forma en la que cada actor interactúa con
el sistema que se va a desarrollar. En concreto, los actores se clasifican
en 3 categorías diferentes, simple, medio y complejo. Un actor simple
_______________________
10 Garzas, Javier (2016), Método de estimación de Puntos de Caso de Uso, recuperado el 14 de octubre del 2017, en http://233gradosdeti.com/articulos/metodo-de-estimacion-de-puntos-de-caso-de-uso/
32
representa otro sistema con una API definida, un actor medio es otro
sistema que interactúa a través de un protocolo como por ejemplo TCP/IP
o es una persona interactuando a través de una interfaz por línea de
comandos, y un actor complejo interactúa a través de una interfaz
gráfica.Una vez clasificado cada actor según su tipo de interacción, se le
asigna el peso correspondiente asociado a dicha interacción. En la Tabla
1, se presenta un resumen del procedimiento de clasificación de los
actores.
Tabla 2: Clasificación de los actores
Tipo de interacción Peso
Simple (a través de una API) 1
Medio (a través de un protocolo) 2
Complejo (a través de una interfaz
gráfica)
3
Fuente: http://233gradosdeti.com/articulos/metodo-de-estimacion-de-puntos-de-caso-de-uso/
• Calcular la complejidad de cada caso de uso según el número de
transacciones o pasos del mismo: Para realizar el cálculo de la
complejidad de un caso de uso se debe determinar el número de
transacciones, incluyendo los caminos alternativos. Una transacción es un
conjunto de actividades atómicas, donde se ejecutan todas ellas o
ninguna. En este contexto, cada caso de uso se debe clasificar en una de
las siguientes categorías: “simple”, “medio” o “complejo”. En concreto, un
caso de uso simple tiene 3 o menos transacciones, un caso de uso medio
de 4 a 7 transacciones, y un caso de uno complejo más de 7
transacciones. Una vez clasificado cada caso de uso, según el número de
transacciones, se le asigna el peso asociado a dicho número de
transacciones. En la Tabla 2 se presenta un resumen del procedimiento
de clasificación de los casos de uso.
Tabla 3: Clasificación de los casos de uso
Tipo de caso de uso Número de transacciones Peso
Simple 3 o menos 5
Medio De 4 a 7 10
Complejo 7 o más 15
Fuente: http://233gradosdeti.com/articulos/metodo-de-estimacion-de-puntos-de-caso-de-uso/
33
• Calcular los Puntos Caso de Uso no ajustados (UUCP – Unadjusted Use Case Points): Los UUCP se calculan sumando la dificultad de las interacciones y la complejidad de los casos de uso, es decir, sumando el total de los pesos de los actores (clasificados en el paso 1) y el total de los pesos para los casos de uso (clasificados en el paso 2).
Ejemplo: 2 interacciones por Web: 2 * 3 = 6 4 UCP complejos: 4 * 3 = 12 UUCP = 6 + 12 = 18
Cálculo de los factores técnicos (TCF)
Para ajustar los UUCP (Puntos Caso de Uso no ajustados) calculados en los
pasos anteriores, se deben tener en cuenta factores de ajuste, tanto factores
técnicos, como factores de entorno.
En el caso de los factores técnicos (TCF), a cada factor definido en la Tabla 3
(Ri) se le asigna un valor entre 0 y 5, dependiendo de su influencia en el proyecto.
En este sentido, asignar un valor 0 significa que el factor es irrelevante para el
proyecto, un valor 3 es promedio y un valor 5 significa que el factor es esencial.
Una vez que todos los factores técnicos tienen asignado el valor de la influencia,
se procede al cálculo de los resultados de cada factor, es decir, se realiza una
multiplicación entre la influencia del factor y su peso asociado, ver en la Tabla 3
la columna “Resultado”.
Cuando se han calculado los resultados de cada uno de los factores técnicos, se
aplica la expresión descrita a continuación, donde el sumatorio se corresponde a
la suma de los resultados de los factores técnicos.
TCF= 0,6 + (0,01 * Sumatorio).
34
Tabla 4: Cálculo de factores técnicos
Actor Descripción Peso
T1 Sistema distribuido. 2
T2 Objetivos de performance o tiempo de respuesta. 1
T3 Eficiencia del usuario final. 1
T4 Procesamiento interno complejo. 1
T5 El código debe ser reutilizable. 1
T6 Facilidad de instalación. 0.5
T7 Facilidad de uso. 0.5
T8 Portabilidad. 2
T9 Facilidad de cambio. 1
T10 Concurrencia. 1
T11 Incluye objetivos especiales de seguridad. 1
T12 Provee acceso directo a terceras partes. 1
T13 Se requiere facilidades especiales de entrenamiento a usuario. 1
Fuente: https://es.wikipedia.org/wiki/Puntos_de_caso_de_uso
Cálculo de los factores de entorno (EF)
Además de tener en cuenta los factores técnicos para el ajuste de los UUCP
(Puntos Caso de Uso no ajustados), en segundo lugar se deben contabilizar los
factores de entorno. Para ello, a cada factor de entorno definido en la Tabla 4 (Ri)
se le asigna un valor entre 0 y 5 dependiendo de su influencia en el proyecto.
Asignar un valor 0 significa que el factor es irrelevante para el proyecto, un valor
3 es promedio y un valor 5 significa que el factor es esencial.
Una vez que todos los factores de entorno tienen asignado el valor de la
influencia, se procede al cálculo de los resultados de cada factor, es decir, se
realiza una multiplicación entre la influencia del factor y su peso asociado, ver en
la Tabla 4 la columna “Resultado”.
Cuando se han calculado los resultados de cada uno de los factores, se aplica la
expresión descrita a continuación, donde el sumatorio se corresponde a la suma
de los resultados de los factores de entorno.
EF= 1,4 + (- 0,03 * Sumatorio).
35
Tabla 5: Peso factores de entorno o ambientales
Factor Descripción Peso
E1 Familiaridad con el modelo de proyecto utilizado. 1.5
E2 Experiencia en la aplicación. 0.5
E3 Experiencia en orientación a objetos. 1
E4 Capacidad del analista líder. 0.5
E5 Motivación. 1
E6 Estabilidad de los requerimientos 2
E7 Personal part-time -1
E8 Dificultad del lenguaje de programación -1
Fuente: https://es.wikipedia.org/wiki/Puntos_de_caso_de_uso
Cálculo de los puntos de caso de uso ajustados (UCP)
Finalmente, para obtener los Puntos Caso de Uso fajustados (UCP) se utilizan
los datos obtenidos en los pasos anteriores, Puntos Caso de Uso fno ajustados
(UUCP) y factores de ajuste (TCF y EF), haciendo uso de la expresión que se
presentan a continuación.
UCP = UUCP * TCF * EF
Se debe tener en cuenta que a través del cálculo de esta expresión obtenemos
una estimación del tamaño y no del esfuerzo.
Estimación del esfuerzo
Como ocurre en otros métodos de estimación, una vez obtenido el tamaño, se
puede obtener el esfuerzo. Para ello, se utiliza la siguiente expresión:
Esfuerzo = UCP * Factor de Productividad
El método originario propone usar un factor de ajuste (Factor de Productividad)
similar al que se usa en el método de Puntos Función clásico, si bien Karner
propone concretamente 20 personas – hora por cada Punto Caso de Uso (UCP).
Otras propuestas son las de Barnerjee que propone un rango entre 15 y 30 horas,
o la de Scheider y Winters, que sugiere un refinamiento de los factores de entorno
(EF), en concreto, proponen seguir el procedimiento que se presenta a
continuación:
Contar los factores de entorno entre T1 y T6 cuya influencia es inferior a 3
(influencia promedio) y los factores de entorno entre R7 y R8 que son superiores
36
a 3. Ver “factores de entorno” en la Tabla 4, pág. 5.
Entonces:
20 horas-hombre por UCP si el valor es =2
28 horas-hombre por UCP si el valor es =4
36 horas-hombre por UCP si el valor es =5, en este caso se debería replantear
el proyecto.
Se debe destacar, que el valor del esfuerzo estimado, calculado mediante la
expresión presentada anteriormente, no cubre todas las fases del ciclo de vida
del proyecto, sino que se refiere únicamente a las horas-hombre invertidas en el
desarrollo de la funcionalidad especificada en los casos de uso (fase de
codificación). La fase de codificación representa generalmente un 40% del
esfuerzo total del proyecto (ISBSG, 2005; Wikipedia, 2009).
En este sentido, para obtener el esfuerzo total del proyecto, se puede realizar un
nuevo ajuste que consiste en sumar a la estimación de esfuerzo obtenida por
UCP, las estimaciones de esfuerzo de las demás actividades relacionadas con el
desarrollo del software, que se pueden distribuir de la siguiente forma: análisis
10%, diseño 20%, codificación 40%, pruebas 15% y sobrecarga 15%.
1.8.2. Marco metodológico
El ciclo de Deming (de Edwards Deming), también conocido como círculo PDCA
(del inglés plan-do-check-act, esto es, planificar-hacer-verificar-actuar), es una
estrategia de mejora continua de la calidad en cuatro pasos, basada en un
concepto ideado por Walter A. Shewhart. Es muy utilizado por los sistemas de
gestión de la calidad (SGC) y los sistemas de gestión de la seguridad de la
información (SGSI)11.
Los resultados de la implementación de este ciclo permiten a las empresas una
mejora integral de la competitividad, de los productos y servicios, mejorando
continuamente la calidad, reduciendo los costos, optimizando la productividad,
reduciendo los precios, incrementando la participación del mercado y
aumentando la rentabilidad de la empresa u organización.
Este ciclo es de fácil aplicación, por lo cual se adapta a la forma en la que se
necesitan trabajar cada una de las actividades en el desarrollo de este proyecto:
planificación, se establecen los objetivos o lo que se pretende hacer en el
proyecto; hacer, consiste en la implementación de las acciones necesarias para
realizar lo que se planeó; verificar, si lo que hacemos corresponde a lo
37
planificado; actuar, corregir lo que no resulto de acuerdo a lo planeado y tomar
las medidas necesarias.
¿Qué es planificar?
Es donde se establecen objetivos y se identifican los procesos necesarios para
lograr unos determinados resultados de acuerdo a las políticas de la
organización. En esta etapa se determinan también los parámetros de
medición que se van a utilizar para controlar y seguir el proceso. En esta etapa,
es importante plasmarse las 7 preguntas claves, cuyas palabras en inglés
empiezan con W y H (modelo 5W + 2H):
● ¿Qué se debe hacer?
● ¿Por qué se va a hacer? Razones que justifican por qué se va a realizar
lo que se va a hacer.
● ¿Cómo lo voy a hacer? (actividades que permiten alcanzar los objetivos).
● ¿Cuándo se va a realizar? (cronograma de actividades).
● ¿Dónde se va a hacer?
● ¿Quién lo va a hacer?
● ¿Cuánto vale hacerlo? (recursos necesarios para la ejecución de cada
actividad).
Respondiendo las preguntas anteriores, permite planear de forma ordenada y
siempre los elementos necesarios para el desarrollo del plan (objetivos y como
lograrlos). Si se cuenta con una buena planificación, se dará paso a una correcta
ejecución y verificación.
¿Qué es la ejecución?
Consiste en la implementación de los cambios o acciones necesarias para lograr
las mejoras planteadas. Con el objeto de ganar en eficacia y poder corregir
fácilmente posibles errores en la ejecución, normalmente se desarrolla un plan
piloto a modo de prueba o testeo12.
_______________________
11 (2017) Circulo de Deming, recuperado el 14 de octubre del 2017,
https://es.wikipedia.org/wiki/C%C3%ADrculo_de_Deming
12 (2015) ¿En qué consiste el ciclo PHVA de mejora continua?, recuperado el 14 de octubre del 2017,
https://www.isotools.org/2015/02/20/en-que-consiste-el-ciclo-phva-de-mejora-continua/
38
¿Qué es la verificación?
Una vez se ha puesto en marcha el plan de mejoras, se establece un periodo de
prueba para medir y valorar la efectividad de los cambios. Se trata de una fase
de regulación y ajuste.
En esta etapa se pueden aparecer 3ciclos:
● Ciclo de mantenimiento: Si lo que hacemos, si corresponde a lo planeado,
es el momento de estabilizar el proceso, es importante definir claramente
que hacemos, capacitar a la gente, definir los métodos, los mecanismos
de operación y control y que sean claramente entendidos por la gente.
● Ciclos de corrección: Lo que se hace cuando lo que estaba previsto, no
corresponde a lo planeado. Comprende dos tipos de acciones: la
corrección, es decir, corregir el problema en ese instante; y la acción
correctiva: hacer para que el problema no vuelva a ocurrir.
● Ciclo de mejoramiento: Pasado un cierto tiempo, en mis procesos debo
pensar en qué puedo hacer para mejorar lo planeado. Aquí se pueden
generar ideas, tratar de buscar datos, el ver un análisis de la competencia,
el ver las potenciales tendencias, y determinar oportunidades de mejora.
Esto corresponderá las acciones preventivas, me lleva un análisis de
riesgos, y al mejoramiento continuo. Todo lo que hemos hecho en este
tercer ciclo, debemos incorporar el nuevo ciclo en mi etapa del planear.
Empieza entonces, a girar permanentemente el planear, hacer, verificar,
actuar. ¿Dónde se puede utilizar este ciclo? En todas las operaciones y
actividades diarias, podemos utilizarlo en la gerencia, empezando desde
la parte de planificación estratégica, podemos utilizarlo en cada uno de los
procesos que como organización ejecutamos. Podemos utilizarlo en
nuestra gestión de recursos humanos, podemos hacerlo aún en las
actividades del mejoramiento: qué mejoramiento planteamos, qué es lo
que hemos hecho en las etapas de mejoramiento, verificar si corresponde
a lo planeado para actuar para corregir o actuar para mejorar.
Un ciclo constante de planear, hacer, verificar, actuar, será un ciclo que
produce el mejoramiento en todos los rincones de la organización; a nivel
personal, a nivel empresarial, a nivel aún familiar. Para finalizar debo
preguntarme: ¿Qué hemos planificado el día de hoy, ¿qué hemos
ejecutado, hemos verificado si lo que hicimos corresponde a lo planeado,
¿cómo vamos a actuar para corregir, o cómo vamos a actuar para
mejorar?
39
¿Qué es actuar?
Realizadas las mediciones, en el caso de que los resultados no se ajusten a las
expectativas y objetivos predefinidos, se realizan las correcciones y
modificaciones necesarias. Por otro lado, se toman las decisiones y acciones
pertinentes para mejorar continuamente el desarrollo de los procesos.
40
1.9. Cronograma de actividades
Ilustración 6: Cronograma
Fuente: Propia
41
1.10. Propuesta metodológica
Con la implementación de esta metodología, se buscó dar un mejoramiento al
proceso de estimación de esfuerzo y tiempo que realiza la empresa para los
proyectos de software, de esta forma, se puede optimizar dicha actividad y
generar así una respuesta mucho más rápida a los clientes que tiene la
compañía. Dentro de la propuesta, se busca implementar un sistema telemático
que realice la estimación bajo el método de Puntos de Casos de uso.
Dentro de las características del ciclo de mejoramiento PHVA, se ha encontrado
lo siguiente:
PLANEAR:
● Fijar el alcance del sistema por medio de la recolección de la información
disponible, en torno al método de estimación de esfuerzo por puntos de
caso de uso.
● Determinar los procesos y lineamientos sobre los cuales se desarrollará el
sistema de estimación.
● Análisis de las herramientas y tecnologías a usar para el desarrollo del
sistema telemático.
● Identificar si los procesos satisfacen la necesidad a solucionar.
● Desarrollar el plan para el desarrollo del sistema propuesto.
HACER
• Diseñar el proceso para estimación de esfuerzo y tiempo de software
acorde a las necesidades de la empresa, implementando el método de
estimación Puntos de casos de uso.
• Elaborar un prototipo el cual busca apoyar la actividad de estimación.
VERIFICAR
● Analizar el resultado obtenido en el desarrollo del sistema propuesto, de
acuerdo al alcance y procesos fijados, con ello se podrá identificar si se ha
cumplido con el resultado deseado.
● Identificar posibles desviaciones apoyándose en la verificación que haga
Bits Américas S.A.S.
● Revisar los problemas y errores surgidos en el desarrollo del sistema
telemático e identificar qué se aprendió de ellos.
42
ACTUAR
• Tomar acciones para mejorar el desempeño del proceso.
43
2. Análisis, diagnóstico y levantamiento de requerimientos
En esta fase se lleva a cabo la captura y análisis de la necesidad que tiene la
empresa BITS Américas S.A.S en cuanto al problema de estimación de proyectos
de desarrollo de software, para ello se pretende hacer un levantamiento de
requerimientos que ayude a especificar y comprender el propósito esperado para
el sistema.
2.1. Descripción
BITS Américas S.A.S fue fundada en el año 2008 en Colombia, bajo el concepto
de proporcionar Desarrollo de Software a la Medida y soluciones basadas en
sitios Web para las empresas. La empresa, se ha consolidado en tres grandes
líneas de negocio: Desarrollo de software a la medida, IT service y Soporte de
sitios web. A su vez, la compañía ha logrado incursionar en diferentes segmentos
de mercado tanto en Colombia como internacionalmente en países como
Guatemala, Salvador, Costa Rica, Honduras, Bolivia, Paraguay y Uruguay,
Ghana, Tanzania, Chad, Rwanda, Congo y Senegal.
2.1.1. Portafolio de servicios
Dentro de los servicios que ofrece BITS Américas a sus clientes se encuentra:
● Diseño y desarrollo de software basados en páginas web apoyando el
Desarrollo web con Drupal y Desarrollo web con .Net.
● IT services: consultoría y asesoría en TI, pruebas (Testing), monitoreo y
mantenimiento de software web para garantizar la calidad, eficiencia y
funcionalidad de los sistemas de información..
● Soporte a sitios web: soporte a sitios web con el fin de ayudar a mejorar
los procesos TI, con la identificación oportuna.
2.2. Análisis
Al estar en contacto con el área de TI de la empresa, por medio de trabajo directo
con ellos, se observó que el proceso de estimación de software se realiza de las
siguientes formas:
44
● Estimación por analogía: se realiza una comparación del proyecto que
se va a tratar con proyectos similares finalizados por la empresa en el
pasado, se toman datos históricos y donde la información coincida para
poder estimar (esto generalmente lo realiza una persona del área
comercial).
● Criterio de experto: se consultan a varios expertos por lo general
arquitectos, líderes de desarrollo o líderes de proyectos, los cuales usan
su experiencia y entendimiento del proyecto para lograr realizar la
estimación.
Ambos procesos, se nutren en su gran mayoría, de documentos de alto nivel
realizados por personas que no cuentan con un dominio o conocimiento en la
ingeniería de software, en los que se puede encontrar información no muy
específica. Para realizar la estimación, no se observó un método o herramienta
estándar que facilite la medición del tamaño del software, por ello se hace
dificultoso, tener un valor aproximado al real en donde el desface sea pequeño,
como consecuencias negativas se tienen perdidas económicas y mala relación
con clientes, por este motivo se requiere implementar un método sistematizado
que permita estimar de forma fácil y rápida.
2.3. Diagnostico
El desarrollo del proyecto se emprendió con una vista de la forma en la que se
estima el software por cada una de las áreas implicadas en la empresa para esta
actividad, enfocándose principalmente en Comercial y en TI (arquitectos, líderes
de desarrollo y de proyectos) con el objetivo de tener clara la forma en la que se
realiza el proceso dentro de la compañía.
Las actividades identificadas fueron:
a. Se remite al líder de proyectos un caso interno el cual contiene la
información que se ha obtenido hasta el momento en un documento (por
lo general un documento de alto nivel o blueprint).
b. El caso interno se asigna a alguna persona idónea dentro del área de TI
para que revise el documento de requisitos recibido.
c. La persona quien tiene el caso realiza el análisis del documento que se
encuentra en el caso interno y con base a este identifica el alcance del
proyecto de software.
d. Una vez identificado el alance del proyecto de software se diligencia el
formato de estimación respectivo, dicho formato es un archivo en Excel.
45
Nota: Si la información del documentó proporcionado es insuficiente, se
debe solicitar más información por medio del gestor del área comercial y
se retorna a “b” una vez se recibe la nueva información.
e. El arquitecto o líder de desarrollo, revisa documento de estimación y si es
necesario ajusta el valor obtenido de acuerdo a su juicio de experto y
asigna caso interno a gestor comercial.
De la observación, algunas de las posibles casusas identificadas que están
afectado el proceso fueron las siguientes:
● Deficiencia en una metodología o lineamientos adecuados para la
estimación.
● En la estimación no siempre participan expertos para dar su opinión
acerca de la complejidad del proyecto a desarrollar, casi siempre la
actividad la hace una persona del área comercial.
● Competencia con otras empresas proveedoras, esto hace que las
propuestas de BITS Américas deban ser rápidas, para ello se conforman
únicamente con el documento de alto de nivel o el planteamiento de los
requisitos que se haga por parte del cliente, que en la mayoría de
ocasiones no sabe lo que necesita con claridad, o ha tomado mal los
requisitos.
● No se tiene en cuenta la curva de aprendizaje del equipo técnico
(analistas, desarrolladores backend, desarrolladores front) tanto en las
tecnologías a usar como en la regla de negocio del proyecto.
● Comparación de proyectos pasados con los nuevos, y todos los proyectos
no son iguales.
● Dificultades en la definición del alcance del proyecto, por lo cual no puede
percibirse claramente el tamaño de este.
46
3. Requisitos, elementos y restricciones el sistema
En esta etapa, se evalúan los principales requisitos, características y
restricciones del sistema telemático, esto en busca de mejorar el proceso de
estimación de software de la empresa.
3.1. Requisitos
De acuerdo con la observación de la actividad de estimación que se realiza en la
compañía, se identificaron los siguientes requisitos:
47
Tabla 6: Requisitos iniciales para el sistema telemático
ID Requerimiento Alcance
R1 Registro de usuarios Se deberá contar con un módulo que
permita el registro de usuarios.
R2 Servicio de autenticación Se deberá contar con servicio de
autenticación, que permita inicio de sesión
por usuario y clave.
R3 Crear estimaciones Se deberá permitir crear estimaciones de
proyectos a un usuario autenticado.
R4 Consulta de estimaciones Se deberá permitir consultar las
estimaciones creadas en el sistema a un
usuario autenticado.
R5 Consulta detalle de una
estimación
Se deberá permitir consultar el detalle de
una estimación a un usuario autenticado.
R6 Editar una estimación Se deberá permitir modificar el detalle de
una estimación a un usuario autenticado.
R7 Consulta histórica de
estimaciones
Un usuario autenticado solo podrá ver las
estimaciones que el ha creado, no podrá ver
las de otros.
R8 Eliminar estimaciones Un usuario autenticado podrá eliminar
estimaciones creadas en el sistema.
R9 Microservicio Se requiere un microservicio que se
comunique por medio de un recurso API a
través de protocolos HTTP/REST.
R1
0
Usabilidad El sistema debe contar con una interfaz
intuitiva para el usuario.
Fuente: Propia
En el sistema telemático, solo intervendrá un tipo de rol (usuario autenticado)
quien será el que pueda manejar el CRUD de estimaciones.
48
3.2. Características operacionales
En esta etapa se explican cada uno de los módulos que va a tener el sistema telemático:
● Login: modulo encargado del ingreso seguro de los usuarios que se
encuentran registrados en el sistema.
● Registro de usuarios: este módulo tiene como finalidad permitir el
registro de usuarios capturando la información básica de estos, como lo
son: username, contraseña, nombres y apellidos, tipo y número de
identificación, y correo personal.
Este módulo, es importante porque brinda seguridad al sistema telemático,
permitiendo el ingreso únicamente de usuarios autenticados.
● Registro de estimaciones por puntos función: este módulo se
encargará de permitir el ingreso y captura del nombre, y variables que
permiten hacer el cálculo de esfuerzo de software para el proyecto por
puntos función.
● Consulta de estimaciones por puntos función: este módulo tiene como
finalidad permitir se encargará de permitir la obtención de la información
obtenida en el detalle de cada una de las estimaciones por puntos por
casos de uso de la empresa, es decir, las que han creado todos los
usuarios del sistema.
3.3. Elementos del sistema
a. Aplicación con diseño responsive
Herramienta desarrollada en Visual Studio Code. Se crea una sola
página web que se adapta al navegador en el cual se está ejecutando,
permitiendo así a un usuario registrado en el sistema registrar nuevas
estimaciones de esfuerzo de software y así mismo consultar y
manipularlas (editar y eliminar).
b. API
Oculta el microservicio que se encuentra en el sistema. Las solicitudes
que llegan a la API, son procesadas y enrutadas, hacia el microservicio
especifico (en este caso, el enrutamiento será a un solo microservicio).
49
c. Microservicios
Encargado de la parte lógica del sistema telemático, permite
interactuar e intercambiar información entre el cliente (web/mobile) y
la base de datos.
d. PosgreSQL
Sistema donde se almacenan todos los datos de las estimaciones de
esfuerzo de software recolectados al ejecutar cada una de las
funciones básicas en la base de datos.
3.4. Restricciones del sistema
● El sistema estará enfocado a nivel funcional a lo que define el método de
estimación de software por puntos función, que permite medir el esfuerzo
del software entregado al usuario final independiente de la tecnología a
usar en la constricción del mismo.
● Las pantallas de la solución propuesta serán implementadas bajo los
elementos que proporcione el framework y tecnologías a usar, cualquier
{cambio en el look&file deberá ser evaluado el impacto (tiempo y costos)
y la viabilidad del cambio.
● El proceso de registro de usuarios, como de las estimaciones estará sujeto
a la empresa BITS Américas S.A.S.
● El sistema no contará con un módulo de administración de contenidos o
parametrización de las formulas o variables que se necesitan para realizar
el cálculo de estimación de esfuerzo.
50
4. Diseño módulos del sistema telemático
En este punto, después de realizar la observación de la actividad que se lleva
actualmente en la empresa para realizar las estimaciones de esfuerzo de
software, se diseñaron procesos que permiten optimizar la estimación de
software en la empresa.
4.1. Modelo de procesos
4.1.1. Administración de usuarios
a. Crear usuarios
En este proceso, se muestra como un usuario con rol administrador,
ejecuta el flujo pertinente para ingresar al sitio, y como puede crear un
nuevo usuario en el sistema, los cuales podrán interactuar en el sistema
para poder gestionar estimaciones.
51
Ilustración 7: Diagrama Flujo Creación Usuarios
Fuente: Propia
52
4.1.2. Crear estimación
Con este proceso, el usuario final, puede generar nuevas estimaciones en el sistema en
tiempo real.
Ilustración 8: Diagrama Flujo Creación Nueva Estimación
Fuente: Propia
53
4.1.3. Consultar estimación
Con este proceso, el usuario final, podrá consultar el histórico de estimaciones
que se han creado en el sistema y a su vez, visualizar el detalle de la misma.
Ilustración 9: Diagrama Flujo Consultar Estimación
Fuente: Propia
54
4.2. Desarrollo de módulos
Comprende los diferentes módulos y la estructura de la aplicación que compone
el sistema telemático.
4.2.1. Módulos aplicación
Ilustración 10: Diagrama de clases sistema telemático
Fuente: Propia
55
Login: paquete o modulo, encargado de proporcionar la seguridad del sistema,
restringe el ingreso permitiendo acceso únicamente a usuarios registrados y
activos. Está compuesto por:
● UserApp
UseCasePoint: paquete o modulo encargado, de la lógica correspondiente a la
métrica de puntos por casos de uso, permitiendo registrar las nuevas
estimaciones en el sistema y el detalle de cada una para poder calcular así el
estimado respectivo del proyecto. Está compuesto por:
● Actor
● UseCase
● TechnicalComplexityFactor
● EnvironmentalComplexityFactor
● Measurement
A continuación, se presentan los diagramas de componenetes del sistema
telemático
Ilustración 11: Diagrama de componentes del sistema telemático
Fuente: propia
56
4.2.2. Microservicio
Se implementan diferentes servicios basados en las principales funciones del
sistema telemático, aportando al sistema mayor escalabilidad, fácil
mantenimiento y bajo acoplamiento. Existen cuatro componentes:
• LoginModule: API REST que contiene la lógica de autenticación y acceso
al componente web MeasurementApp.
• UseCasePoint: API REST que contiene toda la lógica necesaria para
realizar una medición de esfuerzo basada en la metodología de puntos por
función por caso de uso.
• MeasurementApp: Componente Web que realiza la tarea de FrontEnd al
usuario e integra las APIs del sistema.
• PostgreSQL (Micro Container): Se utiliza arquitectura de micro contenedor
para tener la base de datos como un componente más y no como un
proceso de sistema operativo.
4.2.3. PostgreSQL
Base de datos que permite llevar funciones para obtener notificaciones en tiempo
real y poder guardar la información en la base de datos. Las peticiones a la base
de datos e realizan por medio del puerto 5432 (que es el que trae por defecto),
con este puerto se permiten las conexiones entrantes o externas al servidor
PostgreSQL. Esta actividad se lleva a cabo específicamente en la capa de
transporte del modelo TCP/IP, haciendo uso del protocolo TCP (abrir conexión,
transmisión de los bytes y cierre de la conexión), lo cual permite la conexión punto
a punto entre los hosts con el fin de enviar y recibir la información.
4.2.4. Node.js
De la parte del servidor se trabajará con Node.js, este escucha las peticiones a
través de los puertos 3000, 3001 y 9000. Recibe las peticiones HTTP que hace
el cliente web, interactuando con la base de datos para guardar la información
resultante de la transacción allí; una vez realizado este proceso, se pasa la
respuesta al cliente web que realiza la petición orientado a documentos de tipo
Json. Las variables de entorno se dejan apuntando a los puertos que trae por
defecto, porque la aplicación corre o se ejecuta correctamente en estos; para
ello se hace uso de la capa de transporte del modelo TCP/IP específicamente
con el protocolo TCP, lo cual garantiza que la entrega de los paquetes de datos
se realice en el mismo orden en que fueron mandados por el servidor.
57
4.2.5. Arquitectura
4.2.5.1. Análisis de protocolos de comunicaciones
Protocolo HTTP
Este protocolo cliente-servidor articula los intercambios de información entre los
clientes Web y los servidores HTTP. Está soportado sobre los servicios de
conexión TCP/IP, y funciona de la misma forma que el resto de los servicios
comunes de los entornos UNIX: un proceso servidor escucha en un puerto de
comunicaciones TCP, y espera las solicitudes de conexión de los clientes Web.
Una vez que se establece la conexión, el protocolo TCP se encarga de mantener
la comunicación y garantizar un intercambio de datos libre de errores.
HTTP se basa en sencillas operaciones de solicitud/respuesta. Un cliente
establece una conexión con un servidor y envía un mensaje con los datos de la
solicitud. El servidor responde con un mensaje similar, que contiene el estado de
la operación y su posible resultado.
Cada vez que un cliente realiza una petición a un servidor, se ejecutan los siguientes pasos13:
● Un usuario accede a una URL, seleccionando un enlace de un documento HTML o introduciéndola directamente en el campo Location del cliente Web.
● El cliente Web descodifica la URL, separando sus diferentes partes. Así identifica el protocolo de acceso, la dirección DNS o IP del servidor, el posible puerto opcional (el valor por defecto es 80) y el objeto requerido del servidor.
● Se abre una conexión TCP/IP con el servidor, llamando al puerto TCP correspondiente. Se realiza la petición. Para ello, se envía el comando necesario (GET, POST, HEAD,…), la dirección del objeto requerido (el contenido de la URL que sigue a la dirección del servidor), la versión del protocolo HTTP empleada y un conjunto variable de información, que incluye datos sobre las capacidades del browser, datos opcionales para el servidor.
● El servidor devuelve la respuesta al cliente. Consiste en un código de estado y el tipo de dato MIME de la información de retorno, seguido de la propia información.
● Se cierra la conexión TCP.
_______________________
13 (2017) El protocolo HTTP, recuperado el 14 de octubre del 2017,
http://neo.lcc.uma.es/evirtual/cdd/tutorial/aplicacion/http.html
58
Modelo TCP/IP
Conformado por los protocolos TCP e IP (Transmission Control Protocol/Internet
Protocol). El modelo TCP/IP es usado para comunicaciones en redes y, como
todo protocolo, describe un conjunto de guías generales de operación para
permitir que un equipo pueda comunicarse en una red. TCP/IP provee
conectividad de extremo a extremo especificando cómo los datos deberían ser
formateados, direccionados, transmitidos, enrutados y recibidos por el
destinatario. Este modelo está compuesto por 4 capas, las cuales son explicadas
a continuación:
a. Capa de Aplicación (Application)
Esta capa provee protocolos de servicios para aplicaciones de software en una
computadora, por ejemplo, provee el protocolo HTTP quien es quien define como
los exploradores mandan llamar el contenido de una página web a un servidor.
HTTP cuenta con una serie de códigos para hacer saber al usuario que realmente
el servicio se llevó a cabo correctamente o no, por ejemplo, el código: HTTP 404
“not found”.
b. Capa de Transporte (Transport) Esta capa incluye una pequeña lista de protocolos dentro de ella, los más
comunes son TCP y UDP (User Datagram Protocol). Todas las capas proveen
servicios a su capa superior (ejemplo: la capa de transporte le provee servicios a
la capa de aplicación).
El protocolo TCP provee un servicio a su capa superior (Aplicación) llamado error-
recovery service, siguiendo el ejemplo: si hacemos una petición solicitando una
página web al servidor (HTTP) y de pronto hay una perdida durante el proceso,
pues entonces entra TCP quien provee de mecanismo para garantizar la entrega
de datos al usuario evitando que los datos se pierdan en la red. En esta capa de
transporte lo que TCP hace es colocar SEQ (secuencias de números) a cada
mensaje y este proceso es llamado segmento.
Dentro de la capa de transporte nos encontramos con interacciones de capas
● Same-layer interaction on different computers: Aquí es donde 2
computadoras usan el mismo protocolo para comunicarse con la misma
capa en otra computadora.
● Adjacent-layer interaction on the same computer: En una sola
computadora, una capa provee servicio a la capa superior.
59
c. Capa de Red (Network)
En esta capa nos encontramos con una pequeña cantidad de protocolos y dentro
de ellos se encuentra el más importante llamado IP (Internet Protocol), si bien
sabemos IP provee de servicios como direccionamiento y proceso de ruteo a la
capa de transporte. IP define que cada computadora debe tener una dirección
para poderse comunicar dentro de una red con otras computadoras. Se encarga
de las direcciones IP destino para ser ubicadas dentro de la red y así poder
compartir información.
d. Capa de Enlace (Data Link Plus Physical)
El termino enlace (Link) se refiere a las conexiones físicas o enlaces entre los
dispositivos y los protocolos usados para controlar dichos enlaces. Esta capa de
enlace de datos incluye una gran lista de protocolos Ethernet y estándares.
Ilustración 12: Capas Modelo TCP/IP
Fuente: http://eltallerdelbit.com/modelo-tcp-ip
60
4.2.5.2. Conclusiones de protocolos
Los protocolos son importantes para establecer comunicación en los sistemas
telemáticos, ya que fijan reglas que se deben seguir para poder establecer un
canal en el cual pueda enviarse información. HTTP, permite establecer la
comunicación cliente-servidor para poder hacer intercambios de datos entre la
aplicación web cliente y el servidor con sencillas operaciones de
solicitud/respuesta. En el servidor, se implementa el protocolo TCP/IP el cual
abre la conexión llamando al puerto correspondiente, y de esta forma lanzar la
petición para ello se hace uso de los métodos respectivos (POST, FET, PUT,
DELETE), allí el servidor da la respuesta al cliente.
4.2.5.3. Diseño general del sistema telemático
El sistema telemático en su diseño general se compone por una aplicación resposnsive
web y cliente de un microservicio que opera sobre su propio dominio. El cliente se
comunica por medio del protocolo HTTP para hacer llamadas a la API. De la parte del
servidor, se realiza una integración con la base de datos, para guardar allí la información
que se desprenda de acuerdo a la transacción que se realice basados en la petición del
cliente, Una vez realizada la actividad en la base de datos, se retorna a la API un objeto,
allí se transforma en un documento JSON el cual contiene tdoda la información de la
transacción y está es la respuesta que se da al cliente web que
61
Ilustración 13: Diseño general sistema telemático
Fuente: Propia
Ilustración 14: Flujo proceso general sistema telemático
Fuente: Propia
62
5. Pruebas
Estas pruebas se realizaron con el fin de verificar la funcionalidad del sistema con
los diferentes tipos de usuarios que van a interactuar en este, y así comprobar
que se cumplen con las especificaciones respectivas.
Los dispositivos y/o navegadores utilizados para realizar este proceso fueron:
• Mobile
- Sony Xperia T2, navegator Chrome.
- Samsung Galaxy J5, navegador Chrome.
• Desktop
Navegadores
- Chrome última versión estable.
- Micrososf Edge última versión estable.
- IE 11 última versión estable.
A continuación, se presenta el set de pruebas para cada una de las
funcionalidades:
5.1. Login
Tabla 7: Set pruebas funcionalidad de login
No Nombre
Prueba
Descripción
prueba
Resultado
esperado
Estado
general
1 Verificar
obligatoriedad
de campos
Usuario y
Contraseña
Se dejarán vacíos
los campos
Usuario y
Contraseña.
Se hará clic sobre
el botón que
permite iniciar
sesión.
Al dejar vacíos los
campos que
permiten ingresar
el usuario y
contraseña, y
hacer clic sobre el
botón de iniciar
sesión, el sistema
no levanta la
Paso
63
sesión y muestra
mensaje de error.
Se diligenciará el
campo que permite
ingresar el usuario
(el campo
contraseña se
dejará vació).
Se hará clic sobre
el botón que
permite iniciar
sesión
Al dejar vacío
únicamente el
campo
Contraseña, y
hacer clic sobre el
botón de iniciar
sesión, el sistema
muestra un
mensaje de error,
el cual indica que
el campo
Contraseña es
requerido.
Paso
Se diligenciará el
campo que permite
ingresar la
contraseña (el
campo usuario se
dejará vació).
Se hará clic sobre
el botón que
permite iniciar
sesión
Al dejar vacío
únicamente el
campo Usuario, y
hacer clic sobre el
botón de iniciar
sesión, el sistema
muestra un
mensaje de error,
el cual indica que
el campo Usuario
es requerido.
Paso
2 Verificar
correcto inicio
de sesión
Se ingresará el
usuario y
contraseña de un
user con estado
activo
Se hará clic sobre
el botón que
permite iniciar
sesión.
Al ingresar un
usuario y
contraseña de un
usuario con
estado activo del
sitio, y proceder a
hacer clic sobre el
botón que permite
iniciar sesión, el
sistema levanta la
sesión del usuario
re direccionando a
Paso
64
la interfaz de
home que aplique
de acuerdo a su
rol.
3 Verificar inicio
de sesión
incorrecto
Se ingresará un
usuario o
contraseña
incorrectos.
Se hará clic sobre
el botón que
permite iniciar
sesión
Al intentar
acceder al sitio
con un usuario o
contraseña
incorrectos el
sistema restringe
el acceso y
genera mensaje
de error indicando
al usuario que la
contraseña o el
usuario no son
validos
Paso
Fuente: Propia
5.2. Crear nueva estimación
Tabla 8: Set pruebas crear nueva estimación
No Nombre
Prueba
Descripción
prueba
Resultado
esperado
Estado
general
1 Verificar
acceso a
vista de
creación de
nueva
estimación
Se hará clic sobre
la opción Casos de
uso ubicada en el
menú principal
Se verificará que el
sistema re
direccione a la
pantalla con el
listado de
estimaciones
existentes
Al hacer clic
sobre la opción
Casos de uso
ubicada en el
menú principal el
sistema re
direcciona a la
interfaz con el
listado de
estimaciones
existentes
Paso
65
2 Verificar
despliegue
formulario
para nueva
estimación
Se hará clic sobre
el botón Nueva
Estimación
Se verificará que el
sistema despliegue
un form con los
siguientes campos:
- Cliente: se
verificará que el
campo sea de
entrada libre,
permitiendo el
ingreso del nombre
del cliente.
- Nombre: se
verificará que el
campo sea de
entrada libre,
permitiendo el
ingreso del nombre
de la estimación.
Al hacer clic
sobre el botón
Nueva
Estimación, el
sistema despliega
formulario con los
siguientes
campos:
Cliente: de
entrada libre,
permite ingresar
el nombre del
cliente asociado a
la estimación.
Nombre: de
entrada libre,
permite ingresar
el nombre de la
estimación a
crear.
Paso
3 Verificar
obligatoriedad
de campos
cliente y
nombre de
estimación
Se dejarán vacíos
los campos cliente
y nombre de
estimación.
Se hará clic sobre
el botón que
permite crear la
nueva estimación.
Al dejar vacíos los
campos que
permiten ingresar
el título y nombre
de la estimación,
y hacer clic sobre
el botón guardar,
el sistema
muestra mensaje
indicando que
obligatoriedad de
campos y no se
registra la
estimación en la
BD.
Paso
66
4 Verificar
creación de
nueva
estimación
Se diligenciarán los
campos Cliente y
Nombre de la
estimación.
Se hará clic sobre el
botón Crear.
Se verificará que la
nueva estimación
se cree
correctamente en la
BD y se muestre en
el listado de
estimaciones
existentes.
Al diligenciar los
campos Cliente y
Nombre y
proceder a hacer
clic sobre el botón
Crear, el sistema
crea
correctamente la
estimación y esta
se observa en el
listado de
estimaciones del
sitio.
Paso
5 Verificar
acceso
formulario
detalle de
estimación
Se hará clic sobre la
opción de edición
ubicada en la
columna de
operaciones de la
tabla con el listado
de estimaciones
existentes en el
sistema.
Se verificará que el
sistema despliegue
un formulario el cual
permite ingresar el
detalle de la
estimación.
Al hacer clic sobre
el botón guardar, el
sistema permitirá
registrar la
Al hacer clic sobre
la opción de
edición de la
columna con las
operaciones, el
sistema despliega
un formulario para
diligenciar el
detalle de la
estimación y se
permite el registro
exitoso de este.
Paso
67
estimación en la BD
correctamente.
6 Verificar
cálculo de
puntaje para
estimación
Se registrará el
detalle de una
estimación
correctamente en el
sistema.
Se hará clic sobre el
botón Guardar y se
verificará que el
sistema refresque
la interfaz y se
muestre en la tabla
con los registros de
estimaciones el
puntaje obtenido de
acuerdo a lo
definido por la
metodología.
Al registrar las
variables del
detale de una
estimación, el
sistema muestra
correctamente el
puntaje obtenido
para está de
acuerdo a lo
definido por la
metodología de
puntos por casos
de uso.
Paso
Fuente: Propia
68
5.3. Evidencias pruebas
Tabla 9: Evidencias Pruebas Login
No Prueba Evidencia Resultado
1
Login
Paso
2
3
Fuente: Propia
69
Tabla 10: Evidencias Pruebas Crear Estimación
No Prueba Evidencia Resultado
1
Crear
nueva
estimación
Paso
2
3
4
5
70
6
Paso
7
8
Fuente: Propia
5.4. Conclusiones pruebas
Con el fin de clasificar si la prueba ejecutada en la aplicación cumplía o no el
resultado esperado, se establecieron las siguientes escalas:
• Fallo: el resultado obtenido al finalizar la prueba no fue exitoso.
• Paso: el resultado obtenido al finalizar la prueba fue exitoso.
Al realizar el conteo de los estados encontrados en la columna “Estado general”
de las tablas 7 y 8, no se identificó ningún “Fallido”, con esto puede darse a
entender que el producto cumple con los requisitos especificados para el sistema
telemático de estimación de esfuerzo de proyectos de software por medio de la
metodología puntos función por caso de uso: se crean estimaciones por proyecto,
se asignan los pesos respectivos de acuerdo a lo definido en la metodología y se
realiza el cálculo de esfuerzo en horas que se necesitan para el proyecto
respectivo.
71
6. Propuesta de nuevo proceso de estimación
Ilustración 15: Diagrama Flujo Propuesta Nuevo Proceso Estimación
Fuente: Propia
El nuevo proceso propuesto para la empresa consiste en:
a. El desarrollador de negocio o gestor de calidad crea el caso en la
herramienta de gestión de la empresa, en la factibilidad del proyecto
en el cial se encuentra la información obtenida por parte del cliente
y le asigna el caso al líder de proyectos.
b. El líder de proyectos identifica a la persona que va a realizar la
revisión de la información, ya sea: analista funcional, arquitecto o
72
líder de desarrollo, le asigna el caso en la herramienta de gestión
de la empresa.
c. La persona a la cual se le asigno el caso, procede a revisar la
información contenida en el documento dejado en el ticket y
comienza la construcción de los casos de uso. Una vez terminado
el análisis de los casos de uso del proyecto, el analista crea la
estimación en la aplicación que permite calcular el tiempo y
esfuerzo de desarrollo del proyecto de software y asigna el caso al
arquitecto o líder de desarrollo.
Si la información consignada en el caso no es suficiente, se remite
el caso al desarrollador de negocio, para que solicite más
información al cliente.
d. El arquitecto recibe el caso y completa la información de la
estimación respectiva creada en la aplicación de estimación de
proyectos de software, y regresa el caso con el estado
correspondiente al desarrollador de negocios o gestor comercial.
Si la información consignada en el caso no es suficiente, se remite
el caso al desarrollador de negocio, para que solicite más
información al cliente.
73
7. Evaluación de la solución
Una vez terminado el prototipo para la estimación de tiempo y esfuerzo de
proyectos de software dentro de la empresa, se encontró que el impacto inicial
fue positivo al hacer uso de la herramienta por el Gerente General de la
compañía.
Por otro lado, al realizar la comparativa del proceso actual de estimación y el
nuevo proceso propuesto, se evidencio que la aplicación permitió realizar el
proceso de estimación y respectiva identificación del tamaño funcional del
proyecto de software de acuerdo a las funcionalidades identificadas en los casos
de uso. En caso de necesitarse más información por parte del cliente que
necesita la solución tecnológica, el proceso pudo completarse después de ello de
forma sencilla teniendo acceso a la información que se registró en el pasado sin
necesidad de consultar documentos registrados en el repositorio de la compañía
o sufrir pérdidas de los datos.
Los usuarios de la aplicación tuvieron acceso a todas las estimaciones de los
proyectos de los clientes de la empresa de forma más ordenada y ágil consulta,
de cada estimación se pudo observar el puntaje de estimación y el tiempo y
esfuerzo requerido para el desarrollo de un caso de uso como también el global.
74
8. CONCLUSIONES
En la actualidad es muy común ver que los procesos internos de una compañía se
realizan todavía de forma manual, y no se cuenta con un apoyo de herramientas que
ayuden a optimizar dichas actividades.
Como solución a la problemática planteada se buscó presentar un prototipo de sistema
telemático el cual ayudará a optimizar el proceso de estimación que realiza la empresa
actualmente, para ello hacer uso de las fases de la metodología PHVA fue muy
conveniente. Al planear lo que se iba a realiza, sirvió para determinar y proponer un
diseño del proceso; por medio de la fase de evaluación, se lograron identificar los
procesos del sistema telemático debían tener un mejoramiento continuo.
En la fase de desarrollo, se logró el objetivo propuesto, construir el sistema de acuerdo
a los requisitos funcionales iniciales, es decir, orientado a lo que define la metodología
de puntos función por casos de uso para realizar el cálculo de la estimación; en cuanto
a la parte técnica se diseño un sistema telemático con arquitectura de micro servicio el
cual se comunica con una API REST haciendo uso del protocolo HTTP.
75
9. Referencias Bibliográficas
• Fernando Salazar (2013). ¿Qué es la Telemática? ¿Para qué sirve?,
recuperado el 14 de octubre del 2017, en
http://dudasinformaticass.blogspot.com.co/.
• Rodriguez, Julen (2011), Que es un sistema telemático, recuperado el 14
de Octubre de 2017, en
https://juleninforma.wordpress.com/2011/10/19/%C2%BFque-es-un-
sistema-telematico.
• Del Carmen Garcia, Ana Maria (2015), ¿Qué son los microservicios?,
recuperado el 14 de octubre del 2017, en
http://www.javiergarzas.com/2015/06/microservicios.html
• Flanagan, David; Ferguson, Paula (2002), JavaScript, recuperado el 14 de
octubre del 2017, en https://es.wikipedia.org/wiki/JavaScript
• Método de Estimación Puntos Casos de Uso (Use Case Points)
recuperado el 14 de octubre del 2017 en
http://www.laboratorioti.com/2013/02/14/metodo-de-estimacion-puntos-
casos-de-uso-use-case-points
• A, Esaú (2016), ¿Qué son los microservicios?, recuperado el 14 de
octubre del 2017, en https://openwebinars.net/blog/microservicios-que-
son
• García, Luis Miguel (2016), Mi primera aplicación con StrongLoop
LoopBack, recuperado en https://unpocodejava.com/2016/04/05/mi-
primera-aplicacion-con-strongloop-loopback/
• Debian Org (2017), ¿Qué es GNU/Linyx?, recuperado el 14 de octubre del
2017, en ht
https://www.debian.org/releases/stable/arm64/ch01s02.html.es
• (2017) Circulo de Deming, recuperado el 14 de octubre del 2017,
https://es.wikipedia.org/wiki/C%C3%ADrculo_de_Deming
• (2015) ¿En qué consiste el ciclo PHVA de mejora continua?, recuperado
el 14 de octubre del 2017, https://www.isotools.org/2015/02/20/en-que-
consiste-el-ciclo-phva-de-mejora-continua/
• (2017) El protocolo HTTP, recuperado el 14 de octubre del 2017,
http://neo.lcc.uma.es/evirtual/cdd/tutorial/aplicacion/http.html
76
ANEXOS
77
ANEXO A
MANUAL ADMINISTRADOR
A continuación, se especifican los pasos que deberá seguir un administrador para
poder realizar la instalación del aplicativo:
Pre requisitos
1. Contar con base de datos PostgreSQL en el puerto por defecto 5432, con
las bases de datos:
a. login_module
b. use_case_point
2. Tener instalado NodeJs.
Nota: en caso de no contar con el programa, visitar el siguiente link de la web oficial de
NodeJs (https://nodejs.org/en/download/). Luego de la descarga continúe con la instalación
siguiendo el manual del siguiente link https://nodejs.org/en/download/package-manager/).
3. Loopback Framework para NodeJs
Nota: En caso de no contar con el paquete Loopback visite el siguiente link
(https://loopback.io/) de la web oficial o ejecute el siguiente comando en una terminal
“Comando: npm install -g loopback-cli”.
Instalación
1. Crear carpeta MeasurementApp que será el home del aplicativo en la
siguiente ruta.
Ruta:
/opt/
2. Asegurar que la carpeta cuente con permisos de lectura y escritura de
usuario.
Nota: En caso de no contar con los permisos ejecute el siguiente comando “sudo chmod -R
777 MeasurementApp/” en la ruta /opt/.
3. Descomprimir los siguientes archivos en la carpeta creada en el paso 1:
a. LoginModule.zip
b. MeasurementApp.tar.gz
78
c. UseCasePoint.zip
4. Definir la variable de entorno MEASUREMENT_APP con la ruta de la carpeta
creada en el paso 1.
5. Ejecutar shell de instalación 'installApp.sh'.
6. Ejecutar shell de inicio de Sistema 'startApp.sh'.