Tesis Horquin
Tesis Horquin
1
Índice general
1. Introducción 7
1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3. Organización del trabajo . . . . . . . . . . . . . . . . . . . . . 9
2. Fundamentos teóricos 11
2.1. Metodologías Ágiles . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1. El Manifiesto Ágil . . . . . . . . . . . . . . . . . . . . . 12
2.2. Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2. Artefactos . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2.1. Product Backlog . . . . . . . . . . . . . . . . 14
2.2.2.2. Spring Backlog . . . . . . . . . . . . . . . . . 14
2.2.2.3. Product Increment . . . . . . . . . . . . . . . 15
2.2.3. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.3.1. Sprint . . . . . . . . . . . . . . . . . . . . . . 15
2.2.3.2. Sprint Planning . . . . . . . . . . . . . . . . . 15
2.2.3.3. Daily Meeting . . . . . . . . . . . . . . . . . . 16
2.2.3.4. Sprint Review . . . . . . . . . . . . . . . . . . 16
2.2.3.5. Sprint Retrospective . . . . . . . . . . . . . . 16
2.3. Arquitectura de Aplicaciones Web . . . . . . . . . . . . . . . . 17
2.3.1. Tipos de Arquitecturas de Aplicaciones web . . . . . . 17
2.3.1.1. Model View Controller . . . . . . . . . . . . . 17
2.3.1.2. Single Page Application . . . . . . . . . . . . 18
2.4. Tecnologías para el desarrollo de Interfaces de Usuario . . . . 18
2.4.1. Background . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.2. Popularidad . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.3. Rendimiento . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.4. Soporte de la comunidad . . . . . . . . . . . . . . . . . 20
2.4.5. Curva de aprendizaje . . . . . . . . . . . . . . . . . . . 20
2.5. Tecnologías para el desarrollo de servidores web . . . . . . . . 21
2
ÍNDICE GENERAL 3
2.5.1. Background . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.2. Rendimiento . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.3. Escalabilidad . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.4. Frameworks más populares . . . . . . . . . . . . . . . . 22
2.5.5. Ventajas y desventajas . . . . . . . . . . . . . . . . . . 23
2.6. Sistema de Controlador de Versiones . . . . . . . . . . . . . . 24
2.6.1. Controlador de Versiones Distribuido . . . . . . . . . . 25
2.6.2. Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.7. Integración Continua . . . . . . . . . . . . . . . . . . . . . . . 26
2.7.1. Herramientas para la Integración Continua . . . . . . . 27
2.8. Inspección Continua . . . . . . . . . . . . . . . . . . . . . . . 28
2.8.1. Herramientas para la Inspección Continua . . . . . . . 28
2.9. Procesos para equipos pequeños . . . . . . . . . . . . . . . . . 29
5. Conclusiones 78
5.1. Trabajos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . 79
Índice de figuras
5
ÍNDICE DE FIGURAS 6
Introducción
7
CAPÍTULO 1. INTRODUCCIÓN 8
1.1. Motivación
Hoy en día existen pocas experiencias prácticas del uso de la metodología
Scrum, aplicado en un equipo de desarrollo unipersonal con un determina-
do criterio de done para las historias de usuario (Cohn, 2004). Este criterio
consta de definir cuándo una historia de usuario se considera terminada (Kar-
lesky and Vander Voord, 2008). Un ejemplo es que una historia de usuario
se considera terminada, cuando esta fue implementada y testeada.
Las metodologías ágiles recomiendan que los proyectos sean para 7(+-2)
personas, pero sin embargo hay muchos grupos que son pequeños o uniper-
sonales. Es por eso que el problema se centra en cómo adaptar estas me-
todologías a los grupos, dónde el número de personas pasa a ser un factor
importante (Nazareno et al., 2013). En la actualidad hay muchos equipos
unipersonales, por ejemplo desarrolladores que trabajan de manera freelan-
ce, que participan en el proceso de desarrollo de ciertos componentes. Aunque
estos trabajen de forma autónoma es necesario que su proceso de desarollo
sea visible y predecible para su cliente.
De acuerdo con la bibliografía existente (Mahalakshmi and Sundararajan,
2013b), Scrum con todas sus etapas y actividades, no parece ser aplicable a
un equipo de desarrollo de una sola persona, y por lo tanto esa persona,
no estaría en condiciones de poder generar un desarrollo ágil, y a la vez
de calidad como propone Scrum. Por eso es que sería importante definir un
proceso ágil basado en Scrum para equipos unipersonales junto con el criterio
de “done”, haciendo énfasis en la transparencia del proceso y la calidad del
software, y que esta aplicación resultará en un desarrollo ágil y de calidad.
1.2. Objetivos
El objetivo general que se plantea para este trabajo es poder definir un
proceso que le permita a una persona de un grupo unipersonal de desarrollo,
poder seguir un framework de trabajo como Scrum, definiendo un determi-
nado criterio de done. Este proceso se va a basar en definir un criterio para
considerar cuando una historia de usuario se encuentra terminada.
A lo largo de los años surgieron herramientas que fueron creadas para
darle un soporte al desarrollo de software y a las metodologías ágiles. Es por
eso que otro de los principales objetivos para este trabajo, es la investigación,
el análisis e integración de las distintas herramientas. Se buscará lograr que
estas herramientas trabajen en conjunto para así obtener un desarrollo ágil
y eficiente al momento de iniciar el proceso de desarrollo de software.
En la Figura 1.1, se puede ver una aproximación de alto nivel del proceso
CAPÍTULO 1. INTRODUCCIÓN 9
de desarrollo.
Como se puede observar, en la primera parte de la Figura 1.1, se encuentra
todo el proceso de desarrollo aplicando algunas prácticas de Scrum. Junto
con los tres primeros artefactos, y junto con el soporte de las herramientas
se van a obtener dos categorías de métricas.
La primera categoría de métrica es la de producto, una vez que finaliza
el sprint, el código desarrollado es actualizado en el repositorio común y este
mismo entrará en un proceso de integración. En este proceso se realizarán
los testeos correspondientes y se hará un análisis del código implementado
durante el sprint. Algunas de las métricas a analizar son: porcentaje de cubri-
miento de los test (test coverage), código duplicado, errores de programación,
malas prácticas, etc.
Mientras que la segunda categoría de métrica es la de proceso, se utilizará
una herramienta que nos permitirá administrar, gestionar y seguir el progreso
del proyecto. Esta categoría nos permitirá observar con que calidad se llevó
a cabo el proceso de desarollo.
Fundamentos teóricos
Este capítulo presenta una visión teórica sobre las áreas qué se abordarán
en el resto del documento: tales como Metodologías Ágiles, Scrum, Arqui-
tectura de Aplicaciones Web, tecnologías más utilizadas en el desarrollo de
estas aplicaciones, controlador de versiones junto con Git, Integración Con-
tinua e Inspección Continua y cómo ambos se relacionan entre sí. También
se presentarán trabajos dónde se adaptó el framework de Scrum, para definir
un proceso que involucra equipos pequeños de desarrollo.
11
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 12
Estos valores fueron inspirados en los doce principios del manifiesto. Estos
principios son características que hace diferenciar un proceso ágil de uno
tradicional 3 .
2.2. Scrum
Scrum es un framework de desarrollo ágil para el desarrollo de softwa-
re. Provee una forma de trabajo flexible y adaptable para la creación de
productos de forma incremental.
Este framework está basado en un conjunto de valores, principios y prácti-
cas para poder administrar cualquier tipo de proyecto. Scrum se basa en tres
1
https://www.agilealliance.org/
2
https://agilemanifesto.org/
3
https://agilemanifesto.org/principles.html
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 13
2.2.1. Roles
Scrum define tres roles que formarán parte del framework que conforman
el Scrum Team: Product owner, Development team y Scrum master.
El Product Owner (P.O) es el responsable del producto por parte del
cliente. En este sentido el P.O es el rol más interesado sobre el producto
debido a que éste es el que decide la aceptación del producto a entregar,
establece los requerimientos del proyecto e indica las prioridades de la lista del
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 14
2.2.2. Artefactos
En la siguiente Sub-sección, se explicará de una manera breve y concisa
cada uno de los artefactos que forman parte de Scrum.
2.2.3. Eventos
A continuación, se explicará cada uno de los eventos que forman parte
del framework de Scrum.
2.2.3.1. Sprint
El Sprint es uno de los eventos más importantes en Scrum, y es el nombre
que recibe cada iteración dentro del proceso. Tiene una duración recomen-
dada de dos a cuatro semanas y generalmente son de duración constante.
Al final de cada Sprint tiene que haber un incremento que aporte un va-
lor agregado al producto que está en desarrollo (Sutherland and Schwaber,
2013).
Este tipo de reuniones suele tener una duración máxima de tres horas para
un Sprint de cuatro semanas. En caso de ser de menor duración el Sprint,
también lo será la reunión(Sutherland and Schwaber, 2013).
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 17
Una de las principales ventajas que ofrece este tipo de arquitectura son:
buen acoplamiento, favorece a la separación de concerns, mantenibilidad y
escalabilidad de la misma (Heidke et al., 2008).
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 18
2.4.1. Background
React es una biblioteca JavaScript de código abierto desarrollada por
Facebook en 2013 para crear interfaces de usuario. Esta biblioteca es amplia-
mente popular entre las comunidades de desarrolladores debido a la facilidad
para el desarrollo de aplicaciones web.
Angular es un framework de código abierto realizado con TypeScript en el
2010, para el desarrollo de Single Web Applications desarrollado y mantenido
principalmente por Google.
Mientras que Vue, es un framework de código abierto desarrollado en
JavaScript que se encuentra en rápido crecimiento para el desarrollo de apli-
caciones web.
2.4.2. Popularidad
Según la encuesta realizada por Stack Overflow correspondiente al año
2019 7 , React se encuentra posicionado como la segunda biblioteca más utili-
zada en el desarrollo de aplicaciones Web con un 31.3 %. Mientras que Angu-
lar, se encuentra en tercer lugar con un 30.7 % y en séptimo lugar Vue con un
15.2 %. Cabe destacar, que en dicha encuesta, se encuentra junto con otros
frameworks de Backend.
Dentro de la misma encuesta, se realizó una pregunta para saber cuáles
eran los frameworks web más requeridos en la actualidad. En dicha encuesta,
React se posicionó en primer lugar con un 74.5 %, Vue en segundo lugar
con 73.6 % y Angular en noveno lugar con un 57.6 %. Este número, refleja
el procentaje de desarrolladores que están desarrollando con la tecnología y
expresaron interés en seguir trabajando con la misma. En dicha encuesta, se
pudo concluir que React y Vue son las tecnologías más requeridas y buscadas
por los usuarios en el desarrollo de aplicaciones web.
2.4.3. Rendimiento
El rendimiento de las aplicaciones desarrolladas con Angular es peor en
comparación con las aplicaciones realizadas en React y Vue. Esto se debe a
que Angular utiliza el Document Object Model real (Interfaz de usuario) y
este cambia cada vez que se actualizan los datos en la aplicación. El uso del
DOM real afecta el rendimiento (bajo) y la habilidad de crear aplicaciones
de software dinámicas.
Con respecto a React y Vue, éstas utilizan un DOM virtual. El DOM
virtual es una abstracción del DOM real. El DOM virtual, es un objeto liviano
7
https://insights.stackoverflow.com/survey/2019#technology
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 20
2.5.1. Background
Python es un lenguaje dinámico de alto nivel lanzado en 1991, que ha
ganado popularidad en el último tiempo y de acuerdo a la encuesta de Stack
Overflow es el cuarto lenguaje más utilizado. Tiene bibliotecas de código
abierto para el análisis de datos, frameworks web y testing.
A diferencia de Python, Node.js es un entorno de ejecución de código
abierto lanzado en 2009, liviano y eficiente basado en el motor JavaScript
V811 de Google Chrome, que ayuda a la ejecución de código JavaScript para
el desarrollo de servidores web. Cuenta con un modelo de Entrada/Salida
sin bloqueo (asíncrono) controlado por eventos y diseñado para desarrollar
servidores altamente escalables.
Una de las principales ventajas que tiene Node, es que es una solución
basada en JavaScript, por lo que el desarrollo de backend le permite a los
desarrolladores tener todas las ventajas que este lenguaje tiene para ofrecer,
además de ser el lenguaje más utilizado de acuerdo a la encuesta realizada
por Stack Overflow en 201912 , ocupando el primer lugar desde hace siete
9
https://nodejs.org/es/
10
https://www.python.org/
11
https://v8.dev/
12
https://insights.stackoverflow.com/survey/2019#technology
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 22
2.5.2. Rendimiento
Node ofrece un alto rendimiento, debido a que el código JavaScript es
interpretado por motor JavaScript V8 de Google Chrome. Además de que
soporta operaciones de entrada/salida no bloqueantes, hace que esas solici-
tudes se resuelvan de manerar asíncrona lo que acelera la ejecución de código.
Con respecto a Python, cada solicitud es procesada de manera más lenta.
Por lo que no es recomendable usar Python para aplicaciones que prioricen la
velocidad o involucren soluciones complejas para el desarrollo de servidores
web.
2.5.3. Escalabilidad
Node es apto para una arquitectura de microservicios (separar en peque-
ños modulos la lógica de la aplicación) para mayor escalabilidad. Permite
crear un conjunto de microservicios y módulos, dónde cada uno de ellos se
comunicará de manera sencilla ejecutando su propio proceso. Esto hace que
las aplicaciones creadas con Node sean más flexibles y altamente escalables.
Con respecto a Python, no es recomendable para proyectos a largo plazo,
y esto es debido que a medida que crece, el código se vuelve cada vez más
complejo y difícil de mantener. Y una de las razones por las que no es re-
comendable es porque Python utiliza un Interpretador Global de Bloqueo,
haciendo que no se puedan ejecutar múltiples hilos de ejecución simultáneos.
Python posee una sintaxis sencilla. Una de las principales razones por
las cuáles los desarrolladores eligen Python es debido a que se les per-
mite crear soluciones fáciles en tan sólo pocas líneas de código. Esto
favorece tanto a la hora de resolver errores, cómo a la colaboración.
Mientras que algunas de las ventajas y desventajas que ofrece Node son:
3. Permiten ver los cambios que fueron realizados a lo largo del tiempo
en el código, pudiendo retroceder si fuera necesario y deshacer esos
cambios.
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 25
2.6.2. Git
Git15 es un sistema de controlador de versiones gratuito y de código abier-
to originalmente creado por Linus Torvalds en 2005. A diferencia de otros
sistemas, Git es distribuido, es decir que cada desarrollador tiene la historia
completa del código en su repositorio localmente. Esto hace que la clonación
inicial del repositorio sea lenta, pero cualquier otra operación cómo commits,
merge, log, diff sea mucho más rápida.
Git también da soporte al manejo de ramas y merge. Una de las herra-
mientas más popular en términos de colaboración en el equipo de desarrollo
15
https://git-scm.com/
CAPÍTULO 2. FUNDAMENTOS TEÓRICOS 26
son los Pull Request. Git es el sistema de control de versiones más utilizado
en la actualidad y se considera el estándar moderno para el desarrollo de
software.
Un proyecto de Git se encuentra dividido en tres estados o partes (Chacon
and Straub, 2014):
La calidad del software debe ser parte del proceso de desarrollo, lo cuál
significa que debe cumplir con los estándares de calidad para que el
desarrollo sea completo.
Los datos de calidad del software deben estar disponibles tanto en va-
lores absolutos (de todo el código) cómo diferenciales (nuevo código),
para que el equipo de desarrollo pueda tener visibilidad total de algún
nuevo problema.
la vuelve un poco compleja. Posee una gran cantidad de reglas para distintos
tipos de medidas cómo code smells, bugs, vulnerabilities para cada uno de
los lenguajes de programación cómo JavaScript, Java, C# etc. Una de las
principales diferencias que tiene esta herramienta con las demás, es que el
análisis de código se ejecuta externamente al servidor de Integración Con-
tinua y el resultado es enviado. Luego, esta herramienta realiza el análisis
correspondiente y almacena en la base de datos el resultado de la ejecución
(Janes et al., 2017).
Se pueden configurar Quality Profiles, que son el conjunto de reglas para
aplicar en el correspondiente análisis y las Quality Gates, que son los umbrales
para la calidad del código. Este análisis se ejecuta una vez que el código nuevo
es combinado con la rama principal de trabajo.
En conclusión, SonarQube es una herramienta poderosa y gratuita pero
requiere una etapa de configuración e integración con el servidor de integra-
ción continua.
Otra de las herramientas más utilizada es Codacy19 . Codacy posee una
interfaz muy bien diseñada, dónde es fácil encontrar la información importan-
te y es fácil la configuración inicial. Las medidas de calidad están agrupadas
en ocho categorías dentro de las cuáles se destacan code-complexity, security
y performance cómo las más importantes. A diferencia de SonarQube, esta
herramienta tiene un costo que se efectúa por mes, el análisis se realiza antes
de combinar el código nuevo con el código de la rama principal y puede que
el análisis de código, para algunos lenguajes de programación cómo JavaS-
cript, no sea el más eficiente. Por lo que, puede ser que esta herramienta sea
la correcta, pero dependerá mucho del lenguaje que se utilice en el proyecto
(Saorin, 2017).
3.1.1. Artefactos
Los artefactos que serán tomados de Scrum y utilizados en el proceso de
desarrollo son: el Product Backlog (PB), Sprint Backlog (SB), y el Incre-
ment una vez finalizado el Sprint. Es decir, se utilizarán todos los artefactos
definidos por Scrum.
31
CAPÍTULO 3. ADAPTACIÓN DEL PROCESO 32
3.1.1.3. Increment
Una vez finalizado el sprint, habrá una porción funcional potencialmente
entregable del producto, compuesto por todos los elementos del SB desarro-
llados durante el mismo.
Además dentro del proceso de desarrollo, estará complementado con gráfi-
cos cómo el Sprint Burn-Down chart. Este gráfico le permitirá al desarrollador
ver una estimación del trabajo restante que le queda al Sprint.
3.1.2. Roles
El rol más importante dentro del proceso es el del desarrollador, dado que
este deberá ser el responsable de que el proceso sea llevado a cabo de una
manera exitosa. Además de ser la única persona en el equipo, el mismo deberá
adoptar todas las responsabilidades que tiene el Scrum Master, y desarrollar
el software acorde a los requerimientos producto.
El otro rol que será tomado de Scrum es el del PO. Este rol será tomado
por el dueño del producto o cliente, y será quién tenga la responsabilidad de
transmitir al desarrollador, el producto de software que se desea construir,
junto con las reglas del negocio, y los posibles cambios que surgan durante
el proceso. Además deberá crear, administrar y priorizar todos los items del
PB.
3.1.3. Eventos
3.1.3.1. Sprint
Uno de los eventos más importantes dentro de Scrum es el Sprint, este
será fundamental dentro del proceso de desarrollo dado que nos permitirá
dividir al mismo en diferentes iteraciones, cada una con un objetivo propuesto
distinto. Además, al final de cada sprint, se podrá contar con una porción
del producto final, al que se le irá incrementando a medida que se avanza en
el proceso.
Al comienzo del proceso de desarrollo se realizará la primera reunión con
el PO en dónde se definirán todos los ítems del PB. Cada uno de estos ítems,
deberá ser distinguido entre dos categorías, estas son “D” (deseable) o “I”
(indispensable). Una vez realizada esta división, se realizará un ranking entre
todos los ítems del PB para identificar cuáles de ellos son los más importantes
para el PO a la hora de comenzar el proceso de desarrollo.
CAPÍTULO 3. ADAPTACIÓN DEL PROCESO 34
3.2.1. Jira
En la Figura 3.1 se puede observar como se llevará a cabo la metodolo-
gía de desarrollo ágil Scrum en el proceso. Para poder tener en claro todos
los requerimientos del producto; lo qué se realizará en cada Sprint, se dará
soporte a esta metodología con la herramienta Jira. La principal ventaja del
uso de esta herramienta, es qué le permitirá al desarrollador poder organizar
el proceso basado en Scrum y a dejar documentado de una manera correcta
todo el proceso de desarrollo.1
3.2.1.3. Sprint
Con respecto al Sprint, como se muestra en la Figura 3.6, Jira permitirá
una fácil creación del mismo, permitiendo añadir las historias de usuario qué
se trabajarán dentro del Sprint. En la Figura 3.5, una vez seleccionadas las
historias de usuario, Jira le permitirá al desarrollador seleccionar la duración
y los objetivo del mismo.
Cómo se puede ver en la Figura 3.4, en la esquina superior derecha, una
vez finalizado el Sprint Jira permitirá dejar documentado la finalización del
mismo. En caso de que haya historias de usuarios sin terminar, Jira permitirá
CAPÍTULO 3. ADAPTACIÓN DEL PROCESO 39
los criterios para que la historia de usuario quede finalizada por completo.
3.2.2. Git
En la Figura 3.10 se puede observar una visión general de la segunda
parte del proceso. En este parte del proceso, es necesario poder contar con
un repositorio de control de código fuente, para llevar a cabo el desarrollo
de software de manera ordenada. El controlador de versiones más utiliza-
do en la actualidad y el que se utilizará en este proceso es Git. Una de las
mayores ventajas que proporciona esta herramienta, es que permite poder
tener una rama principal (máster) y diferentes ramas por cada Sprint, de
código fuente. El cambio entre ramas y “merge”, en el desarrollo de software
es una característica de suma importancia a la hora de desarrollar, dado que
permitirá realizar cambios locales en nuestra rama o cambiar rápidamente
entre diferentes ramas según lo requiera la tarea en cuestión. En la Figura
3.9 se puede observar una representación de como se van a ir creando dis-
tintas ramas o versiones del código fuente a lo largo del proceso. Además,
dependiendo de la complejidad del Sprint, dentro de cada uno, se pueden
ir agregando más ramas en base a la dificultad de las tareas a desarrollar.
También cabe destacar, que se deberá utilizar un software de controlador de
versiones para poder tener un repositorio remoto del código fuente (Bitbuc-
CAPÍTULO 3. ADAPTACIÓN DEL PROCESO 42
A continuación, serán explicadas cada una de las fases por las cuáles atra-
viesa el proceso de integración. Cada una de estas, representa una mejora in-
cremental dentro del propio proyecto, así como mejoras en la infraestructura,
y prácticas del desarrollo.
3.2.3.2. Test
Durante la fase de Test, ya se tiene un servidor listo para poder realizar
un build cada vez que el desarrollador realiza un merge a la rama principal
del código fuente. Una vez empezada la compilación, se ejecutarán los test
de unidad y de integración. En caso de que falle alguno de estos, se dará por
rechazada la build, alertando en que falló al desarrollador.
3.2.3.4. Resultados
Una vez ejecutado el analizador de código y analizada la cobertura al-
canzada por los test, la herramienta nos dará un resultado. Este resultado
puede exitoso o fallido. En caso de que sea exitoso, el resultado retornará
un número de versión correspondiente al producto y el desarrollador podrá
continuar con el proceso, y obtener un producto listo para poder deployar a
un ambiente de producción. En cambio, si el resultado retorna un fallo, el
programador deberá solucionar el error dependiendo de dónde sea que falló
la compilación, ya sea en la fase de test o luego de realizar el análisis del
código fuente.
Capítulo 4
4.1. Sprint 0
Durante este Sprint inicial, se contará sobre el producto a desarrollar y
la elección de las tecnologías con las que se trabajará durante el proyecto.
45
CAPÍTULO 4. VALIDACIÓN DEL PROCESO 46
4.1.2. Objetivos
Crear una aplicación web, dónde administradores, propietarios y provee-
dores puedan llevar con transparencia y simplicidad la liquidación de expen-
sas en propiedades horizontales, propiedades pre horizontales, barrios priva-
dos, clubes de campo, barrios cerrados, barrios náuticos, etc. Siendo uno de
los objetivos primarios evitar los sobreprecios en las obras de mantenimien-
to o reparaciones, haciendo que los costos sean acordes a los del mercado,
disminuyendo así el costo final de las expensas.
La aplicación tendrá como objetivo principal llevar transparencia al pro-
ceso de liquidación de expensas para hacerlo claro, auditable y eficiente, otor-
gándole nuevas herramientas para la toma de decisiones de los propietarios.
Además esta aplicación de herramientas que le brinden solución a gran
parte de los problemas que diariamente tienen los administradores, haciendo
uso de las más eficientes y modernas tecnologías que existen hoy en día para
el desarrollo de la plataforma.
6. Como administrador, tengo que poder dividir los gastos de las expensas
de cada mes, por unidad, para luego pueda generarse la boleta a abonar
correspondiente.
7. Como administrador quiero poder crear alertas, para así poder dar a
conocer determinados eventos a los propietarios.
11. Como propietario, quiero poder descargar en detalle las expensas con
sus respectivo monto a abonar.
12. Como propietario, quiero poder ver todos los gastos que se realizaron,
pudiendo filtrar búsquedas por categorías y fechas.
13. Como propietario, quiero recibir alertas cada vez que se registra algún
gasto con un costo alto, para así poder estar pendiente de cualquier
noticia que el administrador crea que es importante.
14. Como propietario, quiero recibir cualquier alerta con respecto a algún
evento en el edificio.
15. Como propietario, quiero poder votar en la plataforma los temas tra-
tados en las asambleas.
16. Como proveedor, quiero poder ofrecer y cotizar mis servicios y/o pro-
ductos, para así responder a los requerimientos de los administradores.
18. Como proveedor (si se trata de reparaciones), quiero poder recibir va-
loraciones por parte de los propietarios por el trabajo realizado para
poder recibir cualquier tipo de feedback.
CAPÍTULO 4. VALIDACIÓN DEL PROCESO 49
4.1.4.3. Backend
Para la implementación de los controladores se utilizó la plataforma de
desarrollo Node.js. Esta plataforma nos permitirá la creación del servidor
para la aplicación web. Además, se utilizó el framework Express.js3 para
agregarle facilidad a la creación del servidor ayudando al manejo de rutas,
parseo de solicitudes HTTP, manejo de errores, logrando evitar la implemen-
tación de grandes cantidades de código (Mardan, 2014)(Bangare et al., 2016).
Las ventajas que presentan estas dos tecnologías juntas son:
4.1.4.4. Frontend
Con respecto a la Vista se utilizó la biblioteca de Facebook llamada
React.js5 . Se optó por la utilización de esta librería principalmente por un
interés de aprender esta tecnología. Para manejar el estado de la aplicación
se utilizó la librería Redux.js, junto con la biblioteca Redux-Saga.
Redux-Saga6 es un middleware de Redux para el manejo de los efectos
secundarios dentro de la aplicación, cómo por ejemplo, el manejo de ope-
raciones asíncronas. Esta librería, utiliza los generadores ES6 de JavaScript
para el manejo de este tipo de operaciones. Los generadores, permiten que
el código asíncrono, se vuelva síncrono (secuencial). Se optó por este tipo de
arquitectura para poder obtener como resultado una arquitectura de software
robusta, escalable, fácil de testear y de mantener (Kuparinen, 2019).
Este paradigma permite que el código sea mucho más simple, legible y
fácil de testear debido a que centraliza toda la lógica asíncrona de una manera
más sofisticada. En la Figura 4.6 se puede observar el flujo de datos en este
tipo de Arquitectura, dónde el middleware se encarga de procesar las acciones
antes que lleguen directamente al reducer (red, )(Mahajan, 2018).
4.2. Sprint 1
En esta Sección se contará sobre lo planificado en la Sprint Planning y
lo desarrollado durante el Sprint 1. También se hablará de la reunión de
revisión, mostrando el incremento del producto y métricas de código y sobre
la reunión de retrsopectiva de dicho Sprint.
Figura 4.16: Resultado general del código fuente de la vista del cliente.
de la interfaz de usuario.
4.3. Sprint 2
En esta Sección se contará sobre lo planificado en la Sprint Planning y
lo desarrollado durante el Sprint 2. También se hablará de la reunión de
revisión, mostrando el incremento del producto y métricas de código y sobre
la reunión de retrsopectiva del Sprint.
2. ¿Qué se hizo mal? La duración del Sprint tendría que haber sido de
mayor tiempo, debido a la complejidad de las tareas que no se tuvo en
cuenta a la hora de la estimación.
4.4. Sprint 3
En esta Sección se contará sobre lo planificado en la Sprint Planning y
lo desarrollado durante el Sprint 3. También se hablará de la reunión de
revisión, mostrando el incremento del producto y métricas de código y sobre
la reunión de retrsopectiva del Sprint.
Conclusiones
78
CAPÍTULO 5. CONCLUSIONES 79
Bangare, S., Gupta, S., Dalal, M., and Inamdar, A. (2016). Using node. js
to build high speed and scalable backend database server. In National
Conference NCPCI, volume 2016, page 19.
Ebert, C., Gallardo, G., Hernantes, J., and Serrano, N. (2016). Devops. Ieee
Software, 33(3):94–100.
81
BIBLIOGRAFíA 82
Heidke, N., Morrison, J., and Morrison, M. (2008). Assessing the effectiveness
of the model view controller architecture for creating web applications.
In Midwest instruction and computing symposium, Rapid City, SD.
Mardan, A. (2014). Pro express. js: Master express. js: The node. js frame-
work for your web development. Apress.
Martin, S. (2019). Angular vs react vs vue: Which is the best choice for
2019?
Silva, A., Araújo, T., Nunes, J., Perkusich, M., Dilorenzo, E., Almeida, H.,
and Perkusich, A. (2017). A systematic review on the use of definition
of done on agile software development projects. In Proceedings of the
21st International Conference on Evaluation and Assessment in Softwa-
re Engineering. ACM.