Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Capítulo de planificación #35

Merged
merged 24 commits into from
Jul 16, 2024
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
b514516
#32 Planificacion del proyecto
danigonzser May 21, 2024
54ac156
#36 Solución para TeXtidote
danigonzser Jun 4, 2024
3383774
#32 Revisión del capítulo de planificación
danigonzser Jun 4, 2024
f1c38c8
#32 Arreglo errata
danigonzser Jun 4, 2024
9df0fc2
#36 Rehacer LaTeX Workflow
danigonzser Jun 4, 2024
775eb74
#36 Probar LaTeX Workflow
danigonzser Jun 4, 2024
8dfbbd8
#32 Reestructuración y aclaración de conceptos
danigonzser Jun 6, 2024
3afc152
#32 Nueva cita
danigonzser Jun 6, 2024
38e5265
#32 Eliminación de sección de corrector
danigonzser Jun 7, 2024
eef49ad
#32 Actualizado capítulo planificación
danigonzser Jun 9, 2024
4f210eb
#32 Arreglar erratas y actualizar milestones
danigonzser Jun 9, 2024
c371298
#32 Añadida referencia a flujos de trabajo remotos en GitHub
danigonzser Jul 6, 2024
6ad06a0
#32 Añadidas referencias a principios ágiles
danigonzser Jul 6, 2024
13fe02a
#32 Añadidos enlaces y pantallazo de issues cerrados
danigonzser Jul 6, 2024
bf61d4e
#32 Añadida regla para arreglar link a issues cerradas
danigonzser Jul 6, 2024
d6f362c
#32 Subsección de milestones ágil
danigonzser Jul 6, 2024
a594fc2
#32 Capítulo de planificación reestructurado
danigonzser Jul 9, 2024
003f566
#32 ✏️
danigonzser Jul 9, 2024
05b2630
#32 Mejora de los milestones orientándolos a PMV
danigonzser Jul 11, 2024
8ea90e1
#32 Eliminación de PR y tablero Kanban de planificación
danigonzser Jul 11, 2024
c40901d
✏️
danigonzser Jul 11, 2024
46948f3
#32 Añadidas referencias a la rúbrica
danigonzser Jul 15, 2024
420e45e
Arreglados conflictos mezclando master
danigonzser Jul 16, 2024
f1f6373
Sigo arreglando conflictos mezclando master
danigonzser Jul 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/latex.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ jobs:
with:
working_directory: doc
root_file: proyecto.tex

- name: Subir informe de TeXtidote
uses: actions/upload-artifact@v4
with:
name: textidote_report
path: doc/report.html

- name: Lanzar error si existen advertencias de TeXtidote
if: ${{ steps.textidote.outputs.num_warnings != 0 }}
run: 'echo "::error file=main.tex::num_warnings: ${{ steps.textidote.outputs.num_warnings }}"; exit 1;'
Expand Down
2 changes: 1 addition & 1 deletion doc/.textidote
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
--dict ./diccionario/diccionario.es.txt
--ignore sh:seclen,sh:stacked,sh:nonp,sh:nobreak,sh:nsubdiv,sh:figref,lt:es:SPANISH_WORD_REPEAT_BEGINNING_RULE
--remove titlepage,titlepage,centering,textwidth,cleardoublepage,centeroffset,oddsidemargin,evensidemargin,large
--remove-macros cleardoublepage,bfseries,today,tableofcontents,listoffigures,listoftables
--remove-macros cleardoublepage,bfseries,today,tableofcontents,listoffigures,listoftables,esp
8 changes: 8 additions & 0 deletions doc/bibliografia.bib
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,12 @@ @book{cohn2004user
url={https://books.google.es/books?id=SvIwuX4SVigC},
year={2004},
publisher={Addison-Wesley}
}

@article{berlas2024software,
title={Software Metrics in Agile Software Development: A Review Report},
author={Berlas, Muhammad Faizan},
journal={Authorea Preprints},
year={2024},
publisher={Authorea}
}
38 changes: 37 additions & 1 deletion doc/diccionario/diccionario.es.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,40 @@ CDO
in
Corporate
Solutions
Ted
Ted
Git
Issues
issues
Pull
pull
Request
request
requests
Requests
master
merged
commits
milestone
Projects
projects
Kanban
kanban
Scrum
Code
Actions
TeXtidote
action
LTeX
grammar
spell
checking
Aspell
Ispell
erikvl87
languagetool
Action
LaCheck
ChkTeX
workflow
n
git
Binary file added doc/figuras/github_issues.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/figuras/latex_workshop_extension.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/figuras/listado_pull_requests_github.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/figuras/projects_github.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/figuras/pull_request_github.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 14 additions & 1 deletion doc/proyecto.tex
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{lscape}
\usepackage{pifont}
\usepackage{enumitem,amssymb}

\usepackage[table,xcdraw]{xcolor}
\hypersetup{
Expand Down Expand Up @@ -50,6 +52,18 @@
\setcounter{secnumdepth}{4}
\usepackage[Lenny]{fncychap}

% Para utilizar checboxes
\newlist{todolist}{itemize}{2}
\setlist[todolist]{label=\(\square \)}
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\newcommand{\esp}{\ding{80}}%

\newcommand{\bien}{\rlap{\(\square \)}{\raisebox{2pt}{\large\hspace{1pt}\cmark}}%
\hspace{-2.5pt}}
\newcommand{\mal}{\rlap{\(\square \)}{\large\hspace{1pt}\xmark}}
\newcommand{\regular}{\rlap{\(\square \)}{\raisebox{1pt}{\large\hspace{1pt}\small\(\sim \)}}}%
\newcommand{\excelente}{\rlap{\(\square \)}{\raisebox{-2pt}{\large\hspace{-3pt}\LARGE\esp}}}%

\begin{document}

Expand Down Expand Up @@ -113,4 +127,3 @@
\bibliographystyle{plain}

\end{document}

1 change: 1 addition & 0 deletions doc/secciones/01_intro.tex
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ \subsection{Usuarios identificados}
El departamento de marketing de `Corporate Solutions` le ha expresado al CTO en la empresa, la necesidad de un sistema centralizado para agilizar el proceso de generación y gestión de memes. La adopción de una solución de este tipo permitiría a los miembros del equipo de marketing colaborar de manera más eficiente y efectiva, así como garantizar la coherencia y calidad del contenido generado.

\section{Historias de usuario}
\label{sec:historias-de-usuario}

En desarrollo ágil, el proceso de toma de decisiones se basa en la información disponible en cada momento. En lugar de tomar un conjunto único y exhaustivo de decisiones al inicio de un proyecto, la toma de decisiones se distribuye a lo largo de la duración del mismo adaptándonos al carácter cambiante del desarrollo de software \cite{cohn2004user}.

Expand Down
124 changes: 122 additions & 2 deletions doc/secciones/04_planificacion.tex
Original file line number Diff line number Diff line change
@@ -1,8 +1,128 @@
\chapter{Planificación}

\section{Metodología utilizada}
Como ya se ha mencionado, el proyecto seguirá las prácticas y principios del enfoque ágil, que se fundamenta en los 17 principios delineados en \href{https://agilemanifesto.org/iso/es/manifesto.html}{el manifiesto ágil}. Ágil no es una metodología ni un marco de trabajo, sino una mentalidad que permite a las organizaciones ser más receptivas al cambio. Estos principios están diseñados para asegurar la satisfacción del cliente a través de la entrega temprana y continua de valor, con un fuerte enfoque en la excelencia técnica, el buen diseño, la planificación y la simplicidad.

Estos principios no son solo una referencia teórica, sino que se han aplicado con éxito en proyectos reales y actuales, de acuerdo con~\cite{berlas2024software}. Este informe presenta una revisión completa de la investigación publicada sobre las métricas de software en el desarrollo ágil y resalta su efectividad en diversos contextos, incluyendo pequeñas y medianas empresas.

\begin{itemize}
\item \textbf{¿Se está usando enfoques ágiles?} El informe indica que los enfoques ágiles son ampliamente utilizados en la industria del software, permitiendo a los equipos de desarrollo trabajar iterativamente y responder rápidamente a las necesidades del cliente.
\item \textbf{¿Esto verdaderamente funciona?} Según el informe, los enfoques ágiles han demostrado ser eficaces en diversos tipos de proyectos a cualquier escala proporcionando beneficios como la reducción del tiempo de comercialización, mayor satisfacción del cliente y disminución de los costos de desarrollo.
\end{itemize}

Para garantizar la aplicación coherente de estos principios, la memoria debe desarrollarse de forma iterativa e incremental, con actualizaciones a medida que avanza el proyecto y se toman decisiones. Esto nos permite evaluar continuamente cómo estamos añadiendo valor al proyecto.

En este punto, es dónde las historias de usuario y los objetivos iniciales se convierten en la guía para el desarrollo del proyecto. Las mismas también forman parte de la planificación, pues, son las que garantizan la entrega y calidad continua de un producto.

\section{Entrega y calidad continua}

Para asegurar la calidad del proyecto y la entrega continua, se han empleado una serie de herramientas y enfoques que se han integrado en el flujo de trabajo tanto local como remoto.

La documentación del proyecto es una de las partes más importantes (junto con el código) del trabajo de fin de grado si no la que más por lo que se ha de poner especial atención en que esta sea de calidad y cumpla con los requisitos establecidos por tutor y tribunal. Para dar cuenta de esto, la memoria se ha elaborado en \href{https://www.latex-project.org/}{\LaTeX{}} que es un sistema de composición tipográfica de alta calidad; incluye funciones diseñadas para la producción de documentación técnica y científica además de estar disponible como software libre.

Para complementar, comprobar y mejorar la calidad de la documentación se han usado una serie de herramientas que se han integrado en el flujo de trabajo local tanto con extensiones de (\href{https://code.visualstudio.com/}{\textit{Visual Studio Code}}) como con herramientas ejecutadas en la línea de comandos.

\section{Metodologías para el seguimiento del desarrollo}

En esta sección se documentarán las metodologías empleadas para el seguimiento del desarrollo del proyecto. Al aplicar estas metodologías se ha conseguido una mayor eficiencia en la gestión del tiempo y de los recursos, así como una mayor calidad en la documentación y en el código fuente. Además, se explicarán las herramientas utilizadas para el control de versiones y el alojamiento del repositorio remoto del proyecto.

\subsection{\textit{Git y GitHub}: control de versiones y colaboración}

Para el control de versiones se ha empleado \textit{git} que es un sistema de control de versiones que permite llevar un control de los cambios en el código fuente.

Para la colaboración y hospedaje del código fuente se ha hecho en \textit{GitHub}, una plataforma que permite alojar proyectos de \textit{software} y colaborar en ellos. En \textit{GitHub} tenemos diferentes funcionalidades que han sido de ayuda para el desarrollo del proyecto.

El repositorio del proyecto se puede encontrar en la siguiente dirección: \url{https://github.com/danigonzser/proyecto-tfg}.

En GitHub se integran diferentes herramientas que permiten llevar un control del desarrollo del proyecto. A continuación, se describen algunas de las funcionalidades más importantes.

\subsubsection{\textit{Issues}}

A lo largo del proyecto se van a ir encontrando diferentes problemas que se han de resolver. Para llevar un control de los mismos se han ido creando \textit{issues}. Estos no solo son descripciones de los problemas que se quieren resolver, sino que pueden ser una buena medida para saber si se progresa hacia el \textit{milestone} o no.

\begin{figure}[H]
\caption{Captura de pantalla del listado de \textit{issues} del repositorio del proyecto de \textit{GitHub}.}
\centering
\vspace*{0.5cm}
\includegraphics[scale=0.2]{figuras/github_issues.png}
\end{figure}

\subsubsection{Pull requests}

Los pull requests son una forma de proponer cambios en el código fuente sin que estos se apliquen directamente al código fuente o rama principal sin una aprobación previa. Estos son una manera de revisar que los cambios mantengan la excelencia técnica y calidad del proyecto.

Para proteger la rama principal o \textit{master} de cambios no deseados se han configurado una serie de reglas que impiden la integración de cambios a menos que:

\begin{itemize}
\item Los tests deben de haberse realizado de manera exitosa.
\item Que la rama esté actualizada.
\item Que las conversaciones hayan sido resueltas.
\end{itemize}

A continuación se muestra una captura de pantalla de la lista de \textit{pull requests} del proyecto hasta el momento.

\begin{figure}[H]
\caption{Captura de pantalla del listado de \textit{pull requests} del repositorio del proyecto de \textit{GitHub}.}
\centering
\vspace*{0.5cm}
\includegraphics[scale=0.2]{figuras/listado_pull_requests_github.png}
\end{figure}

En la figura se puede apreciar que se han abierto 8 \textit{pull requests} hasta el momento. Los que están en color morado son los \textit{pull requests} que ya han sido integrados en la rama principal y el que está en color verde es el que todavía no está integrado.

\begin{figure}[H]
\caption{Captura de pantalla del contenido de una \textit{pull request}.}
\centering
\vspace*{0.5cm}
\includegraphics[scale=0.1]{figuras/pull_request_github.png}\label{fig:contenido_pull_request}
\end{figure}

Como se puede ver en la figura~\ref{fig:contenido_pull_request} el estado de la \textit{pull request} es \textit{merged} lo que significa que ya ha sido integrado en la rama principal. Más abajo se puede ver el cuerpo de la misma donde residen todas las \textit{issues} que han sido creadas y consecuentemente resueltas con esta \textit{pull request}. Más abajo se puede ver el historial de commits y de conversaciones que se han ido originando a lo largo de la resolución. Al final de la imagen es donde podemos ver esas conversaciones que deben ser resueltas antes de integrar los cambios en la rama principal. Finalmente, a la derecha se muestran detalles como el revisor, el asignado, las etiquetas, el proyecto al que pertenece, el \textit{milestone} y las \textit{issues} relacionadas.

\subsubsection{\textit{Projects}: tablero kanban}

La funcionalidad de projects de \textit{GitHub} se ha utilizado para llevar un control de la evolución y progreso de los \textit{issues} y \textit{pull requests}. Se ha implementado un tablero \textit{kanban} como se puede ver en la imagen~\ref{fig:tablero_kanban} que permite ver de un vistazo el estado de los \textit{issues} y \textit{pull requests}. Esto es muy útil para saber si se progresa, cómo se están resolviendo los problemas y si se está cumpliendo con los objetivos marcados.

\begin{figure}[H]
\caption{Captura de pantalla del tablero \textit{kanban} en la sección de \textit{projects} de \textit{GitHub}.}
\centering
\vspace*{0.5cm}
\includegraphics[scale=0.2]{figuras/projects_github.png}\label{fig:tablero_kanban}
\end{figure}

\section{Temporización}

\section{Seguimiento del desarrollo}
La gestión de tiempo y recursos en nuestro proyecto se realiza mediante el uso de \textit{milestones} en GitHub, que son el equivalente a los \textit{sprints} en el enfoque ágil. Los \textit{milestones} se han creado a partir de las historias de usuario, asegurando que cada fase del proyecto esté orientada a cumplir con las necesidades y expectativas del usuario final. Un conjunto específico de \textit{issues} puede ser incluido en un \textit{milestone} y, al finalizar el \textit{sprint}, estos \textit{issues} deben estar resueltos. Al concluir el \textit{milestone}, debe resultar en un producto mínimamente viable y en nuestro repositorio vamos a etiquetarlos como nueva versión del proyecto

\subsection{Milestones}

\begin{itemize}
\item \textbf{[M00] \- Documentación, planificación y configuración inicial}
\begin{itemize}
\item \textit{Descripción}: Este \textit{milestone} abarca la creación de la documentación inicial, la planificación del proyecto y la configuración de las herramientas necesarias.
\end{itemize}

\item \textbf{[M01] \- Domain Driven Design}
\begin{itemize}
\item \textit{Descripción}: Enfocado en la implementación del diseño dirigido por el dominio (DDD).
\end{itemize}

\item \textbf{[M02] \- Almacenamiento y acceso}
\begin{itemize}
\item \textit{Descripción}: Desarrollo de la infraestructura de almacenamiento y acceso a los datos.
\end{itemize}

\item \textbf{[M03] \- Búsqueda y gestión}
\begin{itemize}
\item \textit{Descripción}: Implementación de funcionalidades de búsqueda y gestión de datos.
\end{itemize}

\item \textbf{[M04] \- Tests y despliegue}
\begin{itemize}
\item \textit{Descripción}: Creación de pruebas automatizadas y estrategias de despliegue.
\end{itemize}

\item \textbf{[M05] \- Seguridad y privacidad}
\begin{itemize}
\item \textit{Descripción}: Implementación de medidas de seguridad y políticas de privacidad.
\end{itemize}
\end{itemize}