TFG MaríaPérezIniesta
TFG MaríaPérezIniesta
TFG MaríaPérezIniesta
Julio, 2018
M ESTA : H ERRAMIENTA MULTIMODELO PARA LA ESTIMACIÓN DE
PROYECTOS SOFTWARE
UNIVERSIDAD DE CASTILLA-LA MANCHA
ESCUELA SUPERIOR DE INFORMÁTICA
Departamento de Tecnologías y Sistemas de la información
TECNOLOGÍA ESPECÍFICA DE
INGENIERÍA DEL SOFTWARE
Julio, 2018
María Pérez Iniesta
Ciudad Real – Spain
E-mail: Maria.Perez46@alu.uclm.es
Teléfono: (+34) 617066956
c 2018 María Pérez Iniesta
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU
Free Documentation License, Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy
of the license is included in the section entitled "GNU Free Documentation License".
Se permite la copia, distribución y/o modificación de este documento bajo los términos de la
Licencia de Documentación Libre GNU, versión 1.3 o cualquier versión posterior publicada por
la Free Software Foundation; sin secciones invariantes. Una copia de esta licencia esta incluida en
el apéndice titulado «GNU Free Documentation License».
Muchos de los nombres usados por las compañías para diferenciar sus productos y servicios son
reclamados como marcas registradas. Allí donde estos nombres aparezcan en este documento, y
cuando el autor haya sido informado de esas marcas registradas, los nombres estarán escritos en
mayúsculas o como nombres propios.
i
TRIBUNAL:
Presidente:
Vocal:
Secretario:
FECHA DE DEFENSA:
CALIFICACIÓN:
iii
Resumen
La medición y estimación del software son un campo joven, incluso más que la Ingeniería
del Software, esto ha influido en que no hayan podido alcanzar todavía la madurez que tienen
otras áreas o ingenierías.
La necesidad por medir está asociada principalmente a la mejora, y una de las principales
razones de que haya aumentado el interés en las métricas ha sido la comprensión de que
pueden ayudarnos en la mejora de la calidad de nuestros procesos y productos software. Por
otro lado, la importancia de la estimación software está justificada puesto que, de una buena
estimación del esfuerzo y costes de un proyecto, dependerá posteriormente que se pueda rea-
lizar un adecuado control durante su desarrollo y se puedan cumplir los plazos y expectativas
del cliente.
Por ello, con el objetivo de dar una solución a esta necesidad, en este Trabajo de Fin de
Grado se va a desarrollar una aplicación de estimación multimodelo, en la cual el usuario
podrá estimar proyectos software desde el punto de vista tradicional con una gestión predic-
tiva y desde el punto de vista ágil, con una gestión adaptativa.
V
Abstract
The measurement and estimation of the software is a young field, even more than the Soft-
ware Engineering, this has influenced that they have not yet reached the maturity that other
areas or engineering have.
The need to measure is associated mainly with improvement, and one of the main reasons
that the interest in metrics has increased has been the understanding that they can help us in
improving the quality of our processes and software products. On the other hand, the impor-
tance of software estimation is justified since a good estimation of the effort and costs of a
project will depend later on that an adequate control can be carried out during its develop-
ment and the customer’s deadlines and expectations can be met.
Therefore, in order to provide a solution to this need, in this Final Degree Project, a mul-
timode estimation application will be developed, in which the user will be able to estimate
software projects from the traditional point of view with predictive management. and from
the agile point of view, with an adaptive management.
VII
Agradecimientos
En primer lugar, me gustaría agradecer a mis padres Manuel y Pilar por creer en mí en to-
do momento y haberme brindado la oportunidad de cumplir un sueño y conseguir una meta
con la que sé que se sienten muy orgullosos. Por darme la fuerza necesaria cuando las cosas
se ponían complicadas, pero sobre todo por explicarme con su ejemplo el significado de las
palabras trabajo y humildad.
A Ana Pilar, por confiar y darme todo su apoyo en cada paso que he dado en mi vida,
pero sobre todo por ser mi ejemplo a seguir desde que éramos pequeñas y hacer que con su
esfuerzo y trabajo pueda seguir contestando a la pregunta "¿Quién es tu ejemplo a seguir?
Es mi hermana".
A Pedro, porque ha sido una persona fundamental en esta etapa de mi vida, por estár cada
día apoyándome y dándome la fuerza que en muchos momentos me faltaba. Pero sobre todo
por creer en mí y hacer que todo fuera más fácil demostrándome día a día porque estoy tan
orgullosa de él.
Al resto de mi familia, en especial a mis abuelos, por su apoyo y ánimo en esta aventura.
A Moisés y Mario, por confiar en mí para realizar este Trabajo de Fin de Grado (TFG),
por darme la oportunidad de aprender de ellos cada día, por sus consejos académicos y todo
el tiempo que me han dedicado. Pero sobre todo por ser un gran ejemplo de esfuerzo y de-
dicación al trabajo. Me siento muy afortunada por haber podido compartir con vosotros esta
experiencia de mi vida.
A Mari Cruz, porque ha sido un gran apoyo desde el primer día de esta aventura hasta el
último, por animarme y creer en mí mucho más de lo que yo lo hacía.
A mis amigas y amigos de Campo de Criptana, a todos y cada uno de vosotros, por per-
mitirme formar parte de vuestras vidas y por hacerme sentir orgullosa de ser vuestra amiga.
A todos y cada uno de los amigos que me ha brindado, la que probablemente sea la mejor
etapa de mi vida, desde el primero al último, Alba, Alberto, Álvaro, Edu, Jaime, Jorge, José
María, Julio, Oliva, Pablo y Pedro, por esas Friki Night’s, por las experiencias y momentos
vividos a vuestro lado, no me imagino esta etapa de mi vida sin vosotros.
IX
Todos tenemos sueños, pero para que estos sueños se vuelvan realidad se necesita una gran
determinación, dedicación, autodisciplina y esfuerzo.
-Jesse Owens-
xi
Índice general
Resumen V
Abstract VII
Agradecimientos IX
1. Introducción 1
1.1. Contexto del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Estructura del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Objetivos 5
2.1. Objetivo principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Objetivos parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Estado de la cuestión 7
3.1. Estimación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.1. Evolución de las estimaciones . . . . . . . . . . . . . . . . . . . . 7
3.2. Modelos de estimación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1. Puntos función . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.2. COCOMO II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.3. Puntos Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.4. Backfiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
XIII
3.2.5. Historias de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3. Herramientas de estimación existentes en el mercado . . . . . . . . . . . . 32
4. Método de trabajo 35
4.1. Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.1. Roles en Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1.2. Componentes de Scrum . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.3. Reuniones en Scrum . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.4. Aplicación de Scrum a este TFG . . . . . . . . . . . . . . . . . . . 38
4.1.5. Sprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2. Kanban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3. Proceso Unificado de Desarrollo . . . . . . . . . . . . . . . . . . . . . . . 40
4.4. Marco tecnológico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4.1. Medios software . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4.2. Medios hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5. Resultados 43
5.1. Definición del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2. Sprint 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.1. Pila del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.2. Desarrollo del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.3. Reunión semanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2.4. Revisión del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2.5. Retrospectiva del Sprint . . . . . . . . . . . . . . . . . . . . . . . 47
5.3. Sprint 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3.1. Refinamiento de la Pila del Producto . . . . . . . . . . . . . . . . . 48
5.3.2. Planificación del Sprint . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3.3. Desarrollo del sprint . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.4. Reunión Semanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3.5. Revisión del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3.6. Retrospectiva del Sprint . . . . . . . . . . . . . . . . . . . . . . . 59
5.4. Sprint 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.1. Refinamiento de la Pila del Producto . . . . . . . . . . . . . . . . . 60
5.4.2. Planificación del sprint . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.3. Desarrollo del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.4. Reunión semanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
xiv
5.4.5. Revisión del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.6. Retrospectiva del Sprint . . . . . . . . . . . . . . . . . . . . . . . 68
5.5. Sprint 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.5.1. Refinamiento de la Pila del Producto . . . . . . . . . . . . . . . . . 68
5.5.2. Planificación del Sprint . . . . . . . . . . . . . . . . . . . . . . . . 68
5.5.3. Desarrollo del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.5.4. Reunión Semanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5.5. Revisión del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.5.6. Retrospectiva del Sprint . . . . . . . . . . . . . . . . . . . . . . . 81
5.6. Sprint 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.1. Refinamiento de la Pila del Producto . . . . . . . . . . . . . . . . . 82
5.6.2. Planificación del Sprint . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.3. Desarrollo del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.4. Reunión semanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.6.5. Revisión del sprint . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.6.6. Retrospectiva del Sprint . . . . . . . . . . . . . . . . . . . . . . . 90
5.7. Sprint 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.7.1. Refinamiento de la Pila del Producto . . . . . . . . . . . . . . . . . 91
5.7.2. Planificación del Sprint . . . . . . . . . . . . . . . . . . . . . . . . 91
5.7.3. Desarrollo del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.7.4. Reunión semanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.7.5. Revisión del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.7.6. Retrospectiva del Sprint . . . . . . . . . . . . . . . . . . . . . . . 106
5.8. Sprint 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.8.1. Refinamiento de la Pila del Producto . . . . . . . . . . . . . . . . . 107
5.8.2. Planificación del Sprint . . . . . . . . . . . . . . . . . . . . . . . . 107
5.8.3. Desarrollo del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.8.4. Reunión semanal . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.8.5. Revisión del Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.8.6. Retrospectiva del Sprint . . . . . . . . . . . . . . . . . . . . . . . 111
6. Conclusiones 113
6.1. Análisis de los objetivos del proyecto . . . . . . . . . . . . . . . . . . . . 113
6.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.3. Opinión personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
xv
Referencias 117
xvi
Índice de cuadros
5.1. Sprint 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2. Resumen historias de Usuario . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3. Plan de Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4. Prueba 1 de la Historia de Usuario 2 . . . . . . . . . . . . . . . . . . . . . 56
5.5. Prueba 2 de la Historia de Usuario 2 . . . . . . . . . . . . . . . . . . . . . 56
5.6. Prueba 1 de la Historia de Usuario 3 . . . . . . . . . . . . . . . . . . . . . 56
5.7. Prueba 2 de la Historia de Usuario 3 . . . . . . . . . . . . . . . . . . . . . 57
5.8. Prueba 1 de la Historia de Usuario 4 . . . . . . . . . . . . . . . . . . . . . 57
5.9. Prueba 2 de la Historia de Usuario 4 . . . . . . . . . . . . . . . . . . . . . 57
5.10. Prueba 3 Historia de Usuario 4 . . . . . . . . . . . . . . . . . . . . . . . . 58
5.11. Prueba 4 de la Historia de Usuario 4 . . . . . . . . . . . . . . . . . . . . . 58
XVII
5.12. Prueba 5 Historia de Usuario 4 . . . . . . . . . . . . . . . . . . . . . . . . 58
5.13. Prueba 1 Historia de Usuario 9 . . . . . . . . . . . . . . . . . . . . . . . . 59
5.14. Prueba 1 de la Historia de Usuario 10 . . . . . . . . . . . . . . . . . . . . 65
5.15. Prueba 2 de la Historia de Usuario 10 . . . . . . . . . . . . . . . . . . . . 66
5.16. Prueba 1 de la Historia de Usuario 11 . . . . . . . . . . . . . . . . . . . . 66
5.17. Prueba 2 de la Historia de Usuario 11 . . . . . . . . . . . . . . . . . . . . 66
5.18. Prueba 3 de la historia de usuario 11 . . . . . . . . . . . . . . . . . . . . . 67
5.19. Prueba 1 de Historia de Usuario 12 . . . . . . . . . . . . . . . . . . . . . . 67
5.20. Prueba 1 de la Historia de Usuario 13 . . . . . . . . . . . . . . . . . . . . 77
5.21. Prueba 2 de la Historia de Usuario 13 . . . . . . . . . . . . . . . . . . . . 78
5.22. Prueba 1 de la Historia de Usuario 14 . . . . . . . . . . . . . . . . . . . . 78
5.23. Prueba 2 de la Historia de Usuario 14 . . . . . . . . . . . . . . . . . . . . 78
5.24. Prueba 3 de la historia de Usuario 14 . . . . . . . . . . . . . . . . . . . . . 79
5.25. Prueba 1 Historia de Usuario 15 . . . . . . . . . . . . . . . . . . . . . . . 79
5.26. Prueba 1 de la Historia de Usuario 16 . . . . . . . . . . . . . . . . . . . . 79
5.27. Prueba 2 de la Historia de Usuario 16 . . . . . . . . . . . . . . . . . . . . 80
5.28. Prueba 1 de la Historia de Usuario 17 . . . . . . . . . . . . . . . . . . . . 80
5.29. Prueba 2 de la Historia de Usuario 17 . . . . . . . . . . . . . . . . . . . . 80
5.30. Prueba 1 de la Historia de Usuario 18 . . . . . . . . . . . . . . . . . . . . 81
5.31. Prueba 1 de la Historia de Usuario 19 . . . . . . . . . . . . . . . . . . . . 87
5.32. Prueba 2 de la Historia de Usuario 19 . . . . . . . . . . . . . . . . . . . . 87
5.33. Prueba 1 de la Historia de Usuario 20 . . . . . . . . . . . . . . . . . . . . 88
5.34. Prueba 2 de la Historia de Usuario 20 . . . . . . . . . . . . . . . . . . . . 88
5.35. Prueba 3 de la Historia de Usuario 20 . . . . . . . . . . . . . . . . . . . . 88
5.36. Prueba 4 de la Historia de Usuario 20 . . . . . . . . . . . . . . . . . . . . 89
5.37. Prueba 1 de la Historia de Usuario 21 . . . . . . . . . . . . . . . . . . . . 89
5.38. Prueba 2 de la Historia de Usuario 21 . . . . . . . . . . . . . . . . . . . . 89
5.39. Prueba 1 de la Historia de Usuario 22 . . . . . . . . . . . . . . . . . . . . 90
5.40. Prueba 1 de la Historia de Usuario 23 . . . . . . . . . . . . . . . . . . . . 101
5.41. Prueba 2 de la Historia de Usuario 23 . . . . . . . . . . . . . . . . . . . . 101
5.42. Prueba 1 de la Historia de Usuario 24 . . . . . . . . . . . . . . . . . . . . 102
5.43. Prueba 2 de la Historia de Usuario 24 . . . . . . . . . . . . . . . . . . . . 102
5.44. Prueba 1 de la Historia de Usuario 25 . . . . . . . . . . . . . . . . . . . . 102
5.45. Prueba 2 de la Historia de Usuario 25 . . . . . . . . . . . . . . . . . . . . 103
5.46. Prueba 1 de la Historia de Usuario 27 . . . . . . . . . . . . . . . . . . . . 103
xviii
5.47. Prueba 1 de la Historia de Usuario 29 . . . . . . . . . . . . . . . . . . . . 103
5.48. Prueba 2 de la Historia de Usuario 29 . . . . . . . . . . . . . . . . . . . . 104
5.49. Prueba 1 de la Historia de Usuario 30 . . . . . . . . . . . . . . . . . . . . 104
5.50. Prueba 2 de la Historia de Usuario 30 . . . . . . . . . . . . . . . . . . . . 104
5.51. Prueba 1 de la Historia de Usuario 31 . . . . . . . . . . . . . . . . . . . . 105
5.52. Prueba 1 de la Historia de Usuario 32 . . . . . . . . . . . . . . . . . . . . 105
5.53. Prueba 2 de la Historia de Usuario 32 . . . . . . . . . . . . . . . . . . . . 105
5.54. Prueba 1 de la Historia de Usuario 26 . . . . . . . . . . . . . . . . . . . . 110
5.55. Prueba 1 de la Historia de Usuario 28 . . . . . . . . . . . . . . . . . . . . 111
5.56. Prueba 2 de la Historia de Usuario 28 . . . . . . . . . . . . . . . . . . . . 111
xix
Índice de figuras
XXI
5.26. Diagrama entidad relación Puntos Casos de Uso . . . . . . . . . . . . . . . 71
5.27. Diagrama entidad relación Backfiring . . . . . . . . . . . . . . . . . . . . 72
5.28. Introducir datos generales Puntos Casos de Uso . . . . . . . . . . . . . . . 73
5.29. Cálculo de los actores y los casos de uso . . . . . . . . . . . . . . . . . . . 73
5.30. Factores técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.31. Factores de entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.32. Resultados Puntos Casos de uso . . . . . . . . . . . . . . . . . . . . . . . 75
5.33. Introducir datos generales Backfiring . . . . . . . . . . . . . . . . . . . . . 75
5.34. Transformar líneas de código en puntos función . . . . . . . . . . . . . . . 76
5.35. Resultados Backfiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.36. Resultados Distribuciones Backfiring . . . . . . . . . . . . . . . . . . . . . 77
5.37. Caso de uso insertar estimación Historias de Usuario . . . . . . . . . . . . 83
5.38. Diagrama de clases Historias de Usuario . . . . . . . . . . . . . . . . . . . 83
5.39. Diagrama entidad relación Historias de Usuario . . . . . . . . . . . . . . . 84
5.40. Introducir datos generales Historias de Usuario . . . . . . . . . . . . . . . 85
5.41. Introducir datos de las Historias de Usuario . . . . . . . . . . . . . . . . . 85
5.42. Estimación con la técnica Planning Poker . . . . . . . . . . . . . . . . . . 86
5.43. Resultados Historias de Usuario . . . . . . . . . . . . . . . . . . . . . . . 86
5.44. Diagrama de casos de uso Gestionar Aplicación . . . . . . . . . . . . . . . 92
5.45. Diagrama de casos de uso Gestionar Estimación . . . . . . . . . . . . . . . 92
5.46. Diagrama de casos de uso Gestionar Aplicación . . . . . . . . . . . . . . . 93
5.47. Diagrama entidad relación gestión de usuarios . . . . . . . . . . . . . . . . 94
5.48. Filtrar Estimaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.49. Datos generales de la estimación . . . . . . . . . . . . . . . . . . . . . . . 95
5.50. Funcionalidades de la estimación . . . . . . . . . . . . . . . . . . . . . . . 96
5.51. Factores de influencia modificados . . . . . . . . . . . . . . . . . . . . . . 96
5.52. Resultados modificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.53. Resultados modificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.54. Estimaciones que se pueden eliminar . . . . . . . . . . . . . . . . . . . . . 97
5.55. Confirmación de eliminación . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.56. Estimaciones resultantes después de la eliminación . . . . . . . . . . . . . 98
5.57. Imputar Estimación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.58. Registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.59. Acceso a la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.60. Cerrar sesión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
xxii
5.61. Modificar perfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.62. Datos generales exportados . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.63. Funcionalidades exportadas . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.64. ILF exportados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.65. Resultados exportados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.66. Comparar Estimaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
xxiii
B.30. Ventana factores de influencias modificados . . . . . . . . . . . . . . . . . 148
B.31. Pestaña Resultados modificados . . . . . . . . . . . . . . . . . . . . . . . 148
B.32. Pestaña Resultados distribuciones modificados . . . . . . . . . . . . . . . . 149
B.33. Eliminar estimación seleccionada . . . . . . . . . . . . . . . . . . . . . . . 149
B.34. Ventana confirmar eliminar . . . . . . . . . . . . . . . . . . . . . . . . . . 150
B.35. Excel datos generales exportados . . . . . . . . . . . . . . . . . . . . . . . 150
B.36. Comparar resultados de las estimaciones . . . . . . . . . . . . . . . . . . . 151
B.37. Pestaña Resultados inserción resultados imputados . . . . . . . . . . . . . 151
B.38. Opción Modificar perfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
xxiv
Listado de acrónimos
XXV
Capítulo 1
Introducción
D esde antes de nacer, ya nos vemos sometidos a una serie de mediciones que determinan
nuestra vida; y, de hecho, la medición nos acompañará durante el resto de nuestra
vida y de forma cotidiana. Continuamente realizamos mediciones que nos guían a la hora
de tomar decisiones y seleccionar la alternativa que creemos mejor, tanto en nuestra vida
personal como en las diversas actividades profesionales [38].
La medición desde sus orígenes es una disciplina fundamental en las ingenierías, y la Inge-
niería del Software no debe ser una excepción, pero debemos tener presente que el software
cuenta con un conjunto de características que lo hacen diferente de otros productos.
Cuando nos encontramos en el entorno de proyectos de software, es difícil hacer una
diferenciación clara entre métodos o técnicas para la estimación de proyectos y métodos o
técnicas para la estimación del software. Se podría pensar que la diferencia es el tipo de tareas
estimadas en cada método, pero no siempre es determinante porque puede haber métodos que
permitan ambas opciones [34].
A finales del siglo XIX, Lord Kelvin afirmó: “Cuando puedes medir sobre lo que estás
diciendo, y expresarlo en números, sabes algo sobre ello, pero cuando no puedes medirlo ni
expresarlo en números entonces tu conocimiento es precario e insatisfactorio” [40].
La técnica de estimación en contraste con los modelos matemáticos, en los cuales los
controladores de costos explícitos se incluyen en los modelos como parámetros cuantitativos
o categóricos, no especifica qué parámetros se toman en cuenta o cómo son explícitamente
combinados [30].
La medición software es un campo joven, incluso más que la Ingeniería del Software, esto
ha influido en que la medición software no haya podido alcanzar todavía la madurez que
tienen otras ingenierías.
1
Esta necesidad por medir está asociada principalmente a la mejora, y una de las principales
razones de que haya aumentado el interés en las métricas ha sido la comprensión de que
pueden ayudarnos en la mejora de la calidad de nuestros procesos.
Desde hace algún tiempo, las organizaciones parecen estar más concienciadas sobre los
beneficios que supone una buena gestión de proyectos. Pero no siempre es fácil gestionar un
proyecto de manera exitosa. Esto está muy ligado con las estimaciones que se realizan sobre
un proyecto.
Desde 1994 el Standish Group, una organización independiente de investigación de las
Tecnologías de la Información (TI) internacionales fundada en 1985, publica el informe
CHAOS. Este informe da una visión sobre el fracaso o éxito de los proyectos en el sector de
las TI basándose en el triángulo de las tres restricciones: alcance, presupuesto y plazos.
El informe suele publicarse cada dos años, el último fue publicado en el año 2015. En
ésta última publicación se ha cambiado la definición de éxito de un proyecto. En lugar de
tomar como éxito el triángulo de las tres restricciones, la nueva definición de éxito es el
cumplimiento de los plazos, presupuesto y si se obtienen resultados satisfactorios [14].
Los retrasos en el coste y la duración del proyecto están directamente relacionados con
una mala estimación, de ahí la importancia de la precisión y exactitud de los datos que for-
man nuestra estimación. La calidad de los datos en los proyectos software es cada vez más
importante (entre ellos, los datos de estimación), ya que nos ayuda en la toma de decisiones
de nuestra organización. Por esto en Data Quality Team S.L (DQT EAM), empresa donde he
realizado este TFG, se trabaja para obtener datos de calidad y así poder ayudar a las organi-
zaciones a tomar mejores decisiones.
Dentro del desarrollo del software una de las principales fuentes de datos e información
para poder tomar decisiones son las estimaciones, y la precisión y exactitud de éstas. Por
ello se ha desarrollado una herramienta multimodelo basada en los principales estándares y
modelos de estimación que sirve para controlar y mejorar las estimaciones de las empresas
(desde un punto de vista tradicional con una gestión predictiva y desde un punto de vista ágil
con una gestión adaptativa), pudiendo mejorar así la calidad de los datos y, por tanto, la toma
de decisiones.
2
1.1 Contexto del problema
El presente TFG se ha realizado en la Escuela Superior de Informática (ESI) de Ciudad
Real, Universidad de Castilla-La Mancha (UCLM) con la empresa DQT EAM, por ello la alum-
na adquirió conocimiento sobre el uso de la metodología, herramientas y tecnología dispo-
nible en DQT EAM.
Tras estos capítulos se incluye las referencias que han sido consultadas y citadas durante
el desarrollo de este documento.
En la parte final del presente documento se presentan los siguientes anexos:
Historias de Usuario
Manual de usuario
Contrato de Confidencialidad y Propiedad Intelectual
3
Capítulo 2
Objetivos
5
2.3 Justificación
Este proyecto genera una solución al problema de la estimación del esfuerzo y coste de
proyectos software, permitiendo así la mejora de la calidad de nuestros procesos, principal-
mente los relacionados con la planificación, control y evaluación del proyecto.
Una gran ventaja que aportará este sistema desarrollado será que ofrece soporte a diferen-
tes modelos de estimación. De esta manera la herramienta se puede utilizar para proyectos
que siguen, un punto de vista tradicional con una gestión predictiva, como para proyectos
que siguen un punto de vista ágil, con una gestión adaptativa. Además de lo anterior, tam-
bién permitirá realizar comparaciones entre los resultados obtenidos con la herramienta y lo
imputado realmente tras la realización del proyecto, lo que permitirá a las empresas aprender
y ajustar sus factores de estimación.
6
Capítulo 3
Estado de la cuestión
E n este capítulo se presenta una visión general sobre los conceptos teóricos y técnicos
que sirven como base para la elaboración de este trabajo, contribuyendo a su base
tecnológica y de conocimiento.
3.1 Estimación
3.1.1 Evolución de las estimaciones
Los orígenes de la medición y estimación de software se sitúan en torno a finales de los
años 60, en los que aparecieron las primeras propuestas sobre las que se asentaron bases de
trabajo en el área.
En el año 1968 Rubery y Hartwick presentaron una métrica para la definición de la calidad
del software, que se basaba en el número de instrucciones originales y modificadas durante
la ejecución.
En 1974 Wolverton hizo uno de los primeros intentos para definir la productividad de un
programador usando líneas de código.
Una de las medidas que merece la pena destacar de esta época son los puntos función, fue
definida por Albretch en 1979 y que, a día de hoy, es una métrica fundamental para la gestión
de proyectos.
A finales de este periodo empieza a haber cierta repercusión del campo de la medición
en foros científicos. Además, aparecen talleres especializados como el IEEE Workshop on
Quantitative Software Models o el número especial de la revista IEEE Transactions on Soft-
ware Engineering en la que la investigación sobre métricas es la principal protagonista.
En los inicios de los años 80 se mantenía un cierto escepticismo sobre la aportación del
campo de la medición del software, debido a una serie de críticas sobre la imprecisión o la
simplicidad de las métricas.
7
Boehm en 1981 propuso el modelo COCOMO, uno de los modelos de estimación de costes
más aplicado y que se basa en la métrica de líneas de código.
Otro de los aspectos que cabe destacar en este período es la proliferación de proyectos de
investigación sobre medición de software. En Europa se desarrollan proyectos como MET-
KIT (Metrics Educational Toolkit), COSMOS (Cost Management with Metrics of Specifica-
tion) y MERMAID (Metrication and Resource Modelling Aid) [38].
Tamaño: Los puntos función pretenden medir tamaño, no la calidad con la que se ha
realizado el software, ni el valor del producto, o el esfuerzo que ha sido requerido para
desarrollarlo.
Funcionalidad: Se refiere a la capacidad del software para que un usuario pueda rea-
lizar transacciones y guardar datos.
8
3.2.1.2. Historia de los puntos función
Los puntos función nacieron alrededor del año 1975 y surgieron y se difundieron por
Estados Unidos [12].
9
3.2.1.4. Procedimiento de cálculo de puntos función
A continuación, se van a explicar los pasos generales para el cálculo de puntos función
para nuevos desarrollos:
1. Calcular los puntos función sin ajustar:
1.1. Contar el número de funciones de usuario (Identificar los cinco elementos fun-
cionales). Los cinco elementos funcionales que debemos identificar son:
Ficheros lógicos internos (ILF): Grupo de datos relacionados lógicamente
o información de control reconocida por el usuario y mantenido dentro de
los límites de la aplicación.
Ficheros lógicos externos (ELF): Grupo de datos relacionados lógicamente,
identificable por el usuario, referenciado por la aplicación, pero mantenido
dentro de los límites de otra aplicación.
Entradas externas (EI): cualquier entrada que tenga un formato único o
un solo procesamiento, a través de la cual el usuario u otro programa puede
añadir, borrar o cambiar datos.
Salidas externas (EO): cualquier salida que tenga un formato diferente o
requiera un procesamiento diferente a otros tipos de salida, generada para el
usuario u otro programa.
Consultas externas (EQ): Combinaciones de entrada/salida en las que cada
entrada genera una salida simple e inmediata.
1.2. Determinar el nivel de complejidad de cada función de usuario. Para ello tenemos
en cuenta el número de tipos de elementos de datos y el número de tipos de
archivos referenciados.
Número de tipos de elementos de datos incluidos (Data Element Ty-
pe (DET)). Se debe contar un DET por cada subgrupo de datos elementales
reconocibles por el usuario.
Número de tipos de archivos lógicos referenciados (File Type Referenced
(FTR)). Se debe contar un FTR por cada fichero (interno o externo) leído por
el proceso de la entrada, salida o consulta.
Número de archivos lógicos internos referenciados (Record Element Ty-
pe (RET)). Se debe contar un RET por cada subgrupo de datos elementales
reconocibles por el usuario. Cabe destacar que los RET solo se identifican en
los ILF y los ELF.
Una vez determinados el número de DET, RET y FTR se determina la complejidad
conforme a las siguientes tablas 3.2, 3.3 y 3.4:
10
Número de tipos de Número de tipos de elementos de datos incluidos
registros referenciados 1-4 5-15 >=16
0-1 Baja Baja Media
2-3 Baja Media Alta
>=4 Media Alta Alta
Cuadro 3.2: Complejidad de las entradas
11
1.3. Aplicar pesos de complejidad. Aplicar pesos según el nivel de complejidad. La
suma para todas las funciones de usuario equivale al número de puntos función
sin ajustar.
12
Eficiencia de Usuario Final: mide la facilidad de uso de la aplicación de cara al
usuario final.
Actualización de datos online: tendrá puntuación máxima si las actualizaciones
en línea son obligatorias y especialmente dificultosas, quizá debido a la nece-
sidad de realizar copias de seguridad, o de proteger los datos contra cambios
accidentales.
Procesamiento complejo: se considera complejo cuando hay muchas interac-
ciones, puntos de decisión o gran número de ecuaciones lógicas o matemáticas.
Reutilización: indica si gran parte de la funcionalidad del proyecto está pensada
para un uso intensivo por otras aplicaciones.
Facilidad de instalación: mide si durante el desarrollo se consideran factores
que facilitan la instalación.
Facilidad de operación: mide si se han tenido en cuenta factores de operativi-
dad. Se han considerado procedimientos de arranque, de copia de respaldo y de
recuperación.
Múltiples localizaciones: la aplicación se diseña para soportar múltiples instala-
ciones en diferentes entornos y organizaciones.
Facilidad de cambio: se han tenido en cuenta criterios que facilitarán el posterior
mantenimiento.
Una vez elegidos los 14 factores. Utilizaremos la siguiente fórmula para obtener los
puntos función ajustados:
PF=PFSA*(0,65+0,01*(SUMA(GI)))
Siendo:
PF los puntos función ajustados,
PFSA los puntos función sin ajustar, y
SUMA(GI) la suma de los grados de influencia de los 14 factores que influyen
en la complejidad del proceso.
Esfuerzo= C*P F E
13
Donde:
PF son los puntos función del proyecto que se quiere estimar,
C y E son factores de calibrado o de corrección para que el esfuerzo se ajuste mejor.
Los factores C y E toman distintos valores en función de las características que tiene el
proyecto que se está estimando (Véase tabla 3.6).
Características C E
1 MF 49,02 0,736
2 MR 78,88 0,646
3 PC 48,90 0,661
4 MULTI 16,01 0,865
5 3GL 54,65 0,717
6 4GL 29,50 0,758
7 GenAp 68,11 0,660
8 Mantenimiento 52,58 0,683
9 Nuevo 39,05 0,731
10 MF-3GL 65,37 0,705
11 MF-4GL 52,09 0,640
12 MF-GenAp 65,68 0,692
13 MR-3GL 126,3 0,565
14 MR-4GL 62,35 0,694
15 PC-3GL 60,46 0,648
16 PC-4GL 36,48 0,694
17 Multi-3GL 19,82 0,666
18 Multi-4GL 6,49 0,983
19 MF-3GL-Mantenimiento 83,27 0,650
20 MF-3GL-Nuevo 59,21 0,745
21 MF-4GL-Mantenimiento 69,37 0,538
22 MF-4GL-Nuevo 102,8 0,546
23 MF-GenAp-Nuevo 65,68 0,692
24 MR-3GL-Mantenimiento 123,2 0,585
25 MR-3GL-Nuevo 81,36 0,623
26 MR-4GL-Mantenimiento 96,31 0,616
27 PC-3GL-Mantenimiento 83,66 0,528
28 PC-3GL-Nuevo 48,60 0,699
29 PC-4GL-Mantenimiento 29,84 0,731
30 PC-4GL-Nuevo 42,58 0,668
31 Multi-3GL-Mantenimiento 5,05 1,135
32 Multi-3GL-Nuevo 58,16 0,664
33 Multi-4GL-Mantenimiento 115,8 0,450
Cuadro 3.6: Parámetros para la estimación del esfuerzo [38]
14
A continuación, se explican las características que aparecen en la tabla anterior:
Tipo de desarrollo:
• Nuevo: Proyectos en los que se desarrollan aplicaciones nuevas.
• Mantenimiento: Proyectos que se dedican a mejorar o mantener las aplicaciones
existentes.
Plataforma:
• Mainframe (MF): Llamamos mainframe a un tipo de ordenador grande, potente
y costoso capaz de procesar una gran cantidad de datos de manera muy rápida. Y
capaz de atender a una gran cantidad de clientes de manera simultánea.
• Mid-Range (MR): Un Mid-Range es un ordenador más grande que un micro
computador u ordenador personal pero más pequeño que un mainframe. Suelen
cumplir la función de servidores en entornos multiusuarios.
• Personal Computer (PC): Es un ordenador personal o micro computador.
• Multiplataforma (M ULTI): Es una combinación de las plataformas anteriores.
Tipo de lenguaje:
• Lenguaje de tercera generación (3GL): Consideramos lenguajes de tercera gene-
ración algunos como COBOL, C, Pascal o Fortan. También consideramos len-
guajes 3GL los lenguajes “modernos“ como Visual Basic, C++, Java, etc.
• Lenguaje de cuarta generación (4GL): Los lenguajes de cuarta generación son
más fáciles de utilizar que los lenguajes de tercera generación, debido a que ofre-
cen interfaces gráficas y capacidades de gestión avanzadas, aunque consumen
más recursos del ordenador.
• Generador de aplicaciones (G ENA P): Hace referencia a herramientas que permiten
la generación de aplicaciones de manera automática, tanto a nivel de datos como
a nivel de funcionalidad.
Donde:
Esfuerzo es el total de horas estimado, y
Coste-Medio-Hora es el coste promedio de la hora de las personas que trabajarán en el
proyecto.
15
3.2.1.7. Estimaciones por fases del ciclo de vida
Para estimar el esfuerzo y coste para cada fase del proyecto se tendrá que multiplicar el
valor total del esfuerzo o del coste, según corresponda, por el porcentaje correspondiente a
cada fase. Distinguimos entre proyectos de desarrollo y proyectos de mantenimiento.
A continuación en las tablas 3.7 y 3.8, se muestran los porcentajes correspondientes a cada
fase:
3.2.2 COCOMO II
Constructive Cost Model (COCOMO) es el modelo de estimación de costes del software
más utilizado. La primera versión de COCOMO fue desarrollado por Barry Boehm en 1981,
conocida como COCOMO 81.
16
a tecnologías como orientación a objetos, desarrollo incremental, composición de aplicación,
y reingeniería.
En la actualidad se sigue utilizando el modelo COCOMO II.
17
Lenguaje Tamaño LOC
1 IntegraNova 5,33
2 Excel 6,400
3 BPM 7,11
4 Generators 7,11
5 Mathematica10 9,143
6 Mathematica9 12,800
7 TranscriptSQL 12,800
8 QBE 12,800
9 X 12,800
10 TELON 16,000
11 APS 16,842
12 Forte 17,778
13 MUMPS 18,824
14 IBM ADF 20,000
15 Smalltalk 21,333
16 Eiffel 22,857
17 ASP NET 24,615
18 Objetive C 26,667
19 Visual Basic 26,667
20 Delphi 29,091
21 APL 32,000
22 Julia 35,556
23 M 35,556
24 OPA 35,556
25 Perl 35,556
26 Elixir 37,647
27 Haskell 37,647
28 Mixed Languages 37,647
29 R 25,000
30 DB2 40,000
31 LiveScript 40,000
32 Oracle 40,000
33 Erlang 42,667
34 CICS 45,714
35 DTABL 45,714
36 F# 45,714
37 Ruby 45,714
38 Simula 45,714
39 Dart 47,407
40 RPG III 47,407
18
Lenguaje Tamaño LOC
41 Ada 95 49,231
42 Ceylon 49,231
43 Fantom 49,231
44 C# 51,200
45 X10 51,200
46 C++ 53,333
47 Go 53,333
48 Java 53,333
49 PHP 53,333
50 Python 53,333
51 Zimbu 58,182
52 Quick Basic 60,952
53 Basic (interpreted) 64,000
54 Forth 64,000
55 haXe 64,000
56 Lisp 64,000
57 Prolog 64,000
58 SH (shell scripts) 64,000
59 ESPL/l 71,111
60 JavaScript 71,111
61 ABAP 80,000
62 Modula 80,000
63 PL/l 80,000
64 Pascal 91,429
65 PL/S 91,429
66 GW Basic 98,462
67 Algol 106,667
68 Bliss 106,667
69 Chill 106,667
70 COBOL 106,667
71 Coral 106,667
72 Fortran 106,667
73 Jovial 106,667
74 C 128,000
75 XML 128,000
76 HTML 160,000
77 Macro Assembly 213,333
78 JCL 220,690
79 Basic Assembly 320,000
80 Machine Language 640,000
Cuadro 3.9: Equivalencia puntos función en líneas de código [36]
19
Líneas de código fuente: El objetivo es medir la cantidad de trabajo en el desarrollo
de un programa. Definir una línea de código es difícil debido a que existen diferencias
conceptuales cuando se cuentan sentencias ejecutables y de declaraciones de datos en
lenguajes diferentes.
PM=NOP/PROD
Donde:
• NOP (Nuevos Puntos Objeto) es el tamaño del software a desarrollar expresado
en puntos objeto
NOP=OP*(100- %reuso)/100
◦ OP (Puntos Objeto) es el tamaño del software a desarrollar expresado en
Puntos Objeto.
◦ %reuso es el porcentaje que se espera lograr en el proyecto.
• PROD es el promedio de la productividad determinada a partir del análisis de
datos del proyecto.
Modelo de diseño temprano (EDM) y Modelo Post-Arquitectura (PAM)
La fórmula para calcular el esfuerzo nominal en el modelo EDM en el modelo PAM
es la misma y corresponde con:
P Mnominal = Ax(KSLOC)B
Donde:
• A es una constante que captura los efectos lineales sobre el esfuerzo de acuerdo
a la variación del tamaño. En nuestro caso A tiene el valor 2.94.
• KSLOC es el tamaño del software a desarrollar expresado en miles de líneas de
código fuente.
• B es factor de escala para tener en cuenta las diversas economías de escala, posi-
tivas o negativas, existentes en proyectos software.
20
5
X
B=0.91+0.01* Wi
i=1
Donde:
◦ Wi es el sumatorio de los 5 factores de escala, a los que se le asignan un peso
de 0 (muy bajo) a 5 (muy alto). Estos factores son:
PREC: Ausencia de precedentes
FLEX: Flexibilidad de desarrollo
RESL: Resolución Arquitectura/Riesgos (mide una combinación del uso
de la gestión de riesgos y de la minuciosidad al diseñar la arquitectura
del sistema)
TEAM: Cohesión del equipo
PMAT: Madurez del proceso (basado en utilizar el modelo CMM - Ca-
pability Maturity Model- del Software Engineering Institute)
Para obtener el esfuerzo estimado tendremos que aplicar unos multiplicadores al es-
fuerzo nominal obtenido anteriormente. Estos multiplicadores se denominan multipli-
cadores de esfuerzo, y son los factores de costo que tienen un efecto multiplicativo
sobre el esfuerzo. Cada factor se puede clasificar en 6 o 16 niveles diferentes (según
el modelo), que expresan el impacto del multiplicador sobre el esfuerzo de desarrollo.
Esta escala varía desde un nivel Extra Bajo hasta un nivel Extra Alto.
La fórmula para obtener el esfuerzo estimado es:
N
Y
P Mestimado = P Mnominal ∗ EMi
i=1
Donde:
• EM son los multiplicadores de esfuerzo.
Estos factores en el modelo EDM son:
◦ RCPX: Fiabilidad y complejidad del producto.
◦ RUSE: Reutilización requerida.
◦ PDIF: Dificultad de la plataforma.
◦ PERS: Capacidad del personal.
◦ PREX: Experiencia del personal.
◦ FCIL: Medios.
Estos factores en el modelo PAM se obtienen al desglosar los 7 anteriores, agru-
pándose en 4 categorías:
◦ Producto
RELY: Fiabilidad del producto requerida.
DATA: Tamaño de la base de datos.
21
CPLX: Complejidad del producto.
DOCU: Adecuación de la documentación a las necesidades del ciclo de
vida.
RUSE: Reutilización requerida.
◦ Plataforma
TIME: Limitaciones en el tiempo de ejecución.
STOR: Limitaciones en el almacenamiento principal
PVOL: Volatilidad de la plataforma
◦ Personal
ACAP: Capacidad de los analistas.
PCAP: Capacidad del programador.
PCON: Continuidad del personal.
AEXP: Experiencia en las aplicaciones.
PEXP: Experiencia en la plataforma.
LTEX: Experiencia con el lenguaje y las herramientas.
◦ Proyecto
TOOL: Uso de herramientas software.
SITE: Desarrollo en varios sitios.
%SCED
T DEV = [3,67 ∗ P M (0,28+0,2∗(B−0,91)) ] ∗
100
Donde:
PM es el esfuerzo expresado en meses-horas
SCED % es el porcentaje de reducción o incremento en el calendario nominal del pro-
yecto
B es el factor de escala para tener en cuenta las diversas economías de escala, positivas
o negativas, existentes en proyectos software.
22
3.2.2.7. Estimación del coste
El coste estimado para el proyecto se calcula con la siguiente fórmula:
Donde:
PMestimado es el esfuerzo estimado,
Ratio cantidad de dinero que debe cobrar por mes el desarrollador de cada módulo.
Donde:
Tamano_del_modulo es el tamaño del módulo en líneas de código,
PMestimado es el esfuerzo estimado.
Coste_instruccion= Coste/Tamano_del_modulo
23
3.2.3 Puntos Casos de Uso
3.2.3.1. ¿Qué son los Puntos Casos de Uso?
Método de estimación del tiempo de desarrollo de un proyecto mediante la asignación de
pesos a un cierto número de factores que lo afectan.
3.2.3.2. Historia
Este modelo fue desarrollado por Gustav Kamer en 1993, basándose en el modelo de
puntos función, y bajo la supervisión de Ivar Jacobson, creador de los casos de uso y gran
promovedor del desarrollo de UML y el Proceso Unificado [20].
Este método ha sido utilizado por la empresa Rational Software (posteriormente adquirida
por IBM) durante varios años y obteniendo muy buenos resultados [19].
Ha sido analizado posteriormente en otros estudios, como la tesis de Kirsten Ribu (Uni-
versidad de Oslo) en 2001.
24
Tipo de interacción Peso
Simple 1
Medio 2
Complejo 3
Cuadro 3.10: Tabla con los pesos en función de la complejidad de la interacción con los
actores [19].
Por último, Se calcula el factor de peso de los actores sin ajustar, para ello utili-
zamos la siguiente fórmula:
UAW=SUM(CantidadTipoDeUnActor*Peso)
Por último, se calcula el factor de peso de los casos de uso sin ajustar, para ello
utilizamos la siguiente fórmula:
UUCW=SUM(CantidadTipoDeUnCasoDeUso*Peso)
UUCP=UAW+UUCW
25
2.1. Cálculo de los factores técnicos.
Se compone de 13 factores que evalúan la complejidad de los módulos del siste-
ma que se desarrolla, cada uno de estos factores tiene un peso definido, y se le
asigna un valor de influencia entre 0 y 5.
A continuación en la tabla 3.12, se muestran los 13 factores con sus correspon-
dientes pesos:
Donde:
Ri es el sumatorio de la influencia de cada factor por el peso asignado a ese
factor.
2.2. Cálculo de los factores de entorno.
Se compone de 8 factores que evalúan las habilidades y la experiencia del grupo
de personas involucrada en el desarrollo del proyecto. Cada uno de estos factores
tiene un peso definido, y se le asigna un valor de influencia entre 0 y 5.
A continuación en la tabla 3.13, se muestran los 8 factores con sus correspon-
dientes pesos:
26
Factor Descripción Peso
R1 Familiar con RUP 1,5
R2 Experiencia en la aplicación 0,5
R3 Eficiencia con orientación a objetos 1
R4 Capacidades de análisis 0,5
R5 Motivación 1
R6 Requisitos estables 2
R7 Trabajadores a tiempo parcial -1
R8 Lenguaje completo -1
Cuadro 3.13: Peso de los factores de complejidad del entorno [20].
Donde:
Ri es el sumatorio de la influencia de cada factor por el peso asignado a ese
factor.
Una vez que hemos obtenido el factor técnico y el factor de entorno, multiplicamos
éstos con los puntos función sin ajustar utilizando la siguiente fórmula:
UCP=UUCP*TCF*EF
27
Horas-Persona Descripción
20 valor <= 2
28 valor <= 4
36 valor >= 5
Cuadro 3.14: Cantidad horas-persona según el valor [19].
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-persona invertidas en la fase de codificación [19].
Para obtener el esfuerzo en cada fase habría que multiplicar el esfuerzo calculado por el
porcentaje correspondiente a cada fase.
Estos porcentajes se corresponden con los mostrados en las tablas 3.7 y 3.8.
pago
Coste= Esfuerzo *(Numero_desarrolladores* hora )
Donde:
Esfuerzo es la suma total de los esfuerzos calculados por cada fase del ciclo de vida.
Numero_desarrolladores es el número de desarrolladores que trabajan en el proyecto.
pago
hora
es el salario del desarrollador en una hora.
3.2.4 Backfiring
3.2.4.1. ¿Qué es backfiring?
Es un método que consiste en derivar el número de puntos de función de la aplicación a
partir de su tamaño físico [1].
3.2.4.2. Historia
A principios de la década de 1970, la empresa IBM se dio cuenta de que las métricas de
líneas de código tenían graves fallos como métrica de productividad, porque penalizaba los
lenguajes modernos e invisibilizaba el trabajo de no codificación.
Alan Albrecht y sus compañeros de IBM White Plains comenzaron a desarrollar el modelo
de puntos función. A medida que se probaba la métrica de puntos función, se observó que
varios lenguajes tenían niveles característicos, o número de enunciados de código por punto
función. Estas observaciones condujeron a un concepto llamado Backfiring o conversión
matemática entre los datos LOC más antiguos y los puntos de función más nuevos [36].
28
Backfiring no era preciso, pero era fácil de realizar y pronto se convirtió en un método de
tamaño común para aplicaciones heredadas donde el código ya existía.
En 2014, varias compañías como Garner Group, QSM y Software Productivity Research
venden tablas comerciales de tasas de conversión para más de 1000 lenguajes de programa-
ción. Curiosamente, los valores entre estas tablas no son siempre los mismos para idiomas
específicos [36].
Actualmente Backfiring sigue siendo popular a pesar de su baja precisión para lenguajes
específicos.
Esfuerzo= C*P F E
Donde:
PF corresponde con lo puntos función ajustados anteriormente, y
C y E son constantes que vienen determinadas por las características del sistema, y
cuyo valor obtenemos de la tabla 3.6.
Coste=Esfuerzo*Coste-Medio-Hora
Donde:
Esfuerzo es el total de horas estimado, y
29
Coste-Medio-Hora es el coste promedio de la hora de las personas que trabajarán en el
proyecto.
30
3.2.5.3. Formato de una Historia de Usuario
En la figura 3.1 se visualiza el formato de una historia de Usuario:
Donde:
Id es el identificador de la historia de usuario,
Título es el título descriptivo de la historia de usuario,
Descripción es la descripción sintetizada de la historia de usuario,
Estimación es la estimación de los puntos historia necesarios para desarrollar esa his-
toria,
Valor es dado por el cliente y, junto con el tiempo, determinará la prioridad de la
historia,
Dependencias en este apartado se indicarán los ids de las historias de las que depende
otra historia, y
Criterios de aceptación son las pruebas consensuadas entre el cliente y el desarrollador
y que el código debe superar para dar como finalizada la implementación de la historia.
31
el doble de esfuerzo de una a la que se le asigna un punto historia. Por esta razón los puntos
historia se asignan relativizando unas historias frente a otras [33].
Es importante recordar a los miembros del equipo que deben estimar el esfuerzo total y no
solo la parte en la que vayan a trabajar.
La secuencia de números utilizada para estimar no es lineal para evitar una falsa sensación
de precisión en cuanto a estimaciones de tiempo y poder realizar estimaciones más exactas.
Esta secuencia está compuesta por los siguientes números: 0, 0.5, 1, 2, 3, 5, 8, 13, 20, 40 y
100.
Orange Effort Estimation Tool: Es una herramienta que permite la estimación del
esfuerzo de desarrollo del software utilizando 5 métodos diferentes. Los métodos que
se utilizan son los siguientes: COCOMO II, desglose de trabajo, analogía, estimación
modular personalizada para web y móvil y por último método de estimación modular
personalizado.
KnowledgePLAN: Herramienta desarrollada por Software Productivity Research. Tie-
ne un alto nivel de integración con Microsoft Project y permite calcular los puntos
función ajustados.
32
Cost Xpert: Es una herramienta para la estimación de costes que integra varios mode-
los de estimación, entre ellos COCOMO II, Puntos función etc.
scrumDo: Permite gestionar las listas de tareas e historias de usuario y también dar
soporte a la estimación con Planning Poker.
Pango Scrum: Permite escribir, estimar y priorizar historias de usuario. Facilita en
gran medida la planificación de Sprints.
33
Capítulo 4
Método de trabajo
4.1 Scrum
Scrum es un framework adaptable, iterativo, rápido, flexible y eficaz que está diseñado
para entregar valor al cliente durante todo el desarrollo del proyecto. El objetivo primor-
dial es satisfacer las necesidades del cliente a través de un entorno de transparencia en la
comunicación, responsabilidad colectiva y progreso continuo [21].
Un proyecto en Scrum se divide en iteraciones llamadas sprints. Los sprints suelen tener
una duración entre una semana y un mes. Durante la elicitación de requisitos se identifican
lo que denominamos historias de usuario, éstas explican la funcionalidad que se desea para
el sistema. En cada sprint estas historias de usuario se dividirán en tareas que llevarán al
cumplimiento de los objetivos fijados para ese sprint. Después de cada iteración se obtiene
un entregable completo y funcional que pueda ser entregado al cliente, consiguiendo así que
éste pueda observar la evolución del proyecto pudiendo detectar ideas nuevas o problemas
en el desarrollo.
35
4.1.1 Roles en Scrum
En Scrum distinguimos tres roles principales [39]:
36
4.1.2 Componentes de Scrum
Product Backlog (Pila del Producto): Lista de requisitos priorizada que a partir de
la visión inicial del producto crece y evoluciona durante el desarrollo. Contiene el
inventario de funcionalidades, mejoras, tecnología y correcciones de errores que deben
incorporarse al producto a través de las sucesivas iteraciones en el desarrollo. Está
desarrollada por el product owner.
Una pila del producto nunca está completa. El desarrollo más temprano de la misma
solo refleja los requisitos conocidos y mejor entendidos al principio. La pila del pro-
ducto evoluciona a medida que el producto y el entorno en el que se usará también
lo hagan. La pila del producto es dinámica; cambia constantemente para identificar lo
que el producto necesita para ser adecuado, competitivo y útil. Mientras el producto
exista, su pila del producto también existe [39].
Sprint Backlog (Pila del Sprint): Lista de trabajos que debe realizar el Scrum team
durante el sprint. Descompone las funcionalidades de la pila del producto en las tareas
necesarias para construir un incremento. Es realizada por el Scrum Team de forma
conjunta y solo éste la puede modificar durante la ejecución del sprint. La duración de
las tareas oscila en un rango de 2 a 16 horas.
Incremento: Parte del producto desarrollada en un sprint.
37
Los miembros del equipo eligen las tareas en función de sus conocimientos y
comprobando que hay una distribución homogénea del trabajo.
Reunión diaria: Revisión diaria donde cada miembro del equipo indica el trabajo que
realizó ayer, el trabajo que realizará hoy y cosas que puede necesitar o problemas que
le hayan surgido a la hora de desarrollar sus tareas. Tienen una duración máxima de
15 minutos.
Revisión del sprint: La revisión del sprint se lleva acabo al final de cada sprint, el
Scrum Team y el Product Owner se reúnen para ver el trabajo que se ha llevado a cabo
durante el sprint. Si fuera necesario se podría realizar una adaptación de la pila del
producto. Se puede medir el progreso mediante los gráficos Burn-up y Burn-down.
Retrospectiva del sprint: La retrospectiva ofrece una oportunidad al Scrum Team de
inspeccionarse a sí mismo y ver las posibles mejoras para el siguiente sprint. La retros-
pectiva del sprint tiene lugar después de la revisión del sprint y antes de la siguiente
planificación del sprint. Los principales puntos a tratar en esta reunión son los siguien-
tes:
• Que se hizo mal durante el sprint.
• Que se hizo bien durante el sprint.
• Que inconvenientes se encontraron, y han impedido progresar adecuadamente.
38
Se llevó a cabo una reunión en la que se realizó la pila del producto de manera conjunta
con el Product Owner y el Scrum Master y se decidió que la duración de los sprints sería de
dos semanas de duración.
4.1.5 Sprints
El proyecto se realizará en siete sprints. En cada sprint se llevarán a cabo una serie de
historias que supondrán un incremento en el proyecto.
Número Estimación en
Historia de Usuario
de Sprint Semanas
0 Configuración inicial 2 semanas
Implementación modelo
1 2 semanas
Puntos función
Implementación modelo
2 2 semanas
COCOMO II
Implementación modelos
3 2 semanas
Ptos. Caso de uso y backfiring
Implementación modelo
4 2 semanas
Historias de Usuario
Implementación imputación real
5 2 semanas
y gestión de la aplicación
Implementación de la comparativa y
6 2 semanas
exportación de estimaciones
Cuadro 4.1: Listado de las historias de usuario realizadas en cada sprint.
4.2 Kanban
Kanban es una técnica creada por Toyota, que se utiliza para controlar el avance del tra-
bajo, en el contexto de una línea de producción, sirviéndose de tableros o pizarras donde de
una manera visual se observa el estado de las tareas.
Kanban no es una técnica específica del desarrollo software, su objetivo es gestionar de
manera general como se van completando tareas, pero en los últimos años se ha utilizado en
la gestión de proyectos de desarrollo software, a menudo con Scrum [26].
Para este TFG se utilizará Kanban, con ayuda de la herramienta Trello. Trello es una he-
rramienta que utiliza tarjetas, que en nuestro caso se corresponderán con las historias de
usuario, estas historias pasarán por distintos estados, que en nuestro caso serán TO DO que
corresponde a las historias de usuario que están pendientes de realizarse, DOING que co-
rresponde a las historias de usuario que se están realizando y DONE que corresponde con
las historias de usuario que se han completado. Con esto podremos conseguir una visión de
cómo se encuentran las historias de usuario de nuestro proyecto.
39
4.3 Proceso Unificado de Desarrollo
El Proceso Unificado de Desarrollo (PUD) es un marco genérico de trabajo que puede
especializarse para una gran variedad de sistemas de software, para diferentes áreas de apli-
cación, diferentes tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaños
de proyectos [35].
Para el desarrollo de este TFG se han utilizado técnicas del PUD como los diagramas de
casos de uso y los diagramas de clase, utilizados para realizar el análisis y el diseño de cada
sprint.
40
• Spring: Es un framework para el desarrollo de aplicaciones y contenedor de in-
versión de control, de código abierto para la plataforma Java [3].
• Maven: Es una herramienta que se utiliza para construir y gestionar cualquier
proyecto, y sus dependencias, basado en Java [4].
Control de versiones
• Git: Es un sistema de control de versiones de código abierto [23].
• Bitbucket: Es un servicio de alojamiento basado en web, para los proyectos que
utilizan el sistema de control de versiones Mercurial y Git [5].
Modelado y documentación
• LATEX: Es un sistema de composición de textos, orientado a la creación de docu-
mentos escritos que presenten una alta calidad tipográfica [18].
• Visual Paradigm: Es una herramienta para desarrollo de aplicaciones utilizando
modelado UML, bajo licencia comunnity [6].
• GIMP: Es un programa de edición de imágenes digitales en forma de mapa de
bits, tanto dibujos como fotografías. Es un programa libre y gratuito [7].
• Balsamiq Mockups: Es una aplicación para crear maquetas para interfaces grá-
ficas para usuario. Le permite al diseñador diagramar widgets preconstruidos uti-
lizado un editor What you see is what you get (WYSIWYG) de drag and drop. La
aplicación se ofrece en versión para escritorio y como plug-in para Google Drive,
Confluence, JIRA, FogBugz y XWiki [8].
Entorno de desarrollo
• Eclipse Jee Oxygen: Es una plataforma de software compuesto por un conjunto
de herramientas de programación de código abierto multiplataforma para desa-
rrollar software [22].
Servidor de aplicaciones
• Apache Tomcat 8: Es una implementación de código abierto de las tecnologías
Java Servlet, JavaServe Pages, Java Expression Language y Java WebSocket [9].
41
Gestión del proyecto
• Trello: Gestor de proyectos online que permitirá gestionar tus rutinas de trabajo,
priorizar, generar avisos de citas y muchas otras opciones [28].
42
Capítulo 5
Resultados
43
5.2 Sprint 0
El sprint 0 se compone de 4 tareas. En este sprint se ha realizado principalmente la docu-
mentación y análisis necesarios para comenzar el proyecto, que resultaron en el anteproyecto
de este TFG, la lista de historias de usuario y la planificación de los sprints que forman este
proyecto.
Para realizar este sprint se convocaron varias reuniones con Moisés y Mario.
Sprint
Número de Sprint: 0
Duración estimada: 2 Semanas Duración real: 2 semanas
Historia de Usuario: 1
Tareas:
1. Alcance del Proyecto.
2. Captura de requisitos.
3. Elaboración del anteproyecto de este TFG.
4. Planificación del proyecto.
Cuadro 5.1: Sprint 0
Tras las reuniones realizadas el alcance definido fue la creación de una herramienta para la
estimación de proyectos software pudiendo estimar éstos desde un punto de vista tradicional
con una gestión predictiva, y desde un punto de vista ágil con una gestión adaptativa. Los
modelos elegidos han sido Puntos Función, Puntos Casos de Uso, COCOMO II y Backfiring
para la parte de gestión predictiva, e Historias de Usuario para la parte de gestión adaptativa.
Las estimaciones realizadas se podrán modificar y eliminar, exportar los resultados obtenidos
en formato Excel, también se podrá realizar la imputación real de los resultados, y por último
se podrán comparar las estimaciones realizadas en función del esfuerzo estimado-esfuerzo
real y coste estimado-coste real, obteniendo un gráfico con la comparativa.
44
5.2.2.2. Captura de requisitos
En esta segunda tarea se ha realizado la captura de requisitos, de la cual se han obtenido
las historias de usuario.
En el Anexo A se muestran las tablas que incluyen las 32 historias de usuario obtenidas
en la captura de los requisitos, incluyendo su nombre, el valor de negocio para la empresa,
el esfuerzo estimado en cada una de ellas, la descripción y las dependencias.
El valor de negocio puede tener un valor máximo de 100, éste ha sido asignado por el
Scrum Master.
A continuación en la tabla 5.2, se muestra un resumen de las 32 historias de usuario, con
el valor de negocio, el esfuerzo y el sprint al que pertenecen.
Valor de
Historia de
Sprint Epic No Esfuerzo
Usuario
negocio
Insertar datos
2 60 2 días
generales
Insertar
3 80 4 días
Funcionalidad
Estimación Puntos
2 Insertar
Función 4 80 1 día
ILF
Insertar
5 80 1 día
ELF
Insertar
6 80 1 día
EI
Insertar
7 80 1 día
EO
Insertar
8 80 1 día
EQ
Visualizar
9 90 3 días
resultados
Insertar datos
10 60 1 día
Estimación generales
3
COCOMO II Insertar
11 85 10 días
módulo
Visualizar
12 90 3 días
resultados
45
Valor de
o Historia de
Sprint Epic N Esfuerzo
Usuario
negocio
Insertar datos
13 60 1 día
Estimación Puntos generales
Casos de Uso Insertar actores
14 80 3 días
4 y Casos de uso
Visualizar
15 90 4 días
resultados
Insertar datos
16 60 1 día
Estimación generales
Backfiring Transformar
17 líneas de 80 1 día
código
Visualizar
18 90 3 días
resultados
Insertar datos
19 60 1 día
Estimación generales
5 Historias de Insertar
20 80 4 días
Usuario historias
Estimar
21 90 6 días
historias
Visualizar
22 90 3 días
resultados
29 Registrarse 70 1 día
Gestión de Acceso a
30 70 1 día
la aplicación la aplicación
31 Cerrar sesión 70 0,5 días
6
Modificar
32 75 1 día
Perfil
Filtrar
23 80 4 días
estimaciones
Gestión de las
Modificar
estimaciones 24 80 4 días
estimaciones
Eliminar
25 80 0,5 días
estimación
Imputar
27 85 0,5 días
estimación
Exportar
Gestión de las 26 85 8 días
7 estimación
estimaciones
Comparar
28 85 6 días
estimaciones
Cuadro 5.2: Resumen historias de Usuario
46
5.2.2.3. Elaboración del anteproyecto
Una vez realizadas las tareas anteriores, se procedió a redactar el anteproyecto de este
Trabajo Fin de Grado.
47
5.3 Sprint 1
En el sprint 1 se abordarán las historias necesarias para llevar a cabo la implementación
del modelo Puntos Función. Básicamente estas historias consistirán en realizar los cálculos
necesarios para obtener los puntos función.
48
5.3.3 Desarrollo del sprint
5.3.3.1. Análisis de la historia global
La historia global Realizar estimación con Puntos Función se ha descompuesto en las his-
torias de usuario citadas anteriormente. Esta historia se corresponde con el requisito funcio-
nal Elaborar estimación con Puntos función. Que se corresponde con el caso de uso Insertar
estimación Puntos Función (véase figura 5.1).
49
pf_ilf almacena los datos de los archivos lógicos internos,
En la figura 5.3 se muestran las distintas tablas de la base de datos asociadas al módulo
de la estimación con puntos función. Para obtener dichas entidades en el diagrama entidad
relación se ha decidido implementar el patrón una clase-una tabla.
50
5.3.3.3. Implementación
Por cuestiones de confidencialidad relacionadas con la empresa en el marco de la cual se
ha desarrollado este TFG, no se mostrará el código desarrollado para este sprint. Por ello se
mostrará una imagen del resultado final de cada historia de usuario.
Historia de Usuario 2
Para implementarlo se ha utilizado la clase puntos_funcion que podíamos ver en el
diagrama de clases de la figura 5.2. Como se puede observar en la figura 5.4 se recogen
los datos generales de la estimación.
Historia de Usuario 3
Para implementarlo se ha utilizado la clase funcionalidades_puntos_funcion que po-
díamos ver en el diagrama de clases de la figura 5.2. Como se puede observar en
la figura 5.5 se introducen y muestran las funcionalidades de la estimación. Con sus
respectivos ILF, ELF, EI, EO y EQ y también los puntos función sin ajustar para esa
funcionalidad.
51
Historia de Usuario 4
Para implementarlo se ha utilizado la clase pf_ilf que podíamos ver en el diagrama de
clases de la figura 5.2. Como se puede observar en la figura 5.6 se introducen los det
y los ret calculados y obtenemos la complejidad y el número de puntos función sin
ajustar equivalentes a esa complejidad.
Historia de Usuario 5
Para implementarlo se ha utilizado la clase pf_elf que podíamos ver en el diagrama
de clases de la figura 5.2. Como se puede observar en la figura 5.7 se introducen los
det y los ret calculados y obtenemos la complejidad y el número de puntos función sin
ajustar equivalentes a esa complejidad.
52
Historia de Usuario 6
Para implementarlo se ha utilizado la clase pf_ei que podíamos ver en el diagrama de
clases de la figura 5.2. Como se puede observar en la figura 5.8 se introducen los det
y los ftr calculados y obtenemos la complejidad y el número de puntos función sin
ajustar equivalentes a esa complejidad.
Historia de Usuario 7
Para implementarlo se ha utilizado la clase pf_eo que podíamos ver en el diagrama
de clases de la figura 5.2. Como se puede observar en la figura 5.9 se introducen los
det y los ftr calculados y obtenemos la complejidad y el número de puntos función sin
ajustar equivalentes a esa complejidad.
Historia de Usuario 8
Para implementarlo se ha utilizado la clase pf_eq que podíamos ver en el diagrama
de clases de la figura 5.2. Como se puede observar en la figura 5.10 se introducen los
det y los ftr calculados y obtenemos la complejidad y el número de puntos función sin
ajustar equivalentes a esa complejidad.
53
Figura 5.10: Consultas externas (EQ)
Historia de Usuario 9
Para implementarlo se han utilizado las clases puntos_funcion_ajustados y resulta-
dos_puntos_funcion que podíamos ver en el diagrama de clases de la figura 5.2. En
la figura 5.11 se muestran los 14 factores de influencia que se utilizan para ajustar los
puntos función sin ajustar y obtener los puntos función ajustados. En la figura 5.12 y
la figura 5.13 se muestran los resultados finales estimados.
54
Figura 5.12: Resultados Puntos función
5.3.3.4. Pruebas
En este apartado se van a realizar pruebas funcionales al sistema, utilizando una plantilla
tomada como referencia del estándar ISO/IEC 29119-3: Software and systems engineering -
Software testing [29].
55
Identificador 01
Historia asociada 02
Nombre Introducir datos generales
Comprobar que los datos generales de
Objetivo
la estimación se introducen correctamente.
Se introducen los datos correctamente y se
Resultado Esperado
recarga la página con los datos introducidos.
Se introducen los datos correctamente y se
Resultado Obtenido recarga la página mostrando los datos que se
han introducido
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.4: Prueba 1 de la Historia de Usuario 2
Identificador 02
Historia asociada 02
Nombre Inserción incorrecta de los datos generales.
Comprobar que los datos no se introducen cuando dejas
Objetivo
algún campo obligatorio vacío.
La aplicación muestre en el campo que está vacío el
Resultado Esperado
mensaje “Complete este campo".
La aplicación muestra el mensaje “Complete este campo"
Resultado Obtenido
junto al campo vacío.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.5: Prueba 2 de la Historia de Usuario 2
Identificador 03
Historia asociada 03
Nombre Introducir Funcionalidad
Comprobar que las funcionalidades de la
Objetivo
estimación se realizan correctamente.
Se introducen las funcionalidades y se muestran
Resultado Esperado los ifl, elf, ei, eo, eq y puntos función sin ajustar
correctamente.
Se introducen las funcionalidades mostrando los
Resultado Obtenido ilf, elf, ei, eo, eq y puntos función sin ajustar de
manera correcta.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.6: Prueba 1 de la Historia de Usuario 3
56
Identificador 04
Historia asociada 03
Nombre Inserción incorrecta de las funcionalidades.
Comprobar que no se pueden introducir funcionalidades
Objetivo
sin insertar un nombre y descripción.
La aplicación muestre el mensaje "Por favor introduzca
Resultado Esperado
el nombre y la descripción".
La aplicación muestra el mensaje "Por favor introduzca
Resultado Obtenido
el nombre y la descripción".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.7: Prueba 2 de la Historia de Usuario 3
Identificador 05
Historia asociada 04
Nombre Introducir archivos lógicos internos
Objetivo Comprobar que los ilf se calculan correctamente.
Se calcula la complejidad y los puntos función sin
Resultado Esperado
ajustar del ilf.
La herramienta muestra la complejidad y los puntos
Resultado Obtenido
función sin ajustar del ilf.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.8: Prueba 1 de la Historia de Usuario 4
Identificador 06
Historia asociada 04
Nombre Inserción incorrecta los archivos lógicos internos.
Comprobar que no se pueden introducir ILFs
Objetivo
sin insertar los datos obligatorios.
La aplicación muestre el mensaje "Por favor introduzca
Resultado Esperado
los campos vacíos".
La aplicación muestra el mensaje "Por favor introduzca
Resultado Obtenido
los campos vacíos".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.9: Prueba 2 de la Historia de Usuario 4
57
Identificador 07
Historia asociada 04
Nombre Modificar archivos lógicos internos
Objetivo Comprobar que los ilf se modifican correctamente.
Se modifica la complejidad y los puntos función sin
Resultado Esperado
ajustar del ilf.
La herramienta modifica la complejidad y los puntos
Resultado Obtenido
función sin ajustar del ilf.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.10: Prueba 3 Historia de Usuario 4
Identificador 08
Historia asociada 04
Nombre Modificación incorrecta de los archivos lógicos internos.
Comprobar que no se pueden modificar los ILFs con
Objetivo
datos incorrectos.
La aplicación muestre el mensaje "No se ha podido
Resultado Esperado
insertar el ilf".
La aplicación muestra el mensaje "No se ha podido
Resultado Obtenido
insertar el ilf".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.11: Prueba 4 de la Historia de Usuario 4
Identificador 09
Historia asociada 04
Nombre Eliminar archivos lógicos internos
Objetivo Comprobar que los ilf se eliminan correctamente.
Resultado Esperado Se elimina el ifl y desaparece de la lista de ilfs.
La herramienta elimina el ilf y desaparece de la
Resultado Obtenido
lista de ilfs.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.12: Prueba 5 Historia de Usuario 4
58
Para no alargar mucho el apartado de las pruebas omitiremos las pruebas realizadas a los
ELF, EI, EO y EQ, ya que son iguales que las realizadas a los ILF.
Identificador 10
Historia asociada 09
Nombre Visualizar resultados.
Objetivo Comprobar que los resultados se calculan correctamente.
Cuando se eligen los 14 factores de influencia y los guardas
Resultado Esperado
se cierra el modal y aparecen automáticamente los resultados.
Cuando se han elegido los 14 factores de influencia y los hemos
Resultado Obtenido guardado se ha cerrado el modal y han aparecido los resultados
calculados automáticamente.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.13: Prueba 1 Historia de Usuario 9
59
5.4 Sprint 2
En el sprint 2 se abordarán las historias necesarias para llevar a cabo la implementación
del modelo COCOMO II. Básicamente estas historias consistirán en realizar los cálculos
necesarios para obtener los resultados.
60
Figura 5.14: Caso de uso Insertar estimación COCOMO II
61
resultados_cocomo almacena los resultados de la estimación.
En la figura 5.16 se muestran las distintas tablas de la base de datos asociadas al módulo
de la estimación con COCOMO II. Para obtener dichas entidades en el diagrama entidad
relación se ha decidido implementar el patrón una clase-una tabla.
5.4.3.3. Implementación
Por cuestiones de confidencialidad relacionadas con la empresa en el marco de la cual se
ha desarrollado este TFG, no se mostrará el código desarrollado para este sprint. Por ello se
mostrará una imagen del resultado final de cada historia de usuario.
Historia de Usuario 10
Para implementarlo se ha utilizado la clase cocomo que podíamos ver en el diagrama
de clases de la figura 5.15. Como se puede observar en la figura 5.17 se recogen los
datos generales de la estimación.
62
Figura 5.17: Introducir datos generales COCOMO II
Historia de Usuario 11
Para implementarla se ha utilizado la clase modulo_cocomo, eaf y puntos_funcion_-
cocomo que podíamos ver en el diagrama de clases de la figura 5.15. En la figura 5.18
podemos observar el valor de la planificación para el proyecto.
63
Figura 5.19: Factores de escala
Historia de Usuario 12
Para implementarlo se ha utilizado la clase resultados_cocomo que pódiamos ver en
el diagrama de clases de la figura 5.15. En la figura 5.21 se muestran los resultados
optimistas, los probables y los pesimistas. Para obtener el pesimista y el optimista se
ha aplicado un 20 % a los resultados probables.
64
Figura 5.21: Resultados COCOMO II
5.4.3.4. Pruebas
En este apartado se van a realizar pruebas funcionales al sistema, utilizando una plantilla
tomada como referencia del estándar ISO/IEC 29119-3: Software and systems engineering -
Software testing [29].
Identificador 11
Historia asociada 10
Nombre Introducir datos generales
Comprobar que los datos generales de la estimación
Objetivo
se introducen correctamente.
Se introducen los datos correctamente y se recarga
Resultado Esperado
la página mostrando los datos introducidos.
Se introducen los datos correctamente y se recarga
Resultado Obtenido
la página mostrando los datos introducidos.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.14: Prueba 1 de la Historia de Usuario 10
65
Identificador 12
Historia asociada 10
Nombre Inserción incorrecta de los datos generales
Comprobar que los datos no se introducen cuando
Objetivo
dejas algún campo obligatorio vacío.
La aplicación muestra en el campo que está
Resultado Esperado
vacío el mensaje “Complete este campo".
La aplicación muestra en el campo que está
Resultado Obtenido
vacío el mensaje “Complete este campo".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.15: Prueba 2 de la Historia de Usuario 10
Identificador 13
Historia asociada 11
Nombre Introducir módulo
Comprobar que los módulos se insertan
Objetivo
correctamente.
La aplicación introduce el módulo y lo
Resultado Esperado
muestra.
La aplicación introduce el módulo y lo
Resultado Obtenido
muestra.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.16: Prueba 1 de la Historia de Usuario 11
Identificador 14
Historia asociada 11
Nombre Inserción incorrecta de los módulos.
Comprobar que los módulos no se insertan
Objetivo
sin insertar un nombre y descripción.
La aplicación muestra el mensaje: "Por favor
Resultado Esperado
introduzca el nombre y la descripción".
La aplicación muestra el mensaje: "Por favor
Resultado Obtenido
introduzca el nombre y la descripción".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.17: Prueba 2 de la Historia de Usuario 11
66
Identificador 15
Historia asociada 11
Nombre Inserción incorrecta de los módulos.
Comprobar que los módulos no se insertan
Objetivo
si tiene vacío algún campo obligatorio.
La aplicación muestra en el campo vacío el
Resultado Esperado
mensaje “Complete el campo".
La aplicación muestra en el campo vacío el
Resultado Obtenido
mensaje “Complete el campo".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.18: Prueba 3 de la historia de usuario 11
Identificador 16
Historia asociada 12
Nombre Visualizar resultados.
Comprobar que los resultados se calculan
Objetivo
correctamente.
Cuando se pasa a la pestaña resultados los
Resultado Esperado valores para cada campo se muestran auto-
máticamente.
Cuando se pasa a la pestaña resultados los
Resultado Obtenido valores para cada campo se muestran auto-
máticamente.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.19: Prueba 1 de Historia de Usuario 12
67
5.4.6 Retrospectiva del Sprint
El sprint ha finalizado con la realización de todas las historias asignadas a éste y sin ningún
incidente y cumpliendo la planificación estimada.
5.5 Sprint 3
En el sprint 3 se abordarán las historias necesarias para llevar a cabo la implementación
de los modelos Puntos Casos de Uso y Backfiring. Básicamente estas historias consistirán en
realizar los cálculos necesarios para obtener los Puntos Casos de Uso ajustados en caso del
modelo Puntos Casos de Uso, y los Puntos Función ajustados en caso del modelo Backfiring.
Además del esfuerzo y del coste.
La historia 13 consiste en insertar los datos generales de la estimación que en este caso
se corresponden con la empresa, el proyecto, la fecha, el ciclo de vida, el factor de produc-
tividad, el número de desarrolladores, la tecnología, el precio por hora del desarrollador, la
descripción y si el proyecto está imputado. Esta historia se ha estimado con una duración de
1 día.
La historia 14 consiste en calcular el factor de peso de los actores que interactúan con el
proyecto sin ajustar y el factor de peso de los casos de uso sin ajustar. Para ello tenemos
que introducir el número de actores y de casos de uso que hay de cada tipo establecido. Esta
historia se ha estimado con una duración de 3 días.
La historia 15 consiste en visualizar los resultados obtenidos, que en este caso son los
puntos casos de Uso sin ajustar, los puntos casos de uso ajustados, el esfuerzo, el coste,
las horas estimadas para cada fase del proyecto y las jornadas estimadas para cada fase del
proyecto. Esta historia se ha estimado con una duración de 4 días.
La historia 16 consiste en insertar los datos generales de la estimación que en este caso
se corresponden con la empresa, el proyecto, la fecha, el ciclo de vida, las características
del sistema, la descripción, el coste medio por hora del desarrollador y si la estimación está
imputada. Esta historia se ha estimado con una duración de 1 día.
La historia 17 consiste en introducir las líneas de código que se tienen de cada lenguaje
68
utilizado para la implementación del proyecto y convertirlas a puntos función ajustados. Esta
historia se ha estimado con una duración de 1 día.
La historia 18 consiste en visualizar los resultados obtenidos, que en este caso son los
puntos función ajustados, el esfuerzo, el coste y las distribuciones por fase de ciclo de vida
del esfuerzo y coste. Esta historia se ha estimado con una duración de 3 días.
69
5.5.3.2. Diseño de la historia global
Una vez que se ha realizado el análisis de las historias de usuario, se crearon los diagramas
de clases de diseño que se muestran en las figuras 5.24 y 5.25:
70
Figura 5.25: Diagrama de clases Backfiring
71
Figura 5.27: Diagrama entidad relación Backfiring
5.5.3.3. Implementación
Por cuestiones de confidencialidad relacionadas con la empresa en el marco de la cual se
ha desarrollado este TFG, no se mostrará el código desarrollado para este sprint. Por ello se
mostrará una imagen del resultado final de cada historia de usuario.
Historia de Usuario 13
Para implementarla se ha utilizado la clase puntos_casos_uso que podíamos ver en
el diagrama de clases de la figura 5.24. Como se puede observar en la figura 5.28 se
recogen los datos generales de la estimación.
72
Figura 5.28: Introducir datos generales Puntos Casos de Uso
Historia de Usuario 14
Para implementarla se ha utilizado la clase ptos_cuso_sin_ajustar que podíamos ver en
el diagrama de clases de la figura 5.24. Como se puede observar en la figura 5.29 se
recogen el número de actores y de casos de uso de cada tipo.
73
Historia de Usuario 15
Para implementarla se han utilizado las clases resultados_ptos_casos_uso, factores_-
tecnicos y factores_entorno que podíamos observar en el diagrama de clases de la
figura 5.24. En la figura 5.30 se muestran los 13 factores técnicos que junto con los
factores de entorno nos permiten calcular los puntos casos de uso ajustados. En la
figura 5.31 se muestran los 8 factores de entorno, y en la figura 5.32 se muestran los
resultados finales estimados.
74
Figura 5.32: Resultados Puntos Casos de uso
Historia de Usuario 16
Para implementarla se ha utilizado la clase backfiring que podíamos ver en el diagrama
de clases de la figura 5.25. Como se puede observar en la figura 5.33 se recogen los
datos generales de la estimación.
75
Historia de Usuario 17
Para implementarla se ha utilizado la clase backfiring_transformacion que podíamos
ver en el diagrama de clases de la figura 5.25. En la figura 5.34 se introducen las líneas
de código de cada lenguaje y se transforman en puntos casos de uso.
Historia de Usuario 18
Para implementarla se ha utilizado la clase backfiring_resultados que podíamos ver
en el diagrama de clases de la figura 5.25. En las figuras 5.35 y 5.36 se muestran los
resultados estimados finales.
76
Figura 5.36: Resultados Distribuciones Backfiring
5.5.3.4. Pruebas
En este apartado se van a realizar pruebas funcionales al sistema, utilizando una plantilla
tomada como referencia del estándar ISO/IEC 29119-3: Software and Systems engineering-
Software testing [29].
Identificador 17
Historia asociada 13
Nombre Introducir datos generales.
Comprobar que los datos generales de la
Objetivo
estimación se introducen correctamente.
Se introducen los datos correctamente y se
Resultado Esperado
recarga la página con los datos introducidos.
Se introducen los datos correctamente y se
Resultado Obtenido
recarga la página con los datos introducidos.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.20: Prueba 1 de la Historia de Usuario 13
77
Identificador 18
Historia asociada 13
Nombre Inserción incorrecta datos generales.
Comprobar que los datos no se insertan
Objetivo
cuando dejas algún campo obligatorio vacío.
La aplicación muestra en el campo que está
Resultado Esperado
vacío el mensaje “Complete este campo".
La aplicación muestra en el campo que está
Resultado Obtenido
vacío el mensaje “Complete este campo".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.21: Prueba 2 de la Historia de Usuario 13
Identificador 19
Historia asociada 14
Nombre Cálculo de los actores sin ajustar.
Comprobar que el factor de peso de los actores
Objetivo
sin ajustar se calcula correctamente.
La aplicación muestra el peso de los actores sin
Resultado Esperado
ajustar total.
La aplicación muestra el peso de los actores sin
Resultado Obtenido
ajustar total.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.22: Prueba 1 de la Historia de Usuario 14
Identificador 20
Historia asociada 14
Nombre Cálculo de los casos de uso sin ajustar.
Comprobar que el factor de peso de los casos de
Objetivo
uso sin ajustar se calcula correctamente.
La aplicación muestra el peso de los casos de uso
Resultado Esperado
sin ajustar total.
La aplicación muestra el peso de los casos de uso
Resultado Obtenido
sin ajustar total.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.23: Prueba 2 de la Historia de Usuario 14
78
Identificador 21
Historia asociada 14
Nombre Cálculo incorrecto de los casos de uso sin ajustar.
Comprobar que cuando metes una letra en alguna
Objetivo
de las opciones no da error.
Resultado Esperado La aplicación deja vacío el campo.
Resultado Obtenido La aplicación deja vacío el campo.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.24: Prueba 3 de la historia de Usuario 14
Identificador 22
Historia asociada 15
Comprobar que los resultados se calculan corre-
Nombre
ctamente.
Una vez elegidos los factores de entorno y los
Objetivo factores técnicos se calculan automáticamente
los resultados.
Resultado Esperado Aparecen los resultados automáticamente.
Resultado Obtenido Aparecen los resultados automáticamente.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.25: Prueba 1 Historia de Usuario 15
Identificador 23
Historia asociada 16
Nombre Introducir datos generales.
Comprobar que los datos generales de la
Objetivo
estimación se introducen correctamente.
Se introducen los datos correctamente y se
Resultado Esperado
recarga la página con los datos introducidos.
Se introducen los datos correctamente y se
Resultado Obtenido
recarga la página con los datos introducidos.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.26: Prueba 1 de la Historia de Usuario 16
79
Identificador 24
Historia asociada 16
Nombre Inserción incorrecta datos generales.
Comprobar que los datos no se insertan
Objetivo
cuando dejas algún campo obligatorio vacío.
La aplicación muestra en el campo que está
Resultado Esperado
vacío el mensaje “Complete este campo".
La aplicación muestra en el campo que está
Resultado Obtenido
vacío el mensaje “Complete este campo".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.27: Prueba 2 de la Historia de Usuario 16
Identificador 25
Historia asociada 17
Comprobar que los puntos función se calculan
Nombre
correctamente.
Cuando se introducen las líneas de código para
Objetivo
un lenguaje se calculan los puntos función.
Resultado Esperado Aparecen los puntos función automáticamente.
Resultado Obtenido Aparecen los puntos función automáticamente.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.28: Prueba 1 de la Historia de Usuario 17
Identificador 26
Historia asociada 17
Comprobar la inserción incorrecta de líneas de
Nombre
código.
No se puede introducir una letra en uno de los
Objetivo
campos de las líneas de código.
Resultado Esperado En el campo no aparece la letra.
Resultado Obtenido En el campo no aparece la letra.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.29: Prueba 2 de la Historia de Usuario 17
80
Identificador 27
Historia asociada 18
Nombre Visualizar resultados.
Comprobar que los datos se calculan de manera
Objetivo
automática
Resultado Esperado Los resultados aparecen de manera automática.
Resultado Obtenido Los resultados aparecen de manera automática.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.30: Prueba 1 de la Historia de Usuario 18
81
5.6 Sprint 4
En el sprint 4 se abordarán las historias necesarias para llevar a cabo la implementación
del modelo Historias de Usuario. Estas historias consistirán en realizar la estimación del
esfuerzo de las historias para obtener el esfuerzo y el coste total del proyecto.
82
Figura 5.37: Caso de uso insertar estimación Historias de Usuario
83
En la figura 5.39 se muestran las distintas tablas de la base de datos asociadas al módulo de
la estimación Historias de Usuario. Para obtener dichas entidades en el diagrama de entidad
relación se ha decidido implementar el patrón una clase-una tabla.
5.6.3.3. Implementación
Por cuestiones de confidencialidad relacionadas con la empresa en el marco de la cual se
ha desarrollado este TFG, no se mostrará el código desarrollado para este sprint. Por ello se
mostrará una imagen del resultado final de cada historia de usuario.
Historia de Usuario 19
Para implementarla se ha utilizado la clase historias_usuario_datosgenerales que mos-
trábamos en el diagrama de clases de la figura 5.38. En la figura 5.40 se recogen los
datos generales de la estimación.
84
Figura 5.40: Introducir datos generales Historias de Usuario
Historia de Usuario 20
Para implementarla se ha utilizado la clase historias_usuario que mostrábamos en el
diagrama de clases de la figura 5.38. En la figura 5.41 se recogen los datos de cada
historia de usuario que queremos estimar.
85
Historia de Usuario 21
Para implementarla se han utilizado las clases planning_poker y planning_poker_par-
tidas que mostrábamos en el diagrama de clases de la figura 5.38. En la figura 5.42
se estima el esfuerzo para cada historia de usuario utilizando la técnica del Planning
Poker.
Historia de Usuario 22
Para implementarla se ha utilizado la case resultados_historias que mostrábamos en el
diagrama de clases de la figura 5.38. En la figura 5.43 se muestra el esfuerzo estimado
para cada historia, el esfuerzo total y el coste total.
86
5.6.3.4. Pruebas
En este apartado se van a realizar pruebas funcionales a la herramienta, utilizando una
plantilla tomada como referencia del estándar ISO/IEE 29119-3: Software and Systems en-
gineering - Software testing [29].
Identificador 28
Historia asociada 19
Nombre Introducir datos generales
Comprobar que los datos generales de la
Objetivo
estimación se introducen correctamente.
Se introducen los datos correctamente y se
Resultado Esperado
recarga la página con los datos introducidos.
Se introducen los datos correctamente y se
Resultado Obtenido
recarga la página con los datos introducidos.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.31: Prueba 1 de la Historia de Usuario 19
Identificador 29
Historia asociada 19
Nombre Inserción incorrecta datos generales.
Comprobar que los datos no se insertan
Objetivo cuando dejas algún campo obligatorio
vacío.
La aplicación muestra en el campo que está
Resultado Esperado
vacío el mensaje “Complete este campo".
La aplicación muestra en el campo que está
Resultado Obtenido
vacío el mensaje “Complete este campo".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.32: Prueba 2 de la Historia de Usuario 19
87
Identificador 30
Historia asociada 20
Nombre Introducir Historia de Usuario.
Comprobar que las historias de usuario se
Objetivo
crean correctamente.
La aplicación muestra la historia de usuario
Resultado Esperado con el título y la descripción que se ha
elegido anteriormente.
La aplicación muestra la historia de usuario
Resultado Obtenido con el título y la descripción que se ha
elegido anteriormente.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.33: Prueba 1 de la Historia de Usuario 20
Identificador 31
Historia asociada 20
Nombre Inserción incorrecta Historia de Usuario.
Comprobar que las historias de usuario no
Objetivo
se introducen sin un título y descripción.
La aplicación muestra el mensaje "Por
Resultado Esperado
favor introduzca un título y una descripción"
La aplicación muestra el mensaje "Por
Resultado Obtenido
favor introduzca un título y una descripción"
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.34: Prueba 2 de la Historia de Usuario 20
Identificador 32
Historia asociada 20
Nombre Insertar datos Historia de Usuario.
Comprobar que los datos de la historia
Objetivo
se insertan correctamente.
La aplicación muestra el mensaje "Guardado
Resultado Esperado
con éxito".
La aplicación muestra el mensaje "Guardado
Resultado Obtenido
con éxito".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.35: Prueba 3 de la Historia de Usuario 20
88
Identificador 33
Historia asociada 20
Inserción incorrecta datos Historia de
Nombre
Usuario.
Comprobar que la historia no se guarda si
Objetivo
tiene campos obligatorios vacíos.
La aplicación muestra el mensaje "Por favor
Resultado Esperado introduzca un valor y unos criterios de
validación".
La aplicación muestra el mensaje "Por favor
Resultado Obtenido introduzca un valor y unos criterios de
validación".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.36: Prueba 4 de la Historia de Usuario 20
Identificador 34
Historia asociada 21
Nombre Estimación Planning Poker.
Comprobar que la historia se estima de
Objetivo
forma correcta con la técnica Planning Poker.
La aplicación introduce en la casilla esfuerzo
Resultado Esperado
el valor obtenido.
La aplicación introduce en la casilla esfuerzo
Resultado Obtenido
el valor obtenido.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.37: Prueba 1 de la Historia de Usuario 21
Identificador 35
Historia asociada 21
Nombre Estimación incorrecta Planning Poker.
Comprobar que en el número de participantes
Objetivo
no deja introducir letras.
La aplicación no muestra la letra y deja vacío
Resultado Esperado
el campo.
La aplicación no muestra la letra y deja vacío
Resultado Obtenido
el campo.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.38: Prueba 2 de la Historia de Usuario 21
89
Identificador 36
Historia asociada 22
Nombre Visualizar resultados.
Comprobar que los resultados se calculan
Objetivo
correctamente.
Cuando se pasa de pestaña los valores se
Resultado Esperado
muestran automáticamente.
Cuando se pasa de pestaña los valores se
Resultado Obtenido
muestran automáticamente.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.39: Prueba 1 de la Historia de Usuario 22
90
5.7 Sprint 5
En este sprint se abordarán las historias necesarias para llevar a cabo la gestión de la
aplicación y parte de la gestión de las estimaciones.
91
Gestionar aplicación y Gestionar estimaciones. Que se corresponden con los casos de uso
gestionar aplicación (véase figura 5.44) y gestionar estimación (véase figura 5.45).
92
Figura 5.46: Diagrama de casos de uso Gestionar Aplicación
93
Figura 5.47: Diagrama entidad relación gestión de usuarios
5.7.3.3. Implementación
Por cuestiones de confidencialidad relacionadas con la empresa en el marco de la cual se
ha desarrollado este TFG, no se mostrará el código desarrollado para este sprint. Por ello se
mostrará una imagen del resultado final de cada historia de usuario.
Historia de Usuario 23
Para implementarla se ha realizado un método filtrar en cada una de las clases Dao
de los modelos de estimación. Se recogen los datos por los que queremos filtrar las
estimaciones realizadas. En la figura 5.48 se muestran las estimaciones filtradas por el
modelo Puntos Función.
94
Figura 5.48: Filtrar Estimaciones
Historia de Usuario 24
Para implementarla se ha realizado un método modificar en cada una de las clases
Dao de los modelos de estimación. Se muestra la estimación con los datos definidos
inicialmente pudiendo realizar las modificaciones que sean necesarias.
En las figuras 5.49, 5.50, 5.51, 5.52 y 5.53 podremos observar la estimación realizada
en el modelo Puntos Función anteriormente modificando los factores de influencia para
así obtener otros resultados y poder modificarlos.
95
Figura 5.50: Funcionalidades de la estimación
96
Figura 5.53: Resultados modificados
Historia de Usuario 25
Para implementarla se ha realizado un método eliminar en cada una de las clases Dao
de los modelos de estimación. En las figuras 5.54, 5.55 y se elimina la estimación
seleccionada.
97
Figura 5.55: Confirmación de eliminación
98
Historia de Usuario 29 Para implementarla se ha utilizado la clase usuarios que mos-
trábamos en el diagrama de clases de la figura 5.46. En la figura 5.58 Se introducen
los datos necesarios para realizar el registro de un usuario en la aplicación.
Historia de Usuario 30
Para implementarla se ha utilizado la clase usuarios que mostrábamos en el diagrama
de clases de la figura 5.46. En la figura 5.59 se introduce el correo y la contraseña para
poder acceder a la aplicación.
99
Historia de Usuario 31
Para implementarla se ha utilizado la clase usuarios que mostrábamos en el diagrama
de clases de la figura 5.46. Permite cerrar la sesión de la aplicación volviendo a la
página de acceso (véase figura 5.60).
Historia de Usuario 32
Para implementarla se ha utilizado la clase usuarios que mostrábamos en el diagrama
de clases de la figura 5.46. Permite modificar los datos del perfil del usuario (véase
figura 5.61).
100
5.7.3.4. Pruebas
En este apartado se van a realizar pruebas funcionales a la herramienta, utilizando una
plantilla tomada como referencia del estándar ISO/IEE 29119-3: Software and Systems en-
gineering - Software testing [29].
Identificador 37
Historia asociada 23
Nombre Filtrar estimaciones
Comprobar que las estimaciones se filtran
Objetivo correctamente por los campos que se han
introducido.
Se muestren las estimaciones que cumplan
Resultado Esperado
esos criterios.
Se muestran las estimaciones que cumplan
Resultado Obtenido
esos criterios.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.40: Prueba 1 de la Historia de Usuario 23
Identificador 38
Historia asociada 23
Nombre Filtrado incorrecto estimaciones
Comprobar que las estimaciones no se
Objetivo muestran cuando no cumplen ningún
criterio de los elegidos en el filtro.
Se muestra el mensaje "No hay ninguna
Resultado Esperado
estimación con esas características".
Se muestra el mensaje "No hay ninguna
Resultado Obtenido
estimación con esas características".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.41: Prueba 2 de la Historia de Usuario 23
101
Identificador 39
Historia asociada 24
Nombre Modificar estimación.
Comprobar que las estimaciones se
Objetivo
modifican correctamente.
Se recarga la página y aparecen los
Resultado Esperado
datos nuevos.
Se recarga la página y aparecen los
Resultado Obtenido
datos nuevos.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.42: Prueba 1 de la Historia de Usuario 24
Identificador 40
Historia asociada 24
Nombre Modificación incorrecta estimación.
Comprobar que no se modifica la
Objetivo
estimación si hay algún campo vacío.
Se muestra el mensaje “Complete este
Resultado Esperado campo“ en el campo que se encuentra
vacío.
Se muestra el mensaje “Complete este
Resultado Obtenido campo“ en el campo que se encuentra
vacío.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.43: Prueba 2 de la Historia de Usuario 24
Identificador 41
Historia asociada 25
Nombre Eliminar estimación
Comprobar que se elimina la estimación
Objetivo
seleccionada.
Se muestra el mensaje "Se ha eliminado
Resultado Esperado correctamente se recarga la página
2
102
Identificador 42
Historia asociada 25
Nombre Eliminación incorrecta de una estimación.
Comprobar que no se ha podido eliminar
Objetivo
una estimación.
Se muestra el mensaje "No se ha podido
Resultado Esperado
eliminar la estimación".
Se muestra el mensaje "No se ha podido
Resultado Obtenido
eliminar la estimación".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.45: Prueba 2 de la Historia de Usuario 25
Identificador 43
Historia asociada 27
Nombre Imputar estimación
Comprobar que los datos imputados se
Objetivo
insertan correctamente.
Se muestra el mensaje "Se han guardado
Resultado Esperado
correctamente".
Se muestra el mensaje "Se han guardado
Resultado Obtenido
correctamente".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.46: Prueba 1 de la Historia de Usuario 27
Identificador 44
Historia asociada 29
Nombre Registrar usuario
Comprobar que los usuarios se registran
Objetivo
correctamente.
Accede a la página principal de la
Resultado Esperado
aplicación.
Accede a la página principal de la
Resultado Obtenido
aplicación.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.47: Prueba 1 de la Historia de Usuario 29
103
Identificador 45
Historia asociada 29
Nombre Registrar incorrecto de un usuario.
Comprobar que un usuario no se puede
Objetivo registrar en la aplicación al utilizar un
correo ya registrado.
Se muestra el mensaje “El correo
Resultado Esperado seleccionado ya está en uso. Por favor
introduzca otro".
Se muestra el mensaje “El correo
Resultado Obtenido seleccionado ya está en uso. Por favor
introduzca otro".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.48: Prueba 2 de la Historia de Usuario 29
Identificador 46
Historia asociada 30
Nombre Acceso correcto a la aplicación.
Comprobar que un usuario puede
Objetivo acceder a la aplicación con un email
y una contraseña correcta.
Se accede a la página principal de la
Resultado Esperado
aplicación.
Se accede a la página principal de la
Resultado Obtenido
aplicación.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.49: Prueba 1 de la Historia de Usuario 30
Identificador 47
Historia asociada 30
Nombre Acceso incorrecto a la aplicación.
Comprobar que un usuario no puede
Objetivo acceder a la aplicación con un email
o una contraseña incorrecta.
Se muestra el mensaje “Email o
Resultado Esperado
contraseña incorrecta".
Se muestra el mensaje “Email o
Resultado Obtenido
contraseña incorrecta".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.50: Prueba 2 de la Historia de Usuario 30
104
Identificador 48
Historia asociada 31
Nombre Cerrar sesión de la aplicación.
Comprobar que se cierra la sesión
Objetivo
en la aplicación.
La aplicación vuelve a la página
Resultado Esperado
de acceso.
La aplicación vuelve a la página
Resultado Obtenido
de acceso.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.51: Prueba 1 de la Historia de Usuario 31
Identificador 49
Historia asociada 32
Nombre Modificación de datos de usuario.
Comprobar que un usuario registrado puede
Objetivo
modificar la información de su cuenta.
Resultado Esperado La aplicación muestra los nuevos datos.
Resultado Obtenido La aplicación muestra los nuevos datos.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.52: Prueba 1 de la Historia de Usuario 32
Identificador 50
Historia asociada 32
Modificación incorrecta de datos
Nombre
de usuario.
Comprobar que un usuario registrado no puede
Objetivo
modificar el correo por uno que ya existe.
Se muestra el mensaje “El correo seleccionado
Resultado Esperado
ya está en uso. Por favor introduzca otro".
Se muestra el mensaje “El correo seleccionado
Resultado Obtenido
ya está en uso. Por favor introduzca otro".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.53: Prueba 2 de la Historia de Usuario 32
105
5.7.4 Reunión semanal
Se han realizado reuniones con Moisés Rodríguez (Scrum Master) en las que se planteaban
problemas y dudas que surgían durante el sprint, además de realizar un seguimiento de cómo
se encontraba el proyecto en ese momento
106
5.8 Sprint 6
En este sprint se abordarán las historias necesarias para llevar la otra parte de la gestión
de las estimaciones.
5.8.3.3. Implementación
Por cuestiones de confidencialidad relacionadas con la empresa en el marco de la cual se
ha desarrollado este TFG, no se mostrará el código desarrollado para este sprint. Por ello se
mostrará una imagen del resultado final de cada historia de usuario.
107
Historia de Usuario 26
Para implementarla se ha realizado una clase auxiliar sin persistencia con las funciones
necesarias para exportar cada modelo de estimación. En las figuras 5.62, 5.63, 5.64 y
5.65 se muestran las figuras de una estimación exportada.
108
Figura 5.64: ILF exportados
109
Historia de Usuario 28
Para implementarla se ha realizado el método comparar en las clases de los diferentes
modelos de estimación. En la figura 5.66 se compara el esfuerzo y coste real con el
coste y esfuerzo estimado en un gráfico de barras.
5.8.3.4. Pruebas
En este apartado se van a realizar pruebas funcionales a la herramienta, utilizando una
plantilla tomada como referencia del estándar ISO/IEE 29119-3: Software and Systems en-
gineering - Software testing [29].
Identificador 51
Historia asociada 26
Nombre Exportar datos de la estimación.
Comprobar que los datos se exportan
Objetivo
correctamente.
Se muestra el mensaje “Archivo exportado
Resultado Esperado
correctamente + (ruta)".
Se muestra el mensaje “Archivo exportado
Resultado Obtenido
correctamente + (ruta)".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.54: Prueba 1 de la Historia de Usuario 26
110
Identificador 52
Historia asociada 28
Nombre Comparar estimaciones.
Comprobar que las estimaciones se
Objetivo
comparan correctamente.
Se muestra el gráfico de barras con las
Resultado Esperado
estimaciones.
Se muestra el gráfico de barras con las
Resultado Obtenido
estimaciones.
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.55: Prueba 1 de la Historia de Usuario 28
Identificador 53
Historia asociada 28
Nombre Comparación incorrecta estimaciones.
Comprobar que no se pueden elegir más
Objetivo
de 4 estimaciones.
Se muestra el mensaje "No se puede
Resultado Esperado
elegir más de 4 estimaciones".
Se muestra el mensaje "No se puede
Resultado Obtenido
elegir más de 4 estimaciones".
Resultado de la ejecución
Éxito
de la prueba
Cuadro 5.56: Prueba 2 de la Historia de Usuario 28
111
Capítulo 6
Conclusiones
E n este último capítulo se determina si se han conseguido los objetivos parciales detalla-
dos en el segundo capítulo de este documento, incluyendo el objetivo principal.
Para concluir, se presentan algunas propuestas de trabajo futuro relacionadas con la temá-
tica sobre la que versa este trabajo, se incluye al final una pequeña opinión personal de la
autora.
Objetivo ¿Conseguida?
Realizar una herramienta multimodelo para la estimación de proyectos
software.
113
Objetivo Justificación ¿Conseguido?
Implementar los diferentes Se justifica haber superado este objetivo par-
algoritmos que son utiliza- cial en los sprints 1, 2, 3 y 4, debido a que es
dos posteriormente por ca- la base para realizar el resto de la aplicación.
da uno de los modelos de
estimación.
Crear formularios para re- Se justifica haber superado este objetivo par-
coger los datos necesarios cial en el sprint 1, 2, 3 y 4, debido a que es
en cada modelo de estima- necesario para poder realizar el resto de obje-
ción. tivos parciales.
114
6.2 Trabajo futuro
Tras finalizar este trabajo surgen nuevas cuestiones para un trabajo futuro entre las que
destacan:
115
Referencias
[1] http://fattocs.com/es/faq-fpa/10-faqes/32-18-que-es-backfiring.html.
[2] http://getbootstrap.com/.
[3] https://spring.io/.
[4] https://maven.apache.org/.
[5] https://es.atlassian.com/software/bitbucket.
[6] https://www.visual-paradigm.com/.
[7] https://www.gimp.org/release-notes/gimp-2.7.html.
[8] https://www.video2brain.com/es/balsamiq-mockups.
[9] http://tomcat.apache.org/.
[10] https://www.mysql.com/products/workbench/.
com/2013/06/03/cronologia-interactiva-de-la-historia-de-los-puntos-funcion/.
[14] Informe del caos 2015 (chaos report 2015) o cómo de bien o mal fue-
ron los proyectos en el año 2015. http://www.laboratorioti.com/2016/05/16/
informe-del-caos-2015-chaos-report-2015-bien-mal-fueron-los-proyectos-ano-2015/
la-tecnica-del-planning-poker.html.
117
[18] Latex. https://www.latex-project.org/about/.
metodo-de-estimacion-puntos-casos-de-uso-use-case-points/.
que-es-scrum-y-los-roles-en-scrum/.
2011/11/kanban.html.
faq/whatis java.xml.
[30] A BRAN , A. Software Project Estimation. The fundamentals for Providing High Quality
Information to Decision Makers. John Wiley and Sons, Ltd., 2015.
[31] A DRIANA G ÓMEZ , M ARIA DEL C.L ÓPEZ , S. M., AND OTAZÚ , A. Cocomo- un
modelo de estimaciÓn de proyectos de software.
[32] B OEHM , B., AND ROYCE , W. Ada COCOMO and the Ada Process Model. Ra-Ma,
1989.
[33] G ARZÁS , J., AND NAVARRO , N. Guía de supervivencia ágil: estimación con puntos
historia.
[35] JACOBSON , I., G. B., AND RUMBAUGH , J. El proceso unificado de desarrollo soft-
ware. 2000.
118
[36] J ONES , C. A Guide to Selecting Software Measures and Metrics. CRC Press, 2017.
[38] M ARIO G. P IATTINI V ELTHUIS , F ÉLIX Ó SCAR G ARCÍA RUBIO , J. G. P., AND B OC -
CO , M. F. G. Medición y estimación del software: Técnicas y métodos para mejorar
la calidad y la productividad. Ra-Ma, 2008.
[39] S CHWABER , K., AND S UTHERLAND , J. La Guía Definitiva de Scrum: Las Reglas del
Juego. 2016.
119
ANEXOS
121
Anexo A
Historias de Usuario
123
Historia de Usuario
Número: 1
Nombre: Configuración Inicial
Valor de Negocio: 50 Esfuerzo: 2 semanas
Descripción: Se instalarán las herramientas necesarias, se creará la base de
datos, se creará el proyecto, se introducirán las dependencias necesarias, se
instalarán maven y spring.
Historias relacionadas:
Tabla 1: Historia de Usuario 1
Historia de Usuario
Número: 2
Nombre: Insertar datos generales Puntos Función
Valor de Negocio: 60 Esfuerzo: 2 días
Descripción: Se insertan los datos generales (empresa, proyecto, fecha, ciclo
de vida, tecnología, etc.) de la estimación.
Historias relacionadas:
Tabla 2: Historia de Usuario 2
Historia de Usuario
Número: 3
Nombre: Insertar funcionalidades Puntos Función
Valor de Negocio: 80 Esfuerzo: 4 días
Descripción: Se insertan las funcionalidades que tendrá la estimación.
Historias relacionadas:
Tabla 3: Historia de Usuario 3
Historia de Usuario
Número: 4
Nombre: Insertar ILF
Valor de Negocio: 80 Esfuerzo: 1 día
Descripción: Se insertan los ficheros lógicos internos de una funcionalidad.
Historias relacionadas: 3
Tabla 4: Historia de Usuario 4
Historia de Usuario
Número: 5
Nombre: Insertar ELF
Valor de Negocio: 80 Esfuerzo: 1 día
Descripción: Se insertan los ficheros lógicos externos de una funcionalidad.
Historias relacionadas: 3
Tabla 5: Historia de Usuario 5
Historia de Usuario
Número: 6
Nombre: Insertar EI
Valor de Negocio: 80 Esfuerzo: 1 día
Descripción: Se insertan las entradas de una funcionalidad.
Historias relacionadas: 3
Tabla 6: Historia de Usuario 6
Historia de Usuario
Número: 7
Nombre: Insertar EO
Valor de Negocio: 80 Esfuerzo: 1 día
Descripción: Se insertan las salidas de una funcionalidad.
Historias relacionadas: 3
Tabla 7: Historia de Usuario 7
Historia de Usuario
Número: 8
Nombre: Insertar EQ
Valor de Negocio: 80 Esfuerzo: 1 día
Descripción: Se insertan las consultas de una funcionalidad.
Historias relacionadas: 3
Tabla 8: Historia de Usuario 8
Historia de Usuario
Número: 9
Nombre: Visualizar Resultados Puntos función
Valor de Negocio: 90 Esfuerzo: 3 días
Descripción: Permite al usuario visualizar los puntos función sin ajustar, los
ajustados, el esfuerzo el coste y las distribuciones de una estimación.
Historias relacionadas: 2, 3, 4, 5, 6, 7 y 8
Tabla 9: Historia de Usuario 9
Historia de Usuario
Número: 10
Nombre: Insertar datos generales COCOMO II
Valor de Negocio: 60 Esfuerzo: 1 día
Descripción: Se insertan los datos generales (empresa, proyecto, fecha, ciclo
de vida, tecnología, etc.) de la estimación.
Historias relacionadas:
Tabla 10: Historia de Usuario 10
Historia de Usuario
Número: 11
Nombre: Insertar módulos COCOMO II
Valor de Negocio: 85 Esfuerzo: 10 días
Descripción: Se insertan los módulos que tendrá la estimación. En cada
módulo insertaremos el tamaño, el coste y el factor de ajuste.
Historias relacionadas:
Tabla 11: Historia de Usuario 11
Historia de Usuario
Número: 12
Nombre: Visualizar resultados COCOMO II
Valor de Negocio: 90 Esfuerzo: 3 días
Descripción: Permite al usuario visualizar el esfuerzo, la duración, el coste, el
personal necesario y el coste por instrucción estimado para un proyecto.
Historias relacionadas: 11
Tabla 12: Historia de Usuario 12
Historia de Usuario
Número: 13
Nombre: Insertar datos generales Puntos Casos Uso
Valor de Negocio: 60 Esfuerzo: 1 día
Descripción: Se insertan los datos generales (empresa, proyecto, fecha, ciclo
de vida, tecnología, etc.) de la estimación.
Historias relacionadas:
Tabla 13: Historia de Usuario 13
Historia de Usuario
Número: 14
Nombre: Insertar actores y casos de uso
Valor de Negocio: 80 Esfuerzo: 3 días
Descripción: Se inserta el factor de peso de los actores y el factor de peso de
los casos de uso.
Historias relacionadas:
Tabla 14: Historia de Usuario 14
Historia de Usuario
Número: 15
Nombre: Visualizar Resultados Puntos Casos de Uso
Valor de Negocio: 90 Esfuerzo: 4 días
Descripción: Permite al usuario visualizar los punto casos de uso sin ajustar,
los ajustados, el esfuerzo, el coste y las distribuciones.
Historias relacionadas: 14
Tabla 15: Historia de Usuario 15
Historia de Usuario
Número: 16
Nombre: Insertar datos generales Backfiring
Valor de Negocio: 60 Esfuerzo: 1 día
Descripción: Se insertan los datos generales (empresa, proyecto, fecha, ciclo
de vida, tecnología, etc.) de la estimación.
Historias relacionadas:
Tabla 16: Historia de Usuario 16
Historia de Usuario
Número: 17
Nombre: Transformar líneas de código
Valor de Negocio: 80 Esfuerzo: 2 días
Descripción: Se insertan las líneas de código de cada lenguaje utilizado y los
transforma en puntos función ajustados.
Historias relacionadas:
Tabla 17: Historia de Usuario 17
Historia de Usuario
Número: 18
Nombre: Visualizar Resultados Backfiring
Valor de Negocio: 90 Esfuerzo: 3 días
Descripción: Permite al usuario visualizar los puntos función ajustados, el
esfuerzo, el coste y las distribuciones del proyecto.
Historias relacionadas: 17
Tabla 18: Historia de Usuario 18
Historia de Usuario
Número: 19
Nombre: Insertar datos generales Historias de Usuario
Valor de Negocio: 60 Esfuerzo: 1 día
Descripción: Se insertan los datos generales (empresa, proyecto, fecha, ciclo
de vida, tecnología, etc.) de la estimación.
Historias relacionadas:
Tabla 19: Historia de Usuario 19
Historia de Usuario
Número: 20
Nombre: Insertar Historia de Usuario
Valor de Negocio: 80 Esfuerzo: 4 días
Descripción: Se inserta el título, descripción, valor, tareas relacionadas y
criterios de aceptación de la historia de usuario
Historias relacionadas:
Tabla 20: Historia de Usuario 20
Historia de Usuario
Número: 21
Nombre: Estimar Historia de Usuario
Valor de Negocio: 90 Esfuerzo: 6 días
Descripción: Se estima la historia mediante la técnica de Planning Poker.
Historias relacionadas: 20
Tabla 21: Historia de Usuario 21
Historia de Usuario
Número: 22
Nombre: Visualizar resultados Historias de Usuario
Valor de Negocio: 90 Esfuerzo: 3 días
Descripción: Permite al usuario visualizar el esfuerzo y el coste.
Historias relacionadas: 20 y 21
Tabla 22: Historia de Usuario 22
Historia de Usuario
Número: 23
Nombre: Filtrar estimaciones
Valor de Negocio: 80 Esfuerzo: 4 días
Descripción: Muestra las estimaciones en función de los filtros especificados.
Historias relacionadas: 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21 y 22
Tabla 23: Historia de Usuario 23
Historia de Usuario
Número: 24
Nombre: Visualizar estimaciones
Valor de Negocio: 80 Esfuerzo: 4 días
Descripción: Permite visualizar las estimaciones.
Historias relacionadas: 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21 y 22
Tabla 24: Historia de Usuario 24
Historia de Usuario
Número: 25
Nombre: Eliminar estimaciones
Valor de Negocio: 80 Esfuerzo: 0,5 días
Descripción: Permite eliminar estimaciones.
Historias relacionadas: 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21 y 22
Tabla 25: Historia de Usuario 25
Historia de Usuario
Número: 26
Nombre: Exporta estimaciones
Valor de Negocio: 85 Esfuerzo: 8 días
Descripción: Permite exportar los resultados de las estimaciones en formato
Excel.
Historias relacionadas: 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21 y 22
Tabla 26: Historia de Usuario 26
Historia de Usuario
Número: 27
Nombre: Imputación real de las estimaciones
Valor de Negocio: 85 Esfuerzo: 2 días
Descripción: Permite introducir el esfuerzo y el coste real del proyecto.
Historias relacionadas: 2, 10, 13, 16 y 19.
Tabla 27: Historia de Usuario 27
Historia de Usuario
Número: 28
Nombre: Comparar estimaciones
Valor de Negocio: 85 Esfuerzo: 6 días
Descripción: Permite realizar comparaciones entre estimaciones, mostrando
además un gráfico de comparación.
Historias relacionadas: 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21 y 22
Tabla 28: Historia de Usuario 28
Historia de Usuario
Número: 29
Nombre: Registrarse
Valor de Negocio: 60 Esfuerzo: 1 día
Descripción: Permite el registro de los usuarios.
Historias relacionadas:
Tabla 29: Historia de Usuario 29
Historia de Usuario
Número: 30
Nombre: Acceso a la herramienta
Valor de Negocio: 60 Esfuerzo: 1 día
Descripción: Permite el acceso de los usuarios a la herramienta.
Historias relacionadas: 29
Tabla 30: Historia de Usuario 30
Historia de Usuario
Número: 31
Nombre: Cerrar Sesión
Valor de Negocio: 60 Esfuerzo: 0,5 días
Descripción: Permite salir de la aplicación.
Historias relacionadas:
Tabla 31: Historia de Usuario 31
Historia de Usuario
Número: 32
Nombre: Modificar Perfil
Valor de Negocio: 70 Esfuerzo: 1 día
Descripción: Permite modificar los datos del usuario.
Historias relacionadas: 29
Tabla 32: Historia de Usuario 32
Anexo B
Manual de Usuario
133
B.2 Acceso a la aplicación
El usuario podrá iniciar sesión en la aplicación a través de la inserción de sus credenciales
(figura B.2).
134
B.4 Crear estimación Puntos función
Cuando seleccionamos en el menú la opcion de Puntos función nos aparecerá la pestaña
para introducir los datos generales de la estimación (figura B.4), que en este caso se corres-
ponden con la empresa, el proyecto, la fecha, el ciclo de vida utilizado, las características
del sistema en el que se va a desarrollar el proyecto, la tecnología utilizada la descripción, el
coste medio por hora de cada desarrollador y si la estimación está imputada.
Una vez que hemos introducido los datos generales de la estimación pasamos a la pestaña
Funcionalidades (figura B.5) en la que tendremos que introducir el nombre y la descripción
y al insertarla aparecerá abajo el nombre de la funcionalidad, los botones con los que podre-
mos acceder a insertar los archivos, interfaces, entradas, salidas y consultas, y por último el
número total de puntos función sin ajustar para esa funcionalidad.
135
Cuando pulsamos un botón de los anteriores nos aparecerá ventana en la que tendremos
que insertar la descripición y, en fución de la opción elegida, los det y ret (figura B.6) o los
det y ftr (figura B.7) correspondientes, obteniendo de manera automática la complejidad y
número de puntos función sin ajustar.
Por último una vez introducidas las funcionalidades en la pestaña Resultados aparecerá
calculado los puntos función sin ajustar totales, para obtener el resto de campos tenemos que
introducir los 14 factores de influencia (figura B.8). Una vez elegidos los factores obtendre-
mos el resto de resultados como podemos obervar en las figuras B.9 y B.10.
136
Figura B.8: Ventana Factores influencia
137
Figura B.10: Pestaña resultados distribuciones Puntos función
Una vez que hemos introducido los datos generales de la estimación pasamos a la pestaña
Módulos, en esta pestaña podemos elegir el modelo de desarrollo, los factores de escala y
la planificación para el proyecto. Los modelos de desarrollo que se pueden elegir son Early
Design y Post Architecture. En la figura B.12 podemos observar los 5 factores de escala a los
que se les puede asignar un valor de muy bajo, bajo, normal, alto, muy alto y extra.
138
Figura B.12: Ventana Factores de escala COCOMO II
Después de elegir los valores anteriores se introduce un nombre y una descripción para el
módulo y aparece en la tabla el módulo creado. Una vez ha aparecido el módulo pinchando en
el campo tamaño podremos introducir las líneas de código del módulo o los puntos función
del módulo, los cuales se transformarán en líneas de código. En el campo ratio podremos
introducir el coste de una persona al mes y en el apartado factor del ajuste del esfuerzo
(EAF) se eligen los valores para ajustar el esfuerzo del proyecto.
Cuando se han determinado estos valores se calcúlan el resto de valores como se puede
ver en la figura B.14.
139
Figura B.14: Pestaña Módulos COCOMO II
Por último cuando se han introducido todos los módulos en la pestaña resultados (figura
B.15) se podrán observar los resultados obtenidos, así como el total de las líneas de código
y las horas persona mes.
140
B.6 Crear estimación Puntos Casos de Uso
Cuando seleccionamos en el menú la opción Puntos Casos de Uso nos aparecerá la pestaña
para introducir los datos generales de la estimación (figura B.16), que en este caso se corres-
ponden con la empresa, el proyecto, la fecha, el ciclo de vida, el factor de productividad, el
número de desarrolladores, la tecnología el precio por hora del desarrollador, la descripción
y si la estimación está imputada.
Una vez que se han introducido los datos generales de la estimación pasamos a la pestaña
Calculos (Figura B.17), en esta pestaña se introduce el número de actores y casos de uso de
cada de cada tipo obteniendo el número de actores sin ajustar y el número de casos de uso
sin ajustar.
141
Por último una vez introducidos los actores y casos de uso pasando a la pestaña Resul-
tados aparecerá calculado los puntos casos de uso sin ajustar totales, para obtener el resto
de campos tenemos que introducir los factores técnicos (figura B.18) y los factores de en-
torno (figura B.19). Una vez elegidos los factores obtendremos el resto de resultados como
podemos observar en la figura B.20.
142
Figura B.20: Pestaña Resultados Puntos Casos de Uso
143
Una vez se han introducido los datos generales de la estimación pasamos a la pestaña
Líneas de Código (figura B.22), en esta pestaña se introducen las líneas de código que hay
de cada lenguaje utilizado para desarrollar el proyecto y se transoforman en puntos función
ajustados. Al final se obteniene el total de puntos función ajustados.
Por último cuando pasamos a la pestaña Restultado obtenemos los resultados finales como
podemos observar en las figuras B.23 y B.24.
144
Figura B.24: Pestaña Resultados distribuciones Backfiring
Una vez se han introducido los datos generales de la estimación pasamos a la pestaña His-
torias de Usuario (figura B.26), en esta pestaña podremos introducir las Historias de Usuario.
Lo primero que hay que hacer es introducir un título y una descripción para la historia, cuan-
do hemos introducido estos dos campos y le damos a insertar aparece la Historia de usuario,
en la que podremos insertar el valor que aporta la historia a la empresa, las depencias de esta
historia con otras historias y los criterios de validación.
145
Figura B.26: Pestaña Historias Usuario
Por último, cuando hemos estimado todas las historias se pasará a la pestaña Resultados
(figura B.28) y obtendremos los resultados finales de la estimación.
146
Figura B.28: Pestaña Resultados Historias Usuario
147
B.10 Modificar estimación
Cuando hemos elegido las historias de usuario sobre las que queremos trabajar podemos
observar las acciones que se pueden realizar con ellas. En el botón modificar podremos
modificar y visualizar los datos de la estimación elegida. Los datos que se deseen modificar
serán guardadados de la misma manera que se hizo en la inserción. En las figuras B.30, B.31
y B.32 se puede observar que se han modificado los valores de los 14 factores de influencia y
los resultados se actualizan automáticamente. Cabe destacar que se va a utilizar la estimación
realizada para explicar la creación de estimaciones de puntos función.
148
Figura B.32: Pestaña Resultados distribuciones modificados
149
Figura B.34: Ventana confirmar eliminar
150
Figura B.36: Comparar resultados de las estimaciones
151
Figura B.38: Opción Modificar perfil
152
Anexo C
153
Este documento fue editado y tipografiado con LATEX empleando
la clase esi-tfg (versión 0.20180702) que se puede encontrar en:
https://bitbucket.org/arco group/esi-tfg
157