-
Notifications
You must be signed in to change notification settings - Fork 0
/
TFG_desarrollo.tex
34 lines (20 loc) · 6.48 KB
/
TFG_desarrollo.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
\section{TFG de Desarrollo de Software}
\label{appendix:desarrollo}
% María José
Existe una modalidad de TFG que es la de desarrollo de software. El objetivo de esta sección será explicar brevemente cómo llevar a cabo la elaboración de la memoria si tu TFG es de este tipo.
Lo primero que debes hacer es decidir qué metodología de desarrollo o ciclo de vida seguirás. Tienes varias opciones que pasamos a describir brevemente, pues seguro las has visto con más detalle en una o varias asignaturas de la carrera:
\begin{itemize}
\item \textbf{Ciclo de vida clásico o en cascada}: Los requisitos se establecen al inicio y no cambian, se realizan secuencialmente las fases de diseño, implementación y pruebas, y los resultados se ven cuando el proyecto está ya avanzado.
\item \textbf{Metodología ágil}: se establecen iteraciones en las que se van se van agregando nuevas funcionalidades a la aplicación final. En cada iteración se realizan tareas de especificación, diseño, implementación y pruebas. El usuario final puede ir viendo y probando los resultados al final de cada iteración e intervenir para mejorar. Ejemplo: Scrum
\item \textbf{Espiral o de Riesgos}: Consiste en cuatro etapas: planificación, análisis de riesgo, desarrollo de prototipo y evaluación del cliente. Se puede volver de cada etapa a las anteriores en caso de que haya que modificar algo y antes de seguir con las siguientes etapas. Conviene para proyectos en los que se han previsto inicialmente riesgos económicos o técnicos, como la seguridad, que hay que gestionar si se quiere que el proyecto llegue a buen término.
\item \textbf{Dirigida por pruebas}: Primero se diseñan las pruebas, pensando en los requisitos que puede ser más difícil de abordar, principalmente los no funcionales, luego se completan los requisitos y se escribe un código. A continuación se realizan las pruebas planificadas y después se refactoriza el código para mejorarlo. Todo este proceso se hace de forma iterativa, abordando en cada iteración diferentes pruebas y requisitos. Ejemplo: Test Driven Development (TDD).
\end{itemize}
Existen otras metodología más específicas, según el tipo de desarrollo que vas a realizar, como la DevOps, en la que los equipos de desarrollo de software y los equipos de operaciones de la empresa (como el de marketing, contabilidad o gestión de almacén, por ejemplo) trabajen juntos, facilitando la comunicación e integrando mejor las tareas de ambos. También hay metodologías específicas para el diseño de videojuegos, que incluyen fases para el diseño de storyboards, y diferencian la creación de personajes, escenas, narrativa, etc. Igual ocurre con metodologías que impliquen el diseño o uso de hardware (como tarjetas, placas, dispositivos del tipo Blackberry Pi, o sensores), se suelen incluir algunas fases de diseño, construcción y prueba del hardware.
Sea cual sea la metodología que escojas, debes justificar su elección en la memoria, bien en el capítulo del estado del arte, revisando y comparando varias, o bien en el capítulo de tu propuesta, antes de empezar a dar detalles del desarrollo. En la carrera has visto varias asignaturas relacionadas con ingeniería del software y has aprendido varias metodologías y herramientas. Es el momento de aplicarlas en un proyecto completo. Te aconsejamos que las valores, y desde el principio escojas una, y llegues a un acuerdo sobre ella con la persona que te tutoriza. La planificación temporal del proyecto debe tener en cuenta esta metodología en la parte del desarrollo para asignar tiempos a todas sus fases o iteraciones.
En el capítulo de tu propuesta te aconsejamos que incluyas una sección para cada una de las fases del ciclo de vida que sigas. En el caso de metodologías ágiles, incluye una primera sección con el Product Backlog (la lista de historias de usuario priorizadas y organizadas en iteraciones) y luego una sección por cada iteración, explicando en cada una las tareas de especificación, diseño, implementación y pruebas que llevas a cabo.
Es muy importante que en la memoria utilices herramientas de ingeniería del software como las que te han enseñado en la carrera, que ayudan a visualizar diversos aspectos del desarrollo, del tipo diagramas de casos de uso, plantillas de casos de uso o de historias de usuario, diagramas de arquitectura del sistema, de clases, de secuencia, de actividad, de la estructura de la base de datos, etc. También puedes presentar esquemas o listas de cómo has estructurado el software: paquetes, tipos de ficheros, localización en la arquitectura del software final, etc. Si tu software tiene una interfaz que has diseñado, incluye los bocetos que has hecho, como fotografías de los dibujos en papel, o capturas de pantalla de herramientas de diseño de interfaces).
Evita incluir código en la memoria cuando abordes la implementación, a no ser que un objetivo de tu proyecto sea la propuesta de un algoritmo específico o la realización de cambios en algoritmos existentes para su mejora. En algunos casos, puede ser interesante incluir pseudocódigo. En cualqueir caso tu código debería estar en un repositorio online (como Github o Gitlab) enlazado desde el proyecto.
Debes destacar qué tipo de pruebas realizas sobre el software: unidad, integración, rendimiento, usabilidad, etc. Da detalles sobre las pruebas que planificas, y sobre qué métodos y herramientas utilizas para realizarlas, y también sobre sus resultados. Explica las mejoras realizadas si los resultados no son los esperados.
En algunos proyectos también se hacen pruebas finales para validar el desarrollo realizado con expertos o usuarios finales. En ese caso, incluye una sección dando detalles de estas pruebas: objetivos, participantes, procedimiento, instrumentos de evaluación, resultados y valoración final.
El profesor JJ Merelo ha escrito una serie de artículos muy interesantes sobre cómo aplicar buenas prácticas de desarrollo ágil en tu TFG \cite{TFGs2024JJ}.
Para finalizar, si durante el desarrollo has encontrado problemas que has tenido que solucionar, dale visibilidad a ese trabajo describiendo las alternativas de solución que has explorado y explicando la solución escogida para que otra persona que lea tu memoria pueda beneficiarse de ella. Si ha quedado algún problema por resolver, indica el motivo. Puede ser interesante que al final del capítulo de propuesta incluyas una sección sobre esto para mostrar tus capacidades de resolución de problemas y toma de decisiones como ingeniero o ingeniera.